@woosh/meep-engine 3.26.0 → 3.27.0

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.
Files changed (236) hide show
  1. package/package.json +1 -1
  2. package/src/core/binary/lz4/LZ4_HIGH_COMPRESSION_PLAN_2026_09_14.md +542 -0
  3. package/src/core/binary/lz4/LZ4_LEVEL.d.ts +33 -0
  4. package/src/core/binary/lz4/LZ4_LEVEL.d.ts.map +1 -0
  5. package/src/core/binary/lz4/LZ4_LEVEL.js +32 -0
  6. package/src/core/binary/lz4/lz4_compress_block_at_level.d.ts +33 -0
  7. package/src/core/binary/lz4/lz4_compress_block_at_level.d.ts.map +1 -0
  8. package/src/core/binary/lz4/lz4_compress_block_at_level.js +47 -0
  9. package/src/core/binary/lz4/lz4_compress_block_hc.d.ts +40 -0
  10. package/src/core/binary/lz4/lz4_compress_block_hc.d.ts.map +1 -0
  11. package/src/core/binary/lz4/lz4_compress_block_hc.js +1382 -0
  12. package/src/core/binary/lz4/lz4_decompress_block.d.ts +2 -1
  13. package/src/core/binary/lz4/lz4_decompress_block.d.ts.map +1 -1
  14. package/src/core/binary/lz4/lz4_decompress_block.js +31 -6
  15. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts +14 -7
  16. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
  17. package/src/core/geom/3d/shape/HeightMapShape3D.js +87 -78
  18. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  19. package/src/shade/playground/vgeo_runtime/README.md +167 -22
  20. package/src/shade/playground/vgeo_runtime/index.html +112 -62
  21. package/src/shade/playground/vgeo_runtime/main.js +660 -83
  22. package/src/shade/playground/vgeo_viewer/sample_asset.d.ts.map +1 -1
  23. package/src/shade/playground/vgeo_viewer/sample_asset.js +19 -2
  24. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +11 -0
  25. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  26. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +16 -8
  27. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
  28. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +16 -11
  29. package/src/shade/renderer/geometry/virtual/VGEO_FORMAT.md +73 -5
  30. package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +26 -15
  31. package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +5 -3
  32. package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts +18 -0
  33. package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts.map +1 -1
  34. package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.js +20 -0
  35. package/src/shade/renderer/geometry/virtual/build/vgeo_assemble_pages.d.ts.map +1 -1
  36. package/src/shade/renderer/geometry/virtual/build/vgeo_assemble_pages.js +56 -9
  37. package/src/shade/renderer/geometry/virtual/build/vgeo_build.d.ts.map +1 -1
  38. package/src/shade/renderer/geometry/virtual/build/vgeo_build.js +1 -0
  39. package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.d.ts +22 -0
  40. package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.d.ts.map +1 -1
  41. package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.js +24 -0
  42. package/src/shade/renderer/geometry/virtual/format/dag/VirtualGeometryCluster.d.ts +12 -0
  43. package/src/shade/renderer/geometry/virtual/format/dag/VirtualGeometryCluster.d.ts.map +1 -1
  44. package/src/shade/renderer/geometry/virtual/format/dag/VirtualGeometryCluster.js +13 -0
  45. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_encode_frame_blob.d.ts +8 -1
  46. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_encode_frame_blob.d.ts.map +1 -1
  47. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_encode_frame_blob.js +11 -3
  48. package/src/shade/renderer/geometry/virtual/format/header/VGEO_FORMAT_VERSION.d.ts +9 -0
  49. package/src/shade/renderer/geometry/virtual/format/header/VGEO_FORMAT_VERSION.d.ts.map +1 -1
  50. package/src/shade/renderer/geometry/virtual/format/header/VGEO_FORMAT_VERSION.js +10 -1
  51. package/src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_ENTRY_COUNT.d.ts +18 -0
  52. package/src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_ENTRY_COUNT.d.ts.map +1 -0
  53. package/src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_ENTRY_COUNT.js +17 -0
  54. package/src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_REF.d.ts +8 -0
  55. package/src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_REF.d.ts.map +1 -0
  56. package/src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_REF.js +7 -0
  57. package/src/shade/renderer/geometry/virtual/format/page/VGEO_PAGE_OFFSET.d.ts +3 -0
  58. package/src/shade/renderer/geometry/virtual/format/page/VGEO_PAGE_OFFSET.js +16 -0
  59. package/src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_ENTRY_SIZE.d.ts +14 -0
  60. package/src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_ENTRY_SIZE.d.ts.map +1 -0
  61. package/src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_ENTRY_SIZE.js +13 -0
  62. package/src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_PAGE_ENTRY_SIZE.d.ts +11 -0
  63. package/src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_PAGE_ENTRY_SIZE.d.ts.map +1 -0
  64. package/src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_PAGE_ENTRY_SIZE.js +10 -0
  65. package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts +20 -0
  66. package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts.map +1 -1
  67. package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.js +20 -2
  68. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts +4 -0
  69. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts.map +1 -1
  70. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.js +4 -0
  71. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts +29 -3
  72. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts.map +1 -1
  73. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.js +81 -122
  74. package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts +40 -0
  75. package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts.map +1 -1
  76. package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.js +44 -0
  77. package/src/shade/renderer/geometry/virtual/format/read/VGeoPageFetcherCore.d.ts +69 -0
  78. package/src/shade/renderer/geometry/virtual/format/read/VGeoPageFetcherCore.d.ts.map +1 -0
  79. package/src/shade/renderer/geometry/virtual/format/read/VGeoPageFetcherCore.js +236 -0
  80. package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts +14 -0
  81. package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts.map +1 -1
  82. package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.js +15 -0
  83. package/src/shade/renderer/geometry/virtual/format/read/vgeo_byte_source_from_descriptor.d.ts +31 -0
  84. package/src/shade/renderer/geometry/virtual/format/read/vgeo_byte_source_from_descriptor.d.ts.map +1 -0
  85. package/src/shade/renderer/geometry/virtual/format/read/vgeo_byte_source_from_descriptor.js +32 -0
  86. package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts +10 -0
  87. package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts.map +1 -1
  88. package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.js +21 -1
  89. package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_transfer.d.ts +15 -0
  90. package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_transfer.d.ts.map +1 -0
  91. package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_transfer.js +84 -0
  92. package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_worker_serve.d.ts +22 -0
  93. package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_worker_serve.d.ts.map +1 -0
  94. package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_worker_serve.js +96 -0
  95. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.d.ts.map +1 -1
  96. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.js +55 -0
  97. package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.d.ts.map +1 -1
  98. package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.js +202 -13
  99. package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.d.ts.map +1 -1
  100. package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.js +147 -10
  101. package/src/shade/renderer/geometry/virtual/runtime/CUT_PLAN_2026_09_14.md +637 -0
  102. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts +33 -36
  103. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts.map +1 -1
  104. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.js +109 -193
  105. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts +58 -28
  106. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
  107. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +77 -105
  108. package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +37 -0
  109. package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN.md +105 -22
  110. package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +548 -0
  111. package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts +29 -50
  112. package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts.map +1 -1
  113. package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.js +47 -489
  114. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts +84 -0
  115. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -0
  116. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +393 -0
  117. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts +234 -0
  118. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -0
  119. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +1363 -0
  120. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidencyOptions.d.ts +81 -0
  121. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidencyOptions.d.ts.map +1 -0
  122. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidencyOptions.js +89 -0
  123. package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts +53 -34
  124. package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts.map +1 -1
  125. package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.js +407 -124
  126. package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts +100 -0
  127. package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts.map +1 -0
  128. package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.js +219 -0
  129. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_EXPAND.d.ts +17 -0
  130. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_EXPAND.d.ts.map +1 -0
  131. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_EXPAND.js +47 -0
  132. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_FLAG_COARSEN.d.ts +20 -0
  133. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_FLAG_COARSEN.d.ts.map +1 -0
  134. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_FLAG_COARSEN.js +19 -0
  135. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.d.ts.map +1 -1
  136. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.js +30 -12
  137. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.d.ts.map +1 -1
  138. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.js +15 -0
  139. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -1
  140. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +18 -1
  141. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_prepare.d.ts.map +1 -1
  142. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_prepare.js +5 -15
  143. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.d.ts +3 -0
  144. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.d.ts.map +1 -0
  145. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.js +77 -0
  146. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_reseed.d.ts +3 -0
  147. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_reseed.d.ts.map +1 -0
  148. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_reseed.js +186 -0
  149. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.d.ts.map +1 -1
  150. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.js +20 -8
  151. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.d.ts.map +1 -1
  152. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.js +580 -188
  153. package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts +15 -18
  154. package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts.map +1 -1
  155. package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.js +19 -28
  156. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.d.ts.map +1 -1
  157. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.js +45 -25
  158. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT.d.ts +1 -0
  159. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT.js +11 -0
  160. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT_COUNT.js +1 -1
  161. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.d.ts +0 -1
  162. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.js +12 -10
  163. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_OFFSET.d.ts +1 -0
  164. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_OFFSET.js +8 -0
  165. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.d.ts +7 -2
  166. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.d.ts.map +1 -1
  167. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.js +8 -3
  168. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_OFFSET.d.ts +2 -0
  169. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_OFFSET.js +19 -0
  170. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_WORDS.d.ts.map +1 -1
  171. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_WORDS.js +1 -1
  172. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PARENT_ROW_OFFSET.d.ts +5 -0
  173. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PARENT_ROW_OFFSET.d.ts.map +1 -0
  174. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PARENT_ROW_OFFSET.js +22 -0
  175. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PARENT_ROW_WORDS.d.ts +14 -0
  176. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PARENT_ROW_WORDS.d.ts.map +1 -0
  177. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PARENT_ROW_WORDS.js +13 -0
  178. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_TARGET_PARENT_BIT.d.ts +17 -0
  179. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_TARGET_PARENT_BIT.d.ts.map +1 -0
  180. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_TARGET_PARENT_BIT.js +16 -0
  181. package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts +15 -0
  182. package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts.map +1 -0
  183. package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.js +16 -0
  184. package/src/shade/renderer/geometry/virtual/runtime/vgeo_frontier_words.d.ts +23 -0
  185. package/src/shade/renderer/geometry/virtual/runtime/vgeo_frontier_words.d.ts.map +1 -0
  186. package/src/shade/renderer/geometry/virtual/runtime/vgeo_frontier_words.js +28 -0
  187. package/src/shade/renderer/geometry/virtual/runtime/vgeo_page.worker.d.ts +2 -0
  188. package/src/shade/renderer/geometry/virtual/runtime/vgeo_page.worker.d.ts.map +1 -0
  189. package/src/shade/renderer/geometry/virtual/runtime/vgeo_page.worker.js +13 -0
  190. package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_block_words.d.ts +10 -5
  191. package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_block_words.d.ts.map +1 -1
  192. package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_block_words.js +15 -6
  193. package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_write_page_block.d.ts +6 -1
  194. package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_write_page_block.d.ts.map +1 -1
  195. package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_write_page_block.js +38 -1
  196. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.d.ts.map +1 -1
  197. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.js +4 -3
  198. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  199. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  200. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +6 -3
  201. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  202. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +6 -3
  203. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  204. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  205. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +12 -4
  206. package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts +2 -0
  207. package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts.map +1 -1
  208. package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js +58 -57
  209. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
  210. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +3 -5
  211. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
  212. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +3 -4
  213. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
  214. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +3 -4
  215. package/src/shade/renderer/rasterize/expand/pass0/pass_mesh_cull.d.ts.map +1 -1
  216. package/src/shade/renderer/rasterize/expand/pass0/pass_mesh_cull.js +7 -7
  217. package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.d.ts.map +1 -1
  218. package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.js +83 -78
  219. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
  220. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +7 -1
  221. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  222. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +7 -1
  223. package/src/shade/renderer/scene/GPUSceneContext.d.ts +22 -2
  224. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  225. package/src/shade/renderer/scene/GPUSceneContext.js +59 -4
  226. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
  227. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +92 -16
  228. package/src/shade/renderer/view/GPUViewContext.d.ts +5 -0
  229. package/src/shade/renderer/view/GPUViewContext.d.ts.map +1 -1
  230. package/src/shade/renderer/view/GPUViewContext.js +21 -0
  231. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  232. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +74 -3
  233. package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyManager.js +0 -723
  234. package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyOptions.js +0 -50
  235. package/src/shade/renderer/shader/chunk/jobs/NOTES.md +0 -47
  236. package/src/shade/renderer/shader/chunk/jobs/chunk_job_system.js +0 -102
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Every knob of {@link VGeoResidency}, in one place, all of them per-reading budgets or plain
3
+ * capacities.
4
+ *
5
+ * The defaults are defaults to be overridden by whoever knows the device and the scene, not
6
+ * measurements. What the shape promises is that nothing the residency does per frame scales with
7
+ * anything but these numbers and the readback the host chose to read
8
+ * (RUNTIME_PLAN_2026_09_14 §1).
9
+ *
10
+ * @author Alex Goldring
11
+ * @copyright Company Named Limited (c) 2026
12
+ */
13
+ export class VGeoResidencyOptions {
14
+ /**
15
+ * Decoded page bytes the VRAM tier may hold. `undefined` means what the pool's slots hold at the
16
+ * page size it was built for, so the two agree by construction.
17
+ * @type {number|undefined}
18
+ */
19
+ vram_budget_bytes: number | undefined;
20
+ /**
21
+ * Decoded page bytes the RAM tier may hold, across every registered container.
22
+ * @type {number}
23
+ */
24
+ ram_budget_bytes: number;
25
+ /**
26
+ * Pages the RAM tier may hold at once — the size of its flat slot arrays. A slot is a few words
27
+ * and a reference; what bounds the count is {@link ram_budget_bytes} in practice, and this only
28
+ * has to be at least what the budget can hold at the smallest page the containers produce.
29
+ * @type {number}
30
+ */
31
+ ram_slot_capacity: number;
32
+ /**
33
+ * Frames a page is safe from eviction after it was last used in its tier. No shorter than the
34
+ * readback latency, which is at least one frame of `mapAsync` and in practice a couple, because a
35
+ * page the last landed reading saw drawn from is a page still on screen.
36
+ * @type {number}
37
+ */
38
+ protect_frames: number;
39
+ /**
40
+ * Pages one reading may promote from RAM to VRAM. A promotion is a slot write, a meshlet batch
41
+ * and an activation cascade; pages are near-uniform, so the budget is in pages rather than bytes.
42
+ * @type {number}
43
+ */
44
+ max_promotions_per_reading: number;
45
+ /**
46
+ * Pages one reading may start fetching, across every registered container.
47
+ * @type {number}
48
+ */
49
+ max_fetches_per_reading: number;
50
+ /**
51
+ * Eviction candidates one reading may test, across both tiers. This is what bounds a full
52
+ * tier's cost per reading: the CLOCK hand tests this many rows and no more, and a reading that
53
+ * spends it refuses the rest of its promotions and admissions until the next reading lands —
54
+ * the tier turns over at a rate the host chose rather than at a rate the resident count chose
55
+ * (RUNTIME_PLAN_2026_09_14 §4.4).
56
+ * @type {number}
57
+ */
58
+ max_eviction_tests_per_reading: number;
59
+ /**
60
+ * Range requests in flight at once, across every registered container — one cap, because
61
+ * per-reader caps do not compose (design §6).
62
+ * @type {number}
63
+ */
64
+ max_concurrent_fetches: number;
65
+ /**
66
+ * Feedback readbacks that may be outstanding at once; a frame that finds this many in flight
67
+ * skips its reading rather than stalling.
68
+ * @type {number}
69
+ */
70
+ max_readbacks_in_flight: number;
71
+ /**
72
+ * Workers that fetch, verify and decode pages. Measured on the Zorah bdf6f961 container, the
73
+ * frame checksum is 1.0 ms a page and the decode 0.08 ms, so thirty-two fetched pages a
74
+ * reading is a frame of main-thread time in-process and the residency cost of thirty-two
75
+ * arrivals on workers. Zero runs in-process, which is also what happens wherever there is no
76
+ * `Worker` or a container's byte source cannot be described to one.
77
+ * @type {number}
78
+ */
79
+ worker_count: number;
80
+ }
81
+ //# sourceMappingURL=VGeoResidencyOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VGeoResidencyOptions.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/virtual/runtime/VGeoResidencyOptions.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH;IACI;;;;OAIG;IACH,mBAFU,MAAM,GAAC,SAAS,CAEI;IAE9B;;;OAGG;IACH,kBAFU,MAAM,CAEqB;IAErC;;;;;OAKG;IACH,mBAFU,MAAM,CAEY;IAE5B;;;;;OAKG;IACH,gBAFU,MAAM,CAEG;IAEnB;;;;OAIG;IACH,4BAFU,MAAM,CAEgB;IAEhC;;;OAGG;IACH,yBAFU,MAAM,CAEa;IAE7B;;;;;;;OAOG;IACH,gCAFU,MAAM,CAEsB;IAEtC;;;;OAIG;IACH,wBAFU,MAAM,CAEY;IAE5B;;;;OAIG;IACH,yBAFU,MAAM,CAEY;IAE5B;;;;;;;OAOG;IACH,cAFU,MAAM,CAEC;CACpB"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Every knob of {@link VGeoResidency}, in one place, all of them per-reading budgets or plain
3
+ * capacities.
4
+ *
5
+ * The defaults are defaults to be overridden by whoever knows the device and the scene, not
6
+ * measurements. What the shape promises is that nothing the residency does per frame scales with
7
+ * anything but these numbers and the readback the host chose to read
8
+ * (RUNTIME_PLAN_2026_09_14 §1).
9
+ *
10
+ * @author Alex Goldring
11
+ * @copyright Company Named Limited (c) 2026
12
+ */
13
+ export class VGeoResidencyOptions {
14
+ /**
15
+ * Decoded page bytes the VRAM tier may hold. `undefined` means what the pool's slots hold at the
16
+ * page size it was built for, so the two agree by construction.
17
+ * @type {number|undefined}
18
+ */
19
+ vram_budget_bytes = undefined;
20
+
21
+ /**
22
+ * Decoded page bytes the RAM tier may hold, across every registered container.
23
+ * @type {number}
24
+ */
25
+ ram_budget_bytes = 512 * 1024 * 1024;
26
+
27
+ /**
28
+ * Pages the RAM tier may hold at once — the size of its flat slot arrays. A slot is a few words
29
+ * and a reference; what bounds the count is {@link ram_budget_bytes} in practice, and this only
30
+ * has to be at least what the budget can hold at the smallest page the containers produce.
31
+ * @type {number}
32
+ */
33
+ ram_slot_capacity = 1 << 14;
34
+
35
+ /**
36
+ * Frames a page is safe from eviction after it was last used in its tier. No shorter than the
37
+ * readback latency, which is at least one frame of `mapAsync` and in practice a couple, because a
38
+ * page the last landed reading saw drawn from is a page still on screen.
39
+ * @type {number}
40
+ */
41
+ protect_frames = 3;
42
+
43
+ /**
44
+ * Pages one reading may promote from RAM to VRAM. A promotion is a slot write, a meshlet batch
45
+ * and an activation cascade; pages are near-uniform, so the budget is in pages rather than bytes.
46
+ * @type {number}
47
+ */
48
+ max_promotions_per_reading = 64;
49
+
50
+ /**
51
+ * Pages one reading may start fetching, across every registered container.
52
+ * @type {number}
53
+ */
54
+ max_fetches_per_reading = 32;
55
+
56
+ /**
57
+ * Eviction candidates one reading may test, across both tiers. This is what bounds a full
58
+ * tier's cost per reading: the CLOCK hand tests this many rows and no more, and a reading that
59
+ * spends it refuses the rest of its promotions and admissions until the next reading lands —
60
+ * the tier turns over at a rate the host chose rather than at a rate the resident count chose
61
+ * (RUNTIME_PLAN_2026_09_14 §4.4).
62
+ * @type {number}
63
+ */
64
+ max_eviction_tests_per_reading = 1024;
65
+
66
+ /**
67
+ * Range requests in flight at once, across every registered container — one cap, because
68
+ * per-reader caps do not compose (design §6).
69
+ * @type {number}
70
+ */
71
+ max_concurrent_fetches = 12;
72
+
73
+ /**
74
+ * Feedback readbacks that may be outstanding at once; a frame that finds this many in flight
75
+ * skips its reading rather than stalling.
76
+ * @type {number}
77
+ */
78
+ max_readbacks_in_flight = 2;
79
+
80
+ /**
81
+ * Workers that fetch, verify and decode pages. Measured on the Zorah bdf6f961 container, the
82
+ * frame checksum is 1.0 ms a page and the decode 0.08 ms, so thirty-two fetched pages a
83
+ * reading is a frame of main-thread time in-process and the residency cost of thirty-two
84
+ * arrivals on workers. Zero runs in-process, which is also what happens wherever there is no
85
+ * `Worker` or a container's byte source cannot be described to one.
86
+ * @type {number}
87
+ */
88
+ worker_count = 4;
89
+ }
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @typedef {import("../format/read/VGeoPage.js").VGeoPage} VGeoPage
3
+ */
1
4
  /**
2
5
  * What a VRAM-resident page **is**, with no device anywhere near it.
3
6
  *
@@ -25,10 +28,10 @@
25
28
  * row of a second table, which saves the traversal a storage binding it does not have to spare
26
29
  * (RUNTIME_PLAN §4.9) and makes an install one contiguous range.
27
30
  *
28
- * ## This tier answers its own activation question
31
+ * ## This tier answers its own activation question, and keeps the answer
29
32
  *
30
- * {@link refresh_selectable} computes selectability from the arena and the lookup — this tier's
31
- * residency — and consults no reader. It used to publish `VGeoContainerReader.is_selectable`, which
33
+ * Selectability is computed from the arena and the lookup — this tier's residency — and consults
34
+ * no reader. It used to publish `VGeoContainerReader.is_selectable`, which
32
35
  * is a fact about the **RAM** tier, into the flag the kernel reads while the descent was gated on
33
36
  * the **VRAM** lookup. VRAM is a strict subset, so a group could be flagged selectable while a page
34
37
  * holding one of its parents had no row here, and the parent's own ancestor then drew a coarse
@@ -36,6 +39,22 @@
36
39
  * the group row carrying its parent count (VGEO_GROUP_ROW_OFFSET.PARENT_COUNT) so that the rule
37
40
  * can be evaluated where the residency it is about lives.
38
41
  *
42
+ * And it is **kept, not recomputed**. The rule is design §6's: a group is selectable iff every one
43
+ * of its parent-cluster references is live — the referencing cluster's page resident here and
44
+ * that cluster's own group selectable here. `refresh_selectable` used to evaluate that as a
45
+ * closure over every resident group of the geometry after every install and every evict: 4.2 ms
46
+ * a call at 4,096 resident pages of a real asset, twice per promotion at a full tier, which is
47
+ * where a 637 ms frame came from (RUNTIME_PLAN_2026_09_14 §0). §6 also says how it is meant to
48
+ * be kept — "carried by a counter instead of dependency lists … activation cascades" — and
49
+ * `VGeoContainerReader` already does that for the RAM tier. This tier does it over the arena:
50
+ * the live-reference count lives in the group row's FLAGS word above the flag bit, a page's
51
+ * groups are seeded from the resident parents that reference them when it arrives, and the
52
+ * groups that reach their count cascade into the resident children that were waiting on them
53
+ * (§3 of that plan). An install costs the clusters of the page's resident parents plus the
54
+ * cascade; an eviction under the child rule cascades nothing, because nothing resident depends
55
+ * on a page with no resident children. The rule itself survives as the fixpoint oracle
56
+ * `VGeoRuntimeTables.spec.js` holds the counter to after every step of random tours.
57
+ *
39
58
  * **Nothing here decides anything.** What to install, what to evict — all of that is the pool's.
40
59
  * What this refuses is only what it cannot represent.
41
60
  *
@@ -161,12 +180,25 @@ export class VGeoRuntimeTables {
161
180
  * @returns {number}
162
181
  */
