@volter/game-editor 0.5.134 → 0.5.135

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 (296) hide show
  1. package/BUNDLED_NOTICES +22 -22
  2. package/catalog/entries/blender.json +2 -2
  3. package/catalog/entries/music.json +2 -2
  4. package/dist/.vite/manifest.json +2194 -2194
  5. package/dist/assets/{AssetBudgetPanel-DBREVH7K.js → AssetBudgetPanel-DHDxdcjI.js} +3 -3
  6. package/dist/assets/{AudioViewer-BfG1UANw.js → AudioViewer-BNZQHDg4.js} +1 -1
  7. package/dist/assets/{CanvasBoardDocument-BUO8VIFd.js → CanvasBoardDocument-hKTAuRey.js} +1 -1
  8. package/dist/assets/{CanvasSceneViewport-Cyi5VmpW.js → CanvasSceneViewport-C2K4aFsE.js} +1 -1
  9. package/dist/assets/{ColorInput-urXoYDcd.js → ColorInput-BiEIV7ay.js} +1 -1
  10. package/dist/assets/{ColorPicker-fsO53K3F.js → ColorPicker-tL7QuZuq.js} +1 -1
  11. package/dist/assets/{EntityModelDocument-CDCx-hf_.js → EntityModelDocument-5D4_EJ1V.js} +1 -1
  12. package/dist/assets/{EnvironmentAssetDocument-BBYZhvSA.js → EnvironmentAssetDocument-DGwonjpr.js} +1 -1
  13. package/dist/assets/{GameplaySessionTimeline-3YMetB-b.js → GameplaySessionTimeline-aU04h32D.js} +1 -1
  14. package/dist/assets/{ImageViewer-DvXVm5yL.js → ImageViewer-B_EV4B-Y.js} +1 -1
  15. package/dist/assets/InspectorObjectPreview-BWtsOURe.js +1 -0
  16. package/dist/assets/{JsonAssetDocument-C9Mkxozv.js → JsonAssetDocument-CI-VEvHK.js} +1 -1
  17. package/dist/assets/{LiveModuleDocument-CblUPJ_-.js → LiveModuleDocument-A55_Ap0w.js} +1 -1
  18. package/dist/assets/{LutAssetDocument-BiQlc5zQ.js → LutAssetDocument-C0D23zLT.js} +1 -1
  19. package/dist/assets/{ModelAssetDocument-BjdNPMXz.js → ModelAssetDocument-C2Iwdl51.js} +1 -1
  20. package/dist/assets/{NonThreeAuthoringBootstrap-B3TVSWs6.js → NonThreeAuthoringBootstrap-CcN-v_vU.js} +1 -1
  21. package/dist/assets/{Object3DDocumentToolbar-BzWMEadR.js → Object3DDocumentToolbar-CmQ2FwOD.js} +1 -1
  22. package/dist/assets/Object3DDocumentViewport-nrhxhWxf.js +2 -0
  23. package/dist/assets/{Object3DPreview-DKrmYZ2j.js → Object3DPreview-BdNrtrgI.js} +1 -1
  24. package/dist/assets/{OnlineAssetDetail-DL4Uk-QM.js → OnlineAssetDetail-Bt3SSxk5.js} +1 -1
  25. package/dist/assets/{PlayBar-CRGQfcnV.js → PlayBar-IaADBOOU.js} +1 -1
  26. package/dist/assets/{QuarksAssetDocument-BZR-t9h6.js → QuarksAssetDocument-DIruslou.js} +1 -1
  27. package/dist/assets/{ReactCanvasControls-_hNcHTPM.js → ReactCanvasControls-BpPOAB1i.js} +1 -1
  28. package/dist/assets/{RootSelectionOverlay-DbaLtdxe.js → RootSelectionOverlay-Bha7b7g8.js} +1 -1
  29. package/dist/assets/{ShaderAssetDocument-D5ttIEe-.js → ShaderAssetDocument-DvHNu5O2.js} +1 -1
  30. package/dist/assets/{ShadowEditor-DrodXLYb.js → ShadowEditor-LF5W34RB.js} +1 -1
  31. package/dist/assets/{SourceAssetViewer-B0gaMP54.js → SourceAssetViewer-CuinHm6v.js} +1 -1
  32. package/dist/assets/StageHost-C8sptoIR.js +2 -0
  33. package/dist/assets/{StoryPreviewMount-Dd_vJhm8.js → StoryPreviewMount-BMTtfMsu.js} +1 -1
  34. package/dist/assets/{ThreeBoardDocument-y_Z0EIcX.js → ThreeBoardDocument-1LIOqdcA.js} +2 -2
  35. package/dist/assets/{ThreeIsolationSceneContent--4LRLfuN.js → ThreeIsolationSceneContent-D-viEHX8.js} +1 -1
  36. package/dist/assets/{ToolObject3DPreview-DESJToBG.js → ToolObject3DPreview-CoSjBUeM.js} +1 -1
  37. package/dist/assets/{Toolbar-CdoTE42L.js → Toolbar-BCviZ4hw.js} +1 -1
  38. package/dist/assets/{TransientHint-KoS0JmOy.js → TransientHint-xKLY44J3.js} +1 -1
  39. package/dist/assets/{VideoViewer-ClPX-MnP.js → VideoViewer-Ccuo8SbQ.js} +1 -1
  40. package/dist/assets/{ViewportShadingMenu-IEeWeBgg.js → ViewportShadingMenu-2cP_H7Ma.js} +1 -1
  41. package/dist/assets/{active-ingest-D5MyeUO-.js → active-ingest-5EEDH3if.js} +2 -2
  42. package/dist/assets/{animation-clock-QSEFZjOZ.js → animation-clock-D9LB5smr.js} +1 -1
  43. package/dist/assets/{animation-mixers.service-CIQ1NwlZ.js → animation-mixers.service-CpAQO3GY.js} +1 -1
  44. package/dist/assets/{animation-timeline.utility-DclbOIQU.js → animation-timeline.utility-BI25zuOA.js} +1 -1
  45. package/dist/assets/{asset-budget-asset.menu-B_RUb8LB.js → asset-budget-asset.menu-cpAHllXs.js} +1 -1
  46. package/dist/assets/{asset-budget.action-BVZkCIk9.js → asset-budget.action-D91HsFo6.js} +1 -1
  47. package/dist/assets/{asset-budget.document-BxZVPKFn.js → asset-budget.document-DKhAbxa-.js} +1 -1
  48. package/dist/assets/{asset-budget.menu-BNvhZjmV.js → asset-budget.menu-Dv_hRhqg.js} +1 -1
  49. package/dist/assets/{asset-editor-persistence-X5GOGEx5.js → asset-editor-persistence-DvrmJ4jX.js} +1 -1
  50. package/dist/assets/{asset-loaders-F8EI8K4Y.js → asset-loaders-DmsTVRFA.js} +1 -1
  51. package/dist/assets/{asset-preview-Cl6-TRBJ.js → asset-preview-DVSFT7SS.js} +1 -1
  52. package/dist/assets/{audio-unlock.service-CKCbQfPn.js → audio-unlock.service-D_hgqktK.js} +1 -1
  53. package/dist/assets/{audio.utility-DGMFI8Wt.js → audio.utility-BZi7S3On.js} +1 -1
  54. package/dist/assets/autoplay.service-t1c91HxR.js +1 -0
  55. package/dist/assets/{babylon-authoring-adapter-2siMeodm.js → babylon-authoring-adapter-BJIGsMEZ.js} +1 -1
  56. package/dist/assets/{binding-resolver-Clp4dXl1.js → binding-resolver-yBwth89-.js} +2 -2
  57. package/dist/assets/blender-motion-worker-ECrqnoHW.js +1 -0
  58. package/dist/assets/{blender-node-editor.document-CQIYeO4U.js → blender-node-editor.document-DolFex2j.js} +1 -1
  59. package/dist/assets/{blender-properties-tab-DqqNZUGP.js → blender-properties-tab-Be5MXZig.js} +1 -1
  60. package/dist/assets/{blender-runtime-host-Dwdi6rRu.js → blender-runtime-host-BQ22-Fpm.js} +1 -1
  61. package/dist/assets/{blender-runtime-skin-Bd4w1lC7.js → blender-runtime-skin-DKHV6b2q.js} +43 -43
  62. package/dist/assets/{blender-runtime.document-DzBO4ST4.js → blender-runtime.document-L66K1h2q.js} +2 -2
  63. package/dist/assets/{blender-screenshot.menu-CkxyIS0r.js → blender-screenshot.menu-B_olV65B.js} +1 -1
  64. package/dist/assets/{blender-timeline.document-B1tyOGDy.js → blender-timeline.document-OeW12fJm.js} +1 -1
  65. package/dist/assets/{blender-uv-editor.document-9ZvlBYHd.js → blender-uv-editor.document-CCE1_Fjr.js} +1 -1
  66. package/dist/assets/{blender-version.status-D4M0ZmWc.js → blender-version.status-CcNWuPxA.js} +1 -1
  67. package/dist/assets/{blender.command-iGuVGF9p.js → blender.command-gGyT3A0Q.js} +1 -1
  68. package/dist/assets/{board-guides-CxSLXJuc.js → board-guides-CIhq0Sbd.js} +1 -1
  69. package/dist/assets/{bridge.command-B7LDeF0u.js → bridge.command-Du9l4KRx.js} +3 -3
  70. package/dist/assets/{browserAll-dZH4FGVs.js → browserAll-DEgvPd5A.js} +1 -1
  71. package/dist/assets/{build-player.document-Dnu4oIqU.js → build-player.document-yRmbh7W2.js} +1 -1
  72. package/dist/assets/{build-profiles.document-CVrNm6v9.js → build-profiles.document-D2MP3imJ.js} +1 -1
  73. package/dist/assets/{build-progress.status-P0RSr9My.js → build-progress.status-QY6WMyc4.js} +1 -1
  74. package/dist/assets/{build-session-BQkdRehF.js → build-session-DC5GZ3DQ.js} +1 -1
  75. package/dist/assets/{build.action-D-KSIYX6.js → build.action-B7wUwNnJ.js} +1 -1
  76. package/dist/assets/{build.command-DyKprFPn.js → build.command-BWsI5Ueg.js} +1 -1
  77. package/dist/assets/{build.header-cJKcpxbO.js → build.header-tZ0wvQLR.js} +1 -1
  78. package/dist/assets/{build.menu-C0GriW-y.js → build.menu-B5JhkoT1.js} +1 -1
  79. package/dist/assets/{build.service-czCQ8i_m.js → build.service-DU0G9SvZ.js} +1 -1
  80. package/dist/assets/{camera-B-6JYcrc.js → camera-B16bx30W.js} +1 -1
  81. package/dist/assets/{camera-runtime.inspector-CUxYlsOe.js → camera-runtime.inspector--8LumKgx.js} +1 -1
  82. package/dist/assets/{canvas-design-mount-B9fNsxCy.js → canvas-design-mount-DLpUud4y.js} +3 -3
  83. package/dist/assets/{canvas-entry-runtime-DMxmlXgn.js → canvas-entry-runtime-Btln7THA.js} +2 -2
  84. package/dist/assets/{canvas-preview-frames-CeSkpTOo.js → canvas-preview-frames-hUiRfTNo.js} +1 -1
  85. package/dist/assets/{canvas-story-capture.service-B0v6Hgsb.js → canvas-story-capture.service-D4Uk1AxK.js} +2 -2
  86. package/dist/assets/{capability-coverage-BnIBnsu6.js → capability-coverage-3wZkRo7W.js} +1 -1
  87. package/dist/assets/{collaboration-presence-DMUWVR-Y.js → collaboration-presence-CCL71T0o.js} +1 -1
  88. package/dist/assets/{collider-B3R33xSA.js → collider-CbxsgmWL.js} +1 -1
  89. package/dist/assets/{component-board.service-N2L18UE3.js → component-board.service-CXwworM0.js} +2 -2
  90. package/dist/assets/{component-board.service-BqyyULpE.js → component-board.service-ChMB-pU1.js} +2 -2
  91. package/dist/assets/{component-board.service-BOu_0moJ.js → component-board.service-CwevhTxY.js} +2 -2
  92. package/dist/assets/{component-contracts.service-SAYJL3m5.js → component-contracts.service-B3Yrn-qm.js} +1 -1
  93. package/dist/assets/{component-instance-root-Csn_jFKu.js → component-instance-root-DsmCGX40.js} +1 -1
  94. package/dist/assets/{component-verbs.command-DO3ErJvX.js → component-verbs.command-BXQ96Jx4.js} +1 -1
  95. package/dist/assets/{component-verbs.service-N2PkecVi.js → component-verbs.service-ByTx_24k.js} +1 -1
  96. package/dist/assets/{config-BfMPkgbX.js → config-CmlogGx1.js} +2 -2
  97. package/dist/assets/{configurations-CFU-Dhza.js → configurations-Dm-0m9Xo.js} +1 -1
  98. package/dist/assets/{connection.status-CADD42l1.js → connection.status-BXgUyNWa.js} +1 -1
  99. package/dist/assets/{constraints.inspector-DsPRZ_7o.js → constraints.inspector-29yLh17h.js} +1 -1
  100. package/dist/assets/{content-bounds-eP0tmLbj.js → content-bounds-CKyqwWXn.js} +1 -1
  101. package/dist/assets/{contract-system-adapters-B6e3eEm4.js → contract-system-adapters-kobU6S3P.js} +1 -1
  102. package/dist/assets/{coverage.service-CJzGwfqz.js → coverage.service-BxQTn5sd.js} +1 -1
  103. package/dist/assets/{create-runtime-BK5setuG.js → create-runtime-BGWCDacY.js} +1 -1
  104. package/dist/assets/{curve-CTOtUBlv.js → curve-BiV0q4A3.js} +1 -1
  105. package/dist/assets/{data-asset-Cet7XPkK.js → data-asset-DdXXV51u.js} +1 -1
  106. package/dist/assets/{data-ref-DR-Qzemy.js → data-ref-DtKM0ekt.js} +1 -1
  107. package/dist/assets/{debug-bridge-Cf3LI-DK.js → debug-bridge-jmCDlPiX.js} +1 -1
  108. package/dist/assets/{debug-registry-BOPmuIUp.js → debug-registry-Be63j2Mr.js} +1 -1
  109. package/dist/assets/{deferred-ingest-play-Cf5GxuCA.js → deferred-ingest-play-D1FWeSDi.js} +2 -2
  110. package/dist/assets/{design-time-canvas-mount-DrZEhuLt.js → design-time-canvas-mount-C2ZWDlkZ.js} +2 -2
  111. package/dist/assets/{design-time-layers-bDxNuQrn.js → design-time-layers-BQa8hlgL.js} +1 -1
  112. package/dist/assets/{design-time-mount.service-je1c-KMA.js → design-time-mount.service-CVJWtupB.js} +2 -2
  113. package/dist/assets/{design-time-mount.service-CpKFUnyD.js → design-time-mount.service-CvGlSAKG.js} +2 -2
  114. package/dist/assets/{design-time-react-mount-BA5iKaF-.js → design-time-react-mount-COx2oYkW.js} +1 -1
  115. package/dist/assets/{document-preview-three-gkEVqHtw.js → document-preview-three-CbIS_Aca.js} +1 -1
  116. package/dist/assets/{dom-authoring-adapter-Bj2xilqO.js → dom-authoring-adapter-tQBQ_1xs.js} +1 -1
  117. package/dist/assets/{draco3d-DvlGNNIt.js → draco3d-C_nv0vSu.js} +1 -1
  118. package/dist/assets/{edit-mode-audio.service-CmfXIYXD.js → edit-mode-audio.service-NlZIq_ZD.js} +1 -1
  119. package/dist/assets/{edit-mode-authoring-CL-UHzaJ.js → edit-mode-authoring-DbcZXYOM.js} +1 -1
  120. package/dist/assets/{edit-mode-networking.service-Bc8In_lI.js → edit-mode-networking.service-BYO3SvM8.js} +1 -1
  121. package/dist/assets/{editor-api-BYvld5jR.js → editor-api-DU9Nbpm5.js} +1 -1
  122. package/dist/assets/{editor-layers-CH7HhT0X.js → editor-layers-_Gcy52mS.js} +1 -1
  123. package/dist/assets/{editor-shell-store-amyZ1RI8.js → editor-shell-store-DcbczB-I.js} +1 -1
  124. package/dist/assets/{entity-object-3G5QPQLw.js → entity-object-hOX0jkMo.js} +1 -1
  125. package/dist/assets/{extend-DjlabNLr.js → extend-BFa8yX2b.js} +1 -1
  126. package/dist/assets/{fork-menu-B8yfLOUH.js → fork-menu-DnlFd3lk.js} +1 -1
  127. package/dist/assets/{frame-debugger-store-BV3FLhEY.js → frame-debugger-store-DvIUfGjd.js} +1 -1
  128. package/dist/assets/{game-contract-seams-BDgW-mIt.js → game-contract-seams-CB0AOLdl.js} +1 -1
  129. package/dist/assets/{game-css-scope-transform-DhJl2A8e.js → game-css-scope-transform-BePfCj3N.js} +1 -1
  130. package/dist/assets/{game-document.service-DAUO1T0i.js → game-document.service-Y4MCpEG2.js} +1 -1
  131. package/dist/assets/{game-eval.command-Cio3Dkxy.js → game-eval.command-DLlHsT-7.js} +1 -1
  132. package/dist/assets/{game-module-access-PdJNp8US.js → game-module-access-nUAwk1dj.js} +1 -1
  133. package/dist/assets/{game-network-BURPV4Ya.js → game-network-BNeDxziF.js} +3 -3
  134. package/dist/assets/{gameplay-export-D5hkueX8.js → gameplay-export-Bo-oK6Gq.js} +1 -1
  135. package/dist/assets/{gameplay-replay-Cv7zCCW5.js → gameplay-replay-0cZ9wkDO.js} +1 -1
  136. package/dist/assets/{gameplay.command-B1TFqBle.js → gameplay.command-rqy8cEAf.js} +1 -1
  137. package/dist/assets/{generation-jobs-BU0DwlfA.js → generation-jobs-DNAW8eNU.js} +1 -1
  138. package/dist/assets/{generation.service-BS-sYsoC.js → generation.service-CR9vGnlh.js} +1 -1
  139. package/dist/assets/{generations-CtI5Nfto.js → generations-gowHWx4e.js} +1 -1
  140. package/dist/assets/{generations.status-Bckm5TSn.js → generations.status-Dhp03MBg.js} +1 -1
  141. package/dist/assets/{hierarchy-marks-R3bbWFw8.js → hierarchy-marks-DYUvG4lt.js} +1 -1
  142. package/dist/assets/{hosted-asset-materialization-B0P9Dz4H.js → hosted-asset-materialization-ick1zhVG.js} +1 -1
  143. package/dist/assets/{index-CtcNtXoD.js → index-B0UXNGe3.js} +1 -1
  144. package/dist/assets/{index-DZsMLhE7.js → index-BJd--nme.js} +1 -1
  145. package/dist/assets/{index-CQI0xONY.js → index-BSF96KzC.js} +1 -1
  146. package/dist/assets/{index-DgwfPo6P.js → index-By7rtNst.js} +1 -1
  147. package/dist/assets/{index-cFAgtv_D.js → index-C6b9kkV0.js} +7 -7
  148. package/dist/assets/{index-BU18Vn_5.js → index-CIJAwE7l.js} +2 -2
  149. package/dist/assets/{index-BiGppEbl.js → index-Cq-3G_01.js} +1 -1
  150. package/dist/assets/{index-CItI0GWb.js → index-Cvqad4qf.js} +1 -1
  151. package/dist/assets/{index-D5LetU3U.js → index-DN_ydMe4.js} +1 -1
  152. package/dist/assets/{inference-diagnostics-BU6iwPab.js → inference-diagnostics-DNhFOXFZ.js} +1 -1
  153. package/dist/assets/{ingest-boot-viewport-0qgtwykF.js → ingest-boot-viewport-Di4Sb09a.js} +1 -1
  154. package/dist/assets/{ingest-siblings-DpZO2cN7.js → ingest-siblings-BmG05Dep.js} +1 -1
  155. package/dist/assets/{ingest-source-persistence-DM1yk0WC.js → ingest-source-persistence-Dz_7hVqh.js} +1 -1
  156. package/dist/assets/{ingest.service-Q6KfT5gU.js → ingest.service-BGGBXhbP.js} +1 -1
  157. package/dist/assets/{inspect-DTtq2ZaM.js → inspect-BRJFBB2z.js} +1 -1
  158. package/dist/assets/instances.command-q-B_dgED.js +1 -0
  159. package/dist/assets/{json-history-resource-Bzmw9S9j.js → json-history-resource-D4GYZYcB.js} +1 -1
  160. package/dist/assets/{layered-pick-DpPgGsmw.js → layered-pick-D1CaaJD4.js} +1 -1
  161. package/dist/assets/{light-CqdOel9A.js → light-DY_lN4WQ.js} +1 -1
  162. package/dist/assets/{live-project-verbs-Dk8dl25b.js → live-project-verbs-BVyxYNhA.js} +1 -1
  163. package/dist/assets/{machine.document-CkmCGbrt.js → machine.document-ChSDKagD.js} +1 -1
  164. package/dist/assets/{machines.finder-CmTp1FpN.js → machines.finder-zJZEKJbn.js} +1 -1
  165. package/dist/assets/{material-BeA_YaoR.js → material-DOuhah-I.js} +1 -1
  166. package/dist/assets/{material-factory-D8NblM4k.js → material-factory-DCAwUIMb.js} +1 -1
  167. package/dist/assets/{mesh-DcSKml6N.js → mesh-BBgqQ4tw.js} +1 -1
  168. package/dist/assets/{model-asset-sections.service-CslipfqH.js → model-asset-sections.service-D5_Qnu8F.js} +1 -1
  169. package/dist/assets/{model-inspection-BOADEfEi.js → model-inspection-Ce70HeHy.js} +1 -1
  170. package/dist/assets/{model-thumbnail-CtcWoVlh.js → model-thumbnail-oBpbFAcj.js} +1 -1
  171. package/dist/assets/{models.finder-CLSmgLM0.js → models.finder-DnEKW1nB.js} +1 -1
  172. package/dist/assets/{module-mode-CWaM_UjF.js → module-mode-Z2Pw8_cG.js} +2 -2
  173. package/dist/assets/{mount-canvas-ingest-root-h6iaPwvu.js → mount-canvas-ingest-root-q8qGzO0M.js} +2 -2
  174. package/dist/assets/{mount-dom-ingest-root-Dv9w9jVQ.js → mount-dom-ingest-root-mqtEmyUH.js} +2 -2
  175. package/dist/assets/{mount-ingest-root-BmowXjnM.js → mount-ingest-root-CnknLsAH.js} +2 -2
  176. package/dist/assets/{mount-manifest-DT-5TZIO.js → mount-manifest-RVw-dK1A.js} +1 -1
  177. package/dist/assets/{mount-three-ingest-root-yUA3l6cH.js → mount-three-ingest-root-B4T-Y3Qv.js} +1 -1
  178. package/dist/assets/{mounted-authoring-8UW6roGY.js → mounted-authoring-BW8axnm4.js} +1 -1
  179. package/dist/assets/{mounted-story-viewport-source-TLKhxhBG.js → mounted-story-viewport-source-bf12XIaz.js} +1 -1
  180. package/dist/assets/{native-debug-module-DCkYCR9b.js → native-debug-module-Be_Zu0XE.js} +1 -1
  181. package/dist/assets/{navigation-Bwy6QgMh.js → navigation-U-2TvMMp.js} +1 -1
  182. package/dist/assets/{navmesh.menu-D4slOhpR.js → navmesh.menu-Dwv0BlFc.js} +1 -1
  183. package/dist/assets/{navmesh.service-Bg26JytG.js → navmesh.service-D0WfDvfc.js} +1 -1
  184. package/dist/assets/network-observer.service-Bp4Pp-ZK.js +1 -0
  185. package/dist/assets/{network.utility-BDVzqEpk.js → network.utility-DqtzEO6P.js} +1 -1
  186. package/dist/assets/{object3d-document-session-registry-CYplHMV_.js → object3d-document-session-registry--r1BseN3.js} +2 -2
  187. package/dist/assets/{oid-transform-DuoR1Fev.js → oid-transform-i2EGkRgu.js} +1 -1
  188. package/dist/assets/{particles-Bmg7sImx.js → particles-B-kl7baZ.js} +1 -1
  189. package/dist/assets/{pixi-authoring-adapter-DYnS9D_i.js → pixi-authoring-adapter-B0XPfm9f.js} +1 -1
  190. package/dist/assets/{pixi-live-write-target-D98dSXxp.js → pixi-live-write-target-DKSUcwat.js} +1 -1
  191. package/dist/assets/{play.command-DuMFJnmM.js → play.command-ov-jkz3c.js} +2 -2
  192. package/dist/assets/{presentation-CtIeUSei.js → presentation-DHSxfQfh.js} +1 -1
  193. package/dist/assets/{product-DFXPvo0c.js → product-CCDSVopY.js} +1 -1
  194. package/dist/assets/{profiler.action-CRth9CZ2.js → profiler.action-CoEPogPx.js} +1 -1
  195. package/dist/assets/{profiler.menu-BTUS2V4D.js → profiler.menu-HOvnHzpD.js} +1 -1
  196. package/dist/assets/{profiler.utility-CXKvIhYY.js → profiler.utility-DArumoBa.js} +1 -1
  197. package/dist/assets/{project-authoring-session-olZausJQ.js → project-authoring-session-OdoqMUaI.js} +2 -2
  198. package/dist/assets/{properties-bone-constraints.inspector-B8eVEgQs.js → properties-bone-constraints.inspector-B6sFLmg_.js} +1 -1
  199. package/dist/assets/{properties-bone.inspector-DDci-SQy.js → properties-bone.inspector-Cq0j1Tg_.js} +1 -1
  200. package/dist/assets/{properties-collection.inspector-BOZGlg1E.js → properties-collection.inspector-DYMwSmQY.js} +1 -1
  201. package/dist/assets/{properties-constraints.inspector-BMDToNlw.js → properties-constraints.inspector-CX5gxqju.js} +1 -1
  202. package/dist/assets/{properties-data.inspector-hod6HyLu.js → properties-data.inspector-cL1TZwxI.js} +1 -1
  203. package/dist/assets/{properties-material.inspector-D2FogLXQ.js → properties-material.inspector-DU1wOJce.js} +1 -1
  204. package/dist/assets/{properties-modifiers.inspector-DF4mAZtE.js → properties-modifiers.inspector-CmO1PZIA.js} +1 -1
  205. package/dist/assets/{properties-object.inspector-Dipbo-p8.js → properties-object.inspector-CFvqMWdn.js} +1 -1
  206. package/dist/assets/{properties-output.inspector-PPp8EjRZ.js → properties-output.inspector-DC-O8hue.js} +1 -1
  207. package/dist/assets/{properties-particles.inspector-DmlfqDdO.js → properties-particles.inspector-DfWIbmzQ.js} +1 -1
  208. package/dist/assets/{properties-physics.inspector-BcINowSD.js → properties-physics.inspector-xx8ml3qs.js} +1 -1
  209. package/dist/assets/{properties-render.inspector-8-mITVWA.js → properties-render.inspector-C8Hq7knh.js} +1 -1
  210. package/dist/assets/{properties-scene.inspector-BpvZcTZw.js → properties-scene.inspector-CCGXsMCm.js} +1 -1
  211. package/dist/assets/{properties-texture.inspector-BnwyIBIi.js → properties-texture.inspector-CLWq44Va.js} +1 -1
  212. package/dist/assets/{properties-view-layer.inspector-Dp7dKGWs.js → properties-view-layer.inspector-Bpry4Iqh.js} +1 -1
  213. package/dist/assets/{properties-world.inspector-SCxCGP-9.js → properties-world.inspector-nHZ1JkkY.js} +1 -1
  214. package/dist/assets/{r3f-design-session-Byem_WS6.js → r3f-design-session-Cirrj19r.js} +2 -2
  215. package/dist/assets/{r3f-physics-binding-BVU-oj2D.js → r3f-physics-binding-DsYLHa6f.js} +1 -1
  216. package/dist/assets/{r3f-source-authoring-adapter-CSei_iBY.js → r3f-source-authoring-adapter-C0STpGb7.js} +1 -1
  217. package/dist/assets/{react-canvas-navigation-gztX6CTu.js → react-canvas-navigation-DijWKFG_.js} +1 -1
  218. package/dist/assets/{react-inspector.service-Cq8JEPik.js → react-inspector.service-CS-ZEU5N.js} +1 -1
  219. package/dist/assets/{react-story-board-qBLyzrh-.js → react-story-board-BMNsbya2.js} +1 -1
  220. package/dist/assets/{react-three-rapier.esm-BeiV2Wq-.js → react-three-rapier.esm-CN0eNYep.js} +1 -1
  221. package/dist/assets/{react-world-authoring-adapter-CUpkBtmp.js → react-world-authoring-adapter-4FofK2_S.js} +1 -1
  222. package/dist/assets/{realm-services-COQmdHaL.js → realm-services-CnW99EpW.js} +1 -1
  223. package/dist/assets/{reflection-probe-capture.inspector-CwNLXSyV.js → reflection-probe-capture.inspector-Dgy-8-1h.js} +1 -1
  224. package/dist/assets/{registry-C1p1_Rv2.js → registry-CmQvHjp6.js} +1 -1
  225. package/dist/assets/{relative-import-specifier-Cf0_BtCw.js → relative-import-specifier-Dk9yRpxL.js} +1 -1
  226. package/dist/assets/{render-env-Bmdv9fSE.js → render-env-O4VU4xhx.js} +1 -1
  227. package/dist/assets/{render-features-W58SVbbT.js → render-features-ChdWrVy0.js} +1 -1
  228. package/dist/assets/{render-settings-Vu9CpzBi.js → render-settings-BCZAvPJi.js} +1 -1
  229. package/dist/assets/{resolve-three-HpVkP48k.js → resolve-three-Dck88bio.js} +3 -3
  230. package/dist/assets/{root-seam-contract-BYKvnnTt.js → root-seam-contract-ChFKhMGt.js} +1 -1
  231. package/dist/assets/{run-selection-CaOq6qDl.js → run-selection-C6EqhdoA.js} +1 -1
  232. package/dist/assets/{scene-capture-CuukhQRd.js → scene-capture-Bui4ruWh.js} +1 -1
  233. package/dist/assets/{scene-document.service-D-7s2eUO.js → scene-document.service-DSdvp7Ce.js} +2 -2
  234. package/dist/assets/{scene-framing-DJll-un4.js → scene-framing-DPK5z1LB.js} +1 -1
  235. package/dist/assets/{seeded-random-3pTBWsgC.js → seeded-random-BJvC1dTR.js} +1 -1
  236. package/dist/assets/{setup-renderer-Cw8qdO25.js → setup-renderer-CwpGLiQN.js} +1 -1
  237. package/dist/assets/{source-object3d-authoring-adapter-CiV9hr_l.js → source-object3d-authoring-adapter-Bdq-N_ih.js} +1 -1
  238. package/dist/assets/{source-persistence-backend-BaUP8hOX.js → source-persistence-backend-wZj2Qj3g.js} +1 -1
  239. package/dist/assets/{stage-keyboard-CMvoZA6K.js → stage-keyboard-CNNJiLBS.js} +1 -1
  240. package/dist/assets/{stage-overlay-set-B493KEWu.js → stage-overlay-set-BKAbHMto.js} +1 -1
  241. package/dist/assets/{stage-presence-markers-Ddnu3AE3.js → stage-presence-markers-J7TV-MHA.js} +1 -1
  242. package/dist/assets/{stage-transform-tools-DHGdBZ3k.js → stage-transform-tools-B5kYo-6B.js} +1 -1
  243. package/dist/assets/{standard-viewport-dressing-GnJWRGe2.js → standard-viewport-dressing-DSi6qJFC.js} +1 -1
  244. package/dist/assets/{state-watch.action-BpOfeBco.js → state-watch.action-DTwXKaRA.js} +1 -1
  245. package/dist/assets/{state-watch.menu-04MPIYPm.js → state-watch.menu-BcV_iOZY.js} +1 -1
  246. package/dist/assets/{state-watch.utility-Cw3o3jfb.js → state-watch.utility-LiVERTu5.js} +1 -1
  247. package/dist/assets/{story-capture-B3A3XH7n.js → story-capture-Bp8iYZLe.js} +1 -1
  248. package/dist/assets/{story-documents-DQWzzviR.js → story-documents-f3Ug4YBp.js} +1 -1
  249. package/dist/assets/{story-documents.service-Dwri-cm5.js → story-documents.service-CO7oQCl7.js} +1 -1
  250. package/dist/assets/{story-documents.service-BDnAswhX.js → story-documents.service-XIecBTKZ.js} +1 -1
  251. package/dist/assets/{story-media-presence-D6g__A85.js → story-media-presence-CZDChC1Q.js} +1 -1
  252. package/dist/assets/{story-pixi-preview-Baqdw7IG.js → story-pixi-preview-DVY_KTxj.js} +1 -1
  253. package/dist/assets/{story-presentation-CYi1FGiu.js → story-presentation-CNwvXmP8.js} +1 -1
  254. package/dist/assets/{story-three-preview-yfz_G-RI.js → story-three-preview-EAGsWdvg.js} +2 -2
  255. package/dist/assets/{studio-environment-CH7uwg4C.js → studio-environment-DPyvNCMf.js} +1 -1
  256. package/dist/assets/{surface-state-CRaGXBZr.js → surface-state-DDvqISvA.js} +1 -1
  257. package/dist/assets/{syntactic-prop-specs-BlvAiMxq.js → syntactic-prop-specs-Xrvbz2vw.js} +1 -1
  258. package/dist/assets/{team-playtest.service-D3zqXyw5.js → team-playtest.service-ak53AQFu.js} +1 -1
  259. package/dist/assets/{three-DCkpVjka.js → three-CJgQeY1W.js} +1 -1
  260. package/dist/assets/{three-authoring-adapter-D-XUqED2.js → three-authoring-adapter-D-iyhWwy.js} +1 -1
  261. package/dist/assets/three-authoring.service-BphzI5K_.js +2 -0
  262. package/dist/assets/{three-ingest-runtime-CRvw31w9.js → three-ingest-runtime-BjO_n3E-.js} +1 -1
  263. package/dist/assets/{three-integration-C2QGqcqQ.js → three-integration-YGBUQAWW.js} +2 -2
  264. package/dist/assets/three-integration.service-CC5Hzqn_.js +1 -0
  265. package/dist/assets/{three-projection-core-B_fHSGZn.js → three-projection-core-BjkdjllS.js} +1 -1
  266. package/dist/assets/{three-state-BA8dTl-G.js → three-state-CvU5OXTi.js} +1 -1
  267. package/dist/assets/{three-story-capture.service-DwYgUcAh.js → three-story-capture.service-DikE7JrC.js} +2 -2
  268. package/dist/assets/{three-story-model-BN336fnz.js → three-story-model-aKieakmn.js} +1 -1
  269. package/dist/assets/{three-viewport-presentation-Ys4BApui.js → three-viewport-presentation-5zDCaTKw.js} +1 -1
  270. package/dist/assets/{transform-mode-request-CbLV1mru.js → transform-mode-request-05CQoTKg.js} +1 -1
  271. package/dist/assets/{transport-strip-BhBJrkWq.js → transport-strip-B0VIsVkq.js} +1 -1
  272. package/dist/assets/transport.header-CAvPxCpi.js +1 -0
  273. package/dist/assets/{tuples-DNF52fLz.js → tuples-BteMo3KQ.js} +1 -1
  274. package/dist/assets/{ui-board-document-B5MCtj21.js → ui-board-document-CB4DQEPW.js} +2 -2
  275. package/dist/assets/{user-data-ZZO3OVi6.js → user-data-DKfhN35w.js} +1 -1
  276. package/dist/assets/{utility-view-state-ChjloR5W.js → utility-view-state-DZ2ujJyw.js} +1 -1
  277. package/dist/assets/{viewport-door-BSOgAqjP.js → viewport-door-BrYqbiwp.js} +1 -1
  278. package/dist/assets/{viewport-root-presentation--xgH-spf.js → viewport-root-presentation-DqFPo19p.js} +1 -1
  279. package/dist/assets/{viewport-surface-status-BW-G364J.js → viewport-surface-status-BCnAK4lN.js} +1 -1
  280. package/dist/assets/{webworkerAll-D8rD5X1b.js → webworkerAll-Zn2-KQph.js} +1 -1
  281. package/dist/assets/{workspace-arrangement-BARx98O2.js → workspace-arrangement-BoYqL0C2.js} +1 -1
  282. package/dist/assets/{world-documents-D7cabN31.js → world-documents-CzkDHYwW.js} +1 -1
  283. package/dist/assets/{world-root-stage-binding-BxsYda3b.js → world-root-stage-binding-vmgZxCgc.js} +1 -1
  284. package/dist/assets/{xstate-animation-binding-CiReI46R.js → xstate-animation-binding-C3RIk_KM.js} +1 -1
  285. package/dist/assets/{xstate-animation-meta-CFb6s7O4.js → xstate-animation-meta-CWXGLmNW.js} +1 -1
  286. package/dist-node/cli.js +18 -18
  287. package/package.json +16 -16
  288. package/dist/assets/InspectorObjectPreview-CZvolDbt.js +0 -1
  289. package/dist/assets/Object3DDocumentViewport-CLewwxph.js +0 -2
  290. package/dist/assets/StageHost-CbSf3_pc.js +0 -2
  291. package/dist/assets/autoplay.service-BEcShHAE.js +0 -1
  292. package/dist/assets/instances.command--SU6F-l0.js +0 -1
  293. package/dist/assets/network-observer.service-CeaBZoKU.js +0 -1
  294. package/dist/assets/three-authoring.service-CoWSgwfm.js +0 -2
  295. package/dist/assets/three-integration.service-BYDiMYEc.js +0 -1
  296. package/dist/assets/transport.header-D_wid8TK.js +0 -1
