@woosh/meep-engine 3.60.6 → 3.60.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/binary/BitSet.d.ts.map +1 -1
- package/src/core/binary/BitSet.js +2 -1
- package/src/{format/image/avif/av1/util → core/binary/operations}/ceil_log2.d.ts +2 -2
- package/src/core/binary/operations/ceil_log2.d.ts.map +1 -0
- package/src/{format/image/avif/av1/util → core/binary/operations}/ceil_log2.js +18 -18
- package/src/core/binary/zstd/ZstdReverseBitReader.d.ts.map +1 -1
- package/src/core/binary/zstd/ZstdReverseBitReader.js +225 -223
- package/src/core/binary/zstd/zstd_fse.d.ts.map +1 -1
- package/src/core/binary/zstd/zstd_fse.js +267 -265
- package/src/core/binary/zstd/zstd_huffman.d.ts.map +1 -1
- package/src/core/binary/zstd/zstd_huffman.js +246 -244
- package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts.map +1 -1
- package/src/core/bvh2/binary/2/BinaryUint32BVH.js +8 -2
- package/src/core/bvh2/bvh3/ebvh_optimize_treelet.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_optimize_treelet.js +8 -7
- package/src/core/collection/PairUint32Map.d.ts.map +1 -1
- package/src/core/collection/PairUint32Map.js +2 -2
- package/src/core/collection/Uint32Map.d.ts.map +1 -1
- package/src/core/collection/Uint32Map.js +2 -4
- package/src/core/collection/heap/FibonacciHeap.d.ts.map +1 -1
- package/src/core/collection/heap/FibonacciHeap.js +2 -1
- package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
- package/src/core/geom/2d/r-tree/StaticR2Tree.js +8 -2
- package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.d.ts.map +1 -1
- package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.js +2 -3
- package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/TextureAtlas.js +13 -14
- package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/sprite_atlas_border.js +70 -69
- package/src/engine/graphics/texture/reflection/convolve_equirectangular_reflection.d.ts.map +1 -1
- package/src/engine/graphics/texture/reflection/convolve_equirectangular_reflection.js +2 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +2 -1
- package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/decal/GPUDecalRenderer.js +2 -1
- package/src/engine/graphics3/decal/chunk_decal_record.d.ts +14 -0
- package/src/engine/graphics3/decal/chunk_decal_record.d.ts.map +1 -0
- package/src/engine/graphics3/decal/chunk_decal_record.js +44 -0
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.js +2 -15
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.js +3 -16
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_composite.js +3 -23
- package/src/engine/graphics3/terrain/TERRAIN_MATERIAL_TEMPLATE.d.ts.map +1 -1
- package/src/engine/graphics3/terrain/TERRAIN_MATERIAL_TEMPLATE.js +2 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/queries/shape_cast.js +2 -2
- package/src/format/image/avif/av1/decode/decode_palette.js +442 -442
- package/src/format/image/avif/av1/entropy/SymbolWriter.d.ts.map +1 -1
- package/src/format/image/avif/av1/entropy/SymbolWriter.js +2 -1
- package/src/generation/foliage/material/foliage_tile.d.ts.map +1 -1
- package/src/generation/foliage/material/foliage_tile.js +2 -1
- package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
- package/src/generation/markers/GridActionRuleSet.js +12 -3
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +6 -13
- package/src/shade/playground/caldera/main.js +3 -2
- package/src/shade/playground/probe_clipmap/README.md +2 -1
- package/src/shade/playground/probe_clipmap/index.html +7 -2
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap/main.js +17 -7
- package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts.map +1 -1
- package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.js +7 -13
- package/src/shade/playground/vgeo_scene/main.js +2 -1
- package/src/shade/playground/vsm/VSMDebugOverlay.d.ts.map +1 -1
- package/src/shade/playground/vsm/VSMDebugOverlay.js +3 -1
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
- package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.d.ts.map +1 -1
- package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.js +5 -4
- package/src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.d.ts.map +1 -1
- package/src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.js +168 -166
- package/src/shade/renderer/fluid/pressure/shader_fluid_mg_smooth.d.ts.map +1 -1
- package/src/shade/renderer/fluid/pressure/shader_fluid_mg_smooth.js +221 -219
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/fow/shader_fog_of_war.d.ts.map +1 -1
- package/src/shade/renderer/fow/shader_fog_of_war.js +8 -19
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +6 -6
- package/src/shade/renderer/geometry/sdf/MeshSDFLayout.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/MeshSDFLayout.js +2 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +2 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +2 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_decode_from_storage.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_decode_from_storage.js +10 -31
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_encode_to_storage.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_encode_to_storage.js +9 -15
- package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.d.ts +2 -1
- package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.js +6 -5
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.js +2 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +15 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +168 -18
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +98 -57
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +168 -77
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +4 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +27 -12
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.js +12 -7
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.js +8 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +5 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.js +5 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_free.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_free.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_movers_command.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_movers_command.js +4 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_scroll.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_scroll.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.js +3 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.js +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +114 -41
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +424 -207
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +34 -25
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +41 -31
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.d.ts +7 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.js +7 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapHitWants.d.ts +47 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapHitWants.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapHitWants.js +84 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.d.ts +48 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.js +101 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +58 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +127 -30
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.d.ts +18 -7
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.js +39 -13
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +29 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +112 -56
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resample.d.ts +19 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resample.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resample.js +35 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js +9 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +3 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +5 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +8 -12
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +23 -56
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.d.ts +0 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.js +11 -15
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +26 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +173 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts +32 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.js +166 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.d.ts +3 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.js +3 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_guide.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_guide.js +3 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +6 -12
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +15 -65
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_order.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_order.js +7 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts +4 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.js +24 -17
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_publish.d.ts +7 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_publish.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_publish.js +18 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_ray_layout.d.ts +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_ray_layout.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_ray_layout.js +9 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.d.ts +3 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.js +9 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.js +16 -16
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample_rays.d.ts +36 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample_rays.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample_rays.js +233 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_schedule.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_schedule.js +7 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +5 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +10 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace_command.d.ts +2 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace_command.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace_command.js +12 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts +1 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +5 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +14 -18
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +25 -35
- package/src/shade/renderer/gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.d.ts +13 -0
- package/src/shade/renderer/gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.js +12 -0
- package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts +27 -2
- package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js +62 -6
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.js +10 -19
- package/src/shade/renderer/gpu_primitive/indirect/chunk_folded_dispatch.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/indirect/chunk_folded_dispatch.js +6 -3
- package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts.map +1 -1
- package/src/shade/renderer/hiz/hzb_pick_alignment.js +149 -148
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.js +4 -2
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.js +6 -5
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.js +3 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.js +3 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.js +3 -1
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts +0 -5
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts.map +1 -1
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.js +0 -7
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +15 -2
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -1
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +51 -16
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +3 -2
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/chunk_dof_lds_coc_cache.d.ts +17 -0
- package/src/shade/renderer/postprocess/dof/raymarch/chunk_dof_lds_coc_cache.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/dof/raymarch/chunk_dof_lds_coc_cache.js +81 -0
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +5 -48
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +4 -44
- package/src/shade/renderer/postprocess/gtao/chunk_integrate_lighting_sample.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/chunk_integrate_lighting_sample.js +4 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +8 -7
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/nss/chunk_nss_luma_derivative.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/chunk_nss_luma_derivative.js +5 -7
- package/src/shade/renderer/postprocess/nss/chunk_nss_tonemap.d.ts +17 -0
- package/src/shade/renderer/postprocess/nss/chunk_nss_tonemap.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/nss/chunk_nss_tonemap.js +56 -0
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.js +2 -22
- package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.js +2 -13
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +10 -13
- package/src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.js +39 -38
- package/src/shade/renderer/rasterize/expand/mesh/shader_prefix_sum_to_command.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/shader_prefix_sum_to_command.js +7 -12
- package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.d.ts +8 -6
- package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.js +10 -7
- package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.d.ts +16 -0
- package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.js +35 -0
- package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.d.ts +5 -2
- package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.js +27 -18
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh2_color_get_irradiance_at.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh2_color_get_irradiance_at.js +5 -15
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_convolve_with_cosine_kernel.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_convolve_with_cosine_kernel.js +5 -19
- package/src/shade/renderer/shader/chunk/spherical_harmonics/dering/chunk_sh3_windowing.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/spherical_harmonics/dering/chunk_sh3_windowing.js +3 -22
- package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.js +2 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_shadow_group_list.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_shadow_group_list.js +154 -152
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +2 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts +3 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js +4 -3
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts +7 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js +54 -47
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +371 -370
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +2 -1
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/lod/shader_water_lod.js +12 -14
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +2 -9
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +2 -1
- package/src/shade/renderer/wind/WIND_FIELD.d.ts +3 -1
- package/src/shade/renderer/wind/WIND_FIELD.d.ts.map +1 -1
- package/src/shade/renderer/wind/WIND_FIELD.js +4 -3
- package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts +8 -2
- package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/wind/WIND_FIELD_STRUCT.js +11 -4
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts +2 -2
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts.map +1 -1
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.js +13 -4
- package/src/shade/util/texture_mip_extent.d.ts.map +1 -1
- package/src/shade/util/texture_mip_extent.js +88 -87
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +9 -7
- package/src/format/image/avif/av1/util/ceil_log2.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/chunk_hash_squirrel3.d.ts +0 -1
- package/src/shade/renderer/shader/chunk/color/chunk_hash_squirrel3.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/chunk_hash_squirrel3.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
function t(t,e){const a=t.length;if(a!==e.length)return!1;for(let i=0;i<a;i++)if(t[i]!==e[i])return!1;return!0}function e(t){if("object"!=typeof t)return!1;if(null===t)return!1;const e=t.constructor;return e===Uint8Array||e===Uint8ClampedArray||e===Uint16Array||e===Uint32Array||e===Int8Array||e===Int16Array||e===Int32Array||e===Float16Array||e===Float32Array||e===Float64Array||e===BigUint64Array||e===BigInt64Array}function a(t){let e=t-1;return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e}function i(t,e,a,i,n){if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(a)&&t.buffer===a.buffer&&void 0!==t.BYTES_PER_ELEMENT&&void 0!==a.BYTES_PER_ELEMENT){const s=t.byteOffset+e*t.BYTES_PER_ELEMENT,r=a.byteOffset+i*a.BYTES_PER_ELEMENT;if(s<r+n*a.BYTES_PER_ELEMENT&&r<s+n*t.BYTES_PER_ELEMENT)return void a.set(t.subarray(e,e+n),i)}if(t===a&&i>e&&i<e+n){for(let s=n-1;s>=0;s--)a[i+s]=t[e+s];return}let s,r,o;for(o=0;o<n;o++)s=e+o,r=i+o,a[r]=t[s]}function n(t,e,a,i,n){for(let s=0;s<n;s++){const n=e+s,r=i+s,o=a[r];a[r]=t[n],t[n]=o}}const s=new Uint32Array(781250);function r(t,e){return t<e?e:t}function o(t,e){return t<e?t:e}function c(t,e,a,i,n,s){const c=a[i+0],h=a[i+1],d=a[i+2],_=a[i+3],l=a[i+4],f=a[i+5],u=n[s+0],b=n[s+1],g=n[s+2],m=n[s+3],p=n[s+4],y=n[s+5],w=o(c,u),v=o(h,b),A=o(d,g),x=r(_,m),k=r(l,p),z=r(f,y);t[e+0]=w,t[e+1]=v,t[e+2]=A,t[e+3]=x,t[e+4]=k,t[e+5]=z}function h(t,e,a,i,n,s,r,o){t[e]=a,t[e+1]=i,t[e+2]=n,t[e+3]=s,t[e+4]=r,t[e+5]=o}function d(t,e,a,i,n,s){const r=i-t,o=s-a;return(n-e)*(r+o)+o*r}function _(t){return t<0?0:t>1?1:t}function l(t){let e=t;return e=50331903&(e|e<<16),e=50393103&(e|e<<8),e=51130563&(e|e<<4),e=153391689&(e|e<<2),e}function f(t,e,a,i){const n=i[0],s=i[1],r=i[2],o=i[3]-n,c=i[4]-s,h=i[5]-r;return function(t,e,a){const i=1023*_(t),n=1023*_(e),s=1023*_(a);return function(t,e,a){return l(t)|l(e)<<1|l(a)<<2}(Math.round(i),Math.round(n),Math.round(s))}((t-n)*(0!==o?1/o:0),(e-s)*(0!==c?1/c:0),(a-r)*(0!==h?1/h:0))}function u(t,e,a){const i=t[a],n=t[a+1],s=t[a+2];h(t,e,i,n,s,i,n,s)}function b(t,e,a){const i=t[e],n=t[e+1],s=t[e+2];return f(.5*(i+t[e+3]),.5*(n+t[e+4]),.5*(s+t[e+5]),a)}s.pointer=0;const g=s;class m{__data_buffer;__data_float32;__data_uint32;__node_count_binary=0;__node_count_leaf=0;constructor(){this.data=new ArrayBuffer(320)}estimateByteSize(){return this.data.byteLength+248}getTotalBoxCount(){return this.__node_count_binary+this.__node_count_leaf}get binary_node_count(){return this.__node_count_binary}get leaf_node_count(){return this.__node_count_leaf}getLeafBlockAddress(){return 6*this.__node_count_binary}get float32(){return this.__data_float32}get uint32(){return this.__data_uint32}set data(t){this.__data_buffer=t,this.__data_float32=new Float32Array(this.__data_buffer),this.__data_uint32=new Uint32Array(this.__data_buffer)}get data(){return this.__data_buffer}getNodeAddress(t){const e=this.__node_count_binary,a=t-e;return a<0?6*t:6*e+7*a}initialize_structure(){const t=4*(6*this.__node_count_binary+7*this.__node_count_leaf);this.__data_buffer.byteLength<t&&(this.data=new ArrayBuffer(t))}setLeafCount(t){this.__node_count_leaf=t;const e=a(t);this.__node_count_binary=t<=1?e:e-1}getLeafAddress(t){return 7*t+6*this.__node_count_binary}setLeafData(t,e,a,i,n,s,r,o){const c=this.getLeafAddress(t);h(this.__data_float32,c,a,i,n,s,r,o),this.__data_uint32[c+6]=e}readBounds(t,e,a){i(this.__data_float32,t,e,a,6)}readLeafPayload(t){const e=this.getLeafBlockAddress()+7*t+6;return this.__data_uint32[e]}compute_total_surface_area(){let t=0;const e=new Float32Array(6);for(let a=0;a<this.getTotalBoxCount();a++){let i;i=a<this.__node_count_binary?6*a:7*(a-this.__node_count_binary)+this.getLeafBlockAddress(),this.readBounds(i,e,0),t+=d(e[0],e[1],e[2],e[3],e[4],e[5])}return t}sort_morton(t){const e=6*this.__node_count_binary;if(this.__node_count_leaf<2)return;const a=g.pointer;let i,n,s=a;g[s++]=0,g[s++]=this.__node_count_leaf-1;const r=this.__data_float32;for(;s>a;){s-=2;const a=g[s+1],o=g[s];i=o,n=a;const c=b(r,7*(o+a>>1)+e,t);for(;i<=n;){for(;b(r,7*i+e,t)<c;)i++;for(;b(r,7*n+e,t)>c;)n--;i<=n&&(i!==n&&this.__swap_leaves(i,n),i++,n--)}o<n&&(g[s++]=o,g[s++]=n),i<a&&(g[s++]=i,g[s++]=a)}}__swap_leaves(t,e){const a=this.getLeafBlockAddress(),i=7*t+a,s=7*e+a;n(this.__data_float32,i,this.__data_float32,s,7)}build(){const t=this.__node_count_binary,e=6*t;let a,n,s,r,o=Math.floor(Math.log(t)/Math.log(2));s=Math.pow(2,o),n=6*(s-1);const h=this.__node_count_leaf,d=this.__data_float32;for(a=0;a<s;a++){const t=a<<1,s=t+1,r=e+7*t;s<h?c(d,n,d,r,d,e+7*s):t<h?i(d,r,d,n,6):u(this.__data_float32,n,n-6),n+=6}for(o--;o>=0;o--)for(s=1<<o,r=s-1,a=0;a<s;a++){const t=6*(1+(r<<1));c(d,6*r,d,t,d,t+6),r++}}}function p(t,e,a){const i=t|e|a;return 3&i?1&i?1:2:4}function y(t,e,a,i,n){let s,r;const o=p(e,i,n);4===o?(s=new Uint32Array(t,e,n>>>2),r=new Uint32Array(a,i,n>>>2)):2===o?(s=new Uint16Array(t,e,n>>>1),r=new Uint16Array(a,i,n>>>1)):(s=new Uint8Array(t,e,n),r=new Uint8Array(a,i,n)),r.set(s)}function w(t){return t+(4-t%4)%4}const v={BigEndian:!1,LittleEndian:!0},A=new Float32Array(1),x=new Int32Array(A.buffer);class k{endianness=v.LittleEndian;position=0;get length(){throw new Error("Deprecated, use 'capacity' instead")}set length(t){throw new Error("Deprecated, use 'capacity' instead")}capacity=1024;data=new ArrayBuffer(1024);dataView=new DataView(this.data);__data_uint8=new Uint8Array(this.data);__growFactor=1.1;get raw_bytes(){return this.__data_uint8}fromArrayBuffer(t){this.data=t,this.dataView=new DataView(t),this.__data_uint8=new Uint8Array(t),this.capacity=t.byteLength,this.position=0}trim(){return this.setCapacity(this.position),this}skip(t){this.position+=t}setCapacity(t){if(t<this.position)throw new Error(`Attempting to set capacity(=${t}) below current position(=${this.position})`);if(this.capacity===t)return;const e=this.__data_uint8,a=new Uint8Array(t),i=Math.min(e.buffer.byteLength,a.buffer.byteLength);i>0&&y(e.buffer,0,a.buffer,0,i),this.data=a.buffer,this.__data_uint8=a,this.dataView=new DataView(this.data),this.capacity=t}ensureCapacity(t){const e=this.capacity;if(e>=t)return;const a=w(Math.ceil(Math.max(t,e*this.__growFactor,e+1024)));this.setCapacity(a)}readFloat16(){return function(t){let e=0;const a=(31744&t)>>10,i=1023&t;let n=1;return t>>15&&(n=-1),e=0!==a?31===a?0!==i?NaN:Infinity*n:n*Math.pow(2,a-15)*(1+i/1024):n*(i/1024*6103515625e-14),e}(this.readUint16())}readFloat32(){const t=this.dataView.getFloat32(this.position,this.endianness);return this.position+=4,t}readFloat64(){const t=this.dataView.getFloat64(this.position,this.endianness);return this.position+=8,t}readInt8(){const t=this.dataView.getInt8(this.position);return this.position+=1,t}readInt16(){const t=this.dataView.getInt16(this.position,this.endianness);return this.position+=2,t}readInt16LE(){const t=this.dataView.getInt16(this.position,v.LittleEndian);return this.position+=2,t}readInt16BE(){const t=this.dataView.getInt16(this.position,v.BigEndian);return this.position+=2,t}readInt32(){const t=this.dataView.getInt32(this.position,this.endianness);return this.position+=4,t}readInt32LE(){const t=this.dataView.getInt32(this.position,v.LittleEndian);return this.position+=4,t}readInt32BE(){const t=this.dataView.getInt32(this.position,v.BigEndian);return this.position+=4,t}readInt64(){const t=this.dataView.getBigInt64(this.position,this.endianness);return this.position+=8,t}readUint8(){const t=this.dataView.getUint8(this.position);return this.position+=1,t}readUint16(){const t=this.dataView.getUint16(this.position,this.endianness);return this.position+=2,t}readUint16LE(){const t=this.dataView.getUint16(this.position,v.LittleEndian);return this.position+=2,t}readUint16BE(){const t=this.dataView.getUint16(this.position,v.BigEndian);return this.position+=2,t}readUint24(){return this.endianness===v.BigEndian?this.readUint24BE():this.readUint24LE()}readUint24LE(){const t=this.dataView.getUint8(this.position),e=this.dataView.getUint8(this.position+1),a=this.dataView.getUint8(this.position+2);return this.position+=3,t|e<<8|a<<16}readUint24BE(){const t=this.dataView.getUint8(this.position),e=this.dataView.getUint8(this.position+1),a=this.dataView.getUint8(this.position+2);return this.position+=3,a|e<<8|t<<16}readUint32(){const t=this.dataView.getUint32(this.position,this.endianness);return this.position+=4,t}readUint32LE(){const t=this.dataView.getUint32(this.position,v.LittleEndian);return this.position+=4,t}readUint32BE(){const t=this.dataView.getUint32(this.position,v.BigEndian);return this.position+=4,t}readUint64(){const t=this.dataView.getBigUint64(this.position,this.endianness);return this.position+=8,t}readUint8Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readUint8()}readUint16Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readUint16()}readUint32Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readUint32()}readInt8Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readInt8()}readInt16Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readInt16()}readInt32Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readInt32()}readFloat32Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readFloat32()}readFloat64Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readFloat64()}writeFloat32Array(t,e,a){for(let i=0;i<a;i++)this.writeFloat32(t[i+e])}writeFloat64Array(t,e,a){const i=this.position+8*a;this.ensureCapacity(i);const n=this.dataView,s=this.endianness;let r=this.position;for(let i=0;i<a;i++)n.setFloat64(r,t[e+i],s),r+=8;this.position=i}writeFloat16Array(t,e,a){for(let i=0;i<a;i++)this.writeFloat16(t[i+e])}readFloat16Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readFloat16()}writeFloat16(t){const e=function(t){let e=t;Number.isFinite(e)&&(e>65504||e<-65504)&&(e=e>0?65504:-65504),A[0]=e;const a=x[0];let i=a>>16&32768,n=a>>12&2047;const s=a>>23&255;return s<103?i:s>142?(i|=31744,255===s&&8388607&a&&(i|=512),i):s<113?(n|=2048,i|=(n>>114-s)+(n>>113-s&1),i):(i|=s-112<<10|n>>1,i+=1&n,i)}(t);this.writeUint16(e)}writeFloat32(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setFloat32(this.position,t,this.endianness),this.position=e}writeFloat64(t){const e=this.position+8;this.ensureCapacity(e),this.dataView.setFloat64(this.position,t,this.endianness),this.position=e}writeInt8(t){const e=this.position+1;this.ensureCapacity(e),this.dataView.setInt8(this.position,t),this.position=e}writeInt16(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setInt16(this.position,t,this.endianness),this.position=e}writeInt16BE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setInt16(this.position,t,v.BigEndian),this.position=e}writeInt16LE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setInt16(this.position,t,v.LittleEndian),this.position=e}writeInt32(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setInt32(this.position,t,this.endianness),this.position=e}writeInt32BE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setInt32(this.position,t,v.BigEndian),this.position=e}writeInt32LE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setInt32(this.position,t,v.LittleEndian),this.position=e}writeInt64(t){const e=this.position+8;this.ensureCapacity(e),this.dataView.setBigInt64(this.position,t,this.endianness),this.position=e}writeInt8Array(t,e,a){this.ensureCapacity(this.position+a);for(let i=0;i<a;i++)this.writeInt8(t[e+i])}writeInt16Array(t,e,a){this.ensureCapacity(this.position+2*a);for(let i=0;i<a;i++)this.writeInt16(t[e+i])}writeInt32Array(t,e,a){this.ensureCapacity(this.position+4*a);for(let i=0;i<a;i++)this.writeInt32(t[e+i])}writeUint8(t){const e=this.position+1;this.ensureCapacity(e),this.dataView.setUint8(this.position,t),this.position=e}writeUint8Array(t,e,a){for(let i=0;i<a;i++)this.writeUint8(t[e+i])}writeUint16(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setUint16(this.position,t,this.endianness),this.position=e}writeUint16BE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setUint16(this.position,t,v.BigEndian),this.position=e}writeUint16LE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setUint16(this.position,t,v.LittleEndian),this.position=e}writeUint16Array(t,e,a){for(let i=0;i<a;i++)this.writeUint16(t[e+i])}writeUint24(t){this.endianness===v.BigEndian?this.writeUint24BE(t):this.writeUint24LE(t)}writeUint24BE(t){const e=this.position+3;this.ensureCapacity(e);const a=255&t,i=t>>8&255,n=t>>16&255;this.dataView.setUint8(this.position,n),this.dataView.setUint8(this.position+1,i),this.dataView.setUint8(this.position+2,a),this.position=e}writeUint24LE(t){const e=this.position+3;this.ensureCapacity(e);const a=255&t,i=t>>8&255,n=t>>16&255;this.dataView.setUint8(this.position,a),this.dataView.setUint8(this.position+1,i),this.dataView.setUint8(this.position+2,n),this.position=e}writeUintVar(t){if((0|t)!==t||t<0)throw new RangeError(`value=[${t}] must be an integer in [0, 2147483647]`);let e=!0,a=t;for(;e||0!==a;){e=!1;let t=127&a;a>>=7,a>0&&(t|=128),this.writeUint8(t)}}readUintVar(){let t=!0,e=0,a=0;for(;t;){let i=this.readUint8();if(t=!!(128&i),e+=(127&i)*2**a,a+=7,t&&a>28)throw new Error("uintVar is too long, more than 5 bytes")}return e}writeUint32(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setUint32(this.position,t,this.endianness),this.position=e}writeUint32BE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setUint32(this.position,t,v.BigEndian),this.position=e}writeUint32LE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setUint32(this.position,t,v.LittleEndian),this.position=e}writeUint64(t){const e=this.position+8;this.ensureCapacity(e),this.dataView.setBigUint64(this.position,t,this.endianness),this.position=e}writeUint32Array(t,e,a){this.ensureCapacity(this.position+4*a);for(let i=0;i<a;i++)this.writeUint32(t[e+i])}writeBytes(t,e,a){const i=e+a,n=this.position,s=n+a;if(this.ensureCapacity(s),0===e&&t.length===a)this.__data_uint8.set(t,n);else if("function"==typeof t.subarray)this.__data_uint8.set(t.subarray(e,i),n);else for(let i=0;i<a;i++)this.__data_uint8[n+i]=t[e+i];this.position=s}readBytes(t,e,a){const n=this.position,s=n+a,r=this.__data_uint8;if(a<0||s>this.capacity)throw new Error(`Attempting to read ${a} bytes at position ${n}, only ${this.capacity-n} available`);a<128?i(r,n,t,e,a):t.set(r.subarray(n,s),e),this.position=s}writeUTF8String(t){if(null===t)return void this.writeUint32(4294967295);if(void 0===t)return void this.writeUint32(4294967294);let e=0;const a=t.length;if(a>=4294967294)throw new Error("String is too long");this.writeUint32(a);let i=this.position;const n=Math.max(32,a+(a>>1)+7);this.ensureCapacity(n+i);let s=this.__data_uint8,r=this.capacity;for(;e<a;){let n=t.charCodeAt(e++);if(n>=55296&&n<=56319){if(e<a){const a=t.charCodeAt(e);56320==(64512&a)&&(++e,n=((1023&n)<<10)+(1023&a)+65536)}n>=55296&&n<=56319&&(n=65533)}if(i+4>r&&(this.position=i,this.ensureCapacity(i+4),r=this.capacity,s=this.__data_uint8),4294967168&n){if(4294965248&n)if(4294901760&n){if(4292870144&n)continue;s[i++]=n>>18&7|240,s[i++]=n>>12&63|128,s[i++]=n>>6&63|128}else s[i++]=n>>12&15|224,s[i++]=n>>6&63|128;else s[i++]=n>>6&31|192;s[i++]=63&n|128}else s[i++]=n}this.position=i}readUTF8String(){const t=this.readUint32();if(4294967295===t)return null;if(4294967294===t)return;const e=this.__data_uint8;let a="",i=this.position,n=0;for(;i<this.capacity&&n<t;){const t=e[i++];let s;128&t?192==(224&t)?s=(31&t)<<6|63&e[i++]:224==(240&t)?s=(31&t)<<12|(63&e[i++])<<6|63&e[i++]:240==(248&t)&&(s=(7&t)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++],s>65535&&(s-=65536,a+=String.fromCharCode(s>>>10&1023|55296),n++,s=56320|1023&s)):s=t,n++,a+=String.fromCharCode(s)}return this.position=i,a}writeASCIIString(t){const e=t.length,a=this.position,i=a+e;this.ensureCapacity(i);for(let i=0;i<e;i++){const e=t.charCodeAt(i);if(e>127)throw new Error(`Character ${String.fromCharCode(e)} can't be represented by a US-ASCII byte.`);this.__data_uint8[a+i]=e}this.position=i}readASCIICharacters(t,e=!1){let a="";for(let i=0;i<t;i++){const t=this.readUint8();if(e&&0===t)break;a+=String.fromCharCode(t)}return a}toString(){return`BinaryBuffer[position=${this.position}, capacity=${this.capacity}, endianness=${this.endianness}]`}toHexString(){const t=this.__data_uint8,e=Math.min(t.length,this.position);let a="";for(let i=0;i<e;i++)a+=t[i].toString(16).padStart(2,"0").toUpperCase();return a}static fromEndianness(t){const e=new k;return e.endianness=t,e}static fromArrayBuffer(t){const e=new k;return e.fromArrayBuffer(t),e}static copyUTF8String(t,e){const a=t.readUTF8String();return e.writeUTF8String(a),a}static copyUintVar(t,e){const a=t.readUintVar();return e.writeUintVar(a),a}static copyUint8(t,e){const a=t.readUint8();return e.writeUint8(a),a}static copyUint16(t,e){const a=t.readUint16();return e.writeUint16(a),a}static copyUint32(t,e){const a=t.readUint32();return e.writeUint32(a),a}static copyFloat32(t,e){const a=t.readFloat32();return e.writeFloat32(a),a}static copyFloat64(t,e){const a=t.readFloat64();return e.writeFloat64(a),a}static copyBytes(t,e,a){const i=new Uint8Array(a);return t.readBytes(i,0,a),e.writeBytes(i,0,a),i}}k.prototype.isBinaryBuffer=!0;let z=v.LittleEndian,j=!1;function U(){if(j)return z;const t=new ArrayBuffer(2),e=new Uint8Array(t),a=new Uint16Array(t);return e[0]=19,z=19==(255&a[0])?v.LittleEndian:v.BigEndian,j=!0,z}const E={Uint8:"uint8",Uint16:"uint16",Uint32:"uint32",Uint64:"uint64",Int8:"int8",Int16:"int16",Int32:"int32",Int64:"int64",Float16:"float16",Float32:"float32",Float64:"float64"};function F(t,e){return 31*t+e|0}function I(t,e,a){return 3&(e|a)?1&e||3&a?function(t,e,a,i=a-e){let n=0|i,s=e;const r=a-e&3;for(;s<e+r;s++)n=(n<<5)-n+(255&t[s])|0;for(;s<a;s+=4)n=(n<<5)-n+(255&t[s]|(255&t[s+1])<<8|(255&t[s+2])<<16|(255&t[s+3])<<24)|0;return n}(new Uint8Array(t,e,a),0,a,a):function(t,e,a,i=a-e){let n=0|i,s=e;for(a-e&1&&(n=(n<<5)-n+(65535&t[s++])|0);s<a;s+=2)n=(n<<5)-n+(65535&t[s]|(65535&t[s+1])<<16)|0;return n}(new Uint16Array(t,e,a>>>1),0,a>>>1,a):function(t,e,a,i=a-e){let n=0|i;for(let i=e;i<a;++i)n=(n<<5)-n+t[i]|0;return n}(new Uint32Array(t,e,a>>>2),0,a>>>2,a)}function C(e,a,i,n,s){if(e===i&&a===n)return!0;const r=p(a,n,s);let o,c;return 4===r?(o=new Uint32Array(e,a,s>>>2),c=new Uint32Array(i,n,s>>>2)):2===r?(o=new Uint16Array(e,a,s>>>1),c=new Uint16Array(i,n,s>>>1)):(o=new Uint8Array(e,a,s),c=new Uint8Array(i,n,s)),t(o,c)}function B(t,e=!1){return e&&crossOriginIsolated?new SharedArrayBuffer(t):new ArrayBuffer(t)}class M{next=null;flags=0;generation=-1;constructor(t,e){this.handle=t,this.context=e}setFlag(t){this.flags|=t}clearFlag(t){this.flags&=~t}writeFlag(t,e){e?this.setFlag(t):this.clearFlag(t)}getFlag(t){return(this.flags&t)===t}}M.prototype.isSignalHandler=!0;class S{handlers=new Map;#t=!1;flags=0;generation=0;get silent(){return this.getFlag(1)}set silent(t){this.writeFlag(1,t)}setFlag(t){this.flags|=t}clearFlag(t){this.flags&=~t}writeFlag(t,e){e?this.setFlag(t):this.clearFlag(t)}getFlag(t){return(this.flags&t)===t}contains(t,e){const a=this.handlers.get(t);if(void 0===a)return!1;const i=function(t,e,a){let i=t;for(;;){if(i.handle===e&&i.context===a)return i;if(i=i.next,null===i)return null}}(a,t,e);return null!==i}mute(){this.setFlag(1)}unmute(){this.clearFlag(1)}hasHandlers(){return this.handlers.size>0}addOne(t,e){const a=new M(t,e);a.setFlag(1),this.#e(a)}seal(){return this.#t=!0,this}get isSealed(){return this.#t}add(t,e){const a=new M(t,e);this.#e(a)}#e(t){if(this.#t)throw new Error("Signal is sealed and will never dispatch; attaching a handler to it would leak");t.generation=this.generation;const e=t.handle,a=this.handlers.get(e);void 0===a||(t.next=a),this.handlers.set(e,t)}remove(t,e){const a=this.handlers.get(t);if(void 0===a)return!1;if(a.handle===t&&a.context===e)return null===a.next?this.handlers.delete(t):this.handlers.set(t,a.next),!0;let i=a,n=a.next;for(;null!==n;){if(n.handle===t&&n.context===e)return i.next=n.next,!0;i=n,n=n.next}return!1}removeAll(){this.handlers.clear()}#a(t){const e=this.handlers.get(t.handle);if(void 0===e)return!1;if(e===t)return null===e.next?this.handlers.delete(t.handle):this.handlers.set(t.handle,e.next),!0;let a=e,i=e.next;for(;null!==i;){const e=i.next;if(i===t)return a.next=e,!0;a=i,i=e}return!1}promise(){return new Promise((t,e)=>{this.addOne((...e)=>{t(e)})})}dispatch(...t){if(1&this.flags)return;this.generation++;const e=this.handlers;for(const a of e.values()){let e=a;do{const a=e.next;if(e.generation<this.generation){e.getFlag(1)&&this.#a(e);const a=e.handle;try{a.apply(e.context,t)}catch(t){}}e=a}while(null!==e)}}send0(){if(1&this.flags)return;this.generation++;const t=this.handlers;for(const e of t.values()){let t=e;do{const e=t.next;if(t.generation<this.generation){t.getFlag(1)&&this.#a(t);const e=t.handle;try{e.call(t.context)}catch(t){}}t=e}while(null!==t)}}send1(t){if(1&this.flags)return;this.generation++;const e=this.handlers;for(const a of e.values()){let e=a;do{const a=e.next;if(e.generation<this.generation){e.getFlag(1)&&this.#a(e);const a=e.handle;try{a.call(e.context,t)}catch(t){}}e=a}while(null!==e)}}send2(t,e){if(1&this.flags)return;this.generation++;const a=this.handlers;for(const i of a.values()){let a=i;do{const i=a.next;if(a.generation<this.generation){a.getFlag(1)&&this.#a(a);const i=a.handle;try{i.call(a.context,t,e)}catch(t){}}a=i}while(null!==a)}}send3(t,e,a){if(1&this.flags)return;this.generation++;const i=this.handlers;for(const n of i.values()){let i=n;do{const n=i.next;if(i.generation<this.generation){i.getFlag(1)&&this.#a(i);const n=i.handle;try{n.call(i.context,t,e,a)}catch(t){}}i=n}while(null!==i)}}send4(t,e,a,i){if(1&this.flags)return;this.generation++;const n=this.handlers;for(const s of n.values()){let n=s;do{const s=n.next;if(n.generation<this.generation){n.getFlag(1)&&this.#a(n);const s=n.handle;try{s.call(n.context,t,e,a,i)}catch(t){}}n=s}while(null!==n)}}send5(t,e,a,i,n){if(1&this.flags)return;this.generation++;const s=this.handlers;for(const r of s.values()){let s=r;do{const r=s.next;if(s.generation<this.generation){s.getFlag(1)&&this.#a(s);const r=s.handle;try{r.call(s.context,t,e,a,i,n)}catch(n){}}s=r}while(null!==s)}}send6(t,e,a,i,n,s){if(1&this.flags)return;this.generation++;const r=this.handlers;for(const o of r.values()){let r=o;do{const o=r.next;if(r.generation<this.generation){r.getFlag(1)&&this.#a(r);const o=r.handle;try{o.call(r.context,t,e,a,i,n,s)}catch(n){}}r=o}while(null!==r)}}send8(t,e,a,i,n,s,r,o){if(1&this.flags)return;this.generation++;const c=this.handlers;for(const h of c.values()){let c=h;do{const h=c.next;if(c.generation<this.generation){c.getFlag(1)&&this.#a(c);const h=c.handle;try{h.call(c.context,t,e,a,i,n,s,r,o)}catch(n){}}c=h}while(null!==c)}}merge(t){const e=new S;function a(){e.dispatch(...arguments)}return this.add(a),t.add(a),e}}function N(t){return Math.max(Math.ceil(1.5*t),t+32)}S.prototype.isSignal=!0;class R{length=0;constructor(t,e=!1){this.spec=t,this.data=B(8*t.bytesPerRecord,e),this.capacity=8,this.dataView=new DataView(this.data),this.on={added:new S}}set array_buffer(t){this.data=t,this.dataView=new DataView(t),this.capacity=Math.floor(t.byteLength/this.spec.bytesPerRecord),this.length=0}hash(){const t=this.length,e=t*this.spec.bytesPerRecord,a=this.dataView;let i=t;const n=e>>2,s=r(Math.floor(n/31),1),o=Math.floor(n/s);for(let t=0;t<o;t++){const e=t*s<<2;i=(i<<5)-i+a.getUint32(e)}for(let t=n<<2;t<e;t++)i=(i<<5)-i+a.getUint8(t);return i}setCapacity(t){if(this.capacity===t)return;const e=this.data,a=this.spec.bytesPerRecord,i=t*a;try{const t=this.data.constructor;this.data=new t(i)}catch(t){throw new Error("failed to create a new array buffer of size: "+i)}if(this.data.byteLength!==i)throw new Error("Generated array was truncated unexpectedly from "+i+" to "+this.data.byteLength);const n=this.length*a;try{y(e,0,this.data,0,n)}catch(t){throw t instanceof RangeError?new Error("Failed to copy contents of original due to to size violation. OldSize: "+n+", NewSize: "+this.data.byteLength):t}this.capacity=t,this.dataView=new DataView(this.data,0)}trim(){this.setCapacity(this.length)}#i(t){this.capacity<t&&this.setCapacity(N(t))}resize(t){const e=N(t);(this.capacity<t||.5*this.capacity>e)&&this.setCapacity(e)}writeCellValue(t,e,a){const i=this.spec,n=t*i.bytesPerRecord;(0,i.cellWriters[e])(this.dataView,n,a)}readCellValue(t,e){const a=this.spec,i=t*a.bytesPerRecord;return(0,a.cellReaders[e])(this.dataView,i)}removeRows(t,e){const a=this.data,i=new Uint8Array(a),n=this.spec.bytesPerRecord,s=t*n,r=s+e*n,o=this.length*n;i.copyWithin(s,r,o),this.length-=e,this.resize(this.length)}insertRows(t,e){const a=this.length+e;this.#i(a);const i=this.data,n=this.spec.bytesPerRecord,s=(t+e)*n,r=a*n,o=t*n;new Uint8Array(i).copyWithin(s,o,r),this.length=a}createEmptyRow(){const t=this.length+1;this.#i(t);const e=this.length;return this.length=t,e}addRow(t){const e=this.createEmptyRow();return this.spec.writeRowMethod(this.dataView,this.spec.bytesPerRecord*e,t),this.on.added.send2(e,t),e}addRows(t,e){throw new Error("deprecated, use .addRow and .writeRow instead")}copyRow(t,e){if(t===e)return;const a=this.spec.bytesPerRecord,i=t*a,n=e*a;y(this.data,i,this.data,n,a)}readRow(t,e=[]){const a=this.spec;return a.readRowMethod(this.dataView,a.bytesPerRecord*t,e),e}writeRow(t,e){const a=this.spec;a.writeRowMethod(this.dataView,a.bytesPerRecord*t,e)}clearRow(t){const e=this.spec.bytesPerRecord,a=t*e,i=this.dataView;for(let t=0;t<e;t++)i.setUint8(a+t,0)}reverse_rows(){const t=this.spec.bytesPerRecord,e=new Uint8Array(t),a=this.data,n=new Uint8Array(a),s=this.length;if(s<=1)return;const r=s-1,o=r>>>1;for(let a=0;a<=o;a++){const s=a*t;i(n,s,e,0,t);const o=(r-a)*t;n.copyWithin(s,o,o+t),n.set(e,o)}}clear(){this.length=0,this.setCapacity(0)}toRowArray(){const t=[];for(let e=0;e<this.length;e++){const a=this.readRow(e);t.push(a)}return t}printToConsole(){this.toRowArray()}copy(t){if(!this.spec.equals(t.spec))throw new Error("Different table specs");const e=t.length;this.length=e,this.resize(e);const a=t.spec.bytesPerRecord*e;y(t.data,0,this.data,0,a)}equals(t){if(t===this)return!0;if(null==t)return!1;if(!this.spec.equals(t.spec))return!1;const e=this.length;if(e!==t.length)return!1;const a=e*this.spec.bytesPerRecord;return C(this.data,0,t.data,0,a)}}const V={[E.Uint8]:"getUint8",[E.Uint16]:"getUint16",[E.Uint32]:"getUint32",[E.Uint64]:"getBigUint64",[E.Int8]:"getInt8",[E.Int16]:"getInt16",[E.Int32]:"getInt32",[E.Int64]:"getBigInt64",[E.Float16]:"getFloat16",[E.Float32]:"getFloat32",[E.Float64]:"getFloat64"},P={[E.Uint8]:"setUint8",[E.Uint16]:"setUint16",[E.Uint32]:"setUint32",[E.Uint64]:"setBigUint64",[E.Int8]:"setInt8",[E.Int16]:"setInt16",[E.Int32]:"setInt32",[E.Int64]:"setBigInt64",[E.Float16]:"setFloat16",[E.Float32]:"setFloat32",[E.Float64]:"setFloat64"},T={[E.Uint8]:1,[E.Uint16]:2,[E.Uint32]:4,[E.Uint64]:8,[E.Int8]:1,[E.Int16]:2,[E.Int32]:4,[E.Int64]:8,[E.Float16]:2,[E.Float32]:4,[E.Float64]:8};function D(t){const e=t&-t;return 0===e?32:31-Math.clz32(e)}function L(t,e){return t.equals(e)}function q(t){return t.hash()}function O(t){if(t<=255)return Uint8Array;if(t<=65535)return Uint16Array;if(t<=4294967295)return Uint32Array;throw new Error(`Unsupported size ${t}`)}function X(t,e){return(t<<2)+t+1&e}class K{constructor(t,e,a){this.key=t,this.value=e,this.hash=a}}K.prototype.isHashMapEntry=!0;const W=4294967295,J=new Uint32Array(0);class Q{__bins=J;__entries=new Array(0);__entries_bound=0;__entries_start=0;__size=0;__bin_count=0;__entries_allocated_count=0;__bin_count_power_of_two=0;__entries_count_power_of_two=0;__bin_count_mask=0;__load_factor=.75;__version=0;constructor({keyHashFunction:t=q,keyEqualityFunction:e=L,capacity:i=16,loadFactor:n=.75}={}){this.keyHashFunction=t,this.keyEqualityFunction=e,this.__load_factor=n,this.#n(a(i))}get size(){return this.__size}getCurrentLoad(){return this.__size/this.__bin_count}#n(t){if(t<this.__size)throw new Error(`count must be at least equal to must of records in the map (=${this.__size}), instead was ${t}`);this.__entries_count_power_of_two=D(t),this.__bin_count_power_of_two=this.__entries_count_power_of_two+1,this.__bin_count=2**this.__bin_count_power_of_two,this.__bin_count_mask=this.__bin_count-1;const e=this.__entries_allocated_count;this.__entries_allocated_count=2**this.__entries_count_power_of_two;const a=O(this.__entries_allocated_count+2);this.__bins=new a(this.__bin_count);const n=new Array(this.__entries_allocated_count),s=this.__entries;this.__entries=n,i(s,0,n,0,o(e,this.__entries_allocated_count)),this.__size>0&&this.rebuild()}compute_bin_index(t){return(t>>>16^t)>>>0&this.__bin_count_mask}#s(t){const e=this.keyHashFunction(t);return e===W?0:e}#r(t,e,a){return t.hash===e&&(t.key===a||this.keyEqualityFunction(t.key,a))}#o(t,e,a){const i=this.__entries_bound;this.__entries_bound++;const n=this.__entries[i];return void 0!==n?(n.hash=a,n.key=t,n.value=e):this.__entries[i]=new K(t,e,a),i}#c(t){t.key=null,t.value=null,t.hash=W}#h(){this.__entries_bound===this.__entries_allocated_count&&(this.__size>=this.__entries_allocated_count*this.__load_factor?this.#d():this.rebuild())}set(t,e){this.#h();const a=this.#s(t);let i=this.compute_bin_index(a),n=-1;for(;;){const s=this.__bins[i];if(s>1){const i=this.__entries[s-2];if(this.#r(i,a,t))return void(i.value=e)}else{if(0===s){-1!==n&&(i=n);const s=this.#o(t,e,a)+2;this.__bins[i]=s;break}-1===n&&(n=i)}i=X(i,this.__bin_count_mask)}this.__size++,this.__version++}#_(t){const e=this.#s(t);let a=this.compute_bin_index(e);for(;;){const i=this.__bins[a];if(i>1){const a=this.__entries[i-2];if(this.#r(a,e,t))return a}else if(0===i)return null;a=X(a,this.__bin_count_mask)}}get(t){const e=this.#_(t);if(null!==e)return e.value}getOrCompute(t,e,a){const i=this.#_(t);if(null!==i)return i.value;const n=e.call(a,t);return this.set(t,n),n}getOrSet(t,e){const a=this.#_(t);return null!==a?a.value:(this.set(t,e),e)}#l(t){if(this.__entries_start!==t)return;let e=t+1,a=this.__entries_bound;const i=this.__entries;for(;e<a&&i[e].hash===W;)e++;this.__entries_start=e}delete(t){const e=this.#s(t);let a=this.compute_bin_index(e);const i=this.__bins,n=this.__entries;for(;;){const s=i[a];if(s>1){const r=s-2,o=n[r];if(this.#r(o,e,t))return this.#c(o),i[a]=1,this.__size--,this.__version++,this.#l(r),!0}else if(0===s)return!1;a=X(a,this.__bin_count_mask)}}verifyHashes(t,e){let a=!0;const i=this.__bin_count;for(let n=0;n<i;n++){const i=this.__bins[n];if(i<=1)continue;const s=this.__entries[i-2],r=this.#s(s.key);s.hash!==r&&(t.call(e,`Hash stored on the entry(=${s.hash}) is different from the computed key hash(=${r}).`,s.key,s.value),a=!1)}return a}#d(){this.#n(2*this.__entries_allocated_count)}rebuild(){const t=this.__entries_bound,e=this.__entries,a=this.__bins;a.fill(0);let i=0;for(let n=this.__entries_start;n<t;n++){const t=e[n].hash;if(t===W)continue;const s=i;if(i++,s!==n){const t=e[s];e[s]=e[n],e[n]=t}let r=this.compute_bin_index(t);for(;;){if(0===a[r]){a[r]=s+2;break}r=X(r,this.__bin_count_mask)}}this.__entries_start=0,this.__entries_bound=this.__size,this.__version++}#f(){let t=0;for(let e=this.__entries_start;e<this.__entries_bound;e++)this.__entries[e].hash!==W&&t++;return t}forEach(t,e){const a=this.__bin_count,i=this.__entries,n=this.__bins;this.__version;for(let s=0;s<a;s++){const a=n[s];if(a<=1)continue;const r=i[a-2];t.call(e,r.value,r.key,this)}}has(t){return null!==this.#_(t)}clear(){this.__size>0&&this.__version++;const t=this.__bins,e=this.__bin_count;for(let a=0;a<e;a++){const e=t[a];if(0!==e){if(1!==e){const t=e-2;this.#c(this.__entries[t])}t[a]=0}}this.__size=0,this.__entries_start=0,this.__entries_bound=0}*[Symbol.iterator](){const t=this.__bin_count,e=this.__bins,a=this.__entries;this.__version;for(let i=0;i<t;i++){const t=e[i];if(t<=1)continue;const n=a[t-2];yield[n.key,n.value]}}*entries(){for(const t of this)yield t}*values(){for(const[t,e]of this)yield e}*keys(){for(const[t,e]of this)yield t}}function Y(){return 1}function G(){return 0}class H{key=null;value=null;weight=0;next=null;previous=null;unlink(){const t=this.next,e=this.previous;null!==e&&(e.next=t),null!==t&&(t.previous=e),this.next=null,this.previous=null}toString(){return`CacheElement{ hasNext:${null!==this.next}, hasPrevious:${null!==this.previous}, weight:${this.weight}, key:${this.key}, value:${this.value} }`}}class ${#u=Number.POSITIVE_INFINITY;#b=0;__first=null;__last=null;constructor({maxWeight:t=Number.POSITIVE_INFINITY,keyWeigher:e=G,valueWeigher:a=Y,keyHashFunction:i=q,keyEqualityFunction:n=L,capacity:s}={}){this.#u=t,this.keyWeigher=e,this.valueWeigher=a,this.data=new Q({keyHashFunction:i,keyEqualityFunction:n,capacity:s}),this.onEvicted=new S,this.onRemoved=new S,this.onSet=new S}__promote(t){t!==this.__first&&(t===this.__last&&(this.__last=t.previous),t.unlink(),null!==this.__first&&(t.next=this.__first,this.__first.previous=t),this.__first=t)}size(){return this.data.size}setMaxWeight(t){throw new Error("setMaxWeight is deprecated, use .maxWeight property instead")}get weight(){return this.#b}set maxWeight(t){if("number"!=typeof t||t<0)throw new Error(`Weight must be a non-negative number, instead was '${t}'`);const e=this.#u;this.#u=t,e>t&&this.evictUntilWeight(this.#u)}get maxWeight(){return this.#u}recomputeWeight(){let t=0;for(let[e,a]of this.data){const i=this.computeElementWeight(e,a.value);a.weight=i,t+=i}this.#b=t,this.evictUntilWeight(this.#u)}updateElementWeight(t){const e=this.data.get(t);if(void 0===e)return!1;const a=e.weight,i=this.computeElementWeight(t,e.value);if(i===a)return!0;e.weight=i;const n=i-a;return this.#b+=n,this.#b>this.#u&&i<=this.#u&&this.evictUntilWeight(this.#u),!0}computeElementWeight(t,e){return this.keyWeigher(t)+this.valueWeigher(e)}findEvictionVictim(){return this.__last}evictOne(){const t=this.findEvictionVictim();return null!==t&&(this.remove(t.key),this.onEvicted.send2(t.key,t.value),!0)}evictUntilWeight(t){const e=Math.max(t,0);for(;this.#b>e;)this.evictOne()}put(t,e){let a=this.data.get(t);if(void 0===a){const i=this.computeElementWeight(t,e),n=this.#u-i;if(n<0)return;a=new H,a.key=t,a.value=e,a.next=this.__first,null!==this.__first&&(this.__first.previous=a),this.__first=a,null===this.__last&&(this.__last=a),a.weight=i,this.evictUntilWeight(n),this.data.set(t,a),this.#b+=i}else{if(e===a.value);else{this.#b-=a.weight;const i=this.computeElementWeight(t,e);this.#b+=i,a.weight=i,a.value=e}this.__promote(a),this.#b>this.#u&&a.weight<=this.#u&&this.evictUntilWeight(this.#u)}this.onSet.send2(t,e)}contains(t){return this.data.has(t)}get(t){const e=this.data.get(t);return void 0===e?null:(this.__promote(e),e.value)}getOrCompute(t,e,a){const i=this.get(t);if(null!==i)return i;const n=e.call(a,t);return this.set(t,n),n}__removeElement(t){t.value,t===this.__first&&(this.__first=t.next),t===this.__last&&(this.__last=t.previous),t.unlink();const e=t.key;this.data.delete(e),this.#b-=t.weight}remove(t){const e=this.data.get(t);return void 0!==e&&(this.__removeElement(e),this.onRemoved.send2(t,e.value),!0)}silentRemove(t){const e=this.data.get(t);return void 0!==e&&(this.__removeElement(e),!0)}clear(){const t=[];!function(t,e){for(let a=e.next();!a.done;a=e.next())t.push(a.value)}(t,this.data.keys());const e=t.length;for(let a=0;a<e;a++){const e=t[a];this.remove(e)}}drop(){this.data.clear(),this.__first=null,this.__last=null,this.#b=0}validate(t,e){return this.data.verifyHashes((a,i,n)=>{t.call(e,a,i,n.value)})}}function Z(t,e,a){return F(F(t,e),a)}function tt(t,e,a){const i=t.length;let n=i;for(let s=0;s<i;s++){const i=t[s];n=(n<<5)-n+e.call(a,i),n|=0}return n}function et(t,e,a){if(null===t)return 0;if(void 0===t)return 1;let i=e??0,n=a??t.length-i,s=n;const r=i+n;for(let e=i;e<r;e++)s=(s<<5)-s+t.charCodeAt(e);return s>>>0}function at(t){const e=t.length;let a=0;for(let i=0;i<e;i++){const e=t.codePointAt(i);e<128?a+=1:e<2048?a+=2:e<65536?a+=3:(a+=4,i++)}return a}$.prototype.set=$.prototype.put,$.prototype.delete=$.prototype.remove,$.prototype.has=$.prototype.contains;class it{constructor({name:t,body:e,args:a=[]}){this.name=t,this.args=a,this.body=e,this.__hash=.1}updateHash(){this.__hash=Z(et(this.name),et(this.body),tt(this.args,et))}computeByteSize(){let t=at(this.body);void 0!==this.name&&(t+=at(this.name));const e=this.args.length;for(let a=0;a<e;a++)t+=at(this.args[a]);return t}equals(e){return this.name===e.name&&this.body===e.body&&t(this.args,e.args)}hash(){return.1===this.__hash&&this.updateHash(),this.__hash}}class nt{cache=new $({maxWeight:10383360,keyWeigher:t=>t.computeByteSize(),keyHashFunction:q,keyEqualityFunction:L});compile({code:t,args:e=[],name:a}){const i=new it({body:t,args:e,name:a}),n=this.cache.get(i);if(null===n){const n=new Function(e.join(","),t);return void 0!==a&&Object.defineProperty(n,"name",{value:a}),this.cache.put(i,n),n}return n}}function st(t,e){for(let a in t)if(t[a]===e)return a}function rt(t,e,a=v.BigEndian){const i=P[t],n=a===v.BigEndian?"false":"true";return nt.INSTANCE.compile({args:["dataView, byteOffset, value"],code:`dataView.${i}(byteOffset+${e}, value, ${n});`})}function ot(t,e,a=v.BigEndian){const i=V[t],n=a===v.BigEndian?"false":"true";return nt.INSTANCE.compile({args:["dataView, byteOffset"],code:`return dataView.${i}(byteOffset+${e}, ${n});`})}nt.INSTANCE=new nt;class ct{constructor(t,e=v.LittleEndian){const a=t.length;this.types=t,this.endianType=e,this.columnOffsets=new Uint32Array(a);let i=0;for(let e=0;e<a;e++){const a=t[e];this.columnOffsets[e]=i,i+=T[a]}this.bytesPerRecord=i,this.readRowMethod=function(t,e=v.BigEndian){let a=0;const i=[],n=t.length;for(let s=0;s<n;s++){const n=t[s],r=V[n],o=e===v.BigEndian?"false":"true";i.push(`result[${s}] = dataView.${r}(${a} + byteOffset, ${o});`),a+=T[n]}return nt.INSTANCE.compile({args:["dataView, byteOffset, result"],code:i.join("\n")})}(t,e),this.writeRowMethod=function(t,e=v.BigEndian){let a=0;const i=[],n=t.length;for(let s=0;s<n;s++){const n=t[s],r=P[n],o=e===v.BigEndian?"false":"true";i.push(`dataView.${r}(${a} + byteOffset, record[${s}], ${o});`),a+=T[n]}return nt.INSTANCE.compile({args:["dataView, byteOffset, record"],code:i.join("\n")})}(t,e),this.cellReaders=new Array(a),this.cellWriters=new Array(a);for(let i=0;i<a;i++)this.cellReaders[i]=ot(t[i],this.columnOffsets[i],e),this.cellWriters[i]=rt(t[i],this.columnOffsets[i],e)}getColumnCount(){return this.types.length}hash(){let t=this.endianType===v.BigEndian?1:0;return t+=tt(this.types,et),t}equals(e){return this.endianType===e.endianType&&t(this.types,e.types)}toString(){return`TableSpec{types=[${this.types.join(", ")}], endian=${st(v,this.endianType)}}`}static get(t,e=v.LittleEndian){const a=t.join(".")+":"+e,i=ht.get(a);if(null!==i)return i;const n=Object.freeze(new ct(t,e));return ht.put(a,n),n}}ct.prototype.isRowFirstTableSpec=!0;const ht=new $({keyHashFunction:et});function dt(t,e,a){let i=Infinity,n=Infinity,s=Infinity,c=-Infinity,d=-Infinity,_=-Infinity;for(let t=0;t<a;t+=3){const a=e[t],h=e[t+1],l=e[t+2];i=o(a,i),n=o(h,n),s=o(l,s),c=r(a,c),d=r(h,d),_=r(l,_)}h(t,0,i,n,s,c,d,_)}function _t(t,e){return Math.ceil(t/e)*e}class lt{get tag(){return""}get align(){return 0}get size(){return 0}get aligned_size(){return _t(this.size,this.align)}get runtime_sized(){return!1}get requires_declaration(){return!1}toString(){return this.wgsl_declaration}get declaration_chunk(){throw new Error("Not Implemented")}get wgsl_ref(){return this.wgsl_declaration}get wgsl_declaration(){return this.tag}equals(t){return!1}hash(){return 0}}lt.prototype.isWebGPUType=!0;class ft extends lt{#g=0;#m=0;#p="";get tag(){return this.#p}get size(){return this.#g}get align(){return this.#m}from(t,e,a){this.#p=t,this.#g=a,this.#m=e}static from(t,e,a){const i=new ft;return i.from(t,e,a),Object.freeze(i)}get wgsl_declaration(){return this.tag}hash(){return et(this.tag)}equals(t){return this===t||t instanceof ft&&this.tag===t.tag&&this.#g===t.size&&this.#m===t.align}}ft.prototype.isPrimitive=!0;class ut extends ft{static from(t,e,a){const i=new ut;return i.from(t,e,a),Object.freeze(i)}}ut.prototype.isAtomic=!0;const bt=ft.from("bool",4,4),gt=ft.from("i32",4,4),mt=ft.from("u32",4,4),pt=ft.from("f32",4,4),yt=ft.from("f16",2,2),wt=ft.from("vec2<i32>",8,8),vt=ft.from("vec2<u32>",8,8),At=ft.from("vec2<f32>",8,8),xt=ft.from("vec3<i32>",16,12),kt=ft.from("vec3<u32>",16,12),zt=ft.from("vec3<f32>",16,12),jt=ft.from("vec4<i32>",16,16),Ut=ft.from("vec4<u32>",16,16),Et=ft.from("vec4<f32>",16,16),Ft=ft.from("mat2x2<f32>",8,16),It=ft.from("mat3x2<f32>",8,24),Ct=ft.from("mat4x2<f32>",8,32),Bt=ft.from("mat2x3<f32>",16,32),Mt=ft.from("mat3x3<f32>",16,48),St=ft.from("mat4x3<f32>",16,64),Nt=ft.from("mat2x4<f32>",16,32),Rt=ft.from("mat3x4<f32>",16,48),Vt=ft.from("mat4x4<f32>",16,64),Pt=ft.from("vec2<f16>",4,4),Tt=ft.from("vec3<f16>",8,6),Dt=ft.from("vec4<f16>",8,8),Lt=ft.from("mat2x2<f16>",4,8),qt=ft.from("mat3x2<f16>",4,12),Ot=ft.from("mat4x2<f16>",4,16),Xt=ft.from("mat2x3<f16>",8,16),Kt=ft.from("mat3x3<f16>",8,24),Wt=ft.from("mat4x3<f16>",8,32),Jt=ft.from("mat2x4<f16>",8,16),Qt=ft.from("mat3x4<f16>",8,24),Yt=ft.from("mat4x4<f16>",8,32),Gt=ut.from("atomic<u32>",4,4),Ht=ut.from("atomic<i32>",4,4),$t={i32:gt,u32:mt,f32:pt,f16:yt,"atomic<u32>":Gt,"atomic<i32>":Ht,"vec2<i32>":wt,"vec2<u32>":vt,"vec2<f32>":At,"vec2<f16>":Pt,"vec3<i32>":xt,"vec3<u32>":kt,"vec3<f32>":zt,"vec3<f16>":Tt,"vec4<i32>":jt,"vec4<u32>":Ut,"vec4<f32>":Et,"vec4<f16>":Dt,"mat2x2<f32>":Ft,"mat2x2<f16>":Lt,"mat3x2<f32>":It,"mat3x2<f16>":qt,"mat4x2<f32>":Ct,"mat4x2<f16>":Ot,"mat2x3<f32>":Bt,"mat2x3<f16>":Xt,"mat3x3<f32>":Mt,"mat3x3<f16>":Kt,"mat4x3<f32>":St,"mat4x3<f16>":Wt,"mat2x4<f32>":Nt,"mat2x4<f16>":Jt,"mat3x4<f32>":Rt,"mat3x4<f16>":Qt,"mat4x4<f32>":Vt,"mat4x4<f16>":Yt,vec2i:wt,vec3i:xt,vec4i:jt,vec2u:vt,vec3u:kt,vec4u:Ut,vec2f:At,vec3f:zt,vec4f:Et,mat2x2f:Ft,mat3x2f:It,mat4x2f:Ct,mat2x3f:Bt,mat3x3f:Mt,mat4x3f:St,mat2x4f:Nt,mat3x4f:Rt,mat4x4f:Vt,vec2h:Pt,vec3h:Tt,vec4h:Dt,mat2x2h:Lt,mat3x2h:qt,mat4x2h:Ot,mat2x3h:Xt,mat3x3h:Kt,mat4x3h:Wt,mat2x4h:Jt,mat3x4h:Qt,mat4x4h:Yt};function Zt(t,e){return-1===t.indexOf(e)&&(t.push(e),!0)}function te(t,e){return t===e||"object"==typeof t&&null!==t&&"object"==typeof e&&null!==e&&"function"==typeof t.equals&&t.equals(e)}function ee(t,e){const a=t.length;if(a!==e.length)return!1;for(let i=0;i<a;i++)if(!te(t[i],e[i]))return!1;return!0}class ae{get isCodeChunk(){return!0}static empty=Object.freeze(ae.from(""));#y="";get text(){return this.#y}#w=[];#v=[];addExtension(t){return Zt(this.#v,t)}#A=[];addLanguageExtension(t){return Zt(this.#A,t)}#x=[];requireResource(t){return Zt(this.#x,t)}get required_resources(){return this.#x}addDependency(t){if(this.#w.includes(t))return!1;if(t.findDependencyRecursive(this))throw new Error(`Circular dependency detected: ${this} -> ${t}`);return this.#k(t),!0}#k(t){this.#w.push(t)}static from(t,e=[]){const a=new ae;a.#y=t;const i=e.length;for(let t=0;t<i;t++){const i=e[t];a.addDependency(i)}return a}allDirectDependenciesIncludedInSet(t){const e=this.#w,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(!t.has(a))return!1}return!0}findDependencyRecursive(t){const e=this.#w,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.equals(t)||a.findDependencyRecursive(t))return!0}return!1}collectDependencies(){const t=new Set,e=this.#w.slice();let a=e.length;for(;a>0;){a--;const i=e[a];if(!0===i.isCodeChunkChoice)throw new Error(`The graph holds a ${i}; specialize it before linking it, see CodeChunk.specialize`);if(t.has(i))continue;t.add(i);const n=i.#w,s=n.length;for(let t=0;t<s;t++)e[a++]=n[t]}return Array.from(t)}collectSwitches(){const t=[],e=new Set([this]),a=[this];for(let i=0;i<a.length;i++){const n=a[i];let s;!0===n.isCodeChunkChoice?(Zt(t,n.shader_switch),s=n.alternatives):s=n.#w;for(let t=0;t<s.length;t++){const i=s[t];e.has(i)||(e.add(i),a.push(i))}}return t}specialize(t){return ae.#z(this,t,new Map)}static#z(t,e,a){let i=a.get(t);if(void 0!==i)return i;if(!0===t.isCodeChunkChoice)return i=ae.#z(t.alternative_for(e),e,a),a.set(t,i),i;const n=t.#w,s=n.length;let r=null;for(let t=0;t<s;t++){const i=n[t],s=ae.#z(i,e,a);null===r&&s!==i&&(r=n.slice(0,t)),null!==r&&Zt(r,s)}return null===r?i=t:(i=new ae,i.#y=t.#y,i.#w=r,i.#v=t.#v.slice(),i.#A=t.#A.slice(),i.#x=t.#x.slice()),a.set(t,i),i}coalesceDependencies(){const t=new Set,e=this.collectDependencies(),a=[];let i=e.length;for(;i>0;){const n=i;for(let n=i-1;n>=0;n--){const s=e[n];s.allDirectDependenciesIncludedInSet(t)&&(a.push(s),t.add(s),e.splice(n,1),i--)}if(n===i)throw new Error(`${i} dependencies could not be satisfied`)}return a}compile(){const t=this.coalesceDependencies();t.push(this);const e={},a={},i=[],n=new Set,s=[],r=t.length;for(let o=0;o<r;o++){const r=t[o];s.push(r.#y);const c=r.#v;for(let t=0;t<c.length;t++)e[c[t]]=!0;const h=r.#A;for(let t=0;t<h.length;t++)a[h[t]]=!0;const d=r.#x;for(let t=0;t<d.length;t++){const e=d[t];n.has(e)||(n.add(e),i.push({resource:e,chunk:r}))}}const o=Object.keys(e).sort(),c=Object.keys(a).sort();return{text:s.join("\n"),extensions:o,language_extensions:c,resources:i}}toString(){return this.#y}hash(){return et(this.#y)^this.#w.length}copy(t){this.#y=t.#y,this.#w=t.#w.slice(),this.#v=t.#v.slice(),this.#A=t.#A.slice(),this.#x=t.#x.slice()}clone(){const t=new ae;return t.copy(this),t}equals(t){return this===t||!0!==t.isCodeChunkChoice&&this.#y===t.#y&&ee(this.#w,t.#w)}}class ie extends lt{count=-1;type=null;get align(){return this.type.align}get size(){const t=this.type,e=_t(t.size,t.align);return this.runtime_sized?e:this.count*e}equals(t){return this===t||t instanceof ie&&this.type.equals(t.type)&&this.count===t.count}hash(){return F(this.type.hash(),this.count)}get runtime_sized(){return this.count<0}static from(t,e=-1){const a=new ie;return a.type=t,a.count=e,a}get requires_declaration(){return this.type.requires_declaration}#j;get declaration_chunk(){return void 0===this.#j&&(this.type.requires_declaration?this.#j=this.type.declaration_chunk:this.#j=ae.empty),this.#j}get wgsl_ref(){const t=this.type;return this.runtime_sized?`array< ${t.wgsl_ref} >`:`array< ${t.wgsl_ref}, ${this.count} >`}get wgsl_declaration(){const t=this.type.wgsl_ref;return this.runtime_sized?`array< ${t} >`:`array< ${t}, ${this.count} >`}}ie.prototype.isArray=!0,ie.f32=Object.freeze(ie.from(pt)),ie.f16=Object.freeze(ie.from(yt)),ie.u32=Object.freeze(ie.from(mt)),ie.vec4u=Object.freeze(ie.from(Ut)),ie.vec4f=Object.freeze(ie.from(Et)),ie.vec2h=Object.freeze(ie.from(Pt)),ie.vec4h=Object.freeze(ie.from(Dt));class ne{constructor(t,e){this.text=t,this.indentation=e}toString(){return`Line{ indentation=${this.indentation}, text="${this.text}" }`}}class se{#U=[];#E=0;get indentation(){return this.#E}indentSpaces=4;get count(){return this.#U.length}containsSubstring(t){const e=this.#U,a=e.length;for(let i=0;i<a;i++)if(-1!==e[i].text.indexOf(t))return!0;return!1}indent(){return this.#E++,this}dedent(){return this.#E=Math.max(0,this.#E-1),this}add(t){const e=new ne(t,this.#E);return this.#U.push(e),this}extend(t){const e=this.#U,a=e.length-1;if(a<0)throw new Error("No lines to append to");e[a].text+=t}addLines(t){const e=t.#U,a=e.length;for(let t=0;t<a;t++){const a=e[t],i=new ne(a.text,a.indentation+this.#E);this.#U.push(i)}}clear(){this.#U=[],this.#E=0}build(){const t=[],e=this.#U,a=e.length,i=function(t,e){if(e<=0)return"";let a=" ";for(let t=1;t<e;t++)a+=" ";return a}(0,this.indentSpaces);for(let n=0;n<a;n++){const a=e[n];let s="";const r=a.indentation;for(let t=0;t<r;t++)s+=i;t.push(s+a.text)}return t.join("\n")}static fromText(t,e="\n"){const a=new se,i=t.split(e),n=i.length;for(let t=0;t<n;t++){const e=i[t];a.add(e)}return a}toString(){return this.build()}}const re=/array\s*<\s*(?<type>[^,]+)\s*(?:,\s*(?<count>[0-9]+))?\s*>/;function oe(t){const e=t.match(re);if(null!==e){const t=e.groups,a=t.type;let i;i=void 0===t.count?-1:parseInt(t.count);const n=oe(a);return ie.from(n,i)}const a=$t[t];if(void 0===a)throw new Error(`Unsupported type '${t}'`);return a}const ce=new Set([yt,Pt,Tt,Dt,Lt,qt,Ot,Xt,Kt,Wt,Jt,Qt,Yt]);function he(t){if(t.isPrimitive||t.isAtomic)return ce.has(t);if(t.isArray)return he(t.type);if(t.isStruct){for(const e of t.fields)if(he(e.type))return!0;return!1}throw new Error(`Unsupported type '${t}'`)}function de(t,e,a){let i=t;return i<e&&(i=e),i<a&&(i=a),i}function _e(t){let e=t>>>0;return e-=e>>>1&1431655765,e=(858993459&e)+(e>>>2&858993459),e=e+(e>>>4)&252645135,Math.imul(e,16843009)>>>24}const le=4096;class fe{__length=0;constructor(t=64){var e;this.__capacity=(e=t)+(32-e%32)%32,this.__data_uint32=new Uint32Array(this.__capacity>>5),this.__chunk_population=new Uint16Array(Math.ceil(this.__capacity/le)),this.__shrinkFactor=.5}preventShrink(){this.setShrinkFactor(0)}setShrinkFactor(t){this.__shrinkFactor=t}setCapacity(t){if(this.__length>t)throw new Error(`Current length(=${this.__length}) is greater than requested size(=${t})`);this.__resize(t)}size(){return this.__length}capacity(){return this.__capacity}__resize(t){const e=Math.ceil(t/32),a=this.__data_uint32,i=new Uint32Array(e);a.length<e?i.set(a):i.set(a.subarray(0,e)),this.__data_uint32=i,this.__capacity=32*e;const n=Math.ceil(e/128),s=this.__chunk_population,r=new Uint16Array(n);s.length<n?r.set(s):r.set(s.subarray(0,n)),this.__chunk_population=r}__rebuildChunkPopulation(){const t=this.__data_uint32,e=this.__chunk_population;e.fill(0);const a=t.length;for(let i=0;i<a;i++){const a=t[i];0!==a&&(e[i>>7]+=_e(a))}}__updateLength(){const t=this.previousSetBit(this.__length)+1;t<this.__length&&this.__setLength(t)}__setLength(t){this.__length=t;const e=this.__capacity;if(t>e){const a=Math.ceil(de(t,e+128,1.3*e));this.__resize(a)}else t<e-128&&t<e*this.__shrinkFactor&&this.__resize(t)}previousSetBit(t){const e=o(t,this.__length-1);if(e<0)return-1;let a=e>>5;const i=31&e,n=this.__data_uint32;let s=31===i?n[a]:n[a]&(1<<i+1)-1;for(;;){if(0!==s)return 32*a+(31-Math.clz32(s>>>0));if(a--,a<0)return-1;s=n[a]}}nextSetBit(t){const e=this.__length;if(t>=e)return-1;const a=this.__data_uint32;let i,n,s=t>>5,r=31&t;if(0!==r){const t=~((1<<r)-1),e=a[s]&t;if(0!==e)return r=D(e),(s<<5)+r;s++}const o=e+31>>5;for(;s<o;s++)if(i=a[s],0!==i)return r=D(i),n=(s<<5)+r,n;return-1}nextClearBit(t){let e,a=t>>5,i=31&t;const n=this.__data_uint32;if(0!==i){e=n[a];const t=(e|(1<<i)-1)>>>0;if(4294967295!==t)return i=D(~t),i+32*a;a++}const s=this.__length,r=s+31>>5,c=this.__chunk_population;for(;a<r;){const t=a>>7;if(c[t]===le){a=t+1<<7;continue}const s=o(t+1<<7,r);for(;a<s;a++)if(e=n[a],4294967295!==e)return i=D(~e),i+32*a}return Math.max(s,t)}set(t,e){const a=t>>5,i=1<<(31&t);if(e){const e=t+1;e>this.__length&&this.__setLength(e);const n=this.__data_uint32,s=n[a];0===(s&i)&&(n[a]=s|i,this.__chunk_population[t>>12]++)}else if(t<this.__length){const e=this.__data_uint32,n=e[a];0!==(n&i)&&(e[a]=n&~i,this.__chunk_population[t>>12]--),this.__updateLength()}}clear(t){this.set(t,!1)}setRange(t,e){for(let a=t;a<=e;a++)this.set(a,!0)}clearRange(t,e){for(let a=t;a<e;a++)this.set(a,!1)}get(t){if(t>=this.__length)return!1;const e=t>>5,a=31&t;return!!(this.__data_uint32[e]&1<<a)}getAndSet(t){const e=this.get(t);return e||this.set(t,!0),e}getAndClear(t){const e=this.get(t);return e&&this.set(t,!1),e}shift_right(t,e,a){for(let i=a;i>=e;i--){const e=this.get(i);this.set(i+t,e)}}shift_left(t,e,a){for(let i=e;i<=a;i++){const e=this.get(i);this.set(i-t,e)}}shift(t,e,a){t>0?this.shift_right(t,e,a):this.shift_left(-t,e,a)}reset(){const t=this.__length;t<=0||(t<=32?this.__data_uint32[0]=0:this.__data_uint32.fill(0,0,Math.ceil(t/32)),this.__chunk_population.fill(0,0,Math.ceil(t/le)),this.__length=0)}cardinality(){const t=this.__length;if(0===t)return 0;const e=this.__chunk_population,a=t+4095>>12;let i=0;for(let t=0;t<a;t++)i+=e[t];return i}copy(t){const e=t.__length,a=e>>5,i=this.__length;i!==e&&(i<e?this.__resize(e):this.__data_uint32.fill(0,a),this.__length=e);for(let e=0;e<a;e++)this.__data_uint32[e]=t.__data_uint32[e];const n=a<<5,s=e-n;for(let e=0;e<s;e++){const a=n+e;this.set(a,t.get(a))}this.__rebuildChunkPopulation()}static fixedSize(t){const e=new fe(t);return e.preventShrink(),e}}const ue=16;function be(t,e,a,i){let n=_t(i,e);for(;;){n=_t(t.nextClearBit(n),e);const i=n+a;let s=-1;for(let e=n;e<i;e++)if(t.get(e)){s=e;break}if(-1===s)return n;n=_t(s+1,e)}}class ge{name="";parameters=[];getParameterInteger(t){const e=this.parameters;return parseInt(e[t])}static from(t,...e){const a=new ge;return a.name=t,a.parameters=e,a}equals(e){return this.name===e.name&&t(this.parameters,e.parameters)}hash(){return et(this.name)^this.parameters.length}generate(){let t=`@${this.name}`;const e=this.parameters,a=e.length;if(a>0){t+="(";for(let i=0;i<a;i++)t+=e[i],i!==a-1&&(t+=", ");t+=")"}return t}}class me{attributes=[];setAttribute(t,...e){const a=ge.from(t,...e);this.attributes.push(a)}getAttribute(t){const e=this.attributes,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.name===t)return a}}get size(){const t=this.getAttribute("size");let e=this.type.size;return void 0!==t&&(e=t.getParameterInteger(0)),e}get align(){const t=this.getAttribute("align");let e=this.type.align;return void 0!==t&&(e=t.getParameterInteger(0)),e}offset=0;type;name;static from(t,e,...a){const i=new me;return i.name=t,i.type=e,i.attributes=a,i}equals(t){return this.name===t.name&&this.offset===t.offset&&this.type.equals(t.type)&&ee(this.attributes,t.attributes)}copy(t){return this.name=t.name,this.offset=t.offset,this.type=t.type,this.attributes=t.attributes.slice(),this}clone(){const t=new me;return t.copy(this),t}hash(){return Z(et(this.name),this.offset,this.type.hash())}generate(){let t="";const e=this.attributes,a=e.length;for(let i=0;i<a;i++)t+=e[i].generate()+" ";return`${t}${this.name} : ${this.type.wgsl_ref}`}}me.prototype.isWGSLStructField=!0;let pe=0;function ye(){return"Struct_"+pe++}class we extends lt{#p="";get tag(){return this.#p}set tag(t){this.#p=t}fields=[];#F=!1;#g=0;#m=0;get size(){return this.#g}get align(){return this.#m}copy(t){return this.#p=t.#p,this.#g=t.#g,this.#m=t.#m,this.#F=t.#F,this.#j=void 0,this.fields=t.fields.map(t=>t.clone()),this}clone(){const t=new we;return t.copy(this),t.#p=ye(),t}make(t){const e=new se;e.add(`${this.wgsl_ref}(`),e.indent();const a=this.fields,i=a.length;for(let n=0;n<i;n++){const i=a[n].name,s=t[i];if(void 0===s)throw new Error(`Missing field '${i}'`);e.add(`${s},`)}return e.dedent(),e.add(")"),e.build()}pack(){if(this.fields.length<=1)return this;const t=[],e=[];for(const a of this.fields)a.type.runtime_sized?e.push(a):t.push(a);const a=function(t){const e=t.length,a=new Uint32Array(e);for(let t=0;t<e;t++)a[t]=t;a.sort((e,a)=>{const i=(ue-t[e].size%ue)%ue,n=(ue-t[a].size%ue)%ue;return i!==n?i-n:e-a});let i=0;for(let a=0;a<e;a++){const e=t[a];i+=_t(e.size,e.align)}const n=fe.fixedSize(i);let s=0;const r=new Uint32Array(e);for(let i=0;i<e;i++){const e=a[i],o=t[e],c=be(n,o.align,o.size,s);r[e]=c,n.setRange(c,c+o.size-1),c===s&&(s=n.nextClearBit(s+o.size))}const o=new Uint32Array(e);for(let t=0;t<e;t++)o[t]=t;o.sort((t,e)=>r[t]-r[e]);const c=new Array(e);for(let a=0;a<e;a++)c[a]=t[o[a]];return c}(t);return this.fields=a.concat(e),this.#F&&(this.#g,this.#I(),this.#g),this}equals(t){return t===this||t instanceof we&&this.#p===t.#p&&ee(this.fields,t.fields)}hash(){return F(Z(et(this.name),this.#g,this.#m),this.fields.length)}get requires_declaration(){return!0}get runtime_sized(){const t=this.fields;for(let e=0;e<t.length;e++)if(t[e].type.runtime_sized)return!0;return!1}static from(t,e=ye()){const a=new we;a.#p=e;for(const e in t){const i=t[e];let n;if("string"==typeof i)n=oe(i);else{if(!0!==i.isWebGPUType)throw new Error(`Unsupported type declarator '${i}'`);n=i}a.#C(me.from(e,n))}return a.#I(),a}static fromFields(...t){const e=new we;e.#p=ye();for(const a of t)e.#C(a);return e.#I(),e}has(t){return this.fields.some(e=>e.name===t)}get(t){const e=this.fields.find(e=>e.name===t);if(void 0===e)throw new Error(`Field '${t}' not found`);return e}#C(t){this.fields.push(t)}#I(){const t=this.fields,e=t.length;let a=1,i=0;for(let n=0;n<e;n++){const e=t[n],s=_t(i,e.align);a<e.align&&(a=e.align),e.offset=s,i=e.offset+e.size}this.#m=a,this.#g=_t(i,a),this.#j=void 0,this.#F=!0}get wgsl_ref(){return this.#p}get wgsl_declaration(){const t=new se;t.add(`struct ${this.#p}{`),t.indent();for(let e=0;e<this.fields.length;e++){const a=this.fields[e];t.add(`${a.generate()},`)}return t.dedent(),t.add("}"),t.build()}#j;get declaration_chunk(){if(void 0===this.#j){const t=ae.from(this.wgsl_declaration),e=this.fields,a=e.length;for(let i=0;i<a;i++){const a=e[i].type;a.requires_declaration&&t.addDependency(a.declaration_chunk)}he(this)&&t.addExtension("shader-f16"),this.#j=t}return this.#j}}function ve(t,e){const a=new Float32Array(e);return t.readFloat32Array(a,0,e),a}function Ae(t,e){const a=new Float16Array(e);return t.readFloat16Array(a,0,e),a}function xe(t,e){const a=new Int32Array(e);return t.readInt32Array(a,0,e),a}function ke(t,e){const a=new Uint32Array(e);return t.readUint32Array(a,0,e),a}function ze(t,e){const a=new Float32Array(3*e),i=t.position;for(let n=0;n<e;n++)t.position=i+16*n,t.readFloat32Array(a,3*n,3);return t.position=i+16*e,a}function je(t,e){const a=new Float16Array(3*e),i=t.position;for(let n=0;n<e;n++)t.position=i+8*n,t.readFloat16Array(a,3*n,3);return t.position=i+8*e,a}function Ue(t,e){if(t.position=_t(t.position,e.align),e instanceof ie)return function(t,e){let a=e.count;const i=[],n=e.type,s=n.aligned_size,r=t.position;if(e.runtime_sized){const e=t.capacity-t.position;a=Math.floor(e/s)}for(let e=0;e<a;e++)t.position=r+e*s,i[e]=Ue(t,n);return t.position=r+a*s,i}(t,e);if(e instanceof we)return function(t,e){const a=e.fields,i=t.position,n={};for(let e=0;e<a.length;e++){const s=a[e];t.position=i+s.offset,n[s.name]=Ue(t,s.type)}return t.position=i+e.size,n}(t,e);switch(e){case bt:return 0!==t.readUint32();case mt:case Gt:return t.readUint32();case gt:case Ht:return t.readInt32();case pt:return t.readFloat32();case yt:return t.readFloat16();case vt:return ke(t,2);case kt:return ke(t,3);case Ut:return ke(t,4);case wt:return xe(t,2);case xt:return xe(t,3);case jt:return xe(t,4);case At:return ve(t,2);case zt:return ve(t,3);case Et:return ve(t,4);case Pt:return Ae(t,2);case Tt:return Ae(t,3);case Dt:return Ae(t,4);case Ft:return ve(t,4);case It:return ve(t,6);case Ct:case Nt:return ve(t,8);case Rt:return ve(t,12);case Vt:return ve(t,16);case Bt:return ze(t,2);case Mt:return ze(t,3);case St:return ze(t,4);case Lt:return Ae(t,4);case qt:return Ae(t,6);case Ot:case Jt:return Ae(t,8);case Qt:return Ae(t,12);case Yt:return Ae(t,16);case Xt:return je(t,2);case Kt:return je(t,3);case Wt:return je(t,4);default:throw new Error(`Unsupported type ${e}`)}}function Ee(t,e,a){const i=e.position;e.ensureCapacity(i+16*a);for(let n=0;n<a;n++)e.position=i+16*n,e.writeFloat32Array(t,3*n,3);e.position=i+16*a}function Fe(t,e,a){const i=e.position;e.ensureCapacity(i+8*a);for(let n=0;n<a;n++)e.position=i+8*n,e.writeFloat16Array(t,3*n,3);e.position=i+8*a}function Ie(t,e,a){if(a instanceof ie)return function(t,e,a){const i=a.count,n=a.type.aligned_size,s=e.position;for(let r=0;r<i;r++)e.position=s+r*n,Ie(t[r],e,a.type);e.position=s+i*n}(t,e,a);if(a instanceof we)return function(t,e,a){const i=a.fields,n=e.position,s=i.length;for(let a=0;a<s;a++){const s=i[a];e.position=n+s.offset;const r=t[s.name];void 0!==r&&Ie(r,e,s.type)}e.position=n+a.size}(t,e,a);switch(a){case bt:return e.writeUint32(t?1:0);case mt:case Gt:return e.writeUint32(t);case gt:case Ht:return e.writeInt32(t);case pt:return e.writeFloat32(t);case yt:return e.writeFloat16(t);case wt:return e.writeInt32Array(t,0,2);case xt:return e.writeInt32Array(t,0,3);case jt:return e.writeInt32Array(t,0,4);case vt:return e.writeUint32Array(t,0,2);case kt:return e.writeUint32Array(t,0,3);case Ut:return e.writeUint32Array(t,0,4);case At:return e.writeFloat32Array(t,0,2);case zt:return e.writeFloat32Array(t,0,3);case Et:return e.writeFloat32Array(t,0,4);case Pt:return e.writeFloat16Array(t,0,2);case Tt:return e.writeFloat16Array(t,0,3);case Dt:return e.writeFloat16Array(t,0,4);case Ft:return e.writeFloat32Array(t,0,4);case It:return e.writeFloat32Array(t,0,6);case Ct:case Nt:return e.writeFloat32Array(t,0,8);case Rt:return e.writeFloat32Array(t,0,12);case Vt:return e.writeFloat32Array(t,0,16);case Bt:return Ee(t,e,2);case Mt:return Ee(t,e,3);case St:return Ee(t,e,4);case Lt:return e.writeFloat16Array(t,0,4);case qt:return e.writeFloat16Array(t,0,6);case Ot:case Jt:return e.writeFloat16Array(t,0,8);case Qt:return e.writeFloat16Array(t,0,12);case Yt:return e.writeFloat16Array(t,0,16);case Xt:return Fe(t,e,2);case Kt:return Fe(t,e,3);case Wt:return Fe(t,e,4);default:throw new Error(`Unsupported type ${a}`)}}we.prototype.isStruct=!0,(new k).endianness=U();const Ce="index",Be="position",Me="normal",Se="tangent",Ne="uv0",Re="uv1",Ve="color",Pe="joints",Te="weights";var De=function(){var t,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if("object"!=typeof WebAssembly)return{supported:!1};function a(t){if(!t)throw new Error("Assertion failed")}function i(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function n(e,a,n,s,r,o,c,h,d,_){var l=t.exports.sbrk,f=l(16*t.exports.meshopt_buildMeshletsBound(a.length,o,c)),u=l(4*a.length),b=l(a.length),g=l(a.byteLength),m=l(n.byteLength),p=new Uint8Array(t.exports.memory.buffer);p.set(i(a),g),p.set(i(n),m);for(var y=e(f,u,b,g,a.length,m,s,r,o,c,h,d,_),w=(p=new Uint8Array(t.exports.memory.buffer)).subarray(f,f+16*y),v=new Uint32Array(w.buffer,w.byteOffset,w.byteLength/4).slice(),A=0;A<y;++A){var x=v[4*A+0],k=v[4*A+1],z=(s=v[4*A+2],v[4*A+3]);t.exports.meshopt_optimizeMeshlet(u+4*x,b+k,z,s)}var j=v[4*(y-1)+0],U=v[4*(y-1)+1],E=v[4*(y-1)+2],F=v[4*(y-1)+3],I=y>0?j+E:0,C=y>0?U+3*F:0,B={meshlets:v,vertices:new Uint32Array(p.buffer,u,I).slice(),triangles:new Uint8Array(p.buffer,b,C).slice(),meshletCount:y};return l(f-l(0)),B}function s(e){var a=new Float32Array(t.exports.memory.buffer,e,12);return{centerX:a[0],centerY:a[1],centerZ:a[2],radius:a[3],coneApexX:a[4],coneApexY:a[5],coneApexZ:a[6],coneAxisX:a[7],coneAxisY:a[8],coneAxisZ:a[9],coneCutoff:a[10]}}return{ready:WebAssembly.instantiate(function(){for(var t=new Uint8Array(18682),a=0;a<18682;++a){var i="b9H79Tebbbe95x9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gruuuuuuub9Gxuuuuuuuuuuuueu9Gxuuuuuuuuuuu99eu9GPuuuuuuuuuuuuu99b9Gouuuuuub9GluuuubiXCdilvorwDoqooqkbiibeilve9Weiiviebeoweuecj:Pdkr;Zeqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeY9TW79O9V9Wt9F9I919P29K9nW79O2Wt7S2W94bd39TW79O9V9Wt9F9I919P29K9nW79O2Wt79t9W9Ht9P9H2bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7bD39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bkE9TW79O9V9Wt9F9J9V9T9W91tW9t9W9OWVW9c9V919U9K7bxL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbml79IV9RbPDwebcekdHOq:m:ceCdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek;x8JDPue99eux99due99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:qjjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;01jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;01jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;01jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;01jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;01jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;01jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:qjjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;01jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:qjjjbhYamcuaLcK2alcjjjjd0Ecbyd;01jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;01jjbHjjjjbbgCBd:WwamcoBd;8waq:Zhhdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaEahNhhamcuaLcltalcFFFFd0Ecbyd;01jjbHjjjjbbg8PBd:0wamcrBd;8wcba8Pa8AaCaLz:djjjb8AJFFuuh8MJFFuuh8NJFFuuhydnalci6mbJFFuuhya8AhsaLhAJFFuuh8NJFFuuh8MinascwfIdbgEa8Ma8MaE9EEh8MasclfIdbgEa8Na8NaE9EEh8NasIdbgEayayaE9EEhyascKfhsaAcufgAmbkkah:rhEamaocetgscuaocu9kEcbyd;01jjbHjjjjbbgCBd:4wdndnaoal9nmbaihsalhAinaCasydbcetfcFFi87ebasclfhsaAcufgAmbxdkkaCcFeasz:qjjjb8AkaEJbbbZNh8JcuhIdnalci6mbcbhAJFFuuhEa8AhscuhIinascwfIdba8M:tghahNasIdbay:tghahNasclfIdba8N:tghahNMM:rghaEaIcuSahaE9DVgXEhEaAaIaXEhIascKfhsaLaAcefgA9hmbkkamczfcbcjwz:qjjjb8Aamcwf9cb83ibam9cb83iba8JaxNh8RJbbjZak:th8Lcbh8SJbbbbhRJbbbbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8Ycbh8ZcbhPinJbbbbhEdna8STmbJbbjZa8S:Z:vhEkJbbbbhhdna8Ya8YNa8Wa8WNa8Xa8XNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8VaENh8Ka8UaENh8EaRaENh5aIhLdndndndndna8SaPVTmbamydwg80Tmea8YahNh8Fa8XahNhaa8WahNhgaeamydbcdtfh81cbh3JFFuuhEcvhQcuhLindnaza81a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgXcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaXcdtfydbgXceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaXcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaQ9kmba8AaKcK2fgXIdwa8K:tghahNaXIdba5:tghahNaXIdla8E:tghahNMM:ra8J:va8LNJbbjZMJ9VO:d86JbbjZaXIdCa8FNaXIdxagNaaaXIdzNMMakN:tghahJ9VO:d869DENghaEasaQ6ahaE9DVgXEhEaKaLaXEhLasaQaXEhQkaAclfhAavcufgvmbkka3cefg3a809hmbkkaLcu9hmekama8KUd:ODama8EUd:KDama5Ud:GDamcuBd:qDamcFFF;7rBdjDa8Pcba8AaYamc:GDfamc:qDfamcjDfz:ejjjbamyd:qDhLdndnaxJbbbb9ETmba8SaD6mbaLcuSmeceh3amIdjDa8R9EmixdkaLcu9hmekdna8STmbabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;41jjbH:bjjjbbazc98fhzxbkkcbh3a8Saq9pmbamydwaCaiaLcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna8ZTmbcbhAamczfhXinamczfaAcdtfaXydbgQBdbaXclfhXaAaYaQfRbbTfhAa8Zcufg8ZmbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh8ZinamcjDfasfcFFF;7rBdbasclfgscz9hmbka8Zcdth80dnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhQcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaQaXEhQaAclfhAavcufgvmbkaQcuSmba8AaQcK2fgAIdwa8M:tgEaENaAIdbay:tgEaENaAIdla8N:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaQBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfa80fhQcbhscbhAindnamc:GDfasfydbgXcuSmbaQaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa8Zfg8ZTmbJFFuuhhcuhKamczfhsa8ZhvcuhQina8AasydbgXcK2fgAIdwa8M:tgEaENaAIdbay:tgEaENaAIdla8N:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaQ6mbaAaQ9hmeaEah9DTmekaEhhaAhQaXhKkasclfhsavcufgvmbkaKcuSmbaKhLkdnamaiaLcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbhRJbbbbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YkcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgQhAdnaQTmbdninasydbaLSmeasclfhsaAcufgATmdxbkkasaKaQcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaLcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaLfce86bba8Ya8FMh8Ya8Xa5Mh8Xa8Wa8EMh8Wa8Va8KMh8Va8UahMh8UaRaEMhRamydxh8Sxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtciVBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtciVBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark;yddvue99dninabaecitfgrydlgwcl6mednawciGgDci9hmbabaecitfhbcbhecehqindnaiabydbgDfRbbmbcbhqadaDcK2fgkIdwalIdw:tgxaxNakIdbalIdb:tgxaxNakIdlalIdl:tgxaxNMM:rgxaoIdb9DTmbaoaxUdbavaDBdbarydlhwkabcwfhbaecefgeawcd46mbkaqceGTmdarawciGBdlskdnabcbawcd4gwalaDcdtfIdbarIdb:tgxJbbbb9FEgkaw7aecefgwfgecitfydlabakawfgwcitfydlVci0mbaraDBdlkabawadaialavaoz:ejjjbax:laoIdb9Fmbkkkjlevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbabydbhqdnaxydbgkTmbaoaqcdtfhxakhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkabaqakfBdbabydxhxab9cb83dwababydlaxci2fBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk:zPrHue99eue99eue99eu8Jjjjjbc;W;Gb9Rgx8KjjjjbdndnalmbcbhmxekcbhPaxc:m;Gbfcbc;Kbz:qjjjb8Aaxcualci9UgscltascjjjjiGEcbyd;01jjbHjjjjbbgzBd:m9GaxceBd;S9GaxcuascK2gHcKfalcpFFFe0Ecbyd;01jjbHjjjjbbgOBd:q9GaxcdBd;S9Gdnalci6gAmbarcd4hCascdthXaOhQazhLinavaiaPcx2fgrydbaC2cdtfhKavarcwfydbaC2cdtfhYavarclfydbaC2cdtfh8AcbhraLhEinaQarfgmaKarfg3Idbg5a8Aarfg8EIdbg8Fa5a8F9DEg5UdbamaYarfgaIdbg8Fa5a8Fa59DEg8FUdbamcxfgma3Idbg5a8EIdbgha5ah9EEg5UdbamaaIdbgha5aha59EEg5UdbaEa8Fa5MJbbbZNUdbaEaXfhEarclfgrcx9hmbkaQcKfhQaLclfhLaPcefgPas9hmbkkaOaHfgr9cb83dbarczf9cb83dbarcwf9cb83dbaxcuascx2gralc:bjjjl0Ecbyd;01jjbHjjjjbbgCBdN9GaxciBd;S9GascdthgazarfhvaChHazhLcbhPinaxcbcj;Gbz:qjjjbhEaPas2cdthadnaAmbaLhrash3inaEarydbgmc8F91cjjjj94Vam7gmcQ4cx2fg8Ea8EydwcefBdwaEamcd4cFrGcx2fg8Ea8EydbcefBdbaEamcx4cFrGcx2fgmamydlcefBdlarclfhra3cufg3mbkkazaafh8AaCaafhXcbhmcbh3cbh8EcbhainaEamfgrydbhQara3BdbarcwfgKydbhYaKaaBdbarclfgrydbhKara8EBdbaQa3fh3aYaafhaaKa8Efh8Eamcxfgmcj;Gb9hmbkdnaAmbcbhravhminamarBdbamclfhmasarcefgr9hmbkaAmbavhrashminaEa8Aarydbg3cdtfydbg8Ec8F91a8E7cd4cFrGcx2fg8Ea8Eydbg8EcefBdbaXa8Ecdtfa3BdbarclfhramcufgmmbkaHhrashminaEa8Aarydbg3cdtfydbg8Ec8F91a8E7cx4cFrGcx2fg8Ea8Eydlg8EcefBdlava8Ecdtfa3BdbarclfhramcufgmmbkavhrashminaEa8Aarydbg3cdtfydbg8Ec8F91cjjjj94Va8E7cQ4cx2fg8Ea8Eydwg8EcefBdwaXa8Ecdtfa3BdbarclfhramcufgmmbkkaHagfhHaLagfhLaPcefgPci9hmbkaEaocetgrcuaocu9kEcbyd;01jjbHjjjjbbgKBd:y9GaEclBd;S9Gdndnaoal9nmbaihralhminaKarydbcetfcFFi87ebarclfhramcufgmmbxdkkaKcFearz:qjjjb8AkcbhmaEascbyd;01jjbHjjjjbbg8ABd:C9GaOaCaCascdtfaCascitfa8AascbazaKaiawaDaqakz:hjjjbcbh8Ednalci6gambcbh8Ea8Ahrash3ina8EarRbbfh8Earcefhra3cufg3mbkkaEcwf9cb83ibaE9cb83ibalawc9:fgrfcufar9UhrasaDfcufaD9Uh3dnaambara3ara30EhYcbhra8Ehacbhmincbh3dnarTmba8AarfRbbceSh3kamaEaiaCydbcx2fgQydbaQclfydbaQcwfydbaKabaeadamawaqa3a3ce7a8EaY9nVaaamfaY6VGz:fjjjbfhmaCclfhCaaa8AarfRbb9Rhaasarcefgr9hmbkaEydxTmbabamcltfgraE8Pib83dbarcwfaEcwf8Pib83dbamcefhmkczhrinarc98SmeaEc:m;Gbfarfydbcbyd;41jjbH:bjjjbbarc98fhrxbkkaxc;W;Gbf8Kjjjjbamk;LXDXue99lue99iul9:eur99lu8Jjjjjbc;qb9RgP8Kjjjjbdndnaoc8Y9imbalaeavawaDaqaxz1jjjbxekaxhsaxhzdnavax0gHmbdnavTmbcbhOaehzavhAinawaDazydbcx2fgCcwfydbcetfgX8VebhQawaCclfydbcetfgL8VebhKawaCydbcetfgC8VebhYaXce87ebaLce87ebaCce87ebaOaKcs4aYcs4faQcs4ffhOazclfhzaAcufgAmbkaehzavhAinawaDazydbcx2fgCcwfydbcetfcFFi87ebawaCclfydbcetfcFFi87ebawaCydbcetfcFFi87ebazclfhzaAcufgAmbkcehzaqhsaOaq0mekalce86bbalcefcbavcufz:qjjjb8AxekaPaiBdxaPadBdwaPaeBdlavakaqci9UgCakaCak6EaHEgK9Rh8AaxaK9RhEaKcufh3aKceth5aKcdtgCc98fh8EavcitgOaC9Rarfc98fh8FascufhaavcufhharaOfhgJbbjZas:Y:vh8JaravcdtgYfc94fh8KcbazceakaxSEg8Lcdtg8M9Rh8NJFFuuhycuh8PcbhIcbh8RinaPclfa8RcdtfydbhQaPc8WfcKfcb8Pd:y1jjbg8S83ibaPc8Wfczfcb8Pd:q1jjbgR83ibaPc8Wfcwfcb8Pd11jjbg8U83ibaPcb8Pdj1jjbg8V83i8WaPczfcKfa8S83ibaPczfczfaR83ibaPczfcwfa8U83ibaPa8V83izaQaYfh8WcbhXinabaQaXcdtgLfydbcK2fhAcbhzinaPc8WfazfgCaAazfgOIdbg8XaCIdbg8Ya8Xa8Y9DEUdbaCczfgCaOcxfIdbg8XaCIdbg8Ya8Xa8Y9EEUdbazclfgzcx9hmbkaPIdnaPId8W:tg8ZaPId9iaPIdU:tg80Nh81aba8WaXcu7cdtfydbcK2fhAcbhzaPId80hBaPId9eh83inaPczfazfgCaAazfgOIdbg8XaCIdbg8Ya8Xa8Y9DEUdbaCczfgCaOcxfIdbg8XaCIdbg8Ya8Xa8Y9EEUdbazclfgzcx9hmbkaraLfgza83aB:tg8Xa80Na8Za8XNa81MMUdbazaYfaPId8KaPIdC:tg8XaPIdyaPIdK:tg8YNaPIdaaPIdz:tg8Za8XNa8Za8YNMMUdbaXcefgXav9hmbkcbhUdnaHmbcbhAaQhzaghCavhXinawaDazydbcx2fgOcwfydbcetfgL8Vebh8WawaOclfydbcetfg858VebhUawaOydbcetfgO8Vebh86aLce87eba85ce87ebaOce87ebaCaAaUcs4a86cs4fa8Wcs4ffgABdbazclfhzaCclfhCaXcufgXmbkavhCinawaDaQydbcx2fgzcwfydbcetfcFFi87ebawazclfydbcetfcFFi87ebawazydbcetfcFFi87ebaQclfhQaCcufgCmbkaghUkdndndndndndndndndndna5av0mba5ax0meavaK6mda3a8A9pmDcehLa8AhXaUTmlxrka3ah9pmwa5ax9nmdxlkdnavavaK9UgzaK29RazaE20mba3a8A9pmwaUTh87ceh85a8AhLxvka3ah6mixrka3ah9pmokcbhLahhXaUmikJFFuuh8XcbhQa3hzindnazcefgCaK6mbaLavaC9RgOaK6GmbarazcdtfIdbg8YaC:YNa8Kavaz9RcdtfIdbg8ZaO:YNMg80a8X9Embdndna8JaOaaf:YNg81:lJbbb9p9DTmba81:OhAxekcjjjj94hAka8ZasaA2aO9R:YNh8Zdndna8Jazasf:YNg81:lJbbb9p9DTmba81:OhOxekcjjjj94hOkamasaO2aC9R:Ya8YNa8ZMNa80Mg8Ya8Xa8Ya8X9DgOEh8XaCaQaOEhQkaza8LfgzaX6mbxlkkaUTh87cbh85ahhLkJFFuuh8XcbhQa8AhCa8FhAa8EhOaKhzindnazazaK9UgXaK29RaXaE20mbdna85TmbaCaCaK9UgXaK29RaXaE20mekaraOfIdbg8Yaz:YNaAIdbg8ZaC:YNMg80a8X9EmbazhXaCh8Wdna87mbaUaOfydbgXh8Wkdndna8Ja8Waaf:YNg81:lJbbb9p9DTmba81:Oh86xekcjjjj94h86ka8Zasa862a8W9R:YNh8Zdndna8JaXaaf:YNg81:lJbbb9p9DTmba81:Oh8Wxekcjjjj94h8Wkamasa8W2aX9R:Ya8YNa8ZMNa80Mg8Ya8Xa8Ya8X9DgXEh8XazaQaXEhQkaCa8L9RhCaAa8NfhAaOa8MfhOaza8LfgzcufaL6mbxdkkJFFuuh8XcbhQa8AhCa8FhAa8EhOaKhzindnazaK6mbaLaCaK6GmbaraOfIdbg8Yaz:YNaAIdbg8ZaC:YNMg80a8X9Embdndna8JaUaOfydbg8Waaf:YNg81:lJbbb9p9DTmba81:Oh85xekcjjjj94h85kamasa852a8W9R:Yg81a8YNa8Za81NMNa80Mg8Ya8Xa8Ya8X9Dg8WEh8XazaQa8WEhQkaCa8L9RhCaAa8NfhAaOa8MfhOaza8LfgzcufaX6mbkkaQTmba8Xay9DTmba8XhyaQhIa8Rh8Pka8Rcefg8Rci9hmbkdna8Pcb9ombalaeavawaDaqaxz1jjjbxekaravcdtg8WfhLdnaITmbaPclfa8PcdtfydbhzaIhCinaLazydbfcb86bbazclfhzaCcufgCmbkkdnavaI9nmbaPclfa8PcdtfydbaIcdtfhzavaI9RhCinaLazydbfce86bbazclfhzaCcufgCmbkkcbhYindnaYa8PSmbcbhzaraPclfaYcdtfydbgKa8Wz:pjjjbhCavhXaIhOinaKaOazaLaCydbgQfRbbgAEcdtfaQBdbaCclfhCaOaAfhOazaA9RcefhzaXcufgXmbkkaYcefgYci9hmbkabaeadaialaIaocefgCarawaDaqakaxamz:hjjjbabaeaIcdtgzfadazfaiazfalaIfavaI9RaCarawaDaqakaxamz:hjjjbkaPc;qbf8Kjjjjbk1iePudnadTmbavci9UgrcufhwcbhDindndndnadaD9RaoaDaofad0EgqTmbcbhkaeaDcdtfgxhmaqhPinaialamydbcx2fgscwfydbcetfgz8VebhHaiasclfydbcetfgO8VebhAaiasydbcetfgs8VebhCazce87ebaOce87ebasce87ebakaAcs4aCcs4faHcs4ffhkamclfhmaPcufgPmbkaqhsinaialaxydbcx2fgmcwfydbcetfcFFi87ebaiamclfydbcetfcFFi87ebaiamydbcetfcFFi87ebaxclfhxascufgsmbkakav0mekabaDfgxce86bbaxcefcbaqcufz:qjjjb8AxekabaDfgxce86bbaxcefcbawz:qjjjb8AarhqkaqaDfgDad6mbkkk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz:kjjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz:kjjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:qjjjb8Aarc;Gbfcbavz:qjjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqc:G1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:jjjjbarcj8Wf8Kjjjjbk:Reeeu8Jjjjjbca9Rgo8Kjjjjbab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbdnadTmbaocbBd3ao9cb83iwao9cb83ibaoaeadaialaoc3falEavcbalEcrz:kjjjbabao8Pib83dbabao8Piw83dwkaocaf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:qjjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:tjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:qjjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:pjjjb8AalcjPf8Kjjjjbk9teiucbcbyd;81jjbgeabcifc98GfgbBd;81jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;81jjbgeabcrfc94GfgbBd;81jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;81jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;81jjbfgdBd;81jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk:nedbcjwktFFuuFFuuFFuubbbbFFuFFFuFFFuFbbbbbbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;0wkxebbbdbbbjNbb".charCodeAt(a);t[a]=i>96?i-97:i>64?i-39:i+4}var n=0;for(a=0;a<18682;++a)t[n++]=t[a]<60?e[t[a]]:64*(t[a]-60)+t[++a];return t.buffer.slice(0,n)}(),{}).then(function(e){(t=e.instance).exports.__wasm_call_ctors()}),supported:!0,buildMeshlets:function(e,i,s,r,o,c){a(e.length%3==0),a(i instanceof Float32Array),a(i.length%s==0),a(s>=3),a(r>0&&r<=256),a(o>=1&&o<=512),c=c||0;var h=4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e);return n(t.exports.meshopt_buildMeshletsFlex,h,i,i.length/s,4*s,r,o,o,c,0)},buildMeshletsFlex:function(e,i,s,r,o,c,h,d){a(e.length%3==0),a(i instanceof Float32Array),a(i.length%s==0),a(s>=3),a(r>0&&r<=256),a(o>=1&&c<=512),a(o<=c),h=h||0,d=d||0;var _=4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e);return n(t.exports.meshopt_buildMeshletsFlex,_,i,i.length/s,4*s,r,o,c,h,d)},buildMeshletsSpatial:function(e,i,s,r,o,c,h){a(e.length%3==0),a(i instanceof Float32Array),a(i.length%s==0),a(s>=3),a(r>0&&r<=256),a(o>=1&&c<=512),a(o<=c),h=h||0;var d=4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e);return n(t.exports.meshopt_buildMeshletsSpatial,d,i,i.length/s,4*s,r,o,c,h)},extractMeshlet:function(t,e){return a(e>=0&&e<t.meshletCount),function(t,e){var a=t.meshlets[4*e+0],i=t.meshlets[4*e+1],n=t.meshlets[4*e+2],s=t.meshlets[4*e+3];return{vertices:t.vertices.subarray(a,a+n),triangles:t.triangles.subarray(i,i+3*s)}}(t,e)},computeClusterBounds:function(e,n,r){return a(e.length%3==0),a(e.length/3<=512),a(n instanceof Float32Array),a(n.length%r==0),a(r>=3),function(e,a,n,r){var o=t.exports.sbrk,c=o(48),h=o(e.byteLength),d=o(a.byteLength),_=new Uint8Array(t.exports.memory.buffer);_.set(i(e),h),_.set(i(a),d),t.exports.meshopt_computeClusterBounds(c,h,e.length,d,n,r);var l=s(c);return o(c-o(0)),l}(4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e),n,n.length/r,4*r)},computeMeshletBounds:function(e,n,r){return a(0!=e.meshletCount),a(n instanceof Float32Array),a(n.length%r==0),a(r>=3),function(e,a,n,r){var o=t.exports.sbrk,c=[],h=o(a.byteLength),d=o(e.vertices.byteLength),_=o(e.triangles.byteLength),l=o(48),f=new Uint8Array(t.exports.memory.buffer);f.set(i(a),h),f.set(i(e.vertices),d),f.set(i(e.triangles),_);for(var u=0;u<e.meshletCount;++u){var b=e.meshlets[4*u+0],g=e.meshlets[4*u+0+1],m=e.meshlets[4*u+0+3];t.exports.meshopt_computeMeshletBounds(l,d+4*b,_+g,m,h,n,r),c.push(s(l))}return o(h-o(0)),c}(e,n,n.length/r,4*r)},computeSphereBounds:function(e,n,r,o){return a(e instanceof Float32Array),a(e.length%n==0),a(n>=3),a(!r||r instanceof Float32Array),a(!r||r.length%o==0),a(!r||o>=1),a(!r||e.length/n==r.length/o),o=o||0,function(e,a,n,r,o){var c=t.exports.sbrk,h=c(48),d=c(e.byteLength),_=r?c(r.byteLength):0,l=new Uint8Array(t.exports.memory.buffer);l.set(i(e),d),r&&l.set(i(r),_),t.exports.meshopt_computeSphereBounds(h,d,a,n,_,r?o:0);var f=s(h);return c(h-c(0)),f}(e,e.length/n,4*n,r,4*o)}}}();De.ready?.then(()=>{});const Le=65535;function qe(t){return t>=0?1:-1}function Oe(t,e,a,i,n){const s=1/(Math.abs(a)+Math.abs(i)+Math.abs(n));let r=a*s,o=n*s;if(i<0){const t=Math.abs(r);r=(1-Math.abs(o))*qe(r),o=(1-t)*qe(o)}t[e]=r,t[e+1]=o}function Xe(t,e,a,i){const n=new Float32Array(2);for(let s=0;s<a;s++){const a=3*s,r=i[a],o=i[a+1];Oe(n,0,r,i[a+2],o);const c=.5*n[0]+.5,h=.5*n[1]+.5,d=65535&Math.floor(c*Le)|(65535&Math.floor(h*Le))<<16;t[e+s]=d>>>0}}function Ke(t,e,a,i){const n=new Float32Array(2);for(let s=0;s<a;s++){const a=4*s,r=i[a],o=i[a+1],c=i[a+2],h=i[a+3];Oe(n,0,r,c,o);const d=.5*n[0]+.5,_=.5*n[1]+.5,l=(32767&Math.floor(32767*d))<<1|(65535&Math.floor(_*Le))<<16|(h>=0?1:0);t[e+s]=l>>>0}}const We={[Ve]:4294967295,[Ne]:[0,0],[Re]:0,[Me]:0,[Se]:0,[Pe]:[0,0],[Te]:0};{const t=new Uint32Array(1);Xe(t,0,1,[0,0,1]),We[Me]=t[0]}{const t=new Uint32Array(1);Ke(t,0,1,[0,0,1,1]),We[Se]=t[0]}const Je=Object.freeze([Be,Me,Se,Ve,Ne,Re,Pe,Te]),Qe={};Je.forEach((t,e)=>{Qe[t]=e}),Object.freeze(Qe);const Ye={[Be]:3,[Me]:1,[Se]:1,[Ve]:1,[Ne]:2,[Re]:1,[Pe]:2,[Te]:1},Ge={[Me]:1,[Se]:2,[Ve]:4,[Ne]:8,[Re]:16,[Pe]:32,[Te]:64},He=we.from({bounds_box:ie.from(pt,6),address:mt,primitive_count:mt,vertex_count:mt,flags:mt}).pack();function $e(t,e,a,i){const n=a*i,s=new Uint32Array(t,4*e,n);for(let t=i;t<n;t+=i)for(let e=0;e<i;e++)if(s[t+e]!==s[e])return!1;return!0}function Ze(t){return _t(3*t,4)>>>2}function ta(t){const e=Math.round(255*t);return e<0?0:e>255?255:e}function ea(t,e,a){return t<e?e:t>a?a:t}function aa(t,e,a,i){const n=a.data,s=a.spec.itemSize;for(let a=0;a<i;a++){const i=e.readUint32();for(let e=0;e<s;e++)t[a*s+e]=n[i*s+e]}}function ia(t,e,a,i,n){const s=e.data;switch(i){case Be:for(let e=0;e<n;e++){const e=t.readUint32();for(let t=0;t<3;t++){const i=s[3*e+t];a.writeFloat32(i)}}break;case Me:{const i=new Float32Array(3*n);aa(i,t,e,n);const s=new Uint32Array(n);Xe(s,0,n,i),a.writeUint32Array(s,0,n)}break;case Se:{const i=new Float32Array(4*n);aa(i,t,e,n);const s=new Uint32Array(n);Ke(s,0,n,i),a.writeUint32Array(s,0,n)}break;case Ve:{const i=new Float32Array(3*n);aa(i,t,e,n);const s=new Uint32Array(n);!function(t,e,a,i){for(let e=0;e<a;e++){let a=3*e,n=ta(i[a]),s=ta(i[a+1]),r=ta(i[a+2]);t[0+e]=n|s<<8|r<<16}}(s,0,n,i),a.writeUint32Array(s,0,n)}break;case Re:{const i=new Float32Array(2*n);aa(i,t,e,n);const s=new Uint32Array(n);!function(t,e,a,i){for(let e=0;e<a;e++){let a=2*e,n=Math.round(65535*ea(i[a],0,1)),s=Math.round(65535*ea(i[a+1],0,1));t[0+e]=65535&n|(65535&s)<<16}}(s,0,n,i),a.writeUint32Array(s,0,n)}break;case Ne:{const i=new Float32Array(2*n);aa(i,t,e,n),a.writeFloat32Array(i,0,2*n)}break;case Pe:{const i=new Uint16Array(4*n);aa(i,t,e,n);for(let t=0;t<n;t++){const e=4*t,n=65535&i[e+0],s=65535&i[e+1],r=65535&i[e+2],o=65535&i[e+3];a.writeUint32(n|s<<16),a.writeUint32(r|o<<16)}}break;case Te:{const i=new Float32Array(4*n);aa(i,t,e,n);for(let t=0;t<n;t++){const e=4*t;let n=Math.max(0,Math.min(255,Math.round(255*i[e+0]))),s=Math.max(0,Math.min(255,Math.round(255*i[e+1]))),r=Math.max(0,Math.min(255,Math.round(255*i[e+2]))),o=Math.max(0,Math.min(255,Math.round(255*i[e+3])));const c=255-(n+s+r+o);if(0!==c){let t=0,e=n;s>e&&(e=s,t=1),r>e&&(e=r,t=2),o>e&&(e=o,t=3);const a=Math.max(0,Math.min(255,e+c));0===t?n=a:1===t?s=a:2===t?r=a:o=a}a.writeUint32(255&n|(255&s)<<8|(255&r)<<16|(255&o)<<24)}}break;default:throw new Error(`Unrecognized attribute attribute '${i}'`)}}function na(t,e,a){const i=Ge[t];return(void 0!==i&&0!==(e&i)?1:a)*Ye[t]}function sa(t,e,a){const i=Qe[t];if("number"!=typeof i)throw new Error(`Unrecognized ordered attribute '${t}'`);let n=0;for(let t=0;t<i;t++)n+=na(Je[t],e,a);return n}const ra={};globalThis.meshlet_debug=ra;const oa=new ArrayBuffer(0),ca=Je.length,ha=new Uint32Array(ca),da=new Uint8Array(ca),_a=Qe[Te];class la{#B=oa;#M=new DataView(oa);get data_buffer(){return this.#B}set data_buffer(t){this.#B=t,this.#M=new DataView(this.#B)}#S=oa;#N=new DataView(oa);get metadata_buffer(){return this.#S}set metadata_buffer(t){this.#S=t,this.#N=new DataView(this.#S)}#R=0;#V=0;get count(){return this.#R}set count(t){this.#R=t}get primitive_count(){return this.#V}hash(){const t=this.#S;return F(this.#R,I(t,0,t.byteLength))}equals(t){return this.#R===t.#R&&C(this.#S,0,t.#S,0,t.#S.byteLength)&&C(this.#B,0,t.#B,0,t.#B.byteLength)}compress(){const t=U(),e=k.fromArrayBuffer(this.#S);e.endianness=t;const a=this.#B,i=k.fromArrayBuffer(a);i.endianness=t;const n=k.fromEndianness(t);for(let t=0;t<this.#R;t++){e.position=He.size*t;const s=Ue(e,He),r=n.position,o=Ze(s.primitive_count);i.position=s.address<<2,k.copyBytes(i,n,4*o);const c=i.position>>>2,h=s.vertex_count,d=s.flags;let _=d,l=c;for(let t=0;t<ca;t++){const e=Je[t],i=Ge[e];ha[t]=l,da[t]=void 0!==i&&0===(d&i)&&$e(a,l,h,Ye[e])?1:0,l+=na(e,d,h)}const f=0===(d&Ge[Te])&&0===da[_a];i.position=ha[_a]<<2;const u=f||0!==i.readUint32();for(let t=0;t<ca;t++){const e=Je[t],a=Ge[e],s=e===Me||e===Se;i.position=ha[t]<<2;const r=Ye[e];if(1!==da[t]||u&&s){const t=0!==(d&a)?1:h;k.copyBytes(i,n,t*r*4)}else _|=a,k.copyBytes(i,n,4*r)}s.flags=_,s.address=r>>>2,e.position=He.size*t,Ie(s,e,He)}n.trim();const s=n.data;return this.#B=s,a.byteLength-s.byteLength}optimize(){}read_header(t){const e=k.fromArrayBuffer(this.#S);return e.endianness=U(),e.position=He.size*t,Ue(e,He)}read_meshlet(t){const e=this.read_header(t),a=3*e.primitive_count,i=new Uint32Array(a),n=k.fromArrayBuffer(this.#B);n.endianness=U();const s=e.address<<2;n.position=s,n.readUint8Array(i,0,a);const r=new Float32Array(3*e.vertex_count),o=4*Ze(e.primitive_count);return n.position=s+o+4*sa(Be,e.flags,e.vertex_count),n.readFloat32Array(r,0,3*e.vertex_count),{header:e,attribute_index:i,attribute_position:r}}#P(t){const e=new R(ct.get([E.Uint32,E.Uint32,E.Uint32,E.Uint32])),a=U(),i=new k;i.endianness=a,t.ensureIndex(),function(t,e,a,i,n,s,r=64,o=64){const c=i===a.length?a:Array.isArray(a)?a.slice(0,i):a.subarray(0,i),h=De.buildMeshlets(c,s,3,r,o,0);t.setCapacity(t.length+h.meshletCount);for(let a=0;a<h.meshletCount;a++){const i=h.meshlets[4*a],n=h.meshlets[4*a+1],s=h.meshlets[4*a+2],r=h.meshlets[4*a+3],o=e.position>>>2,c=o+s;t.writeRow(t.length,[o,c,s,r]),t.length++,e.writeUint32Array(h.vertices,i,s),e.writeUint32Array(h.triangles,n,3*r)}}(e,i,t.index.data,t.getIndexCount(),t.getVertexCount(),t.getAttribute(Be).data,128,128);const n=e.length,s=k.fromEndianness(a),r=k.fromEndianness(a);t.ensureNormals(),t.ensureTangents();const o=t.bounding_box;let c=0;for(let a=0;a<n;a++){const[n,h,d,_]=e.readRow(a);c+=_;const l={bounds_box:o,address:r.position>>>2,vertex_count:d,primitive_count:_,flags:0};i.position=4*h;const f=3*_;{let t=0,e=0;for(let a=0;a<f;a++)t|=i.readUint32()<<8*e,e++,e>=4&&(r.writeUint32(t),t=0,e=0);e>0&&r.writeUint32(t)}const u=Ze(_);r.position=4*(l.address+u);const b=r.position;for(const e of Je){const a=sa(e,l.flags,d);if(r.position=b+4*a,void 0===t.getAttribute(e)){const t=We[e];if(void 0===t)throw new Error(`No default for attribute '${e}'`);switch(l.flags|=Ge[e],e){case Me:case Se:case Ve:r.writeUint32(t);break;case Ne:r.writeFloat32Array(t,0,t.length);break;case Re:r.writeUint32(t);break;case Pe:r.writeUint32Array(t,0,t.length);break;case Te:r.writeUint32(t);break;default:throw new Error(`Unsupported attribute default ${e}`)}continue}i.position=4*n;const s=r.position;ia(i,t.getAttribute(e),r,e,d);const o=r.position-s;ra[e]=(ra[e]||0)+o}Ie(l,s,He)}this.#R=n,this.#V=c,s.trim(),this.metadata_buffer=s.data,r.trim(),this.data_buffer=r.data,this.build_bounds()}build_bounds(){const t=k.fromArrayBuffer(this.#S);t.endianness=U();const e=new Float32Array(384),a=k.fromArrayBuffer(this.#B);a.endianness=U();for(let i=0;i<this.#R;i++){t.position=i*He.size;const n=Ue(t,He),s=n.vertex_count,r=_t(3*n.primitive_count,4),o=sa(Be,n.flags,s);a.position=r+4*(n.address+o),a.readFloat32Array(e,0,3*s),dt(n.bounds_box,e,3*s),t.position=i*He.size,Ie(n,t,He)}}build(t){this.#P(t),this.optimize()}}la.prototype.isMeshletBatch=!0;let fa=0;class ua{id=fa++;name="";bounding_box=new Float32Array(6);bounding_sphere=new Float32Array(4);primitive_count=0;getIndexCount(){return 3*this.primitive_count}meshlets=new la;bvh=new ArrayBuffer;hash(){return this.meshlets.hash()}equals(t){return this.meshlets.equals(t.meshlets)}}ua.prototype.isMeshletGeometry=!0,ua.typeName="MeshletGeometry";class ba{klass=null;version=0;initialize(...t){}finalize(){}announce(t,e){}serialize(t,e){}deserialize(t,e){}}ba.prototype.isBinaryClassSerializationAdapter=!0;const ga=4294967295;function ma(t,e,a,i,n,s){const r=i-t,o=s-a;return 2*((n-e)*(r+o)+o*r)}const pa=ga,ya=10,wa=Math.floor(107374182.375);class va{__data_buffer=new ArrayBuffer(5120);get data_buffer(){return this.__data_buffer}set data_buffer(t){this.__data_buffer=t,this.__data_float32=new Float32Array(this.__data_buffer),this.__data_uint32=new Uint32Array(this.__data_buffer),this.__capacity=Math.floor(t.byteLength/40)}__data_float32=new Float32Array(this.__data_buffer);get data_float32(){return this.__data_float32}__data_uint32=new Uint32Array(this.__data_buffer);__capacity=128;__size=0;__free=[];__free_pointer=0;__root=pa;get root(){return this.__root}set root(t){this.__root=t}get size(){return this.__size}get node_capacity(){return this.__capacity}set node_capacity(t){if(this.__size>t)throw new Error(`Can't shrink capacity to ${t}, because it's below occupancy(${this.__size}).`);this.__set_capacity(t)}__grow_capacity(){if(this.__capacity>=wa)throw new Error("Can not grow capacity, already at maximum platform limit");let t=Math.ceil(r(1.2*this.__capacity,this.__capacity+64));t>wa&&(t=wa),this.__set_capacity(t)}__set_capacity(t){if(this.__capacity===t)return;const e=this.__data_uint32,a=new ArrayBuffer(40*t);this.__data_buffer=a,this.__data_float32=new Float32Array(a),this.__data_uint32=new Uint32Array(a),this.__size>0&&y(e.buffer,e.byteOffset,a,0,Math.min(40*this.__size,a.byteLength)),this.__capacity=t}trim(){this.__capacity>this.__size&&this.__set_capacity(this.__size)}allocate_linear(t){this.node_capacity=t,this.__size=t}allocate_node(){let t;const e=this.__free_pointer;if(e>0){const a=e-1;t=this.__free[a],this.__free_pointer=a}else t=this.__size,t>=this.__capacity&&this.__grow_capacity(),this.__size++;const a=ya*t,i=this.__data_float32;i[a]=Number.POSITIVE_INFINITY,i[a+1]=Number.POSITIVE_INFINITY,i[a+2]=Number.POSITIVE_INFINITY,i[a+3]=Number.NEGATIVE_INFINITY,i[a+4]=Number.NEGATIVE_INFINITY,i[a+5]=Number.NEGATIVE_INFINITY;const n=this.__data_uint32;return n[a+6]=pa,n[a+7]=pa,n[a+8]=pa,n[a+9]=0,t}release_node(t){this.__free[this.__free_pointer++]=t}node_is_leaf(t){return this.__data_uint32[ya*t+7]===pa}node_get_user_data(t){return this.__data_uint32[ya*t+8]}node_set_user_data(t,e){this.__data_uint32[ya*t+8]=e}node_get_child1(t){return this.__data_uint32[ya*t+7]}node_set_child1(t,e){this.__data_uint32[ya*t+7]=e}node_get_child2(t){return this.__data_uint32[ya*t+8]}node_set_child2(t,e){this.__data_uint32[ya*t+8]=e}node_get_parent(t){return this.__data_uint32[ya*t+6]}node_set_parent(t,e){this.__data_uint32[ya*t+6]=e}node_get_height(t){return this.__data_uint32[ya*t+9]}node_set_height(t,e){this.__data_uint32[ya*t+9]=e}node_get_aabb(t,e){const a=ya*t,i=this.__data_float32;e[0]=i[a],e[1]=i[a+1],e[2]=i[a+2],e[3]=i[a+3],e[4]=i[a+4],e[5]=i[a+5]}node_set_aabb(t,e){const a=ya*t,i=this.__data_float32;i[a]=e[0],i[a+1]=e[1],i[a+2]=e[2],i[a+3]=e[3],i[a+4]=e[4],i[a+5]=e[5]}node_move_aabb(t,e){this.node_set_aabb(t,e);const a=this.__data_uint32[ya*t+6];a!==pa&&this.bubble_up_refit(a)}node_set_aabb_primitive(t,e,a,i,n,s,r){const o=ya*t,c=this.__data_float32;c[o]=e,c[o+1]=a,c[o+2]=i,c[o+3]=n,c[o+4]=s,c[o+5]=r}node_get_surface_area(t){const e=ya*t,a=this.__data_float32;return ma(a[e],a[e+1],a[e+2],a[e+3],a[e+4],a[e+5])}node_get_combined_surface_area(t,e){const a=ya*t,i=ya*e,n=this.__data_float32;return ma(o(n[a],n[i]),o(n[a+1],n[i+1]),o(n[a+2],n[i+2]),r(n[a+3],n[i+3]),r(n[a+4],n[i+4]),r(n[a+5],n[i+5]))}node_set_combined_aabb(t,e,a){const i=ya*e,n=ya*a,s=ya*t,r=this.__data_float32;c(r,s,r,i,r,n)}insert_leaf(t){let e=this.__data_uint32;if(this.__root===pa)return this.__root=t,void(e[t*ya+6]=pa);let a=this.__root;for(;!1===this.node_is_leaf(a);){const i=a*ya,n=e[i+7],s=e[i+8],r=this.node_get_surface_area(a),o=this.node_get_combined_surface_area(a,t),c=2*o,h=2*(o-r);let d,_;if(this.node_is_leaf(n))d=this.node_get_combined_surface_area(t,n)+h;else{const e=this.node_get_surface_area(n);d=this.node_get_combined_surface_area(t,n)-e+h}if(this.node_is_leaf(s))_=this.node_get_combined_surface_area(t,s)+h;else{const e=this.node_get_surface_area(s);_=this.node_get_combined_surface_area(t,s)-e+h}if(c<d&&c<_)break;a=d<_?n:s}const i=a,n=e[i*ya+6],s=this.allocate_node();e=this.__data_uint32,e[s*ya+6]=n,this.node_set_combined_aabb(s,t,i),e[s*ya+9]=e[i*ya+9]+1,n!==pa?e[n*ya+7]===i?e[n*ya+7]=s:e[n*ya+8]=s:this.__root=s,e[s*ya+7]=i,e[s*ya+8]=t,e[i*ya+6]=s,e[t*ya+6]=s,this.bubble_up_update(s)}bubble_up_refit(t){let e=t;const a=this.__data_uint32;do{const t=e*ya,i=a[t+7],n=a[t+8];this.node_set_combined_aabb(e,i,n),e=a[t+6]}while(e!==pa)}bubble_up_update(t){let e=t;const a=this.__data_uint32;for(;e!==pa;){e=this.balance_rotate(e);const t=e*ya,i=a[t+7],n=a[t+8];a[t+9]=1+r(a[i*ya+9],a[n*ya+9]),this.node_set_combined_aabb(e,i,n),e=a[t+6]}}remove_leaf(t){if(t===this.__root)return void(this.__root=pa);const e=this.__data_uint32,a=e[t*ya+6],i=e[a*ya+6];let n;const s=e[a*ya+7];n=s===t?e[a*ya+8]:s,i!==pa?(e[i*ya+7]===a?e[i*ya+7]=n:e[i*ya+8]=n,e[n*ya+6]=i,this.release_node(a),this.bubble_up_update(i)):(this.__root=n,e[n*ya+6]=pa,this.release_node(a))}balance_height(t){const e=this.__data_uint32;if(this.node_is_leaf(t)||e[t*ya+9]<2)return t;const a=e[t*ya+7],i=e[t*ya+8],n=e[i*ya+9]-e[a*ya+9];if(n>1){const n=e[i*ya+7],s=e[i*ya+8];e[i*ya+7]=t;const o=e[t*ya+6];return e[i*ya+6]=o,e[t*ya+6]=i,o!==pa?e[o*ya+7]===t?e[o*ya+7]=i:e[o*ya+8]=i:this.__root=i,e[n*ya+9]>e[s*ya+9]?(e[i*ya+8]=n,e[t*ya+8]=s,e[s*ya+6]=t,this.node_set_combined_aabb(t,a,s),this.node_set_combined_aabb(i,t,n),e[t*ya+9]=1+r(e[a*ya+9],e[s*ya+9]),e[i*ya+9]=1+r(e[t*ya+9],e[n*ya+9])):(e[i*ya+8]=s,e[t*ya+8]=n,e[n*ya+6]=t,this.node_set_combined_aabb(t,a,n),this.node_set_combined_aabb(i,t,s),e[t*ya+9]=1+r(e[a*ya+9],e[n*ya+9]),e[i*ya+9]=1+r(e[t*ya+9],e[s*ya+9])),i}if(n<-1){const n=e[a*ya+7],s=e[a*ya+8];e[a*ya+7]=t;const o=e[t*ya+6];return e[a*ya+6]=o,e[t*ya+6]=a,o!==pa?e[o*ya+7]===t?e[o*ya+7]=a:e[o*ya+8]=a:this.__root=a,e[n*ya+9]>e[s*ya+9]?(e[a*ya+8]=n,e[t*ya+7]=s,e[s*ya+6]=t,this.node_set_combined_aabb(t,i,s),this.node_set_combined_aabb(a,t,n),e[t*ya+9]=1+r(e[i*ya+9],e[s*ya+9]),e[a*ya+9]=1+r(e[t*ya+9],e[n*ya+9])):(e[a*ya+8]=s,e[t*ya+7]=n,e[n*ya+6]=t,this.node_set_combined_aabb(t,i,n),this.node_set_combined_aabb(a,t,s),e[t*ya+9]=1+r(e[i*ya+9],e[n*ya+9]),e[a*ya+9]=1+r(e[t*ya+9],e[s*ya+9])),a}return t}balance_rotate(t){const e=this.__data_uint32,a=t*ya;if(this.node_is_leaf(t)||e[a+9]<2)return t;const i=e[a+7],n=e[a+8],s=this.node_is_leaf(i),o=this.node_is_leaf(n);let c=0,h=0,d=pa,_=pa,l=pa,f=pa;if(!s){const t=this.node_get_surface_area(i);d=e[i*ya+7],_=e[i*ya+8];const a=t-this.node_get_combined_surface_area(n,_);a>c&&(c=a,h=1);const s=t-this.node_get_combined_surface_area(d,n);s>c&&(c=s,h=2)}if(!o){const t=this.node_get_surface_area(n);l=e[n*ya+7],f=e[n*ya+8];const a=t-this.node_get_combined_surface_area(i,f);a>c&&(c=a,h=3);const s=t-this.node_get_combined_surface_area(l,i);s>c&&(c=s,h=4)}if(0===h)return this.balance_height(t);switch(h){case 1:e[a+8]=d,e[i*ya+7]=n,e[d*ya+6]=t,e[n*ya+6]=i,this.node_set_combined_aabb(i,n,_),e[i*ya+9]=1+r(e[n*ya+9],e[_*ya+9]);break;case 2:e[a+8]=_,e[i*ya+8]=n,e[_*ya+6]=t,e[n*ya+6]=i,this.node_set_combined_aabb(i,d,n),e[i*ya+9]=1+r(e[d*ya+9],e[n*ya+9]);break;case 3:e[a+7]=l,e[n*ya+7]=i,e[l*ya+6]=t,e[i*ya+6]=n,this.node_set_combined_aabb(n,i,f),e[n*ya+9]=1+r(e[i*ya+9],e[f*ya+9]);break;case 4:e[a+7]=f,e[n*ya+8]=i,e[f*ya+6]=t,e[i*ya+6]=n,this.node_set_combined_aabb(n,l,i),e[n*ya+9]=1+r(e[l*ya+9],e[i*ya+9])}return e[a+9]=1+r(e[e[a+7]*ya+9],e[e[a+8]*ya+9]),t}node_assign_children(t,e,a){this.node_set_combined_aabb(t,e,a),this.node_assign_children_only(t,e,a)}node_assign_children_only(t,e,a){this.node_set_parent(e,t),this.node_set_parent(a,t),this.node_set_child1(t,e),this.node_set_child2(t,a),this.node_set_height(t,1+Math.max(this.node_get_height(e),this.node_get_height(a)))}release_all(){this.__root=pa,this.__size=0,this.__free_pointer=0}traverse(t,e){let a=0;const i=[],n=this.__root;n!==pa&&(i[a++]=n);const s=this.__data_uint32;for(;a>0;){a--;const n=i[a];t.call(e,n,this);const r=n*ya,o=s[r+7],c=s[r+8];o!==pa&&(i[a++]=c,i[a++]=o)}}collect_nodes_all(t,e){let a=e;return this.traverse(e=>{t[a++]=e}),a-e}__move_node_links(t,e){const a=this.__data_uint32,i=t*ya,n=a[i+7],s=a[i+8];n!==pa&&(a[n*ya+6]=e,a[s*ya+6]=e);const r=a[i+6];r!==pa&&(a[r*ya+7]===t?a[r*ya+7]=e:a[r*ya+8]=e)}swap_nodes(t,e){const a=this.__data_uint32,n=t*ya,s=e*ya;return a[n+6]!==e&&a[s+6]!==t&&(this.__move_node_links(t,e),this.__move_node_links(e,t),i(a,n,this.__free,this.__free_pointer,ya),i(a,s,a,n,ya),i(this.__free,this.__free_pointer,a,s,ya),this.__root===t?this.__root=e:this.__root===e&&(this.__root=t),!0)}}va.prototype.isBVH=!0;const Aa=new ArrayBuffer(9280),xa=new Float32Array(Aa,0,1536),ka=new Float32Array(Aa,6144,256),za=new Float32Array(Aa,7168,256),ja=new Uint32Array(Aa,8192,256),Ua=new Uint32Array(Aa,9216,16);function Ea(t,e,a){if(1===_e(a))return e[D(a)];let i=ja[a],n=a&~i;const s=t.allocate_node(),r=Ea(t,e,i),o=Ea(t,e,n);return t.node_assign_children(s,r,o),s}function Fa(t,e,a){if(e===pa)return;if(t.node_is_leaf(e))return;const i=t.node_get_child1(e),n=t.node_get_child2(e);let s=0;if(i!==pa&&(Ua[s++]=i),n!==pa&&(Ua[s++]=n),0!==s){for(;s<a;){let e=-1,a=0;for(let i=0;i<s;i++){const n=Ua[i];if(t.node_is_leaf(n))continue;const s=t.node_get_surface_area(n);s>a&&(a=s,e=i)}if(-1===e)break;const i=Ua[e],n=t.node_get_child1(i),r=t.node_get_child2(i);Ua[e]=n,Ua[s++]=r,t.release_node(i)}s<=2||function(t,e,a,i){const n=t.data_float32,s=(1<<i)-1;for(let t=1;t<=s;t++){let e,i,s,r,o,c;const h=!(t&t-1);if(h){const h=a[D(t)]*ya;e=n[h],i=n[h+1],s=n[h+2],r=n[h+3],o=n[h+4],c=n[h+5]}else{const a=t&-t,n=6*a,h=6*(t^a);e=Math.min(xa[n],xa[h]),i=Math.min(xa[n+1],xa[h+1]),s=Math.min(xa[n+2],xa[h+2]),r=Math.max(xa[n+3],xa[h+3]),o=Math.max(xa[n+4],xa[h+4]),c=Math.max(xa[n+5],xa[h+5])}const d=6*t;xa[d]=e,xa[d+1]=i,xa[d+2]=s,xa[d+3]=r,xa[d+4]=o,xa[d+5]=c;const _=r-e,l=o-i,f=c-s,u=2*(_*l+l*f+f*_);ka[t]=u,h&&(za[t]=1*u)}for(let t=2;t<=i;t++)for(let e=1;e<=s;e++){if(_e(e)!==t)continue;let a=Infinity,i=0;const n=e-1&e;let s=-n&e;do{const t=za[s]+za[e^s];t<a&&(a=t,i=s),s=s-n&e}while(0!==s);const r=1.2*ka[e]+a;za[e]=r,ja[e]=i}!function(t,e,a,i){let n=ja[i],s=i&~n;t.node_assign_children(e,Ea(t,a,n),Ea(t,a,s))}(t,e,a,(1<<i)-1)}(t,e,Ua,s)}}function Ia(t,e=t.root,a=7){if(e===pa)return;if(t.node_is_leaf(e))return;let i=e,n=0,s=t.node_get_child1(i);if(s===pa&&(s=t.node_get_child2(i)),s===pa)return;const r=Math.ceil(Math.log2(a));for(;;){if(2===n){const i=t.node_get_child1(s),n=t.node_get_child2(s);t.node_set_height(s,1+Math.max(t.node_get_height(i),t.node_get_height(n))),(s===e||t.node_get_height(s)>=r)&&Fa(t,s,a)}if(t.node_is_leaf(s)){const e=i;n=t.node_get_child1(e)===s?1:2,i=s,s=e}else if(2===n){if(s===e)break;i=s;const a=t.node_get_parent(s);if(n=t.node_get_child1(a)===s?1:2,s===e)break;s=a}else if(1===n){const e=t.node_get_child2(s);i=s,e===pa?(n=2,s=t.node_get_parent(s)):(n=0,s=e)}else if(0===n){const e=t.node_get_child1(s),a=t.node_get_child2(s);if(e!==pa)n=0,i=s,s=e;else if(a!==pa)n=0,i=s,s=a;else{const e=t.node_get_child1(i);t.release_node(s),e===s?(t.node_set_child1(i,pa),i=pa,n=1):(t.node_set_child2(i,pa),i=pa,n=2),s=i}}}}function Ca(t,e,a){let i=t;return i>e&&(i=e),i>a&&(i=a),i}function Ba(t,e,a,i,n,s){const r=3*i,o=3*n,c=3*s,h=a[r],d=a[r+1],_=a[r+2],l=a[o],f=a[o+1],u=a[o+2],b=a[c],g=a[c+1],m=a[c+2];t[e]=Ca(h,l,b),t[e+1]=Ca(d,f,g),t[e+2]=Ca(_,u,m),t[e+3]=de(h,l,b),t[e+4]=de(d,f,g),t[e+5]=de(_,u,m)}function Ma(t,e,a){if(0===e||0===t.count)return new ArrayBuffer(0);const n=new va;if(function({bvh:t,meshlets:e,bounding_box:a,primitive_count:i,optimization:n=1}){const s=e.count;if(t.release_all(),0===s)return t.root=pa,void t.trim();const o=new Uint32Array(s);let c=0;for(let t=0;t<s;t++){const i=e.read_header(t);c+=i.primitive_count;const n=i.bounds_box,s=.5*(n[0]+n[3]),r=.5*(n[1]+n[4]),h=.5*(n[2]+n[5]);o[t]=f(s,r,h,a)}if(0===c)return t.root=pa,void t.trim();const h=c+r(0,c-1);t.allocate_linear(h);const d=new Uint32Array(s),_=r(0,s-1);{const a=h-_,i=new Uint32Array(a);let n=0;const r=new Uint32Array(128);for(let t=0;t<a;t++){const e=h-1-t;i[t]=e}const c=new Uint32Array(s);for(let t=0;t<s;t++)c[t]=t;c.sort((t,e)=>o[t]-o[e]);const l=new Float32Array(6);for(let a=0;a<s;a++){const s=c[a],o=e.read_meshlet(s),h=o.header,_=o.attribute_index,f=o.attribute_position,u=h.primitive_count;for(let e=0;e<u;e++){const a=3*e;Ba(l,0,f,_[a+0],_[a+1],_[a+2]);const o=(16777215&s)<<8|255&e,c=i[n++];t.node_set_aabb(c,l),t.node_set_user_data(c,o),t.node_set_child1(c,pa),r[e]=c}let b=u;for(;b>1;){let e=0,a=0;for(;a+1<b;){const s=r[a++],o=r[a++],c=i[n++];t.node_assign_children(c,o,s),r[e++]=c}for(;a<b;)r[e++]=r[a++];b=e}d[a]=r[0]}}{let e=s,a=0;const i=_,n=new Uint32Array(i);for(let t=0;t<i;t++){const e=i-1-t;n[t]=e}for(;e>1;){let i=0,s=0;for(;s+1<e;){const e=d[s++],r=d[s++],o=n[a++];t.node_assign_children(o,r,e),d[i++]=o}for(;s<e;)d[i++]=d[s++];e=i}const r=d[0];t.node_set_parent(r,pa),t.root=r}for(let e=0;e<n;e++)Ia(t);t.trim()}({bvh:n,meshlets:t,bounding_box:a,primitive_count:e}),0===n.size)return new ArrayBuffer(0);const s=new ArrayBuffer(32*n.size);return function(t,e,a,n,s){const r=new Uint32Array(a,0),o=new Uint32Array(t,0);for(let t=0;t<s;t++){const e=10*t,a=8*t;i(r,e,o,a,6),o[a+6]=r[e+7],o[a+7]=r[e+8]}}(s,0,n.data_buffer,0,n.size),s}const Sa=new class extends ba{version=0;klass=ua;serialize_bvh=!0;serialize(t,e){t.writeUint32(e.primitive_count),t.writeFloat32Array(e.bounding_box,0,6),t.writeFloat32Array(e.bounding_sphere,0,4),t.writeUTF8String(e.name);const a=e.meshlets;t.writeUint32(a.count),t.writeUint32(a.metadata_buffer.byteLength),t.writeBytes(new Uint8Array(a.metadata_buffer),0,a.metadata_buffer.byteLength),t.writeUint32(a.data_buffer.byteLength),t.writeBytes(new Uint8Array(a.data_buffer),0,a.data_buffer.byteLength),this.serialize_bvh?(t.writeUint32(e.bvh.byteLength),t.writeBytes(new Uint8Array(e.bvh),0,e.bvh.byteLength)):t.writeUint32(0)}deserialize(t,e){e.primitive_count=t.readUint32(),t.readFloat32Array(e.bounding_box,0,6),t.readFloat32Array(e.bounding_sphere,0,4),e.name=t.readUTF8String(),e.meshlets.count=t.readUint32();const a=t.readUint32(),i=new Uint8Array(a);t.readBytes(i,0,a),e.meshlets.metadata_buffer=i.buffer;const n=t.readUint32(),s=new Uint8Array(n);t.readBytes(s,0,n),e.meshlets.data_buffer=s.buffer;const r=t.readUint32();if(0===r&&e.primitive_count>0)e.bvh=Ma(e.meshlets,e.primitive_count,e.bounding_box);else{const a=new Uint8Array(r);t.readBytes(a,0,r),e.bvh=a.buffer}}};function Na(t,e,a,i,n,s,r,o){const c=3*o;let h,d,_;void 0!==r?(h=r[c],d=r[c+1],_=r[c+2]):(h=c,d=c+1,_=c+2);const l=h*n+i,f=d*n+i,u=_*n+i;let b=a[l],g=a[l+1],m=a[l+2],p=a[f],y=a[f+1],w=a[f+2],v=a[u],A=a[u+1],x=a[u+2];t[e]=b,t[e+1]=g,t[e+2]=m,t[e+3]=p,t[e+4]=y,t[e+5]=w,t[e+6]=v,t[e+7]=A,t[e+8]=x}function Ra(t,e,a,i,n,s){const r=t.getLeafAddress(e);Ba(t.__data_float32,r,a,i,n,s),t.__data_uint32[r+6]=e}const Va=new Float64Array(9),Pa=[E.Uint64,E.Int64];function Ta(t){return 1===t?"":", true"}function Da(t,e){return 0===t?"p":"p + "+t*e}function La(t,e){return 0===e?t:t+" + "+e}function qa(t){return 1===t?"component":"component * "+t}class Oa{type=E.Float32;offset=0;components=0;stride=0;data_view=null;read=null;write=null;read_component=null;write_component=null;#T=null;#D=null;#L=null;#q=null;constructor(t,e,a){if(-1!==Pa.indexOf(t))throw new Error("type '"+t+"' is not supported by BinaryDataLayer: its DataView accessors are BigInt-valued, and no result contract for that exists yet");this.type=t,this.offset=e,this.components=a}get byte_size(){return T[this.type]*this.components}bind(t,e){e===this.stride&&null!==this.#T||(this.stride=e,this.#T=function(t,e,a,i){const n=V[t],s=T[t],r=Ta(s),o=["const p = id * "+i+" + "+e+";"];for(let t=0;t<a;t++)o.push("result["+La("result_offset",t)+"] = data_view."+n+"("+Da(t,s)+r+");");return nt.INSTANCE.compile({args:["data_view"],code:"return function (result, result_offset, id) {\n"+o.join("\n")+"\n};"})}(this.type,this.offset,this.components,e),this.#D=function(t,e,a,i){const n=P[t],s=T[t],r=Ta(s),o=["const p = id * "+i+" + "+e+";"];for(let t=0;t<a;t++)o.push("data_view."+n+"("+Da(t,s)+", value["+La("value_offset",t)+"]"+r+");");return nt.INSTANCE.compile({args:["data_view"],code:"return function (id, value, value_offset) {\n"+o.join("\n")+"\n};"})}(this.type,this.offset,this.components,e),this.#L=function(t,e,a){const i=V[t],n=T[t],s="id * "+a+" + "+e+" + "+qa(n);return nt.INSTANCE.compile({args:["data_view"],code:"return function (id, component) {\nreturn data_view."+i+"("+s+Ta(n)+");\n};"})}(this.type,this.offset,e),this.#q=function(t,e,a){const i=P[t],n=T[t],s="id * "+a+" + "+e+" + "+qa(n);return nt.INSTANCE.compile({args:["data_view"],code:"return function (id, component, value) {\ndata_view."+i+"("+s+", value"+Ta(n)+");\n};"})}(this.type,this.offset,e)),this.data_view=t,this.read=this.#T(t),this.write=this.#D(t),this.read_component=this.#L(t),this.write_component=this.#q(t)}}Oa.prototype.isBinaryDataLayer=!0;class Xa{#O;#X=[];#K=0;#W=0;#J=new ArrayBuffer(0);#Q=new Uint8Array(this.#J);#M=new DataView(this.#J);constructor(t){this.#O=t}get record_size(){return this.#K}get layers(){return this.#X}get capacity(){return this.#W}get byteSize(){return this.#W*this.#K}get data_view(){return this.#M}add_layer(t,e){const a=this.#K,i=new Oa(t,this.#K,e);return this.#X.push(i),this.#K+=i.byte_size,this.#Y(this.#W,a),i}ensure_capacity(t){t<=this.#W||this.#Y(t,this.#K)}sync_capacity(){this.ensure_capacity(this.#O.capacity)}trim(){const t=this.#O.size;t>=this.#W||this.#Y(t,this.#K)}swap(t,e){if(t===e)return;const a=this.#K;n(this.#Q,t*a,this.#Q,e*a,a)}copy_record(t,e,a){const i=this.#K,n=a*i;this.#Q.set(e.#Q.subarray(n,n+i),t*i)}record_equal(t,e){if(t===e)return!0;const a=this.#K,i=t*a,n=e*a,s=this.#Q;for(let t=0;t<a;t++)if(s[i+t]!==s[n+t])return!1;return!0}copy(t){if(this!==t){this.#X=[],this.#K=0,this.#W=0,this.#J=new ArrayBuffer(0),this.#Q=new Uint8Array(this.#J),this.#M=new DataView(this.#J);for(const e of t.layers)this.add_layer(e.type,e.components);this.ensure_capacity(t.capacity),this.#Q.set(t.#Q.subarray(0,t.capacity*t.record_size))}}#Y(t,e){const a=this.#K,i=this.#Q,n=this.#W;this.#J=new ArrayBuffer(t*a),this.#Q=new Uint8Array(this.#J),this.#M=new DataView(this.#J),this.#W=t;const s=Math.min(t,n);if(s>0&&e>0)if(e===a)this.#Q.set(i.subarray(0,s*a));else for(let t=0;t<s;t++)this.#Q.set(i.subarray(t*e,t*e+e),t*a);for(const t of this.#X)t.bind(this.#M,a)}}Xa.prototype.isBinaryDataBlock=!0;class Ka{__free=[];__free_pointer=0;__size=0;constructor(t,e=128,a=!1){this.__item_size=t,this.__data_buffer=B(w(e*t),a),this.__data_uint8=new Uint8Array(this.__data_buffer),this.__data_uint32=new Uint32Array(this.__data_buffer),this.__data_float32=new Float32Array(this.__data_buffer),this.data_view=new DataView(this.__data_buffer),this.__capacity=e,this.__occupancy=new fe(this.__capacity),this.__occupancy.preventShrink()}fromArrayBuffer(t,e=0){const a=Math.floor(t.byteLength/this.__item_size);this.__data_buffer=t,this.__data_uint8=new Uint8Array(t),this.__data_uint32=new Uint32Array(t),this.__data_float32=new Float32Array(t),this.data_view=new DataView(t),this.__capacity=a,this.__free_pointer=0,this.__size=e,this.__occupancy=new fe(a),this.__occupancy.preventShrink(),e>0&&this.__occupancy.setRange(0,e-1)}get arrayBuffer(){return this.__data_buffer}get item_size(){return this.__item_size}get size(){return this.__size}count(){return this.__size-this.__free_pointer}get byteSize(){return this.__capacity*this.__item_size}get capacity(){return this.__capacity}get data_uint32(){return this.__data_uint32}get data_float32(){return this.__data_float32}trim(){this.__set_capacity(this.__size)}element_address(t){return this.__item_size*t}element_word(t){return Math.floor(this.element_address(t)/4)}is_allocated(t){return!(t>=this.__size)&&this.__occupancy.get(t)}__set_capacity(t){if(this.__capacity===t)return;const e=this.__data_uint8,a=w(t*this.__item_size),n=new(0,this.__data_buffer.constructor)(a);this.__data_buffer=n,this.__data_uint8=new Uint8Array(n),this.__data_uint32=new Uint32Array(this.__data_buffer),this.__data_float32=new Float32Array(this.__data_buffer),this.data_view=new DataView(n),function(t,e){const a=e.length;a>=t.length?e.set(t,0):t.constructor===e.constructor?y(t.buffer,t.byteOffset,e.buffer,e.byteOffset,Math.min(t.byteLength,e.byteLength)):i(t,0,e,0,a)}(e,this.__data_uint8),this.__capacity=t}__grow_capacity(t){const e=Math.ceil(de(t,1.2*this.__capacity,this.__capacity+32));this.__set_capacity(e)}ensure_capacity(t){this.__capacity<t&&this.__grow_capacity(t)}allocate(){if(this.__free_pointer>0){this.__free_pointer--;const t=this.__free[this.__free_pointer];return this.__occupancy.set(t,!0),t}let t=this.__size;return this.__size++,this.__size>=this.__capacity&&this.__grow_capacity(this.__size),this.__occupancy.set(t,!0),t}allocate_continuous(t){const e=this.__size;return this.__size+=t,this.__size>=this.__capacity&&this.__grow_capacity(this.__size),t>0&&this.__occupancy.setRange(e,e+t-1),e}swap(t,e){if(t===e)return;const a=this.__item_size;n(this.__data_uint8,t*a,this.__data_uint8,e*a,a)}release(t){t===this.__size-1?(this.__size--,this.__occupancy.set(t,!1)):t>=this.__size||(this.__free[this.__free_pointer++]=t,this.__occupancy.set(t,!1))}clear_free_set(){this.__free_pointer=0,this.__size>0&&this.__occupancy.setRange(0,this.__size-1)}truncate(t){this.__size=t,this.__free_pointer=0,this.__occupancy.reset(),t>0&&this.__occupancy.setRange(0,t-1)}clear(){this.__size=0,this.__free_pointer=0,this.__occupancy.reset()}copy(t){this.__size=t.size,this.__item_size=t.item_size;const e=t.size*this.item_size,a=this.__data_buffer,i=t.__data_buffer;a.byteLength<e?this.fromArrayBuffer(i.slice(0),this.__size):y(i,0,a,0,e),this.__free_pointer=t.__free_pointer,this.__free=t.__free.slice(),this.__rebuild_occupancy_from_free()}__rebuild_occupancy_from_free(){this.__occupancy=new fe(Math.max(this.__capacity,this.__size)),this.__occupancy.preventShrink(),this.__size>0&&this.__occupancy.setRange(0,this.__size-1);const t=this.__free,e=this.__free_pointer;for(let a=0;a<e;a++)this.__occupancy.set(t[a],!1)}*[Symbol.iterator](){for(let t=0;t<this.__size;t++)!1!==this.is_allocated(t)&&(yield t)}}Ka.prototype.isBinaryElementPool=!0;const Wa=4294967295;function Ja(t,e,a){if(null===a)return null;const i=null===t?new Xa(e):t;return i.copy(a),i.sync_capacity(),i}class Qa{__vertex_pool=new Ka(28);__edge_pool=new Ka(28);__loop_pool=new Ka(28);__face_pool=new Ka(16);__vertex_data_block=null;__edge_data_block=null;__loop_data_block=null;__face_data_block=null;get byteSize(){let t=this.__loop_pool.byteSize+this.__vertex_pool.byteSize+this.__edge_pool.byteSize+this.__face_pool.byteSize;return null!==this.__vertex_data_block&&(t+=this.__vertex_data_block.byteSize),null!==this.__edge_data_block&&(t+=this.__edge_data_block.byteSize),null!==this.__loop_data_block&&(t+=this.__loop_data_block.byteSize),null!==this.__face_data_block&&(t+=this.__face_data_block.byteSize),t}trim(){this.__loop_pool.trim(),this.__vertex_pool.trim(),this.__edge_pool.trim(),this.__face_pool.trim(),null!==this.__vertex_data_block&&this.__vertex_data_block.trim(),null!==this.__edge_data_block&&this.__edge_data_block.trim(),null!==this.__loop_data_block&&this.__loop_data_block.trim(),null!==this.__face_data_block&&this.__face_data_block.trim()}get vertices(){return this.__vertex_pool}get edges(){return this.__edge_pool}get loops(){return this.__loop_pool}get faces(){return this.__face_pool}get vertex_data(){return this.__vertex_data_block}get edge_data(){return this.__edge_data_block}get loop_data(){return this.__loop_data_block}get face_data(){return this.__face_data_block}vertex_data_add_layer(t,e){null===this.__vertex_data_block&&(this.__vertex_data_block=new Xa(this.__vertex_pool));const a=this.__vertex_data_block.add_layer(t,e);return this.__vertex_data_block.sync_capacity(),a}edge_data_add_layer(t,e){null===this.__edge_data_block&&(this.__edge_data_block=new Xa(this.__edge_pool));const a=this.__edge_data_block.add_layer(t,e);return this.__edge_data_block.sync_capacity(),a}loop_data_add_layer(t,e){null===this.__loop_data_block&&(this.__loop_data_block=new Xa(this.__loop_pool));const a=this.__loop_data_block.add_layer(t,e);return this.__loop_data_block.sync_capacity(),a}face_data_add_layer(t,e){null===this.__face_data_block&&(this.__face_data_block=new Xa(this.__face_pool));const a=this.__face_data_block.add_layer(t,e);return this.__face_data_block.sync_capacity(),a}delete_vertex_data(){return null!==this.__vertex_data_block&&(this.__vertex_data_block=null,!0)}delete_edge_data(){return null!==this.__edge_data_block&&(this.__edge_data_block=null,!0)}delete_loop_data(){return null!==this.__loop_data_block&&(this.__loop_data_block=null,!0)}delete_face_data(){return null!==this.__face_data_block&&(this.__face_data_block=null,!0)}clear(){this.__vertex_pool.clear(),this.__edge_pool.clear(),this.__loop_pool.clear(),this.__face_pool.clear()}vertex_read_coordinate(t,e,a){const i=this.__vertex_pool,n=i.element_address(a)>>2;t[e]=i.data_float32[n],t[e+1]=i.data_float32[n+1],t[e+2]=i.data_float32[n+2]}vertex_write_coordinate(t,e,a){const i=this.__vertex_pool,n=i.element_address(t)>>2;i.data_float32[n]=e[a],i.data_float32[n+1]=e[a+1],i.data_float32[n+2]=e[a+2]}vertex_read_normal(t,e,a){const i=this.__vertex_pool,n=i.element_address(a)+12>>2;t[e]=i.data_float32[n],t[e+1]=i.data_float32[n+1],t[e+2]=i.data_float32[n+2]}vertex_write_normal(t,e,a){const i=this.__vertex_pool,n=i.element_address(t)+12>>2;i.data_float32[n]=e[a],i.data_float32[n+1]=e[a+1],i.data_float32[n+2]=e[a+2]}vertex_read_edge(t){const e=this.__vertex_pool,a=e.element_address(t);return e.data_view.getUint32(a+24)}vertex_write_edge(t,e){const a=this.__vertex_pool,i=a.element_address(t);a.data_view.setUint32(i+24,e)}edge_read_vertex1(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a)}edge_write_vertex1(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i,e)}edge_read_vertex2(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+4)}edge_write_vertex2(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+4,e)}edge_read_loop(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+8)}edge_write_loop(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+8,e)}edge_read_v1_disk_next(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+12)}edge_write_v1_disk_next(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+12,e)}edge_read_v1_disk_prev(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+16)}edge_write_v1_disk_prev(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+16,e)}edge_read_v2_disk_next(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+20)}edge_write_v2_disk_next(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+20,e)}edge_read_v2_disk_prev(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+24)}edge_write_v2_disk_prev(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+24,e)}vertex_create(){const t=this.__vertex_pool.allocate();return this.__vertex_data_block?.sync_capacity(),t}vertices_create_continuous(t){const e=this.__vertex_pool.allocate_continuous(t);return this.__vertex_data_block?.sync_capacity(),e}vertex_destroy(t){this.__vertex_pool.release(t)}edge_create(){const t=this.__edge_pool.allocate();return this.__edge_data_block?.sync_capacity(),t}edge_destroy(t){this.__edge_pool.release(t)}face_create(){const t=this.__face_pool.allocate();return this.__face_data_block?.sync_capacity(),t}faces_create_continuous(t){const e=this.__face_pool.allocate_continuous(t);return this.__face_data_block?.sync_capacity(),e}face_destroy(t){this.__face_pool.release(t)}loop_create(){const t=this.__loop_pool.allocate();return this.__loop_data_block?.sync_capacity(),this.loop_initialize(t),t}loop_destroy(t){this.__loop_pool.release(t)}loop_initialize(t){this.loop_write_radial_next(t,t),this.loop_write_radial_prev(t,t),this.loop_write_next(t,t),this.loop_write_prev(t,t)}loop_read_vertex(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a)}loop_write_vertex(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i,e)}loop_read_edge(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+4)}loop_write_edge(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+4,e)}loop_read_face(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+8)}loop_write_face(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+8,e)}loop_read_radial_next(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+12)}loop_write_radial_next(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+12,e)}loop_read_radial_prev(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+16)}loop_write_radial_prev(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+16,e)}loop_read_next(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+20)}loop_write_next(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+20,e)}loop_read_prev(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+24)}loop_write_prev(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+24,e)}face_read_loop(t){const e=this.__face_pool,a=e.element_address(t);return e.data_view.getUint32(a)}face_write_loop(t,e){const a=this.__face_pool,i=a.element_address(t);a.data_view.setUint32(i,e)}face_read_normal(t,e,a){const i=this.__face_pool,n=i.element_address(a)+4>>2;t[e]=i.data_float32[n],t[e+1]=i.data_float32[n+1],t[e+2]=i.data_float32[n+2]}face_write_normal(t,e,a){const i=this.__face_pool,n=i.element_address(t)+4>>2;i.data_float32[n]=e[a],i.data_float32[n+1]=e[a+1],i.data_float32[n+2]=e[a+2]}copy(t){this!==t&&(this.__vertex_pool.copy(t.vertices),this.__edge_pool.copy(t.edges),this.__loop_pool.copy(t.loops),this.__face_pool.copy(t.faces),this.__vertex_data_block=Ja(this.__vertex_data_block,this.__vertex_pool,t.vertex_data),this.__edge_data_block=Ja(this.__edge_data_block,this.__edge_pool,t.edge_data),this.__loop_data_block=Ja(this.__loop_data_block,this.__loop_pool,t.loop_data),this.__face_data_block=Ja(this.__face_data_block,this.__face_pool,t.face_data))}clone(){const t=new Qa;return t.copy(this),t}}function Ya(t,e,a){t.loop_write_edge(e,a);const i=t.edge_read_loop(a);if(i===Wa)t.edge_write_loop(a,e),t.loop_write_radial_next(e,e),t.loop_write_radial_prev(e,e);else{const a=t.loop_read_radial_prev(i);t.loop_write_radial_next(a,e),t.loop_write_radial_prev(e,a),t.loop_write_radial_next(e,i),t.loop_write_radial_prev(i,e)}}function Ga(t,e,a){const i=t.edge_read_vertex1(e)===a,n=t.vertex_read_edge(a);if(n===Wa)i?(t.edge_write_v1_disk_prev(e,e),t.edge_write_v1_disk_next(e,e)):(t.edge_write_v2_disk_prev(e,e),t.edge_write_v2_disk_next(e,e)),t.vertex_write_edge(a,e);else{const s=t.edge_read_vertex1(n)===a,r=s?t.edge_read_v1_disk_prev(n):t.edge_read_v2_disk_prev(n);i?(t.edge_write_v1_disk_prev(e,r),t.edge_write_v1_disk_next(e,n)):(t.edge_write_v2_disk_prev(e,r),t.edge_write_v2_disk_next(e,n)),t.edge_read_vertex1(r)===a?t.edge_write_v1_disk_next(r,e):t.edge_write_v2_disk_next(r,e),s?t.edge_write_v1_disk_prev(n,e):t.edge_write_v2_disk_prev(n,e)}}function Ha(t,e,a){const i=function(t,e,a){const i=t.vertex_read_edge(e);if(i===Wa)return Wa;let n=i;do{const i=t.edge_read_vertex1(n),s=t.edge_read_vertex2(n);if(i===e&&s===a||i===a&&s===e)return n;if(i===e)n=t.edge_read_v1_disk_next(n);else{if(s!==e)throw new Error("Invalid edge, not connected to first vertex");n=t.edge_read_v2_disk_next(n)}}while(n!==i);return Wa}(t,e,a);return i!==Wa?i:function(t,e,a){const i=t.edge_create();return t.edge_write_vertex1(i,e),t.edge_write_vertex2(i,a),t.edge_write_loop(i,Wa),Ga(t,i,e),e!==a&&Ga(t,i,a),i}(t,e,a)}function $a(t,e,a,i){t.clear();const n=a.length/3;t.vertices_create_continuous(n);for(let e=0;e<n;e++){const i=3*e,n=e;t.vertex_write_coordinate(n,a,i),t.vertex_write_edge(n,Wa)}const s=e.length/3;t.faces_create_continuous(s),t.loops.ensure_capacity(3*s),t.edges.ensure_capacity(1.6*s);for(let a=0;a<s;a++){const i=3*a,n=e[i],s=e[i+1],r=e[i+2],o=a,c=Ha(t,n,s),h=Ha(t,s,r),d=Ha(t,r,n),_=t.loop_create(),l=t.loop_create(),f=t.loop_create();t.loop_write_vertex(_,n),t.loop_write_face(_,o),t.loop_write_vertex(l,s),t.loop_write_face(l,o),t.loop_write_vertex(f,r),t.loop_write_face(f,o),Ya(t,_,c),Ya(t,l,h),Ya(t,f,d),t.loop_write_next(_,l),t.loop_write_prev(_,f),t.loop_write_next(l,f),t.loop_write_prev(l,_),t.loop_write_next(f,_),t.loop_write_prev(f,l),t.face_write_loop(o,_)}}function Za(t,e){const a=t.edge_read_loop(e);return a!==Wa&&t.loop_read_radial_next(a)===a}function ti(t,e,a){const i=t.edge_read_vertex1(e),n=t.edge_read_vertex2(e);return i===a?n:i}Qa.prototype.isBinaryTopology=!0;const ei=[],ai=[],ii="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(let t=0,e=64;t<e;++t)ei[t]=ii[t],ai[ii.charCodeAt(t)]=t;function ni(t){return ei[t>>18&63]+ei[t>>12&63]+ei[t>>6&63]+ei[63&t]}function si(t,e,a){const i=[];for(let n=e;n<a;n+=3){const e=(t[n]<<16&16711680)+(t[n+1]<<8&65280)+(255&t[n+2]);i.push(ni(e))}return i.join("")}ai["-".charCodeAt(0)]=62,ai["_".charCodeAt(0)]=63;const ri=16383;class oi{static encode(t){return function(t){const e=t.length,a=e%3,i=[],n=e-a;for(let e=0;e<n;e+=ri){const a=si(t,e,e+ri>n?n:e+ri);i.push(a)}if(1===a){const a=t[e-1];i.push(ei[a>>2]+ei[a<<4&63]+"==")}else if(2===a){const a=(t[e-2]<<8)+t[e-1];i.push(ei[a>>10]+ei[a>>4&63]+ei[a<<2&63]+"=")}return i.join("")}(new Uint8Array(t))}static decode(t){return function(t){let e;const a=function(t){const e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");let a=t.indexOf("=");return-1===a&&(a=e),[a,a===e?0:4-a%4]}(t),i=a[0],n=a[1],s=new Uint8Array(function(t,e){return 3*(t+e)/4-e}(i,n));let r=0;const o=n>0?i-4:i;let c=0;for(;c<o;c+=4){const a=t.charCodeAt(c),i=t.charCodeAt(c+1),n=t.charCodeAt(c+2),o=t.charCodeAt(c+3);e=ai[a]<<18|ai[i]<<12|ai[n]<<6|ai[o],s[r++]=e>>16&255,s[r++]=e>>8&255,s[r++]=255&e}if(2===n){const a=t.charCodeAt(c),i=t.charCodeAt(c+1);e=ai[a]<<2|ai[i]>>4,s[r++]=255&e}if(1===n){const a=t.charCodeAt(c),i=t.charCodeAt(c+1),n=t.charCodeAt(c+2);e=ai[a]<<10|ai[i]<<4|ai[n]>>2,s[r++]=e>>8&255,s[r++]=255&e}return s}(t).buffer}}const ci={[E.Uint8]:Uint8Array,[E.Uint16]:Uint16Array,[E.Uint32]:Uint32Array,[E.Uint64]:BigUint64Array,[E.Int8]:Int8Array,[E.Int16]:Int16Array,[E.Int32]:Int32Array,[E.Int64]:BigInt64Array,[E.Float16]:Float16Array,[E.Float32]:Float32Array,[E.Float64]:Float64Array};function hi(t){const e=Object.getPrototypeOf(t).constructor;switch(e){case Uint8Array:case Uint8ClampedArray:return E.Uint8;case Uint16Array:return E.Uint16;case Uint32Array:return E.Uint32;case Int8Array:return E.Int8;case Int16Array:return E.Int16;case Int32Array:return E.Int32;case Float16Array:return E.Float16;case Float32Array:return E.Float32;case Array:case Float64Array:return E.Float64;default:throw new Error(`unsupported constructor type ${e.name}`)}}function di(e,a){if(e===a)return!0;const i=e.length;if(i!==a.length)return!1;const n=e.constructor;if(n!==a.constructor)return!1;if(0===i)return!0;if(i<128)return t(e,a);const s=e.byteLength;if(s!==a.byteLength)return!1;const r=e.buffer,o=a.buffer,c=e.byteOffset,h=a.byteOffset;if(r===o&&c===h)return!0;let d=e,_=a;const l=n.BYTES_PER_ELEMENT,f=p(c,h,s),u="undefined"!=typeof Float16Array&&n===Float16Array||n===Float32Array||n===Float64Array;return!u&&l<4&&4===f?(d=new Uint32Array(r,c,s>>>2),_=new Uint32Array(o,h,s>>>2)):!u&&l<2&&2===f&&(d=new Uint16Array(r,c,s>>>1),_=new Uint16Array(o,h,s>>>1)),t(d,_)}function _i(t,e,a){return(e-t)*a+t}function li(t,e,a,i,n){return.5*(i-e+(2*e-5*a+4*i-n+(3*(a-i)+n-e)*t)*t)*t+a}function fi(t){const e=0|t;return ga-((t-e)*ga>>>0)^e}const ui=new Float64Array(2),bi=new Float64Array(1),gi=new Float64Array(2),mi=new Float64Array(1),pi=new Float64Array(18),yi=new Float64Array(9);class wi{version=0;constructor(t=[],e=1,a=0,i=0){if(!Number.isInteger(e)||e<0)throw new Error(`itemSize must be a non-negative integer, instead was ${e}`);if(!Number.isInteger(a)||a<0)throw new Error(`width must be a non-negative integer, instead was ${a}`);if(!Number.isInteger(i)||a<0)throw new Error(`height must be a non-negative integer, instead was ${i}`);if(void 0===t)throw new Error("data was undefined");if(t.length<a*i*e)throw new Error(`Buffer underflow, data.length(=${t.length}) is too small. Expected at least ${a*i*e}`);this.width=a,this.height=i,this.itemSize=e,this.data=t}sampleCatmullRomUV(t,e,a){const i=this.itemSize;for(let n=0;n<i;n++)a[n]=this.sampleChannelCatmullRomUV(t,e,n)}sampleChannelCatmullRomUV(t,e,a){const i=t*this.width-.5,n=e*this.height-.5;return this.sampleChannelCatmullRom(i,n,a)}sampleChannelCatmullRom(t,e,a){const i=gi;return i[0]=t,i[1]=e,this.sampleChannelCatmullRomArray(mi,0,i,0,a),mi[0]}sampleChannelCatmullRomArray(t,e,a,i,n){const s=a[i],r=a[i+1],o=Math.floor(s),c=Math.floor(r),h=s-o,d=r-c,_=h*(h*(1-.5*h)-.5),l=d*(d*(1-.5*d)-.5),f=h*(.5+h*(2-1.5*h)),u=d*(.5+d*(2-1.5*d)),b=h*h*(.5*h-.5),g=d*d*(.5*d-.5),m=1+h*h*(1.5*h-2.5)+f,p=1+d*d*(1.5*d-2.5)+u,y=o-1,w=c-1,v=o+2,A=c+2,x=o+f/m,k=c+u/p,z=pi,j=yi;z[0]=y,z[1]=w,z[2]=x,z[3]=w,z[4]=v,z[5]=w,z[6]=y,z[7]=k,z[8]=x,z[9]=k,z[10]=v,z[11]=k,z[12]=y,z[13]=A,z[14]=x,z[15]=A,z[16]=v,z[17]=A;for(let t=0;t<9;t++)this.sampleChannelBilinearArray(j,t,z,2*t,n);let U=0;U+=j[0]*_*l,U+=j[1]*m*l,U+=j[2]*b*l,U+=j[3]*_*p,U+=j[4]*m*p,U+=j[5]*b*p,U+=j[6]*_*g,U+=j[7]*m*g,U+=j[8]*b*g,t[e]=U}sampleBicubicUV(t,e,a){const i=this.itemSize;for(let n=0;n<i;n++)a[n]=this.sampleChannelBicubicUV(t,e,n)}sampleBicubic(t,e,a,i){const n=this.itemSize;for(let s=0;s<n;s++)a[s+i]=this.sampleChannelBicubic(t,e,s)}sampleChannelBicubicUV(t,e,a){const i=t*this.width,n=e*this.height;return this.sampleChannelBicubic(i-.5,n-.5,a)}sampleChannelBicubic(t,e,a){const i=this.itemSize,n=this.width,s=this.height,c=this.data,h=n*i,d=n-1,_=s-1,l=ea(t,0,d),f=ea(e,0,_),u=0|l,b=0|f,g=l-u,m=f-b,p=r(0,u-1),y=r(0,b-1),w=o(d,u+1),v=o(_,b+1),A=o(d,w+1),x=y*h+a,k=b*h+a,z=v*h+a,j=o(_,v+1)*h+a,U=p*i,E=u*i,F=w*i,I=A*i,C=c[x+U],B=c[x+E],M=c[x+F],S=c[x+I],N=c[k+U],R=c[k+E],V=c[k+F],P=c[k+I],T=c[z+U],D=c[z+E],L=c[z+F],q=c[z+I],O=c[j+U],X=c[j+E],K=c[j+F],W=c[j+I],J=li(g,C,B,M,S),Q=li(g,N,R,V,P),Y=li(g,T,D,L,q),G=li(g,O,X,K,W);return li(m,J,Q,Y,G)}sampleBilinearUV(t,e,a,i=0){const n=this.itemSize;for(let s=0;s<n;s++)a[s+i]=this.sampleChannelBilinearUV(t,e,s)}sampleBilinear(t,e,a,i=0){const n=this.itemSize;for(let s=0;s<n;s++)a[s+i]=this.sampleChannelBilinear(t,e,s)}sampleChannelBilinearUV(t,e,a){const i=t*this.width-.5,n=e*this.height-.5;return this.sampleChannelBilinear(i,n,a)}sampleChannelBilinear(t,e,a){const i=ui;return i[0]=t,i[1]=e,this.sampleChannelBilinearArray(bi,0,i,0,a),bi[0]}sampleChannelBilinearArray(t,e,a,i,n){const s=a[i],r=a[i+1],o=this.itemSize,c=this.width,h=c*o,d=this.height-1,_=ea(s,0,c-1),l=ea(r,0,d),f=_>>>0,u=l>>>0,b=u*h,g=f*o+n,m=b+g;let p,y;p=_===f?f:f+1,y=l===u?u:u+1;const w=this.data,v=w[m];if(f===p&&u===y)return void(t[e]=v);const A=_-f,x=l-u,k=p*o+n,z=y*h,j=z+g,U=z+k,E=w[b+k],F=w[j],I=w[U],C=_i(v,E,A),B=_i(F,I,A);t[e]=_i(C,B,x)}sampleNearestUV(t,e,a){const i=this.width,n=this.height,s=Math.round(t*i-.5),r=Math.round(e*n-.5);this.read(ea(s,0,i-1),ea(r,0,n-1),a)}readChannel(t,e,a){const i=(e*this.width+t)*this.itemSize+a;return this.data[i]}read(t,e,a){const i=this.width,n=this.itemSize,s=(e*i+t)*n;for(let t=0;t<n;t++)a[t]=this.data[s+t]}write(t,e,a){const i=this.width,n=this.itemSize,s=(e*i+t)*n;for(let t=0;t<n;t++)this.data[s+t]=a[t];this.version++}point2index(t,e){return t+e*this.width}index2point(t,e){const a=this.width,i=t%a,n=t/a|0;e.set(i,n)}copy(t,e,a,i,n,s,r){const o=Math.min(s,t.width-e,this.width-i),c=Math.min(r,t.height-a,this.height-n),h=this.itemSize,d=t.itemSize,_=Math.min(h,d),l=h*this.width,f=d*t.width,u=t.data,b=this.data;let g,m,p;for(m=0;m<c;m++){const t=(m+n)*l,s=(m+a)*f;for(g=0;g<o;g++){const a=t+(g+i)*h,n=s+(g+e)*d;for(p=0;p<_;p++)b[a+p]=u[n+p]}}this.version++}zeroFill(t,e,a,i){const n=ea(t,0,this.width),s=ea(e,0,this.height),r=ea(t+a,0,this.width),o=ea(e+i,0,this.height),c=this.data,h=this.itemSize,d=h*this.width,_=n*h,l=r*h;let f;for(f=s;f<o;f++){const t=f*d;c.fill(0,t+_,t+l)}this.version++}channelFill(t,e){const a=this.itemSize,i=this.data,n=i.length;for(let s=t;s<n;s+=a)i[s]=e;this.version++}fill(t,e,a,i,n){const s=this.width,r=this.height,o=ea(t,0,s),c=ea(e,0,r),h=ea(t+a,0,s),d=ea(e+i,0,r),_=this.data,l=this.itemSize,f=l*s;let u,b,g;for(u=c;u<d;u++){const t=u*f;for(b=o;b<h;b++){const e=t+b*l;for(g=0;g<l;g++)_[e+g]=n[g]}}this.version++}writeChannel(t,e,a,i){const n=(e*this.width+t)*this.itemSize+a;this.data[n]=i,this.version++}traverseCircle(t,e,a,i){let n,s;const r=0|t,o=0|e,c=a*a,h=Math.ceil(a);for(s=-h;s<=h;s++){const t=s*s;for(n=-h;n<=h;n++)n*n+t<=c&&i(r+n,o+s,this)}}resize(t,e,a=!0){const i=this.width,n=this.height;if(i===t&&n===e)return;const s=this.itemSize,r=t*e*s,c=this.data,h=new(function(t){if(t instanceof Int8Array)return Int8Array;if(t instanceof Int16Array)return Int16Array;if(t instanceof Int32Array)return Int32Array;if(t instanceof Uint8Array)return Uint8Array;if(t instanceof Uint8ClampedArray)return Uint8ClampedArray;if(t instanceof Uint16Array)return Uint16Array;if(t instanceof Uint32Array)return Uint32Array;if(t instanceof Float16Array)return Float16Array;if(t instanceof Float32Array)return Float32Array;if(t instanceof Float64Array)return Float64Array;if(Array.isArray(t))return Array;throw new TypeError("Unsupported array type")}(c))(r);if(a)if(t===i)h.set(c.subarray(0,Math.min(c.length,r)));else{const a=o(e,n),r=o(t,i);for(let e=0;e<a;e++)for(let a=0;a<r;a++){const n=(e*t+a)*s,r=(e*i+a)*s;for(let t=0;t<s;t++)h[n+t]=c[r+t]}}this.width=t,this.height=e,this.data=h,this.version++}computeByteSize(){let t;const e=this.data;return t=Array.isArray(e)?8*e.length:e.byteLength,t+280}equals(t){return null!=t&&(this===t||this.width===t.width&&this.height===t.height&&this.itemSize===t.itemSize&&di(this.data,t.data))}hash(){const t=this.itemSize,a=this.width,i=this.height,n=this.data;let s=((65535&a)<<16|65535&i)^t;const r=a*i*t;if(e(n))s^=I(n.buffer,n.byteOffset,n.byteLength);else for(let t=0;t<r;++t)s=(s<<5)-s+fi(n[t]);return s}clone(){let t;return t=Array.isArray(this.data)?this.data.slice():new(0,this.data.constructor)(this.data),new wi(t,this.itemSize,this.width,this.height)}toJSON(){const t=this.data,a=oi.encode(e(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t.buffer);return{height:this.height,width:this.width,itemSize:this.itemSize,type:hi(this.data),data:a}}fromJSON({height:t,width:e,itemSize:a,type:i,data:n}){const s=function(t){const e=ci[t];if(void 0===e)throw new Error(`Unsupported data type '${t}'`);return e}(i);if("string"==typeof n){const t=oi.decode(n);this.data=new s(t)}else{if(!Array.isArray(n))throw new Error("Unsupported data format");this.data=new s(n)}this.height=t,this.width=e,this.itemSize=a}static uint8clamped(t,e,a){const i=new Uint8ClampedArray(e*a*t);return new wi(i,t,e,a)}static uint8(t,e,a){const i=new Uint8Array(e*a*t);return new wi(i,t,e,a)}static uint16(t,e,a){const i=new Uint16Array(e*a*t);return new wi(i,t,e,a)}static uint32(t,e,a){const i=new Uint32Array(e*a*t);return new wi(i,t,e,a)}static int8(t,e,a){const i=new Int8Array(e*a*t);return new wi(i,t,e,a)}static int16(t,e,a){const i=new Int16Array(e*a*t);return new wi(i,t,e,a)}static int32(t,e,a){const i=new Int32Array(e*a*t);return new wi(i,t,e,a)}static float16(t,e,a){const i=new Float16Array(e*a*t);return new wi(i,t,e,a)}static float32(t,e,a){const i=new Float32Array(e*a*t);return new wi(i,t,e,a)}static float64(t,e,a){const i=new Float64Array(e*a*t);return new wi(i,t,e,a)}}function vi(t,e,a,i){const n=a[i],s=a[i+1],r=a[i+2];t[e]+=n,t[e+1]+=s,t[e+2]+=r}function Ai(t,e,a,i,n,s){!function(t,e,a,i,n,s,r,o){const c=n[s],h=n[s+1],d=n[s+2],_=r[o]-c,l=r[o+1]-h,f=r[o+2]-d,u=a[i]-c,b=a[i+1]-h,g=a[i+2]-d;t[e]=l*g-f*b,t[e+1]=f*u-_*g,t[e+2]=_*b-l*u}(t,e,s,3*a,s,3*i,s,3*n)}function xi(t,e,a){return t*t+e*e+a*a}function ki(t,e,a,i){const n=a[i],s=a[i+1],r=a[i+2],o=xi(n,s,r),c=0!==o?1/Math.sqrt(o):1;t[e]=n*c,t[e+1]=s*c,t[e+2]=r*c}wi.prototype.isSampler2D=!0,wi.typeName="Sampler2D";const zi=new Float64Array(3);function ji(t,e,a){const i=a.length;for(let n=0;n<i;n+=3){const i=a[n],s=a[n+1],r=a[n+2];Ai(zi,0,i,s,r,t),vi(e,3*i,zi,0),vi(e,3*s,zi,0),vi(e,3*r,zi,0)}!function(t,e=0,a=t.length-e){const i=e+a;for(let a=e;a<i;a+=3)ki(t,a,t,a)}(e)}function Ui(t,e){return r(2,t*e)}const Ei={build:function(t,e,a,i,n,s){const r=a.x,o=a.y,c=Ui(r,s),h=Ui(o,s),d=c-1,_=h-1;let l=0,f=0;const u=c*h,b=new Float32Array(3*u),g=new Float32Array(3*u),m=new Float32Array(2*u);let p,y;const w=a.y/n.y/_,v=a.x/n.x/d,A=e.y/n.y,x=e.x/n.x,k=n.x*i.x,z=n.y*i.y;let j,U,E;for(p=0;p<h;p++){const e=p*w+A;for(E=e*z,y=0;y<c;y++){const a=y*v+x;j=a*k,U=t.sampleChannelBicubicUV(a,e,0),b[l]=j,b[l+1]=U,b[l+2]=E,m[f]=a,m[f+1]=e,l+=3,f+=2}}l=0;const F=new(O(b.length/3))(d*_*6);for(p=0;p<_;p++)for(y=0;y<d;y++){const t=y+c*p,e=y+c*(p+1),a=y+1+c*(p+1),i=y+1+c*p;F[l]=t,F[l+1]=e,F[l+2]=i,F[l+3]=e,F[l+4]=a,F[l+5]=i,l+=6}return ji(b,g,F),{indices:F,vertices:b,normals:g,uvs:m}}};class Fi{name="";type=E.Float32;itemSize=1;normalized=!1;static from(t,e,a=!1,i=""){const n=new Fi;return n.fromJSON({name:i,type:t,itemSize:e,normalized:a}),n}static fromJSON(t){const e=new Fi;return e.fromJSON(t),e}fromJSON({name:t="",type:e,itemSize:a,normalized:i=!1}){this.name=t,this.type=e,this.itemSize=a,this.normalized=i}toJSON(){return{name:this.name,type:this.type,itemSize:this.itemSize,normalized:this.normalized}}toString(){let t="";return""!==this.name&&(t+=`${this.name}:`),t+=`${this.itemSize}x${st(E,this.type)??this.type}`,this.normalized&&(t+="-norm"),t}hash(){return et(this.name)}equals(t){return this.type===t.type&&this.itemSize===t.itemSize&&this.normalized===t.normalized&&this.name===t.name}copy(t){this.type=t.type,this.name=t.name,this.itemSize=t.itemSize,this.normalized=t.normalized}clone(){const t=new Fi;return t.copy(this),t}getByteSize(){return this.itemSize*T[this.type]}static byName(t,e){return t.name.localeCompare(e.name)}}Fi.prototype.isAttributeSpec=!0;class Ii{spec=new Fi;data;count=0;#G=0;get version(){return this.#G}set needsUpdate(t){t&&this.#G++}get name(){return this.spec.name}get itemSize(){return this.spec.itemSize}equals(t){return this.spec.equals(t.spec)&&this.count===t.count&&di(this.data,t.data)}hash(){return Z(this.spec.hash(),this.count,function(t,e,a,i=31){const n=o(a-e,1024);return function(t,e,a,i,n){let s=a;for(let r=e;r<a;r+=i)s=(s<<5)-s+n.call(void 0,t[r]);return s>>>0}(t,e,e+n,Math.max(1,Math.ceil(n/i)),fi)}(this.data,0,this.data.length))}copy(t){this.spec.copy(t.spec),this.count=t.count;const e=t.data.constructor;this.data=new e(t.data)}clone(){const t=new Ii;return t.copy(this),t}static from(t,e=1,a=""){const i=hi(t),n=new Ii;return n.spec.type=i,n.spec.name=a,n.spec.itemSize=e,n.count=t.length/e,n.data=t,n}get memory_usage_bytes(){let t=0;return void 0!==this.data&&null!==this.data&&(t=this.data.byteLength),t}}function Ci(t){return t*t}function Bi(t,e,a){let i=0;for(let n=0;n<a;n++)i+=t[n]*e[n];return i}Ii.prototype.isAttribute=!0;class Mi{constructor(t,e){const a=ci[e];if(void 0===a)throw new Error(`Unsupported type '${e}'`);this.size=t,this.type=e,this.data=new a(t*t)}get n(){return this.size}get length(){return this.size*this.size}get val(){return this.data}fill(t){this.data.fill(t)}subtract(t){this.subtractMatrices(this,t)}subtractMatrices(t,e){const a=this.size,i=a*a,n=t.data,s=e.data,r=this.data;for(let t=0;t<i;t++)r[t]=n[t]-s[t]}negate(){const t=this.data,e=t.length;for(let a=0;a<e;a++)t[a]=-t[a]}clear(){this.data.fill(0)}eye(){const t=this.size;for(let e=0;e<t;e++)this.data[e*(t+1)]=1}copy(t){this.data.set(t.data)}clone(){const t=new Mi(this.size,this.type);return t.copy(this),t}transpose(){const t=this.size;for(let e=0;e<t;e++)for(let a=e+1;a<t;a++){const t=this.getCellValue(a,e),i=this.getCellValue(e,a);this.setCellValue(a,e,i),this.setCellValue(e,a,t)}}fromArray(t){this.data.set(t)}toArray(t=new Array(this.length),e=0){return i(this.data,0,t,e,this.length),t}setCellValue(t,e,a){this.data[this.size*e+t]=a}getCellValue(t,e){return this.data[this.size*e+t]}readDiagonal(t){const e=this.size,a=this.data;for(let i=0;i<e;i++)t[i]=a[i*(e+1)]}}function Si(t,e,a,i,n){let s=0;for(let r=0;r<n;r++)s+=t[e+r]*a[i+r];return s}function Ni(t,e,a,i,n,s){for(let r=0;r<s;++r)t[e+r]+=a*i[n+r]}function Ri(t,e,a){if(0===e)a[0]=1,a[1]=0;else if(Math.abs(e)>Math.abs(t)){const i=t/e,n=1/Math.sqrt(1+i*i);a[0]=n*i,a[1]=n}else{const i=e/t,n=1/Math.sqrt(1+i*i);a[0]=n,a[1]=n*i}}function Vi(t,e,a,i,n,s){for(let r=0;r<s;++r){const s=t[e+r],o=t[a+r];t[e+r]=i*s+n*o,t[a+r]=i*o-n*s}}class Pi{constructor(t,e,a){this.S=e,this.membership=fe.fixedSize(e.size()),this.dim=t,this.members=new Int32Array(t+1),this.Q=new Mi(t,E.Float64),this.Q.eye(),this.R=new Mi(t,E.Float64),this.u=new Float64Array(t),this.w=new Float64Array(t),this.r=0,this.cs=new Float64Array(2),this.membership.set(a,!0),this.members[this.r]=a}dimension(){return this.dim}size(){return this.r+1}isMember(t){return this.membership.get(t)}anyMember(){return this.members[this.r]}globalIndex(t){return this.members[t]}ind(t,e){return t*this.dim+e}origin(){return this.members[this.r]}appendColumn(){const t=this.dim,e=this.u,a=this.Q.data,i=this.R.data,n=this.cs,s=this.r*t;for(let n=0;n<t;++n)i[s+n]=Si(a,n*t,e,0,t);for(let e=t-1;e>this.r;--e){Ri(i[s+e-1],i[s+e],n);const r=n[0],o=n[1];i[s+e-1]=r*i[s+e-1]+o*i[s+e],Vi(a,(e-1)*t,e*t,r,o,t)}}add(t){let e=this.origin();const a=this.dim,i=this.u,n=this.S;for(let s=0;s<a;++s)i[s]=n.coord(t,s)-n.coord(e,s);this.appendColumn(),this.membership.set(t,!0),this.members[this.r+1]=this.members[this.r],this.members[this.r]=t,++this.r}shortestVectorToSpan(t,e){const a=this.origin(),i=this.dim,n=this.S;for(let s=0;s<i;++s)e[s]=n.coord(a,s)-t[s];const s=this.Q.data,r=this.r;for(let t=0;t<r;++t){const a=t*i;Ni(e,0,-Si(e,0,s,a,i),s,a,i)}return Si(e,0,e,0,i)}representationError(){const t=this.size(),e=new Float64Array(t),a=this.dim,i=new Float64Array(a);let n=0;for(let s=0;s<t;++s){for(let t=0;t<a;++t)i[t]=this.S.coord(this.globalIndex(s),t);this.findAffineCoefficients(i,e);let r=Math.abs(e[s]-1);r>n&&(n=r);for(let t=0;t<s;++t)r=Math.abs(e[t]),r>n&&(n=r);for(let a=s+1;a<t;++a)r=Math.abs(e[a]),r>n&&(n=r)}return n}findAffineCoefficients(t,e){let a=this.origin();const i=this.dim,n=this.u;for(let e=0;e<i;++e)n[e]=t[e]-this.S.coord(a,e);const s=this.w,r=this.Q.data;for(let t=0;t<i;++t)s[t]=Si(r,t*i,n,0,i);let o=1;const c=this.R.data,h=this.r;for(let t=h-1;t>=0;--t){const a=t*i;for(let a=t+1;a<h;++a)s[t]-=e[a]*c[a*i+t];const n=s[t]/c[a+t];e[t]=n,o-=n}e[h]=o}hessenberg_clear(t){let e=t;const a=this.R.data,i=this.Q.data,n=this.dim,s=this.cs,r=this.r;for(;e<r;++e){const t=e*n;Ri(a[t+e],a[t+e+1],s);const o=s[0],c=s[1];a[t+e]=o*a[t+e]+c*a[t+e+1];for(let t=e+1;t<r;++t){const i=t*n,s=a[i+e],r=a[i+e+1];a[i+e]=o*s+c*r,a[i+e+1]=o*r-c*s}Vi(i,t,t+n,o,c,n)}}special_rank_1_update(){const t=this.dim,e=this.w,a=this.u,i=this.Q.data,n=this.R.data,s=this.cs,r=this.r;for(let n=0;n<t;++n)e[n]=Si(i,n*t,a,0,t);for(let a=t-1;a>0;--a){Ri(e[a-1],e[a],s);const o=s[0],c=s[1];e[a-1]=o*e[a-1]+c*e[a];const h=(a-1)*t;n[h+a]=-c*n[h+a-1],n[h+a-1]*=o;for(let e=a;e<r;++e){const i=e*t,s=n[i+a-1],r=n[i+a];n[i+a-1]=o*s+c*r,n[i+a]=o*r-c*s}Vi(i,h,h+t,o,c,t)}const o=e[0];for(let e=0;e<r;++e)n[e*t]+=o;this.hessenberg_clear(0)}remove(t){if(this.membership.clear(this.globalIndex(t)),t===this.r){let t=this.origin(),e=this.globalIndex(this.r-1);const a=this.dim,i=this.S,n=this.u;for(let s=0;s<a;++s)n[s]=i.coord(t,s)-i.coord(e,s);--this.r,this.special_rank_1_update()}else{const e=this.R.data,a=this.dim,i=this.members,n=t*a,s=(t+1)*a,r=this.r*a;e.copyWithin(n,s,r);for(let e=t+1;e<this.r;++e)i[e-1]=i[e];i[this.r-1]=i[this.r],--this.r,this.hessenberg_clear(t)}}}class Ti{iteration=0;distToAff=0;distToAffSquare=0;__squaredRadius=0;__radius=0;stopper=0;constructor(t){this.S=t,this.__size=this.S.size();const e=this.S.dimension();this.dim=e;const a=new ArrayBuffer(8*(4*e+1));this.__center=new Float64Array(a,0,e),this.centerToAff=new Float64Array(a,8*e,e),this.centerToPoint=new Float64Array(a,16*e,e),this.lambdas=new Float64Array(a,24*e,e+1),this.__support=this.initBall(),this.compute()}isEmpty(){return 0===this.__size}radius(){return this.__radius}center(){return this.__center}get support(){return this.__support}size(){return this.__size}initBall(){let t,e;const a=this.dim,i=this.__center,n=this.S;for(t=0;t<a;++t)i[t]=n.coord(0,t);this.__squaredRadius=0;let s=0;const r=n.size();for(e=1;e<r;++e){let r=0;for(t=0;t<a;++t)r+=Ci(n.coord(e,t)-i[t]);r>=this.__squaredRadius&&(this.__squaredRadius=r,s=e)}return this.__radius=Math.sqrt(this.__squaredRadius),new Pi(this.dim,n,s)}computeDistToAff(){this.distToAffSquare=this.__support.shortestVectorToSpan(this.__center,this.centerToAff),this.distToAff=Math.sqrt(this.distToAffSquare)}updateRadius(){const t=this.__support.anyMember();this.__squaredRadius=0;const e=this.dim,a=this.__center,i=this.S;for(let n=0;n<e;++n)this.__squaredRadius+=Ci(i.coord(t,n)-a[n]);this.__radius=Math.sqrt(this.__squaredRadius)}compute(){const t=this.__center,e=this.__support,a=this.dim,i=this.centerToAff;for(this.iteration=0;this.iteration<1e4;this.iteration++){for(this.computeDistToAff();this.distToAff<=1e-14*this.__radius||e.size()===a+1;){if(!this.successfulDrop())return;this.computeDistToAff()}const n=this.findStopFraction();if(this.stopper>=0){for(let e=0;e<a;++e)t[e]+=n*i[e];this.updateRadius(),e.add(this.stopper)}else{for(let e=0;e<a;++e)t[e]+=i[e];if(this.updateRadius(),!this.successfulDrop())return}}}successfulDrop(){const t=this.lambdas,e=this.__support;e.findAffineCoefficients(this.__center,t);let a=0,i=1;const n=e.size();for(let e=0;e<n;++e){const n=t[e];n<i&&(i=n,a=e)}return i<=0&&(e.remove(a),!0)}findStopFraction(){let t,e,a=1;this.stopper=-1;const i=this.dim,n=this.__center,s=this.S,r=this.__support,o=this.centerToPoint,c=this.centerToAff,h=this.distToAffSquare,d=this.__squaredRadius,_=this.__size,l=1e-14*this.__radius*this.distToAff;for(e=0;e<_;++e){if(r.isMember(e))continue;for(t=0;t<i;++t)o[t]=s.coord(e,t)-n[t];const _=Bi(c,o,i);if(h-_<l)continue;const f=(d-Bi(o,o,i))/2/(h-_);f>0&&f<a&&(a=f,this.stopper=e)}return a}toString(){let t="Miniball [";if(this.isEmpty())t+="isEmpty=true";else{t+="center=(";for(let e=0;e<this.dim;++e)t+=this.__center[e],e<this.dim-1&&(t+=", ");t+=`), radius=${this.__radius}, squaredRadius=${this.__squaredRadius}`}return t+="]",t}}class Di{constructor(t,e,a){this.__data=a,this.__size=t,this.__dimensions=e}size(){return this.__size}dimension(){return this.__dimensions}coord(t,e){return this.__data[t*this.__dimensions+e]}}function Li(t,e,a){return Math.sqrt(t*t+e*e+a*a)}function qi(t,e,a,i,n,s){const r=3*a,o=3*i,c=3*n;return function(t,e,a,i,n,s,r,o,c,h,d){const _=c-s,l=h-r,f=d-o,u=a-s,b=i-r,g=n-o,m=l*g-f*b,p=f*u-_*g,y=_*b-l*u,w=xi(m,p,y);if(0===w)return t[e]=0,t[e+1]=1,t[e+2]=0,!1;const v=1/Math.sqrt(w),A=m*v,x=p*v,k=y*v;return t[e]=A,t[e+1]=x,t[e+2]=k,!0}(t,e,s[r],s[r+1],s[r+2],s[o],s[o+1],s[o+2],s[c],s[c+1],s[c+2])}const Oi=new Float64Array(3);function Xi(t,e,a,i,n,s,r,o,c){return(e*s-a*n)*r+(a*i-t*s)*o+(t*n-e*i)*c<0?-1:1}function Ki(t,e,a,i,n){let s,r,o,c,h,d;if(a<0){const i=1/(1-a),n=t*e*i;s=1-t*t*i,r=-n,o=t,c=n,h=e*e*i-1,d=-e}else{const i=1/(1+a),n=-t*e*i;s=1-t*t*i,r=n,o=-t,c=n,h=1-e*e*i,d=-e}const _=Xi(t,e,a,s,r,o,c,h,d),l=4*i;n[l]=s,n[l+1]=r,n[l+2]=o,n[l+3]=_}function Wi(t,e,a,i,n){t[e]+=a,t[e+1]+=i,t[e+2]+=n}function Ji(t,e,a,i,n,s){return t*i+e*n+a*s}let Qi=0;class Yi{#H=Qi++;get id(){return this.#H}name="";attributes=[];index=null;bounding_box=new Float32Array(6);bounding_sphere=new Float32Array(4);flags=1;#G=0;get version(){return this.#G}set needsUpdate(t){t&&this.#G++}setFlag(t){this.flags|=t}clearFlag(t){this.flags&=~t}writeFlag(t,e){e?this.setFlag(t):this.clearFlag(t)}getFlag(t){return(this.flags&t)===t}equals(t){return this===t||this.name===t.name&&te(this.index,t.index)&&ee(this.attributes,t.attributes)}hash(){return Z(et(this.name),null==(t=this.index)?0:t.hash(),tt(this.attributes,q));var t}getAttribute(t){const e=this.attributes,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.spec.name===t)return a}}hasAttribute(t){return void 0!==this.getAttribute(t)}setAttribute(t){this.hasAttribute(t.spec.name)&&this.removeAttribute(t.spec.name),this.addAttribute(t)}addAttribute(t){this.attributes.push(t)}removeAttribute(t){const e=this.attributes,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.spec.name===t)return e.splice(i,1),a}}getVertexCount(){const t=this.attributes;return 0===t.length?0:t[0].count}getIndexCount(){const t=this.index;return null!=t?t.count:this.getVertexCount()}getPrimitiveCount(){return this.getIndexCount()/3}ensureIndex(){null===this.index&&this.buildIndex()}buildIndex(){const t=this.getVertexCount(),e=new Uint32Array(t);for(let a=0;a<t;a++)e[a]=a;this.index=Ii.from(e,1,Ce)}ensureBounds(){this.getFlag(1)&&this.computeBoundingShapes()}computeBoundingSphereFromBox(){const t=this.bounding_box,e=t[0],a=t[3],i=t[1],n=t[4],s=t[2],r=t[5];this.bounding_sphere[0]=.5*(e+a),this.bounding_sphere[1]=.5*(i+n),this.bounding_sphere[2]=.5*(s+r),this.bounding_sphere[3]=.5*function(t,e,a,i,n,s){return Li(i-t,n-e,s-a)}(e,i,s,a,n,r)}computeBoundingSphere(){const t=this.getAttribute(Be),e=new Di(t.count,3,t.data),a=new Ti(e),i=a.center();this.bounding_sphere[0]=i[0],this.bounding_sphere[1]=i[1],this.bounding_sphere[2]=i[2],this.bounding_sphere[3]=a.radius()}computeBoundingShapes(){this.computeBoundingBox(),this.computeBoundingSphereFromBox(),this.clearFlag(1)}computeBoundingBox(){const t=this.getAttribute(Be);dt(this.bounding_box,t.data,t.count*t.spec.itemSize),this.clearFlag(1)}ensureNormals(){void 0===this.getAttribute(Me)&&this.computeNormals()}computeNormals(){const t=this.getVertexCount(),e=this.getAttribute(Be);let a=this.getAttribute(Me);void 0===a?(a=Ii.from(new Float32Array(3*t),3,Me),this.addAttribute(a)):a.data.fill(0,0,3*t);const n=this.index;null===n?function(t,e,a){for(let n=0;n<a;n+=3){const a=n,s=n+1,r=n+2;qi(Oi,0,a,s,r,t),i(Oi,0,e,3*a,3),i(Oi,0,e,3*s,3),i(Oi,0,e,3*r,3)}}(e.data,a.data,t):ji(e.data,a.data,n.data)}#$(){if(!this.hasAttribute(Se)){const t=this.getVertexCount();this.addAttribute(Ii.from(new Float32Array(4*t),4,Se))}return this.getAttribute(Se)}#Z(){const t=this.index,e=this.getAttribute(Be),a=this.getAttribute(Me),i=this.getAttribute(Ne);if(null===t||void 0===e||void 0===a||void 0===i)throw new Error(" .computeTangents() failed. Missing required attributes (index, position, normal or uv)");const n=e.data,s=i.data,r=a.data,o=this.#$().data,c=e.count;!function(t,e,a,i,n,s,r){const o=new Float32Array(3*a),c=new Float32Array(3*a);for(let a=0;a<t;a+=3){const t=e[a],s=e[a+1],r=e[a+2],h=t<<1,d=i[h],_=i[h+1],l=s<<1,f=r<<1,u=i[l]-d,b=i[l+1]-_,g=i[f]-d,m=i[f+1]-_,p=u*m-g*b;if(0===p)continue;const y=1/p,w=h+t,v=n[w],A=n[w+1],x=n[w+2],k=l+s,z=f+r,j=n[k]-v,U=n[k+1]-A,E=n[k+2]-x,F=n[z]-v,I=n[z+1]-A,C=n[z+2]-x,B=(j*m-F*b)*y,M=(U*m-I*b)*y,S=(E*m-C*b)*y,N=(F*u-j*g)*y,R=(I*u-U*g)*y,V=(C*u-E*g)*y;Wi(o,w,B,M,S),Wi(o,k,B,M,S),Wi(o,z,B,M,S),Wi(c,w,N,R,V),Wi(c,k,N,R,V),Wi(c,z,N,R,V)}for(let t=0;t<a;t++){const e=3*t,a=s[e],i=s[e+1],n=s[e+2],h=o[e],d=o[e+1],_=o[e+2];if(0===h&&0===d&&0===_){Ki(a,i,n,t,r);continue}const l=c[e],f=c[e+1],u=c[e+2],b=Ji(a,i,n,h,d,_);let g=h-a*b,m=d-i*b,p=_-n*b;const y=Li(g,m,p);if(!(y>1e-6*Li(h,d,_))){Ki(a,i,n,t,r);continue}const w=1/y;g*=w,m*=w,p*=w;const v=Xi(a,i,n,g,m,p,l,f,u),A=t<<2;r[A]=g,r[A+1]=m,r[A+2]=p,r[A+3]=v}}(t.count,t.data,c,s,n,r,o)}#tt(){const t=this.getAttribute(Me),e=this.#$().data,a=t.data,i=this.getVertexCount();for(let t=0;t<i;t++){const i=3*t;Ki(a[i],a[i+1],a[i+2],t,e)}}ensureTangents(){void 0===this.getAttribute(Se)&&this.computeTangents()}computeTangents(){this.ensureNormals(),this.hasAttribute(Ne)&&this.hasAttribute(Be)&&this.hasAttribute(Me)?this.#Z():this.#tt()}copy(t){this.name=t.name,this.index=function(t){if(void 0!==t)return null===t?null:"object"!=typeof t?t:t.clone()}(t.index),this.attributes=t.attributes.map(t=>t.clone()),this.flags=t.flags,this.bounding_sphere.set(t.bounding_sphere),this.bounding_box.set(t.bounding_box)}clone(){const t=new Yi;return t.copy(this),t}update(){this.ensureBounds()}get memory_usage_bytes(){let t=0;null!==this.index&&(t+=this.index.memory_usage_bytes);for(const e of this.attributes)t+=e.memory_usage_bytes;return t}}Yi.prototype.isGeometry=!0,self.Lib={build_bvh(t,e){const a=new m;return function(t,e,a){!function(t,e,a,i,n,s,r){t.setLeafCount(e),t.initialize_structure();for(let i=0;i<e;i++)Na(Va,0,a,0,3,0,r,i),Ra(t,i,Va,0,1,2);t.build()}(t,a.length/3,e,0,0,0,a)}(a,t,e),a},Sampler2D:wi,BufferedGeometryArraysBuilder:Ei,tensionOptimizeUV:function(t,e,a,i=3){const n=new Qa;null==a?function(t,e){const a=e.length/9,i=new Uint32Array(3*a);for(let t=0;t<i.length;t++)i[t]=t;$a(t,i,e)}(n,t):$a(n,a,t);const s=t.length/3;for(let a=0;a<i;a++)t:for(let a=0;a<s;a++){const i=n.vertex_read_edge(a);if(i===Wa)continue;const s=3*a,r=t[s],o=t[s+1],c=t[s+2];let h=0,d=0,_=0,l=i;do{if(Za(n,l))continue t;const i=ti(n,l,a),s=3*i,f=r-t[s],u=o-t[s+1],b=c-t[s+2],g=f*f+u*u+b*b;if(0!==g){const t=1/g,a=2*i;h+=e[a]*t,d+=e[a+1]*t,_+=t}l=n.edge_read_vertex1(l)===a?n.edge_read_v1_disk_next(l):n.edge_read_v2_disk_next(l)}while(l!==i);if(0===_)continue;const f=h/_,u=d/_,b=2*a;e[b]=f,e[b+1]=u}},sampler2d_channel_compute_min:function(t,e=0){const a=t.itemSize,i=t.data,n=i.length;if(0===n)return;let s=i[e],r=e;for(let t=e+a;t<n;t+=a){const e=i[t];s>e&&(s=e,r=t)}const o=t.width,c=r/a|0;return{index:r,value:s,x:c%o,y:c/o|0}},sampler2d_channel_compute_max:function(t,e=0){const a=t.itemSize,i=t.data,n=i.length;if(0===n)return;let s=i[e],r=e;for(let t=e+a;t<n;t+=a){const e=i[t];s<e&&(s=e,r=t)}const o=t.width,c=r/a|0;return{index:r,value:s,x:c%o,y:c/o|0}},tile_geometry_to_meshlets:function(t,e=""){const a=new Yi;return a.name=e,a.addAttribute(Ii.from(t.vertices,3,Be)),a.addAttribute(Ii.from(t.normals,3,Me)),a.addAttribute(Ii.from(t.uvs,2,Ne)),a.index=Ii.from(t.indices,1,Ce),function(t,e=new ua){return t.ensureBounds(),t.computeBoundingSphereFromBox(),e.name=t.name,e.bounding_box.set(t.bounding_box),e.bounding_sphere.set(t.bounding_sphere),e.meshlets.build(t),e.meshlets.compress(),e.primitive_count=e.meshlets.primitive_count,e.bvh=Ma(e.meshlets,e.primitive_count,t.bounding_box),e}(a)},meshlet_geometry_to_bytes:function(t){const e=new k;return Sa.serialize(e,t),e.trim(),e.data}};
|
|
1
|
+
function t(t,e){const a=t.length;if(a!==e.length)return!1;for(let i=0;i<a;i++)if(t[i]!==e[i])return!1;return!0}function e(t){if("object"!=typeof t)return!1;if(null===t)return!1;const e=t.constructor;return e===Uint8Array||e===Uint8ClampedArray||e===Uint16Array||e===Uint32Array||e===Int8Array||e===Int16Array||e===Int32Array||e===Float16Array||e===Float32Array||e===Float64Array||e===BigUint64Array||e===BigInt64Array}function a(t){let e=t-1;return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e}function i(t,e,a,i,n){if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(a)&&t.buffer===a.buffer&&void 0!==t.BYTES_PER_ELEMENT&&void 0!==a.BYTES_PER_ELEMENT){const s=t.byteOffset+e*t.BYTES_PER_ELEMENT,r=a.byteOffset+i*a.BYTES_PER_ELEMENT;if(s<r+n*a.BYTES_PER_ELEMENT&&r<s+n*t.BYTES_PER_ELEMENT)return void a.set(t.subarray(e,e+n),i)}if(t===a&&i>e&&i<e+n){for(let s=n-1;s>=0;s--)a[i+s]=t[e+s];return}let s,r,o;for(o=0;o<n;o++)s=e+o,r=i+o,a[r]=t[s]}function n(t,e,a,i,n){for(let s=0;s<n;s++){const n=e+s,r=i+s,o=a[r];a[r]=t[n],t[n]=o}}const s=new Uint32Array(781250);function r(t,e){return t<e?e:t}function o(t,e){return t<e?t:e}function c(t,e,a,i,n,s){const c=a[i+0],h=a[i+1],d=a[i+2],_=a[i+3],l=a[i+4],u=a[i+5],f=n[s+0],b=n[s+1],g=n[s+2],m=n[s+3],p=n[s+4],y=n[s+5],w=o(c,f),v=o(h,b),A=o(d,g),x=r(_,m),k=r(l,p),z=r(u,y);t[e+0]=w,t[e+1]=v,t[e+2]=A,t[e+3]=x,t[e+4]=k,t[e+5]=z}function h(t,e,a,i,n,s,r,o){t[e]=a,t[e+1]=i,t[e+2]=n,t[e+3]=s,t[e+4]=r,t[e+5]=o}function d(t,e,a,i,n,s){const r=i-t,o=s-a;return(n-e)*(r+o)+o*r}function _(t){return t<0?0:t>1?1:t}function l(t){let e=t;return e=50331903&(e|e<<16),e=50393103&(e|e<<8),e=51130563&(e|e<<4),e=153391689&(e|e<<2),e}function u(t,e,a,i){const n=i[0],s=i[1],r=i[2],o=i[3]-n,c=i[4]-s,h=i[5]-r;return function(t,e,a){const i=1023*_(t),n=1023*_(e),s=1023*_(a);return function(t,e,a){return l(t)|l(e)<<1|l(a)<<2}(Math.round(i),Math.round(n),Math.round(s))}((t-n)*(0!==o?1/o:0),(e-s)*(0!==c?1/c:0),(a-r)*(0!==h?1/h:0))}function f(t){return 31-Math.clz32(t)}function b(t,e,a){const i=t[a],n=t[a+1],s=t[a+2];h(t,e,i,n,s,i,n,s)}function g(t,e,a){const i=t[e],n=t[e+1],s=t[e+2];return u(.5*(i+t[e+3]),.5*(n+t[e+4]),.5*(s+t[e+5]),a)}s.pointer=0;const m=s;class p{__data_buffer;__data_float32;__data_uint32;__node_count_binary=0;__node_count_leaf=0;constructor(){this.data=new ArrayBuffer(320)}estimateByteSize(){return this.data.byteLength+248}getTotalBoxCount(){return this.__node_count_binary+this.__node_count_leaf}get binary_node_count(){return this.__node_count_binary}get leaf_node_count(){return this.__node_count_leaf}getLeafBlockAddress(){return 6*this.__node_count_binary}get float32(){return this.__data_float32}get uint32(){return this.__data_uint32}set data(t){this.__data_buffer=t,this.__data_float32=new Float32Array(this.__data_buffer),this.__data_uint32=new Uint32Array(this.__data_buffer)}get data(){return this.__data_buffer}getNodeAddress(t){const e=this.__node_count_binary,a=t-e;return a<0?6*t:6*e+7*a}initialize_structure(){const t=4*(6*this.__node_count_binary+7*this.__node_count_leaf);this.__data_buffer.byteLength<t&&(this.data=new ArrayBuffer(t))}setLeafCount(t){this.__node_count_leaf=t;const e=a(t);this.__node_count_binary=t<=1?e:e-1}getLeafAddress(t){return 7*t+6*this.__node_count_binary}setLeafData(t,e,a,i,n,s,r,o){const c=this.getLeafAddress(t);h(this.__data_float32,c,a,i,n,s,r,o),this.__data_uint32[c+6]=e}readBounds(t,e,a){i(this.__data_float32,t,e,a,6)}readLeafPayload(t){const e=this.getLeafBlockAddress()+7*t+6;return this.__data_uint32[e]}compute_total_surface_area(){let t=0;const e=new Float32Array(6);for(let a=0;a<this.getTotalBoxCount();a++){let i;i=a<this.__node_count_binary?6*a:7*(a-this.__node_count_binary)+this.getLeafBlockAddress(),this.readBounds(i,e,0),t+=d(e[0],e[1],e[2],e[3],e[4],e[5])}return t}sort_morton(t){const e=6*this.__node_count_binary;if(this.__node_count_leaf<2)return;const a=m.pointer;let i,n,s=a;m[s++]=0,m[s++]=this.__node_count_leaf-1;const r=this.__data_float32;for(;s>a;){s-=2;const a=m[s+1],o=m[s];i=o,n=a;const c=g(r,7*(o+a>>1)+e,t);for(;i<=n;){for(;g(r,7*i+e,t)<c;)i++;for(;g(r,7*n+e,t)>c;)n--;i<=n&&(i!==n&&this.__swap_leaves(i,n),i++,n--)}o<n&&(m[s++]=o,m[s++]=n),i<a&&(m[s++]=i,m[s++]=a)}}__swap_leaves(t,e){const a=this.getLeafBlockAddress(),i=7*t+a,s=7*e+a;n(this.__data_float32,i,this.__data_float32,s,7)}build(){const t=this.__node_count_binary,e=6*t;if(0===t)return;let a,n,s,r,o=f(t);s=1<<o,n=6*(s-1);const h=this.__node_count_leaf,d=this.__data_float32;for(a=0;a<s;a++){const t=a<<1,s=t+1,r=e+7*t;s<h?c(d,n,d,r,d,e+7*s):t<h?i(d,r,d,n,6):b(this.__data_float32,n,n-6),n+=6}for(o--;o>=0;o--)for(s=1<<o,r=s-1,a=0;a<s;a++){const t=6*(1+(r<<1));c(d,6*r,d,t,d,t+6),r++}}}function y(t,e,a){const i=t|e|a;return 3&i?1&i?1:2:4}function w(t,e,a,i,n){let s,r;const o=y(e,i,n);4===o?(s=new Uint32Array(t,e,n>>>2),r=new Uint32Array(a,i,n>>>2)):2===o?(s=new Uint16Array(t,e,n>>>1),r=new Uint16Array(a,i,n>>>1)):(s=new Uint8Array(t,e,n),r=new Uint8Array(a,i,n)),r.set(s)}function v(t){return t+(4-t%4)%4}const A={BigEndian:!1,LittleEndian:!0},x=new Float32Array(1),k=new Int32Array(x.buffer);class z{endianness=A.LittleEndian;position=0;get length(){throw new Error("Deprecated, use 'capacity' instead")}set length(t){throw new Error("Deprecated, use 'capacity' instead")}capacity=1024;data=new ArrayBuffer(1024);dataView=new DataView(this.data);__data_uint8=new Uint8Array(this.data);__growFactor=1.1;get raw_bytes(){return this.__data_uint8}fromArrayBuffer(t){this.data=t,this.dataView=new DataView(t),this.__data_uint8=new Uint8Array(t),this.capacity=t.byteLength,this.position=0}trim(){return this.setCapacity(this.position),this}skip(t){this.position+=t}setCapacity(t){if(t<this.position)throw new Error(`Attempting to set capacity(=${t}) below current position(=${this.position})`);if(this.capacity===t)return;const e=this.__data_uint8,a=new Uint8Array(t),i=Math.min(e.buffer.byteLength,a.buffer.byteLength);i>0&&w(e.buffer,0,a.buffer,0,i),this.data=a.buffer,this.__data_uint8=a,this.dataView=new DataView(this.data),this.capacity=t}ensureCapacity(t){const e=this.capacity;if(e>=t)return;const a=v(Math.ceil(Math.max(t,e*this.__growFactor,e+1024)));this.setCapacity(a)}readFloat16(){return function(t){let e=0;const a=(31744&t)>>10,i=1023&t;let n=1;return t>>15&&(n=-1),e=0!==a?31===a?0!==i?NaN:Infinity*n:n*Math.pow(2,a-15)*(1+i/1024):n*(i/1024*6103515625e-14),e}(this.readUint16())}readFloat32(){const t=this.dataView.getFloat32(this.position,this.endianness);return this.position+=4,t}readFloat64(){const t=this.dataView.getFloat64(this.position,this.endianness);return this.position+=8,t}readInt8(){const t=this.dataView.getInt8(this.position);return this.position+=1,t}readInt16(){const t=this.dataView.getInt16(this.position,this.endianness);return this.position+=2,t}readInt16LE(){const t=this.dataView.getInt16(this.position,A.LittleEndian);return this.position+=2,t}readInt16BE(){const t=this.dataView.getInt16(this.position,A.BigEndian);return this.position+=2,t}readInt32(){const t=this.dataView.getInt32(this.position,this.endianness);return this.position+=4,t}readInt32LE(){const t=this.dataView.getInt32(this.position,A.LittleEndian);return this.position+=4,t}readInt32BE(){const t=this.dataView.getInt32(this.position,A.BigEndian);return this.position+=4,t}readInt64(){const t=this.dataView.getBigInt64(this.position,this.endianness);return this.position+=8,t}readUint8(){const t=this.dataView.getUint8(this.position);return this.position+=1,t}readUint16(){const t=this.dataView.getUint16(this.position,this.endianness);return this.position+=2,t}readUint16LE(){const t=this.dataView.getUint16(this.position,A.LittleEndian);return this.position+=2,t}readUint16BE(){const t=this.dataView.getUint16(this.position,A.BigEndian);return this.position+=2,t}readUint24(){return this.endianness===A.BigEndian?this.readUint24BE():this.readUint24LE()}readUint24LE(){const t=this.dataView.getUint8(this.position),e=this.dataView.getUint8(this.position+1),a=this.dataView.getUint8(this.position+2);return this.position+=3,t|e<<8|a<<16}readUint24BE(){const t=this.dataView.getUint8(this.position),e=this.dataView.getUint8(this.position+1),a=this.dataView.getUint8(this.position+2);return this.position+=3,a|e<<8|t<<16}readUint32(){const t=this.dataView.getUint32(this.position,this.endianness);return this.position+=4,t}readUint32LE(){const t=this.dataView.getUint32(this.position,A.LittleEndian);return this.position+=4,t}readUint32BE(){const t=this.dataView.getUint32(this.position,A.BigEndian);return this.position+=4,t}readUint64(){const t=this.dataView.getBigUint64(this.position,this.endianness);return this.position+=8,t}readUint8Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readUint8()}readUint16Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readUint16()}readUint32Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readUint32()}readInt8Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readInt8()}readInt16Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readInt16()}readInt32Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readInt32()}readFloat32Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readFloat32()}readFloat64Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readFloat64()}writeFloat32Array(t,e,a){for(let i=0;i<a;i++)this.writeFloat32(t[i+e])}writeFloat64Array(t,e,a){const i=this.position+8*a;this.ensureCapacity(i);const n=this.dataView,s=this.endianness;let r=this.position;for(let i=0;i<a;i++)n.setFloat64(r,t[e+i],s),r+=8;this.position=i}writeFloat16Array(t,e,a){for(let i=0;i<a;i++)this.writeFloat16(t[i+e])}readFloat16Array(t,e,a){for(let i=0;i<a;i++)t[i+e]=this.readFloat16()}writeFloat16(t){const e=function(t){let e=t;Number.isFinite(e)&&(e>65504||e<-65504)&&(e=e>0?65504:-65504),x[0]=e;const a=k[0];let i=a>>16&32768,n=a>>12&2047;const s=a>>23&255;return s<103?i:s>142?(i|=31744,255===s&&8388607&a&&(i|=512),i):s<113?(n|=2048,i|=(n>>114-s)+(n>>113-s&1),i):(i|=s-112<<10|n>>1,i+=1&n,i)}(t);this.writeUint16(e)}writeFloat32(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setFloat32(this.position,t,this.endianness),this.position=e}writeFloat64(t){const e=this.position+8;this.ensureCapacity(e),this.dataView.setFloat64(this.position,t,this.endianness),this.position=e}writeInt8(t){const e=this.position+1;this.ensureCapacity(e),this.dataView.setInt8(this.position,t),this.position=e}writeInt16(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setInt16(this.position,t,this.endianness),this.position=e}writeInt16BE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setInt16(this.position,t,A.BigEndian),this.position=e}writeInt16LE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setInt16(this.position,t,A.LittleEndian),this.position=e}writeInt32(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setInt32(this.position,t,this.endianness),this.position=e}writeInt32BE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setInt32(this.position,t,A.BigEndian),this.position=e}writeInt32LE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setInt32(this.position,t,A.LittleEndian),this.position=e}writeInt64(t){const e=this.position+8;this.ensureCapacity(e),this.dataView.setBigInt64(this.position,t,this.endianness),this.position=e}writeInt8Array(t,e,a){this.ensureCapacity(this.position+a);for(let i=0;i<a;i++)this.writeInt8(t[e+i])}writeInt16Array(t,e,a){this.ensureCapacity(this.position+2*a);for(let i=0;i<a;i++)this.writeInt16(t[e+i])}writeInt32Array(t,e,a){this.ensureCapacity(this.position+4*a);for(let i=0;i<a;i++)this.writeInt32(t[e+i])}writeUint8(t){const e=this.position+1;this.ensureCapacity(e),this.dataView.setUint8(this.position,t),this.position=e}writeUint8Array(t,e,a){for(let i=0;i<a;i++)this.writeUint8(t[e+i])}writeUint16(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setUint16(this.position,t,this.endianness),this.position=e}writeUint16BE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setUint16(this.position,t,A.BigEndian),this.position=e}writeUint16LE(t){const e=this.position+2;this.ensureCapacity(e),this.dataView.setUint16(this.position,t,A.LittleEndian),this.position=e}writeUint16Array(t,e,a){for(let i=0;i<a;i++)this.writeUint16(t[e+i])}writeUint24(t){this.endianness===A.BigEndian?this.writeUint24BE(t):this.writeUint24LE(t)}writeUint24BE(t){const e=this.position+3;this.ensureCapacity(e);const a=255&t,i=t>>8&255,n=t>>16&255;this.dataView.setUint8(this.position,n),this.dataView.setUint8(this.position+1,i),this.dataView.setUint8(this.position+2,a),this.position=e}writeUint24LE(t){const e=this.position+3;this.ensureCapacity(e);const a=255&t,i=t>>8&255,n=t>>16&255;this.dataView.setUint8(this.position,a),this.dataView.setUint8(this.position+1,i),this.dataView.setUint8(this.position+2,n),this.position=e}writeUintVar(t){if((0|t)!==t||t<0)throw new RangeError(`value=[${t}] must be an integer in [0, 2147483647]`);let e=!0,a=t;for(;e||0!==a;){e=!1;let t=127&a;a>>=7,a>0&&(t|=128),this.writeUint8(t)}}readUintVar(){let t=!0,e=0,a=0;for(;t;){let i=this.readUint8();if(t=!!(128&i),e+=(127&i)*2**a,a+=7,t&&a>28)throw new Error("uintVar is too long, more than 5 bytes")}return e}writeUint32(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setUint32(this.position,t,this.endianness),this.position=e}writeUint32BE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setUint32(this.position,t,A.BigEndian),this.position=e}writeUint32LE(t){const e=this.position+4;this.ensureCapacity(e),this.dataView.setUint32(this.position,t,A.LittleEndian),this.position=e}writeUint64(t){const e=this.position+8;this.ensureCapacity(e),this.dataView.setBigUint64(this.position,t,this.endianness),this.position=e}writeUint32Array(t,e,a){this.ensureCapacity(this.position+4*a);for(let i=0;i<a;i++)this.writeUint32(t[e+i])}writeBytes(t,e,a){const i=e+a,n=this.position,s=n+a;if(this.ensureCapacity(s),0===e&&t.length===a)this.__data_uint8.set(t,n);else if("function"==typeof t.subarray)this.__data_uint8.set(t.subarray(e,i),n);else for(let i=0;i<a;i++)this.__data_uint8[n+i]=t[e+i];this.position=s}readBytes(t,e,a){const n=this.position,s=n+a,r=this.__data_uint8;if(a<0||s>this.capacity)throw new Error(`Attempting to read ${a} bytes at position ${n}, only ${this.capacity-n} available`);a<128?i(r,n,t,e,a):t.set(r.subarray(n,s),e),this.position=s}writeUTF8String(t){if(null===t)return void this.writeUint32(4294967295);if(void 0===t)return void this.writeUint32(4294967294);let e=0;const a=t.length;if(a>=4294967294)throw new Error("String is too long");this.writeUint32(a);let i=this.position;const n=Math.max(32,a+(a>>1)+7);this.ensureCapacity(n+i);let s=this.__data_uint8,r=this.capacity;for(;e<a;){let n=t.charCodeAt(e++);if(n>=55296&&n<=56319){if(e<a){const a=t.charCodeAt(e);56320==(64512&a)&&(++e,n=((1023&n)<<10)+(1023&a)+65536)}n>=55296&&n<=56319&&(n=65533)}if(i+4>r&&(this.position=i,this.ensureCapacity(i+4),r=this.capacity,s=this.__data_uint8),4294967168&n){if(4294965248&n)if(4294901760&n){if(4292870144&n)continue;s[i++]=n>>18&7|240,s[i++]=n>>12&63|128,s[i++]=n>>6&63|128}else s[i++]=n>>12&15|224,s[i++]=n>>6&63|128;else s[i++]=n>>6&31|192;s[i++]=63&n|128}else s[i++]=n}this.position=i}readUTF8String(){const t=this.readUint32();if(4294967295===t)return null;if(4294967294===t)return;const e=this.__data_uint8;let a="",i=this.position,n=0;for(;i<this.capacity&&n<t;){const t=e[i++];let s;128&t?192==(224&t)?s=(31&t)<<6|63&e[i++]:224==(240&t)?s=(31&t)<<12|(63&e[i++])<<6|63&e[i++]:240==(248&t)&&(s=(7&t)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++],s>65535&&(s-=65536,a+=String.fromCharCode(s>>>10&1023|55296),n++,s=56320|1023&s)):s=t,n++,a+=String.fromCharCode(s)}return this.position=i,a}writeASCIIString(t){const e=t.length,a=this.position,i=a+e;this.ensureCapacity(i);for(let i=0;i<e;i++){const e=t.charCodeAt(i);if(e>127)throw new Error(`Character ${String.fromCharCode(e)} can't be represented by a US-ASCII byte.`);this.__data_uint8[a+i]=e}this.position=i}readASCIICharacters(t,e=!1){let a="";for(let i=0;i<t;i++){const t=this.readUint8();if(e&&0===t)break;a+=String.fromCharCode(t)}return a}toString(){return`BinaryBuffer[position=${this.position}, capacity=${this.capacity}, endianness=${this.endianness}]`}toHexString(){const t=this.__data_uint8,e=Math.min(t.length,this.position);let a="";for(let i=0;i<e;i++)a+=t[i].toString(16).padStart(2,"0").toUpperCase();return a}static fromEndianness(t){const e=new z;return e.endianness=t,e}static fromArrayBuffer(t){const e=new z;return e.fromArrayBuffer(t),e}static copyUTF8String(t,e){const a=t.readUTF8String();return e.writeUTF8String(a),a}static copyUintVar(t,e){const a=t.readUintVar();return e.writeUintVar(a),a}static copyUint8(t,e){const a=t.readUint8();return e.writeUint8(a),a}static copyUint16(t,e){const a=t.readUint16();return e.writeUint16(a),a}static copyUint32(t,e){const a=t.readUint32();return e.writeUint32(a),a}static copyFloat32(t,e){const a=t.readFloat32();return e.writeFloat32(a),a}static copyFloat64(t,e){const a=t.readFloat64();return e.writeFloat64(a),a}static copyBytes(t,e,a){const i=new Uint8Array(a);return t.readBytes(i,0,a),e.writeBytes(i,0,a),i}}z.prototype.isBinaryBuffer=!0;let j=A.LittleEndian,U=!1;function E(){if(U)return j;const t=new ArrayBuffer(2),e=new Uint8Array(t),a=new Uint16Array(t);return e[0]=19,j=19==(255&a[0])?A.LittleEndian:A.BigEndian,U=!0,j}const F={Uint8:"uint8",Uint16:"uint16",Uint32:"uint32",Uint64:"uint64",Int8:"int8",Int16:"int16",Int32:"int32",Int64:"int64",Float16:"float16",Float32:"float32",Float64:"float64"};function I(t,e){return 31*t+e|0}function C(t,e,a){return 3&(e|a)?1&e||3&a?function(t,e,a,i=a-e){let n=0|i,s=e;const r=a-e&3;for(;s<e+r;s++)n=(n<<5)-n+(255&t[s])|0;for(;s<a;s+=4)n=(n<<5)-n+(255&t[s]|(255&t[s+1])<<8|(255&t[s+2])<<16|(255&t[s+3])<<24)|0;return n}(new Uint8Array(t,e,a),0,a,a):function(t,e,a,i=a-e){let n=0|i,s=e;for(a-e&1&&(n=(n<<5)-n+(65535&t[s++])|0);s<a;s+=2)n=(n<<5)-n+(65535&t[s]|(65535&t[s+1])<<16)|0;return n}(new Uint16Array(t,e,a>>>1),0,a>>>1,a):function(t,e,a,i=a-e){let n=0|i;for(let i=e;i<a;++i)n=(n<<5)-n+t[i]|0;return n}(new Uint32Array(t,e,a>>>2),0,a>>>2,a)}function B(e,a,i,n,s){if(e===i&&a===n)return!0;const r=y(a,n,s);let o,c;return 4===r?(o=new Uint32Array(e,a,s>>>2),c=new Uint32Array(i,n,s>>>2)):2===r?(o=new Uint16Array(e,a,s>>>1),c=new Uint16Array(i,n,s>>>1)):(o=new Uint8Array(e,a,s),c=new Uint8Array(i,n,s)),t(o,c)}function S(t,e=!1){return e&&crossOriginIsolated?new SharedArrayBuffer(t):new ArrayBuffer(t)}class M{next=null;flags=0;generation=-1;constructor(t,e){this.handle=t,this.context=e}setFlag(t){this.flags|=t}clearFlag(t){this.flags&=~t}writeFlag(t,e){e?this.setFlag(t):this.clearFlag(t)}getFlag(t){return(this.flags&t)===t}}M.prototype.isSignalHandler=!0;class N{handlers=new Map;#t=!1;flags=0;generation=0;get silent(){return this.getFlag(1)}set silent(t){this.writeFlag(1,t)}setFlag(t){this.flags|=t}clearFlag(t){this.flags&=~t}writeFlag(t,e){e?this.setFlag(t):this.clearFlag(t)}getFlag(t){return(this.flags&t)===t}contains(t,e){const a=this.handlers.get(t);if(void 0===a)return!1;const i=function(t,e,a){let i=t;for(;;){if(i.handle===e&&i.context===a)return i;if(i=i.next,null===i)return null}}(a,t,e);return null!==i}mute(){this.setFlag(1)}unmute(){this.clearFlag(1)}hasHandlers(){return this.handlers.size>0}addOne(t,e){const a=new M(t,e);a.setFlag(1),this.#e(a)}seal(){return this.#t=!0,this}get isSealed(){return this.#t}add(t,e){const a=new M(t,e);this.#e(a)}#e(t){if(this.#t)throw new Error("Signal is sealed and will never dispatch; attaching a handler to it would leak");t.generation=this.generation;const e=t.handle,a=this.handlers.get(e);void 0===a||(t.next=a),this.handlers.set(e,t)}remove(t,e){const a=this.handlers.get(t);if(void 0===a)return!1;if(a.handle===t&&a.context===e)return null===a.next?this.handlers.delete(t):this.handlers.set(t,a.next),!0;let i=a,n=a.next;for(;null!==n;){if(n.handle===t&&n.context===e)return i.next=n.next,!0;i=n,n=n.next}return!1}removeAll(){this.handlers.clear()}#a(t){const e=this.handlers.get(t.handle);if(void 0===e)return!1;if(e===t)return null===e.next?this.handlers.delete(t.handle):this.handlers.set(t.handle,e.next),!0;let a=e,i=e.next;for(;null!==i;){const e=i.next;if(i===t)return a.next=e,!0;a=i,i=e}return!1}promise(){return new Promise((t,e)=>{this.addOne((...e)=>{t(e)})})}dispatch(...t){if(1&this.flags)return;this.generation++;const e=this.handlers;for(const a of e.values()){let e=a;do{const a=e.next;if(e.generation<this.generation){e.getFlag(1)&&this.#a(e);const a=e.handle;try{a.apply(e.context,t)}catch(t){}}e=a}while(null!==e)}}send0(){if(1&this.flags)return;this.generation++;const t=this.handlers;for(const e of t.values()){let t=e;do{const e=t.next;if(t.generation<this.generation){t.getFlag(1)&&this.#a(t);const e=t.handle;try{e.call(t.context)}catch(t){}}t=e}while(null!==t)}}send1(t){if(1&this.flags)return;this.generation++;const e=this.handlers;for(const a of e.values()){let e=a;do{const a=e.next;if(e.generation<this.generation){e.getFlag(1)&&this.#a(e);const a=e.handle;try{a.call(e.context,t)}catch(t){}}e=a}while(null!==e)}}send2(t,e){if(1&this.flags)return;this.generation++;const a=this.handlers;for(const i of a.values()){let a=i;do{const i=a.next;if(a.generation<this.generation){a.getFlag(1)&&this.#a(a);const i=a.handle;try{i.call(a.context,t,e)}catch(t){}}a=i}while(null!==a)}}send3(t,e,a){if(1&this.flags)return;this.generation++;const i=this.handlers;for(const n of i.values()){let i=n;do{const n=i.next;if(i.generation<this.generation){i.getFlag(1)&&this.#a(i);const n=i.handle;try{n.call(i.context,t,e,a)}catch(t){}}i=n}while(null!==i)}}send4(t,e,a,i){if(1&this.flags)return;this.generation++;const n=this.handlers;for(const s of n.values()){let n=s;do{const s=n.next;if(n.generation<this.generation){n.getFlag(1)&&this.#a(n);const s=n.handle;try{s.call(n.context,t,e,a,i)}catch(t){}}n=s}while(null!==n)}}send5(t,e,a,i,n){if(1&this.flags)return;this.generation++;const s=this.handlers;for(const r of s.values()){let s=r;do{const r=s.next;if(s.generation<this.generation){s.getFlag(1)&&this.#a(s);const r=s.handle;try{r.call(s.context,t,e,a,i,n)}catch(n){}}s=r}while(null!==s)}}send6(t,e,a,i,n,s){if(1&this.flags)return;this.generation++;const r=this.handlers;for(const o of r.values()){let r=o;do{const o=r.next;if(r.generation<this.generation){r.getFlag(1)&&this.#a(r);const o=r.handle;try{o.call(r.context,t,e,a,i,n,s)}catch(n){}}r=o}while(null!==r)}}send8(t,e,a,i,n,s,r,o){if(1&this.flags)return;this.generation++;const c=this.handlers;for(const h of c.values()){let c=h;do{const h=c.next;if(c.generation<this.generation){c.getFlag(1)&&this.#a(c);const h=c.handle;try{h.call(c.context,t,e,a,i,n,s,r,o)}catch(n){}}c=h}while(null!==c)}}merge(t){const e=new N;function a(){e.dispatch(...arguments)}return this.add(a),t.add(a),e}}function R(t){return Math.max(Math.ceil(1.5*t),t+32)}N.prototype.isSignal=!0;class V{length=0;constructor(t,e=!1){this.spec=t,this.data=S(8*t.bytesPerRecord,e),this.capacity=8,this.dataView=new DataView(this.data),this.on={added:new N}}set array_buffer(t){this.data=t,this.dataView=new DataView(t),this.capacity=Math.floor(t.byteLength/this.spec.bytesPerRecord),this.length=0}hash(){const t=this.length,e=t*this.spec.bytesPerRecord,a=this.dataView;let i=t;const n=e>>2,s=r(Math.floor(n/31),1),o=Math.floor(n/s);for(let t=0;t<o;t++){const e=t*s<<2;i=(i<<5)-i+a.getUint32(e)}for(let t=n<<2;t<e;t++)i=(i<<5)-i+a.getUint8(t);return i}setCapacity(t){if(this.capacity===t)return;const e=this.data,a=this.spec.bytesPerRecord,i=t*a;try{const t=this.data.constructor;this.data=new t(i)}catch(t){throw new Error("failed to create a new array buffer of size: "+i)}if(this.data.byteLength!==i)throw new Error("Generated array was truncated unexpectedly from "+i+" to "+this.data.byteLength);const n=this.length*a;try{w(e,0,this.data,0,n)}catch(t){throw t instanceof RangeError?new Error("Failed to copy contents of original due to to size violation. OldSize: "+n+", NewSize: "+this.data.byteLength):t}this.capacity=t,this.dataView=new DataView(this.data,0)}trim(){this.setCapacity(this.length)}#i(t){this.capacity<t&&this.setCapacity(R(t))}resize(t){const e=R(t);(this.capacity<t||.5*this.capacity>e)&&this.setCapacity(e)}writeCellValue(t,e,a){const i=this.spec,n=t*i.bytesPerRecord;(0,i.cellWriters[e])(this.dataView,n,a)}readCellValue(t,e){const a=this.spec,i=t*a.bytesPerRecord;return(0,a.cellReaders[e])(this.dataView,i)}removeRows(t,e){const a=this.data,i=new Uint8Array(a),n=this.spec.bytesPerRecord,s=t*n,r=s+e*n,o=this.length*n;i.copyWithin(s,r,o),this.length-=e,this.resize(this.length)}insertRows(t,e){const a=this.length+e;this.#i(a);const i=this.data,n=this.spec.bytesPerRecord,s=(t+e)*n,r=a*n,o=t*n;new Uint8Array(i).copyWithin(s,o,r),this.length=a}createEmptyRow(){const t=this.length+1;this.#i(t);const e=this.length;return this.length=t,e}addRow(t){const e=this.createEmptyRow();return this.spec.writeRowMethod(this.dataView,this.spec.bytesPerRecord*e,t),this.on.added.send2(e,t),e}addRows(t,e){throw new Error("deprecated, use .addRow and .writeRow instead")}copyRow(t,e){if(t===e)return;const a=this.spec.bytesPerRecord,i=t*a,n=e*a;w(this.data,i,this.data,n,a)}readRow(t,e=[]){const a=this.spec;return a.readRowMethod(this.dataView,a.bytesPerRecord*t,e),e}writeRow(t,e){const a=this.spec;a.writeRowMethod(this.dataView,a.bytesPerRecord*t,e)}clearRow(t){const e=this.spec.bytesPerRecord,a=t*e,i=this.dataView;for(let t=0;t<e;t++)i.setUint8(a+t,0)}reverse_rows(){const t=this.spec.bytesPerRecord,e=new Uint8Array(t),a=this.data,n=new Uint8Array(a),s=this.length;if(s<=1)return;const r=s-1,o=r>>>1;for(let a=0;a<=o;a++){const s=a*t;i(n,s,e,0,t);const o=(r-a)*t;n.copyWithin(s,o,o+t),n.set(e,o)}}clear(){this.length=0,this.setCapacity(0)}toRowArray(){const t=[];for(let e=0;e<this.length;e++){const a=this.readRow(e);t.push(a)}return t}printToConsole(){this.toRowArray()}copy(t){if(!this.spec.equals(t.spec))throw new Error("Different table specs");const e=t.length;this.length=e,this.resize(e);const a=t.spec.bytesPerRecord*e;w(t.data,0,this.data,0,a)}equals(t){if(t===this)return!0;if(null==t)return!1;if(!this.spec.equals(t.spec))return!1;const e=this.length;if(e!==t.length)return!1;const a=e*this.spec.bytesPerRecord;return B(this.data,0,t.data,0,a)}}const P={[F.Uint8]:"getUint8",[F.Uint16]:"getUint16",[F.Uint32]:"getUint32",[F.Uint64]:"getBigUint64",[F.Int8]:"getInt8",[F.Int16]:"getInt16",[F.Int32]:"getInt32",[F.Int64]:"getBigInt64",[F.Float16]:"getFloat16",[F.Float32]:"getFloat32",[F.Float64]:"getFloat64"},T={[F.Uint8]:"setUint8",[F.Uint16]:"setUint16",[F.Uint32]:"setUint32",[F.Uint64]:"setBigUint64",[F.Int8]:"setInt8",[F.Int16]:"setInt16",[F.Int32]:"setInt32",[F.Int64]:"setBigInt64",[F.Float16]:"setFloat16",[F.Float32]:"setFloat32",[F.Float64]:"setFloat64"},D={[F.Uint8]:1,[F.Uint16]:2,[F.Uint32]:4,[F.Uint64]:8,[F.Int8]:1,[F.Int16]:2,[F.Int32]:4,[F.Int64]:8,[F.Float16]:2,[F.Float32]:4,[F.Float64]:8};function L(t){const e=t&-t;return 0===e?32:31-Math.clz32(e)}function q(t){return!(t&t-1)}function O(t,e){return t.equals(e)}function X(t){return t.hash()}function K(t){if(t<=255)return Uint8Array;if(t<=65535)return Uint16Array;if(t<=4294967295)return Uint32Array;throw new Error(`Unsupported size ${t}`)}function W(t,e){return(t<<2)+t+1&e}class J{constructor(t,e,a){this.key=t,this.value=e,this.hash=a}}J.prototype.isHashMapEntry=!0;const Q=4294967295,Y=new Uint32Array(0);class G{__bins=Y;__entries=new Array(0);__entries_bound=0;__entries_start=0;__size=0;__bin_count=0;__entries_allocated_count=0;__bin_count_power_of_two=0;__entries_count_power_of_two=0;__bin_count_mask=0;__load_factor=.75;__version=0;constructor({keyHashFunction:t=X,keyEqualityFunction:e=O,capacity:i=16,loadFactor:n=.75}={}){this.keyHashFunction=t,this.keyEqualityFunction=e,this.__load_factor=n,this.#n(a(i))}get size(){return this.__size}getCurrentLoad(){return this.__size/this.__bin_count}#n(t){if(t<this.__size)throw new Error(`count must be at least equal to must of records in the map (=${this.__size}), instead was ${t}`);this.__entries_count_power_of_two=L(t),this.__bin_count_power_of_two=this.__entries_count_power_of_two+1,this.__bin_count=2**this.__bin_count_power_of_two,this.__bin_count_mask=this.__bin_count-1;const e=this.__entries_allocated_count;this.__entries_allocated_count=2**this.__entries_count_power_of_two;const a=K(this.__entries_allocated_count+2);this.__bins=new a(this.__bin_count);const n=new Array(this.__entries_allocated_count),s=this.__entries;this.__entries=n,i(s,0,n,0,o(e,this.__entries_allocated_count)),this.__size>0&&this.rebuild()}compute_bin_index(t){return(t>>>16^t)>>>0&this.__bin_count_mask}#s(t){const e=this.keyHashFunction(t);return e===Q?0:e}#r(t,e,a){return t.hash===e&&(t.key===a||this.keyEqualityFunction(t.key,a))}#o(t,e,a){const i=this.__entries_bound;this.__entries_bound++;const n=this.__entries[i];return void 0!==n?(n.hash=a,n.key=t,n.value=e):this.__entries[i]=new J(t,e,a),i}#c(t){t.key=null,t.value=null,t.hash=Q}#h(){this.__entries_bound===this.__entries_allocated_count&&(this.__size>=this.__entries_allocated_count*this.__load_factor?this.#d():this.rebuild())}set(t,e){this.#h();const a=this.#s(t);let i=this.compute_bin_index(a),n=-1;for(;;){const s=this.__bins[i];if(s>1){const i=this.__entries[s-2];if(this.#r(i,a,t))return void(i.value=e)}else{if(0===s){-1!==n&&(i=n);const s=this.#o(t,e,a)+2;this.__bins[i]=s;break}-1===n&&(n=i)}i=W(i,this.__bin_count_mask)}this.__size++,this.__version++}#_(t){const e=this.#s(t);let a=this.compute_bin_index(e);for(;;){const i=this.__bins[a];if(i>1){const a=this.__entries[i-2];if(this.#r(a,e,t))return a}else if(0===i)return null;a=W(a,this.__bin_count_mask)}}get(t){const e=this.#_(t);if(null!==e)return e.value}getOrCompute(t,e,a){const i=this.#_(t);if(null!==i)return i.value;const n=e.call(a,t);return this.set(t,n),n}getOrSet(t,e){const a=this.#_(t);return null!==a?a.value:(this.set(t,e),e)}#l(t){if(this.__entries_start!==t)return;let e=t+1,a=this.__entries_bound;const i=this.__entries;for(;e<a&&i[e].hash===Q;)e++;this.__entries_start=e}delete(t){const e=this.#s(t);let a=this.compute_bin_index(e);const i=this.__bins,n=this.__entries;for(;;){const s=i[a];if(s>1){const r=s-2,o=n[r];if(this.#r(o,e,t))return this.#c(o),i[a]=1,this.__size--,this.__version++,this.#l(r),!0}else if(0===s)return!1;a=W(a,this.__bin_count_mask)}}verifyHashes(t,e){let a=!0;const i=this.__bin_count;for(let n=0;n<i;n++){const i=this.__bins[n];if(i<=1)continue;const s=this.__entries[i-2],r=this.#s(s.key);s.hash!==r&&(t.call(e,`Hash stored on the entry(=${s.hash}) is different from the computed key hash(=${r}).`,s.key,s.value),a=!1)}return a}#d(){this.#n(2*this.__entries_allocated_count)}rebuild(){const t=this.__entries_bound,e=this.__entries,a=this.__bins;a.fill(0);let i=0;for(let n=this.__entries_start;n<t;n++){const t=e[n].hash;if(t===Q)continue;const s=i;if(i++,s!==n){const t=e[s];e[s]=e[n],e[n]=t}let r=this.compute_bin_index(t);for(;;){if(0===a[r]){a[r]=s+2;break}r=W(r,this.__bin_count_mask)}}this.__entries_start=0,this.__entries_bound=this.__size,this.__version++}#u(){let t=0;for(let e=this.__entries_start;e<this.__entries_bound;e++)this.__entries[e].hash!==Q&&t++;return t}forEach(t,e){const a=this.__bin_count,i=this.__entries,n=this.__bins;this.__version;for(let s=0;s<a;s++){const a=n[s];if(a<=1)continue;const r=i[a-2];t.call(e,r.value,r.key,this)}}has(t){return null!==this.#_(t)}clear(){this.__size>0&&this.__version++;const t=this.__bins,e=this.__bin_count;for(let a=0;a<e;a++){const e=t[a];if(0!==e){if(1!==e){const t=e-2;this.#c(this.__entries[t])}t[a]=0}}this.__size=0,this.__entries_start=0,this.__entries_bound=0}*[Symbol.iterator](){const t=this.__bin_count,e=this.__bins,a=this.__entries;this.__version;for(let i=0;i<t;i++){const t=e[i];if(t<=1)continue;const n=a[t-2];yield[n.key,n.value]}}*entries(){for(const t of this)yield t}*values(){for(const[t,e]of this)yield e}*keys(){for(const[t,e]of this)yield t}}function H(){return 1}function $(){return 0}class Z{key=null;value=null;weight=0;next=null;previous=null;unlink(){const t=this.next,e=this.previous;null!==e&&(e.next=t),null!==t&&(t.previous=e),this.next=null,this.previous=null}toString(){return`CacheElement{ hasNext:${null!==this.next}, hasPrevious:${null!==this.previous}, weight:${this.weight}, key:${this.key}, value:${this.value} }`}}class tt{#f=Number.POSITIVE_INFINITY;#b=0;__first=null;__last=null;constructor({maxWeight:t=Number.POSITIVE_INFINITY,keyWeigher:e=$,valueWeigher:a=H,keyHashFunction:i=X,keyEqualityFunction:n=O,capacity:s}={}){this.#f=t,this.keyWeigher=e,this.valueWeigher=a,this.data=new G({keyHashFunction:i,keyEqualityFunction:n,capacity:s}),this.onEvicted=new N,this.onRemoved=new N,this.onSet=new N}__promote(t){t!==this.__first&&(t===this.__last&&(this.__last=t.previous),t.unlink(),null!==this.__first&&(t.next=this.__first,this.__first.previous=t),this.__first=t)}size(){return this.data.size}setMaxWeight(t){throw new Error("setMaxWeight is deprecated, use .maxWeight property instead")}get weight(){return this.#b}set maxWeight(t){if("number"!=typeof t||t<0)throw new Error(`Weight must be a non-negative number, instead was '${t}'`);const e=this.#f;this.#f=t,e>t&&this.evictUntilWeight(this.#f)}get maxWeight(){return this.#f}recomputeWeight(){let t=0;for(let[e,a]of this.data){const i=this.computeElementWeight(e,a.value);a.weight=i,t+=i}this.#b=t,this.evictUntilWeight(this.#f)}updateElementWeight(t){const e=this.data.get(t);if(void 0===e)return!1;const a=e.weight,i=this.computeElementWeight(t,e.value);if(i===a)return!0;e.weight=i;const n=i-a;return this.#b+=n,this.#b>this.#f&&i<=this.#f&&this.evictUntilWeight(this.#f),!0}computeElementWeight(t,e){return this.keyWeigher(t)+this.valueWeigher(e)}findEvictionVictim(){return this.__last}evictOne(){const t=this.findEvictionVictim();return null!==t&&(this.remove(t.key),this.onEvicted.send2(t.key,t.value),!0)}evictUntilWeight(t){const e=Math.max(t,0);for(;this.#b>e;)this.evictOne()}put(t,e){let a=this.data.get(t);if(void 0===a){const i=this.computeElementWeight(t,e),n=this.#f-i;if(n<0)return;a=new Z,a.key=t,a.value=e,a.next=this.__first,null!==this.__first&&(this.__first.previous=a),this.__first=a,null===this.__last&&(this.__last=a),a.weight=i,this.evictUntilWeight(n),this.data.set(t,a),this.#b+=i}else{if(e===a.value);else{this.#b-=a.weight;const i=this.computeElementWeight(t,e);this.#b+=i,a.weight=i,a.value=e}this.__promote(a),this.#b>this.#f&&a.weight<=this.#f&&this.evictUntilWeight(this.#f)}this.onSet.send2(t,e)}contains(t){return this.data.has(t)}get(t){const e=this.data.get(t);return void 0===e?null:(this.__promote(e),e.value)}getOrCompute(t,e,a){const i=this.get(t);if(null!==i)return i;const n=e.call(a,t);return this.set(t,n),n}__removeElement(t){t.value,t===this.__first&&(this.__first=t.next),t===this.__last&&(this.__last=t.previous),t.unlink();const e=t.key;this.data.delete(e),this.#b-=t.weight}remove(t){const e=this.data.get(t);return void 0!==e&&(this.__removeElement(e),this.onRemoved.send2(t,e.value),!0)}silentRemove(t){const e=this.data.get(t);return void 0!==e&&(this.__removeElement(e),!0)}clear(){const t=[];!function(t,e){for(let a=e.next();!a.done;a=e.next())t.push(a.value)}(t,this.data.keys());const e=t.length;for(let a=0;a<e;a++){const e=t[a];this.remove(e)}}drop(){this.data.clear(),this.__first=null,this.__last=null,this.#b=0}validate(t,e){return this.data.verifyHashes((a,i,n)=>{t.call(e,a,i,n.value)})}}function et(t,e,a){return I(I(t,e),a)}function at(t,e,a){const i=t.length;let n=i;for(let s=0;s<i;s++){const i=t[s];n=(n<<5)-n+e.call(a,i),n|=0}return n}function it(t,e,a){if(null===t)return 0;if(void 0===t)return 1;let i=e??0,n=a??t.length-i,s=n;const r=i+n;for(let e=i;e<r;e++)s=(s<<5)-s+t.charCodeAt(e);return s>>>0}function nt(t){const e=t.length;let a=0;for(let i=0;i<e;i++){const e=t.codePointAt(i);e<128?a+=1:e<2048?a+=2:e<65536?a+=3:(a+=4,i++)}return a}tt.prototype.set=tt.prototype.put,tt.prototype.delete=tt.prototype.remove,tt.prototype.has=tt.prototype.contains;class st{constructor({name:t,body:e,args:a=[]}){this.name=t,this.args=a,this.body=e,this.__hash=.1}updateHash(){this.__hash=et(it(this.name),it(this.body),at(this.args,it))}computeByteSize(){let t=nt(this.body);void 0!==this.name&&(t+=nt(this.name));const e=this.args.length;for(let a=0;a<e;a++)t+=nt(this.args[a]);return t}equals(e){return this.name===e.name&&this.body===e.body&&t(this.args,e.args)}hash(){return.1===this.__hash&&this.updateHash(),this.__hash}}class rt{cache=new tt({maxWeight:10383360,keyWeigher:t=>t.computeByteSize(),keyHashFunction:X,keyEqualityFunction:O});compile({code:t,args:e=[],name:a}){const i=new st({body:t,args:e,name:a}),n=this.cache.get(i);if(null===n){const n=new Function(e.join(","),t);return void 0!==a&&Object.defineProperty(n,"name",{value:a}),this.cache.put(i,n),n}return n}}function ot(t,e){for(let a in t)if(t[a]===e)return a}function ct(t,e,a=A.BigEndian){const i=T[t],n=a===A.BigEndian?"false":"true";return rt.INSTANCE.compile({args:["dataView, byteOffset, value"],code:`dataView.${i}(byteOffset+${e}, value, ${n});`})}function ht(t,e,a=A.BigEndian){const i=P[t],n=a===A.BigEndian?"false":"true";return rt.INSTANCE.compile({args:["dataView, byteOffset"],code:`return dataView.${i}(byteOffset+${e}, ${n});`})}rt.INSTANCE=new rt;class dt{constructor(t,e=A.LittleEndian){const a=t.length;this.types=t,this.endianType=e,this.columnOffsets=new Uint32Array(a);let i=0;for(let e=0;e<a;e++){const a=t[e];this.columnOffsets[e]=i,i+=D[a]}this.bytesPerRecord=i,this.readRowMethod=function(t,e=A.BigEndian){let a=0;const i=[],n=t.length;for(let s=0;s<n;s++){const n=t[s],r=P[n],o=e===A.BigEndian?"false":"true";i.push(`result[${s}] = dataView.${r}(${a} + byteOffset, ${o});`),a+=D[n]}return rt.INSTANCE.compile({args:["dataView, byteOffset, result"],code:i.join("\n")})}(t,e),this.writeRowMethod=function(t,e=A.BigEndian){let a=0;const i=[],n=t.length;for(let s=0;s<n;s++){const n=t[s],r=T[n],o=e===A.BigEndian?"false":"true";i.push(`dataView.${r}(${a} + byteOffset, record[${s}], ${o});`),a+=D[n]}return rt.INSTANCE.compile({args:["dataView, byteOffset, record"],code:i.join("\n")})}(t,e),this.cellReaders=new Array(a),this.cellWriters=new Array(a);for(let i=0;i<a;i++)this.cellReaders[i]=ht(t[i],this.columnOffsets[i],e),this.cellWriters[i]=ct(t[i],this.columnOffsets[i],e)}getColumnCount(){return this.types.length}hash(){let t=this.endianType===A.BigEndian?1:0;return t+=at(this.types,it),t}equals(e){return this.endianType===e.endianType&&t(this.types,e.types)}toString(){return`TableSpec{types=[${this.types.join(", ")}], endian=${ot(A,this.endianType)}}`}static get(t,e=A.LittleEndian){const a=t.join(".")+":"+e,i=_t.get(a);if(null!==i)return i;const n=Object.freeze(new dt(t,e));return _t.put(a,n),n}}dt.prototype.isRowFirstTableSpec=!0;const _t=new tt({keyHashFunction:it});function lt(t,e,a){let i=Infinity,n=Infinity,s=Infinity,c=-Infinity,d=-Infinity,_=-Infinity;for(let t=0;t<a;t+=3){const a=e[t],h=e[t+1],l=e[t+2];i=o(a,i),n=o(h,n),s=o(l,s),c=r(a,c),d=r(h,d),_=r(l,_)}h(t,0,i,n,s,c,d,_)}function ut(t,e){return Math.ceil(t/e)*e}class ft{get tag(){return""}get align(){return 0}get size(){return 0}get aligned_size(){return ut(this.size,this.align)}get runtime_sized(){return!1}get requires_declaration(){return!1}toString(){return this.wgsl_declaration}get declaration_chunk(){throw new Error("Not Implemented")}get wgsl_ref(){return this.wgsl_declaration}get wgsl_declaration(){return this.tag}equals(t){return!1}hash(){return 0}}ft.prototype.isWebGPUType=!0;class bt extends ft{#g=0;#m=0;#p="";get tag(){return this.#p}get size(){return this.#g}get align(){return this.#m}from(t,e,a){this.#p=t,this.#g=a,this.#m=e}static from(t,e,a){const i=new bt;return i.from(t,e,a),Object.freeze(i)}get wgsl_declaration(){return this.tag}hash(){return it(this.tag)}equals(t){return this===t||t instanceof bt&&this.tag===t.tag&&this.#g===t.size&&this.#m===t.align}}bt.prototype.isPrimitive=!0;class gt extends bt{static from(t,e,a){const i=new gt;return i.from(t,e,a),Object.freeze(i)}}gt.prototype.isAtomic=!0;const mt=bt.from("bool",4,4),pt=bt.from("i32",4,4),yt=bt.from("u32",4,4),wt=bt.from("f32",4,4),vt=bt.from("f16",2,2),At=bt.from("vec2<i32>",8,8),xt=bt.from("vec2<u32>",8,8),kt=bt.from("vec2<f32>",8,8),zt=bt.from("vec3<i32>",16,12),jt=bt.from("vec3<u32>",16,12),Ut=bt.from("vec3<f32>",16,12),Et=bt.from("vec4<i32>",16,16),Ft=bt.from("vec4<u32>",16,16),It=bt.from("vec4<f32>",16,16),Ct=bt.from("mat2x2<f32>",8,16),Bt=bt.from("mat3x2<f32>",8,24),St=bt.from("mat4x2<f32>",8,32),Mt=bt.from("mat2x3<f32>",16,32),Nt=bt.from("mat3x3<f32>",16,48),Rt=bt.from("mat4x3<f32>",16,64),Vt=bt.from("mat2x4<f32>",16,32),Pt=bt.from("mat3x4<f32>",16,48),Tt=bt.from("mat4x4<f32>",16,64),Dt=bt.from("vec2<f16>",4,4),Lt=bt.from("vec3<f16>",8,6),qt=bt.from("vec4<f16>",8,8),Ot=bt.from("mat2x2<f16>",4,8),Xt=bt.from("mat3x2<f16>",4,12),Kt=bt.from("mat4x2<f16>",4,16),Wt=bt.from("mat2x3<f16>",8,16),Jt=bt.from("mat3x3<f16>",8,24),Qt=bt.from("mat4x3<f16>",8,32),Yt=bt.from("mat2x4<f16>",8,16),Gt=bt.from("mat3x4<f16>",8,24),Ht=bt.from("mat4x4<f16>",8,32),$t=gt.from("atomic<u32>",4,4),Zt=gt.from("atomic<i32>",4,4),te={i32:pt,u32:yt,f32:wt,f16:vt,"atomic<u32>":$t,"atomic<i32>":Zt,"vec2<i32>":At,"vec2<u32>":xt,"vec2<f32>":kt,"vec2<f16>":Dt,"vec3<i32>":zt,"vec3<u32>":jt,"vec3<f32>":Ut,"vec3<f16>":Lt,"vec4<i32>":Et,"vec4<u32>":Ft,"vec4<f32>":It,"vec4<f16>":qt,"mat2x2<f32>":Ct,"mat2x2<f16>":Ot,"mat3x2<f32>":Bt,"mat3x2<f16>":Xt,"mat4x2<f32>":St,"mat4x2<f16>":Kt,"mat2x3<f32>":Mt,"mat2x3<f16>":Wt,"mat3x3<f32>":Nt,"mat3x3<f16>":Jt,"mat4x3<f32>":Rt,"mat4x3<f16>":Qt,"mat2x4<f32>":Vt,"mat2x4<f16>":Yt,"mat3x4<f32>":Pt,"mat3x4<f16>":Gt,"mat4x4<f32>":Tt,"mat4x4<f16>":Ht,vec2i:At,vec3i:zt,vec4i:Et,vec2u:xt,vec3u:jt,vec4u:Ft,vec2f:kt,vec3f:Ut,vec4f:It,mat2x2f:Ct,mat3x2f:Bt,mat4x2f:St,mat2x3f:Mt,mat3x3f:Nt,mat4x3f:Rt,mat2x4f:Vt,mat3x4f:Pt,mat4x4f:Tt,vec2h:Dt,vec3h:Lt,vec4h:qt,mat2x2h:Ot,mat3x2h:Xt,mat4x2h:Kt,mat2x3h:Wt,mat3x3h:Jt,mat4x3h:Qt,mat2x4h:Yt,mat3x4h:Gt,mat4x4h:Ht};function ee(t,e){return-1===t.indexOf(e)&&(t.push(e),!0)}function ae(t,e){return t===e||"object"==typeof t&&null!==t&&"object"==typeof e&&null!==e&&"function"==typeof t.equals&&t.equals(e)}function ie(t,e){const a=t.length;if(a!==e.length)return!1;for(let i=0;i<a;i++)if(!ae(t[i],e[i]))return!1;return!0}class ne{get isCodeChunk(){return!0}static empty=Object.freeze(ne.from(""));#y="";get text(){return this.#y}#w=[];#v=[];addExtension(t){return ee(this.#v,t)}#A=[];addLanguageExtension(t){return ee(this.#A,t)}#x=[];requireResource(t){return ee(this.#x,t)}get required_resources(){return this.#x}addDependency(t){if(this.#w.includes(t))return!1;if(t.findDependencyRecursive(this))throw new Error(`Circular dependency detected: ${this} -> ${t}`);return this.#k(t),!0}#k(t){this.#w.push(t)}static from(t,e=[]){const a=new ne;a.#y=t;const i=e.length;for(let t=0;t<i;t++){const i=e[t];a.addDependency(i)}return a}allDirectDependenciesIncludedInSet(t){const e=this.#w,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(!t.has(a))return!1}return!0}findDependencyRecursive(t){const e=this.#w,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.equals(t)||a.findDependencyRecursive(t))return!0}return!1}collectDependencies(){const t=new Set,e=this.#w.slice();let a=e.length;for(;a>0;){a--;const i=e[a];if(!0===i.isCodeChunkChoice)throw new Error(`The graph holds a ${i}; specialize it before linking it, see CodeChunk.specialize`);if(t.has(i))continue;t.add(i);const n=i.#w,s=n.length;for(let t=0;t<s;t++)e[a++]=n[t]}return Array.from(t)}collectSwitches(){const t=[],e=new Set([this]),a=[this];for(let i=0;i<a.length;i++){const n=a[i];let s;!0===n.isCodeChunkChoice?(ee(t,n.shader_switch),s=n.alternatives):s=n.#w;for(let t=0;t<s.length;t++){const i=s[t];e.has(i)||(e.add(i),a.push(i))}}return t}specialize(t){return ne.#z(this,t,new Map)}static#z(t,e,a){let i=a.get(t);if(void 0!==i)return i;if(!0===t.isCodeChunkChoice)return i=ne.#z(t.alternative_for(e),e,a),a.set(t,i),i;const n=t.#w,s=n.length;let r=null;for(let t=0;t<s;t++){const i=n[t],s=ne.#z(i,e,a);null===r&&s!==i&&(r=n.slice(0,t)),null!==r&&ee(r,s)}return null===r?i=t:(i=new ne,i.#y=t.#y,i.#w=r,i.#v=t.#v.slice(),i.#A=t.#A.slice(),i.#x=t.#x.slice()),a.set(t,i),i}coalesceDependencies(){const t=new Set,e=this.collectDependencies(),a=[];let i=e.length;for(;i>0;){const n=i;for(let n=i-1;n>=0;n--){const s=e[n];s.allDirectDependenciesIncludedInSet(t)&&(a.push(s),t.add(s),e.splice(n,1),i--)}if(n===i)throw new Error(`${i} dependencies could not be satisfied`)}return a}compile(){const t=this.coalesceDependencies();t.push(this);const e={},a={},i=[],n=new Set,s=[],r=t.length;for(let o=0;o<r;o++){const r=t[o];s.push(r.#y);const c=r.#v;for(let t=0;t<c.length;t++)e[c[t]]=!0;const h=r.#A;for(let t=0;t<h.length;t++)a[h[t]]=!0;const d=r.#x;for(let t=0;t<d.length;t++){const e=d[t];n.has(e)||(n.add(e),i.push({resource:e,chunk:r}))}}const o=Object.keys(e).sort(),c=Object.keys(a).sort();return{text:s.join("\n"),extensions:o,language_extensions:c,resources:i}}toString(){return this.#y}hash(){return it(this.#y)^this.#w.length}copy(t){this.#y=t.#y,this.#w=t.#w.slice(),this.#v=t.#v.slice(),this.#A=t.#A.slice(),this.#x=t.#x.slice()}clone(){const t=new ne;return t.copy(this),t}equals(t){return this===t||!0!==t.isCodeChunkChoice&&this.#y===t.#y&&ie(this.#w,t.#w)}}class se extends ft{count=-1;type=null;get align(){return this.type.align}get size(){const t=this.type,e=ut(t.size,t.align);return this.runtime_sized?e:this.count*e}equals(t){return this===t||t instanceof se&&this.type.equals(t.type)&&this.count===t.count}hash(){return I(this.type.hash(),this.count)}get runtime_sized(){return this.count<0}static from(t,e=-1){const a=new se;return a.type=t,a.count=e,a}get requires_declaration(){return this.type.requires_declaration}#j;get declaration_chunk(){return void 0===this.#j&&(this.type.requires_declaration?this.#j=this.type.declaration_chunk:this.#j=ne.empty),this.#j}get wgsl_ref(){const t=this.type;return this.runtime_sized?`array< ${t.wgsl_ref} >`:`array< ${t.wgsl_ref}, ${this.count} >`}get wgsl_declaration(){const t=this.type.wgsl_ref;return this.runtime_sized?`array< ${t} >`:`array< ${t}, ${this.count} >`}}se.prototype.isArray=!0,se.f32=Object.freeze(se.from(wt)),se.f16=Object.freeze(se.from(vt)),se.u32=Object.freeze(se.from(yt)),se.vec4u=Object.freeze(se.from(Ft)),se.vec4f=Object.freeze(se.from(It)),se.vec2h=Object.freeze(se.from(Dt)),se.vec4h=Object.freeze(se.from(qt));class re{constructor(t,e){this.text=t,this.indentation=e}toString(){return`Line{ indentation=${this.indentation}, text="${this.text}" }`}}class oe{#U=[];#E=0;get indentation(){return this.#E}indentSpaces=4;get count(){return this.#U.length}containsSubstring(t){const e=this.#U,a=e.length;for(let i=0;i<a;i++)if(-1!==e[i].text.indexOf(t))return!0;return!1}indent(){return this.#E++,this}dedent(){return this.#E=Math.max(0,this.#E-1),this}add(t){const e=new re(t,this.#E);return this.#U.push(e),this}extend(t){const e=this.#U,a=e.length-1;if(a<0)throw new Error("No lines to append to");e[a].text+=t}addLines(t){const e=t.#U,a=e.length;for(let t=0;t<a;t++){const a=e[t],i=new re(a.text,a.indentation+this.#E);this.#U.push(i)}}clear(){this.#U=[],this.#E=0}build(){const t=[],e=this.#U,a=e.length,i=function(t,e){if(e<=0)return"";let a=" ";for(let t=1;t<e;t++)a+=" ";return a}(0,this.indentSpaces);for(let n=0;n<a;n++){const a=e[n];let s="";const r=a.indentation;for(let t=0;t<r;t++)s+=i;t.push(s+a.text)}return t.join("\n")}static fromText(t,e="\n"){const a=new oe,i=t.split(e),n=i.length;for(let t=0;t<n;t++){const e=i[t];a.add(e)}return a}toString(){return this.build()}}const ce=/array\s*<\s*(?<type>[^,]+)\s*(?:,\s*(?<count>[0-9]+))?\s*>/;function he(t){const e=t.match(ce);if(null!==e){const t=e.groups,a=t.type;let i;i=void 0===t.count?-1:parseInt(t.count);const n=he(a);return se.from(n,i)}const a=te[t];if(void 0===a)throw new Error(`Unsupported type '${t}'`);return a}const de=new Set([vt,Dt,Lt,qt,Ot,Xt,Kt,Wt,Jt,Qt,Yt,Gt,Ht]);function _e(t){if(t.isPrimitive||t.isAtomic)return de.has(t);if(t.isArray)return _e(t.type);if(t.isStruct){for(const e of t.fields)if(_e(e.type))return!0;return!1}throw new Error(`Unsupported type '${t}'`)}function le(t,e,a){let i=t;return i<e&&(i=e),i<a&&(i=a),i}function ue(t){let e=t>>>0;return e-=e>>>1&1431655765,e=(858993459&e)+(e>>>2&858993459),e=e+(e>>>4)&252645135,Math.imul(e,16843009)>>>24}const fe=4096;class be{__length=0;constructor(t=64){var e;this.__capacity=(e=t)+(32-e%32)%32,this.__data_uint32=new Uint32Array(this.__capacity>>5),this.__chunk_population=new Uint16Array(Math.ceil(this.__capacity/fe)),this.__shrinkFactor=.5}preventShrink(){this.setShrinkFactor(0)}setShrinkFactor(t){this.__shrinkFactor=t}setCapacity(t){if(this.__length>t)throw new Error(`Current length(=${this.__length}) is greater than requested size(=${t})`);this.__resize(t)}size(){return this.__length}capacity(){return this.__capacity}__resize(t){const e=Math.ceil(t/32),a=this.__data_uint32,i=new Uint32Array(e);a.length<e?i.set(a):i.set(a.subarray(0,e)),this.__data_uint32=i,this.__capacity=32*e;const n=Math.ceil(e/128),s=this.__chunk_population,r=new Uint16Array(n);s.length<n?r.set(s):r.set(s.subarray(0,n)),this.__chunk_population=r}__rebuildChunkPopulation(){const t=this.__data_uint32,e=this.__chunk_population;e.fill(0);const a=t.length;for(let i=0;i<a;i++){const a=t[i];0!==a&&(e[i>>7]+=ue(a))}}__updateLength(){const t=this.previousSetBit(this.__length)+1;t<this.__length&&this.__setLength(t)}__setLength(t){this.__length=t;const e=this.__capacity;if(t>e){const a=Math.ceil(le(t,e+128,1.3*e));this.__resize(a)}else t<e-128&&t<e*this.__shrinkFactor&&this.__resize(t)}previousSetBit(t){const e=o(t,this.__length-1);if(e<0)return-1;let a=e>>5;const i=31&e,n=this.__data_uint32;let s=31===i?n[a]:n[a]&(1<<i+1)-1;for(;;){if(0!==s)return 32*a+f(s);if(a--,a<0)return-1;s=n[a]}}nextSetBit(t){const e=this.__length;if(t>=e)return-1;const a=this.__data_uint32;let i,n,s=t>>5,r=31&t;if(0!==r){const t=~((1<<r)-1),e=a[s]&t;if(0!==e)return r=L(e),(s<<5)+r;s++}const o=e+31>>5;for(;s<o;s++)if(i=a[s],0!==i)return r=L(i),n=(s<<5)+r,n;return-1}nextClearBit(t){let e,a=t>>5,i=31&t;const n=this.__data_uint32;if(0!==i){e=n[a];const t=(e|(1<<i)-1)>>>0;if(4294967295!==t)return i=L(~t),i+32*a;a++}const s=this.__length,r=s+31>>5,c=this.__chunk_population;for(;a<r;){const t=a>>7;if(c[t]===fe){a=t+1<<7;continue}const s=o(t+1<<7,r);for(;a<s;a++)if(e=n[a],4294967295!==e)return i=L(~e),i+32*a}return Math.max(s,t)}set(t,e){const a=t>>5,i=1<<(31&t);if(e){const e=t+1;e>this.__length&&this.__setLength(e);const n=this.__data_uint32,s=n[a];0===(s&i)&&(n[a]=s|i,this.__chunk_population[t>>12]++)}else if(t<this.__length){const e=this.__data_uint32,n=e[a];0!==(n&i)&&(e[a]=n&~i,this.__chunk_population[t>>12]--),this.__updateLength()}}clear(t){this.set(t,!1)}setRange(t,e){for(let a=t;a<=e;a++)this.set(a,!0)}clearRange(t,e){for(let a=t;a<e;a++)this.set(a,!1)}get(t){if(t>=this.__length)return!1;const e=t>>5,a=31&t;return!!(this.__data_uint32[e]&1<<a)}getAndSet(t){const e=this.get(t);return e||this.set(t,!0),e}getAndClear(t){const e=this.get(t);return e&&this.set(t,!1),e}shift_right(t,e,a){for(let i=a;i>=e;i--){const e=this.get(i);this.set(i+t,e)}}shift_left(t,e,a){for(let i=e;i<=a;i++){const e=this.get(i);this.set(i-t,e)}}shift(t,e,a){t>0?this.shift_right(t,e,a):this.shift_left(-t,e,a)}reset(){const t=this.__length;t<=0||(t<=32?this.__data_uint32[0]=0:this.__data_uint32.fill(0,0,Math.ceil(t/32)),this.__chunk_population.fill(0,0,Math.ceil(t/fe)),this.__length=0)}cardinality(){const t=this.__length;if(0===t)return 0;const e=this.__chunk_population,a=t+4095>>12;let i=0;for(let t=0;t<a;t++)i+=e[t];return i}copy(t){const e=t.__length,a=e>>5,i=this.__length;i!==e&&(i<e?this.__resize(e):this.__data_uint32.fill(0,a),this.__length=e);for(let e=0;e<a;e++)this.__data_uint32[e]=t.__data_uint32[e];const n=a<<5,s=e-n;for(let e=0;e<s;e++){const a=n+e;this.set(a,t.get(a))}this.__rebuildChunkPopulation()}static fixedSize(t){const e=new be(t);return e.preventShrink(),e}}const ge=16;function me(t,e,a,i){let n=ut(i,e);for(;;){n=ut(t.nextClearBit(n),e);const i=n+a;let s=-1;for(let e=n;e<i;e++)if(t.get(e)){s=e;break}if(-1===s)return n;n=ut(s+1,e)}}class pe{name="";parameters=[];getParameterInteger(t){const e=this.parameters;return parseInt(e[t])}static from(t,...e){const a=new pe;return a.name=t,a.parameters=e,a}equals(e){return this.name===e.name&&t(this.parameters,e.parameters)}hash(){return it(this.name)^this.parameters.length}generate(){let t=`@${this.name}`;const e=this.parameters,a=e.length;if(a>0){t+="(";for(let i=0;i<a;i++)t+=e[i],i!==a-1&&(t+=", ");t+=")"}return t}}class ye{attributes=[];setAttribute(t,...e){const a=pe.from(t,...e);this.attributes.push(a)}getAttribute(t){const e=this.attributes,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.name===t)return a}}get size(){const t=this.getAttribute("size");let e=this.type.size;return void 0!==t&&(e=t.getParameterInteger(0)),e}get align(){const t=this.getAttribute("align");let e=this.type.align;return void 0!==t&&(e=t.getParameterInteger(0)),e}offset=0;type;name;static from(t,e,...a){const i=new ye;return i.name=t,i.type=e,i.attributes=a,i}equals(t){return this.name===t.name&&this.offset===t.offset&&this.type.equals(t.type)&&ie(this.attributes,t.attributes)}copy(t){return this.name=t.name,this.offset=t.offset,this.type=t.type,this.attributes=t.attributes.slice(),this}clone(){const t=new ye;return t.copy(this),t}hash(){return et(it(this.name),this.offset,this.type.hash())}generate(){let t="";const e=this.attributes,a=e.length;for(let i=0;i<a;i++)t+=e[i].generate()+" ";return`${t}${this.name} : ${this.type.wgsl_ref}`}}ye.prototype.isWGSLStructField=!0;let we=0;function ve(){return"Struct_"+we++}class Ae extends ft{#p="";get tag(){return this.#p}set tag(t){this.#p=t}fields=[];#F=!1;#g=0;#m=0;get size(){return this.#g}get align(){return this.#m}copy(t){return this.#p=t.#p,this.#g=t.#g,this.#m=t.#m,this.#F=t.#F,this.#j=void 0,this.fields=t.fields.map(t=>t.clone()),this}clone(){const t=new Ae;return t.copy(this),t.#p=ve(),t}make(t){const e=new oe;e.add(`${this.wgsl_ref}(`),e.indent();const a=this.fields,i=a.length;for(let n=0;n<i;n++){const i=a[n].name,s=t[i];if(void 0===s)throw new Error(`Missing field '${i}'`);e.add(`${s},`)}return e.dedent(),e.add(")"),e.build()}pack(){if(this.fields.length<=1)return this;const t=[],e=[];for(const a of this.fields)a.type.runtime_sized?e.push(a):t.push(a);const a=function(t){const e=t.length,a=new Uint32Array(e);for(let t=0;t<e;t++)a[t]=t;a.sort((e,a)=>{const i=(ge-t[e].size%ge)%ge,n=(ge-t[a].size%ge)%ge;return i!==n?i-n:e-a});let i=0;for(let a=0;a<e;a++){const e=t[a];i+=ut(e.size,e.align)}const n=be.fixedSize(i);let s=0;const r=new Uint32Array(e);for(let i=0;i<e;i++){const e=a[i],o=t[e],c=me(n,o.align,o.size,s);r[e]=c,n.setRange(c,c+o.size-1),c===s&&(s=n.nextClearBit(s+o.size))}const o=new Uint32Array(e);for(let t=0;t<e;t++)o[t]=t;o.sort((t,e)=>r[t]-r[e]);const c=new Array(e);for(let a=0;a<e;a++)c[a]=t[o[a]];return c}(t);return this.fields=a.concat(e),this.#F&&(this.#g,this.#I(),this.#g),this}equals(t){return t===this||t instanceof Ae&&this.#p===t.#p&&ie(this.fields,t.fields)}hash(){return I(et(it(this.name),this.#g,this.#m),this.fields.length)}get requires_declaration(){return!0}get runtime_sized(){const t=this.fields;for(let e=0;e<t.length;e++)if(t[e].type.runtime_sized)return!0;return!1}static from(t,e=ve()){const a=new Ae;a.#p=e;for(const e in t){const i=t[e];let n;if("string"==typeof i)n=he(i);else{if(!0!==i.isWebGPUType)throw new Error(`Unsupported type declarator '${i}'`);n=i}a.#C(ye.from(e,n))}return a.#I(),a}static fromFields(...t){const e=new Ae;e.#p=ve();for(const a of t)e.#C(a);return e.#I(),e}has(t){return this.fields.some(e=>e.name===t)}get(t){const e=this.fields.find(e=>e.name===t);if(void 0===e)throw new Error(`Field '${t}' not found`);return e}#C(t){this.fields.push(t)}#I(){const t=this.fields,e=t.length;let a=1,i=0;for(let n=0;n<e;n++){const e=t[n],s=ut(i,e.align);a<e.align&&(a=e.align),e.offset=s,i=e.offset+e.size}this.#m=a,this.#g=ut(i,a),this.#j=void 0,this.#F=!0}get wgsl_ref(){return this.#p}get wgsl_declaration(){const t=new oe;t.add(`struct ${this.#p}{`),t.indent();for(let e=0;e<this.fields.length;e++){const a=this.fields[e];t.add(`${a.generate()},`)}return t.dedent(),t.add("}"),t.build()}#j;get declaration_chunk(){if(void 0===this.#j){const t=ne.from(this.wgsl_declaration),e=this.fields,a=e.length;for(let i=0;i<a;i++){const a=e[i].type;a.requires_declaration&&t.addDependency(a.declaration_chunk)}_e(this)&&t.addExtension("shader-f16"),this.#j=t}return this.#j}}function xe(t,e){const a=new Float32Array(e);return t.readFloat32Array(a,0,e),a}function ke(t,e){const a=new Float16Array(e);return t.readFloat16Array(a,0,e),a}function ze(t,e){const a=new Int32Array(e);return t.readInt32Array(a,0,e),a}function je(t,e){const a=new Uint32Array(e);return t.readUint32Array(a,0,e),a}function Ue(t,e){const a=new Float32Array(3*e),i=t.position;for(let n=0;n<e;n++)t.position=i+16*n,t.readFloat32Array(a,3*n,3);return t.position=i+16*e,a}function Ee(t,e){const a=new Float16Array(3*e),i=t.position;for(let n=0;n<e;n++)t.position=i+8*n,t.readFloat16Array(a,3*n,3);return t.position=i+8*e,a}function Fe(t,e){if(t.position=ut(t.position,e.align),e instanceof se)return function(t,e){let a=e.count;const i=[],n=e.type,s=n.aligned_size,r=t.position;if(e.runtime_sized){const e=t.capacity-t.position;a=Math.floor(e/s)}for(let e=0;e<a;e++)t.position=r+e*s,i[e]=Fe(t,n);return t.position=r+a*s,i}(t,e);if(e instanceof Ae)return function(t,e){const a=e.fields,i=t.position,n={};for(let e=0;e<a.length;e++){const s=a[e];t.position=i+s.offset,n[s.name]=Fe(t,s.type)}return t.position=i+e.size,n}(t,e);switch(e){case mt:return 0!==t.readUint32();case yt:case $t:return t.readUint32();case pt:case Zt:return t.readInt32();case wt:return t.readFloat32();case vt:return t.readFloat16();case xt:return je(t,2);case jt:return je(t,3);case Ft:return je(t,4);case At:return ze(t,2);case zt:return ze(t,3);case Et:return ze(t,4);case kt:return xe(t,2);case Ut:return xe(t,3);case It:return xe(t,4);case Dt:return ke(t,2);case Lt:return ke(t,3);case qt:return ke(t,4);case Ct:return xe(t,4);case Bt:return xe(t,6);case St:case Vt:return xe(t,8);case Pt:return xe(t,12);case Tt:return xe(t,16);case Mt:return Ue(t,2);case Nt:return Ue(t,3);case Rt:return Ue(t,4);case Ot:return ke(t,4);case Xt:return ke(t,6);case Kt:case Yt:return ke(t,8);case Gt:return ke(t,12);case Ht:return ke(t,16);case Wt:return Ee(t,2);case Jt:return Ee(t,3);case Qt:return Ee(t,4);default:throw new Error(`Unsupported type ${e}`)}}function Ie(t,e,a){const i=e.position;e.ensureCapacity(i+16*a);for(let n=0;n<a;n++)e.position=i+16*n,e.writeFloat32Array(t,3*n,3);e.position=i+16*a}function Ce(t,e,a){const i=e.position;e.ensureCapacity(i+8*a);for(let n=0;n<a;n++)e.position=i+8*n,e.writeFloat16Array(t,3*n,3);e.position=i+8*a}function Be(t,e,a){if(a instanceof se)return function(t,e,a){const i=a.count,n=a.type.aligned_size,s=e.position;for(let r=0;r<i;r++)e.position=s+r*n,Be(t[r],e,a.type);e.position=s+i*n}(t,e,a);if(a instanceof Ae)return function(t,e,a){const i=a.fields,n=e.position,s=i.length;for(let a=0;a<s;a++){const s=i[a];e.position=n+s.offset;const r=t[s.name];void 0!==r&&Be(r,e,s.type)}e.position=n+a.size}(t,e,a);switch(a){case mt:return e.writeUint32(t?1:0);case yt:case $t:return e.writeUint32(t);case pt:case Zt:return e.writeInt32(t);case wt:return e.writeFloat32(t);case vt:return e.writeFloat16(t);case At:return e.writeInt32Array(t,0,2);case zt:return e.writeInt32Array(t,0,3);case Et:return e.writeInt32Array(t,0,4);case xt:return e.writeUint32Array(t,0,2);case jt:return e.writeUint32Array(t,0,3);case Ft:return e.writeUint32Array(t,0,4);case kt:return e.writeFloat32Array(t,0,2);case Ut:return e.writeFloat32Array(t,0,3);case It:return e.writeFloat32Array(t,0,4);case Dt:return e.writeFloat16Array(t,0,2);case Lt:return e.writeFloat16Array(t,0,3);case qt:return e.writeFloat16Array(t,0,4);case Ct:return e.writeFloat32Array(t,0,4);case Bt:return e.writeFloat32Array(t,0,6);case St:case Vt:return e.writeFloat32Array(t,0,8);case Pt:return e.writeFloat32Array(t,0,12);case Tt:return e.writeFloat32Array(t,0,16);case Mt:return Ie(t,e,2);case Nt:return Ie(t,e,3);case Rt:return Ie(t,e,4);case Ot:return e.writeFloat16Array(t,0,4);case Xt:return e.writeFloat16Array(t,0,6);case Kt:case Yt:return e.writeFloat16Array(t,0,8);case Gt:return e.writeFloat16Array(t,0,12);case Ht:return e.writeFloat16Array(t,0,16);case Wt:return Ce(t,e,2);case Jt:return Ce(t,e,3);case Qt:return Ce(t,e,4);default:throw new Error(`Unsupported type ${a}`)}}Ae.prototype.isStruct=!0,(new z).endianness=E();const Se="index",Me="position",Ne="normal",Re="tangent",Ve="uv0",Pe="uv1",Te="color",De="joints",Le="weights";var qe=function(){var t,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if("object"!=typeof WebAssembly)return{supported:!1};function a(t){if(!t)throw new Error("Assertion failed")}function i(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function n(e,a,n,s,r,o,c,h,d,_){var l=t.exports.sbrk,u=l(16*t.exports.meshopt_buildMeshletsBound(a.length,o,c)),f=l(4*a.length),b=l(a.length),g=l(a.byteLength),m=l(n.byteLength),p=new Uint8Array(t.exports.memory.buffer);p.set(i(a),g),p.set(i(n),m);for(var y=e(u,f,b,g,a.length,m,s,r,o,c,h,d,_),w=(p=new Uint8Array(t.exports.memory.buffer)).subarray(u,u+16*y),v=new Uint32Array(w.buffer,w.byteOffset,w.byteLength/4).slice(),A=0;A<y;++A){var x=v[4*A+0],k=v[4*A+1],z=(s=v[4*A+2],v[4*A+3]);t.exports.meshopt_optimizeMeshlet(f+4*x,b+k,z,s)}var j=v[4*(y-1)+0],U=v[4*(y-1)+1],E=v[4*(y-1)+2],F=v[4*(y-1)+3],I=y>0?j+E:0,C=y>0?U+3*F:0,B={meshlets:v,vertices:new Uint32Array(p.buffer,f,I).slice(),triangles:new Uint8Array(p.buffer,b,C).slice(),meshletCount:y};return l(u-l(0)),B}function s(e){var a=new Float32Array(t.exports.memory.buffer,e,12);return{centerX:a[0],centerY:a[1],centerZ:a[2],radius:a[3],coneApexX:a[4],coneApexY:a[5],coneApexZ:a[6],coneAxisX:a[7],coneAxisY:a[8],coneAxisZ:a[9],coneCutoff:a[10]}}return{ready:WebAssembly.instantiate(function(){for(var t=new Uint8Array(18682),a=0;a<18682;++a){var i="b9H79Tebbbe95x9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gruuuuuuub9Gxuuuuuuuuuuuueu9Gxuuuuuuuuuuu99eu9GPuuuuuuuuuuuuu99b9Gouuuuuub9GluuuubiXCdilvorwDoqooqkbiibeilve9Weiiviebeoweuecj:Pdkr;Zeqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeY9TW79O9V9Wt9F9I919P29K9nW79O2Wt7S2W94bd39TW79O9V9Wt9F9I919P29K9nW79O2Wt79t9W9Ht9P9H2bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7bD39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bkE9TW79O9V9Wt9F9J9V9T9W91tW9t9W9OWVW9c9V919U9K7bxL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbml79IV9RbPDwebcekdHOq:m:ceCdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek;x8JDPue99eux99due99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:qjjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;01jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;01jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;01jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;01jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;01jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;01jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:qjjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;01jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:qjjjbhYamcuaLcK2alcjjjjd0Ecbyd;01jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;01jjbHjjjjbbgCBd:WwamcoBd;8waq:Zhhdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaEahNhhamcuaLcltalcFFFFd0Ecbyd;01jjbHjjjjbbg8PBd:0wamcrBd;8wcba8Pa8AaCaLz:djjjb8AJFFuuh8MJFFuuh8NJFFuuhydnalci6mbJFFuuhya8AhsaLhAJFFuuh8NJFFuuh8MinascwfIdbgEa8Ma8MaE9EEh8MasclfIdbgEa8Na8NaE9EEh8NasIdbgEayayaE9EEhyascKfhsaAcufgAmbkkah:rhEamaocetgscuaocu9kEcbyd;01jjbHjjjjbbgCBd:4wdndnaoal9nmbaihsalhAinaCasydbcetfcFFi87ebasclfhsaAcufgAmbxdkkaCcFeasz:qjjjb8AkaEJbbbZNh8JcuhIdnalci6mbcbhAJFFuuhEa8AhscuhIinascwfIdba8M:tghahNasIdbay:tghahNasclfIdba8N:tghahNMM:rghaEaIcuSahaE9DVgXEhEaAaIaXEhIascKfhsaLaAcefgA9hmbkkamczfcbcjwz:qjjjb8Aamcwf9cb83ibam9cb83iba8JaxNh8RJbbjZak:th8Lcbh8SJbbbbhRJbbbbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8Ycbh8ZcbhPinJbbbbhEdna8STmbJbbjZa8S:Z:vhEkJbbbbhhdna8Ya8YNa8Wa8WNa8Xa8XNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8VaENh8Ka8UaENh8EaRaENh5aIhLdndndndndna8SaPVTmbamydwg80Tmea8YahNh8Fa8XahNhaa8WahNhgaeamydbcdtfh81cbh3JFFuuhEcvhQcuhLindnaza81a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgXcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaXcdtfydbgXceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaXcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaQ9kmba8AaKcK2fgXIdwa8K:tghahNaXIdba5:tghahNaXIdla8E:tghahNMM:ra8J:va8LNJbbjZMJ9VO:d86JbbjZaXIdCa8FNaXIdxagNaaaXIdzNMMakN:tghahJ9VO:d869DENghaEasaQ6ahaE9DVgXEhEaKaLaXEhLasaQaXEhQkaAclfhAavcufgvmbkka3cefg3a809hmbkkaLcu9hmekama8KUd:ODama8EUd:KDama5Ud:GDamcuBd:qDamcFFF;7rBdjDa8Pcba8AaYamc:GDfamc:qDfamcjDfz:ejjjbamyd:qDhLdndnaxJbbbb9ETmba8SaD6mbaLcuSmeceh3amIdjDa8R9EmixdkaLcu9hmekdna8STmbabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;41jjbH:bjjjbbazc98fhzxbkkcbh3a8Saq9pmbamydwaCaiaLcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna8ZTmbcbhAamczfhXinamczfaAcdtfaXydbgQBdbaXclfhXaAaYaQfRbbTfhAa8Zcufg8ZmbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh8ZinamcjDfasfcFFF;7rBdbasclfgscz9hmbka8Zcdth80dnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhQcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaQaXEhQaAclfhAavcufgvmbkaQcuSmba8AaQcK2fgAIdwa8M:tgEaENaAIdbay:tgEaENaAIdla8N:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaQBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfa80fhQcbhscbhAindnamc:GDfasfydbgXcuSmbaQaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa8Zfg8ZTmbJFFuuhhcuhKamczfhsa8ZhvcuhQina8AasydbgXcK2fgAIdwa8M:tgEaENaAIdbay:tgEaENaAIdla8N:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaQ6mbaAaQ9hmeaEah9DTmekaEhhaAhQaXhKkasclfhsavcufgvmbkaKcuSmbaKhLkdnamaiaLcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbhRJbbbbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YkcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgQhAdnaQTmbdninasydbaLSmeasclfhsaAcufgATmdxbkkasaKaQcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaLcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaLfce86bba8Ya8FMh8Ya8Xa5Mh8Xa8Wa8EMh8Wa8Va8KMh8Va8UahMh8UaRaEMhRamydxh8Sxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtciVBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtciVBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark;yddvue99dninabaecitfgrydlgwcl6mednawciGgDci9hmbabaecitfhbcbhecehqindnaiabydbgDfRbbmbcbhqadaDcK2fgkIdwalIdw:tgxaxNakIdbalIdb:tgxaxNakIdlalIdl:tgxaxNMM:rgxaoIdb9DTmbaoaxUdbavaDBdbarydlhwkabcwfhbaecefgeawcd46mbkaqceGTmdarawciGBdlskdnabcbawcd4gwalaDcdtfIdbarIdb:tgxJbbbb9FEgkaw7aecefgwfgecitfydlabakawfgwcitfydlVci0mbaraDBdlkabawadaialavaoz:ejjjbax:laoIdb9Fmbkkkjlevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbabydbhqdnaxydbgkTmbaoaqcdtfhxakhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkabaqakfBdbabydxhxab9cb83dwababydlaxci2fBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk:zPrHue99eue99eue99eu8Jjjjjbc;W;Gb9Rgx8KjjjjbdndnalmbcbhmxekcbhPaxc:m;Gbfcbc;Kbz:qjjjb8Aaxcualci9UgscltascjjjjiGEcbyd;01jjbHjjjjbbgzBd:m9GaxceBd;S9GaxcuascK2gHcKfalcpFFFe0Ecbyd;01jjbHjjjjbbgOBd:q9GaxcdBd;S9Gdnalci6gAmbarcd4hCascdthXaOhQazhLinavaiaPcx2fgrydbaC2cdtfhKavarcwfydbaC2cdtfhYavarclfydbaC2cdtfh8AcbhraLhEinaQarfgmaKarfg3Idbg5a8Aarfg8EIdbg8Fa5a8F9DEg5UdbamaYarfgaIdbg8Fa5a8Fa59DEg8FUdbamcxfgma3Idbg5a8EIdbgha5ah9EEg5UdbamaaIdbgha5aha59EEg5UdbaEa8Fa5MJbbbZNUdbaEaXfhEarclfgrcx9hmbkaQcKfhQaLclfhLaPcefgPas9hmbkkaOaHfgr9cb83dbarczf9cb83dbarcwf9cb83dbaxcuascx2gralc:bjjjl0Ecbyd;01jjbHjjjjbbgCBdN9GaxciBd;S9GascdthgazarfhvaChHazhLcbhPinaxcbcj;Gbz:qjjjbhEaPas2cdthadnaAmbaLhrash3inaEarydbgmc8F91cjjjj94Vam7gmcQ4cx2fg8Ea8EydwcefBdwaEamcd4cFrGcx2fg8Ea8EydbcefBdbaEamcx4cFrGcx2fgmamydlcefBdlarclfhra3cufg3mbkkazaafh8AaCaafhXcbhmcbh3cbh8EcbhainaEamfgrydbhQara3BdbarcwfgKydbhYaKaaBdbarclfgrydbhKara8EBdbaQa3fh3aYaafhaaKa8Efh8Eamcxfgmcj;Gb9hmbkdnaAmbcbhravhminamarBdbamclfhmasarcefgr9hmbkaAmbavhrashminaEa8Aarydbg3cdtfydbg8Ec8F91a8E7cd4cFrGcx2fg8Ea8Eydbg8EcefBdbaXa8Ecdtfa3BdbarclfhramcufgmmbkaHhrashminaEa8Aarydbg3cdtfydbg8Ec8F91a8E7cx4cFrGcx2fg8Ea8Eydlg8EcefBdlava8Ecdtfa3BdbarclfhramcufgmmbkavhrashminaEa8Aarydbg3cdtfydbg8Ec8F91cjjjj94Va8E7cQ4cx2fg8Ea8Eydwg8EcefBdwaXa8Ecdtfa3BdbarclfhramcufgmmbkkaHagfhHaLagfhLaPcefgPci9hmbkaEaocetgrcuaocu9kEcbyd;01jjbHjjjjbbgKBd:y9GaEclBd;S9Gdndnaoal9nmbaihralhminaKarydbcetfcFFi87ebarclfhramcufgmmbxdkkaKcFearz:qjjjb8AkcbhmaEascbyd;01jjbHjjjjbbg8ABd:C9GaOaCaCascdtfaCascitfa8AascbazaKaiawaDaqakz:hjjjbcbh8Ednalci6gambcbh8Ea8Ahrash3ina8EarRbbfh8Earcefhra3cufg3mbkkaEcwf9cb83ibaE9cb83ibalawc9:fgrfcufar9UhrasaDfcufaD9Uh3dnaambara3ara30EhYcbhra8Ehacbhmincbh3dnarTmba8AarfRbbceSh3kamaEaiaCydbcx2fgQydbaQclfydbaQcwfydbaKabaeadamawaqa3a3ce7a8EaY9nVaaamfaY6VGz:fjjjbfhmaCclfhCaaa8AarfRbb9Rhaasarcefgr9hmbkaEydxTmbabamcltfgraE8Pib83dbarcwfaEcwf8Pib83dbamcefhmkczhrinarc98SmeaEc:m;Gbfarfydbcbyd;41jjbH:bjjjbbarc98fhrxbkkaxc;W;Gbf8Kjjjjbamk;LXDXue99lue99iul9:eur99lu8Jjjjjbc;qb9RgP8Kjjjjbdndnaoc8Y9imbalaeavawaDaqaxz1jjjbxekaxhsaxhzdnavax0gHmbdnavTmbcbhOaehzavhAinawaDazydbcx2fgCcwfydbcetfgX8VebhQawaCclfydbcetfgL8VebhKawaCydbcetfgC8VebhYaXce87ebaLce87ebaCce87ebaOaKcs4aYcs4faQcs4ffhOazclfhzaAcufgAmbkaehzavhAinawaDazydbcx2fgCcwfydbcetfcFFi87ebawaCclfydbcetfcFFi87ebawaCydbcetfcFFi87ebazclfhzaAcufgAmbkcehzaqhsaOaq0mekalce86bbalcefcbavcufz:qjjjb8AxekaPaiBdxaPadBdwaPaeBdlavakaqci9UgCakaCak6EaHEgK9Rh8AaxaK9RhEaKcufh3aKceth5aKcdtgCc98fh8EavcitgOaC9Rarfc98fh8FascufhaavcufhharaOfhgJbbjZas:Y:vh8JaravcdtgYfc94fh8KcbazceakaxSEg8Lcdtg8M9Rh8NJFFuuhycuh8PcbhIcbh8RinaPclfa8RcdtfydbhQaPc8WfcKfcb8Pd:y1jjbg8S83ibaPc8Wfczfcb8Pd:q1jjbgR83ibaPc8Wfcwfcb8Pd11jjbg8U83ibaPcb8Pdj1jjbg8V83i8WaPczfcKfa8S83ibaPczfczfaR83ibaPczfcwfa8U83ibaPa8V83izaQaYfh8WcbhXinabaQaXcdtgLfydbcK2fhAcbhzinaPc8WfazfgCaAazfgOIdbg8XaCIdbg8Ya8Xa8Y9DEUdbaCczfgCaOcxfIdbg8XaCIdbg8Ya8Xa8Y9EEUdbazclfgzcx9hmbkaPIdnaPId8W:tg8ZaPId9iaPIdU:tg80Nh81aba8WaXcu7cdtfydbcK2fhAcbhzaPId80hBaPId9eh83inaPczfazfgCaAazfgOIdbg8XaCIdbg8Ya8Xa8Y9DEUdbaCczfgCaOcxfIdbg8XaCIdbg8Ya8Xa8Y9EEUdbazclfgzcx9hmbkaraLfgza83aB:tg8Xa80Na8Za8XNa81MMUdbazaYfaPId8KaPIdC:tg8XaPIdyaPIdK:tg8YNaPIdaaPIdz:tg8Za8XNa8Za8YNMMUdbaXcefgXav9hmbkcbhUdnaHmbcbhAaQhzaghCavhXinawaDazydbcx2fgOcwfydbcetfgL8Vebh8WawaOclfydbcetfg858VebhUawaOydbcetfgO8Vebh86aLce87eba85ce87ebaOce87ebaCaAaUcs4a86cs4fa8Wcs4ffgABdbazclfhzaCclfhCaXcufgXmbkavhCinawaDaQydbcx2fgzcwfydbcetfcFFi87ebawazclfydbcetfcFFi87ebawazydbcetfcFFi87ebaQclfhQaCcufgCmbkaghUkdndndndndndndndndndna5av0mba5ax0meavaK6mda3a8A9pmDcehLa8AhXaUTmlxrka3ah9pmwa5ax9nmdxlkdnavavaK9UgzaK29RazaE20mba3a8A9pmwaUTh87ceh85a8AhLxvka3ah6mixrka3ah9pmokcbhLahhXaUmikJFFuuh8XcbhQa3hzindnazcefgCaK6mbaLavaC9RgOaK6GmbarazcdtfIdbg8YaC:YNa8Kavaz9RcdtfIdbg8ZaO:YNMg80a8X9Embdndna8JaOaaf:YNg81:lJbbb9p9DTmba81:OhAxekcjjjj94hAka8ZasaA2aO9R:YNh8Zdndna8Jazasf:YNg81:lJbbb9p9DTmba81:OhOxekcjjjj94hOkamasaO2aC9R:Ya8YNa8ZMNa80Mg8Ya8Xa8Ya8X9DgOEh8XaCaQaOEhQkaza8LfgzaX6mbxlkkaUTh87cbh85ahhLkJFFuuh8XcbhQa8AhCa8FhAa8EhOaKhzindnazazaK9UgXaK29RaXaE20mbdna85TmbaCaCaK9UgXaK29RaXaE20mekaraOfIdbg8Yaz:YNaAIdbg8ZaC:YNMg80a8X9EmbazhXaCh8Wdna87mbaUaOfydbgXh8Wkdndna8Ja8Waaf:YNg81:lJbbb9p9DTmba81:Oh86xekcjjjj94h86ka8Zasa862a8W9R:YNh8Zdndna8JaXaaf:YNg81:lJbbb9p9DTmba81:Oh8Wxekcjjjj94h8Wkamasa8W2aX9R:Ya8YNa8ZMNa80Mg8Ya8Xa8Ya8X9DgXEh8XazaQaXEhQkaCa8L9RhCaAa8NfhAaOa8MfhOaza8LfgzcufaL6mbxdkkJFFuuh8XcbhQa8AhCa8FhAa8EhOaKhzindnazaK6mbaLaCaK6GmbaraOfIdbg8Yaz:YNaAIdbg8ZaC:YNMg80a8X9Embdndna8JaUaOfydbg8Waaf:YNg81:lJbbb9p9DTmba81:Oh85xekcjjjj94h85kamasa852a8W9R:Yg81a8YNa8Za81NMNa80Mg8Ya8Xa8Ya8X9Dg8WEh8XazaQa8WEhQkaCa8L9RhCaAa8NfhAaOa8MfhOaza8LfgzcufaX6mbkkaQTmba8Xay9DTmba8XhyaQhIa8Rh8Pka8Rcefg8Rci9hmbkdna8Pcb9ombalaeavawaDaqaxz1jjjbxekaravcdtg8WfhLdnaITmbaPclfa8PcdtfydbhzaIhCinaLazydbfcb86bbazclfhzaCcufgCmbkkdnavaI9nmbaPclfa8PcdtfydbaIcdtfhzavaI9RhCinaLazydbfce86bbazclfhzaCcufgCmbkkcbhYindnaYa8PSmbcbhzaraPclfaYcdtfydbgKa8Wz:pjjjbhCavhXaIhOinaKaOazaLaCydbgQfRbbgAEcdtfaQBdbaCclfhCaOaAfhOazaA9RcefhzaXcufgXmbkkaYcefgYci9hmbkabaeadaialaIaocefgCarawaDaqakaxamz:hjjjbabaeaIcdtgzfadazfaiazfalaIfavaI9RaCarawaDaqakaxamz:hjjjbkaPc;qbf8Kjjjjbk1iePudnadTmbavci9UgrcufhwcbhDindndndnadaD9RaoaDaofad0EgqTmbcbhkaeaDcdtfgxhmaqhPinaialamydbcx2fgscwfydbcetfgz8VebhHaiasclfydbcetfgO8VebhAaiasydbcetfgs8VebhCazce87ebaOce87ebasce87ebakaAcs4aCcs4faHcs4ffhkamclfhmaPcufgPmbkaqhsinaialaxydbcx2fgmcwfydbcetfcFFi87ebaiamclfydbcetfcFFi87ebaiamydbcetfcFFi87ebaxclfhxascufgsmbkakav0mekabaDfgxce86bbaxcefcbaqcufz:qjjjb8AxekabaDfgxce86bbaxcefcbawz:qjjjb8AarhqkaqaDfgDad6mbkkk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz:kjjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz:kjjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:qjjjb8Aarc;Gbfcbavz:qjjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqc:G1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:jjjjbarcj8Wf8Kjjjjbk:Reeeu8Jjjjjbca9Rgo8Kjjjjbab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbdnadTmbaocbBd3ao9cb83iwao9cb83ibaoaeadaialaoc3falEavcbalEcrz:kjjjbabao8Pib83dbabao8Piw83dwkaocaf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:qjjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:tjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:qjjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:pjjjb8AalcjPf8Kjjjjbk9teiucbcbyd;81jjbgeabcifc98GfgbBd;81jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;81jjbgeabcrfc94GfgbBd;81jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;81jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;81jjbfgdBd;81jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk:nedbcjwktFFuuFFuuFFuubbbbFFuFFFuFFFuFbbbbbbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;0wkxebbbdbbbjNbb".charCodeAt(a);t[a]=i>96?i-97:i>64?i-39:i+4}var n=0;for(a=0;a<18682;++a)t[n++]=t[a]<60?e[t[a]]:64*(t[a]-60)+t[++a];return t.buffer.slice(0,n)}(),{}).then(function(e){(t=e.instance).exports.__wasm_call_ctors()}),supported:!0,buildMeshlets:function(e,i,s,r,o,c){a(e.length%3==0),a(i instanceof Float32Array),a(i.length%s==0),a(s>=3),a(r>0&&r<=256),a(o>=1&&o<=512),c=c||0;var h=4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e);return n(t.exports.meshopt_buildMeshletsFlex,h,i,i.length/s,4*s,r,o,o,c,0)},buildMeshletsFlex:function(e,i,s,r,o,c,h,d){a(e.length%3==0),a(i instanceof Float32Array),a(i.length%s==0),a(s>=3),a(r>0&&r<=256),a(o>=1&&c<=512),a(o<=c),h=h||0,d=d||0;var _=4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e);return n(t.exports.meshopt_buildMeshletsFlex,_,i,i.length/s,4*s,r,o,c,h,d)},buildMeshletsSpatial:function(e,i,s,r,o,c,h){a(e.length%3==0),a(i instanceof Float32Array),a(i.length%s==0),a(s>=3),a(r>0&&r<=256),a(o>=1&&c<=512),a(o<=c),h=h||0;var d=4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e);return n(t.exports.meshopt_buildMeshletsSpatial,d,i,i.length/s,4*s,r,o,c,h)},extractMeshlet:function(t,e){return a(e>=0&&e<t.meshletCount),function(t,e){var a=t.meshlets[4*e+0],i=t.meshlets[4*e+1],n=t.meshlets[4*e+2],s=t.meshlets[4*e+3];return{vertices:t.vertices.subarray(a,a+n),triangles:t.triangles.subarray(i,i+3*s)}}(t,e)},computeClusterBounds:function(e,n,r){return a(e.length%3==0),a(e.length/3<=512),a(n instanceof Float32Array),a(n.length%r==0),a(r>=3),function(e,a,n,r){var o=t.exports.sbrk,c=o(48),h=o(e.byteLength),d=o(a.byteLength),_=new Uint8Array(t.exports.memory.buffer);_.set(i(e),h),_.set(i(a),d),t.exports.meshopt_computeClusterBounds(c,h,e.length,d,n,r);var l=s(c);return o(c-o(0)),l}(4==e.BYTES_PER_ELEMENT?e:new Uint32Array(e),n,n.length/r,4*r)},computeMeshletBounds:function(e,n,r){return a(0!=e.meshletCount),a(n instanceof Float32Array),a(n.length%r==0),a(r>=3),function(e,a,n,r){var o=t.exports.sbrk,c=[],h=o(a.byteLength),d=o(e.vertices.byteLength),_=o(e.triangles.byteLength),l=o(48),u=new Uint8Array(t.exports.memory.buffer);u.set(i(a),h),u.set(i(e.vertices),d),u.set(i(e.triangles),_);for(var f=0;f<e.meshletCount;++f){var b=e.meshlets[4*f+0],g=e.meshlets[4*f+0+1],m=e.meshlets[4*f+0+3];t.exports.meshopt_computeMeshletBounds(l,d+4*b,_+g,m,h,n,r),c.push(s(l))}return o(h-o(0)),c}(e,n,n.length/r,4*r)},computeSphereBounds:function(e,n,r,o){return a(e instanceof Float32Array),a(e.length%n==0),a(n>=3),a(!r||r instanceof Float32Array),a(!r||r.length%o==0),a(!r||o>=1),a(!r||e.length/n==r.length/o),o=o||0,function(e,a,n,r,o){var c=t.exports.sbrk,h=c(48),d=c(e.byteLength),_=r?c(r.byteLength):0,l=new Uint8Array(t.exports.memory.buffer);l.set(i(e),d),r&&l.set(i(r),_),t.exports.meshopt_computeSphereBounds(h,d,a,n,_,r?o:0);var u=s(h);return c(h-c(0)),u}(e,e.length/n,4*n,r,4*o)}}}();qe.ready?.then(()=>{});const Oe=65535;function Xe(t){return t>=0?1:-1}function Ke(t,e,a,i,n){const s=1/(Math.abs(a)+Math.abs(i)+Math.abs(n));let r=a*s,o=n*s;if(i<0){const t=Math.abs(r);r=(1-Math.abs(o))*Xe(r),o=(1-t)*Xe(o)}t[e]=r,t[e+1]=o}function We(t,e,a,i){const n=new Float32Array(2);for(let s=0;s<a;s++){const a=3*s,r=i[a],o=i[a+1];Ke(n,0,r,i[a+2],o);const c=.5*n[0]+.5,h=.5*n[1]+.5,d=65535&Math.floor(c*Oe)|(65535&Math.floor(h*Oe))<<16;t[e+s]=d>>>0}}function Je(t,e,a,i){const n=new Float32Array(2);for(let s=0;s<a;s++){const a=4*s,r=i[a],o=i[a+1],c=i[a+2],h=i[a+3];Ke(n,0,r,c,o);const d=.5*n[0]+.5,_=.5*n[1]+.5,l=(32767&Math.floor(32767*d))<<1|(65535&Math.floor(_*Oe))<<16|(h>=0?1:0);t[e+s]=l>>>0}}const Qe={[Te]:4294967295,[Ve]:[0,0],[Pe]:0,[Ne]:0,[Re]:0,[De]:[0,0],[Le]:0};{const t=new Uint32Array(1);We(t,0,1,[0,0,1]),Qe[Ne]=t[0]}{const t=new Uint32Array(1);Je(t,0,1,[0,0,1,1]),Qe[Re]=t[0]}const Ye=Object.freeze([Me,Ne,Re,Te,Ve,Pe,De,Le]),Ge={};Ye.forEach((t,e)=>{Ge[t]=e}),Object.freeze(Ge);const He={[Me]:3,[Ne]:1,[Re]:1,[Te]:1,[Ve]:2,[Pe]:1,[De]:2,[Le]:1},$e={[Ne]:1,[Re]:2,[Te]:4,[Ve]:8,[Pe]:16,[De]:32,[Le]:64},Ze=Ae.from({bounds_box:se.from(wt,6),address:yt,primitive_count:yt,vertex_count:yt,flags:yt}).pack();function ta(t,e,a,i){const n=a*i,s=new Uint32Array(t,4*e,n);for(let t=i;t<n;t+=i)for(let e=0;e<i;e++)if(s[t+e]!==s[e])return!1;return!0}function ea(t){return ut(3*t,4)>>>2}function aa(t){const e=Math.round(255*t);return e<0?0:e>255?255:e}function ia(t,e,a){return t<e?e:t>a?a:t}function na(t,e,a,i){const n=a.data,s=a.spec.itemSize;for(let a=0;a<i;a++){const i=e.readUint32();for(let e=0;e<s;e++)t[a*s+e]=n[i*s+e]}}function sa(t,e,a,i,n){const s=e.data;switch(i){case Me:for(let e=0;e<n;e++){const e=t.readUint32();for(let t=0;t<3;t++){const i=s[3*e+t];a.writeFloat32(i)}}break;case Ne:{const i=new Float32Array(3*n);na(i,t,e,n);const s=new Uint32Array(n);We(s,0,n,i),a.writeUint32Array(s,0,n)}break;case Re:{const i=new Float32Array(4*n);na(i,t,e,n);const s=new Uint32Array(n);Je(s,0,n,i),a.writeUint32Array(s,0,n)}break;case Te:{const i=new Float32Array(3*n);na(i,t,e,n);const s=new Uint32Array(n);!function(t,e,a,i){for(let e=0;e<a;e++){let a=3*e,n=aa(i[a]),s=aa(i[a+1]),r=aa(i[a+2]);t[0+e]=n|s<<8|r<<16}}(s,0,n,i),a.writeUint32Array(s,0,n)}break;case Pe:{const i=new Float32Array(2*n);na(i,t,e,n);const s=new Uint32Array(n);!function(t,e,a,i){for(let e=0;e<a;e++){let a=2*e,n=Math.round(65535*ia(i[a],0,1)),s=Math.round(65535*ia(i[a+1],0,1));t[0+e]=65535&n|(65535&s)<<16}}(s,0,n,i),a.writeUint32Array(s,0,n)}break;case Ve:{const i=new Float32Array(2*n);na(i,t,e,n),a.writeFloat32Array(i,0,2*n)}break;case De:{const i=new Uint16Array(4*n);na(i,t,e,n);for(let t=0;t<n;t++){const e=4*t,n=65535&i[e+0],s=65535&i[e+1],r=65535&i[e+2],o=65535&i[e+3];a.writeUint32(n|s<<16),a.writeUint32(r|o<<16)}}break;case Le:{const i=new Float32Array(4*n);na(i,t,e,n);for(let t=0;t<n;t++){const e=4*t;let n=Math.max(0,Math.min(255,Math.round(255*i[e+0]))),s=Math.max(0,Math.min(255,Math.round(255*i[e+1]))),r=Math.max(0,Math.min(255,Math.round(255*i[e+2]))),o=Math.max(0,Math.min(255,Math.round(255*i[e+3])));const c=255-(n+s+r+o);if(0!==c){let t=0,e=n;s>e&&(e=s,t=1),r>e&&(e=r,t=2),o>e&&(e=o,t=3);const a=Math.max(0,Math.min(255,e+c));0===t?n=a:1===t?s=a:2===t?r=a:o=a}a.writeUint32(255&n|(255&s)<<8|(255&r)<<16|(255&o)<<24)}}break;default:throw new Error(`Unrecognized attribute attribute '${i}'`)}}function ra(t,e,a){const i=$e[t];return(void 0!==i&&0!==(e&i)?1:a)*He[t]}function oa(t,e,a){const i=Ge[t];if("number"!=typeof i)throw new Error(`Unrecognized ordered attribute '${t}'`);let n=0;for(let t=0;t<i;t++)n+=ra(Ye[t],e,a);return n}const ca={};globalThis.meshlet_debug=ca;const ha=new ArrayBuffer(0),da=Ye.length,_a=new Uint32Array(da),la=new Uint8Array(da),ua=Ge[Le];class fa{#B=ha;#S=new DataView(ha);get data_buffer(){return this.#B}set data_buffer(t){this.#B=t,this.#S=new DataView(this.#B)}#M=ha;#N=new DataView(ha);get metadata_buffer(){return this.#M}set metadata_buffer(t){this.#M=t,this.#N=new DataView(this.#M)}#R=0;#V=0;get count(){return this.#R}set count(t){this.#R=t}get primitive_count(){return this.#V}hash(){const t=this.#M;return I(this.#R,C(t,0,t.byteLength))}equals(t){return this.#R===t.#R&&B(this.#M,0,t.#M,0,t.#M.byteLength)&&B(this.#B,0,t.#B,0,t.#B.byteLength)}compress(){const t=E(),e=z.fromArrayBuffer(this.#M);e.endianness=t;const a=this.#B,i=z.fromArrayBuffer(a);i.endianness=t;const n=z.fromEndianness(t);for(let t=0;t<this.#R;t++){e.position=Ze.size*t;const s=Fe(e,Ze),r=n.position,o=ea(s.primitive_count);i.position=s.address<<2,z.copyBytes(i,n,4*o);const c=i.position>>>2,h=s.vertex_count,d=s.flags;let _=d,l=c;for(let t=0;t<da;t++){const e=Ye[t],i=$e[e];_a[t]=l,la[t]=void 0!==i&&0===(d&i)&&ta(a,l,h,He[e])?1:0,l+=ra(e,d,h)}const u=0===(d&$e[Le])&&0===la[ua];i.position=_a[ua]<<2;const f=u||0!==i.readUint32();for(let t=0;t<da;t++){const e=Ye[t],a=$e[e],s=e===Ne||e===Re;i.position=_a[t]<<2;const r=He[e];if(1!==la[t]||f&&s){const t=0!==(d&a)?1:h;z.copyBytes(i,n,t*r*4)}else _|=a,z.copyBytes(i,n,4*r)}s.flags=_,s.address=r>>>2,e.position=Ze.size*t,Be(s,e,Ze)}n.trim();const s=n.data;return this.#B=s,a.byteLength-s.byteLength}optimize(){}read_header(t){const e=z.fromArrayBuffer(this.#M);return e.endianness=E(),e.position=Ze.size*t,Fe(e,Ze)}read_meshlet(t){const e=this.read_header(t),a=3*e.primitive_count,i=new Uint32Array(a),n=z.fromArrayBuffer(this.#B);n.endianness=E();const s=e.address<<2;n.position=s,n.readUint8Array(i,0,a);const r=new Float32Array(3*e.vertex_count),o=4*ea(e.primitive_count);return n.position=s+o+4*oa(Me,e.flags,e.vertex_count),n.readFloat32Array(r,0,3*e.vertex_count),{header:e,attribute_index:i,attribute_position:r}}#P(t){const e=new V(dt.get([F.Uint32,F.Uint32,F.Uint32,F.Uint32])),a=E(),i=new z;i.endianness=a,t.ensureIndex(),function(t,e,a,i,n,s,r=64,o=64){const c=i===a.length?a:Array.isArray(a)?a.slice(0,i):a.subarray(0,i),h=qe.buildMeshlets(c,s,3,r,o,0);t.setCapacity(t.length+h.meshletCount);for(let a=0;a<h.meshletCount;a++){const i=h.meshlets[4*a],n=h.meshlets[4*a+1],s=h.meshlets[4*a+2],r=h.meshlets[4*a+3],o=e.position>>>2,c=o+s;t.writeRow(t.length,[o,c,s,r]),t.length++,e.writeUint32Array(h.vertices,i,s),e.writeUint32Array(h.triangles,n,3*r)}}(e,i,t.index.data,t.getIndexCount(),t.getVertexCount(),t.getAttribute(Me).data,128,128);const n=e.length,s=z.fromEndianness(a),r=z.fromEndianness(a);t.ensureNormals(),t.ensureTangents();const o=t.bounding_box;let c=0;for(let a=0;a<n;a++){const[n,h,d,_]=e.readRow(a);c+=_;const l={bounds_box:o,address:r.position>>>2,vertex_count:d,primitive_count:_,flags:0};i.position=4*h;const u=3*_;{let t=0,e=0;for(let a=0;a<u;a++)t|=i.readUint32()<<8*e,e++,e>=4&&(r.writeUint32(t),t=0,e=0);e>0&&r.writeUint32(t)}const f=ea(_);r.position=4*(l.address+f);const b=r.position;for(const e of Ye){const a=oa(e,l.flags,d);if(r.position=b+4*a,void 0===t.getAttribute(e)){const t=Qe[e];if(void 0===t)throw new Error(`No default for attribute '${e}'`);switch(l.flags|=$e[e],e){case Ne:case Re:case Te:r.writeUint32(t);break;case Ve:r.writeFloat32Array(t,0,t.length);break;case Pe:r.writeUint32(t);break;case De:r.writeUint32Array(t,0,t.length);break;case Le:r.writeUint32(t);break;default:throw new Error(`Unsupported attribute default ${e}`)}continue}i.position=4*n;const s=r.position;sa(i,t.getAttribute(e),r,e,d);const o=r.position-s;ca[e]=(ca[e]||0)+o}Be(l,s,Ze)}this.#R=n,this.#V=c,s.trim(),this.metadata_buffer=s.data,r.trim(),this.data_buffer=r.data,this.build_bounds()}build_bounds(){const t=z.fromArrayBuffer(this.#M);t.endianness=E();const e=new Float32Array(384),a=z.fromArrayBuffer(this.#B);a.endianness=E();for(let i=0;i<this.#R;i++){t.position=i*Ze.size;const n=Fe(t,Ze),s=n.vertex_count,r=ut(3*n.primitive_count,4),o=oa(Me,n.flags,s);a.position=r+4*(n.address+o),a.readFloat32Array(e,0,3*s),lt(n.bounds_box,e,3*s),t.position=i*Ze.size,Be(n,t,Ze)}}build(t){this.#P(t),this.optimize()}}fa.prototype.isMeshletBatch=!0;let ba=0;class ga{id=ba++;name="";bounding_box=new Float32Array(6);bounding_sphere=new Float32Array(4);primitive_count=0;getIndexCount(){return 3*this.primitive_count}meshlets=new fa;bvh=new ArrayBuffer;hash(){return this.meshlets.hash()}equals(t){return this.meshlets.equals(t.meshlets)}}ga.prototype.isMeshletGeometry=!0,ga.typeName="MeshletGeometry";class ma{klass=null;version=0;initialize(...t){}finalize(){}announce(t,e){}serialize(t,e){}deserialize(t,e){}}ma.prototype.isBinaryClassSerializationAdapter=!0;const pa=4294967295;function ya(t,e,a,i,n,s){const r=i-t,o=s-a;return 2*((n-e)*(r+o)+o*r)}const wa=pa,va=10,Aa=Math.floor(107374182.375);class xa{__data_buffer=new ArrayBuffer(5120);get data_buffer(){return this.__data_buffer}set data_buffer(t){this.__data_buffer=t,this.__data_float32=new Float32Array(this.__data_buffer),this.__data_uint32=new Uint32Array(this.__data_buffer),this.__capacity=Math.floor(t.byteLength/40)}__data_float32=new Float32Array(this.__data_buffer);get data_float32(){return this.__data_float32}__data_uint32=new Uint32Array(this.__data_buffer);__capacity=128;__size=0;__free=[];__free_pointer=0;__root=wa;get root(){return this.__root}set root(t){this.__root=t}get size(){return this.__size}get node_capacity(){return this.__capacity}set node_capacity(t){if(this.__size>t)throw new Error(`Can't shrink capacity to ${t}, because it's below occupancy(${this.__size}).`);this.__set_capacity(t)}__grow_capacity(){if(this.__capacity>=Aa)throw new Error("Can not grow capacity, already at maximum platform limit");let t=Math.ceil(r(1.2*this.__capacity,this.__capacity+64));t>Aa&&(t=Aa),this.__set_capacity(t)}__set_capacity(t){if(this.__capacity===t)return;const e=this.__data_uint32,a=new ArrayBuffer(40*t);this.__data_buffer=a,this.__data_float32=new Float32Array(a),this.__data_uint32=new Uint32Array(a),this.__size>0&&w(e.buffer,e.byteOffset,a,0,Math.min(40*this.__size,a.byteLength)),this.__capacity=t}trim(){this.__capacity>this.__size&&this.__set_capacity(this.__size)}allocate_linear(t){this.node_capacity=t,this.__size=t}allocate_node(){let t;const e=this.__free_pointer;if(e>0){const a=e-1;t=this.__free[a],this.__free_pointer=a}else t=this.__size,t>=this.__capacity&&this.__grow_capacity(),this.__size++;const a=va*t,i=this.__data_float32;i[a]=Number.POSITIVE_INFINITY,i[a+1]=Number.POSITIVE_INFINITY,i[a+2]=Number.POSITIVE_INFINITY,i[a+3]=Number.NEGATIVE_INFINITY,i[a+4]=Number.NEGATIVE_INFINITY,i[a+5]=Number.NEGATIVE_INFINITY;const n=this.__data_uint32;return n[a+6]=wa,n[a+7]=wa,n[a+8]=wa,n[a+9]=0,t}release_node(t){this.__free[this.__free_pointer++]=t}node_is_leaf(t){return this.__data_uint32[va*t+7]===wa}node_get_user_data(t){return this.__data_uint32[va*t+8]}node_set_user_data(t,e){this.__data_uint32[va*t+8]=e}node_get_child1(t){return this.__data_uint32[va*t+7]}node_set_child1(t,e){this.__data_uint32[va*t+7]=e}node_get_child2(t){return this.__data_uint32[va*t+8]}node_set_child2(t,e){this.__data_uint32[va*t+8]=e}node_get_parent(t){return this.__data_uint32[va*t+6]}node_set_parent(t,e){this.__data_uint32[va*t+6]=e}node_get_height(t){return this.__data_uint32[va*t+9]}node_set_height(t,e){this.__data_uint32[va*t+9]=e}node_get_aabb(t,e){const a=va*t,i=this.__data_float32;e[0]=i[a],e[1]=i[a+1],e[2]=i[a+2],e[3]=i[a+3],e[4]=i[a+4],e[5]=i[a+5]}node_set_aabb(t,e){const a=va*t,i=this.__data_float32;i[a]=e[0],i[a+1]=e[1],i[a+2]=e[2],i[a+3]=e[3],i[a+4]=e[4],i[a+5]=e[5]}node_move_aabb(t,e){this.node_set_aabb(t,e);const a=this.__data_uint32[va*t+6];a!==wa&&this.bubble_up_refit(a)}node_set_aabb_primitive(t,e,a,i,n,s,r){const o=va*t,c=this.__data_float32;c[o]=e,c[o+1]=a,c[o+2]=i,c[o+3]=n,c[o+4]=s,c[o+5]=r}node_get_surface_area(t){const e=va*t,a=this.__data_float32;return ya(a[e],a[e+1],a[e+2],a[e+3],a[e+4],a[e+5])}node_get_combined_surface_area(t,e){const a=va*t,i=va*e,n=this.__data_float32;return ya(o(n[a],n[i]),o(n[a+1],n[i+1]),o(n[a+2],n[i+2]),r(n[a+3],n[i+3]),r(n[a+4],n[i+4]),r(n[a+5],n[i+5]))}node_set_combined_aabb(t,e,a){const i=va*e,n=va*a,s=va*t,r=this.__data_float32;c(r,s,r,i,r,n)}insert_leaf(t){let e=this.__data_uint32;if(this.__root===wa)return this.__root=t,void(e[t*va+6]=wa);let a=this.__root;for(;!1===this.node_is_leaf(a);){const i=a*va,n=e[i+7],s=e[i+8],r=this.node_get_surface_area(a),o=this.node_get_combined_surface_area(a,t),c=2*o,h=2*(o-r);let d,_;if(this.node_is_leaf(n))d=this.node_get_combined_surface_area(t,n)+h;else{const e=this.node_get_surface_area(n);d=this.node_get_combined_surface_area(t,n)-e+h}if(this.node_is_leaf(s))_=this.node_get_combined_surface_area(t,s)+h;else{const e=this.node_get_surface_area(s);_=this.node_get_combined_surface_area(t,s)-e+h}if(c<d&&c<_)break;a=d<_?n:s}const i=a,n=e[i*va+6],s=this.allocate_node();e=this.__data_uint32,e[s*va+6]=n,this.node_set_combined_aabb(s,t,i),e[s*va+9]=e[i*va+9]+1,n!==wa?e[n*va+7]===i?e[n*va+7]=s:e[n*va+8]=s:this.__root=s,e[s*va+7]=i,e[s*va+8]=t,e[i*va+6]=s,e[t*va+6]=s,this.bubble_up_update(s)}bubble_up_refit(t){let e=t;const a=this.__data_uint32;do{const t=e*va,i=a[t+7],n=a[t+8];this.node_set_combined_aabb(e,i,n),e=a[t+6]}while(e!==wa)}bubble_up_update(t){let e=t;const a=this.__data_uint32;for(;e!==wa;){e=this.balance_rotate(e);const t=e*va,i=a[t+7],n=a[t+8];a[t+9]=1+r(a[i*va+9],a[n*va+9]),this.node_set_combined_aabb(e,i,n),e=a[t+6]}}remove_leaf(t){if(t===this.__root)return void(this.__root=wa);const e=this.__data_uint32,a=e[t*va+6],i=e[a*va+6];let n;const s=e[a*va+7];n=s===t?e[a*va+8]:s,i!==wa?(e[i*va+7]===a?e[i*va+7]=n:e[i*va+8]=n,e[n*va+6]=i,this.release_node(a),this.bubble_up_update(i)):(this.__root=n,e[n*va+6]=wa,this.release_node(a))}balance_height(t){const e=this.__data_uint32;if(this.node_is_leaf(t)||e[t*va+9]<2)return t;const a=e[t*va+7],i=e[t*va+8],n=e[i*va+9]-e[a*va+9];if(n>1){const n=e[i*va+7],s=e[i*va+8];e[i*va+7]=t;const o=e[t*va+6];return e[i*va+6]=o,e[t*va+6]=i,o!==wa?e[o*va+7]===t?e[o*va+7]=i:e[o*va+8]=i:this.__root=i,e[n*va+9]>e[s*va+9]?(e[i*va+8]=n,e[t*va+8]=s,e[s*va+6]=t,this.node_set_combined_aabb(t,a,s),this.node_set_combined_aabb(i,t,n),e[t*va+9]=1+r(e[a*va+9],e[s*va+9]),e[i*va+9]=1+r(e[t*va+9],e[n*va+9])):(e[i*va+8]=s,e[t*va+8]=n,e[n*va+6]=t,this.node_set_combined_aabb(t,a,n),this.node_set_combined_aabb(i,t,s),e[t*va+9]=1+r(e[a*va+9],e[n*va+9]),e[i*va+9]=1+r(e[t*va+9],e[s*va+9])),i}if(n<-1){const n=e[a*va+7],s=e[a*va+8];e[a*va+7]=t;const o=e[t*va+6];return e[a*va+6]=o,e[t*va+6]=a,o!==wa?e[o*va+7]===t?e[o*va+7]=a:e[o*va+8]=a:this.__root=a,e[n*va+9]>e[s*va+9]?(e[a*va+8]=n,e[t*va+7]=s,e[s*va+6]=t,this.node_set_combined_aabb(t,i,s),this.node_set_combined_aabb(a,t,n),e[t*va+9]=1+r(e[i*va+9],e[s*va+9]),e[a*va+9]=1+r(e[t*va+9],e[n*va+9])):(e[a*va+8]=s,e[t*va+7]=n,e[n*va+6]=t,this.node_set_combined_aabb(t,i,n),this.node_set_combined_aabb(a,t,s),e[t*va+9]=1+r(e[i*va+9],e[n*va+9]),e[a*va+9]=1+r(e[t*va+9],e[s*va+9])),a}return t}balance_rotate(t){const e=this.__data_uint32,a=t*va;if(this.node_is_leaf(t)||e[a+9]<2)return t;const i=e[a+7],n=e[a+8],s=this.node_is_leaf(i),o=this.node_is_leaf(n);let c=0,h=0,d=wa,_=wa,l=wa,u=wa;if(!s){const t=this.node_get_surface_area(i);d=e[i*va+7],_=e[i*va+8];const a=t-this.node_get_combined_surface_area(n,_);a>c&&(c=a,h=1);const s=t-this.node_get_combined_surface_area(d,n);s>c&&(c=s,h=2)}if(!o){const t=this.node_get_surface_area(n);l=e[n*va+7],u=e[n*va+8];const a=t-this.node_get_combined_surface_area(i,u);a>c&&(c=a,h=3);const s=t-this.node_get_combined_surface_area(l,i);s>c&&(c=s,h=4)}if(0===h)return this.balance_height(t);switch(h){case 1:e[a+8]=d,e[i*va+7]=n,e[d*va+6]=t,e[n*va+6]=i,this.node_set_combined_aabb(i,n,_),e[i*va+9]=1+r(e[n*va+9],e[_*va+9]);break;case 2:e[a+8]=_,e[i*va+8]=n,e[_*va+6]=t,e[n*va+6]=i,this.node_set_combined_aabb(i,d,n),e[i*va+9]=1+r(e[d*va+9],e[n*va+9]);break;case 3:e[a+7]=l,e[n*va+7]=i,e[l*va+6]=t,e[i*va+6]=n,this.node_set_combined_aabb(n,i,u),e[n*va+9]=1+r(e[i*va+9],e[u*va+9]);break;case 4:e[a+7]=u,e[n*va+8]=i,e[u*va+6]=t,e[i*va+6]=n,this.node_set_combined_aabb(n,l,i),e[n*va+9]=1+r(e[l*va+9],e[i*va+9])}return e[a+9]=1+r(e[e[a+7]*va+9],e[e[a+8]*va+9]),t}node_assign_children(t,e,a){this.node_set_combined_aabb(t,e,a),this.node_assign_children_only(t,e,a)}node_assign_children_only(t,e,a){this.node_set_parent(e,t),this.node_set_parent(a,t),this.node_set_child1(t,e),this.node_set_child2(t,a),this.node_set_height(t,1+Math.max(this.node_get_height(e),this.node_get_height(a)))}release_all(){this.__root=wa,this.__size=0,this.__free_pointer=0}traverse(t,e){let a=0;const i=[],n=this.__root;n!==wa&&(i[a++]=n);const s=this.__data_uint32;for(;a>0;){a--;const n=i[a];t.call(e,n,this);const r=n*va,o=s[r+7],c=s[r+8];o!==wa&&(i[a++]=c,i[a++]=o)}}collect_nodes_all(t,e){let a=e;return this.traverse(e=>{t[a++]=e}),a-e}__move_node_links(t,e){const a=this.__data_uint32,i=t*va,n=a[i+7],s=a[i+8];n!==wa&&(a[n*va+6]=e,a[s*va+6]=e);const r=a[i+6];r!==wa&&(a[r*va+7]===t?a[r*va+7]=e:a[r*va+8]=e)}swap_nodes(t,e){const a=this.__data_uint32,n=t*va,s=e*va;return a[n+6]!==e&&a[s+6]!==t&&(this.__move_node_links(t,e),this.__move_node_links(e,t),i(a,n,this.__free,this.__free_pointer,va),i(a,s,a,n,va),i(this.__free,this.__free_pointer,a,s,va),this.__root===t?this.__root=e:this.__root===e&&(this.__root=t),!0)}}xa.prototype.isBVH=!0;const ka=new ArrayBuffer(9280),za=new Float32Array(ka,0,1536),ja=new Float32Array(ka,6144,256),Ua=new Float32Array(ka,7168,256),Ea=new Uint32Array(ka,8192,256),Fa=new Uint32Array(ka,9216,16);function Ia(t,e,a){if(1===ue(a))return e[L(a)];let i=Ea[a],n=a&~i;const s=t.allocate_node(),r=Ia(t,e,i),o=Ia(t,e,n);return t.node_assign_children(s,r,o),s}function Ca(t,e,a){if(e===wa)return;if(t.node_is_leaf(e))return;const i=t.node_get_child1(e),n=t.node_get_child2(e);let s=0;if(i!==wa&&(Fa[s++]=i),n!==wa&&(Fa[s++]=n),0!==s){for(;s<a;){let e=-1,a=0;for(let i=0;i<s;i++){const n=Fa[i];if(t.node_is_leaf(n))continue;const s=t.node_get_surface_area(n);s>a&&(a=s,e=i)}if(-1===e)break;const i=Fa[e],n=t.node_get_child1(i),r=t.node_get_child2(i);Fa[e]=n,Fa[s++]=r,t.release_node(i)}s<=2||function(t,e,a,i){const n=t.data_float32,s=(1<<i)-1;for(let t=1;t<=s;t++){let e,i,s,r,o,c;const h=q(t);if(h){const h=a[L(t)]*va;e=n[h],i=n[h+1],s=n[h+2],r=n[h+3],o=n[h+4],c=n[h+5]}else{const a=t&-t,n=6*a,h=6*(t^a);e=Math.min(za[n],za[h]),i=Math.min(za[n+1],za[h+1]),s=Math.min(za[n+2],za[h+2]),r=Math.max(za[n+3],za[h+3]),o=Math.max(za[n+4],za[h+4]),c=Math.max(za[n+5],za[h+5])}const d=6*t;za[d]=e,za[d+1]=i,za[d+2]=s,za[d+3]=r,za[d+4]=o,za[d+5]=c;const _=r-e,l=o-i,u=c-s,f=2*(_*l+l*u+u*_);ja[t]=f,h&&(Ua[t]=1*f)}for(let t=2;t<=i;t++)for(let e=1;e<=s;e++){if(ue(e)!==t)continue;let a=Infinity,i=0;const n=e-1&e;let s=-n&e;do{const t=Ua[s]+Ua[e^s];t<a&&(a=t,i=s),s=s-n&e}while(0!==s);const r=1.2*ja[e]+a;Ua[e]=r,Ea[e]=i}!function(t,e,a,i){let n=Ea[i],s=i&~n;t.node_assign_children(e,Ia(t,a,n),Ia(t,a,s))}(t,e,a,(1<<i)-1)}(t,e,Fa,s)}}function Ba(t,e=t.root,a=7){if(e===wa)return;if(t.node_is_leaf(e))return;let i=e,n=0,s=t.node_get_child1(i);if(s===wa&&(s=t.node_get_child2(i)),s===wa)return;const r=(o=a)<2?0:32-Math.clz32(o-1);for(var o;;){if(2===n){const i=t.node_get_child1(s),n=t.node_get_child2(s);t.node_set_height(s,1+Math.max(t.node_get_height(i),t.node_get_height(n))),(s===e||t.node_get_height(s)>=r)&&Ca(t,s,a)}if(t.node_is_leaf(s)){const e=i;n=t.node_get_child1(e)===s?1:2,i=s,s=e}else if(2===n){if(s===e)break;i=s;const a=t.node_get_parent(s);if(n=t.node_get_child1(a)===s?1:2,s===e)break;s=a}else if(1===n){const e=t.node_get_child2(s);i=s,e===wa?(n=2,s=t.node_get_parent(s)):(n=0,s=e)}else if(0===n){const e=t.node_get_child1(s),a=t.node_get_child2(s);if(e!==wa)n=0,i=s,s=e;else if(a!==wa)n=0,i=s,s=a;else{const e=t.node_get_child1(i);t.release_node(s),e===s?(t.node_set_child1(i,wa),i=wa,n=1):(t.node_set_child2(i,wa),i=wa,n=2),s=i}}}}function Sa(t,e,a){let i=t;return i>e&&(i=e),i>a&&(i=a),i}function Ma(t,e,a,i,n,s){const r=3*i,o=3*n,c=3*s,h=a[r],d=a[r+1],_=a[r+2],l=a[o],u=a[o+1],f=a[o+2],b=a[c],g=a[c+1],m=a[c+2];t[e]=Sa(h,l,b),t[e+1]=Sa(d,u,g),t[e+2]=Sa(_,f,m),t[e+3]=le(h,l,b),t[e+4]=le(d,u,g),t[e+5]=le(_,f,m)}function Na(t,e,a){if(0===e||0===t.count)return new ArrayBuffer(0);const n=new xa;if(function({bvh:t,meshlets:e,bounding_box:a,primitive_count:i,optimization:n=1}){const s=e.count;if(t.release_all(),0===s)return t.root=wa,void t.trim();const o=new Uint32Array(s);let c=0;for(let t=0;t<s;t++){const i=e.read_header(t);c+=i.primitive_count;const n=i.bounds_box,s=.5*(n[0]+n[3]),r=.5*(n[1]+n[4]),h=.5*(n[2]+n[5]);o[t]=u(s,r,h,a)}if(0===c)return t.root=wa,void t.trim();const h=c+r(0,c-1);t.allocate_linear(h);const d=new Uint32Array(s),_=r(0,s-1);{const a=h-_,i=new Uint32Array(a);let n=0;const r=new Uint32Array(128);for(let t=0;t<a;t++){const e=h-1-t;i[t]=e}const c=new Uint32Array(s);for(let t=0;t<s;t++)c[t]=t;c.sort((t,e)=>o[t]-o[e]);const l=new Float32Array(6);for(let a=0;a<s;a++){const s=c[a],o=e.read_meshlet(s),h=o.header,_=o.attribute_index,u=o.attribute_position,f=h.primitive_count;for(let e=0;e<f;e++){const a=3*e;Ma(l,0,u,_[a+0],_[a+1],_[a+2]);const o=(16777215&s)<<8|255&e,c=i[n++];t.node_set_aabb(c,l),t.node_set_user_data(c,o),t.node_set_child1(c,wa),r[e]=c}let b=f;for(;b>1;){let e=0,a=0;for(;a+1<b;){const s=r[a++],o=r[a++],c=i[n++];t.node_assign_children(c,o,s),r[e++]=c}for(;a<b;)r[e++]=r[a++];b=e}d[a]=r[0]}}{let e=s,a=0;const i=_,n=new Uint32Array(i);for(let t=0;t<i;t++){const e=i-1-t;n[t]=e}for(;e>1;){let i=0,s=0;for(;s+1<e;){const e=d[s++],r=d[s++],o=n[a++];t.node_assign_children(o,r,e),d[i++]=o}for(;s<e;)d[i++]=d[s++];e=i}const r=d[0];t.node_set_parent(r,wa),t.root=r}for(let e=0;e<n;e++)Ba(t);t.trim()}({bvh:n,meshlets:t,bounding_box:a,primitive_count:e}),0===n.size)return new ArrayBuffer(0);const s=new ArrayBuffer(32*n.size);return function(t,e,a,n,s){const r=new Uint32Array(a,0),o=new Uint32Array(t,0);for(let t=0;t<s;t++){const e=10*t,a=8*t;i(r,e,o,a,6),o[a+6]=r[e+7],o[a+7]=r[e+8]}}(s,0,n.data_buffer,0,n.size),s}const Ra=new class extends ma{version=0;klass=ga;serialize_bvh=!0;serialize(t,e){t.writeUint32(e.primitive_count),t.writeFloat32Array(e.bounding_box,0,6),t.writeFloat32Array(e.bounding_sphere,0,4),t.writeUTF8String(e.name);const a=e.meshlets;t.writeUint32(a.count),t.writeUint32(a.metadata_buffer.byteLength),t.writeBytes(new Uint8Array(a.metadata_buffer),0,a.metadata_buffer.byteLength),t.writeUint32(a.data_buffer.byteLength),t.writeBytes(new Uint8Array(a.data_buffer),0,a.data_buffer.byteLength),this.serialize_bvh?(t.writeUint32(e.bvh.byteLength),t.writeBytes(new Uint8Array(e.bvh),0,e.bvh.byteLength)):t.writeUint32(0)}deserialize(t,e){e.primitive_count=t.readUint32(),t.readFloat32Array(e.bounding_box,0,6),t.readFloat32Array(e.bounding_sphere,0,4),e.name=t.readUTF8String(),e.meshlets.count=t.readUint32();const a=t.readUint32(),i=new Uint8Array(a);t.readBytes(i,0,a),e.meshlets.metadata_buffer=i.buffer;const n=t.readUint32(),s=new Uint8Array(n);t.readBytes(s,0,n),e.meshlets.data_buffer=s.buffer;const r=t.readUint32();if(0===r&&e.primitive_count>0)e.bvh=Na(e.meshlets,e.primitive_count,e.bounding_box);else{const a=new Uint8Array(r);t.readBytes(a,0,r),e.bvh=a.buffer}}};function Va(t,e,a,i,n,s,r,o){const c=3*o;let h,d,_;void 0!==r?(h=r[c],d=r[c+1],_=r[c+2]):(h=c,d=c+1,_=c+2);const l=h*n+i,u=d*n+i,f=_*n+i;let b=a[l],g=a[l+1],m=a[l+2],p=a[u],y=a[u+1],w=a[u+2],v=a[f],A=a[f+1],x=a[f+2];t[e]=b,t[e+1]=g,t[e+2]=m,t[e+3]=p,t[e+4]=y,t[e+5]=w,t[e+6]=v,t[e+7]=A,t[e+8]=x}function Pa(t,e,a,i,n,s){const r=t.getLeafAddress(e);Ma(t.__data_float32,r,a,i,n,s),t.__data_uint32[r+6]=e}const Ta=new Float64Array(9),Da=[F.Uint64,F.Int64];function La(t){return 1===t?"":", true"}function qa(t,e){return 0===t?"p":"p + "+t*e}function Oa(t,e){return 0===e?t:t+" + "+e}function Xa(t){return 1===t?"component":"component * "+t}class Ka{type=F.Float32;offset=0;components=0;stride=0;data_view=null;read=null;write=null;read_component=null;write_component=null;#T=null;#D=null;#L=null;#q=null;constructor(t,e,a){if(-1!==Da.indexOf(t))throw new Error("type '"+t+"' is not supported by BinaryDataLayer: its DataView accessors are BigInt-valued, and no result contract for that exists yet");this.type=t,this.offset=e,this.components=a}get byte_size(){return D[this.type]*this.components}bind(t,e){e===this.stride&&null!==this.#T||(this.stride=e,this.#T=function(t,e,a,i){const n=P[t],s=D[t],r=La(s),o=["const p = id * "+i+" + "+e+";"];for(let t=0;t<a;t++)o.push("result["+Oa("result_offset",t)+"] = data_view."+n+"("+qa(t,s)+r+");");return rt.INSTANCE.compile({args:["data_view"],code:"return function (result, result_offset, id) {\n"+o.join("\n")+"\n};"})}(this.type,this.offset,this.components,e),this.#D=function(t,e,a,i){const n=T[t],s=D[t],r=La(s),o=["const p = id * "+i+" + "+e+";"];for(let t=0;t<a;t++)o.push("data_view."+n+"("+qa(t,s)+", value["+Oa("value_offset",t)+"]"+r+");");return rt.INSTANCE.compile({args:["data_view"],code:"return function (id, value, value_offset) {\n"+o.join("\n")+"\n};"})}(this.type,this.offset,this.components,e),this.#L=function(t,e,a){const i=P[t],n=D[t],s="id * "+a+" + "+e+" + "+Xa(n);return rt.INSTANCE.compile({args:["data_view"],code:"return function (id, component) {\nreturn data_view."+i+"("+s+La(n)+");\n};"})}(this.type,this.offset,e),this.#q=function(t,e,a){const i=T[t],n=D[t],s="id * "+a+" + "+e+" + "+Xa(n);return rt.INSTANCE.compile({args:["data_view"],code:"return function (id, component, value) {\ndata_view."+i+"("+s+", value"+La(n)+");\n};"})}(this.type,this.offset,e)),this.data_view=t,this.read=this.#T(t),this.write=this.#D(t),this.read_component=this.#L(t),this.write_component=this.#q(t)}}Ka.prototype.isBinaryDataLayer=!0;class Wa{#O;#X=[];#K=0;#W=0;#J=new ArrayBuffer(0);#Q=new Uint8Array(this.#J);#S=new DataView(this.#J);constructor(t){this.#O=t}get record_size(){return this.#K}get layers(){return this.#X}get capacity(){return this.#W}get byteSize(){return this.#W*this.#K}get data_view(){return this.#S}add_layer(t,e){const a=this.#K,i=new Ka(t,this.#K,e);return this.#X.push(i),this.#K+=i.byte_size,this.#Y(this.#W,a),i}ensure_capacity(t){t<=this.#W||this.#Y(t,this.#K)}sync_capacity(){this.ensure_capacity(this.#O.capacity)}trim(){const t=this.#O.size;t>=this.#W||this.#Y(t,this.#K)}swap(t,e){if(t===e)return;const a=this.#K;n(this.#Q,t*a,this.#Q,e*a,a)}copy_record(t,e,a){const i=this.#K,n=a*i;this.#Q.set(e.#Q.subarray(n,n+i),t*i)}record_equal(t,e){if(t===e)return!0;const a=this.#K,i=t*a,n=e*a,s=this.#Q;for(let t=0;t<a;t++)if(s[i+t]!==s[n+t])return!1;return!0}copy(t){if(this!==t){this.#X=[],this.#K=0,this.#W=0,this.#J=new ArrayBuffer(0),this.#Q=new Uint8Array(this.#J),this.#S=new DataView(this.#J);for(const e of t.layers)this.add_layer(e.type,e.components);this.ensure_capacity(t.capacity),this.#Q.set(t.#Q.subarray(0,t.capacity*t.record_size))}}#Y(t,e){const a=this.#K,i=this.#Q,n=this.#W;this.#J=new ArrayBuffer(t*a),this.#Q=new Uint8Array(this.#J),this.#S=new DataView(this.#J),this.#W=t;const s=Math.min(t,n);if(s>0&&e>0)if(e===a)this.#Q.set(i.subarray(0,s*a));else for(let t=0;t<s;t++)this.#Q.set(i.subarray(t*e,t*e+e),t*a);for(const t of this.#X)t.bind(this.#S,a)}}Wa.prototype.isBinaryDataBlock=!0;class Ja{__free=[];__free_pointer=0;__size=0;constructor(t,e=128,a=!1){this.__item_size=t,this.__data_buffer=S(v(e*t),a),this.__data_uint8=new Uint8Array(this.__data_buffer),this.__data_uint32=new Uint32Array(this.__data_buffer),this.__data_float32=new Float32Array(this.__data_buffer),this.data_view=new DataView(this.__data_buffer),this.__capacity=e,this.__occupancy=new be(this.__capacity),this.__occupancy.preventShrink()}fromArrayBuffer(t,e=0){const a=Math.floor(t.byteLength/this.__item_size);this.__data_buffer=t,this.__data_uint8=new Uint8Array(t),this.__data_uint32=new Uint32Array(t),this.__data_float32=new Float32Array(t),this.data_view=new DataView(t),this.__capacity=a,this.__free_pointer=0,this.__size=e,this.__occupancy=new be(a),this.__occupancy.preventShrink(),e>0&&this.__occupancy.setRange(0,e-1)}get arrayBuffer(){return this.__data_buffer}get item_size(){return this.__item_size}get size(){return this.__size}count(){return this.__size-this.__free_pointer}get byteSize(){return this.__capacity*this.__item_size}get capacity(){return this.__capacity}get data_uint32(){return this.__data_uint32}get data_float32(){return this.__data_float32}trim(){this.__set_capacity(this.__size)}element_address(t){return this.__item_size*t}element_word(t){return Math.floor(this.element_address(t)/4)}is_allocated(t){return!(t>=this.__size)&&this.__occupancy.get(t)}__set_capacity(t){if(this.__capacity===t)return;const e=this.__data_uint8,a=v(t*this.__item_size),n=new(0,this.__data_buffer.constructor)(a);this.__data_buffer=n,this.__data_uint8=new Uint8Array(n),this.__data_uint32=new Uint32Array(this.__data_buffer),this.__data_float32=new Float32Array(this.__data_buffer),this.data_view=new DataView(n),function(t,e){const a=e.length;a>=t.length?e.set(t,0):t.constructor===e.constructor?w(t.buffer,t.byteOffset,e.buffer,e.byteOffset,Math.min(t.byteLength,e.byteLength)):i(t,0,e,0,a)}(e,this.__data_uint8),this.__capacity=t}__grow_capacity(t){const e=Math.ceil(le(t,1.2*this.__capacity,this.__capacity+32));this.__set_capacity(e)}ensure_capacity(t){this.__capacity<t&&this.__grow_capacity(t)}allocate(){if(this.__free_pointer>0){this.__free_pointer--;const t=this.__free[this.__free_pointer];return this.__occupancy.set(t,!0),t}let t=this.__size;return this.__size++,this.__size>=this.__capacity&&this.__grow_capacity(this.__size),this.__occupancy.set(t,!0),t}allocate_continuous(t){const e=this.__size;return this.__size+=t,this.__size>=this.__capacity&&this.__grow_capacity(this.__size),t>0&&this.__occupancy.setRange(e,e+t-1),e}swap(t,e){if(t===e)return;const a=this.__item_size;n(this.__data_uint8,t*a,this.__data_uint8,e*a,a)}release(t){t===this.__size-1?(this.__size--,this.__occupancy.set(t,!1)):t>=this.__size||(this.__free[this.__free_pointer++]=t,this.__occupancy.set(t,!1))}clear_free_set(){this.__free_pointer=0,this.__size>0&&this.__occupancy.setRange(0,this.__size-1)}truncate(t){this.__size=t,this.__free_pointer=0,this.__occupancy.reset(),t>0&&this.__occupancy.setRange(0,t-1)}clear(){this.__size=0,this.__free_pointer=0,this.__occupancy.reset()}copy(t){this.__size=t.size,this.__item_size=t.item_size;const e=t.size*this.item_size,a=this.__data_buffer,i=t.__data_buffer;a.byteLength<e?this.fromArrayBuffer(i.slice(0),this.__size):w(i,0,a,0,e),this.__free_pointer=t.__free_pointer,this.__free=t.__free.slice(),this.__rebuild_occupancy_from_free()}__rebuild_occupancy_from_free(){this.__occupancy=new be(Math.max(this.__capacity,this.__size)),this.__occupancy.preventShrink(),this.__size>0&&this.__occupancy.setRange(0,this.__size-1);const t=this.__free,e=this.__free_pointer;for(let a=0;a<e;a++)this.__occupancy.set(t[a],!1)}*[Symbol.iterator](){for(let t=0;t<this.__size;t++)!1!==this.is_allocated(t)&&(yield t)}}Ja.prototype.isBinaryElementPool=!0;const Qa=4294967295;function Ya(t,e,a){if(null===a)return null;const i=null===t?new Wa(e):t;return i.copy(a),i.sync_capacity(),i}class Ga{__vertex_pool=new Ja(28);__edge_pool=new Ja(28);__loop_pool=new Ja(28);__face_pool=new Ja(16);__vertex_data_block=null;__edge_data_block=null;__loop_data_block=null;__face_data_block=null;get byteSize(){let t=this.__loop_pool.byteSize+this.__vertex_pool.byteSize+this.__edge_pool.byteSize+this.__face_pool.byteSize;return null!==this.__vertex_data_block&&(t+=this.__vertex_data_block.byteSize),null!==this.__edge_data_block&&(t+=this.__edge_data_block.byteSize),null!==this.__loop_data_block&&(t+=this.__loop_data_block.byteSize),null!==this.__face_data_block&&(t+=this.__face_data_block.byteSize),t}trim(){this.__loop_pool.trim(),this.__vertex_pool.trim(),this.__edge_pool.trim(),this.__face_pool.trim(),null!==this.__vertex_data_block&&this.__vertex_data_block.trim(),null!==this.__edge_data_block&&this.__edge_data_block.trim(),null!==this.__loop_data_block&&this.__loop_data_block.trim(),null!==this.__face_data_block&&this.__face_data_block.trim()}get vertices(){return this.__vertex_pool}get edges(){return this.__edge_pool}get loops(){return this.__loop_pool}get faces(){return this.__face_pool}get vertex_data(){return this.__vertex_data_block}get edge_data(){return this.__edge_data_block}get loop_data(){return this.__loop_data_block}get face_data(){return this.__face_data_block}vertex_data_add_layer(t,e){null===this.__vertex_data_block&&(this.__vertex_data_block=new Wa(this.__vertex_pool));const a=this.__vertex_data_block.add_layer(t,e);return this.__vertex_data_block.sync_capacity(),a}edge_data_add_layer(t,e){null===this.__edge_data_block&&(this.__edge_data_block=new Wa(this.__edge_pool));const a=this.__edge_data_block.add_layer(t,e);return this.__edge_data_block.sync_capacity(),a}loop_data_add_layer(t,e){null===this.__loop_data_block&&(this.__loop_data_block=new Wa(this.__loop_pool));const a=this.__loop_data_block.add_layer(t,e);return this.__loop_data_block.sync_capacity(),a}face_data_add_layer(t,e){null===this.__face_data_block&&(this.__face_data_block=new Wa(this.__face_pool));const a=this.__face_data_block.add_layer(t,e);return this.__face_data_block.sync_capacity(),a}delete_vertex_data(){return null!==this.__vertex_data_block&&(this.__vertex_data_block=null,!0)}delete_edge_data(){return null!==this.__edge_data_block&&(this.__edge_data_block=null,!0)}delete_loop_data(){return null!==this.__loop_data_block&&(this.__loop_data_block=null,!0)}delete_face_data(){return null!==this.__face_data_block&&(this.__face_data_block=null,!0)}clear(){this.__vertex_pool.clear(),this.__edge_pool.clear(),this.__loop_pool.clear(),this.__face_pool.clear()}vertex_read_coordinate(t,e,a){const i=this.__vertex_pool,n=i.element_address(a)>>2;t[e]=i.data_float32[n],t[e+1]=i.data_float32[n+1],t[e+2]=i.data_float32[n+2]}vertex_write_coordinate(t,e,a){const i=this.__vertex_pool,n=i.element_address(t)>>2;i.data_float32[n]=e[a],i.data_float32[n+1]=e[a+1],i.data_float32[n+2]=e[a+2]}vertex_read_normal(t,e,a){const i=this.__vertex_pool,n=i.element_address(a)+12>>2;t[e]=i.data_float32[n],t[e+1]=i.data_float32[n+1],t[e+2]=i.data_float32[n+2]}vertex_write_normal(t,e,a){const i=this.__vertex_pool,n=i.element_address(t)+12>>2;i.data_float32[n]=e[a],i.data_float32[n+1]=e[a+1],i.data_float32[n+2]=e[a+2]}vertex_read_edge(t){const e=this.__vertex_pool,a=e.element_address(t);return e.data_view.getUint32(a+24)}vertex_write_edge(t,e){const a=this.__vertex_pool,i=a.element_address(t);a.data_view.setUint32(i+24,e)}edge_read_vertex1(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a)}edge_write_vertex1(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i,e)}edge_read_vertex2(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+4)}edge_write_vertex2(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+4,e)}edge_read_loop(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+8)}edge_write_loop(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+8,e)}edge_read_v1_disk_next(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+12)}edge_write_v1_disk_next(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+12,e)}edge_read_v1_disk_prev(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+16)}edge_write_v1_disk_prev(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+16,e)}edge_read_v2_disk_next(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+20)}edge_write_v2_disk_next(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+20,e)}edge_read_v2_disk_prev(t){const e=this.__edge_pool,a=e.element_address(t);return e.data_view.getUint32(a+24)}edge_write_v2_disk_prev(t,e){const a=this.__edge_pool,i=a.element_address(t);a.data_view.setUint32(i+24,e)}vertex_create(){const t=this.__vertex_pool.allocate();return this.__vertex_data_block?.sync_capacity(),t}vertices_create_continuous(t){const e=this.__vertex_pool.allocate_continuous(t);return this.__vertex_data_block?.sync_capacity(),e}vertex_destroy(t){this.__vertex_pool.release(t)}edge_create(){const t=this.__edge_pool.allocate();return this.__edge_data_block?.sync_capacity(),t}edge_destroy(t){this.__edge_pool.release(t)}face_create(){const t=this.__face_pool.allocate();return this.__face_data_block?.sync_capacity(),t}faces_create_continuous(t){const e=this.__face_pool.allocate_continuous(t);return this.__face_data_block?.sync_capacity(),e}face_destroy(t){this.__face_pool.release(t)}loop_create(){const t=this.__loop_pool.allocate();return this.__loop_data_block?.sync_capacity(),this.loop_initialize(t),t}loop_destroy(t){this.__loop_pool.release(t)}loop_initialize(t){this.loop_write_radial_next(t,t),this.loop_write_radial_prev(t,t),this.loop_write_next(t,t),this.loop_write_prev(t,t)}loop_read_vertex(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a)}loop_write_vertex(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i,e)}loop_read_edge(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+4)}loop_write_edge(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+4,e)}loop_read_face(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+8)}loop_write_face(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+8,e)}loop_read_radial_next(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+12)}loop_write_radial_next(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+12,e)}loop_read_radial_prev(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+16)}loop_write_radial_prev(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+16,e)}loop_read_next(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+20)}loop_write_next(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+20,e)}loop_read_prev(t){const e=this.__loop_pool,a=e.element_address(t);return e.data_view.getUint32(a+24)}loop_write_prev(t,e){const a=this.__loop_pool,i=a.element_address(t);a.data_view.setUint32(i+24,e)}face_read_loop(t){const e=this.__face_pool,a=e.element_address(t);return e.data_view.getUint32(a)}face_write_loop(t,e){const a=this.__face_pool,i=a.element_address(t);a.data_view.setUint32(i,e)}face_read_normal(t,e,a){const i=this.__face_pool,n=i.element_address(a)+4>>2;t[e]=i.data_float32[n],t[e+1]=i.data_float32[n+1],t[e+2]=i.data_float32[n+2]}face_write_normal(t,e,a){const i=this.__face_pool,n=i.element_address(t)+4>>2;i.data_float32[n]=e[a],i.data_float32[n+1]=e[a+1],i.data_float32[n+2]=e[a+2]}copy(t){this!==t&&(this.__vertex_pool.copy(t.vertices),this.__edge_pool.copy(t.edges),this.__loop_pool.copy(t.loops),this.__face_pool.copy(t.faces),this.__vertex_data_block=Ya(this.__vertex_data_block,this.__vertex_pool,t.vertex_data),this.__edge_data_block=Ya(this.__edge_data_block,this.__edge_pool,t.edge_data),this.__loop_data_block=Ya(this.__loop_data_block,this.__loop_pool,t.loop_data),this.__face_data_block=Ya(this.__face_data_block,this.__face_pool,t.face_data))}clone(){const t=new Ga;return t.copy(this),t}}function Ha(t,e,a){t.loop_write_edge(e,a);const i=t.edge_read_loop(a);if(i===Qa)t.edge_write_loop(a,e),t.loop_write_radial_next(e,e),t.loop_write_radial_prev(e,e);else{const a=t.loop_read_radial_prev(i);t.loop_write_radial_next(a,e),t.loop_write_radial_prev(e,a),t.loop_write_radial_next(e,i),t.loop_write_radial_prev(i,e)}}function $a(t,e,a){const i=t.edge_read_vertex1(e)===a,n=t.vertex_read_edge(a);if(n===Qa)i?(t.edge_write_v1_disk_prev(e,e),t.edge_write_v1_disk_next(e,e)):(t.edge_write_v2_disk_prev(e,e),t.edge_write_v2_disk_next(e,e)),t.vertex_write_edge(a,e);else{const s=t.edge_read_vertex1(n)===a,r=s?t.edge_read_v1_disk_prev(n):t.edge_read_v2_disk_prev(n);i?(t.edge_write_v1_disk_prev(e,r),t.edge_write_v1_disk_next(e,n)):(t.edge_write_v2_disk_prev(e,r),t.edge_write_v2_disk_next(e,n)),t.edge_read_vertex1(r)===a?t.edge_write_v1_disk_next(r,e):t.edge_write_v2_disk_next(r,e),s?t.edge_write_v1_disk_prev(n,e):t.edge_write_v2_disk_prev(n,e)}}function Za(t,e,a){const i=function(t,e,a){const i=t.vertex_read_edge(e);if(i===Qa)return Qa;let n=i;do{const i=t.edge_read_vertex1(n),s=t.edge_read_vertex2(n);if(i===e&&s===a||i===a&&s===e)return n;if(i===e)n=t.edge_read_v1_disk_next(n);else{if(s!==e)throw new Error("Invalid edge, not connected to first vertex");n=t.edge_read_v2_disk_next(n)}}while(n!==i);return Qa}(t,e,a);return i!==Qa?i:function(t,e,a){const i=t.edge_create();return t.edge_write_vertex1(i,e),t.edge_write_vertex2(i,a),t.edge_write_loop(i,Qa),$a(t,i,e),e!==a&&$a(t,i,a),i}(t,e,a)}function ti(t,e,a,i){t.clear();const n=a.length/3;t.vertices_create_continuous(n);for(let e=0;e<n;e++){const i=3*e,n=e;t.vertex_write_coordinate(n,a,i),t.vertex_write_edge(n,Qa)}const s=e.length/3;t.faces_create_continuous(s),t.loops.ensure_capacity(3*s),t.edges.ensure_capacity(1.6*s);for(let a=0;a<s;a++){const i=3*a,n=e[i],s=e[i+1],r=e[i+2],o=a,c=Za(t,n,s),h=Za(t,s,r),d=Za(t,r,n),_=t.loop_create(),l=t.loop_create(),u=t.loop_create();t.loop_write_vertex(_,n),t.loop_write_face(_,o),t.loop_write_vertex(l,s),t.loop_write_face(l,o),t.loop_write_vertex(u,r),t.loop_write_face(u,o),Ha(t,_,c),Ha(t,l,h),Ha(t,u,d),t.loop_write_next(_,l),t.loop_write_prev(_,u),t.loop_write_next(l,u),t.loop_write_prev(l,_),t.loop_write_next(u,_),t.loop_write_prev(u,l),t.face_write_loop(o,_)}}function ei(t,e){const a=t.edge_read_loop(e);return a!==Qa&&t.loop_read_radial_next(a)===a}function ai(t,e,a){const i=t.edge_read_vertex1(e),n=t.edge_read_vertex2(e);return i===a?n:i}Ga.prototype.isBinaryTopology=!0;const ii=[],ni=[],si="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(let t=0,e=64;t<e;++t)ii[t]=si[t],ni[si.charCodeAt(t)]=t;function ri(t){return ii[t>>18&63]+ii[t>>12&63]+ii[t>>6&63]+ii[63&t]}function oi(t,e,a){const i=[];for(let n=e;n<a;n+=3){const e=(t[n]<<16&16711680)+(t[n+1]<<8&65280)+(255&t[n+2]);i.push(ri(e))}return i.join("")}ni["-".charCodeAt(0)]=62,ni["_".charCodeAt(0)]=63;const ci=16383;class hi{static encode(t){return function(t){const e=t.length,a=e%3,i=[],n=e-a;for(let e=0;e<n;e+=ci){const a=oi(t,e,e+ci>n?n:e+ci);i.push(a)}if(1===a){const a=t[e-1];i.push(ii[a>>2]+ii[a<<4&63]+"==")}else if(2===a){const a=(t[e-2]<<8)+t[e-1];i.push(ii[a>>10]+ii[a>>4&63]+ii[a<<2&63]+"=")}return i.join("")}(new Uint8Array(t))}static decode(t){return function(t){let e;const a=function(t){const e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");let a=t.indexOf("=");return-1===a&&(a=e),[a,a===e?0:4-a%4]}(t),i=a[0],n=a[1],s=new Uint8Array(function(t,e){return 3*(t+e)/4-e}(i,n));let r=0;const o=n>0?i-4:i;let c=0;for(;c<o;c+=4){const a=t.charCodeAt(c),i=t.charCodeAt(c+1),n=t.charCodeAt(c+2),o=t.charCodeAt(c+3);e=ni[a]<<18|ni[i]<<12|ni[n]<<6|ni[o],s[r++]=e>>16&255,s[r++]=e>>8&255,s[r++]=255&e}if(2===n){const a=t.charCodeAt(c),i=t.charCodeAt(c+1);e=ni[a]<<2|ni[i]>>4,s[r++]=255&e}if(1===n){const a=t.charCodeAt(c),i=t.charCodeAt(c+1),n=t.charCodeAt(c+2);e=ni[a]<<10|ni[i]<<4|ni[n]>>2,s[r++]=e>>8&255,s[r++]=255&e}return s}(t).buffer}}const di={[F.Uint8]:Uint8Array,[F.Uint16]:Uint16Array,[F.Uint32]:Uint32Array,[F.Uint64]:BigUint64Array,[F.Int8]:Int8Array,[F.Int16]:Int16Array,[F.Int32]:Int32Array,[F.Int64]:BigInt64Array,[F.Float16]:Float16Array,[F.Float32]:Float32Array,[F.Float64]:Float64Array};function _i(t){const e=Object.getPrototypeOf(t).constructor;switch(e){case Uint8Array:case Uint8ClampedArray:return F.Uint8;case Uint16Array:return F.Uint16;case Uint32Array:return F.Uint32;case Int8Array:return F.Int8;case Int16Array:return F.Int16;case Int32Array:return F.Int32;case Float16Array:return F.Float16;case Float32Array:return F.Float32;case Array:case Float64Array:return F.Float64;default:throw new Error(`unsupported constructor type ${e.name}`)}}function li(e,a){if(e===a)return!0;const i=e.length;if(i!==a.length)return!1;const n=e.constructor;if(n!==a.constructor)return!1;if(0===i)return!0;if(i<128)return t(e,a);const s=e.byteLength;if(s!==a.byteLength)return!1;const r=e.buffer,o=a.buffer,c=e.byteOffset,h=a.byteOffset;if(r===o&&c===h)return!0;let d=e,_=a;const l=n.BYTES_PER_ELEMENT,u=y(c,h,s),f="undefined"!=typeof Float16Array&&n===Float16Array||n===Float32Array||n===Float64Array;return!f&&l<4&&4===u?(d=new Uint32Array(r,c,s>>>2),_=new Uint32Array(o,h,s>>>2)):!f&&l<2&&2===u&&(d=new Uint16Array(r,c,s>>>1),_=new Uint16Array(o,h,s>>>1)),t(d,_)}function ui(t,e,a){return(e-t)*a+t}function fi(t,e,a,i,n){return.5*(i-e+(2*e-5*a+4*i-n+(3*(a-i)+n-e)*t)*t)*t+a}function bi(t){const e=0|t;return pa-((t-e)*pa>>>0)^e}const gi=new Float64Array(2),mi=new Float64Array(1),pi=new Float64Array(2),yi=new Float64Array(1),wi=new Float64Array(18),vi=new Float64Array(9);class Ai{version=0;constructor(t=[],e=1,a=0,i=0){if(!Number.isInteger(e)||e<0)throw new Error(`itemSize must be a non-negative integer, instead was ${e}`);if(!Number.isInteger(a)||a<0)throw new Error(`width must be a non-negative integer, instead was ${a}`);if(!Number.isInteger(i)||a<0)throw new Error(`height must be a non-negative integer, instead was ${i}`);if(void 0===t)throw new Error("data was undefined");if(t.length<a*i*e)throw new Error(`Buffer underflow, data.length(=${t.length}) is too small. Expected at least ${a*i*e}`);this.width=a,this.height=i,this.itemSize=e,this.data=t}sampleCatmullRomUV(t,e,a){const i=this.itemSize;for(let n=0;n<i;n++)a[n]=this.sampleChannelCatmullRomUV(t,e,n)}sampleChannelCatmullRomUV(t,e,a){const i=t*this.width-.5,n=e*this.height-.5;return this.sampleChannelCatmullRom(i,n,a)}sampleChannelCatmullRom(t,e,a){const i=pi;return i[0]=t,i[1]=e,this.sampleChannelCatmullRomArray(yi,0,i,0,a),yi[0]}sampleChannelCatmullRomArray(t,e,a,i,n){const s=a[i],r=a[i+1],o=Math.floor(s),c=Math.floor(r),h=s-o,d=r-c,_=h*(h*(1-.5*h)-.5),l=d*(d*(1-.5*d)-.5),u=h*(.5+h*(2-1.5*h)),f=d*(.5+d*(2-1.5*d)),b=h*h*(.5*h-.5),g=d*d*(.5*d-.5),m=1+h*h*(1.5*h-2.5)+u,p=1+d*d*(1.5*d-2.5)+f,y=o-1,w=c-1,v=o+2,A=c+2,x=o+u/m,k=c+f/p,z=wi,j=vi;z[0]=y,z[1]=w,z[2]=x,z[3]=w,z[4]=v,z[5]=w,z[6]=y,z[7]=k,z[8]=x,z[9]=k,z[10]=v,z[11]=k,z[12]=y,z[13]=A,z[14]=x,z[15]=A,z[16]=v,z[17]=A;for(let t=0;t<9;t++)this.sampleChannelBilinearArray(j,t,z,2*t,n);let U=0;U+=j[0]*_*l,U+=j[1]*m*l,U+=j[2]*b*l,U+=j[3]*_*p,U+=j[4]*m*p,U+=j[5]*b*p,U+=j[6]*_*g,U+=j[7]*m*g,U+=j[8]*b*g,t[e]=U}sampleBicubicUV(t,e,a){const i=this.itemSize;for(let n=0;n<i;n++)a[n]=this.sampleChannelBicubicUV(t,e,n)}sampleBicubic(t,e,a,i){const n=this.itemSize;for(let s=0;s<n;s++)a[s+i]=this.sampleChannelBicubic(t,e,s)}sampleChannelBicubicUV(t,e,a){const i=t*this.width,n=e*this.height;return this.sampleChannelBicubic(i-.5,n-.5,a)}sampleChannelBicubic(t,e,a){const i=this.itemSize,n=this.width,s=this.height,c=this.data,h=n*i,d=n-1,_=s-1,l=ia(t,0,d),u=ia(e,0,_),f=0|l,b=0|u,g=l-f,m=u-b,p=r(0,f-1),y=r(0,b-1),w=o(d,f+1),v=o(_,b+1),A=o(d,w+1),x=y*h+a,k=b*h+a,z=v*h+a,j=o(_,v+1)*h+a,U=p*i,E=f*i,F=w*i,I=A*i,C=c[x+U],B=c[x+E],S=c[x+F],M=c[x+I],N=c[k+U],R=c[k+E],V=c[k+F],P=c[k+I],T=c[z+U],D=c[z+E],L=c[z+F],q=c[z+I],O=c[j+U],X=c[j+E],K=c[j+F],W=c[j+I],J=fi(g,C,B,S,M),Q=fi(g,N,R,V,P),Y=fi(g,T,D,L,q),G=fi(g,O,X,K,W);return fi(m,J,Q,Y,G)}sampleBilinearUV(t,e,a,i=0){const n=this.itemSize;for(let s=0;s<n;s++)a[s+i]=this.sampleChannelBilinearUV(t,e,s)}sampleBilinear(t,e,a,i=0){const n=this.itemSize;for(let s=0;s<n;s++)a[s+i]=this.sampleChannelBilinear(t,e,s)}sampleChannelBilinearUV(t,e,a){const i=t*this.width-.5,n=e*this.height-.5;return this.sampleChannelBilinear(i,n,a)}sampleChannelBilinear(t,e,a){const i=gi;return i[0]=t,i[1]=e,this.sampleChannelBilinearArray(mi,0,i,0,a),mi[0]}sampleChannelBilinearArray(t,e,a,i,n){const s=a[i],r=a[i+1],o=this.itemSize,c=this.width,h=c*o,d=this.height-1,_=ia(s,0,c-1),l=ia(r,0,d),u=_>>>0,f=l>>>0,b=f*h,g=u*o+n,m=b+g;let p,y;p=_===u?u:u+1,y=l===f?f:f+1;const w=this.data,v=w[m];if(u===p&&f===y)return void(t[e]=v);const A=_-u,x=l-f,k=p*o+n,z=y*h,j=z+g,U=z+k,E=w[b+k],F=w[j],I=w[U],C=ui(v,E,A),B=ui(F,I,A);t[e]=ui(C,B,x)}sampleNearestUV(t,e,a){const i=this.width,n=this.height,s=Math.round(t*i-.5),r=Math.round(e*n-.5);this.read(ia(s,0,i-1),ia(r,0,n-1),a)}readChannel(t,e,a){const i=(e*this.width+t)*this.itemSize+a;return this.data[i]}read(t,e,a){const i=this.width,n=this.itemSize,s=(e*i+t)*n;for(let t=0;t<n;t++)a[t]=this.data[s+t]}write(t,e,a){const i=this.width,n=this.itemSize,s=(e*i+t)*n;for(let t=0;t<n;t++)this.data[s+t]=a[t];this.version++}point2index(t,e){return t+e*this.width}index2point(t,e){const a=this.width,i=t%a,n=t/a|0;e.set(i,n)}copy(t,e,a,i,n,s,r){const o=Math.min(s,t.width-e,this.width-i),c=Math.min(r,t.height-a,this.height-n),h=this.itemSize,d=t.itemSize,_=Math.min(h,d),l=h*this.width,u=d*t.width,f=t.data,b=this.data;let g,m,p;for(m=0;m<c;m++){const t=(m+n)*l,s=(m+a)*u;for(g=0;g<o;g++){const a=t+(g+i)*h,n=s+(g+e)*d;for(p=0;p<_;p++)b[a+p]=f[n+p]}}this.version++}zeroFill(t,e,a,i){const n=ia(t,0,this.width),s=ia(e,0,this.height),r=ia(t+a,0,this.width),o=ia(e+i,0,this.height),c=this.data,h=this.itemSize,d=h*this.width,_=n*h,l=r*h;let u;for(u=s;u<o;u++){const t=u*d;c.fill(0,t+_,t+l)}this.version++}channelFill(t,e){const a=this.itemSize,i=this.data,n=i.length;for(let s=t;s<n;s+=a)i[s]=e;this.version++}fill(t,e,a,i,n){const s=this.width,r=this.height,o=ia(t,0,s),c=ia(e,0,r),h=ia(t+a,0,s),d=ia(e+i,0,r),_=this.data,l=this.itemSize,u=l*s;let f,b,g;for(f=c;f<d;f++){const t=f*u;for(b=o;b<h;b++){const e=t+b*l;for(g=0;g<l;g++)_[e+g]=n[g]}}this.version++}writeChannel(t,e,a,i){const n=(e*this.width+t)*this.itemSize+a;this.data[n]=i,this.version++}traverseCircle(t,e,a,i){let n,s;const r=0|t,o=0|e,c=a*a,h=Math.ceil(a);for(s=-h;s<=h;s++){const t=s*s;for(n=-h;n<=h;n++)n*n+t<=c&&i(r+n,o+s,this)}}resize(t,e,a=!0){const i=this.width,n=this.height;if(i===t&&n===e)return;const s=this.itemSize,r=t*e*s,c=this.data,h=new(function(t){if(t instanceof Int8Array)return Int8Array;if(t instanceof Int16Array)return Int16Array;if(t instanceof Int32Array)return Int32Array;if(t instanceof Uint8Array)return Uint8Array;if(t instanceof Uint8ClampedArray)return Uint8ClampedArray;if(t instanceof Uint16Array)return Uint16Array;if(t instanceof Uint32Array)return Uint32Array;if(t instanceof Float16Array)return Float16Array;if(t instanceof Float32Array)return Float32Array;if(t instanceof Float64Array)return Float64Array;if(Array.isArray(t))return Array;throw new TypeError("Unsupported array type")}(c))(r);if(a)if(t===i)h.set(c.subarray(0,Math.min(c.length,r)));else{const a=o(e,n),r=o(t,i);for(let e=0;e<a;e++)for(let a=0;a<r;a++){const n=(e*t+a)*s,r=(e*i+a)*s;for(let t=0;t<s;t++)h[n+t]=c[r+t]}}this.width=t,this.height=e,this.data=h,this.version++}computeByteSize(){let t;const e=this.data;return t=Array.isArray(e)?8*e.length:e.byteLength,t+280}equals(t){return null!=t&&(this===t||this.width===t.width&&this.height===t.height&&this.itemSize===t.itemSize&&li(this.data,t.data))}hash(){const t=this.itemSize,a=this.width,i=this.height,n=this.data;let s=((65535&a)<<16|65535&i)^t;const r=a*i*t;if(e(n))s^=C(n.buffer,n.byteOffset,n.byteLength);else for(let t=0;t<r;++t)s=(s<<5)-s+bi(n[t]);return s}clone(){let t;return t=Array.isArray(this.data)?this.data.slice():new(0,this.data.constructor)(this.data),new Ai(t,this.itemSize,this.width,this.height)}toJSON(){const t=this.data,a=hi.encode(e(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t.buffer);return{height:this.height,width:this.width,itemSize:this.itemSize,type:_i(this.data),data:a}}fromJSON({height:t,width:e,itemSize:a,type:i,data:n}){const s=function(t){const e=di[t];if(void 0===e)throw new Error(`Unsupported data type '${t}'`);return e}(i);if("string"==typeof n){const t=hi.decode(n);this.data=new s(t)}else{if(!Array.isArray(n))throw new Error("Unsupported data format");this.data=new s(n)}this.height=t,this.width=e,this.itemSize=a}static uint8clamped(t,e,a){const i=new Uint8ClampedArray(e*a*t);return new Ai(i,t,e,a)}static uint8(t,e,a){const i=new Uint8Array(e*a*t);return new Ai(i,t,e,a)}static uint16(t,e,a){const i=new Uint16Array(e*a*t);return new Ai(i,t,e,a)}static uint32(t,e,a){const i=new Uint32Array(e*a*t);return new Ai(i,t,e,a)}static int8(t,e,a){const i=new Int8Array(e*a*t);return new Ai(i,t,e,a)}static int16(t,e,a){const i=new Int16Array(e*a*t);return new Ai(i,t,e,a)}static int32(t,e,a){const i=new Int32Array(e*a*t);return new Ai(i,t,e,a)}static float16(t,e,a){const i=new Float16Array(e*a*t);return new Ai(i,t,e,a)}static float32(t,e,a){const i=new Float32Array(e*a*t);return new Ai(i,t,e,a)}static float64(t,e,a){const i=new Float64Array(e*a*t);return new Ai(i,t,e,a)}}function xi(t,e,a,i){const n=a[i],s=a[i+1],r=a[i+2];t[e]+=n,t[e+1]+=s,t[e+2]+=r}function ki(t,e,a,i,n,s){!function(t,e,a,i,n,s,r,o){const c=n[s],h=n[s+1],d=n[s+2],_=r[o]-c,l=r[o+1]-h,u=r[o+2]-d,f=a[i]-c,b=a[i+1]-h,g=a[i+2]-d;t[e]=l*g-u*b,t[e+1]=u*f-_*g,t[e+2]=_*b-l*f}(t,e,s,3*a,s,3*i,s,3*n)}function zi(t,e,a){return t*t+e*e+a*a}function ji(t,e,a,i){const n=a[i],s=a[i+1],r=a[i+2],o=zi(n,s,r),c=0!==o?1/Math.sqrt(o):1;t[e]=n*c,t[e+1]=s*c,t[e+2]=r*c}Ai.prototype.isSampler2D=!0,Ai.typeName="Sampler2D";const Ui=new Float64Array(3);function Ei(t,e,a){const i=a.length;for(let n=0;n<i;n+=3){const i=a[n],s=a[n+1],r=a[n+2];ki(Ui,0,i,s,r,t),xi(e,3*i,Ui,0),xi(e,3*s,Ui,0),xi(e,3*r,Ui,0)}!function(t,e=0,a=t.length-e){const i=e+a;for(let a=e;a<i;a+=3)ji(t,a,t,a)}(e)}function Fi(t,e){return r(2,t*e)}const Ii={build:function(t,e,a,i,n,s){const r=a.x,o=a.y,c=Fi(r,s),h=Fi(o,s),d=c-1,_=h-1;let l=0,u=0;const f=c*h,b=new Float32Array(3*f),g=new Float32Array(3*f),m=new Float32Array(2*f);let p,y;const w=a.y/n.y/_,v=a.x/n.x/d,A=e.y/n.y,x=e.x/n.x,k=n.x*i.x,z=n.y*i.y;let j,U,E;for(p=0;p<h;p++){const e=p*w+A;for(E=e*z,y=0;y<c;y++){const a=y*v+x;j=a*k,U=t.sampleChannelBicubicUV(a,e,0),b[l]=j,b[l+1]=U,b[l+2]=E,m[u]=a,m[u+1]=e,l+=3,u+=2}}l=0;const F=new(K(b.length/3))(d*_*6);for(p=0;p<_;p++)for(y=0;y<d;y++){const t=y+c*p,e=y+c*(p+1),a=y+1+c*(p+1),i=y+1+c*p;F[l]=t,F[l+1]=e,F[l+2]=i,F[l+3]=e,F[l+4]=a,F[l+5]=i,l+=6}return Ei(b,g,F),{indices:F,vertices:b,normals:g,uvs:m}}};class Ci{name="";type=F.Float32;itemSize=1;normalized=!1;static from(t,e,a=!1,i=""){const n=new Ci;return n.fromJSON({name:i,type:t,itemSize:e,normalized:a}),n}static fromJSON(t){const e=new Ci;return e.fromJSON(t),e}fromJSON({name:t="",type:e,itemSize:a,normalized:i=!1}){this.name=t,this.type=e,this.itemSize=a,this.normalized=i}toJSON(){return{name:this.name,type:this.type,itemSize:this.itemSize,normalized:this.normalized}}toString(){let t="";return""!==this.name&&(t+=`${this.name}:`),t+=`${this.itemSize}x${ot(F,this.type)??this.type}`,this.normalized&&(t+="-norm"),t}hash(){return it(this.name)}equals(t){return this.type===t.type&&this.itemSize===t.itemSize&&this.normalized===t.normalized&&this.name===t.name}copy(t){this.type=t.type,this.name=t.name,this.itemSize=t.itemSize,this.normalized=t.normalized}clone(){const t=new Ci;return t.copy(this),t}getByteSize(){return this.itemSize*D[this.type]}static byName(t,e){return t.name.localeCompare(e.name)}}Ci.prototype.isAttributeSpec=!0;class Bi{spec=new Ci;data;count=0;#G=0;get version(){return this.#G}set needsUpdate(t){t&&this.#G++}get name(){return this.spec.name}get itemSize(){return this.spec.itemSize}equals(t){return this.spec.equals(t.spec)&&this.count===t.count&&li(this.data,t.data)}hash(){return et(this.spec.hash(),this.count,function(t,e,a,i=31){const n=o(a-e,1024);return function(t,e,a,i,n){let s=a;for(let r=e;r<a;r+=i)s=(s<<5)-s+n.call(void 0,t[r]);return s>>>0}(t,e,e+n,Math.max(1,Math.ceil(n/i)),bi)}(this.data,0,this.data.length))}copy(t){this.spec.copy(t.spec),this.count=t.count;const e=t.data.constructor;this.data=new e(t.data)}clone(){const t=new Bi;return t.copy(this),t}static from(t,e=1,a=""){const i=_i(t),n=new Bi;return n.spec.type=i,n.spec.name=a,n.spec.itemSize=e,n.count=t.length/e,n.data=t,n}get memory_usage_bytes(){let t=0;return void 0!==this.data&&null!==this.data&&(t=this.data.byteLength),t}}function Si(t){return t*t}function Mi(t,e,a){let i=0;for(let n=0;n<a;n++)i+=t[n]*e[n];return i}Bi.prototype.isAttribute=!0;class Ni{constructor(t,e){const a=di[e];if(void 0===a)throw new Error(`Unsupported type '${e}'`);this.size=t,this.type=e,this.data=new a(t*t)}get n(){return this.size}get length(){return this.size*this.size}get val(){return this.data}fill(t){this.data.fill(t)}subtract(t){this.subtractMatrices(this,t)}subtractMatrices(t,e){const a=this.size,i=a*a,n=t.data,s=e.data,r=this.data;for(let t=0;t<i;t++)r[t]=n[t]-s[t]}negate(){const t=this.data,e=t.length;for(let a=0;a<e;a++)t[a]=-t[a]}clear(){this.data.fill(0)}eye(){const t=this.size;for(let e=0;e<t;e++)this.data[e*(t+1)]=1}copy(t){this.data.set(t.data)}clone(){const t=new Ni(this.size,this.type);return t.copy(this),t}transpose(){const t=this.size;for(let e=0;e<t;e++)for(let a=e+1;a<t;a++){const t=this.getCellValue(a,e),i=this.getCellValue(e,a);this.setCellValue(a,e,i),this.setCellValue(e,a,t)}}fromArray(t){this.data.set(t)}toArray(t=new Array(this.length),e=0){return i(this.data,0,t,e,this.length),t}setCellValue(t,e,a){this.data[this.size*e+t]=a}getCellValue(t,e){return this.data[this.size*e+t]}readDiagonal(t){const e=this.size,a=this.data;for(let i=0;i<e;i++)t[i]=a[i*(e+1)]}}function Ri(t,e,a,i,n){let s=0;for(let r=0;r<n;r++)s+=t[e+r]*a[i+r];return s}function Vi(t,e,a,i,n,s){for(let r=0;r<s;++r)t[e+r]+=a*i[n+r]}function Pi(t,e,a){if(0===e)a[0]=1,a[1]=0;else if(Math.abs(e)>Math.abs(t)){const i=t/e,n=1/Math.sqrt(1+i*i);a[0]=n*i,a[1]=n}else{const i=e/t,n=1/Math.sqrt(1+i*i);a[0]=n,a[1]=n*i}}function Ti(t,e,a,i,n,s){for(let r=0;r<s;++r){const s=t[e+r],o=t[a+r];t[e+r]=i*s+n*o,t[a+r]=i*o-n*s}}class Di{constructor(t,e,a){this.S=e,this.membership=be.fixedSize(e.size()),this.dim=t,this.members=new Int32Array(t+1),this.Q=new Ni(t,F.Float64),this.Q.eye(),this.R=new Ni(t,F.Float64),this.u=new Float64Array(t),this.w=new Float64Array(t),this.r=0,this.cs=new Float64Array(2),this.membership.set(a,!0),this.members[this.r]=a}dimension(){return this.dim}size(){return this.r+1}isMember(t){return this.membership.get(t)}anyMember(){return this.members[this.r]}globalIndex(t){return this.members[t]}ind(t,e){return t*this.dim+e}origin(){return this.members[this.r]}appendColumn(){const t=this.dim,e=this.u,a=this.Q.data,i=this.R.data,n=this.cs,s=this.r*t;for(let n=0;n<t;++n)i[s+n]=Ri(a,n*t,e,0,t);for(let e=t-1;e>this.r;--e){Pi(i[s+e-1],i[s+e],n);const r=n[0],o=n[1];i[s+e-1]=r*i[s+e-1]+o*i[s+e],Ti(a,(e-1)*t,e*t,r,o,t)}}add(t){let e=this.origin();const a=this.dim,i=this.u,n=this.S;for(let s=0;s<a;++s)i[s]=n.coord(t,s)-n.coord(e,s);this.appendColumn(),this.membership.set(t,!0),this.members[this.r+1]=this.members[this.r],this.members[this.r]=t,++this.r}shortestVectorToSpan(t,e){const a=this.origin(),i=this.dim,n=this.S;for(let s=0;s<i;++s)e[s]=n.coord(a,s)-t[s];const s=this.Q.data,r=this.r;for(let t=0;t<r;++t){const a=t*i;Vi(e,0,-Ri(e,0,s,a,i),s,a,i)}return Ri(e,0,e,0,i)}representationError(){const t=this.size(),e=new Float64Array(t),a=this.dim,i=new Float64Array(a);let n=0;for(let s=0;s<t;++s){for(let t=0;t<a;++t)i[t]=this.S.coord(this.globalIndex(s),t);this.findAffineCoefficients(i,e);let r=Math.abs(e[s]-1);r>n&&(n=r);for(let t=0;t<s;++t)r=Math.abs(e[t]),r>n&&(n=r);for(let a=s+1;a<t;++a)r=Math.abs(e[a]),r>n&&(n=r)}return n}findAffineCoefficients(t,e){let a=this.origin();const i=this.dim,n=this.u;for(let e=0;e<i;++e)n[e]=t[e]-this.S.coord(a,e);const s=this.w,r=this.Q.data;for(let t=0;t<i;++t)s[t]=Ri(r,t*i,n,0,i);let o=1;const c=this.R.data,h=this.r;for(let t=h-1;t>=0;--t){const a=t*i;for(let a=t+1;a<h;++a)s[t]-=e[a]*c[a*i+t];const n=s[t]/c[a+t];e[t]=n,o-=n}e[h]=o}hessenberg_clear(t){let e=t;const a=this.R.data,i=this.Q.data,n=this.dim,s=this.cs,r=this.r;for(;e<r;++e){const t=e*n;Pi(a[t+e],a[t+e+1],s);const o=s[0],c=s[1];a[t+e]=o*a[t+e]+c*a[t+e+1];for(let t=e+1;t<r;++t){const i=t*n,s=a[i+e],r=a[i+e+1];a[i+e]=o*s+c*r,a[i+e+1]=o*r-c*s}Ti(i,t,t+n,o,c,n)}}special_rank_1_update(){const t=this.dim,e=this.w,a=this.u,i=this.Q.data,n=this.R.data,s=this.cs,r=this.r;for(let n=0;n<t;++n)e[n]=Ri(i,n*t,a,0,t);for(let a=t-1;a>0;--a){Pi(e[a-1],e[a],s);const o=s[0],c=s[1];e[a-1]=o*e[a-1]+c*e[a];const h=(a-1)*t;n[h+a]=-c*n[h+a-1],n[h+a-1]*=o;for(let e=a;e<r;++e){const i=e*t,s=n[i+a-1],r=n[i+a];n[i+a-1]=o*s+c*r,n[i+a]=o*r-c*s}Ti(i,h,h+t,o,c,t)}const o=e[0];for(let e=0;e<r;++e)n[e*t]+=o;this.hessenberg_clear(0)}remove(t){if(this.membership.clear(this.globalIndex(t)),t===this.r){let t=this.origin(),e=this.globalIndex(this.r-1);const a=this.dim,i=this.S,n=this.u;for(let s=0;s<a;++s)n[s]=i.coord(t,s)-i.coord(e,s);--this.r,this.special_rank_1_update()}else{const e=this.R.data,a=this.dim,i=this.members,n=t*a,s=(t+1)*a,r=this.r*a;e.copyWithin(n,s,r);for(let e=t+1;e<this.r;++e)i[e-1]=i[e];i[this.r-1]=i[this.r],--this.r,this.hessenberg_clear(t)}}}class Li{iteration=0;distToAff=0;distToAffSquare=0;__squaredRadius=0;__radius=0;stopper=0;constructor(t){this.S=t,this.__size=this.S.size();const e=this.S.dimension();this.dim=e;const a=new ArrayBuffer(8*(4*e+1));this.__center=new Float64Array(a,0,e),this.centerToAff=new Float64Array(a,8*e,e),this.centerToPoint=new Float64Array(a,16*e,e),this.lambdas=new Float64Array(a,24*e,e+1),this.__support=this.initBall(),this.compute()}isEmpty(){return 0===this.__size}radius(){return this.__radius}center(){return this.__center}get support(){return this.__support}size(){return this.__size}initBall(){let t,e;const a=this.dim,i=this.__center,n=this.S;for(t=0;t<a;++t)i[t]=n.coord(0,t);this.__squaredRadius=0;let s=0;const r=n.size();for(e=1;e<r;++e){let r=0;for(t=0;t<a;++t)r+=Si(n.coord(e,t)-i[t]);r>=this.__squaredRadius&&(this.__squaredRadius=r,s=e)}return this.__radius=Math.sqrt(this.__squaredRadius),new Di(this.dim,n,s)}computeDistToAff(){this.distToAffSquare=this.__support.shortestVectorToSpan(this.__center,this.centerToAff),this.distToAff=Math.sqrt(this.distToAffSquare)}updateRadius(){const t=this.__support.anyMember();this.__squaredRadius=0;const e=this.dim,a=this.__center,i=this.S;for(let n=0;n<e;++n)this.__squaredRadius+=Si(i.coord(t,n)-a[n]);this.__radius=Math.sqrt(this.__squaredRadius)}compute(){const t=this.__center,e=this.__support,a=this.dim,i=this.centerToAff;for(this.iteration=0;this.iteration<1e4;this.iteration++){for(this.computeDistToAff();this.distToAff<=1e-14*this.__radius||e.size()===a+1;){if(!this.successfulDrop())return;this.computeDistToAff()}const n=this.findStopFraction();if(this.stopper>=0){for(let e=0;e<a;++e)t[e]+=n*i[e];this.updateRadius(),e.add(this.stopper)}else{for(let e=0;e<a;++e)t[e]+=i[e];if(this.updateRadius(),!this.successfulDrop())return}}}successfulDrop(){const t=this.lambdas,e=this.__support;e.findAffineCoefficients(this.__center,t);let a=0,i=1;const n=e.size();for(let e=0;e<n;++e){const n=t[e];n<i&&(i=n,a=e)}return i<=0&&(e.remove(a),!0)}findStopFraction(){let t,e,a=1;this.stopper=-1;const i=this.dim,n=this.__center,s=this.S,r=this.__support,o=this.centerToPoint,c=this.centerToAff,h=this.distToAffSquare,d=this.__squaredRadius,_=this.__size,l=1e-14*this.__radius*this.distToAff;for(e=0;e<_;++e){if(r.isMember(e))continue;for(t=0;t<i;++t)o[t]=s.coord(e,t)-n[t];const _=Mi(c,o,i);if(h-_<l)continue;const u=(d-Mi(o,o,i))/2/(h-_);u>0&&u<a&&(a=u,this.stopper=e)}return a}toString(){let t="Miniball [";if(this.isEmpty())t+="isEmpty=true";else{t+="center=(";for(let e=0;e<this.dim;++e)t+=this.__center[e],e<this.dim-1&&(t+=", ");t+=`), radius=${this.__radius}, squaredRadius=${this.__squaredRadius}`}return t+="]",t}}class qi{constructor(t,e,a){this.__data=a,this.__size=t,this.__dimensions=e}size(){return this.__size}dimension(){return this.__dimensions}coord(t,e){return this.__data[t*this.__dimensions+e]}}function Oi(t,e,a){return Math.sqrt(t*t+e*e+a*a)}function Xi(t,e,a,i,n,s){const r=3*a,o=3*i,c=3*n;return function(t,e,a,i,n,s,r,o,c,h,d){const _=c-s,l=h-r,u=d-o,f=a-s,b=i-r,g=n-o,m=l*g-u*b,p=u*f-_*g,y=_*b-l*f,w=zi(m,p,y);if(0===w)return t[e]=0,t[e+1]=1,t[e+2]=0,!1;const v=1/Math.sqrt(w),A=m*v,x=p*v,k=y*v;return t[e]=A,t[e+1]=x,t[e+2]=k,!0}(t,e,s[r],s[r+1],s[r+2],s[o],s[o+1],s[o+2],s[c],s[c+1],s[c+2])}const Ki=new Float64Array(3);function Wi(t,e,a,i,n,s,r,o,c){return(e*s-a*n)*r+(a*i-t*s)*o+(t*n-e*i)*c<0?-1:1}function Ji(t,e,a,i,n){let s,r,o,c,h,d;if(a<0){const i=1/(1-a),n=t*e*i;s=1-t*t*i,r=-n,o=t,c=n,h=e*e*i-1,d=-e}else{const i=1/(1+a),n=-t*e*i;s=1-t*t*i,r=n,o=-t,c=n,h=1-e*e*i,d=-e}const _=Wi(t,e,a,s,r,o,c,h,d),l=4*i;n[l]=s,n[l+1]=r,n[l+2]=o,n[l+3]=_}function Qi(t,e,a,i,n){t[e]+=a,t[e+1]+=i,t[e+2]+=n}function Yi(t,e,a,i,n,s){return t*i+e*n+a*s}let Gi=0;class Hi{#H=Gi++;get id(){return this.#H}name="";attributes=[];index=null;bounding_box=new Float32Array(6);bounding_sphere=new Float32Array(4);flags=1;#G=0;get version(){return this.#G}set needsUpdate(t){t&&this.#G++}setFlag(t){this.flags|=t}clearFlag(t){this.flags&=~t}writeFlag(t,e){e?this.setFlag(t):this.clearFlag(t)}getFlag(t){return(this.flags&t)===t}equals(t){return this===t||this.name===t.name&&ae(this.index,t.index)&&ie(this.attributes,t.attributes)}hash(){return et(it(this.name),null==(t=this.index)?0:t.hash(),at(this.attributes,X));var t}getAttribute(t){const e=this.attributes,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.spec.name===t)return a}}hasAttribute(t){return void 0!==this.getAttribute(t)}setAttribute(t){this.hasAttribute(t.spec.name)&&this.removeAttribute(t.spec.name),this.addAttribute(t)}addAttribute(t){this.attributes.push(t)}removeAttribute(t){const e=this.attributes,a=e.length;for(let i=0;i<a;i++){const a=e[i];if(a.spec.name===t)return e.splice(i,1),a}}getVertexCount(){const t=this.attributes;return 0===t.length?0:t[0].count}getIndexCount(){const t=this.index;return null!=t?t.count:this.getVertexCount()}getPrimitiveCount(){return this.getIndexCount()/3}ensureIndex(){null===this.index&&this.buildIndex()}buildIndex(){const t=this.getVertexCount(),e=new Uint32Array(t);for(let a=0;a<t;a++)e[a]=a;this.index=Bi.from(e,1,Se)}ensureBounds(){this.getFlag(1)&&this.computeBoundingShapes()}computeBoundingSphereFromBox(){const t=this.bounding_box,e=t[0],a=t[3],i=t[1],n=t[4],s=t[2],r=t[5];this.bounding_sphere[0]=.5*(e+a),this.bounding_sphere[1]=.5*(i+n),this.bounding_sphere[2]=.5*(s+r),this.bounding_sphere[3]=.5*function(t,e,a,i,n,s){return Oi(i-t,n-e,s-a)}(e,i,s,a,n,r)}computeBoundingSphere(){const t=this.getAttribute(Me),e=new qi(t.count,3,t.data),a=new Li(e),i=a.center();this.bounding_sphere[0]=i[0],this.bounding_sphere[1]=i[1],this.bounding_sphere[2]=i[2],this.bounding_sphere[3]=a.radius()}computeBoundingShapes(){this.computeBoundingBox(),this.computeBoundingSphereFromBox(),this.clearFlag(1)}computeBoundingBox(){const t=this.getAttribute(Me);lt(this.bounding_box,t.data,t.count*t.spec.itemSize),this.clearFlag(1)}ensureNormals(){void 0===this.getAttribute(Ne)&&this.computeNormals()}computeNormals(){const t=this.getVertexCount(),e=this.getAttribute(Me);let a=this.getAttribute(Ne);void 0===a?(a=Bi.from(new Float32Array(3*t),3,Ne),this.addAttribute(a)):a.data.fill(0,0,3*t);const n=this.index;null===n?function(t,e,a){for(let n=0;n<a;n+=3){const a=n,s=n+1,r=n+2;Xi(Ki,0,a,s,r,t),i(Ki,0,e,3*a,3),i(Ki,0,e,3*s,3),i(Ki,0,e,3*r,3)}}(e.data,a.data,t):Ei(e.data,a.data,n.data)}#$(){if(!this.hasAttribute(Re)){const t=this.getVertexCount();this.addAttribute(Bi.from(new Float32Array(4*t),4,Re))}return this.getAttribute(Re)}#Z(){const t=this.index,e=this.getAttribute(Me),a=this.getAttribute(Ne),i=this.getAttribute(Ve);if(null===t||void 0===e||void 0===a||void 0===i)throw new Error(" .computeTangents() failed. Missing required attributes (index, position, normal or uv)");const n=e.data,s=i.data,r=a.data,o=this.#$().data,c=e.count;!function(t,e,a,i,n,s,r){const o=new Float32Array(3*a),c=new Float32Array(3*a);for(let a=0;a<t;a+=3){const t=e[a],s=e[a+1],r=e[a+2],h=t<<1,d=i[h],_=i[h+1],l=s<<1,u=r<<1,f=i[l]-d,b=i[l+1]-_,g=i[u]-d,m=i[u+1]-_,p=f*m-g*b;if(0===p)continue;const y=1/p,w=h+t,v=n[w],A=n[w+1],x=n[w+2],k=l+s,z=u+r,j=n[k]-v,U=n[k+1]-A,E=n[k+2]-x,F=n[z]-v,I=n[z+1]-A,C=n[z+2]-x,B=(j*m-F*b)*y,S=(U*m-I*b)*y,M=(E*m-C*b)*y,N=(F*f-j*g)*y,R=(I*f-U*g)*y,V=(C*f-E*g)*y;Qi(o,w,B,S,M),Qi(o,k,B,S,M),Qi(o,z,B,S,M),Qi(c,w,N,R,V),Qi(c,k,N,R,V),Qi(c,z,N,R,V)}for(let t=0;t<a;t++){const e=3*t,a=s[e],i=s[e+1],n=s[e+2],h=o[e],d=o[e+1],_=o[e+2];if(0===h&&0===d&&0===_){Ji(a,i,n,t,r);continue}const l=c[e],u=c[e+1],f=c[e+2],b=Yi(a,i,n,h,d,_);let g=h-a*b,m=d-i*b,p=_-n*b;const y=Oi(g,m,p);if(!(y>1e-6*Oi(h,d,_))){Ji(a,i,n,t,r);continue}const w=1/y;g*=w,m*=w,p*=w;const v=Wi(a,i,n,g,m,p,l,u,f),A=t<<2;r[A]=g,r[A+1]=m,r[A+2]=p,r[A+3]=v}}(t.count,t.data,c,s,n,r,o)}#tt(){const t=this.getAttribute(Ne),e=this.#$().data,a=t.data,i=this.getVertexCount();for(let t=0;t<i;t++){const i=3*t;Ji(a[i],a[i+1],a[i+2],t,e)}}ensureTangents(){void 0===this.getAttribute(Re)&&this.computeTangents()}computeTangents(){this.ensureNormals(),this.hasAttribute(Ve)&&this.hasAttribute(Me)&&this.hasAttribute(Ne)?this.#Z():this.#tt()}copy(t){this.name=t.name,this.index=function(t){if(void 0!==t)return null===t?null:"object"!=typeof t?t:t.clone()}(t.index),this.attributes=t.attributes.map(t=>t.clone()),this.flags=t.flags,this.bounding_sphere.set(t.bounding_sphere),this.bounding_box.set(t.bounding_box)}clone(){const t=new Hi;return t.copy(this),t}update(){this.ensureBounds()}get memory_usage_bytes(){let t=0;null!==this.index&&(t+=this.index.memory_usage_bytes);for(const e of this.attributes)t+=e.memory_usage_bytes;return t}}Hi.prototype.isGeometry=!0,self.Lib={build_bvh(t,e){const a=new p;return function(t,e,a){!function(t,e,a,i,n,s,r){t.setLeafCount(e),t.initialize_structure();for(let i=0;i<e;i++)Va(Ta,0,a,0,3,0,r,i),Pa(t,i,Ta,0,1,2);t.build()}(t,a.length/3,e,0,0,0,a)}(a,t,e),a},Sampler2D:Ai,BufferedGeometryArraysBuilder:Ii,tensionOptimizeUV:function(t,e,a,i=3){const n=new Ga;null==a?function(t,e){const a=e.length/9,i=new Uint32Array(3*a);for(let t=0;t<i.length;t++)i[t]=t;ti(t,i,e)}(n,t):ti(n,a,t);const s=t.length/3;for(let a=0;a<i;a++)t:for(let a=0;a<s;a++){const i=n.vertex_read_edge(a);if(i===Qa)continue;const s=3*a,r=t[s],o=t[s+1],c=t[s+2];let h=0,d=0,_=0,l=i;do{if(ei(n,l))continue t;const i=ai(n,l,a),s=3*i,u=r-t[s],f=o-t[s+1],b=c-t[s+2],g=u*u+f*f+b*b;if(0!==g){const t=1/g,a=2*i;h+=e[a]*t,d+=e[a+1]*t,_+=t}l=n.edge_read_vertex1(l)===a?n.edge_read_v1_disk_next(l):n.edge_read_v2_disk_next(l)}while(l!==i);if(0===_)continue;const u=h/_,f=d/_,b=2*a;e[b]=u,e[b+1]=f}},sampler2d_channel_compute_min:function(t,e=0){const a=t.itemSize,i=t.data,n=i.length;if(0===n)return;let s=i[e],r=e;for(let t=e+a;t<n;t+=a){const e=i[t];s>e&&(s=e,r=t)}const o=t.width,c=r/a|0;return{index:r,value:s,x:c%o,y:c/o|0}},sampler2d_channel_compute_max:function(t,e=0){const a=t.itemSize,i=t.data,n=i.length;if(0===n)return;let s=i[e],r=e;for(let t=e+a;t<n;t+=a){const e=i[t];s<e&&(s=e,r=t)}const o=t.width,c=r/a|0;return{index:r,value:s,x:c%o,y:c/o|0}},tile_geometry_to_meshlets:function(t,e=""){const a=new Hi;return a.name=e,a.addAttribute(Bi.from(t.vertices,3,Me)),a.addAttribute(Bi.from(t.normals,3,Ne)),a.addAttribute(Bi.from(t.uvs,2,Ve)),a.index=Bi.from(t.indices,1,Se),function(t,e=new ga){return t.ensureBounds(),t.computeBoundingSphereFromBox(),e.name=t.name,e.bounding_box.set(t.bounding_box),e.bounding_sphere.set(t.bounding_sphere),e.meshlets.build(t),e.meshlets.compress(),e.primitive_count=e.meshlets.primitive_count,e.bvh=Na(e.meshlets,e.primitive_count,t.bounding_box),e}(a)},meshlet_geometry_to_bytes:function(t){const e=new z;return Ra.serialize(e,t),e.trim(),e.data}};
|