163
182
  cluster_base(page_row: number): number;
183
+ /**
184
+ * Word offset of a page's parent rows, which is the end of its cluster rows.
185
+ *
186
+ * Equal to the end of the block when the page has none, which is every page of a container
187
+ * written before `format_version` 4: `PARENT_ENTRY_COUNT` is zero and nothing reads past it.
188
+ *
189
+ * @param {number} page_row
190
+ * @returns {number}
191
+ */
192
+ parent_base(page_row: number): number;
164
193
  /**
165
194
  * Make a decoded page resident: one slot, one lookup word.
166
195
  *
167
- * The page installs **not selectable** — every group's flag is clear — because a page that
168
- * arrives drawing is a page that draws before the ancestors it hangs off have. Activation is
169
- * {@link refresh_selectable}.
196
+ * The page's rows are written with every group's flag clear, and then activated in place: its
197
+ * groups are seeded with the live references the resident parents make into them, the ones
198
+ * that reach their parent count flip on, and the flip cascades into whatever resident children
199
+ * were waiting on this page. A page that arrives drawing would draw before the ancestors it
200
+ * hangs off have; a page whose arrival completes a group several pages down turns that group
201
+ * on. Both are this method's, and the rows that flipped are on {@link take_activated_rows}.
170
202
  *
171
203
  * @param {number} geometry_row
172
204
  * @param {VGeoPage} page as `vgeo_read_page` decoded it
@@ -209,44 +241,30 @@ export class VGeoRuntimeTables {
209
241
  */