@@ -1 +1 @@
1
- import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{r as v,et as h,al as n,er as i,a6 as y}from"./index-cFAgtv_D.js";import{r as u}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{m as S}from"./audio-meter-Cddyq1vI.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";function R(e){return e?{graph:typeof e.graphSnapshot=="function",transport:typeof e.transportState=="function",meters:typeof e.acquireMeters=="function",events:typeof e.audioEvents=="function"}:null}class b{constructor(s=500){this.capacity=s}entries=[];lastSeq=0;paused=!1;pull(s){if(this.paused||!s?.audioEvents)return 0;const a=s.audioEvents(this.lastSeq);if(a.length===0)return 0;for(const r of a)this.entries.push(r),r.seq>this.lastSeq&&(this.lastSeq=r.seq);return this.entries.length>this.capacity&&this.entries.splice(0,this.entries.length-this.capacity),a.length}get all(){return this.entries}clear(){this.entries=[]}}function A(e){const s=Math.max(0,e),a=Math.floor(s/60),r=s-a*60;return`${a}:${r<10?"0":""}${r.toFixed(1)}`}const f={fontFamily:n.typography.mono,fontSize:h.base};function p({children:e,testId:s}){return t.jsx("div",{"data-testid":s,style:{padding:i[4],color:n.content.muted,fontSize:h.base,fontStyle:"italic"},children:e})}function I({adapter:e,onResumed:s}){return e.resume?t.jsx(y,{type:"button",variant:"secondary","data-testid":"audio-resume",onClick:()=>{e.resume?.(),s()},children:"Enable Audio"}):null}const $={started:n.semantic.success,paused:n.semantic.warning,stopped:n.content.muted};function M({adapter:e}){const s=e.transportState?.()??null;return s?t.jsxs("div",{"data-testid":"audio-transport","data-state":s.state,style:{display:"flex",gap:i[6],alignItems:"center",padding:`${i[2]} ${i[4]}`},children:[t.jsxs("span",{style:{color:$[s.state]??n.content.primary},children:["● ",s.state]}),t.jsx("span",{"data-testid":"audio-transport-seconds",style:{...f,color:n.content.primary},children:A(s.seconds)}),s.position!==void 0&&t.jsx("span",{style:{...f,color:n.content.muted},children:s.position}),t.jsxs("span",{style:{fontSize:h.sm,color:n.content.muted},children:["bpm"," ",t.jsx("span",{style:{...f,color:n.content.primary},children:s.bpm.toFixed(0)})]})]}):t.jsx(p,{testId:"audio-transport-none",children:"No musical transport in this world (the game has not bridged Tone onto its audio context)."})}function E({adapter:e}){const[s,a]=u.useState(void 0),r=u.useRef(new Map);return u.useEffect(()=>{const d=e.acquireMeters?.()??null;if(!d){a(null);return}a(d.read());const o=setInterval(()=>{for(const c of d.read()){const m=r.current.get(c.id);m&&(m.style.width=`${S(c.level)}%`,m.dataset.level=c.level.toFixed(4))}},100);return()=>{clearInterval(o),d.dispose()}},[e]),s===void 0?null:s===null?t.jsx(p,{testId:"audio-meters-unavailable",children:"Metering unavailable in this environment (no real audio context)."}):t.jsx("div",{"data-testid":"audio-meters",style:{display:"flex",gap:14,alignItems:"center",padding:`${i[2]} ${i[4]}`},children:s.map(d=>t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:i[2]},children:[t.jsx("span",{style:{fontSize:h.sm,color:n.content.muted},children:d.label}),t.jsx("div",{style:{width:96,height:8,background:n.surface.inset,borderRadius:n.shape.small,overflow:"hidden"},children:t.jsx("div",{"data-testid":"audio-meter-fill","data-meter-id":d.id,"data-level":"0.0000",ref:o=>{o?r.current.set(d.id,o):r.current.delete(d.id)},style:{width:"0%",height:"100%",background:n.semantic.success,transition:"width 80ms linear"}})})]},d.id))})}function k({node:e}){return t.jsxs("div",{"data-testid":"audio-node-row","data-node-id":e.id,style:{...f,lineHeight:"18px",padding:`0 ${i[4]}`,whiteSpace:"nowrap"},children:[t.jsx("span",{style:{color:n.content.primary},children:e.label??e.id}),t.jsxs("span",{style:{color:n.content.dim},children:[" ",e.type]}),e.state!==void 0&&t.jsxs("span",{style:{color:n.semantic.warning},children:[" [",e.state,"]"]}),e.outputs.length>0&&t.jsxs("span",{style:{color:n.content.muted},children:[" → ",e.outputs.join(", ")]})]})}function q(e){return e==="error"?n.semantic.danger:e==="mute"||e==="unmute"?n.semantic.warning:n.accent.default}function z({event:e}){return t.jsxs("div",{"data-testid":"audio-log-row","data-kind":e.kind,style:{...f,display:"grid",gridTemplateColumns:"64px 1fr",gap:i[2],lineHeight:"17px",padding:`0 ${i[4]}`},children:[t.jsxs("span",{style:{color:n.content.dim},children:[(e.time/1e3).toFixed(2),"s"]}),t.jsxs("span",{style:{color:q(e.kind)},children:[e.kind,e.detail!==void 0?t.jsxs("span",{style:{color:n.content.muted},children:[" ",e.detail]}):null]})]})}function C(){const[,e]=u.useReducer(l=>l+1,0),s=u.useRef(new b),a=u.useRef(null),[r,d]=u.useState(!1);u.useEffect(()=>{const l=()=>{const g=v().systems.inspectedAudio()??null;return g!==a.current&&(a.current=g,s.current=new b,s.current.paused=r),g},j=()=>{s.current.pull(l()),e()};j();const w=setInterval(j,250);return()=>clearInterval(w)},[r]);const o=a.current??v().systems.inspectedAudio()??null,c=R(o);if(!o||!c)return t.jsxs("div",{"data-testid":"audio-debugger-empty",style:{padding:i[8],color:n.content.muted,fontSize:h.md,lineHeight:"18px"},children:[t.jsx("div",{style:{color:n.content.primary,marginBottom:i[2]},children:"Audio is still initializing."}),"The editor registers a first-party ",t.jsx("code",{style:f,children:"AudioAdapter"})," in edit mode; Play temporarily replaces it with the running game's adapter."]});const m=c.graph?o.graphSnapshot?.()??[]:null,x=s.current.all;return t.jsxs("div",{"data-testid":"audio-debugger",style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",fontSize:h.md},children:[t.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:i[4],alignItems:"center",borderBottom:`1px solid ${n.boundary.default}`},children:[t.jsx(I,{adapter:o,onResumed:e}),t.jsx("span",{"data-testid":"audio-mute-state",style:{padding:`${i[2]} ${i[4]}`,color:o.isMuted()?n.semantic.warning:n.semantic.success},children:o.isMuted()?"muted":"audible"}),c.transport?t.jsx(M,{adapter:o}):t.jsx(p,{testId:"audio-transport-absent",children:"Transport not provided by this adapter."}),c.meters?t.jsx(E,{adapter:o}):t.jsx(p,{testId:"audio-meters-absent",children:"Meters not provided by this adapter."})]}),t.jsxs("div",{style:{flex:1,minHeight:0,display:"flex"},children:[t.jsx("div",{"data-testid":"audio-graph",style:{flex:1,minWidth:0,overflow:"auto",borderRight:`1px solid ${n.boundary.default}`,padding:`${i[2]} 0`},children:m?m.map(l=>t.jsx(k,{node:l},l.id)):t.jsx(p,{testId:"audio-graph-absent",children:"Audio graph not provided by this adapter."})}),t.jsx("div",{"data-testid":"audio-event-log",style:{flex:1,minWidth:0,display:"flex",flexDirection:"column"},children:c.events?t.jsxs(t.Fragment,{children:[t.jsxs("div",{style:{display:"flex",gap:i[3],alignItems:"center",padding:i[2]},children:[t.jsx(y,{type:"button",variant:"ghost","data-testid":"audio-log-pause",onClick:()=>{const l=!r;s.current.paused=l,d(l)},children:r?"Resume":"Pause"}),t.jsx(y,{type:"button",variant:"ghost","data-testid":"audio-log-clear",onClick:()=>{s.current.clear(),e()},children:"Clear"}),t.jsxs("span",{style:{fontSize:h.sm,color:n.content.muted},children:[x.length," events"]})]}),t.jsx("div",{style:{flex:1,minHeight:0,overflow:"auto"},children:x.length===0?t.jsx(p,{children:"No audio events yet."}):x.map(l=>t.jsx(z,{event:l},l.seq))})]}):t.jsx(p,{testId:"audio-log-absent",children:"Event log not provided by this adapter."})})]})]})}const L="workspace.utility",U="Audio",_=26;function G(){return t.jsx(C,{})}export{G as default,_ as order,L as point,U as title};
1
+ import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{r as v,et as h,al as n,er as i,a6 as y}from"./index-C6b9kkV0.js";import{r as u}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{m as S}from"./audio-meter-Cddyq1vI.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";function R(e){return e?{graph:typeof e.graphSnapshot=="function",transport:typeof e.transportState=="function",meters:typeof e.acquireMeters=="function",events:typeof e.audioEvents=="function"}:null}class b{constructor(s=500){this.capacity=s}entries=[];lastSeq=0;paused=!1;pull(s){if(this.paused||!s?.audioEvents)return 0;const a=s.audioEvents(this.lastSeq);if(a.length===0)return 0;for(const r of a)this.entries.push(r),r.seq>this.lastSeq&&(this.lastSeq=r.seq);return this.entries.length>this.capacity&&this.entries.splice(0,this.entries.length-this.capacity),a.length}get all(){return this.entries}clear(){this.entries=[]}}function A(e){const s=Math.max(0,e),a=Math.floor(s/60),r=s-a*60;return`${a}:${r<10?"0":""}${r.toFixed(1)}`}const f={fontFamily:n.typography.mono,fontSize:h.base};function p({children:e,testId:s}){return t.jsx("div",{"data-testid":s,style:{padding:i[4],color:n.content.muted,fontSize:h.base,fontStyle:"italic"},children:e})}function I({adapter:e,onResumed:s}){return e.resume?t.jsx(y,{type:"button",variant:"secondary","data-testid":"audio-resume",onClick:()=>{e.resume?.(),s()},children:"Enable Audio"}):null}const $={started:n.semantic.success,paused:n.semantic.warning,stopped:n.content.muted};function M({adapter:e}){const s=e.transportState?.()??null;return s?t.jsxs("div",{"data-testid":"audio-transport","data-state":s.state,style:{display:"flex",gap:i[6],alignItems:"center",padding:`${i[2]} ${i[4]}`},children:[t.jsxs("span",{style:{color:$[s.state]??n.content.primary},children:["● ",s.state]}),t.jsx("span",{"data-testid":"audio-transport-seconds",style:{...f,color:n.content.primary},children:A(s.seconds)}),s.position!==void 0&&t.jsx("span",{style:{...f,color:n.content.muted},children:s.position}),t.jsxs("span",{style:{fontSize:h.sm,color:n.content.muted},children:["bpm"," ",t.jsx("span",{style:{...f,color:n.content.primary},children:s.bpm.toFixed(0)})]})]}):t.jsx(p,{testId:"audio-transport-none",children:"No musical transport in this world (the game has not bridged Tone onto its audio context)."})}function E({adapter:e}){const[s,a]=u.useState(void 0),r=u.useRef(new Map);return u.useEffect(()=>{const d=e.acquireMeters?.()??null;if(!d){a(null);return}a(d.read());const o=setInterval(()=>{for(const c of d.read()){const m=r.current.get(c.id);m&&(m.style.width=`${S(c.level)}%`,m.dataset.level=c.level.toFixed(4))}},100);return()=>{clearInterval(o),d.dispose()}},[e]),s===void 0?null:s===null?t.jsx(p,{testId:"audio-meters-unavailable",children:"Metering unavailable in this environment (no real audio context)."}):t.jsx("div",{"data-testid":"audio-meters",style:{display:"flex",gap:14,alignItems:"center",padding:`${i[2]} ${i[4]}`},children:s.map(d=>t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:i[2]},children:[t.jsx("span",{style:{fontSize:h.sm,color:n.content.muted},children:d.label}),t.jsx("div",{style:{width:96,height:8,background:n.surface.inset,borderRadius:n.shape.small,overflow:"hidden"},children:t.jsx("div",{"data-testid":"audio-meter-fill","data-meter-id":d.id,"data-level":"0.0000",ref:o=>{o?r.current.set(d.id,o):r.current.delete(d.id)},style:{width:"0%",height:"100%",background:n.semantic.success,transition:"width 80ms linear"}})})]},d.id))})}function k({node:e}){return t.jsxs("div",{"data-testid":"audio-node-row","data-node-id":e.id,style:{...f,lineHeight:"18px",padding:`0 ${i[4]}`,whiteSpace:"nowrap"},children:[t.jsx("span",{style:{color:n.content.primary},children:e.label??e.id}),t.jsxs("span",{style:{color:n.content.dim},children:[" ",e.type]}),e.state!==void 0&&t.jsxs("span",{style:{color:n.semantic.warning},children:[" [",e.state,"]"]}),e.outputs.length>0&&t.jsxs("span",{style:{color:n.content.muted},children:[" → ",e.outputs.join(", ")]})]})}function q(e){return e==="error"?n.semantic.danger:e==="mute"||e==="unmute"?n.semantic.warning:n.accent.default}function z({event:e}){return t.jsxs("div",{"data-testid":"audio-log-row","data-kind":e.kind,style:{...f,display:"grid",gridTemplateColumns:"64px 1fr",gap:i[2],lineHeight:"17px",padding:`0 ${i[4]}`},children:[t.jsxs("span",{style:{color:n.content.dim},children:[(e.time/1e3).toFixed(2),"s"]}),t.jsxs("span",{style:{color:q(e.kind)},children:[e.kind,e.detail!==void 0?t.jsxs("span",{style:{color:n.content.muted},children:[" ",e.detail]}):null]})]})}function C(){const[,e]=u.useReducer(l=>l+1,0),s=u.useRef(new b),a=u.useRef(null),[r,d]=u.useState(!1);u.useEffect(()=>{const l=()=>{const g=v().systems.inspectedAudio()??null;return g!==a.current&&(a.current=g,s.current=new b,s.current.paused=r),g},j=()=>{s.current.pull(l()),e()};j();const w=setInterval(j,250);return()=>clearInterval(w)},[r]);const o=a.current??v().systems.inspectedAudio()??null,c=R(o);if(!o||!c)return t.jsxs("div",{"data-testid":"audio-debugger-empty",style:{padding:i[8],color:n.content.muted,fontSize:h.md,lineHeight:"18px"},children:[t.jsx("div",{style:{color:n.content.primary,marginBottom:i[2]},children:"Audio is still initializing."}),"The editor registers a first-party ",t.jsx("code",{style:f,children:"AudioAdapter"})," in edit mode; Play temporarily replaces it with the running game's adapter."]});const m=c.graph?o.graphSnapshot?.()??[]:null,x=s.current.all;return t.jsxs("div",{"data-testid":"audio-debugger",style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",fontSize:h.md},children:[t.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:i[4],alignItems:"center",borderBottom:`1px solid ${n.boundary.default}`},children:[t.jsx(I,{adapter:o,onResumed:e}),t.jsx("span",{"data-testid":"audio-mute-state",style:{padding:`${i[2]} ${i[4]}`,color:o.isMuted()?n.semantic.warning:n.semantic.success},children:o.isMuted()?"muted":"audible"}),c.transport?t.jsx(M,{adapter:o}):t.jsx(p,{testId:"audio-transport-absent",children:"Transport not provided by this adapter."}),c.meters?t.jsx(E,{adapter:o}):t.jsx(p,{testId:"audio-meters-absent",children:"Meters not provided by this adapter."})]}),t.jsxs("div",{style:{flex:1,minHeight:0,display:"flex"},children:[t.jsx("div",{"data-testid":"audio-graph",style:{flex:1,minWidth:0,overflow:"auto",borderRight:`1px solid ${n.boundary.default}`,padding:`${i[2]} 0`},children:m?m.map(l=>t.jsx(k,{node:l},l.id)):t.jsx(p,{testId:"audio-graph-absent",children:"Audio graph not provided by this adapter."})}),t.jsx("div",{"data-testid":"audio-event-log",style:{flex:1,minWidth:0,display:"flex",flexDirection:"column"},children:c.events?t.jsxs(t.Fragment,{children:[t.jsxs("div",{style:{display:"flex",gap:i[3],alignItems:"center",padding:i[2]},children:[t.jsx(y,{type:"button",variant:"ghost","data-testid":"audio-log-pause",onClick:()=>{const l=!r;s.current.paused=l,d(l)},children:r?"Resume":"Pause"}),t.jsx(y,{type:"button",variant:"ghost","data-testid":"audio-log-clear",onClick:()=>{s.current.clear(),e()},children:"Clear"}),t.jsxs("span",{style:{fontSize:h.sm,color:n.content.muted},children:[x.length," events"]})]}),t.jsx("div",{style:{flex:1,minHeight:0,overflow:"auto"},children:x.length===0?t.jsx(p,{children:"No audio events yet."}):x.map(l=>t.jsx(z,{event:l},l.seq))})]}):t.jsx(p,{testId:"audio-log-absent",children:"Event log not provided by this adapter."})})]})]})}const L="workspace.utility",U="Audio",_=26;function G(){return t.jsx(C,{})}export{G as default,_ as order,L as point,U as title};
@@ -0,0 +1 @@
1
+ import{T as i,r as m}from"./index-C6b9kkV0.js";import{e as p}from"./game-network-BNeDxziF.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-Be_Zu0XE.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-Be63j2Mr.js";import"./contract-system-adapters-kobU6S3P.js";import"./game-contract-seams-CB0AOLdl.js";import"./seeded-random-BJvC1dTR.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-DmeaOP4r.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-DzuOGwVB.js";import"./live-project-verbs-BVyxYNhA.js";import"./capability-coverage-3wZkRo7W.js";import"./edit-mode-authoring-DbcZXYOM.js";import"./json-history-resource-D4GYZYcB.js";import"./binding-resolver-yBwth89-.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-CnW99EpW.js";import"./canvas-entry-runtime-Btln7THA.js";import"./three-ingest-runtime-BjO_n3E-.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-5EEDH3if.js";import"./ingest-source-persistence-Dz_7hVqh.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-DqFPo19p.js";import"./mounted-authoring-BW8axnm4.js";import"./entity-object-hOX0jkMo.js";import"./user-data-DKfhN35w.js";import"./workspace-arrangement-BoYqL0C2.js";import"./three-contract-Dkt6PmWY.js";import"./three-CJgQeY1W.js";import"./editor-layers-_Gcy52mS.js";import"./component-instance-root-DsmCGX40.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-D-iyhWwy.js";import"./source-persistence-backend-wZj2Qj3g.js";import"./three-projection-core-BjkdjllS.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-DsYLHa6f.js";import"./deferred-ingest-play-D1FWeSDi.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-4FofK2_S.js";import"./board-guides-CIhq0Sbd.js";import"./relative-import-specifier-Dk9yRpxL.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BRJFBB2z.js";import"./inference-diagnostics-DNhFOXFZ.js";import"./writer-tw6EcuVO.js";import"./three-state-CvU5OXTi.js";import"./editor-shell-store-DcbczB-I.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-BrYqbiwp.js";import"./game-surface-defaults-D8S4cRxi.js";const Ut="workspace.service";function e(o){p().catch(t=>{m().console.error(`${o}: ${t instanceof Error?t.message:String(t)}`,"play")})}function bt(){let o,t=!1;const r=i(()=>{t||new URLSearchParams(window.location.search).get("play")==="1"&&(t=!0,o=window.setTimeout(()=>e("Could not enter requested Play mode"),0))});return()=>{o!==void 0&&window.clearTimeout(o),r()}}export{Ut as point,bt as start};
@@ -1 +1 @@
1
- import{Z as g,bS as v,bT as x}from"./index-cFAgtv_D.js";import{J as k,c as j}from"./json-history-resource-Bzmw9S9j.js";import{p as y}from"./source-persistence-backend-BaUP8hOX.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./ingest-source-persistence-DM1yk0WC.js";function C(r){return encodeURIComponent(r||"unnamed")}function u(r){try{return r.getClassName?.()||"Node"}catch{return"Node"}}function z(r){try{const e=r.getChildren?.();return Array.isArray(e)?e:[]}catch{return[]}}function m(r){const e=r?.x??0,t=r?.y??0,n=r?.z??0,s=Math.cos(e/2),i=Math.sin(e/2),a=Math.cos(t/2),o=Math.sin(t/2),c=Math.cos(n/2),l=Math.sin(n/2);return{x:i*a*c+s*o*l,y:s*o*c-i*a*l,z:s*a*l+i*o*c,w:s*a*c-i*o*l}}function p([r,e,t,n]){const s=2*(n*r+e*t),i=1-2*(r*r+e*e),a=2*(n*e-t*r),o=2*(n*t+r*e),c=1-2*(e*e+t*t);return{x:Math.atan2(s,i),y:Math.abs(a)>=1?Math.sign(a)*(Math.PI/2):Math.asin(a),z:Math.atan2(o,c)}}function d(r,e){r&&(r.x=e[0]??r.x,r.y=e[1]??r.y,r.z=e[2]??r.z)}function B(r,e){if(!r.rotationQuaternion){d(r.rotation,e);return}const t=m({x:e[0]??0,y:e[1]??0,z:e[2]??0});d(r.rotationQuaternion,[t.x,t.y,t.z]),r.rotationQuaternion.w=t.w}class R{constructor(e,t,n={}){this.engine=e,this.store=t,this.options=n,this.persistenceBackend=n.persistence??null,this.provenance=n.provenance??{source:"foreign",label:"live-only",detail:"Babylon.js scenes and Nodes projected directly — edits apply to native game objects for this session only."};const s=j(),i=this.persistenceBackend;this.persistence=i?{isDirty:()=>!1,save:async()=>{},get destination(){return i.destination()}}:s,i&&i.attach({read:(o,c)=>this.readChannel(o,c),apply:(o,c,l)=>this.applyChannel(o,c,l)});const a=t.shell.projectHistory;if(this.historyResource=i&&a&&n.journal?new k({history:a,kind:"session-state",scope:"session",subject:{...n.journal,id:`${n.journal.id}/live-babylon-edits`},displayName:"Live edits",capture:()=>this.captureHistoryState(),conflictIdentity:o=>o.edits,restore:async o=>{this.restoreHistoryState(o)}}):null,n.canvas&&(this.pickable={pick:(o,c)=>{const l=n.canvas.getBoundingClientRect();for(const h of this.scenes()){const f=h.pick?.(o-l.left,c-l.top),b=f?.hit?f.pickedMesh:null;if(b)return this.reindex(),this.idsByObject.get(b)??null}return null}}),this.truth={resolve:(o,c)=>{const l=this.subjectFor(o,c);return{site:l.anchor,writeAnchorKind:l.anchorKind}}},this.installNativeTools(),n.canvas){const o=()=>{for(const l of this.selection.get())this.transforms.beginEdit(l)},c=()=>{for(const l of this.selection.get())this.transforms.endEdit(l)};n.canvas.addEventListener("pointerdown",o),n.canvas.addEventListener("pointerup",c),this.removeCanvasListeners=()=>{n.canvas.removeEventListener("pointerdown",o),n.canvas.removeEventListener("pointerup",c)}}else this.removeCanvasListeners=null}capabilities={transform:!0,inspectorFields:!0,persist:!1};provenance;persistence;pickable;truth;indexed=new Map;idsByObject=new Map;listeners=new Set;persistenceBackend;baselines=new Map;historyBefore=new Map;historyResource=null;edits=0;gizmos=[];pointerTokens=[];removeCanvasListeners;scenes(){return(this.engine.scenes??[]).filter(e=>{try{return!e.isDisposed?.()}catch{return!0}})}refresh(){this.reindex();let e=0,t=0;for(const n of this.indexed.values())n.kind==="scene"?e++:t++;return{scenes:e,objects:t}}reindex(){this.indexed.clear(),this.idsByObject.clear();const e=new Set;for(const[t,n]of this.scenes().entries()){const s=n.name||`Scene ${t+1}`,i=`babylon:scene:${t}:${C(n.uid||s)}`,a=Array.isArray(n.rootNodes)?n.rootNodes:[],o={id:i,label:s,role:"root",kind:"babylon-scene",typeLabel:"BABYLON.Scene",parentId:null,childIds:[]};this.indexed.set(i,{kind:"scene",scene:n,node:o}),o.childIds=a.map((c,l)=>this.indexNode(c,i,`${t}/${l}`,e))}}indexNode(e,t,n,s){const i=u(e),o=`babylon:node:${typeof e.uniqueId=="number"?String(e.uniqueId):`path:${n}`}`,c={id:o,label:e.name||i,role:"entity",kind:`babylon-${i.toLowerCase()}`,typeLabel:i,parentId:t,childIds:[]};return this.indexed.set(o,{kind:"node",object:e,node:c}),this.idsByObject.set(e,o),s.has(e)||(s.add(e),c.childIds=z(e).map((l,h)=>this.indexNode(l,o,`${n}/${h}`,s))),o}hierarchy={roots:()=>(this.reindex(),[...this.indexed.values()].filter(e=>e.kind==="scene").map(e=>e.node)),node:e=>(this.reindex(),this.indexed.get(e)?.node??null)};selection={get:()=>[...this.store.shell.selectedEntityIds],set:e=>{this.store.shell.selectMultiple(e),this.attachGizmos(e[0]??null),this.notify()}};transforms={dimensions:e=>(this.reindex(),this.indexed.get(e)?.kind==="node"?"3d":null),get:e=>{this.reindex();const t=this.indexed.get(e);if(!t||t.kind!=="node")return{position:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1]};const n=t.object,s=n.rotationQuaternion??m(n.rotation);return{position:[n.position?.x??0,n.position?.y??0,n.position?.z??0],rotation:[s.x,s.y,s.z,s.w],scale:[n.scaling?.x??1,n.scaling?.y??1,n.scaling?.z??1]}},beginEdit:e=>{const t=this.captureChannels(e);t&&this.baselines.set(e,t),this.historyResource&&this.historyBefore.set(e,this.captureHistoryState())},apply:(e,t)=>{this.reindex();const n=this.indexed.get(e);if(!n||n.kind!=="node")return;const s=n.object;if(d(s.position,t.position),d(s.scaling,t.scale),s.rotationQuaternion)d(s.rotationQuaternion,t.rotation),s.rotationQuaternion.w=t.rotation[3];else{const i=p(t.rotation);d(s.rotation,[i.x,i.y,i.z])}this.notify()},endEdit:async e=>{const t=this.baselines.get(e);this.baselines.delete(e);const n=this.historyBefore.get(e);if(this.historyBefore.delete(e),!t||!this.persistenceBackend)return;const s=this.captureChannels(e);if(!s)return;const i=["position","rotation","scale"].filter(o=>JSON.stringify(t[o])!==JSON.stringify(s[o]));if(i.length===0)return;if(i.length>1){const o=`this Babylon gesture changed ${i.length} properties at once (${i.join(", ")})`;return this.persistenceBackend.report(`Transform ${this.labelOf(e)}`,o),{destination:"live-only (not saved)",persisted:!1}}const a=i[0];return y({backend:this.persistenceBackend,subject:()=>this.subjectFor(e,a),baseline:t[a],next:s[a],label:`Transform ${this.labelOf(e)}`,journal:()=>this.recordHistory(`Transform ${this.labelOf(e)}`,n)})}};inspector={properties:e=>{this.reindex();const t=this.indexed.get(e);if(!t)return[];if(t.kind==="scene")return[{path:"name",label:"Scene",type:"string",readonly:!0},{path:"uid",label:"UID",type:"string",readonly:!0}];const n=[{path:"className",label:"Type",type:"string",readonly:!0},{path:"name",label:"Name",type:"string"},{path:"id",label:"ID",type:"string",readonly:!0},{path:"enabled",label:"Enabled",type:"boolean"}];return typeof t.object.isVisible=="boolean"&&n.push({path:"isVisible",label:"Visible",type:"boolean"}),typeof t.object.visibility=="number"&&n.push({path:"visibility",label:"Visibility",type:"number"}),n},get:(e,t)=>{this.reindex();const n=this.indexed.get(e);if(n)return n.kind==="scene"?t==="name"?n.scene.name:t==="uid"?n.scene.uid:void 0:t==="className"?u(n.object):t==="enabled"?n.object.isEnabled?.(!1):n.object[t]},set:async(e,t,n)=>{this.reindex();const s=this.indexed.get(e);if(!s||s.kind!=="node")return;const i=this.readChannel(e,t),a=this.historyResource?this.captureHistoryState():void 0;if(t==="enabled")s.object.setEnabled?.(!!n);else if(t==="name"||t==="isVisible"||t==="visibility")s.object[t]=n;else return;this.notify();const o=this.readChannel(e,t);if(!(!this.persistenceBackend||i===void 0||o===void 0||JSON.stringify(i)===JSON.stringify(o)))return y({backend:this.persistenceBackend,subject:()=>this.subjectFor(e,t==="isVisible"?"visible":t),baseline:i,next:o,label:`Set ${this.labelOf(e)} ${t}`,journal:()=>this.recordHistory(`Set ${this.labelOf(e)} ${t}`,a)})}};subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}dispose(){this.removeCanvasListeners?.();for(const{scene:e,token:t}of this.pointerTokens)e.onPointerObservable?.remove(t);for(const e of this.gizmos)e.dispose();this.persistenceBackend?.dispose(),this.listeners.clear(),this.indexed.clear(),this.idsByObject.clear()}labelOf(e){return this.hierarchy.node(e)?.label??"Babylon node"}objectOf(e){this.reindex();const t=this.indexed.get(e);return t?.kind==="node"?t.object:null}readChannel(e,t){const n=this.objectOf(e);if(n){if(t==="position")return[n.position?.x??0,n.position?.y??0,n.position?.z??0];if(t==="rotation"){const s=n.rotationQuaternion,i=s?p([s.x,s.y,s.z,s.w]):n.rotation??{x:0,y:0,z:0};return[i.x,i.y,i.z]}return t==="scale"?[n.scaling?.x??1,n.scaling?.y??1,n.scaling?.z??1]:t==="visible"?n.isVisible:this.inspector.get(e,t)}}applyChannel(e,t,n){const s=this.objectOf(e);s&&(t==="position"&&Array.isArray(n)?d(s.position,n):t==="rotation"&&Array.isArray(n)?B(s,n):t==="scale"&&Array.isArray(n)?d(s.scaling,n):t==="visible"?s.isVisible=!!n:(t==="name"||t==="visibility")&&(s[t]=n),this.notify())}recordHistory(e,t){!this.historyResource||!t||(this.edits+=1,this.historyResource.record(e,t,this.captureHistoryState()).catch(n=>{g.error(`[babylon] failed to journal "${e}" into project history — the edit is applied but has no history entry (it cannot be undone): ${n instanceof Error?n.message:String(n)}`)}))}captureHistoryState(){this.reindex();const e={};for(const[t,n]of this.indexed){if(n.kind!=="node")continue;const s={};for(const i of["position","rotation","scale","visible","name","visibility"]){const a=this.readChannel(t,i);a!=null&&(s[i]=a)}e[t]=s}return{edits:this.edits,nodes:e}}restoreHistoryState(e){this.edits=e.edits;for(const[t,n]of Object.entries(e.nodes))for(const[s,i]of Object.entries(n))this.applyChannel(t,s,i);this.notify()}captureChannels(e){const t=this.readChannel(e,"position"),n=this.readChannel(e,"rotation"),s=this.readChannel(e,"scale");return t&&n&&s?{position:t,rotation:n,scale:s}:null}subjectFor(e,t){const n=this.objectOf(e),s=v(n);return{entityId:e,property:t,surface:"babylon",anchor:s,anchorKind:s.anchored?"construction-literal":"live-only",instances:s.anchored&&s.kind==="source"?x(s):0}}installNativeTools(){const e=this.options.api?.GizmoManager;for(const t of this.scenes()){if(e){const s=new e(t);s.positionGizmoEnabled=!0,s.rotationGizmoEnabled=!0,s.scaleGizmoEnabled=!0,s.usePointerToAttachGizmos=!1,this.gizmos.push(s)}const n=t.onPointerObservable;if(n){const s=n.add(i=>{const a=i.pickInfo?.pickedMesh;if(!a)return;this.reindex();const o=this.idsByObject.get(a);o&&this.selection.set([o])});this.pointerTokens.push({scene:t,token:s})}}}attachGizmos(e){const t=e?this.objectOf(e):null;for(const n of this.gizmos){if(!t){n.attachToMesh(null);continue}try{u(t).includes("Mesh")?n.attachToMesh(t):n.attachToNode?n.attachToNode(t):n.attachToMesh(null)}catch{n.attachToMesh(null)}}}notify(){for(const e of this.listeners)e();this.store.shell.notifyIngestEdit()}}export{R as BabylonAuthoringAdapter};
1
+ import{Z as g,bS as v,bT as x}from"./index-C6b9kkV0.js";import{J as k,c as j}from"./json-history-resource-D4GYZYcB.js";import{p as y}from"./source-persistence-backend-wZj2Qj3g.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./ingest-source-persistence-Dz_7hVqh.js";function C(r){return encodeURIComponent(r||"unnamed")}function u(r){try{return r.getClassName?.()||"Node"}catch{return"Node"}}function z(r){try{const e=r.getChildren?.();return Array.isArray(e)?e:[]}catch{return[]}}function m(r){const e=r?.x??0,t=r?.y??0,n=r?.z??0,s=Math.cos(e/2),i=Math.sin(e/2),a=Math.cos(t/2),o=Math.sin(t/2),c=Math.cos(n/2),l=Math.sin(n/2);return{x:i*a*c+s*o*l,y:s*o*c-i*a*l,z:s*a*l+i*o*c,w:s*a*c-i*o*l}}function p([r,e,t,n]){const s=2*(n*r+e*t),i=1-2*(r*r+e*e),a=2*(n*e-t*r),o=2*(n*t+r*e),c=1-2*(e*e+t*t);return{x:Math.atan2(s,i),y:Math.abs(a)>=1?Math.sign(a)*(Math.PI/2):Math.asin(a),z:Math.atan2(o,c)}}function d(r,e){r&&(r.x=e[0]??r.x,r.y=e[1]??r.y,r.z=e[2]??r.z)}function B(r,e){if(!r.rotationQuaternion){d(r.rotation,e);return}const t=m({x:e[0]??0,y:e[1]??0,z:e[2]??0});d(r.rotationQuaternion,[t.x,t.y,t.z]),r.rotationQuaternion.w=t.w}class R{constructor(e,t,n={}){this.engine=e,this.store=t,this.options=n,this.persistenceBackend=n.persistence??null,this.provenance=n.provenance??{source:"foreign",label:"live-only",detail:"Babylon.js scenes and Nodes projected directly — edits apply to native game objects for this session only."};const s=j(),i=this.persistenceBackend;this.persistence=i?{isDirty:()=>!1,save:async()=>{},get destination(){return i.destination()}}:s,i&&i.attach({read:(o,c)=>this.readChannel(o,c),apply:(o,c,l)=>this.applyChannel(o,c,l)});const a=t.shell.projectHistory;if(this.historyResource=i&&a&&n.journal?new k({history:a,kind:"session-state",scope:"session",subject:{...n.journal,id:`${n.journal.id}/live-babylon-edits`},displayName:"Live edits",capture:()=>this.captureHistoryState(),conflictIdentity:o=>o.edits,restore:async o=>{this.restoreHistoryState(o)}}):null,n.canvas&&(this.pickable={pick:(o,c)=>{const l=n.canvas.getBoundingClientRect();for(const h of this.scenes()){const f=h.pick?.(o-l.left,c-l.top),b=f?.hit?f.pickedMesh:null;if(b)return this.reindex(),this.idsByObject.get(b)??null}return null}}),this.truth={resolve:(o,c)=>{const l=this.subjectFor(o,c);return{site:l.anchor,writeAnchorKind:l.anchorKind}}},this.installNativeTools(),n.canvas){const o=()=>{for(const l of this.selection.get())this.transforms.beginEdit(l)},c=()=>{for(const l of this.selection.get())this.transforms.endEdit(l)};n.canvas.addEventListener("pointerdown",o),n.canvas.addEventListener("pointerup",c),this.removeCanvasListeners=()=>{n.canvas.removeEventListener("pointerdown",o),n.canvas.removeEventListener("pointerup",c)}}else this.removeCanvasListeners=null}capabilities={transform:!0,inspectorFields:!0,persist:!1};provenance;persistence;pickable;truth;indexed=new Map;idsByObject=new Map;listeners=new Set;persistenceBackend;baselines=new Map;historyBefore=new Map;historyResource=null;edits=0;gizmos=[];pointerTokens=[];removeCanvasListeners;scenes(){return(this.engine.scenes??[]).filter(e=>{try{return!e.isDisposed?.()}catch{return!0}})}refresh(){this.reindex();let e=0,t=0;for(const n of this.indexed.values())n.kind==="scene"?e++:t++;return{scenes:e,objects:t}}reindex(){this.indexed.clear(),this.idsByObject.clear();const e=new Set;for(const[t,n]of this.scenes().entries()){const s=n.name||`Scene ${t+1}`,i=`babylon:scene:${t}:${C(n.uid||s)}`,a=Array.isArray(n.rootNodes)?n.rootNodes:[],o={id:i,label:s,role:"root",kind:"babylon-scene",typeLabel:"BABYLON.Scene",parentId:null,childIds:[]};this.indexed.set(i,{kind:"scene",scene:n,node:o}),o.childIds=a.map((c,l)=>this.indexNode(c,i,`${t}/${l}`,e))}}indexNode(e,t,n,s){const i=u(e),o=`babylon:node:${typeof e.uniqueId=="number"?String(e.uniqueId):`path:${n}`}`,c={id:o,label:e.name||i,role:"entity",kind:`babylon-${i.toLowerCase()}`,typeLabel:i,parentId:t,childIds:[]};return this.indexed.set(o,{kind:"node",object:e,node:c}),this.idsByObject.set(e,o),s.has(e)||(s.add(e),c.childIds=z(e).map((l,h)=>this.indexNode(l,o,`${n}/${h}`,s))),o}hierarchy={roots:()=>(this.reindex(),[...this.indexed.values()].filter(e=>e.kind==="scene").map(e=>e.node)),node:e=>(this.reindex(),this.indexed.get(e)?.node??null)};selection={get:()=>[...this.store.shell.selectedEntityIds],set:e=>{this.store.shell.selectMultiple(e),this.attachGizmos(e[0]??null),this.notify()}};transforms={dimensions:e=>(this.reindex(),this.indexed.get(e)?.kind==="node"?"3d":null),get:e=>{this.reindex();const t=this.indexed.get(e);if(!t||t.kind!=="node")return{position:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1]};const n=t.object,s=n.rotationQuaternion??m(n.rotation);return{position:[n.position?.x??0,n.position?.y??0,n.position?.z??0],rotation:[s.x,s.y,s.z,s.w],scale:[n.scaling?.x??1,n.scaling?.y??1,n.scaling?.z??1]}},beginEdit:e=>{const t=this.captureChannels(e);t&&this.baselines.set(e,t),this.historyResource&&this.historyBefore.set(e,this.captureHistoryState())},apply:(e,t)=>{this.reindex();const n=this.indexed.get(e);if(!n||n.kind!=="node")return;const s=n.object;if(d(s.position,t.position),d(s.scaling,t.scale),s.rotationQuaternion)d(s.rotationQuaternion,t.rotation),s.rotationQuaternion.w=t.rotation[3];else{const i=p(t.rotation);d(s.rotation,[i.x,i.y,i.z])}this.notify()},endEdit:async e=>{const t=this.baselines.get(e);this.baselines.delete(e);const n=this.historyBefore.get(e);if(this.historyBefore.delete(e),!t||!this.persistenceBackend)return;const s=this.captureChannels(e);if(!s)return;const i=["position","rotation","scale"].filter(o=>JSON.stringify(t[o])!==JSON.stringify(s[o]));if(i.length===0)return;if(i.length>1){const o=`this Babylon gesture changed ${i.length} properties at once (${i.join(", ")})`;return this.persistenceBackend.report(`Transform ${this.labelOf(e)}`,o),{destination:"live-only (not saved)",persisted:!1}}const a=i[0];return y({backend:this.persistenceBackend,subject:()=>this.subjectFor(e,a),baseline:t[a],next:s[a],label:`Transform ${this.labelOf(e)}`,journal:()=>this.recordHistory(`Transform ${this.labelOf(e)}`,n)})}};inspector={properties:e=>{this.reindex();const t=this.indexed.get(e);if(!t)return[];if(t.kind==="scene")return[{path:"name",label:"Scene",type:"string",readonly:!0},{path:"uid",label:"UID",type:"string",readonly:!0}];const n=[{path:"className",label:"Type",type:"string",readonly:!0},{path:"name",label:"Name",type:"string"},{path:"id",label:"ID",type:"string",readonly:!0},{path:"enabled",label:"Enabled",type:"boolean"}];return typeof t.object.isVisible=="boolean"&&n.push({path:"isVisible",label:"Visible",type:"boolean"}),typeof t.object.visibility=="number"&&n.push({path:"visibility",label:"Visibility",type:"number"}),n},get:(e,t)=>{this.reindex();const n=this.indexed.get(e);if(n)return n.kind==="scene"?t==="name"?n.scene.name:t==="uid"?n.scene.uid:void 0:t==="className"?u(n.object):t==="enabled"?n.object.isEnabled?.(!1):n.object[t]},set:async(e,t,n)=>{this.reindex();const s=this.indexed.get(e);if(!s||s.kind!=="node")return;const i=this.readChannel(e,t),a=this.historyResource?this.captureHistoryState():void 0;if(t==="enabled")s.object.setEnabled?.(!!n);else if(t==="name"||t==="isVisible"||t==="visibility")s.object[t]=n;else return;this.notify();const o=this.readChannel(e,t);if(!(!this.persistenceBackend||i===void 0||o===void 0||JSON.stringify(i)===JSON.stringify(o)))return y({backend:this.persistenceBackend,subject:()=>this.subjectFor(e,t==="isVisible"?"visible":t),baseline:i,next:o,label:`Set ${this.labelOf(e)} ${t}`,journal:()=>this.recordHistory(`Set ${this.labelOf(e)} ${t}`,a)})}};subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}dispose(){this.removeCanvasListeners?.();for(const{scene:e,token:t}of this.pointerTokens)e.onPointerObservable?.remove(t);for(const e of this.gizmos)e.dispose();this.persistenceBackend?.dispose(),this.listeners.clear(),this.indexed.clear(),this.idsByObject.clear()}labelOf(e){return this.hierarchy.node(e)?.label??"Babylon node"}objectOf(e){this.reindex();const t=this.indexed.get(e);return t?.kind==="node"?t.object:null}readChannel(e,t){const n=this.objectOf(e);if(n){if(t==="position")return[n.position?.x??0,n.position?.y??0,n.position?.z??0];if(t==="rotation"){const s=n.rotationQuaternion,i=s?p([s.x,s.y,s.z,s.w]):n.rotation??{x:0,y:0,z:0};return[i.x,i.y,i.z]}return t==="scale"?[n.scaling?.x??1,n.scaling?.y??1,n.scaling?.z??1]:t==="visible"?n.isVisible:this.inspector.get(e,t)}}applyChannel(e,t,n){const s=this.objectOf(e);s&&(t==="position"&&Array.isArray(n)?d(s.position,n):t==="rotation"&&Array.isArray(n)?B(s,n):t==="scale"&&Array.isArray(n)?d(s.scaling,n):t==="visible"?s.isVisible=!!n:(t==="name"||t==="visibility")&&(s[t]=n),this.notify())}recordHistory(e,t){!this.historyResource||!t||(this.edits+=1,this.historyResource.record(e,t,this.captureHistoryState()).catch(n=>{g.error(`[babylon] failed to journal "${e}" into project history — the edit is applied but has no history entry (it cannot be undone): ${n instanceof Error?n.message:String(n)}`)}))}captureHistoryState(){this.reindex();const e={};for(const[t,n]of this.indexed){if(n.kind!=="node")continue;const s={};for(const i of["position","rotation","scale","visible","name","visibility"]){const a=this.readChannel(t,i);a!=null&&(s[i]=a)}e[t]=s}return{edits:this.edits,nodes:e}}restoreHistoryState(e){this.edits=e.edits;for(const[t,n]of Object.entries(e.nodes))for(const[s,i]of Object.entries(n))this.applyChannel(t,s,i);this.notify()}captureChannels(e){const t=this.readChannel(e,"position"),n=this.readChannel(e,"rotation"),s=this.readChannel(e,"scale");return t&&n&&s?{position:t,rotation:n,scale:s}:null}subjectFor(e,t){const n=this.objectOf(e),s=v(n);return{entityId:e,property:t,surface:"babylon",anchor:s,anchorKind:s.anchored?"construction-literal":"live-only",instances:s.anchored&&s.kind==="source"?x(s):0}}installNativeTools(){const e=this.options.api?.GizmoManager;for(const t of this.scenes()){if(e){const s=new e(t);s.positionGizmoEnabled=!0,s.rotationGizmoEnabled=!0,s.scaleGizmoEnabled=!0,s.usePointerToAttachGizmos=!1,this.gizmos.push(s)}const n=t.onPointerObservable;if(n){const s=n.add(i=>{const a=i.pickInfo?.pickedMesh;if(!a)return;this.reindex();const o=this.idsByObject.get(a);o&&this.selection.set([o])});this.pointerTokens.push({scene:t,token:s})}}}attachGizmos(e){const t=e?this.objectOf(e):null;for(const n of this.gizmos){if(!t){n.attachToMesh(null);continue}try{u(t).includes("Mesh")?n.attachToMesh(t):n.attachToNode?n.attachToNode(t):n.attachToMesh(null)}catch{n.attachToMesh(null)}}}notify(){for(const e of this.listeners)e();this.store.shell.notifyIngestEdit()}}export{R as BabylonAuthoringAdapter};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-cFAgtv_D.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css"])))=>i.map(i=>d[i]);
2
- import{e2 as P,w as X,c6 as ce,X as ue,h6 as fe,ea as me,_ as pe,dw as he,k_ as ge,ag as we}from"./index-cFAgtv_D.js";import{n as ve,a as ye}from"./native-debug-module-DCkYCR9b.js";import{assertNever as V}from"./adapter-surface-Y37Nzcyw.js";import{r as x}from"./index-nmcBqr7Y.js";import{h as be}from"./index-DzuOGwVB.js";import{staticBatchSkipReason as Ee,materialMergeSignature as Re}from"./structural-signature-Dc7skRiy.js";import{fd as Me}from"./three.core-3arARmh6.js";import{f as Se,c as Ce,a as Ae,b as _e}from"./webgl-frame-capture-DdJkM2mi.js";import{g as Pe}from"./debug-registry-BOPmuIUp.js";import{y as xe,f as Fe,e as Te,n as $e,g as De}from"./events-156d8d12.esm-DmeaOP4r.js";import{a as ke}from"./realm-services-COQmdHaL.js";import{r as Ie}from"./relative-path-guard-GiM7Lsz8.js";import{b as je,m as Oe}from"./capability-coverage-BnIBnsu6.js";import{a as Be,b as Le}from"./react-root-BHA-cdrW.js";const ee=40,te=30;function re(e){const t=e;return t.isMesh||t.isSkinnedMesh?t:null}function T(e){const t=e.geometry;if(!t)return 0;const r=t.getIndex?.()??null,n=t.getAttribute?.("position")??null,s=r?r.count:n?.count??0,o=e.isInstancedMesh?e.count??1:1;return Math.round(s/3)*o}function U(e,t){if(!e.visible)return;const r=re(e);r&&t(r);for(const n of e.children)U(n,t)}const R="(unnamed)";function j(e,t="(scene)"){const r=new Map;let n=0,s=0;if(!e.visible)return{root:t,totalMeshes:0,totalTriangles:0,subtreeCount:0,subtrees:[]};const o=(d,u)=>{U(u,f=>{const p=T(f),a=r.get(d)??{meshes:0,triangles:0};a.meshes+=1,a.triangles+=p,r.set(d,a),n+=1,s+=p})},l=re(e);if(l){const d=T(l);r.set(e.name||t,{meshes:1,triangles:d}),n+=1,s+=d}for(const d of e.children)o(d.name||R,d);const i=[...r.entries()].map(([d,u])=>({name:d,meshes:u.meshes,triangles:u.triangles})).sort((d,u)=>u.triangles-d.triangles||u.meshes-d.meshes);return{root:t,totalMeshes:n,totalTriangles:s,subtreeCount:i.length,subtrees:i.slice(0,ee)}}function H(e,t){if(e.name===t)return e;for(const r of e.children){const n=H(r,t);if(n)return n}return null}function Ne(e){const t=new Map;let r=0;U(e,o=>{if(o.isInstancedMesh)return;const l=o.geometry;if(!l)return;const i=o.material,d=Array.isArray(i)?i.map(p=>p.uuid).join("+"):i?.uuid??"none",u=`${l.uuid}/${d}`;r+=1;const f=t.get(u);if(f){f.meshes+=1;return}t.set(u,{meshes:1,triangles:T(o),example:`${o.parent?.name||R}/${o.name||R}`})});const n=[...t.values()].sort((o,l)=>l.meshes-o.meshes),s=n.slice(0,te);return{plainMeshes:r,familyCount:n.length,top:s,meshesInTop:s.reduce((o,l)=>o+l.meshes,0)}}function Y(e){const t=new Map,r={},n=[];let s=0;const o=(a,c)=>{if(!a.visible)return!1;const m=Ee(a);if(m==="opted-out")return r["opted-out"]=(r["opted-out"]??0)+1,!1;if(m===null){const w=a,A=w.material,M=`${Re(A)}|${a.castShadow?1:0}${a.receiveShadow?1:0}`;s+=1,n.push({key:M,subtree:c});const S=t.get(M);S?S.meshes+=1:t.set(M,{meshes:1,triangles:T(w),example:`${a.parent?.name||R}/${a.name||R}`})}else m!=="not-a-mesh"&&(r[m]=(r[m]??0)+1);return!0},l=(a,c)=>{if(o(a,c))for(const m of a.children)l(m,c)};if(o(e,e.name||R))for(const a of e.children)l(a,a.name||R);const i=new Set([...t.entries()].filter(([,a])=>a.meshes>=2).map(([a])=>a)),d=new Map;let u=0;for(const a of n)i.has(a.key)&&(u+=1,d.set(a.subtree,(d.get(a.subtree)??0)+1));const f=[...t.values()].sort((a,c)=>c.meshes-a.meshes),p=f.slice(0,te);return{plainMeshes:s,familyCount:f.length,top:p,meshesInTop:p.reduce((a,c)=>a+c.meshes,0),collapsible:u,skipped:r,bySubtree:[...d.entries()].map(([a,c])=>({name:a,collapsible:c})).sort((a,c)=>c.collapsible-a.collapsible).slice(0,ee)}}const ne="render.submit",We=["input","prePhysics","physics","postPhysics","gameLogic","animation"],He=300,Ve=50,Ue=.05,ze=.1;function Ge(e,t,r){const n=e-t-r;return{totalMs:e,renderMs:t,simMs:r,otherMs:n,text:`${e.toFixed(0)}ms = render ${t.toFixed(0)} + sim ${r.toFixed(0)} + other ${n.toFixed(0)}`}}function Ke(){return{lastFrameId:0,lastPresentAt:null,pendingSimMs:0,frameTimeMs:null,renderCpuMs:null,drawCalls:null,triangles:null,renderPasses:null,worstCurrentMs:0,worstPreviousMs:0,worstWindowFrames:0,lastHitch:null,presentedFrames:0}}function Xe(e,t){let r=0;for(const n of e.phases)t.includes(n.name)&&(r+=n.ms);return r}function Ye(e){for(const t of e.phases)if(t.name===ne)return t.ms;return null}function J(e,t,r){return e===null?t:e*(1-r)+t*r}function Je(e,t){if(t.id<=e.lastFrameId)return!1;e.lastFrameId=t.id,t.render.renderPasses!==null&&(e.drawCalls=t.render.drawCalls,e.triangles=t.render.triangles,e.renderPasses=t.render.renderPasses),e.pendingSimMs+=Xe(t,We);const r=Ye(t);if(r===null)return!1;const n=e.pendingSimMs;e.pendingSimMs=0,e.presentedFrames+=1,e.renderCpuMs=J(e.renderCpuMs,r,ze);const s=e.lastPresentAt;if(e.lastPresentAt=t.timestamp,s===null)return!0;const o=t.timestamp-s;return e.frameTimeMs=J(e.frameTimeMs,o,Ue),o>e.worstCurrentMs&&(e.worstCurrentMs=o),e.worstWindowFrames+=1,e.worstWindowFrames>=He&&(e.worstPreviousMs=e.worstCurrentMs,e.worstCurrentMs=0,e.worstWindowFrames=0),o>=Ve&&(e.lastHitch=Ge(o,r,n)),!0}function F(e,t){if(e===null)return null;const r=10**t;return Math.round(e*r)/r}function Qe(e){const t=F(e.frameTimeMs,2),r=Math.max(e.worstCurrentMs,e.worstPreviousMs);return{frameTimeMs:t,fps:t!==null&&t>0?F(1e3/t,1):null,drawCalls:e.drawCalls,triangles:e.triangles,renderCpuMs:F(e.renderCpuMs,2),renderPasses:e.renderPasses,worstFrameMs:e.frameTimeMs===null?null:F(r,2),lastHitch:e.lastHitch,presentedFrames:e.presentedFrames}}function qe(e){const t=Ke(),r=e.subscribe(()=>{const s=e.getSnapshot().frames.at(-1);s&&Je(t,s)});let n=!1;return{read:()=>Qe(t),dispose(){n||(n=!0,r())}}}const Ze=500,et=.5,tt=.4,rt=120;function O(e){return e.toLocaleString("en-US")}function nt(e){const{drawCalls:t,census:r,structural:n}=e;if(t===null||t<Ze)return null;const{collapsible:s}=n;if(s<t*et)return null;const o=new Set(r.subtrees.map(p=>p.name)),l=n.bySubtree[0],i=l&&l.collapsible>=s*tt&&o.has(l.name)?l.name:null,d=i===null?"<Frozen>":`<Frozen name="${i}">`,u=i===null?"spread across the scene":`mostly under "${i}"`,f=`[static-batch] ${O(t)} draw calls this frame; ~${O(s)} meshes are repeats of ${O(n.familyCount)} structural families, ${u}. If that scenery is mount-static — nothing under it moves, re-colours or unmounts after mount — one wrapper collapses it to a few draws: wrap it in ${d}…</Frozen> (volter-game-editor add static-batch). Reactive scenery goes outside the wrapper, and a subtree that must stay unbatched declares it: userData={{ staticBatch: false }}.`;return{drawCalls:t,collapsible:s,subtree:i,fix:d,message:f}}const se="__volterStaticBatchAdvised";function st(){return globalThis[se]===!0}function ot(e){console.warn(e)}function at(e,t=ot){return st()?!1:(globalThis[se]=!0,t(e.message),!0)}const B="render.vitals",it="render.census",lt="render.families",dt="render.toggle",ct="render.dpr",ut="render.dpr: this world has no WebGL renderer (headless mount), so there is no pixel ratio to change. The other render.* commands still work — they read the scene graph.";function ft(e){const{registry:t,worldId:r,profiler:n,scene:s,renderer:o}=e;if(t.adapter.providers().some(c=>c.name===B))return console.warn(`[render-vitals] world "${r}" did not get the ${B} door: another live world already owns it (the names are fixed, so the first three root to mount wins). Its draws still fold into the readings — the profiler is game-scoped — but render.census/families/toggle address the owning root. If this world IS the current one, the previous mount was torn down AFTER this one seeded and its strip() took the door with it.`),null;const i=qe(n),d=t.forRoot(r);d.registerStateProvider(B,()=>i.read()),d.registerCommand(it,{description:"Visible meshes and triangles per subtree — the address book behind the draw-call reading. Pass a subtree name (as listed by a previous census) to drill into it.",args:P([X().optional()]),locus:"client"},c=>{if(c===void 0||c==="")return j(s);const m=H(s,c);if(!m)throw new Error(`render.census: no node named "${c}" in this world. Run render.census with no argument to list the addressable subtrees.`);return j(m,c)}),d.registerCommand(lt,{description:"Meshes grouped by shared (geometry, material) identity, largest group first — the instancing shortlist for a draw-call diet. `structural` is the same scan keyed by VALUE instead of object identity: what would collapse under a <Frozen> wrapper (volter-game-editor add static-batch) even when every mesh carries its own inline material.",args:P([]),locus:"client"},()=>({...Ne(s),structural:Y(s)})),d.registerCommand(dt,{description:"Show/hide a named subtree (as listed by render.census) and read render.vitals again — the difference is what that subtree costs.",args:P([X()]),locus:"client"},c=>{const m=H(s,c);if(!m)throw new Error(`render.toggle: no node named "${c}" in this world. Run render.census to list the addressable subtrees.`);return m.visible=!m.visible,{name:c,visible:m.visible}}),d.registerCommand(ct,{description:"Set the renderer pixel ratio (retina default is ~2) to probe GPU fill cost — render CPU that does not move when the drawing buffer shrinks was never fill-bound.",args:P([ce().positive().max(8)]),locus:"client"},c=>{if(!o)throw new Error(ut);const m=o.getSize(new Me);return o.setPixelRatio(c),o.setSize(m.x,m.y,!1),{pixelRatio:o.getPixelRatio(),drawingBuffer:{width:o.domElement.width,height:o.domElement.height}}});let u=null,f=!1;const p=()=>{if(f||i.read().presentedFrames<rt)return;f=!0,u?.(),u=null;const c=nt({drawCalls:i.read().drawCalls,census:j(s),structural:Y(s)});c&&at(c)};u=n.subscribe(p);let a=!1;return{vitals:i,dispose(){a||(a=!0,u?.(),u=null,i.dispose())}}}const mt={};function pt(e){return mt?.VITE_VOLTER_DEV_BUILD==="true"}const Q=new WeakMap;function ht(e){const t=Q.get(e.Component);if(t)return t;class r extends e.Component{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(s){this.props.onError(s)}render(){return this.state.failed?null:this.props.children}}return Q.set(e.Component,r),r}function gt(e,t,r){const{createElement:n,Fragment:s,useEffect:o,createRoot:l,extend:i,advance:d,flushSync:u}=r,f=ht(r),p=n(t);return{id:e,async mount(a){i(a.three);const c=a.game?Pe(a.game):null,m=a.surface.canvas,w=l(m);let A;const M=new Promise(h=>{A=h});let S;const ae=new Promise(h=>{S=h});function ie(){return o(S,[]),null}await w.configure({gl:a.renderer,shadows:a.renderer.shadowMap?.enabled??!1,frameloop:"never",size:{width:a.surface.width,height:a.surface.height,top:0,left:0},...a.headless?{}:{events:r.events},onCreated:h=>A(h)});const le=n(r.FiberProvider,null,n(s,null,p,n(ie,{key:"volter-mount-effects-ready"}))),_=await new Promise((h,y)=>{const b=E=>{I(),w.unmount(),c?.strip(e),y(new Error(`three world "${e}": fiber crashed before its first commit — ${E}`))},g=E=>{b(E.message)},k=setTimeout(()=>{I(),w.unmount(),c?.strip(e),y(new Error(`three world "${e}": onCreated did not fire within 10s — the R3F tree never reached its first commit (mount() fails loudly instead of hanging)`))},1e4),I=()=>{clearTimeout(k),typeof window<"u"&&window.removeEventListener("error",g)};typeof window<"u"&&window.addEventListener("error",g),w.render(n(f,{onError:E=>b(E.message)},le)),Promise.all([M,ae]).then(([E])=>{I(),h(E)})});_.clock.autoStart=!1,_.clock.stop();const v=()=>_.get();let $=null;if(!a.headless&&a.game&&pt()){if(a.game.profiler.enabled=!0,!c)throw new Error(`three world "${e}": mounted Game has no debug registry.`);$=ft({registry:c,worldId:e,profiler:a.game.profiler,scene:v().scene,renderer:a.renderer})}const de=typeof a.renderer.getContext=="function"?a.renderer.getContext():void 0,z=Se(a.headless??!1,de),G=z?Ce(z):null,C=G?Ae({capture:G,scene:_.scene,memory:()=>_e(v().scene,a.renderer.info)}):null,K=c?{debug:c.adapter}:{};C&&(K.renderDebug=C.adapter);let D=0;return{kind:"three",get scene(){return v().scene},get camera(){return v().camera},drivesOwnLoop:!1,updateCadence:"display",systems:K,systemScope:v().scene,update(h){D+=h;const y=v();try{C?.beforeRender();const b=a.game?.profiler;if(!b?.enabled){d(D,!0,y);return}const g=a.renderer.info,k=g?.render.frame??0;b.beginPhase();try{d(D,!0,y)}finally{b.endPhase(ne)}g&&b.reportRender({gpuMs:null,drawCalls:g.render.calls,triangles:g.render.triangles,geometries:g.memory.geometries,textures:g.memory.textures,renderPasses:g.render.frame-k})}finally{C?.afterRender()}},resize(h,y){v().setSize(h,y)},dispose(){C?.dispose(),u(()=>w.unmount()),$?.dispose(),$=null,c?.strip(e)}}}}}function q(e,t,r){const n=e;return typeof n?.default=="function"?gt(t,n.default,r):null}const wt={FiberProvider:be,createElement:x.createElement,Fragment:x.Fragment,Component:x.Component,useEffect:x.useEffect,createRoot:Fe,extend:Te,advance:$e,flushSync:xe,events:De};let L=null;const vt=["FiberProvider","createElement","Fragment","Component","useEffect","createR3FRoot","extendThree","advance","flushSync","events"];async function yt(){const e=await import(fe),t=vt.filter(r=>e[r]===void 0);if(t.length>0||typeof e.projectThree!="object"||e.projectThree===null)throw new Error(`The packaged runtime's synthetic R3F module did not export ${[...t,...e.projectThree?[]:["projectThree"]].join(", ")} — see R3F_DOORWAY in vite-plugin-module-doorways.ts.`);return{runtime:{FiberProvider:e.FiberProvider,createElement:e.createElement,Fragment:e.Fragment,Component:e.Component,useEffect:e.useEffect,createRoot:e.createR3FRoot,extend:e.extendThree,advance:e.advance,flushSync:e.flushSync,events:e.events},projectThree:e.projectThree}}function bt(e,t){return{id:e.id,mount(r){return e.mount({...r,three:t})}}}async function Z(e,t){if(!await ue())return q(e,t,wt);L||(L=yt());const{runtime:r,projectThree:n}=await L,s=q(e,t,r);return s?bt(s,n):null}function Et(e){if(e===null||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&t.id.length>0&&typeof t.mount=="function"}async function Rt(e,t,r){const n=r?.namedExport;if(n!==void 0){const s=e[n];if(typeof s!="function")throw new Error(`three root "${t}": ${r?.entryPath??"the entry module"} has no exported component "${n}" (manifest \`world.export\`) — it exports ${Object.keys(e).join(", ")||"(nothing)"}.`);return Z({default:s},t)}return Et(e.adapter)?e.adapter:Z(e,t)}function Mt(e,t){const r=o=>{throw new Error(`resolveRootBinding: world "${e.id}" declares { module: "${t}" } — ${o} (the module path must be game-folder-relative, normalized, with no \`..\` escape).`)},n=Ie(t);n==="empty"&&r("the module path is empty"),n==="nul"&&r("the module path contains a NUL byte"),n==="absolute"&&r("the module path is absolute, not game-folder-relative"),n==="traversal"&&r("the module path contains a `..` segment and would escape the game folder"),t.includes("\\")&&r("the module path contains a backslash (not POSIX-relative)");const s=t.split("/").filter(o=>o.length>0&&o!==".").join("/");return s===""&&r("the module path resolves to nothing (empty after normalization)"),s}function N(e,t,r){const n=o=>{throw new Error(`resolveRootBinding: world "${e.id}"'s custom adapter module "${t}" ${o} — a { module } adapter must default-export an object shaped like \`RootAdapter\`: \`{ id: string, mount(host): Promise<MountedThreeRoot> }\`.`)};(r===null||typeof r!="object")&&n("has no default export (or it is not an object)");const s=r;(typeof s.id!="string"||s.id.length===0)&&n("default-exports an object with no non-empty string `id`"),typeof s.mount!="function"&&n("default-exports an object with no `mount` function")}const St="this world mounts through the project’s own adapter module, so every capability the editor has here is one that module hands it";function W(e,t){return{id:t.id,async mount(r){const n=await t.mount(r),s=je(e.id,Oe(n),St,n.kind);if(s){const{editorConsole:o}=await pe(async()=>{const{editorConsole:l}=await import("./index-cFAgtv_D.js").then(i=>i.tQ);return{editorConsole:l}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));o.warn(s,"adapter")}return n}}}async function Ct(e,t,r){const{adapter:n}=e;if(n.type!=="module")throw new Error(`resolveModuleAdapter: world "${e.id}" is not a { module } world.`);const s=Mt(e,n.module),l=await import(me(t,s,r)),i=l.default;switch(e.surface){case"three":return N(e,n.module,i),{resolved:{surface:"three",adapter:W(e,i)},module:l};case"canvas":return N(e,n.module,i),{resolved:{surface:"canvas",adapter:W(e,i)},module:l};case"dom":return N(e,n.module,i),{resolved:{surface:"dom",adapter:W(e,i)},module:l};default:return V(e.surface,"resolveModuleAdapter")}}async function At(e,t,r,n){const{adapter:s,module:o}=await Pt(e,t,n);return{adapter:s,declaration:_t(e,r,o)}}function _t(e,t,r){const n=ve(e.id,r),s=ye(e.id,r,e.surface);return{root:e,definition:t,entry:{reach:"full",module:r},...n?{entryDebug:n}:{},...s?{entrySystems:s}:{}}}async function Pt(e,t,r){const{adapter:n}=e;switch(n.identity){case"three":return xt(e,t,r);case"canvas":return Ft(e,t,r);case"dom":{let s={};return{adapter:{surface:"dom",adapter:await Le(e,t,l=>{s=l})},module:s}}case"module":{const{resolved:s,module:o}=await Ct(e,t.projectRoot,t.epoch);return{adapter:s,module:o}}case"ingest-react":{const{adapter:s,module:o}=await Be(e,t);return{adapter:{surface:"dom",adapter:s},module:o}}case"ingest-pixi":case"ingest-three":return Tt(e);default:{const s=n;throw new Error(`resolveRootBinding: unhandled adapter identity ${JSON.stringify(s)}`)}}}async function xt(e,t,r){if(e.entry===void 0)throw new Error(`resolveRootBinding: world "${e.id}" is a three root with no \`entry\` — this should have been rejected by manifest validation. A three root is authored as a TSX/R3F world module.`);const n=await t.loadEntryModule(e.entry,e.id,"three",r?.selectionOverride),s=await Rt(n,e.id,{entryPath:e.entry});if(!s)throw new Error(`Project script at ${e.entry} neither exports \`adapter\` nor default-exports a React world component — every explicit first-party entry module satisfies one of the two (\`export default function World() { … }\`, or an \`adapter\` export for full control).`);return{adapter:{surface:"three",adapter:s},module:n}}async function Ft(e,t,r){if(e.entry===void 0)throw new Error(`resolveRootBinding: world "${e.id}" is a canvas root with no \`entry\` — this should have been rejected by manifest validation. A canvas root is authored as a TSX world module; point \`entry\` at it.`);const n=await t.loadEntryModule(e.entry,e.id,"canvas",r?.selectionOverride),s=await t.pixiRuntime(n,e.id);if(!s)throw new Error(`Project script at ${e.entry} (canvas root "${e.id}") must default-export a React component (\`export default function World() { … }\`) — or export an \`adapter\` for full control.`);return{adapter:{surface:"canvas",adapter:s},module:n}}function Tt(e){const t=e.adapter.identity==="ingest-pixi"?"resolveIngest2DDescriptor + mountCanvasIngestRootFromManifest":"resolveIngestDescriptor + mountThreeIngestRootFromManifest";throw new Error(`resolveRootBinding: world "${e.id}" (${e.adapter.identity}) is a captured foreign runtime, not a host-mounted RootAdapter; dispatch it through ${t}`)}async function oe(e,t,r){const n=he(),s=await ke(t,n),o=await ge(),l=[];for(const i of we(e)){const d=r?.selectionOverride,u=await At(i,s,o,{...d&&i.id===d.regionId?{selectionOverride:{selection:d.selection,key:d.key}}:{}});l.push({world:i,resolved:u})}return{roots:l,mountId:String(n)}}async function Gt(e,t){const{roots:r}=await oe(e,t),n=[];for(const{world:s,resolved:o}of r){const l={id:s.id,zOrder:s.zOrder,pausable:s.pausable,declaration:o.declaration},i=o.adapter;switch(i.surface){case"canvas":n.push({...l,kind:"canvas",adapter:i.adapter});break;case"dom":n.push({...l,kind:"dom",adapter:i.adapter});break;case"three":n.push({...l,kind:"three",adapter:i.adapter});break;default:V(i,"resolveAllRoots")}}return n}async function Kt(e,t,r){const{roots:n,mountId:s}=await oe(e,t,r),o={};for(const{world:l,resolved:i}of n){const{root:d,...u}=i.declaration,f=i.adapter;switch(f.surface){case"canvas":o[l.id]={kind:"canvas",adapter:f.adapter,declaration:u};break;case"dom":o[l.id]={kind:"dom",adapter:f.adapter,declaration:u};break;case"three":o[l.id]={kind:"three",adapter:f.adapter,declaration:u};break;default:V(f,"resolveAllRootEntries")}}return{entries:o,mountId:s}}export{Rt as a,Kt as b,Gt as r};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-C6b9kkV0.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css"])))=>i.map(i=>d[i]);
2
+ import{e2 as P,w as X,c6 as ce,X as ue,h6 as fe,ea as me,_ as pe,dw as he,k_ as ge,ag as we}from"./index-C6b9kkV0.js";import{n as ve,a as ye}from"./native-debug-module-Be_Zu0XE.js";import{assertNever as V}from"./adapter-surface-Y37Nzcyw.js";import{r as x}from"./index-nmcBqr7Y.js";import{h as be}from"./index-DzuOGwVB.js";import{staticBatchSkipReason as Ee,materialMergeSignature as Re}from"./structural-signature-Dc7skRiy.js";import{fd as Me}from"./three.core-3arARmh6.js";import{f as Se,c as Ce,a as Ae,b as _e}from"./webgl-frame-capture-DdJkM2mi.js";import{g as Pe}from"./debug-registry-Be63j2Mr.js";import{y as xe,f as Fe,e as Te,n as $e,g as De}from"./events-156d8d12.esm-DmeaOP4r.js";import{a as ke}from"./realm-services-CnW99EpW.js";import{r as Ie}from"./relative-path-guard-GiM7Lsz8.js";import{b as je,m as Oe}from"./capability-coverage-3wZkRo7W.js";import{a as Be,b as Le}from"./react-root-BHA-cdrW.js";const ee=40,te=30;function re(e){const t=e;return t.isMesh||t.isSkinnedMesh?t:null}function T(e){const t=e.geometry;if(!t)return 0;const r=t.getIndex?.()??null,n=t.getAttribute?.("position")??null,s=r?r.count:n?.count??0,o=e.isInstancedMesh?e.count??1:1;return Math.round(s/3)*o}function U(e,t){if(!e.visible)return;const r=re(e);r&&t(r);for(const n of e.children)U(n,t)}const R="(unnamed)";function j(e,t="(scene)"){const r=new Map;let n=0,s=0;if(!e.visible)return{root:t,totalMeshes:0,totalTriangles:0,subtreeCount:0,subtrees:[]};const o=(d,u)=>{U(u,f=>{const p=T(f),a=r.get(d)??{meshes:0,triangles:0};a.meshes+=1,a.triangles+=p,r.set(d,a),n+=1,s+=p})},l=re(e);if(l){const d=T(l);r.set(e.name||t,{meshes:1,triangles:d}),n+=1,s+=d}for(const d of e.children)o(d.name||R,d);const i=[...r.entries()].map(([d,u])=>({name:d,meshes:u.meshes,triangles:u.triangles})).sort((d,u)=>u.triangles-d.triangles||u.meshes-d.meshes);return{root:t,totalMeshes:n,totalTriangles:s,subtreeCount:i.length,subtrees:i.slice(0,ee)}}function H(e,t){if(e.name===t)return e;for(const r of e.children){const n=H(r,t);if(n)return n}return null}function Ne(e){const t=new Map;let r=0;U(e,o=>{if(o.isInstancedMesh)return;const l=o.geometry;if(!l)return;const i=o.material,d=Array.isArray(i)?i.map(p=>p.uuid).join("+"):i?.uuid??"none",u=`${l.uuid}/${d}`;r+=1;const f=t.get(u);if(f){f.meshes+=1;return}t.set(u,{meshes:1,triangles:T(o),example:`${o.parent?.name||R}/${o.name||R}`})});const n=[...t.values()].sort((o,l)=>l.meshes-o.meshes),s=n.slice(0,te);return{plainMeshes:r,familyCount:n.length,top:s,meshesInTop:s.reduce((o,l)=>o+l.meshes,0)}}function Y(e){const t=new Map,r={},n=[];let s=0;const o=(a,c)=>{if(!a.visible)return!1;const m=Ee(a);if(m==="opted-out")return r["opted-out"]=(r["opted-out"]??0)+1,!1;if(m===null){const w=a,A=w.material,M=`${Re(A)}|${a.castShadow?1:0}${a.receiveShadow?1:0}`;s+=1,n.push({key:M,subtree:c});const S=t.get(M);S?S.meshes+=1:t.set(M,{meshes:1,triangles:T(w),example:`${a.parent?.name||R}/${a.name||R}`})}else m!=="not-a-mesh"&&(r[m]=(r[m]??0)+1);return!0},l=(a,c)=>{if(o(a,c))for(const m of a.children)l(m,c)};if(o(e,e.name||R))for(const a of e.children)l(a,a.name||R);const i=new Set([...t.entries()].filter(([,a])=>a.meshes>=2).map(([a])=>a)),d=new Map;let u=0;for(const a of n)i.has(a.key)&&(u+=1,d.set(a.subtree,(d.get(a.subtree)??0)+1));const f=[...t.values()].sort((a,c)=>c.meshes-a.meshes),p=f.slice(0,te);return{plainMeshes:s,familyCount:f.length,top:p,meshesInTop:p.reduce((a,c)=>a+c.meshes,0),collapsible:u,skipped:r,bySubtree:[...d.entries()].map(([a,c])=>({name:a,collapsible:c})).sort((a,c)=>c.collapsible-a.collapsible).slice(0,ee)}}const ne="render.submit",We=["input","prePhysics","physics","postPhysics","gameLogic","animation"],He=300,Ve=50,Ue=.05,ze=.1;function Ge(e,t,r){const n=e-t-r;return{totalMs:e,renderMs:t,simMs:r,otherMs:n,text:`${e.toFixed(0)}ms = render ${t.toFixed(0)} + sim ${r.toFixed(0)} + other ${n.toFixed(0)}`}}function Ke(){return{lastFrameId:0,lastPresentAt:null,pendingSimMs:0,frameTimeMs:null,renderCpuMs:null,drawCalls:null,triangles:null,renderPasses:null,worstCurrentMs:0,worstPreviousMs:0,worstWindowFrames:0,lastHitch:null,presentedFrames:0}}function Xe(e,t){let r=0;for(const n of e.phases)t.includes(n.name)&&(r+=n.ms);return r}function Ye(e){for(const t of e.phases)if(t.name===ne)return t.ms;return null}function J(e,t,r){return e===null?t:e*(1-r)+t*r}function Je(e,t){if(t.id<=e.lastFrameId)return!1;e.lastFrameId=t.id,t.render.renderPasses!==null&&(e.drawCalls=t.render.drawCalls,e.triangles=t.render.triangles,e.renderPasses=t.render.renderPasses),e.pendingSimMs+=Xe(t,We);const r=Ye(t);if(r===null)return!1;const n=e.pendingSimMs;e.pendingSimMs=0,e.presentedFrames+=1,e.renderCpuMs=J(e.renderCpuMs,r,ze);const s=e.lastPresentAt;if(e.lastPresentAt=t.timestamp,s===null)return!0;const o=t.timestamp-s;return e.frameTimeMs=J(e.frameTimeMs,o,Ue),o>e.worstCurrentMs&&(e.worstCurrentMs=o),e.worstWindowFrames+=1,e.worstWindowFrames>=He&&(e.worstPreviousMs=e.worstCurrentMs,e.worstCurrentMs=0,e.worstWindowFrames=0),o>=Ve&&(e.lastHitch=Ge(o,r,n)),!0}function F(e,t){if(e===null)return null;const r=10**t;return Math.round(e*r)/r}function Qe(e){const t=F(e.frameTimeMs,2),r=Math.max(e.worstCurrentMs,e.worstPreviousMs);return{frameTimeMs:t,fps:t!==null&&t>0?F(1e3/t,1):null,drawCalls:e.drawCalls,triangles:e.triangles,renderCpuMs:F(e.renderCpuMs,2),renderPasses:e.renderPasses,worstFrameMs:e.frameTimeMs===null?null:F(r,2),lastHitch:e.lastHitch,presentedFrames:e.presentedFrames}}function qe(e){const t=Ke(),r=e.subscribe(()=>{const s=e.getSnapshot().frames.at(-1);s&&Je(t,s)});let n=!1;return{read:()=>Qe(t),dispose(){n||(n=!0,r())}}}const Ze=500,et=.5,tt=.4,rt=120;function O(e){return e.toLocaleString("en-US")}function nt(e){const{drawCalls:t,census:r,structural:n}=e;if(t===null||t<Ze)return null;const{collapsible:s}=n;if(s<t*et)return null;const o=new Set(r.subtrees.map(p=>p.name)),l=n.bySubtree[0],i=l&&l.collapsible>=s*tt&&o.has(l.name)?l.name:null,d=i===null?"<Frozen>":`<Frozen name="${i}">`,u=i===null?"spread across the scene":`mostly under "${i}"`,f=`[static-batch] ${O(t)} draw calls this frame; ~${O(s)} meshes are repeats of ${O(n.familyCount)} structural families, ${u}. If that scenery is mount-static — nothing under it moves, re-colours or unmounts after mount — one wrapper collapses it to a few draws: wrap it in ${d}…</Frozen> (volter-game-editor add static-batch). Reactive scenery goes outside the wrapper, and a subtree that must stay unbatched declares it: userData={{ staticBatch: false }}.`;return{drawCalls:t,collapsible:s,subtree:i,fix:d,message:f}}const se="__volterStaticBatchAdvised";function st(){return globalThis[se]===!0}function ot(e){console.warn(e)}function at(e,t=ot){return st()?!1:(globalThis[se]=!0,t(e.message),!0)}const B="render.vitals",it="render.census",lt="render.families",dt="render.toggle",ct="render.dpr",ut="render.dpr: this world has no WebGL renderer (headless mount), so there is no pixel ratio to change. The other render.* commands still work — they read the scene graph.";function ft(e){const{registry:t,worldId:r,profiler:n,scene:s,renderer:o}=e;if(t.adapter.providers().some(c=>c.name===B))return console.warn(`[render-vitals] world "${r}" did not get the ${B} door: another live world already owns it (the names are fixed, so the first three root to mount wins). Its draws still fold into the readings — the profiler is game-scoped — but render.census/families/toggle address the owning root. If this world IS the current one, the previous mount was torn down AFTER this one seeded and its strip() took the door with it.`),null;const i=qe(n),d=t.forRoot(r);d.registerStateProvider(B,()=>i.read()),d.registerCommand(it,{description:"Visible meshes and triangles per subtree — the address book behind the draw-call reading. Pass a subtree name (as listed by a previous census) to drill into it.",args:P([X().optional()]),locus:"client"},c=>{if(c===void 0||c==="")return j(s);const m=H(s,c);if(!m)throw new Error(`render.census: no node named "${c}" in this world. Run render.census with no argument to list the addressable subtrees.`);return j(m,c)}),d.registerCommand(lt,{description:"Meshes grouped by shared (geometry, material) identity, largest group first — the instancing shortlist for a draw-call diet. `structural` is the same scan keyed by VALUE instead of object identity: what would collapse under a <Frozen> wrapper (volter-game-editor add static-batch) even when every mesh carries its own inline material.",args:P([]),locus:"client"},()=>({...Ne(s),structural:Y(s)})),d.registerCommand(dt,{description:"Show/hide a named subtree (as listed by render.census) and read render.vitals again — the difference is what that subtree costs.",args:P([X()]),locus:"client"},c=>{const m=H(s,c);if(!m)throw new Error(`render.toggle: no node named "${c}" in this world. Run render.census to list the addressable subtrees.`);return m.visible=!m.visible,{name:c,visible:m.visible}}),d.registerCommand(ct,{description:"Set the renderer pixel ratio (retina default is ~2) to probe GPU fill cost — render CPU that does not move when the drawing buffer shrinks was never fill-bound.",args:P([ce().positive().max(8)]),locus:"client"},c=>{if(!o)throw new Error(ut);const m=o.getSize(new Me);return o.setPixelRatio(c),o.setSize(m.x,m.y,!1),{pixelRatio:o.getPixelRatio(),drawingBuffer:{width:o.domElement.width,height:o.domElement.height}}});let u=null,f=!1;const p=()=>{if(f||i.read().presentedFrames<rt)return;f=!0,u?.(),u=null;const c=nt({drawCalls:i.read().drawCalls,census:j(s),structural:Y(s)});c&&at(c)};u=n.subscribe(p);let a=!1;return{vitals:i,dispose(){a||(a=!0,u?.(),u=null,i.dispose())}}}const mt={};function pt(e){return mt?.VITE_VOLTER_DEV_BUILD==="true"}const Q=new WeakMap;function ht(e){const t=Q.get(e.Component);if(t)return t;class r extends e.Component{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(s){this.props.onError(s)}render(){return this.state.failed?null:this.props.children}}return Q.set(e.Component,r),r}function gt(e,t,r){const{createElement:n,Fragment:s,useEffect:o,createRoot:l,extend:i,advance:d,flushSync:u}=r,f=ht(r),p=n(t);return{id:e,async mount(a){i(a.three);const c=a.game?Pe(a.game):null,m=a.surface.canvas,w=l(m);let A;const M=new Promise(h=>{A=h});let S;const ae=new Promise(h=>{S=h});function ie(){return o(S,[]),null}await w.configure({gl:a.renderer,shadows:a.renderer.shadowMap?.enabled??!1,frameloop:"never",size:{width:a.surface.width,height:a.surface.height,top:0,left:0},...a.headless?{}:{events:r.events},onCreated:h=>A(h)});const le=n(r.FiberProvider,null,n(s,null,p,n(ie,{key:"volter-mount-effects-ready"}))),_=await new Promise((h,y)=>{const b=E=>{I(),w.unmount(),c?.strip(e),y(new Error(`three world "${e}": fiber crashed before its first commit — ${E}`))},g=E=>{b(E.message)},k=setTimeout(()=>{I(),w.unmount(),c?.strip(e),y(new Error(`three world "${e}": onCreated did not fire within 10s — the R3F tree never reached its first commit (mount() fails loudly instead of hanging)`))},1e4),I=()=>{clearTimeout(k),typeof window<"u"&&window.removeEventListener("error",g)};typeof window<"u"&&window.addEventListener("error",g),w.render(n(f,{onError:E=>b(E.message)},le)),Promise.all([M,ae]).then(([E])=>{I(),h(E)})});_.clock.autoStart=!1,_.clock.stop();const v=()=>_.get();let $=null;if(!a.headless&&a.game&&pt()){if(a.game.profiler.enabled=!0,!c)throw new Error(`three world "${e}": mounted Game has no debug registry.`);$=ft({registry:c,worldId:e,profiler:a.game.profiler,scene:v().scene,renderer:a.renderer})}const de=typeof a.renderer.getContext=="function"?a.renderer.getContext():void 0,z=Se(a.headless??!1,de),G=z?Ce(z):null,C=G?Ae({capture:G,scene:_.scene,memory:()=>_e(v().scene,a.renderer.info)}):null,K=c?{debug:c.adapter}:{};C&&(K.renderDebug=C.adapter);let D=0;return{kind:"three",get scene(){return v().scene},get camera(){return v().camera},drivesOwnLoop:!1,updateCadence:"display",systems:K,systemScope:v().scene,update(h){D+=h;const y=v();try{C?.beforeRender();const b=a.game?.profiler;if(!b?.enabled){d(D,!0,y);return}const g=a.renderer.info,k=g?.render.frame??0;b.beginPhase();try{d(D,!0,y)}finally{b.endPhase(ne)}g&&b.reportRender({gpuMs:null,drawCalls:g.render.calls,triangles:g.render.triangles,geometries:g.memory.geometries,textures:g.memory.textures,renderPasses:g.render.frame-k})}finally{C?.afterRender()}},resize(h,y){v().setSize(h,y)},dispose(){C?.dispose(),u(()=>w.unmount()),$?.dispose(),$=null,c?.strip(e)}}}}}function q(e,t,r){const n=e;return typeof n?.default=="function"?gt(t,n.default,r):null}const wt={FiberProvider:be,createElement:x.createElement,Fragment:x.Fragment,Component:x.Component,useEffect:x.useEffect,createRoot:Fe,extend:Te,advance:$e,flushSync:xe,events:De};let L=null;const vt=["FiberProvider","createElement","Fragment","Component","useEffect","createR3FRoot","extendThree","advance","flushSync","events"];async function yt(){const e=await import(fe),t=vt.filter(r=>e[r]===void 0);if(t.length>0||typeof e.projectThree!="object"||e.projectThree===null)throw new Error(`The packaged runtime's synthetic R3F module did not export ${[...t,...e.projectThree?[]:["projectThree"]].join(", ")} — see R3F_DOORWAY in vite-plugin-module-doorways.ts.`);return{runtime:{FiberProvider:e.FiberProvider,createElement:e.createElement,Fragment:e.Fragment,Component:e.Component,useEffect:e.useEffect,createRoot:e.createR3FRoot,extend:e.extendThree,advance:e.advance,flushSync:e.flushSync,events:e.events},projectThree:e.projectThree}}function bt(e,t){return{id:e.id,mount(r){return e.mount({...r,three:t})}}}async function Z(e,t){if(!await ue())return q(e,t,wt);L||(L=yt());const{runtime:r,projectThree:n}=await L,s=q(e,t,r);return s?bt(s,n):null}function Et(e){if(e===null||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&t.id.length>0&&typeof t.mount=="function"}async function Rt(e,t,r){const n=r?.namedExport;if(n!==void 0){const s=e[n];if(typeof s!="function")throw new Error(`three root "${t}": ${r?.entryPath??"the entry module"} has no exported component "${n}" (manifest \`world.export\`) — it exports ${Object.keys(e).join(", ")||"(nothing)"}.`);return Z({default:s},t)}return Et(e.adapter)?e.adapter:Z(e,t)}function Mt(e,t){const r=o=>{throw new Error(`resolveRootBinding: world "${e.id}" declares { module: "${t}" } — ${o} (the module path must be game-folder-relative, normalized, with no \`..\` escape).`)},n=Ie(t);n==="empty"&&r("the module path is empty"),n==="nul"&&r("the module path contains a NUL byte"),n==="absolute"&&r("the module path is absolute, not game-folder-relative"),n==="traversal"&&r("the module path contains a `..` segment and would escape the game folder"),t.includes("\\")&&r("the module path contains a backslash (not POSIX-relative)");const s=t.split("/").filter(o=>o.length>0&&o!==".").join("/");return s===""&&r("the module path resolves to nothing (empty after normalization)"),s}function N(e,t,r){const n=o=>{throw new Error(`resolveRootBinding: world "${e.id}"'s custom adapter module "${t}" ${o} — a { module } adapter must default-export an object shaped like \`RootAdapter\`: \`{ id: string, mount(host): Promise<MountedThreeRoot> }\`.`)};(r===null||typeof r!="object")&&n("has no default export (or it is not an object)");const s=r;(typeof s.id!="string"||s.id.length===0)&&n("default-exports an object with no non-empty string `id`"),typeof s.mount!="function"&&n("default-exports an object with no `mount` function")}const St="this world mounts through the project’s own adapter module, so every capability the editor has here is one that module hands it";function W(e,t){return{id:t.id,async mount(r){const n=await t.mount(r),s=je(e.id,Oe(n),St,n.kind);if(s){const{editorConsole:o}=await pe(async()=>{const{editorConsole:l}=await import("./index-C6b9kkV0.js").then(i=>i.tQ);return{editorConsole:l}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));o.warn(s,"adapter")}return n}}}async function Ct(e,t,r){const{adapter:n}=e;if(n.type!=="module")throw new Error(`resolveModuleAdapter: world "${e.id}" is not a { module } world.`);const s=Mt(e,n.module),l=await import(me(t,s,r)),i=l.default;switch(e.surface){case"three":return N(e,n.module,i),{resolved:{surface:"three",adapter:W(e,i)},module:l};case"canvas":return N(e,n.module,i),{resolved:{surface:"canvas",adapter:W(e,i)},module:l};case"dom":return N(e,n.module,i),{resolved:{surface:"dom",adapter:W(e,i)},module:l};default:return V(e.surface,"resolveModuleAdapter")}}async function At(e,t,r,n){const{adapter:s,module:o}=await Pt(e,t,n);return{adapter:s,declaration:_t(e,r,o)}}function _t(e,t,r){const n=ve(e.id,r),s=ye(e.id,r,e.surface);return{root:e,definition:t,entry:{reach:"full",module:r},...n?{entryDebug:n}:{},...s?{entrySystems:s}:{}}}async function Pt(e,t,r){const{adapter:n}=e;switch(n.identity){case"three":return xt(e,t,r);case"canvas":return Ft(e,t,r);case"dom":{let s={};return{adapter:{surface:"dom",adapter:await Le(e,t,l=>{s=l})},module:s}}case"module":{const{resolved:s,module:o}=await Ct(e,t.projectRoot,t.epoch);return{adapter:s,module:o}}case"ingest-react":{const{adapter:s,module:o}=await Be(e,t);return{adapter:{surface:"dom",adapter:s},module:o}}case"ingest-pixi":case"ingest-three":return Tt(e);default:{const s=n;throw new Error(`resolveRootBinding: unhandled adapter identity ${JSON.stringify(s)}`)}}}async function xt(e,t,r){if(e.entry===void 0)throw new Error(`resolveRootBinding: world "${e.id}" is a three root with no \`entry\` — this should have been rejected by manifest validation. A three root is authored as a TSX/R3F world module.`);const n=await t.loadEntryModule(e.entry,e.id,"three",r?.selectionOverride),s=await Rt(n,e.id,{entryPath:e.entry});if(!s)throw new Error(`Project script at ${e.entry} neither exports \`adapter\` nor default-exports a React world component — every explicit first-party entry module satisfies one of the two (\`export default function World() { … }\`, or an \`adapter\` export for full control).`);return{adapter:{surface:"three",adapter:s},module:n}}async function Ft(e,t,r){if(e.entry===void 0)throw new Error(`resolveRootBinding: world "${e.id}" is a canvas root with no \`entry\` — this should have been rejected by manifest validation. A canvas root is authored as a TSX world module; point \`entry\` at it.`);const n=await t.loadEntryModule(e.entry,e.id,"canvas",r?.selectionOverride),s=await t.pixiRuntime(n,e.id);if(!s)throw new Error(`Project script at ${e.entry} (canvas root "${e.id}") must default-export a React component (\`export default function World() { … }\`) — or export an \`adapter\` for full control.`);return{adapter:{surface:"canvas",adapter:s},module:n}}function Tt(e){const t=e.adapter.identity==="ingest-pixi"?"resolveIngest2DDescriptor + mountCanvasIngestRootFromManifest":"resolveIngestDescriptor + mountThreeIngestRootFromManifest";throw new Error(`resolveRootBinding: world "${e.id}" (${e.adapter.identity}) is a captured foreign runtime, not a host-mounted RootAdapter; dispatch it through ${t}`)}async function oe(e,t,r){const n=he(),s=await ke(t,n),o=await ge(),l=[];for(const i of we(e)){const d=r?.selectionOverride,u=await At(i,s,o,{...d&&i.id===d.regionId?{selectionOverride:{selection:d.selection,key:d.key}}:{}});l.push({world:i,resolved:u})}return{roots:l,mountId:String(n)}}async function Gt(e,t){const{roots:r}=await oe(e,t),n=[];for(const{world:s,resolved:o}of r){const l={id:s.id,zOrder:s.zOrder,pausable:s.pausable,declaration:o.declaration},i=o.adapter;switch(i.surface){case"canvas":n.push({...l,kind:"canvas",adapter:i.adapter});break;case"dom":n.push({...l,kind:"dom",adapter:i.adapter});break;case"three":n.push({...l,kind:"three",adapter:i.adapter});break;default:V(i,"resolveAllRoots")}}return n}async function Kt(e,t,r){const{roots:n,mountId:s}=await oe(e,t,r),o={};for(const{world:l,resolved:i}of n){const{root:d,...u}=i.declaration,f=i.adapter;switch(f.surface){case"canvas":o[l.id]={kind:"canvas",adapter:f.adapter,declaration:u};break;case"dom":o[l.id]={kind:"dom",adapter:f.adapter,declaration:u};break;case"three":o[l.id]={kind:"three",adapter:f.adapter,declaration:u};break;default:V(f,"resolveAllRootEntries")}}return{entries:o,mountId:s}}export{Rt as a,Kt as b,Gt as r};
@@ -0,0 +1 @@
1
+ var O=(function(){var E="b9H79Tebbbe:6eO9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gruuuuuuub9Gouuuuuue999Gvuuuuueu9Gzuuuuuuuuuuu99uuuub9Gquuuuuuu99uueu9GPuuuuuuuuuuu99uueu9Gquuuuuuuu99ueu9Gruuuuuu99eu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9Gluuuub9GiuuueuiLQdilvorlwDiqkxmPszbHHbelve9Weiiviebeoweuecj:Gdkr:Bdxo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bw8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bD8A9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9O9v9W9K9HtWbqQ9TW79O9V9Wt9F79P9T9W29P9M959t29V9W9W95bkX9TW79O9V9Wt9F79P9T9W29P9M959qV919UWbxQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7bmX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2WbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbs59TW79O9V9Wt9F9NW9UWV9HtW9q9V79Pt9P9V9U9sW9T9H9Wbzl79IV9RbHDwebcekdCXq;y;WeQdbk;r:herYue99iuY99Xue9:D998Jjjjjbcj;sb9Rgs8Kjjjjbcbhzasc:Cefcbc;Kbz:tjjjb8AdnabaeSmbabaeadcdtzMjjjb8AkdnamcdGTmbalcrfci4cbyd1:H:cjbHjjjjbbhHasc:Cefasyd;8egecdtfaHBdbasaecefBd;8ecbhlcbhednadTmbabheadhOinaHaeydbci4fcb86bbaeclfheaOcufgOmbkcbhlabheadhOinaHaeydbgAci4fgCaCRbbgCceaAcrGgAtV86bbaCcu7aA4ceGalfhlaeclfheaOcufgOmbkcualcdtalcFFFFi0Ehekaecbyd1:H:cjbHjjjjbbhzasc:Cefasyd;8egecdtfazBdbasaecefBd;8ealcd4alfhOcehHinaHgecethHaeaO6mbkcbhXcuaecdtgOaecFFFFi0Ecbyd1:H:cjbHjjjjbbhHasc:Cefasyd;8egAcdtfaHBdbasaAcefBd;8eaHcFeaOz:tjjjbhQdnadTmbaecufhLcbhKindndnaQabaKcdtfgYydbgAc:v;t;h;Ev2aLGgOcdtfgCydbgHcuSmbceheinazaHcdtfydbaASmdaOaefhHaecefheaQaHaLGgOcdtfgCydbgHcu9hmbkkazaXcdtfaABdbaCaXBdbaXhHaXcefhXkaYaHBdbaKcefgKad9hmbkkaQcbyd:m:H:cjbH:bjjjbbasasyd;8ecufBd;8ekcbh8AcualcefgecdtaecFFFFi0Ecbyd1:H:cjbHjjjjbbhLasc:Cefasyd;8egecdtfaLBdbasaLBdNeasaecefBd;8ecuadcitadcFFFFe0Ecbyd1:H:cjbHjjjjbbhEasc:Cefasyd;8egecdtfaEBdbasaEBd:yeasaecefBd;8eascNefabadalcbz:cjjjbcualcdtgealcFFFFi0Eg3cbyd1:H:cjbHjjjjbbhOasc:Cefasyd;8egHcdtfaOBdbasaHcefBd;8ea3cbyd1:H:cjbHjjjjbbhQasc:Cefasyd;8egHcdtfaQBdbasaHcefBd;8eaOaQaialavazasc:Cefz:djjjbalcbyd1:H:cjbHjjjjbbhYasc:Cefasyd;8egHcdtfaYBdbasaHcefBd;8ea3cbyd1:H:cjbHjjjjbbhHasc:Cefasyd;8egAcdtfaHBdbasaAcefBd;8ea3cbyd1:H:cjbHjjjjbbhAasc:Cefasyd;8egCcdtfaABdbasaCcefBd;8eaHcFeaez:tjjjbh5aAcFeaez:tjjjbh8EdnalTmbindnaLa8AgAcefg8AcdtfydbgCaLaAcdtgefydbgHSmbaCaH9Rh8FaEaHcitfhaa8Eaefhha5aefhKcbhCindndnaaaCcitfydbgXaA9hmbaKaABdbahaABdbxekdnaLaXcdtggfgeclfydbgHaeydbgeSmbaHae9RhHaEaecitfheinaeydbaASmdaecwfheaHcufgHmbkka8EagfgeaAaXaeydbcuSEBdbaKaXaAaKydbcuSEBdbkaCcefgCa8F9hmbkka8Aal9hmbkaOhHaQhAa5hXa8EhCcbheindndnaeaHydbgK9hmbdnaeaAydbgK9hmbaXydbhKdnaCydbg8Fcu9hmbaKcu9hmbaYaefcb86bbxikdna8FcuSmbaKcuSmbaea8FSmbaOa8FcdtfydbaOaKcdtfydb9hmbaYaefcd86bbxikaYaefhadnaea8FSmbaeaKSmbaace86bbxikaacl86bbxdkdnaeaQaKcdtg8Ffydb9hmbdnaCydbgacuSmbaeaaSmbaXydbggcuSmbaeagSmba8Ea8FfydbghcuSmbahaKSmba5a8Ffydbg8FcuSmba8FaKSmbdnaOaacdtfydbgKaOa8Fcdtfydb9hmbaKaOagcdtfydbg8FSmba8FaOahcdtfydb9hmbaYaefcd86bbxlkaYaefcl86bbxikaYaefcl86bbxdkaYaefcl86bbxekaYaefaYaKfRbb86bbkaHclfhHaAclfhAaXclfhXaCclfhCalaecefge9hmbkdnamcaGTmbcbh8JindndnaYa8Jfg8KRbbg8Lc9:fPibebekdndndnaOa8Jcdtfydbgea8J9hmbdnaqmbcbh8FxdkdnazTmbcbh8Fa8JheinaqazaecdtgefydbfRbbce4a8FVceGh8FaQaefydbgea8J9hmbxikkcbh8Fa8JheinaqaefRbbce4a8FVceGh8FaQaecdtfydbgea8J9hmbxdkkaYaefRbbhexeka8JheindnaLaecdtg8AfgeclfydbgHaeydbgeSmbaHae9RhgaEaecitfhhaOa8AfhacbhKinahaKcitfydbgXhednindnaLaecdtgCfgeclfydbgHaeydbgeSmbaHae9RhHaEaecitfheaaydbhAdninaOaeydbcdtfydbaASmeaecwfheaHcufgHTmdxbkkcbhexdkaQaCfydbgeaX9hmbkceheka8FaeVh8FaKcefgKag9hmbkkaQa8Afydbgea8J9hmbka8Lcia8FceGEheka8Kae86bbka8Jcefg8Jal9hmbkkdnaqTmbdndnazTmbazheaOhHalhAindnaqaeydbfRbbceGTmbaYaHydbfcl86bbkaeclfheaHclfhHaAcufgAmbxdkkaqheaOhHalhAindnaeRbbceGTmbaYaHydbfcl86bbkaecefheaHclfhHaAcufgAmbkkaOhealhAaYhHindnaYaeydbfRbbcl9hmbaHcl86bbkaeclfheaHcefhHaAcufgAmbkkamceGTmbaYhealhHindnaeRbbce9hmbaecl86bbkaecefheaHcufgHmbkkcbh8Mcualcx2alc;v:Q;v:Qe0Ecbyd1:H:cjbHjjjjbbh8Nasc:Cefasyd;8egecdtfa8NBdbasaecefBd;8eascbBd:qeas9cb83i1ea8Naialavazasc1efz:ejjjbhydndnaDmbcbh8PcbhCxekcbhCawhecbhHindnaeIdbJbbbb9ETmbasaCcdtfaHBdbaCcefhCkaeclfheaDaHcefgH9hmbkcuaCal2gecdtaecFFFFi0Ecbyd1:H:cjbHjjjjbbh8Pasc:Cefasyd;8egecdtfa8PBdbasaecefBd;8ealTmbdnaCmbcbhCxekarcd4hgdnazTmbaCcdthhcbh8Fa8Phainaoaza8Fcdtfydbag2cdtfhKasheaahHaChAinaHaKaeydbcdtgXfIdbawaXfIdbNUdbaeclfheaHclfhHaAcufgAmbkaaahfhaa8Fcefg8Fal9hmbxdkkaCcdthhcbh8Fa8Phainaoa8Fag2cdtfhKasheaahHaChAinaHaKaeydbcdtgXfIdbawaXfIdbNUdbaeclfheaHclfhHaAcufgAmbkaaahfhaa8Fcefg8Fal9hmbkkcualc8S2gHalc;D;O;f8U0EgXcbyd1:H:cjbHjjjjbbheasc:Cefasyd;8egAcdtfaeBdbasaAcefBd;8eaecbaHz:tjjjbhIcbh8RcbhgdnaCTmbcbh8MaXcbyd1:H:cjbHjjjjbbhgasc:Cefasyd;8egecdtfagBdbasaecefBd;8eagcbaHz:tjjjb8AcuaCal2gecltgHaecFFFFb0Ecbyd1:H:cjbHjjjjbbh8Rasc:Cefasyd;8egecdtfa8RBdbasaecefBd;8ea8RcbaHz:tjjjb8AamcjjjjdGTmbcualcltgealcFFFFb0Ecbyd1:H:cjbHjjjjbbh8Masc:Cefasyd;8egHcdtfa8MBdbasaHcefBd;8ea8Mcbaez:tjjjb8AkdnadTmbcbhKabhHina8NaHclfydbg8Fcx2fgeIdba8NaHydbgacx2fgAIdbg8S:tgRa8NaHcwfydbghcx2fgXIdlaAIdlg8U:tg8VNaeIdla8U:tg8WaXIdba8S:tg8XN:tg8Ya8YNa8WaXIdwaAIdwg8Z:tg80NaeIdwa8Z:tg8Wa8VN:tg81a81Na8Wa8XNaRa80N:tg80a80NMMg8V:rhBa8Yh8Xa80h8Wa81hRdna8VJbbbb9EgATmba8YaB:vh8Xa80aB:vh8Wa81aB:vhRkaIaOaacdtfydbgXc8S2fgeaRaB:rg8VaRNNg83aeIdbMUdbaea8Wa8Va8WNgUNg85aeIdlMUdlaea8Xa8Va8XNg86Ng87aeIdwMUdwaeaRaUNgUaeIdxMUdxaea86aRNg88aeIdzMUdzaea8Wa86Ng89aeIdCMUdCaeaRa8Va8Xa8ZNaRa8SNa8Ua8WNMM:mg8:Ng86NgRaeIdKMUdKaea8Wa86Ng8WaeId3MUd3aea8Xa86Ng8XaeIdaMUdaaea86a8:Ng86aeId8KMUd8Kaea8VaeIdyMUdyaIaOa8Fcdtfydbg8Fc8S2fgea83aeIdbMUdbaea85aeIdlMUdlaea87aeIdwMUdwaeaUaeIdxMUdxaea88aeIdzMUdzaea89aeIdCMUdCaeaRaeIdKMUdKaea8WaeId3MUd3aea8XaeIdaMUdaaea86aeId8KMUd8Kaea8VaeIdyMUdyaIaOahcdtfydbgac8S2fgea83aeIdbMUdbaea85aeIdlMUdlaea87aeIdwMUdwaeaUaeIdxMUdxaea88aeIdzMUdzaea89aeIdCMUdCaeaRaeIdKMUdKaea8WaeId3MUd3aea8XaeIdaMUdaaea86aeId8KMUd8Kaea8VaeIdyMUdydna8MTmbdnaATmba8YaB:vh8Ya80aB:vh80a81aB:vh81ka8MaXcltfgeaBJbbbZNgRa80Ng8VaeIdlMUdlaeaRa8YNg8WaeIdwMUdwaeaRa81Ng8XaeIdbMUdbaeaRa8S:ma81Na8Ua80N:ta8Za8YN:tNgRaeIdxMUdxa8Ma8Fcltfgea8VaeIdlMUdlaea8WaeIdwMUdwaea8XaeIdbMUdbaeaRaeIdxMUdxa8Maacltfgea8VaeIdlMUdlaea8WaeIdwMUdwaea8XaeIdbMUdbaeaRaeIdxMUdxkaHcxfhHaKcifgKad6mbkkdnalTmbJq;x8J88J;n;m;m89J:v:;;w8ZamczGEamc;abGEh80cbhHaOhXazhKaIhea8NhAindnaHaXydb9hmbaHh8FdnazTmbaKydbh8Fka80hRdnaqTmbJbbjZa80aqa8FfRbbclGEhRkaecxfg8Fa8FIdbJbbbbMUdbaeczfg8Fa8FIdbJbbbbMUdbaecCfg8Fa8FIdbJbbbbMUdbaeaRaecyfg8FIdbg8YNgRaeIdbMUdbaeclfgaaRaaIdbMUdbaecwfgaaRaaIdbMUdbaecKfgaaaIdbaAIdbg8WaRN:tUdbaAcwfIdbh8Vaec3fgaaaIdbaRaAclfIdbg8XN:tUdbaecafgaaaIdbaRa8VN:tUdbaec8KfgaIdbh81a8Fa8YaRMUdbaaa81aRa8Va8VNa8Wa8WNa8Xa8XNMMNMUdbkaXclfhXaKclfhKaec8SfheaAcxfhAalaHcefgH9hmbkkdnadTmbcbh8Aabhainaba8Acdtfh8FcbhHinaYa8FaHc:G:G:cjbfydbcdtfydbgAfRbbhedndnaYaaaHfydbgXfRbbgKc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaKcufcFeGce0mba5aXcdtfydbaA9hmekdnaecufcFeGce0mba8EaAcdtfydbaX9hmekJbbacJbbacJbbbZaecFeGceSEaKcFeGceSEhUdna8Na8FaHc:K:G:cjbfydbcdtfydbcx2fgeIdwa8NaXcx2fgKIdwg86:tg8Sa8NaAcx2fghIdwa86:tg8Xa8XNahIdbaKIdbg8U:tg80a80NahIdlaKIdlg8Z:tg8Va8VNMMg81Na8Xa8Sa8XNaeIdba8U:tg83a80Na8VaeIdla8Z:tg85NMMg8WN:tg8Ya8YNa83a81Na80a8WN:tgRaRNa85a81Na8Va8WN:tg8Wa8WNMMgBJbbbb9ETmba8YaB:rgB:vh8Ya8WaB:vh8WaRaB:vhRkaUa81:rNgBa8Ya86NaRa8UNa8Za8WNMM:mg81Ng87a81Nh88a80a85Na8Va83N:tg81a81Na8Va8SNa8Xa85N:tg8Va8VNa8Xa83Na80a8SN:tg8Xa8XNMMg83:rh80a8Ya87Nh85a8Wa87Nh89aRa87Nh87a8WaBa8YNg8SNh8:a8SaRNhZaRaBa8WNgnNhca8Ya8SNh8Ya8WanNh8WaRaBaRNNh8Sdna83Jbbbb9ETmba81a80:vh81a8Xa80:vh8Xa8Va80:vh8VkaIaOaXcdtfydbc8S2fgeaeIdba8Sa8VaUa80:rNgRa8VNNMg80MUdbaea8Wa8XaRa8XNg8SNMg83aeIdlMUdlaea8Ya81aRa81Ng8WNMg8YaeIdwMUdwaeaca8Va8SNMg8SaeIdxMUdxaeaZa8Wa8VNMgUaeIdzMUdzaea8:a8Xa8WNMg8WaeIdCMUdCaea87a8VaRa81a86Na8Va8UNa8Za8XNMMg86:mNgRNMg8VaeIdKMUdKaea89a8XaRNMg8XaeId3MUd3aea85a81aRNMg81aeIdaMUdaaea88a86aRN:tgRaeId8KMUd8KaeaBaeIdyMUdyaIaOaAcdtfydbc8S2fgea80aeIdbMUdbaea83aeIdlMUdlaea8YaeIdwMUdwaea8SaeIdxMUdxaeaUaeIdzMUdzaea8WaeIdCMUdCaea8VaeIdKMUdKaea8XaeId3MUd3aea81aeIdaMUdaaeaRaeId8KMUd8KaeaBaeIdyMUdykaHclfgHcx9hmbkaacxfhaa8Acifg8Aad6mbkaCTmbcbhainJbbbbh80a8Nabaacdtfgeclfydbg8Fcx2fgHIdwa8Naeydbghcx2fgAIdwg8Z:tg8Va8VNaHIdbaAIdbg83:tg8Wa8WNaHIdlaAIdlg85:tg8Xa8XNMMg8Sa8Naecwfydbg8Acx2fgeIdwa8Z:tg8YNa8Va8YNa8WaeIdba83:tg81Na8XaeIdla85:tgBNMMgRa8VN:tJbbbbJbbjZa8Sa8Ya8YNa81a81NaBaBNMMg8UNaRaRN:tg86:va86Jbbbb9BEg86Nh88a8Ua8VNaRa8YN:ta86Nh89a8SaBNaRa8XN:ta86Nh8:a8Ua8XNaRaBN:ta86NhZa8Sa81NaRa8WN:ta86Nhna8Ua8WNaRa81N:ta86Nhca8WaBNa8Xa81N:tgRaRNa8Xa8YNa8VaBN:tgRaRNa8Va81Na8Wa8YN:tgRaRNMM:rJbbbZNhRa8PahaC2g8JcdtfhHa8Pa8AaC2gDcdtfhAa8Pa8FaC2g8KcdtfhXa8Z:mh9ca85:mhJa83:mh9eascjdfheaChKJbbbbhBJbbbbh86Jbbbbh8SJbbbbh8UJbbbbh8ZJbbbbh83Jbbbbh85Jbbbbh87JbbbbhUinaecwfaRa89aXIdbaHIdbg8Y:tg8XNa88aAIdba8Y:tg81NMg8VNUdbaeclfaRaZa8XNa8:a81NMg8WNUdbaeaRaca8XNana81NMg8XNUdbaecxfaRa9ca8VNaJa8WNa8Ya9ea8XNMMMg8YNUdbaRa8Va8WNNa8ZMh8ZaRa8Va8XNNa8UMh8UaRa8Wa8XNNa8SMh8SaRa8Ya8YNNaUMhUaRa8Va8YNNa87Mh87aRa8Wa8YNNa85Mh85aRa8Xa8YNNa83Mh83aRa8Va8VNNa86Mh86aRa8Wa8WNNaBMhBaRa8Xa8XNNa80Mh80aHclfhHaXclfhXaAclfhAaeczfheaKcufgKmbkagahc8S2fgea80aeIdbMUdbaeaBaeIdlMUdlaea86aeIdwMUdwaea8SaeIdxMUdxaea8UaeIdzMUdzaea8ZaeIdCMUdCaea83aeIdKMUdKaea85aeId3MUd3aea87aeIdaMUdaaeaUaeId8KMUd8KaeaRaeIdyMUdyaga8Fc8S2fgea80aeIdbMUdbaeaBaeIdlMUdlaea86aeIdwMUdwaea8SaeIdxMUdxaea8UaeIdzMUdzaea8ZaeIdCMUdCaea83aeIdKMUdKaea85aeId3MUd3aea87aeIdaMUdaaeaUaeId8KMUd8KaeaRaeIdyMUdyaga8Ac8S2fgea80aeIdbMUdbaeaBaeIdlMUdlaea86aeIdwMUdwaea8SaeIdxMUdxaea8UaeIdzMUdzaea8ZaeIdCMUdCaea83aeIdKMUdKaea85aeId3MUd3aea87aeIdaMUdaaeaUaeId8KMUd8KaeaRaeIdyMUdya8Ra8Jcltfh8FcbhHaChXina8FaHfgeascjdfaHfgAIdbaeIdbMUdbaeclfgKaAclfIdbaKIdbMUdbaecwfgKaAcwfIdbaKIdbMUdbaecxfgeaAcxfIdbaeIdbMUdbaHczfhHaXcufgXmbka8Ra8Kcltfh8FcbhHaChXina8FaHfgeascjdfaHfgAIdbaeIdbMUdbaeclfgKaAclfIdbaKIdbMUdbaecwfgKaAcwfIdbaKIdbMUdbaecxfgeaAcxfIdbaeIdbMUdbaHczfhHaXcufgXmbka8RaDcltfh8FcbhHaChXina8FaHfgeascjdfaHfgAIdbaeIdbMUdbaeclfgKaAclfIdbaKIdbMUdbaecwfgKaAcwfIdbaKIdbMUdbaecxfgeaAcxfIdbaeIdbMUdbaHczfhHaXcufgXmbkaacifgaad6mbkkcbhAdndnamcwGgTmbJbbbbh8ScbhScbh9hcbh9ixekcbhSa3cbyd1:H:cjbHjjjjbbh9iasc:Cefasyd;8egecdtfa9iBdbasaecefBd;8ecua9ialabadaOz:fjjjbgXcltaXcjjjjiGEcbyd1:H:cjbHjjjjbbh9hasc:Cefasyd;8egecdtfa9hBdbasaecefBd;8ea9haXa9ia8Nalz:gjjjbJFFuuh8SaXTmba9hheaXhHinaeIdbgRa8Sa8SaR9EEh8SaeclfheaHcufgHmbkaXhSkdnalTmbaLclfheaLydbhXaYhHalhKcbhAincbaeydbg8FaX9RaHRbbcpeGEaAfhAaHcefhHaeclfhea8FhXaKcufgKmbkaAce4hAkcuadaA9Rcifg6cx2a6c;v:Q;v:Qe0Ecbyd1:H:cjbHjjjjbbh9kasc:Cefasyd;8egecdtfa9kBdbasaecefBd;8ecua6cdta6cFFFFi0Ecbyd1:H:cjbHjjjjbbh0asc:Cefasyd;8egecdtfa0BdbasaecefBd;8ea3cbyd1:H:cjbHjjjjbbh9masc:Cefasyd;8egecdtfa9mBdbasaecefBd;8ealcbyd1:H:cjbHjjjjbbh9nasc:Cefasyd;8egecdtfa9nBdbasaecefBd;8eaxaxNayJbbjZamclGEgZaZN:vh87JbbbbhUdnadak9nmbdna6ci6mbaCclth9oa9kcwfh9pJbbbbh85JbbbbhUinascNefabadalaOz:cjjjbabh8Acbh9qcbh9rinaba9rcdtfhDcbheindnaOa8AaefydbgAcdtghfydbgXaOaDaec:W:G:cjbfydbcdtfydbgHcdtg8JfydbgKSmbaYaHfRbbgacv2aYaAfRbbg8FfRb;a:G:cjbg8La8Fcv2aafg8KRb;a:G:cjbg3VcFeGTmbdnaKaX9nmba8KRb;G:G:cjbcFeGmekdna8FcufcFeGce0mbaaTmba5ahfydbaH9hmekdna8FTmbaacufcFeGce0mba8Ea8JfydbaA9hmeka9ka9qcx2fgXaHaAa3cFeGgKEBdlaXaAaHaKEBdbaXaKa8LGcb9hBdwa9qcefh9qkaeclfgecx9hmbkdna9rcifg9rad9pmba8Acxfh8Aa9qcifa69nmekka9qTmdcbh8KinaIaOa9ka8Kcx2fghydbgKcdtgXfydbg8Ac8S2fgeIdwa8Nahydlg8Fcx2fgHIdwg8WNaeIdzaHIdbg8XNaeIdaMgRaRMMa8WNaeIdlaHIdlg8YNaeIdCa8WNaeId3MgRaRMMa8YNaeIdba8XNaeIdxa8YNaeIdKMgRaRMMa8XNaeId8KMMM:lhRJbbbbJbbjZaeIdyg8V:va8VJbbbb9BEh8VdndnahydwgDmbJFFuuh86xekJbbbbJbbjZaIaOa8Fcdtfydbc8S2fgeIdyg81:va81Jbbbb9BEaeIdwa8NaKcx2fgHIdwg81NaeIdzaHIdbg80NaeIdaMgBaBMMa81NaeIdlaHIdlgBNaeIdCa81NaeId3Mg81a81MMaBNaeIdba80NaeIdxaBNaeIdKMg81a81MMa80NaeId8KMMM:lNh86ka8VaRNhBdnaCTmbagaKc8S2fgAIdwa8WNaAIdza8XNaAIdaMgRaRMMa8WNaAIdla8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8Pa8FaC2gacdtfhHa8RaKaC2g8JcltfheaAIdyh81aChAinaHIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaHclfhHaeczfheaAcufgAmbkdndnaDmbJbbbbh8Vxekaga8Fc8S2fgAIdwa8NaKcx2fgeIdwg8XNaAIdzaeIdbg8YNaAIdaMg8Va8VMMa8XNaAIdlaeIdlg81NaAIdCa8XNaAId3Mg8Va8VMMa81NaAIdba8YNaAIdxa81NaAIdKMg8Va8VMMa8YNaAId8KMMMh8Va8Pa8JcdtfhHa8RaacltfheaAIdyh80aChAinaHIdbg8Wa8Wa80NaecxfIdba8XaecwfIdbNa8YaeIdbNa81aeclfIdbNMMMg8Wa8WM:tNa8VMh8VaHclfhHaeczfheaAcufgAmbka8V:lh8VkaBaR:lMhBa86a8VMh86dndndnaYaKfRbbc9:fPddbekaQaXfydbgXaKSmbaOa8Fcdtfydbh8Jindndna5aXcdtgafydbgecuSmbaOaecdtfydba8JSmekdna8EaafydbgecuSmbaOaecdtfydba8JSmeka8FhekagaXc8S2fgAIdwa8Naecx2fgHIdwg8WNaAIdzaHIdbg8XNaAIdaMgRaRMMa8WNaAIdlaHIdlg8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8PaeaC2cdtfhHa8RaXaC2cltfheaAIdyh81aChAinaHIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaHclfhHaeczfheaAcufgAmbkaBaR:lMhBaQaafydbgXaK9hmbkkaYa8FfRbbci9hmeaDTmeaQa8FcdtfydbgXa8FSmeindndna5aXcdtgafydbgecuSmbaOaecdtfydba8ASmekdna8EaafydbgecuSmbaOaecdtfydba8ASmekaKhekagaXc8S2fgAIdwa8Naecx2fgHIdwg8WNaAIdzaHIdbg8XNaAIdaMgRaRMMa8WNaAIdlaHIdlg8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8PaeaC2cdtfhHa8RaXaC2cltfheaAIdyh81aChAinaHIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaHclfhHaeczfheaAcufgAmbka86aR:lMh86aQaafydbgXa8F9hmbxdkkdna8Ea5a5aXfydba8FSEaQaXfydbgacdtfydbgXcu9hmbaQa8FcdtfydbhXkagaac8S2fgAIdwa8NaXcx2fgeIdwg8WNaAIdzaeIdbg8XNaAIdaMgRaRMMa8WNaAIdlaeIdlg8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8PaXaC2g8AcdtfhHa8RaaaC2g8JcltfheaAIdyh81aChAinaHIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaHclfhHaeczfheaAcufgAmbkdndnaDmbJbbbbh8VxekagaXc8S2fgAIdwa8Naacx2fgeIdwg8XNaAIdzaeIdbg8YNaAIdaMg8Va8VMMa8XNaAIdlaeIdlg81NaAIdCa8XNaAId3Mg8Va8VMMa81NaAIdba8YNaAIdxa81NaAIdKMg8Va8VMMa8YNaAId8KMMMh8Va8Pa8JcdtfhHa8Ra8AcltfheaAIdyh80aChAinaHIdbg8Wa8Wa80NaecxfIdba8XaecwfIdbNa8YaeIdbNa81aeclfIdbNMMMg8Wa8WM:tNa8VMh8VaHclfhHaeczfheaAcufgAmbka8V:lh8VkaBaR:lMhBa86a8VMh86kaha86aBa86aB9DgeEUdwahaKa8FaeaDcb9hGgeEBdlaha8FaKaeEBdba8Kcefg8Ka9q9hmbkascjdfcbcj;qbz:tjjjb8Aa9phea9qhHinascjdfaeydbcA4cF8FGgAcFAaAcFA6EcdtfgAaAydbcefBdbaecxfheaHcufgHmbkcbhecbhHinascjdfaefgAydbhXaAaHBdbaXaHfhHaeclfgecj;qb9hmbkcbhea9phHinascjdfaHydbcA4cF8FGgAcFAaAcFA6EcdtfgAaAydbgAcefBdba0aAcdtfaeBdbaHcxfhHa9qaecefge9hmbkadak9RgAci9Uh9sdnalTmbcbhea9mhHinaHaeBdbaHclfhHalaecefge9hmbkkcbh9ta9ncbalz:tjjjbh3aAcO9Uh9ua9sce4h9rcbh8Lcbh8Kdnina9ka0a8Kcdtfydbcx2fg8JIdwgRa879Emea8La9s9pmeJFFuuh8Vdna9ra9q9pmba9ka0a9rcdtfydbcx2fIdwJbb;aZNh8VkdnaRa8V9ETmbaRaU9ETmba8La9u0mdkdna3aOa8JydlgDcdtg9vfg8AydbgAfg9wRbba3aOa8Jydbghcdtg9xfydbgefg9yRbbVmbaYahfRbbh9zdndnaLaecdtfgHclfydbgXaHydbgHSmbaXaH9RhXa8NaAcx2fh8Fa8Naecx2fhaaEaHcitfheindna9maeydbcdtfydbgHaASmba9maeclfydbcdtfydbgKaASmbaHaKSmba8NaKcx2fgKIdba8NaHcx2fgHIdbg8W:tgRaaIdlaHIdlg8X:tg80NaKIdla8X:tg8VaaIdba8W:tgBN:tg8YaRa8FIdla8X:tg86Na8Va8FIdba8W:tg8UN:tg8XNa8VaaIdwaHIdwg81:tg8ZNaKIdwa81:tg8Wa80N:tg80a8Va8FIdwa81:tg83Na8Wa86N:tg8VNa8WaBNaRa8ZN:tg81a8Wa8UNaRa83N:tgRNMMa8Ya8YNa80a80Na81a81NMMa8Xa8XNa8Va8VNaRaRNMMN:rJbbj8:N9FmikaecwfheaXcufgXmbkkdndndndna9zc9:fPdebdkahheina8AydbhAdndna5aecdtgHfydbgecuSmbaOaecdtfydbaASmekdna8EaHfydbgecuSmbaOaecdtfydbaASmekaDheka9maHfaeBdbaQaHfydbgeah9hmbxikkdna8Ea5a5a9xfydbaDSEaQa9xfydbghcdtfydbgecu9hmbaQa9vfydbheka9ma9xfaDBdbaehDka9mahcdtfaDBdbka9yce86bba9wce86bba8JIdwgRaUaUaR9DEhUa9tcefh9tcecda9zceSEa8Lfh8Lxeka9rcefh9rka8Kcefg8Ka9q9hmbkka9tTmddnalTmbcbh8Fcbhhindna9mahcdtgefydbgAahSmbaOaAcdtfydbh8AdnahaOaefydb9hg8JmbaIa8Ac8S2fgeaIahc8S2fgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdya8MTmba8Ma8Acltfgea8MahcltfgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxkaCTmbagaAc8S2fgeagahc8S2gDfgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdya9oaA2haa8RhHaChXinaHaafgeaHa8FfgAIdbaeIdbMUdbaeclfgKaAclfIdbaKIdbMUdbaecwfgKaAcwfIdbaKIdbMUdbaecxfgeaAcxfIdbaeIdbMUdbaHczfhHaXcufgXmbka8JmbJbbbbJbbjZaIaDfgeIdygR:vaRJbbbb9BEaeIdwa8Na8Acx2fgHIdwgRNaeIdzaHIdbg8VNaeIdaMg8Wa8WMMaRNaeIdlaHIdlg8WNaeIdCaRNaeId3MgRaRMMa8WNaeIdba8VNaeIdxa8WNaeIdKMgRaRMMa8VNaeId8KMMM:lNgRa85a85aR9DEh85ka8Fa9ofh8Fahcefghal9hmbkcbhHa5heindnaeydbgAcuSmbdnaHa9maAcdtgXfydbgA9hmbcuhAa5aXfydbgXcuSmba9maXcdtfydbhAkaeaABdbkaeclfhealaHcefgH9hmbkcbhHa8EheindnaeydbgAcuSmbdnaHa9maAcdtgXfydbgA9hmbcuhAa8EaXfydbgXcuSmba9maXcdtfydbhAkaeaABdbkaeclfhealaHcefgH9hmbkka85aUaCEh85cbhHabhecbhAindnaOa9maeydbcdtfydbg8FcdtfydbgXaOa9maeclfydbcdtfydbgacdtfydbgKSmbaXaOa9maecwfydbcdtfydbg8AcdtfydbghSmbaKahSmbabaHcdtfgXa8FBdbaXcwfa8ABdbaXclfaaBdbaHcifhHkaecxfheaAcifgAad6mbkdndnaTmbaHhdxekdnaHak0mbaHhdxekdna8Sa859FmbaHhdxekJFFuuh8ScbhdabhecbhAindna9ha9iaeydbgXcdtfydbcdtfIdbgRa859ETmbaeclf8Pdbh9AabadcdtfgKaXBdbaKclfa9A83dbaRa8Sa8SaR9EEh8SadcifhdkaecxfheaAcifgAaH6mbkkadak0mbxdkkascNefabadalaOz:cjjjbkdndnadak0mbadhaxekdnaTmbadhaxekdna8Sa879FmbadhaxekcehKina8SJbb;aZNgRa87aRa879DEh8WJbbbbhRdnaSTmba9hheaShHinaeIdbg8VaRa8Va8W9FEaRa8VaR9EEhRaeclfheaHcufgHmbkkJFFuuh8ScbhaabhecbhHindna9ha9iaeydbgAcdtfydbcdtfIdbg8Va8W9ETmbaeclf8Pdbh9AabaacdtfgXaABdbaXclfa9A83dba8Va8Sa8Sa8V9EEh8SaacifhakaecxfheaHcifgHad6mbkdnaKaaad9hVceGmbadhaxdkaRaUaUaR9DEhUaaak9nmecbhKaahda8Sa879FmbkkdnamcjjjjdGTmba9ncbalz:tjjjbh8AdnaaTmbabheaahHina8AaeydbgAfce86bba8AaOaAcdtfydbfce86bbaeclfheaHcufgHmbkkascNefabaaalaOz:cjjjbdndnalTmbcbhXindna8AaXfRbbTmbdnaYaXfRbbgecl0mbceaetcQGmekdnaOaXcdtg8FfydbgeaXSmba8NaXcx2fgHa8Naecx2fgeydwBdwaHae8Pdb83dbxekaIaXc8S2fgKIdygcacJL:3;rUNgRMh87aKIdwg9BaRMh8SaKIdlg9CaRMh8UaKIdbg9DaRMh81aKIdag9EaRa8NaXcx2fg8JIdwg88N:th8ZaKId3g9FaRa8JIdlg89N:th83aKIdKg9Ga8JIdbg8:aRN:th80JbbbbhnaKIdCg9HJbbbbMh85aKIdzg9IJbbbbMhBaKIdxg9JJbbbbMh86dndnaCTmbaXhAinJbbbba87agaAc8S2fgHIdygR:vaRJbbbb9BEhRa8RaAaC2cltfheaHIdaa87Na8ZMh8ZaHId3a87Na83Mh83aHIdKa87Na80Mh80aHIdCa87Na85Mh85aHIdza87NaBMhBaHIdxa87Na86Mh86aHIdwa87Na8SMh8SaHIdla87Na8UMh8UaHIdba87Na81Mh81aChHina8ZaecwfIdbg8VaecxfIdbg8YNaRN:th8Za83aeclfIdbg8Wa8YNaRN:th83a85a8Wa8VNaRN:th85a81aeIdbg8Xa8XNaRN:th81a80a8Xa8YNaRN:th80aBa8Xa8VNaRN:thBa86a8Xa8WNaRN:th86a8Sa8Va8VNaRN:th8Sa8Ua8Wa8WNaRN:th8UaeczfheaHcufgHmbkaQaAcdtfydbgAaX9hmbka8MTmba8MaXcltfgeIdxhxaeIdwh9caeIdlhJaeIdbhRxekJbbbbhxJbbbbh9cJbbbbhJJbbbbhRkaBa81:vg8Wa80Na8Z:ta85aBa86a81:vg8VN:tg8Za8Ua86a8VN:tg8Y:vg8Xa8Va80Na83:tg8UN:th83a9caRa8WN:taJaRa8VN:tg86a8XN:tg85a8SaBa8WN:ta8Za8XN:tgB:vg8S:mh8Za86a8Y:vg9c:mhJdnJbbbbaRaRa81:vg9eN:ta86a9cN:ta85a8SN:tg86:la87J:983:g81NgR9ETmba8Za83NaJa8UNa9ea80Nax:tMMa86:vhnka81:laR9ETmba8Y:laR9ETmbaB:laR9ETmba9e:manNa8W:ma8ZanNa83aB:vMgBNa8V:maJanNa8X:maBNa8Ua8Y:vMMg85Na80:ma81:vMMMh87aLa8FfgeclfydbgHaeydbge9RhhaEaecitfh8FJbbbbhRdnaHaeSgDmbJbbbbhRa8FheahhAina8Naeclfydbcx2fgHIdwa88:tg8Va8VNaHIdba8::tg8Va8VNaHIdla89:tg8Va8VNMMg8Va8Naeydbcx2fgHIdwa88:tg8Wa8WNaHIdba8::tg8Wa8WNaHIdla89:tg8Wa8WNMMg8WaRaRa8W9DEgRaRa8V9DEhRaecwfheaAcufgAmbkaR:rgRaRNhRkaBa88:tg8Va8VNa87a8::tg8Va8VNa85a89:tg8Va8VNMMaR9EmbaKId8KhndnaDmbina8Na8Fclfydbcx2fgeIdba8Na8Fydbcx2fgHIdbg8W:tgRa89aHIdlg8X:tg80NaeIdla8X:tg8Va8:a8W:tg86N:tg8YaRa85a8X:tg8SNa8Va87a8W:tg8UN:tg8XNa8Va88aHIdwg81:tg8ZNaeIdwa81:tg8Wa80N:tg80a8VaBa81:tg83Na8Wa8SN:tg8VNa8Wa86NaRa8ZN:tg81a8Wa8UNaRa83N:tgRNMMa8Ya8YNa80a80Na81a81NMMa8Xa8XNa8Va8VNaRaRNMMN:rJbbj8:N9Fmda8Fcwfh8FahcufghmbkkJbbbbJbbjZac:vacJbbbb9BEgRa9BaBNa9Ia87Na9EMg8Va8VMMaBNa9Ca85Na9HaBNa9FMg8Va8VMMa85Na9Da87Na9Ja85Na9GMg8Va8VMMa87NanMMM:lNaRa9Ba88Na9Ia8:Na9EMg8Va8VMMa88Na9Ca89Na9Ha88Na9FMg8Va8VMMa89Na9Da8:Na9Ja89Na9GMg8Va8VMMa8:NanMMM:lNJbb;aZNJ:983:g81M9Emba8JaBUdwa8Ja85Udla8Ja87UdbkaXcefgXal9hmbkdnaCmbcbhCxdkcbhXindna8AaXfRbbTmbaOaXcdtgefydbaX9hmbaYaXfhhaQaefh8Ja8NaXcx2fhAa8PaXaC2cdtfhDcbhEincuhLdnahRbbci9hmbaXhLa8JydbgeaXSmba8PaEcdtgHfhKaDaHfIdbhRaXhLinaLhHcuhLdnaKaeaC2cdtfIdbaR9CmbaHcuSmbaHhLagaec8S2fIdyagaHc8S2fIdy9ETmbaehLkaQaecdtfydbgeaX9hmbkka8PaEcdtfhKa8RaEcltfh8FaXheinaKaeaC2cdtfJbbbbJbbjZagaeaLaLcuSEgHc8S2fIdygR:vaRJbbbb9BEa8FaHaC2cltfgHIdwaAIdwNaHIdbaAIdbNaHIdlaAIdlNMMaHIdxMNUdbaQaecdtfydbgeaX9hmbkaEcefgEaC9hmbkkaXcefgXal9hmbxdkkaCmbcbhCkaiavaoarawaCala8Na8Pazasayasc1efaYa8Aaqz:hjjjbkdnamcjjjjlGTmbazmbaaTmbabhecbhLinaYaeydbgAfRbbc3thQaecwfgXydbhHcjjjj94hCdna5aAcdtgEfydbaeclfgKydbgOSmbcjjjj94cba8EaOcdtfydbaASEhCkaeaQaCVaAVBdbaYaOfRbbc3th8Fcjjjj94hCcjjjj94hQdna5aOcdtfydbaHSmbcjjjj94cba8EaHcdtfydbaOSEhQkaKa8FaQVaOVBdbaYaHfRbbc3thOdna5aHcdtfydbaASmbcjjjj94cba8EaEfydbaHSEhCkaXaOaCVaHVBdbaecxfheaLcifgLaa6mbkkdnazTmbaaTmbaaheinabazabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPaZaU:rNUdbkdnasyd;8egHTmbaHcdtasc:Ceffc98fheinaeydbcbyd:m:H:cjbH:bjjjbbaec98fheaHcufgHmbkkascj;sbf8Kjjjjbaak;Yieouabydlhvabydbclfcbaicdtz:tjjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk:todDue99aicd4aifhrcehwinawgDcethwaDar6mbkcuaDcdtgraDcFFFFi0Ecbyd1:H:cjbHjjjjbbhwaoaoyd9GgqcefBd9GaoaqcdtfawBdbawcFearz:tjjjbhkdnaiTmbalcd4hlaDcufhxcbhminamhDdnavTmbavamcdtfydbhDkcbadaDal2cdtfgDydlgwawcjjjj94SEgwcH4aw7c:F:b:DD2cbaDydbgwawcjjjj94SEgwcH4aw7c;D;O:B8J27cbaDydwgDaDcjjjj94SEgDcH4aD7c:3F;N8N27axGhwamcdthPdndndnavTmbakawcdtfgrydbgDcuSmeadavaPfydbal2cdtfgsIdbhzcehqinaqhrdnadavaDcdtfydbal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmlkarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbxdkkakawcdtfgrydbgDcuSmbadamal2cdtfgsIdbhzcehqinaqhrdnadaDal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmikarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbkkaramBdbamhDkabaPfaDBdbamcefgmai9hmbkkakcbyd:m:H:cjbH:bjjjbbaoaoyd9GcufBd9GdnaeTmbaiTmbcbhDaehwinawaDBdbawclfhwaiaDcefgD9hmbkcbhDaehwindnaDabydbgrSmbawaearcdtfgrydbBdbaraDBdbkabclfhbawclfhwaiaDcefgD9hmbkkk;:odvuv998Jjjjjbca9Rgocbyd1:G:cjbBdKaocb8Pdj:G:cjb83izaocbydN:G:cjbBdwaocb8Pd:m:G:cjb83ibdnadTmbaicd4hrdnabmbdnalTmbcbhwinaealawcdtfydbar2cdtfhDcbhiinaoczfaifgqaDaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkawcefgwad9hmbxikkarcdthwcbhDincbhiinaoczfaifgqaeaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkaeawfheaDcefgDad9hmbxdkkdnalTmbcbhwinabawcx2fgiaealawcdtfydbar2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinaoczfaifgqaDaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkawcefgwad9hmbxdkkarcdthlcbhwaehDinabawcx2fgiaeawar2cdtfgqIdbUdbaiaqIdlUdlaiaqIdwUdwcbhiinaoczfaifgqaDaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkaDalfhDawcefgwad9hmbkkJbbbbaoIdbaoIdzgx:tgkakJbbbb9DEgkaoIdlaoIdCgm:tgPaPak9DEgkaoIdwaoIdKgP:tgsasak9DEhsdnabTmbadTmbJbbbbJbbjZas:vasJbbbb9BEhkinabakabIdbax:tNUdbabclfgoakaoIdbam:tNUdbabcwfgoakaoIdbaP:tNUdbabcxfhbadcufgdmbkkdnavTmbavaPUdwavamUdlavaxUdbkask:WlewudnaeTmbcbhvabhoinaoavBdbaoclfhoaeavcefgv9hmbkkdnaiTmbcbhrinadarcdtfhwcbhDinalawaDcdtgvyd:G:G:cjbcdtfydbcdtfydbhodnalawavfydbcdtfydbgqabaqcdtfgkydbgvSmbinakabavgqcdtfgxydbgvBdbaxhkaqav9hmbkkdnaoabaocdtfgkydbgvSmbinakabavgocdtfgxydbgvBdbaxhkaoav9hmbkkdnaqaoSmbabaqaoaqao0Ecdtfaqaoaqao6EBdbkaDcefgDci9hmbkarcifgrai6mbkkdnaembcbskcbhxindnalaxcdtgvfydbax9hmbaxhodnaxabavfgDydbgvSmbaDhqinaqabavgocdtfgkydbgvBdbakhqaoav9hmbkkaDaoBdbkaxcefgxae9hmbkcbhkabhvcbhoindndnaoalydbgq9hmbdnaoavydbgq9hmbavakBdbakcefhkxdkavabaqcdtfydbBdbxekavabaqcdtfydbBdbkalclfhlavclfhvaeaocefgo9hmbkakk;jiilud99euabcbaecltz:tjjjbhvdnalTmbadhoaihralhwinarcwfIdbhDarclfIdbhqavaoydbcltfgkarIdbakIdbMUdbakaqakIdlMUdlakaDakIdwMUdwakakIdxJbbjZMUdxaoclfhoarcxfhrawcufgwmbkkdnaeTmbavhkaehrinakcxfgoIdbhDaocbBdbakakIdbJbbbbJbbjZaD:vaDJbbbb9BEgDNUdbakclfgoaDaoIdbNUdbakcwfgoaDaoIdbNUdbakczfhkarcufgrmbkkdnalTmbinavadydbcltfgkaicwfIdbakIdw:tgDaDNaiIdbakIdb:tgDaDNaiclfIdbakIdl:tgDaDNMMgDakIdxgqaqaD9DEUdxadclfhdaicxfhialcufglmbkkdnaeTmbavcxfhkinabakIdbUdbakczfhkabclfhbaecufgembkkk:moerudnaoTmbaecd4hzdnavTmbaicd4hHavcdthOcbhAindnaPaAfRbbTmbaAhednaDTmbaDaAcdtfydbhekdnasTmbasaefRbbceGmekdnamaAfRbbclSmbabaeaz2cdtfgiaraAcx2fgCIdbakNaxIdbMUdbaiaCIdlakNaxIdlMUdlaiaCIdwakNaxIdwMUdwkadaeaH2cdtfhXaqheawhiavhCinaXaeydbcdtgQfaiIdbalaQfIdb:vUdbaeclfheaiclfhiaCcufgCmbkkawaOfhwaAcefgAao9hmbxdkkdnasmbcbheaDhiindnaPaefRbbTmbaehCdnaDTmbaiydbhCkamaefRbbclSmbabaCaz2cdtfgCarIdbakNaxIdbMUdbaCarclfIdbakNaxIdlMUdlaCarcwfIdbakNaxIdwMUdwkaiclfhiarcxfhraoaecefge9hmbxdkkdnaDTmbindnaPRbbTmbasaDydbgefRbbceGmbamRbbclSmbabaeaz2cdtfgearIdbakNaxIdbMUdbaearclfIdbakNaxIdlMUdlaearcwfIdbakNaxIdwMUdwkaPcefhPaDclfhDamcefhmarcxfhraocufgombxdkkazcdthicbheindnaPaefRbbTmbasaefRbbceGmbamaefRbbclSmbabarIdbakNaxIdbMUdbabclfarclfIdbakNaxIdlMUdbabcwfarcwfIdbakNaxIdwMUdbkarcxfhrabaifhbaoaecefge9hmbkkk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbkRbababaeadaialavaoarawaDaqakaxcjjjjdVamz:bjjjbk:g8Koque99due99duq998Jjjjjbc;Wb9Rgq8Kjjjjbcbhkaqcxfcbc;Kbz:tjjjb8Aaqcualcx2alc;v:Q;v:Qe0Ecbyd1:H:cjbHjjjjbbgxBdxaqceBd2axaialavcbcbz:ejjjb8AaqcualcdtalcFFFFi0Egmcbyd1:H:cjbHjjjjbbgiBdzaqcdBd2dndnJFF959eJbbjZawJbbjZawJbbjZ9DE:vawJ9VO:d869DEgw:lJbbb9p9DTmbaw:OhPxekcjjjj94hPkadci9Uhsarco9UhzdndnaombaPcd9imekdnalTmbaPcuf:YhwdnaoTmbcbhvaihHaxhOindndnaoavfRbbceGTmbavcjjjjlVhAxekdndnaOclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcqthAdndnaOcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXVhAdndnaOIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXcCtVhAkaHaABdbaHclfhHaOcxfhOalavcefgv9hmbxdkkaxhvaihOalhHindndnavIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcCthAdndnavclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcqtaAVhAdndnavcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaOaAaXVBdbavcxfhvaOclfhOaHcufgHmbkkadTmbcbhkaehvcbhOinakaiavclfydbcdtfydbgHaiavcwfydbcdtfydbgA9haiavydbcdtfydbgXaH9haXaA9hGGfhkavcxfhvaOcifgOad6mbkkarci9UhQdndnaz:Z:rJbbbZMgw:lJbbb9p9DTmbaw:Ohvxekcjjjj94hvkaQ:ZhLcbhKc:bwhzdninakaQ9pmeazaP9Rcd9imeavazcufgOavaO9iEaPcefavaP9kEhYdnalTmbaYcuf:YhwdnaoTmbcbhOaihHaxhvindndnaoaOfRbbceGTmbaOcjjjjlVhAxekdndnavclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcqthAdndnavcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXVhAdndnavIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXcCtVhAkaHaABdbaHclfhHavcxfhvalaOcefgO9hmbxdkkaxhvaihOalhHindndnavIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcCthAdndnavclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcqtaAVhAdndnavcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaOaAaXVBdbavcxfhvaOclfhOaHcufgHmbkkcbhOdnadTmbaehvcbhHinaOaiavclfydbcdtfydbgAaiavcwfydbcdtfydbgX9haiavydbcdtfydbgraA9haraX9hGGfhOavcxfhvaHcifgHad6mbkkdnas:ZgCaL:taY:Ygwaz:Y:tg8ANak:ZgEaO:Zg3:tNaEaL:tawaP:Y:tg5Na3aC:tNMg8EJbbbb9BmbaCaE:ta5a8Aa3aL:tNNNa8E:vawMhwkdndnaOaQ0mbaOhkaYhPxekaOhsaYhzkdndnaKcl0mbdnawJbbbZMgw:lJbbb9p9DTmbaw:Ohvxdkcjjjj94hvxekaPazfcd9ThvkaKcefgKcs9hmbkkdndndnakmbJbbjZhwcbhOcdhvaDmexdkalcd4alfhHcehOinaOgvcethOavaH6mbkcbhOaqcuavcdtgYavcFFFFi0Ecbyd1:H:cjbHjjjjbbgKBdCaqciBd2aqamcbyd1:H:cjbHjjjjbbgzBdKaqclBd2dndndndnalTmbaPcuf:YhwaoTmecbhOaihAaxhHindndnaoaOfRbbceGTmbaOcjjjjlVhXxekdndnaHclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcqthXdndnaHcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohrxekcjjjj94hrkaXarVhXdndnaHIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohrxekcjjjj94hrkaXarcCtVhXkaAaXBdbaAclfhAaHcxfhHalaOcefgO9hmbxikkaKcFeaYz:tjjjb8AcbhPcbhvxdkaxhOaihHalhAindndnaOIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcCthXdndnaOclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohrxekcjjjj94hrkarcqtaXVhXdndnaOcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohrxekcjjjj94hrkaHaXarVBdbaOcxfhOaHclfhHaAcufgAmbkkaKcFeaYz:tjjjbhravcufhocbhPcbhYindndndnaraiaYcdtgKfydbgAcm4aA7c:v;t;h;Ev2gvcs4av7aoGgHcdtfgXydbgOcuSmbcehvinaiaOcdtgOfydbaASmdaHavfhOavcefhvaraOaoGgHcdtfgXydbgOcu9hmbkkaXaYBdbaPhvaPcefhPxekazaOfydbhvkazaKfavBdbaYcefgYal9hmbkcuaPc8S2gOaPc;D;O;f8U0EhvkcbhXaqavcbyd1:H:cjbHjjjjbbgvBd3aqcvBd2avcbaOz:tjjjbhOdnadTmbaehiinaxaiclfydbgrcx2fgvIdbaxaiydbgocx2fgHIdbg3:tgCaxaicwfydbgYcx2fgAIdlaHIdlg8A:tgwNavIdla8A:tgEaAIdba3:tg8EN:tgLaLNaEaAIdwaHIdwg5:tg8FNavIdwa5:tgEawN:tgwawNaEa8ENaCa8FN:tgCaCNMMg8E:rhEJbbnnJbbjZazaocdtfydbgvazarcdtfydbgASavazaYcdtfydbgrSGgHEh8Fdna8EJbbbb9ETmbaLaE:vhLaCaE:vhCawaE:vhwkaOavc8S2fgvavIdbawa8FaE:rNgEawNNg8FMUdbavaCaEaCNgaNghavIdlMUdlavaLaEaLNg8ENggavIdwMUdwavawaaNgaavIdxMUdxava8EawNg8JavIdzMUdzavaCa8ENg8EavIdCMUdCavawaEaLa5Nawa3Na8AaCNMM:mg8ANg3NgwavIdKMUdKavaCa3NgCavId3MUd3avaLa3NgLavIdaMUdaava3a8ANg3avId8KMUd8KavaEavIdyMUdydnaHmbaOaAc8S2fgva8FavIdbMUdbavahavIdlMUdlavagavIdwMUdwavaaavIdxMUdxava8JavIdzMUdzava8EavIdCMUdCavawavIdKMUdKavaCavId3MUd3avaLavIdaMUdaava3avId8KMUd8KavaEavIdyMUdyaOarc8S2fgva8FavIdbMUdbavahavIdlMUdlavagavIdwMUdwavaaavIdxMUdxava8JavIdzMUdzava8EavIdCMUdCavawavIdKMUdKavaCavId3MUd3avaLavIdaMUdaava3avId8KMUd8KavaEavIdyMUdykaicxfhiaXcifgXad6mbkkcbhAaqcuaPcdtgvaPcFFFFi0Egicbyd1:H:cjbHjjjjbbgHBdaaqcoBd2aqaicbyd1:H:cjbHjjjjbbgiBd8KaqcrBd2aHcFeavz:tjjjbhYdnalTmbazhHinJbbbbJbbjZaOaHydbgXc8S2fgvIdygw:vawJbbbb9BEavIdwaxcwfIdbgwNavIdzaxIdbgCNavIdaMgLaLMMawNavIdlaxclfIdbgLNavIdCawNavId3MgwawMMaLNavIdbaCNavIdxaLNavIdKMgwawMMaCNavId8KMMM:lNhwdndnaYaXcdtgvfgXydbcuSmbaiavfIdbaw9ETmekaXaABdbaiavfawUdbkaHclfhHaxcxfhxalaAcefgA9hmbkkdndnaPmbJbbbbhwxekJbbbbhwinaiIdbgCawawaC9DEhwaiclfhiaPcufgPmbkaw:rhwkakcd4akfhOcehiinaigvcethiavaO6mbkcbhOaqcuavcdtgiavcFFFFi0Ecbyd1:H:cjbHjjjjbbgHBdyaHcFeaiz:tjjjbhXdnadTmbavcufhrcbhPcbhxindnazaeaxcdtfgvydbcdtfydbgiazavclfydbcdtfydbgOSmbaiazavcwfydbcdtfydbgvSmbaOavSmbaYavcdtfydbhAdndnaYaOcdtfydbgvaYaicdtfydbgi9pmbavaA9pmbaAhlaihoavhAxekdnaAai9pmbaAav9pmbaihlavhoxekavhlaAhoaihAkabaPcx2fgvaABdbavcwfaoBdbavclfalBdbdnaXaoc:3F;N8N2alc:F:b:DD27aAc;D;O:B8J27arGgOcdtfgvydbgicuSmbcehHinaHhvdnabaicx2fgiydbaA9hmbaiydlal9hmbaiydwaoSmikavcefhHaXaOavfarGgOcdtfgvydbgicu9hmbkkavaPBdbaPcefhPkaxcifgxad6mbkaPci2hOkcwhvaDTmekaDawUdbkavcdthvaqcxfc98fhiinaiavfydbcbyd:m:H:cjbH:bjjjbbavc98fgvmbkaqc;Wbf8KjjjjbaOk:3ldrue9:8Jjjjjbc;Wb9Rgr8Kjjjjbcbhwarcxfcbc;Kbz:tjjjb8AdnabaeSmbabaeadcdtzMjjjb8AkarcualcdtalcFFFFi0EgDcbyd1:H:cjbHjjjjbbgqBdxarceBd2aqcbaialavcbarcxfz:djjjbcualcx2alc;v:Q;v:Qe0Ecbyd1:H:cjbHjjjjbbhkarcxfaryd2gxcdtfakBdbaraxcefgmBd2akaialavcbcbz:ejjjb8AarcxfamcdtfaDcbyd1:H:cjbHjjjjbbgiBdbaraxcdfgvBd2arcxfavcdtfcuaialaeadaqz:fjjjbgecltaecjjjjiGEcbyd1:H:cjbHjjjjbbgqBdbaqaeaiakalz:gjjjbaxcifhkdnadTmbaoaoNhocbhwabhlcbheindnaqaialydbgvcdtfydbcdtfIdbao9ETmbalclf8PdbhPabawcdtfgDavBdbaDclfaP83dbawcifhwkalcxfhlaecifgead6mbkkdnakTmbaxcdtarcxffcwfhlinalydbcbyd:m:H:cjbH:bjjjbbalc98fhlakcufgkmbkkarc;Wbf8Kjjjjbawk:WCoDud99vue99vuv998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:tjjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd1:H:cjbHjjjjbbgqBdxawceBd2aqaeadaicbcbz:ejjjb8AawcuadcdtadcFFFFi0Egkcbyd1:H:cjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd1:H:cjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhCcbhXadhQcbhLinaeaCcufgiaeai9iEaPcefaeaP9kEhDdndnadTmbaDcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMgK:lJbbb9p9DTmbaK:OhYxekcjjjj94hYkaYcCthYdndnaiclfIdbaONJbbbZMgK:lJbbb9p9DTmbaK:Oh8Axekcjjjj94h8Aka8AcqtaYVhYdndnaicwfIdbaONJbbbZMgK:lJbbb9p9DTmbaK:Oh8Axekcjjjj94h8AkaeaYa8AVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:tjjjbhEcbh3cbh5indnaEaxa5cdtfydbgYcm4aY7c:v;t;h;Ev2gics4ai7aAGgmcdtfg8AydbgecuSmbaeaYSmbcehiinaEamaifaAGgmcdtfg8AydbgecuSmeaicefhiaeaY9hmbkka8AaYBdba3aecuSfh3a5cefg5ad9hmbxdkkazcFeasz:tjjjb8Acbh3kdnaQ:ZgKaH:taD:YgOaC:Y:tg8ENaX:Zg8Fa3:Zga:tNa8FaH:taOaP:Y:tghNaaaK:tNMggJbbbb9BmbaKa8F:taha8EaaaH:tNNNag:vaOMhOkaPaDa3ar0giEhPaXa3aiEhXdna3arSmbaDaCaiEgCaP9Rcd9imbdndnaLcl0mbdnaOJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPaCfcd9Theka3aQaiEhQaLcefgLcs9hmekkdndnaXmbcihicbhDxekcbhiawakcbyd1:H:cjbHjjjjbbg5BdKawclBd2aPcuf:YhKdndnadTmbaqhiaxheadhmindndnaiIdbaKNJbbbZMgO:lJbbb9p9DTmbaO:OhYxekcjjjj94hYkaYcCthYdndnaiclfIdbaKNJbbbZMgO:lJbbb9p9DTmbaO:Oh8Axekcjjjj94h8Aka8AcqtaYVhYdndnaicwfIdbaKNJbbbZMgO:lJbbb9p9DTmbaO:Oh8Axekcjjjj94h8AkaeaYa8AVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:tjjjbhEcbhDcbh3indndndnaEaxa3cdtgCfydbgYcm4aY7c:v;t;h;Ev2gics4ai7aAGgmcdtfg8AydbgecuSmbcehiinaxaecdtgefydbaYSmdamaifheaicefhiaEaeaAGgmcdtfg8Aydbgecu9hmbkka8Aa3BdbaDhiaDcefhDxeka5aefydbhika5aCfaiBdba3cefg3ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:tjjjb8AcbhDcbhekawaecbyd1:H:cjbHjjjjbbgeBd3awcvBd2aecbaiz:tjjjbh8Aavcd4hxdnadTmbdnalTmbaxcdthEa5hYaqhealhmadhAina8AaYydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaYclfhYaecxfheamaEfhmaAcufgAmbxdkka5hmaqheadhYina8Aamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaYcufgYmbkkdnaDTmba8AhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhYawcuaDcdtgCaDcFFFFi0Egicbyd1:H:cjbHjjjjbbgeBdaawcoBd2awaicbyd1:H:cjbHjjjjbbgEBd8KaecFeaCz:tjjjbh3dnadTmbaoJbbjZJbbjZaK:vaPceSENgOaONhKaxcdthxalheinaKaec;8:G:cjbalEgmIdwa8Aa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndna3aAcdtgifgmydbcuSmbaEaifIdbaO9ETmekamaYBdbaEaifaOUdbka5clfh5aqcxfhqaeaxfheadaYcefgY9hmbkkaba3aCzMjjjb8Acrhikaicdthiawcxfc98fheinaeaifydbcbyd:m:H:cjbH:bjjjbbaic98fgimbkkawc;Wbf8KjjjjbaDk:Pdidui99ducbhi8Jjjjjbca9Rglcbyd1:G:cjbBdKalcb8Pdj:G:cjb83izalcbydN:G:cjbBdwalcb8Pd:m:G:cjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:tjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;Bidqui998Jjjjjbc;Wb9Rgl8Kjjjjbalcxfcbc;Kbz:tjjjb8Aadcd4adfhvcehoinaogrcethoarav6mbkalcuarcdtgoarcFFFFi0Ecbyd1:H:cjbHjjjjbbgvBdxavcFeaoz:tjjjbhwdnadTmbaicd4hDarcufhqcbhkindndnawcbaeakaD2cdtfgrydlgiaicjjjj94SEgocH4ao7c:F:b:DD2cbarydbgxaxcjjjj94SEgocH4ao7c;D;O:B8J27cbarydwgmamcjjjj94SEgrcH4ar7c:3F;N8N27aqGgvcdtfgrydbgocuSmbam::hPai::hsax::hzcehiinaihrdnaeaoaD2cdtfgiIdbaz9CmbaiIdlas9CmbaiIdwaP9BmikarcefhiawavarfaqGgvcdtfgrydbgocu9hmbkkarakBdbakhokabakcdtfaoBdbakcefgkad9hmbkkalydxcbyd:m:H:cjbH:bjjjbbalc;Wbf8Kjjjjbk9teiucbcbyd:q:H:cjbgeabcifc98GfgbBd:q:H:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:H:cjbgeabcrfc94GfgbBd:q:H:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikTeeucbabcbyd:q:H:cjbge9Rcifc98GaefgbBd:q:H:cjbdnabZbcztge9nmbabae9RcFFifcz4nb8Akkk:Kedbcj:Gdk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbeeeeeebebbeeebeebbbbebebbbbbbbbbbbbbbbbbbc1:Hdkxebbbdbbb:G:qbb",F=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(typeof WebAssembly!="object")return{supported:!1};var n,B=WebAssembly.instantiate(K(E),{}).then(function(a){n=a.instance,n.exports.__wasm_call_ctors()});function K(a){for(var b=new Uint8Array(a.length),d=0;d<a.length;++d){var e=a.charCodeAt(d);b[d]=e>96?e-97:e>64?e-39:e+4}for(var h=0,d=0;d<a.length;++d)b[h++]=b[d]<60?F[b[d]]:(b[d]-60)*64+b[++d];return b.buffer.slice(0,h)}function c(a){if(!a)throw new Error("Assertion failed")}function k(a){return new Uint8Array(a.buffer,a.byteOffset,a.byteLength)}function u(a,b,d,e){var h=n.exports.sbrk,f=h(d*4),I=h(d*e*4),j=new Uint8Array(n.exports.memory.buffer);j.set(k(b),I),a(f,I,d,e*4),j=new Uint8Array(n.exports.memory.buffer);var y=new Uint32Array(d);return new Uint8Array(y.buffer).set(j.subarray(f,f+d*4)),h(f-h(0)),y}function x(a,b,d){var e=n.exports.sbrk,h=e(b.length*4),f=e(d*4),I=new Uint8Array(n.exports.memory.buffer),j=k(b);I.set(j,h);var y=a(f,h,b.length,d);I=new Uint8Array(n.exports.memory.buffer);var g=new Uint32Array(d);new Uint8Array(g.buffer).set(I.subarray(f,f+d*4)),e(h-e(0));for(var m=0;m<b.length;++m)b[m]=g[b[m]];return[g,y]}function C(a){for(var b=0,d=0;d<a.length;++d){var e=a[d];b=b<e?e:b}return b}function J(a,b,d,e,h,f,I,j,y){var g=n.exports.sbrk,m=g(4),N=g(d*4),M=g(h*f),l=g(d*4),t=new Uint8Array(n.exports.memory.buffer);t.set(k(e),M),t.set(k(b),l);var A=a(N,l,d,M,h,f,I,j,y,m);t=new Uint8Array(n.exports.memory.buffer);var H=new Uint32Array(A);k(H).set(t.subarray(N,N+A*4));var w=new Float32Array(1);return k(w).set(t.subarray(m,m+4)),g(m-g(0)),[H,w[0]]}function z(a,b,d,e,h,f,I,j,y,g,m,N,M){var l=n.exports.sbrk,t=l(4),A=l(d*4),H=l(h*f),w=l(h*j),U=l(y.length*4),v=l(d*4),r=g?l(h):0,i=new Uint8Array(n.exports.memory.buffer);i.set(k(e),H),i.set(k(I),w),i.set(k(y),U),i.set(k(b),v),g&&i.set(k(g),r);var X=a(A,v,d,H,h,f,w,j,U,y.length,r,m,N,M,t);i=new Uint8Array(n.exports.memory.buffer);var V=new Uint32Array(X);k(V).set(i.subarray(A,A+X*4));var S=new Float32Array(1);return k(S).set(i.subarray(t,t+4)),l(t-l(0)),[V,S[0]]}function T(a,b,d,e,h,f,I,j,y,g,m,N,M){var l=n.exports.sbrk,t=l(4),A=l(h*f),H=l(h*j),w=l(y.length*4),U=l(d*4),v=g?l(h):0,r=new Uint8Array(n.exports.memory.buffer);r.set(k(e),A),r.set(k(I),H),r.set(k(y),w),r.set(k(b),U),g&&r.set(k(g),v);var i=a(U,d,A,h,f,H,j,w,y.length,v,m,N,M,t);r=new Uint8Array(n.exports.memory.buffer),k(b).set(r.subarray(U,U+i*4)),k(e).set(r.subarray(A,A+h*f)),k(I).set(r.subarray(H,H+h*j));var X=new Float32Array(1);return k(X).set(r.subarray(t,t+4)),l(t-l(0)),[i,X[0]]}function W(a,b,d,e){var h=n.exports.sbrk,f=h(d*e),I=new Uint8Array(n.exports.memory.buffer);I.set(k(b),f);var j=a(f,d,e);return h(f-h(0)),j}function D(a,b,d,e,h,f,I,j){var y=n.exports.sbrk,g=y(j*4),m=y(d*e),N=h?y(d*f):0,M=new Uint8Array(n.exports.memory.buffer);M.set(k(b),m),h&&M.set(k(h),N);var l=a(g,m,d,e,N,f,I,j);M=new Uint8Array(n.exports.memory.buffer);var t=new Uint32Array(l);return k(t).set(M.subarray(g,g+l*4)),y(g-y(0)),t}function Y(a,b,d,e,h,f,I,j,y){var g=n.exports.sbrk,m=g(4),N=g(d*4),M=g(h*f),l=g(d*4),t=I?g(h):0,A=new Uint8Array(n.exports.memory.buffer);A.set(k(e),M),A.set(k(b),l),I&&A.set(k(I),t);var H=a(N,l,d,M,h,f,t,j,y,m);A=new Uint8Array(n.exports.memory.buffer);var w=new Uint32Array(H);k(w).set(A.subarray(N,N+H*4));var U=new Float32Array(1);return k(U).set(A.subarray(m,m+4)),g(m-g(0)),[w,U[0]]}function q(a,b,d,e,h,f,I){var j=n.exports.sbrk,y=j(d*4),g=j(h*f),m=j(d*4),N=new Uint8Array(n.exports.memory.buffer);N.set(k(e),g),N.set(k(b),m);var M=a(y,m,d,g,h,f,I);N=new Uint8Array(n.exports.memory.buffer);var l=new Uint32Array(M);return k(l).set(N.subarray(y,y+M*4)),j(y-j(0)),l}var R={LockBorder:1,Sparse:2,ErrorAbsolute:4,Prune:8,Regularize:16,Permissive:32,RegularizeLight:64,_InternalDebug:1<<30};return{ready:B,supported:!0,compactMesh:function(a){c(a instanceof Uint32Array||a instanceof Int32Array||a instanceof Uint16Array||a instanceof Int16Array),c(a.length%3==0);var b=a.BYTES_PER_ELEMENT==4?a:new Uint32Array(a),d=x(n.exports.meshopt_optimizeVertexFetchRemap,b,C(a)+1);if(a!==b)for(var e=0;e<b.length;++e)a[e]=b[e];return d},generatePositionRemap:function(a,b){return c(a instanceof Float32Array),c(a.length%b==0),c(b>=3),u(n.exports.meshopt_generatePositionRemap,a,a.length/b,b)},simplify:function(a,b,d,e,h,f){c(a instanceof Uint32Array||a instanceof Int32Array||a instanceof Uint16Array||a instanceof Int16Array),c(a.length%3==0),c(b instanceof Float32Array),c(b.length%d==0),c(d>=3),c(e>=0&&e<=a.length),c(e%3==0),c(h>=0);for(var I=0,j=0;j<(f?f.length:0);++j)c(f[j]in R),I|=R[f[j]];var y=a.BYTES_PER_ELEMENT==4?a:new Uint32Array(a),g=J(n.exports.meshopt_simplify,y,a.length,b,b.length/d,d*4,e,h,I);return g[0]=a instanceof Uint32Array?g[0]:new a.constructor(g[0]),g},simplifyWithAttributes:function(a,b,d,e,h,f,I,j,y,g){c(a instanceof Uint32Array||a instanceof Int32Array||a instanceof Uint16Array||a instanceof Int16Array),c(a.length%3==0),c(b instanceof Float32Array),c(b.length%d==0),c(d>=3),c(e instanceof Float32Array),c(e.length==h*(b.length/d)),c(h>=0),c(I==null||I instanceof Uint8Array),c(I==null||I.length==b.length/d),c(j>=0&&j<=a.length),c(j%3==0),c(y>=0),c(Array.isArray(f)),c(h>=f.length),c(f.length<=32);for(var m=0;m<f.length;++m)c(f[m]>=0);for(var N=0,m=0;m<(g?g.length:0);++m)c(g[m]in R),N|=R[g[m]];var M=a.BYTES_PER_ELEMENT==4?a:new Uint32Array(a),l=z(n.exports.meshopt_simplifyWithAttributes,M,a.length,b,b.length/d,d*4,e,h*4,new Float32Array(f),I,j,y,N);return l[0]=a instanceof Uint32Array?l[0]:new a.constructor(l[0]),l},simplifyWithUpdate:function(a,b,d,e,h,f,I,j,y,g){c(a instanceof Uint32Array||a instanceof Int32Array||a instanceof Uint16Array||a instanceof Int16Array),c(a.length%3==0),c(b instanceof Float32Array),c(b.length%d==0),c(d>=3),c(e instanceof Float32Array),c(e.length==h*(b.length/d)),c(h>=0),c(I==null||I instanceof Uint8Array),c(I==null||I.length==b.length/d),c(j>=0&&j<=a.length),c(j%3==0),c(y>=0),c(Array.isArray(f)),c(h>=f.length),c(f.length<=32);for(var m=0;m<f.length;++m)c(f[m]>=0);for(var N=0,m=0;m<(g?g.length:0);++m)c(g[m]in R),N|=R[g[m]];var M=a.BYTES_PER_ELEMENT==4?a:new Uint32Array(a),l=T(n.exports.meshopt_simplifyWithUpdate,M,a.length,b,b.length/d,d*4,e,h*4,new Float32Array(f),I,j,y,N);if(a!==M)for(var m=0;m<l[0];++m)a[m]=M[m];return l},getScale:function(a,b){return c(a instanceof Float32Array),c(a.length%b==0),c(b>=3),W(n.exports.meshopt_simplifyScale,a,a.length/b,b*4)},simplifyPoints:function(a,b,d,e,h,f){return c(a instanceof Float32Array),c(a.length%b==0),c(b>=3),c(d>=0&&d<=a.length/b),e?(c(e instanceof Float32Array),c(e.length%h==0),c(h>=3),c(a.length/b==e.length/h),D(n.exports.meshopt_simplifyPoints,a,a.length/b,b*4,e,h*4,f||0,d)):D(n.exports.meshopt_simplifyPoints,a,a.length/b,b*4,void 0,0,0,d)},simplifySloppy:function(a,b,d,e,h,f){c(a instanceof Uint32Array||a instanceof Int32Array||a instanceof Uint16Array||a instanceof Int16Array),c(a.length%3==0),c(b instanceof Float32Array),c(b.length%d==0),c(d>=3),c(e==null||e instanceof Uint8Array),c(e==null||e.length==b.length/d),c(h>=0&&h<=a.length),c(h%3==0),c(f>=0);var I=a.BYTES_PER_ELEMENT==4?a:new Uint32Array(a),j=Y(n.exports.meshopt_simplifySloppy,I,a.length,b,b.length/d,d*4,e,h,f);return j[0]=a instanceof Uint32Array?j[0]:new a.constructor(j[0]),j},simplifyPrune:function(a,b,d,e){c(a instanceof Uint32Array||a instanceof Int32Array||a instanceof Uint16Array||a instanceof Int16Array),c(a.length%3==0),c(b instanceof Float32Array),c(b.length%d==0),c(d>=3),c(e>=0);var h=a.BYTES_PER_ELEMENT==4?a:new Uint32Array(a),f=q(n.exports.meshopt_simplifyPrune,h,a.length,b,b.length/d,d*4,e);return f=a instanceof Uint32Array?f:new a.constructor(f),f}}})();self.onmessage=async E=>{const{id:F,positions:n,indices:B,attributes:K,stride:c,weights:k}=E.data;try{await O.ready;const u=Math.max(384,Math.floor(B.length*.08/3)*3),[x,C]=O.simplifyWithAttributes(B,n,3,K,c,k,null,u,.002,["LockBorder"]),J={id:F,indices:x,error:C*O.getScale(n,3)};self.postMessage(J,{transfer:[x.buffer]})}catch(u){self.postMessage({id:F,refusal:u instanceof Error?u.message:String(u)})}};