210
242
  pages_of(geometry_row: number): Set<number>;
211
243
  /**
212
- * Whether any page resident **in this tier** refines out of this one.
244
+ * How many distinct child pages of this one are resident in this tier.
213
245
  *
214
- * Design §6's eviction rule reads "no child page resident in this tier", and this answers it out
215
- * of the arena rather than out of the RAM reader's child table — which returned "no children"
216
- * the moment the RAM tier dropped the page, orphaning every VRAM-resident child under it
217
- * (REVIEW_LEDGER M9).
246
+ * Design §6's eviction rule reads "no child page resident in this tier", and this answers it
247
+ * out of a count kept at install and evict rather than a walk of the page's cluster rows per
248
+ * candidate — and out of this tier's own residency rather than the RAM reader's child table,
249
+ * which returned "no children" the moment the RAM tier dropped the page (REVIEW_LEDGER M9).
218
250
  *
219
251
  * @param {number} page_row
220
- * @returns {boolean}
252
+ * @returns {number}
221
253
  */
222
- has_resident_child(page_row: number): boolean;
254
+ resident_children(page_row: number): number;
223
255
  /**
224
- * Recompute one geometry's group selectability over **this tier's** residency.
225
- *
226
- * `VIRTUAL_GEOMETRY_DESIGN.md` §6: a group is selectable iff every one of its parent-cluster
227
- * references is live — the referencing cluster's page resident here, and that cluster's own
228
- * group selectable here. Groups with no parents at all are the top of the DAG and are selectable
229
- * the moment their page is. That is a closure over the resident set, so it is computed as one:
230
- * seed the parentless groups and cascade down, counting a reference only when the group making
231
- * it is already selectable.
256
+ * Page rows whose group flags flipped since this was last called, and empties the list.
232
257
  *
233
- * Recomputed whole rather than propagated incrementally, because an install can turn groups on
234
- * several pages away and an eviction can turn them off again, and because the cost is the same
235
- * order as the install that provoked it — one pass over the geometry's resident clusters. The
236
- * incremental form is a later optimization with a counter to keep correct; the one thing it
237
- * must not be is a *second* implementation of the rule.
238
- *
239
- * @param {number} geometry_row
240
- * @returns {number[]} page rows whose group flags changed, for the caller to upload
258
+ * @returns {number[]}
241
259
  */
242
- refresh_selectable(geometry_row: number): number[];
260
+ take_activated_rows(): number[];
243
261
  /**
244
262
  * Publish one group's selectability directly.
245
263
  *
246
- * {@link refresh_selectable} is what a runtime calls; this is for a spec that needs a state the
247
- * rule happens not to produce on the assets measured so far — the cut's own-group term is
248
- * correctness for exactly such a state, and a guard nothing can construct is a guard nothing can
249
- * test. The next {@link refresh_selectable} overwrites it.
264
+ * Activation is the tables' own; this is for a spec that needs a state the rule happens not to
265
+ * produce on the assets measured so far — the cut's own-group term is correctness for exactly
266
+ * such a state, and a guard nothing can construct is a guard nothing can test. It writes the
267
+ * flag bit and leaves the count, so the next cascade through the group may overwrite it.
250
268
  *
251
269
  * @param {number} page_row
252
270
  * @param {number} group
@@ -284,4 +302,5 @@ export class VGeoRuntimeTables {
284
302
  set_meshlet_base(page_row: number, meshlet_base: number): boolean;
285
303
  #private;
286
304
  }
305
+ export type VGeoPage = import("../format/read/VGeoPage.js").VGeoPage;
287
306
  //# sourceMappingURL=VGeoRuntimeTables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VGeoRuntimeTables.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.js"],"names":[],"mappings":"AAmBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH;IA+II;;;;;;;;OAQG;IACH;QAP4B,aAAa,GAA9B,MAAM;QACW,SAAS,GAA1B,MAAM;QAEW,UAAU,GAA3B,MAAM;QACW,YAAY,GAA7B,MAAM;QACW,iBAAiB,GAAlC,MAAM;OA4BhB;IAED;;OAEG;IACH,gCAEC;IAED;;OAEG;IACH,+BAEC;IAED;;OAEG;IACH,kCAEC;IAED;;OAEG;IACH,gCAEC;IAED;;OAEG;IACH,yBAEC;IAED;;OAEG;IACH,4BAEC;IAED;;;OAGG;IACH,kCAEC;IAED;;OAEG;IACH,kCAEC;IAED;;;OAGG;IACH,iCAEC;IAED;;;;;;OAMG;IACH,wBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;;;;;;OAWG;IACH,8BALW,MAAM,qBACN,MAAM,GACJ,MAAM,CAgDlB;IAED;;;;;;OAMG;IACH,kCAJW,MAAM,GACJ,MAAM,EAAE,CA8CpB;IAED;;;;OAIG;IACH,6BAJW,MAAM,SACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,0BAJW,MAAM,cACN,MAAM,GACJ,MAAM,CAQlB;IAED;;;;OAIG;IACH,qBAJW,MAAM,SACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;OAKG;IACH,oBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,qBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;OAGG;IACH,uBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;;;;;;;;;;;OAcG;IACH,sBARW,MAAM,gCAEN,MAAM,GACJ,MAAM,CAkElB;IAED;;;;;OAKG;IACH,gCAFa,MAAM,CAMlB;IAED;;;;;;;;;;;;;;OAcG;IACH,gBAHW,MAAM,GACJ,OAAO,CAmCnB;IAED;;;;;;OAMG;IACH,uBAHW,MAAM,GACJ,IAAI,MAAM,CAAC,CAIvB;IAED;;;;;;;;;;OAUG;IACH,6BAHW,MAAM,GACJ,OAAO,CA8BnB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,iCAHW,MAAM,GACJ,MAAM,EAAE,CAgIpB;IAED;;;;;;;;;;;;OAYG;IACH,+BALW,MAAM,SACN,MAAM,cACN,OAAO,GACL,IAAI,CAQhB;IAED;;;;OAIG;IACH,8BAJW,MAAM,SACN,MAAM,GACJ,OAAO,CAQnB;IAED;;;;;OAKG;IACH,qBAHW,MAAM,GACJ,MAAM,EAAE,CAYpB;IAED;;;;;OAKG;IACH,sBAHW,MAAM,GACJ,MAAM,EAAE,CAOpB;IAED;;;;;;OAMG;IACH,2BAJW,MAAM,gBACN,MAAM,GACJ,OAAO,CAYnB;;CA4DJ"}
1
+ {"version":3,"file":"VGeoRuntimeTables.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.js"],"names":[],"mappings":"AAmBA;;GAEG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH;IAmKI;;;;;;;;OAQG;IACH;QAP4B,aAAa,GAA9B,MAAM;QACW,SAAS,GAA1B,MAAM;QAEW,UAAU,GAA3B,MAAM;QACW,YAAY,GAA7B,MAAM;QACW,iBAAiB,GAAlC,MAAM;OA6BhB;IAED;;OAEG;IACH,gCAEC;IAED;;OAEG;IACH,+BAEC;IAED;;OAEG;IACH,kCAEC;IAED;;OAEG;IACH,gCAEC;IAED;;OAEG;IACH,yBAEC;IAED;;OAEG;IACH,4BAEC;IAED;;;OAGG;IACH,kCAEC;IAED;;OAEG;IACH,kCAEC;IAED;;;OAGG;IACH,iCAEC;IAED;;;;;;OAMG;IACH,wBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;;;;;;OAWG;IACH,8BALW,MAAM,qBACN,MAAM,GACJ,MAAM,CAiDlB;IAED;;;;;;OAMG;IACH,kCAJW,MAAM,GACJ,MAAM,EAAE,CAgDpB;IAED;;;;OAIG;IACH,6BAJW,MAAM,SACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,0BAJW,MAAM,cACN,MAAM,GACJ,MAAM,CAQlB;IAED;;;;OAIG;IACH,qBAJW,MAAM,SACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;OAKG;IACH,oBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,qBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;OAGG;IACH,uBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;;;;;OAQG;IACH,sBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,sBARW,MAAM,QACN,QAAQ,gBACR,MAAM,GACJ,MAAM,CAkFlB;IAED;;;;;OAKG;IACH,qBAHW,QAAQ,GACN,MAAM,CAOlB;IAED;;;;;;;;;;;;;;OAcG;IACH,gBAHW,MAAM,GACJ,OAAO,CAuCnB;IAED;;;;;;OAMG;IACH,uBAHW,MAAM,GACJ,IAAI,MAAM,CAAC,CAIvB;IAED;;;;;;;;;;OAUG;IACH,4BAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,uBAFa,MAAM,EAAE,CAQpB;IAwWD;;;;;;;;;;;;OAYG;IACH,+BALW,MAAM,SACN,MAAM,cACN,OAAO,GACL,IAAI,CAUhB;IAED;;;;OAIG;IACH,8BAJW,MAAM,SACN,MAAM,GACJ,OAAO,CAQnB;IAED;;;;;OAKG;IACH,qBAHW,MAAM,GACJ,MAAM,EAAE,CAapB;IAED;;;;;OAKG;IACH,sBAHW,MAAM,GACJ,MAAM,EAAE,CAOpB;IAED;;;;;;OAMG;IACH,2BAJW,MAAM,gBACN,MAAM,GACJ,OAAO,CAYnB;;CA4DJ;uBAjtCY,OAAO,4BAA4B,EAAE,QAAQ"}