@babylonjs/viewer 7.41.0-alpha → 7.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (619) hide show
  1. package/configuration/configuration.d.ts +107 -0
  2. package/configuration/configuration.js +16 -0
  3. package/configuration/configuration.js.map +1 -0
  4. package/configuration/configurationCompatibility.d.ts +8 -0
  5. package/configuration/configurationCompatibility.js +66 -0
  6. package/configuration/configurationCompatibility.js.map +1 -0
  7. package/configuration/configurationContainer.d.ts +10 -0
  8. package/configuration/configurationContainer.js +10 -0
  9. package/configuration/configurationContainer.js.map +1 -0
  10. package/configuration/globals.d.ts +6 -0
  11. package/configuration/globals.js +18 -0
  12. package/configuration/globals.js.map +1 -0
  13. package/configuration/index.d.ts +2 -0
  14. package/configuration/index.js +4 -0
  15. package/configuration/index.js.map +1 -0
  16. package/configuration/interfaces/cameraConfiguration.d.ts +31 -0
  17. package/configuration/interfaces/cameraConfiguration.js +2 -0
  18. package/configuration/interfaces/cameraConfiguration.js.map +1 -0
  19. package/configuration/interfaces/colorGradingConfiguration.d.ts +81 -0
  20. package/configuration/interfaces/colorGradingConfiguration.js +2 -0
  21. package/configuration/interfaces/colorGradingConfiguration.js.map +1 -0
  22. package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +20 -0
  23. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +2 -0
  24. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +1 -0
  25. package/configuration/interfaces/environmentMapConfiguration.d.ts +22 -0
  26. package/configuration/interfaces/environmentMapConfiguration.js +2 -0
  27. package/configuration/interfaces/environmentMapConfiguration.js.map +1 -0
  28. package/configuration/interfaces/groundConfiguration.d.ts +24 -0
  29. package/configuration/interfaces/groundConfiguration.js +2 -0
  30. package/configuration/interfaces/groundConfiguration.js.map +1 -0
  31. package/configuration/interfaces/imageProcessingConfiguration.d.ts +45 -0
  32. package/configuration/interfaces/imageProcessingConfiguration.js +2 -0
  33. package/configuration/interfaces/imageProcessingConfiguration.js.map +1 -0
  34. package/configuration/interfaces/index.d.ts +15 -0
  35. package/configuration/interfaces/index.js +16 -0
  36. package/configuration/interfaces/index.js.map +1 -0
  37. package/configuration/interfaces/lightConfiguration.d.ts +60 -0
  38. package/configuration/interfaces/lightConfiguration.js +2 -0
  39. package/configuration/interfaces/lightConfiguration.js.map +1 -0
  40. package/configuration/interfaces/modelAnimationConfiguration.d.ts +26 -0
  41. package/configuration/interfaces/modelAnimationConfiguration.js +2 -0
  42. package/configuration/interfaces/modelAnimationConfiguration.js.map +1 -0
  43. package/configuration/interfaces/modelConfiguration.d.ts +65 -0
  44. package/configuration/interfaces/modelConfiguration.js +2 -0
  45. package/configuration/interfaces/modelConfiguration.js.map +1 -0
  46. package/configuration/interfaces/observersConfiguration.d.ts +5 -0
  47. package/configuration/interfaces/observersConfiguration.js +2 -0
  48. package/configuration/interfaces/observersConfiguration.js.map +1 -0
  49. package/configuration/interfaces/sceneConfiguration.d.ts +48 -0
  50. package/configuration/interfaces/sceneConfiguration.js +2 -0
  51. package/configuration/interfaces/sceneConfiguration.js.map +1 -0
  52. package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +23 -0
  53. package/configuration/interfaces/sceneOptimizerConfiguration.js +2 -0
  54. package/configuration/interfaces/sceneOptimizerConfiguration.js.map +1 -0
  55. package/configuration/interfaces/skyboxConfiguration.d.ts +21 -0
  56. package/configuration/interfaces/skyboxConfiguration.js +2 -0
  57. package/configuration/interfaces/skyboxConfiguration.js.map +1 -0
  58. package/configuration/interfaces/templateConfiguration.d.ts +67 -0
  59. package/configuration/interfaces/templateConfiguration.js +2 -0
  60. package/configuration/interfaces/templateConfiguration.js.map +1 -0
  61. package/configuration/interfaces/vrConfiguration.d.ts +16 -0
  62. package/configuration/interfaces/vrConfiguration.js +2 -0
  63. package/configuration/interfaces/vrConfiguration.js.map +1 -0
  64. package/configuration/loader.d.ts +4 -0
  65. package/configuration/loader.js +17 -0
  66. package/configuration/loader.js.map +1 -0
  67. package/configuration/mappers.d.ts +43 -0
  68. package/configuration/mappers.js +193 -0
  69. package/configuration/mappers.js.map +1 -0
  70. package/configuration/renderOnlyLoader.d.ts +33 -0
  71. package/configuration/renderOnlyLoader.js +162 -0
  72. package/configuration/renderOnlyLoader.js.map +1 -0
  73. package/configuration/types/default.d.ts +6 -0
  74. package/configuration/types/default.js +121 -0
  75. package/configuration/types/default.js.map +1 -0
  76. package/configuration/types/environmentMap.d.ts +5 -0
  77. package/configuration/types/environmentMap.js +14 -0
  78. package/configuration/types/environmentMap.js.map +1 -0
  79. package/configuration/types/extended.d.ts +6 -0
  80. package/configuration/types/extended.js +317 -0
  81. package/configuration/types/extended.js.map +1 -0
  82. package/configuration/types/index.d.ts +14 -0
  83. package/configuration/types/index.js +51 -0
  84. package/configuration/types/index.js.map +1 -0
  85. package/configuration/types/minimal.d.ts +6 -0
  86. package/configuration/types/minimal.js +43 -0
  87. package/configuration/types/minimal.js.map +1 -0
  88. package/configuration/types/renderOnlyDefault.d.ts +30 -0
  89. package/configuration/types/renderOnlyDefault.js +31 -0
  90. package/configuration/types/renderOnlyDefault.js.map +1 -0
  91. package/configuration/types/shadowLight.d.ts +9 -0
  92. package/configuration/types/shadowLight.js +64 -0
  93. package/configuration/types/shadowLight.js.map +1 -0
  94. package/helper/index.d.ts +29 -0
  95. package/helper/index.js +66 -0
  96. package/helper/index.js.map +1 -0
  97. package/index.d.ts +30 -0
  98. package/index.js +46 -0
  99. package/index.js.map +1 -0
  100. package/initializer.d.ts +11 -0
  101. package/initializer.js +35 -0
  102. package/initializer.js.map +1 -0
  103. package/interfaces.d.ts +5 -0
  104. package/interfaces.js +7 -0
  105. package/interfaces.js.map +1 -0
  106. package/labs/environmentSerializer.d.ts +126 -0
  107. package/labs/environmentSerializer.js +191 -0
  108. package/labs/environmentSerializer.js.map +1 -0
  109. package/labs/texture.d.ts +183 -0
  110. package/labs/texture.js +351 -0
  111. package/labs/texture.js.map +1 -0
  112. package/labs/viewerLabs.d.ts +51 -0
  113. package/labs/viewerLabs.js +134 -0
  114. package/labs/viewerLabs.js.map +1 -0
  115. package/loader/modelLoader.d.ts +56 -0
  116. package/loader/modelLoader.js +202 -0
  117. package/loader/modelLoader.js.map +1 -0
  118. package/loader/plugins/applyMaterialConfig.d.ts +12 -0
  119. package/loader/plugins/applyMaterialConfig.js +16 -0
  120. package/loader/plugins/applyMaterialConfig.js.map +1 -0
  121. package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +9 -0
  122. package/loader/plugins/extendedMaterialLoaderPlugin.js +16 -0
  123. package/loader/plugins/extendedMaterialLoaderPlugin.js.map +1 -0
  124. package/loader/plugins/index.d.ts +19 -0
  125. package/loader/plugins/index.js +44 -0
  126. package/loader/plugins/index.js.map +1 -0
  127. package/loader/plugins/loaderPlugin.d.ts +24 -0
  128. package/loader/plugins/loaderPlugin.js +2 -0
  129. package/loader/plugins/loaderPlugin.js.map +1 -0
  130. package/loader/plugins/msftLodLoaderPlugin.d.ts +12 -0
  131. package/loader/plugins/msftLodLoaderPlugin.js +21 -0
  132. package/loader/plugins/msftLodLoaderPlugin.js.map +1 -0
  133. package/loader/plugins/telemetryLoaderPlugin.d.ts +12 -0
  134. package/loader/plugins/telemetryLoaderPlugin.js +36 -0
  135. package/loader/plugins/telemetryLoaderPlugin.js.map +1 -0
  136. package/managers/observablesManager.d.ts +66 -0
  137. package/managers/observablesManager.js +35 -0
  138. package/managers/observablesManager.js.map +1 -0
  139. package/managers/sceneManager.d.ts +245 -0
  140. package/managers/sceneManager.js +1375 -0
  141. package/managers/sceneManager.js.map +1 -0
  142. package/managers/telemetryManager.d.ts +78 -0
  143. package/managers/telemetryManager.js +117 -0
  144. package/managers/telemetryManager.js.map +1 -0
  145. package/model/modelAnimation.d.ts +215 -0
  146. package/model/modelAnimation.js +237 -0
  147. package/model/modelAnimation.js.map +1 -0
  148. package/model/viewerModel.d.ts +233 -0
  149. package/model/viewerModel.js +673 -0
  150. package/model/viewerModel.js.map +1 -0
  151. package/optimizer/custom/extended.d.ts +13 -0
  152. package/optimizer/custom/extended.js +101 -0
  153. package/optimizer/custom/extended.js.map +1 -0
  154. package/optimizer/custom/index.d.ts +9 -0
  155. package/optimizer/custom/index.js +26 -0
  156. package/optimizer/custom/index.js.map +1 -0
  157. package/package.json +28 -19
  158. package/readme.md +28 -28
  159. package/renderOnlyIndex.d.ts +11 -0
  160. package/renderOnlyIndex.js +18 -0
  161. package/renderOnlyIndex.js.map +1 -0
  162. package/templating/eventManager.d.ts +35 -0
  163. package/templating/eventManager.js +66 -0
  164. package/templating/eventManager.js.map +1 -0
  165. package/templating/plugins/hdButtonPlugin.d.ts +9 -0
  166. package/templating/plugins/hdButtonPlugin.js +22 -0
  167. package/templating/plugins/hdButtonPlugin.js.map +1 -0
  168. package/templating/plugins/printButton.d.ts +9 -0
  169. package/templating/plugins/printButton.js +41 -0
  170. package/templating/plugins/printButton.js.map +1 -0
  171. package/templating/templateManager.d.ts +197 -0
  172. package/templating/templateManager.js +561 -0
  173. package/templating/templateManager.js.map +1 -0
  174. package/templating/viewerTemplatePlugin.d.ts +21 -0
  175. package/templating/viewerTemplatePlugin.js +69 -0
  176. package/templating/viewerTemplatePlugin.js.map +1 -0
  177. package/viewer/defaultViewer.d.ts +130 -0
  178. package/viewer/defaultViewer.js +672 -0
  179. package/viewer/defaultViewer.js.map +1 -0
  180. package/viewer/renderOnlyViewer.d.ts +9 -0
  181. package/viewer/renderOnlyViewer.js +46 -0
  182. package/viewer/renderOnlyViewer.js.map +1 -0
  183. package/viewer/viewer.d.ts +258 -0
  184. package/viewer/viewer.js +783 -0
  185. package/viewer/viewer.js.map +1 -0
  186. package/viewer/viewerManager.d.ts +58 -0
  187. package/viewer/viewerManager.js +91 -0
  188. package/viewer/viewerManager.js.map +1 -0
  189. package/viewer/viewerWithTemplate.d.ts +9 -0
  190. package/viewer/viewerWithTemplate.js +20 -0
  191. package/viewer/viewerWithTemplate.js.map +1 -0
  192. package/assets/photoStudio.env +0 -0
  193. package/dist/babylon-viewer.esm.js +0 -2
  194. package/dist/babylon-viewer.esm.js.map +0 -1
  195. package/dist/babylon-viewer.esm.min.js +0 -2
  196. package/dist/babylon-viewer.esm.min.js.map +0 -1
  197. package/dist/chunks/EXT_lights_ies-CFzvmxxg.esm.min.js +0 -2
  198. package/dist/chunks/EXT_lights_ies-CFzvmxxg.esm.min.js.map +0 -1
  199. package/dist/chunks/EXT_lights_ies-cyFdY7yl.esm.js +0 -84
  200. package/dist/chunks/EXT_lights_ies-cyFdY7yl.esm.js.map +0 -1
  201. package/dist/chunks/EXT_lights_image_based-BNmSqx40.esm.min.js +0 -2
  202. package/dist/chunks/EXT_lights_image_based-BNmSqx40.esm.min.js.map +0 -1
  203. package/dist/chunks/EXT_lights_image_based-CC48JVU0.esm.js +0 -171
  204. package/dist/chunks/EXT_lights_image_based-CC48JVU0.esm.js.map +0 -1
  205. package/dist/chunks/EXT_mesh_gpu_instancing-B2qj3kQu.esm.js +0 -86
  206. package/dist/chunks/EXT_mesh_gpu_instancing-B2qj3kQu.esm.js.map +0 -1
  207. package/dist/chunks/EXT_mesh_gpu_instancing-lanrAAoi.esm.min.js +0 -2
  208. package/dist/chunks/EXT_mesh_gpu_instancing-lanrAAoi.esm.min.js.map +0 -1
  209. package/dist/chunks/EXT_meshopt_compression-DjvHx7gJ.esm.js +0 -134
  210. package/dist/chunks/EXT_meshopt_compression-DjvHx7gJ.esm.js.map +0 -1
  211. package/dist/chunks/EXT_meshopt_compression-oH6HzGir.esm.min.js +0 -2
  212. package/dist/chunks/EXT_meshopt_compression-oH6HzGir.esm.min.js.map +0 -1
  213. package/dist/chunks/EXT_texture_avif-BYWETW7-.esm.min.js +0 -2
  214. package/dist/chunks/EXT_texture_avif-BYWETW7-.esm.min.js.map +0 -1
  215. package/dist/chunks/EXT_texture_avif-CKXEq29h.esm.js +0 -44
  216. package/dist/chunks/EXT_texture_avif-CKXEq29h.esm.js.map +0 -1
  217. package/dist/chunks/EXT_texture_webp-Dl4GPoEU.esm.min.js +0 -2
  218. package/dist/chunks/EXT_texture_webp-Dl4GPoEU.esm.min.js.map +0 -1
  219. package/dist/chunks/EXT_texture_webp-fAiSgaNl.esm.js +0 -43
  220. package/dist/chunks/EXT_texture_webp-fAiSgaNl.esm.js.map +0 -1
  221. package/dist/chunks/ExtrasAsMetadata-BUQ3X3M6.esm.js +0 -64
  222. package/dist/chunks/ExtrasAsMetadata-BUQ3X3M6.esm.js.map +0 -1
  223. package/dist/chunks/ExtrasAsMetadata-C_M9nxb4.esm.min.js +0 -2
  224. package/dist/chunks/ExtrasAsMetadata-C_M9nxb4.esm.min.js.map +0 -1
  225. package/dist/chunks/KHR_animation_pointer-BdFZyLUq.esm.js +0 -352
  226. package/dist/chunks/KHR_animation_pointer-BdFZyLUq.esm.js.map +0 -1
  227. package/dist/chunks/KHR_animation_pointer-CBqZcURZ.esm.min.js +0 -2
  228. package/dist/chunks/KHR_animation_pointer-CBqZcURZ.esm.min.js.map +0 -1
  229. package/dist/chunks/KHR_draco_mesh_compression-DU2Rk2nj.esm.min.js +0 -2
  230. package/dist/chunks/KHR_draco_mesh_compression-DU2Rk2nj.esm.min.js.map +0 -1
  231. package/dist/chunks/KHR_draco_mesh_compression-hVF9XuFz.esm.js +0 -610
  232. package/dist/chunks/KHR_draco_mesh_compression-hVF9XuFz.esm.js.map +0 -1
  233. package/dist/chunks/KHR_interactivity-COE1p684.esm.min.js +0 -2
  234. package/dist/chunks/KHR_interactivity-COE1p684.esm.min.js.map +0 -1
  235. package/dist/chunks/KHR_interactivity-Cv1s_pea.esm.js +0 -4033
  236. package/dist/chunks/KHR_interactivity-Cv1s_pea.esm.js.map +0 -1
  237. package/dist/chunks/KHR_lights_punctual-CHf5kbKi.esm.js +0 -581
  238. package/dist/chunks/KHR_lights_punctual-CHf5kbKi.esm.js.map +0 -1
  239. package/dist/chunks/KHR_lights_punctual-DIEAP5SG.esm.min.js +0 -2
  240. package/dist/chunks/KHR_lights_punctual-DIEAP5SG.esm.min.js.map +0 -1
  241. package/dist/chunks/KHR_materials_anisotropy-CU-xxV6y.esm.js +0 -65
  242. package/dist/chunks/KHR_materials_anisotropy-CU-xxV6y.esm.js.map +0 -1
  243. package/dist/chunks/KHR_materials_anisotropy-Cq6CU4qW.esm.min.js +0 -2
  244. package/dist/chunks/KHR_materials_anisotropy-Cq6CU4qW.esm.min.js.map +0 -1
  245. package/dist/chunks/KHR_materials_clearcoat-BSjcmIju.esm.js +0 -96
  246. package/dist/chunks/KHR_materials_clearcoat-BSjcmIju.esm.js.map +0 -1
  247. package/dist/chunks/KHR_materials_clearcoat-CVNNhJRE.esm.min.js +0 -2
  248. package/dist/chunks/KHR_materials_clearcoat-CVNNhJRE.esm.min.js.map +0 -1
  249. package/dist/chunks/KHR_materials_diffuse_transmission-BDuGIkOh.esm.min.js +0 -2
  250. package/dist/chunks/KHR_materials_diffuse_transmission-BDuGIkOh.esm.min.js.map +0 -1
  251. package/dist/chunks/KHR_materials_diffuse_transmission-BZ-9rJUf.esm.js +0 -97
  252. package/dist/chunks/KHR_materials_diffuse_transmission-BZ-9rJUf.esm.js.map +0 -1
  253. package/dist/chunks/KHR_materials_dispersion-BxiGElVU.esm.min.js +0 -2
  254. package/dist/chunks/KHR_materials_dispersion-BxiGElVU.esm.min.js.map +0 -1
  255. package/dist/chunks/KHR_materials_dispersion-UI4zH1V_.esm.js +0 -62
  256. package/dist/chunks/KHR_materials_dispersion-UI4zH1V_.esm.js.map +0 -1
  257. package/dist/chunks/KHR_materials_emissive_strength-BT-Nu60T.esm.js +0 -55
  258. package/dist/chunks/KHR_materials_emissive_strength-BT-Nu60T.esm.js.map +0 -1
  259. package/dist/chunks/KHR_materials_emissive_strength-CwkVNmN7.esm.min.js +0 -2
  260. package/dist/chunks/KHR_materials_emissive_strength-CwkVNmN7.esm.min.js.map +0 -1
  261. package/dist/chunks/KHR_materials_ior-BGUUe5AW.esm.min.js +0 -2
  262. package/dist/chunks/KHR_materials_ior-BGUUe5AW.esm.min.js.map +0 -1
  263. package/dist/chunks/KHR_materials_ior-BbBQF-yw.esm.js +0 -64
  264. package/dist/chunks/KHR_materials_ior-BbBQF-yw.esm.js.map +0 -1
  265. package/dist/chunks/KHR_materials_iridescence-IFN2ewvr.esm.min.js +0 -2
  266. package/dist/chunks/KHR_materials_iridescence-IFN2ewvr.esm.min.js.map +0 -1
  267. package/dist/chunks/KHR_materials_iridescence-nLZDN7sc.esm.js +0 -72
  268. package/dist/chunks/KHR_materials_iridescence-nLZDN7sc.esm.js.map +0 -1
  269. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-CyNVQC-W.esm.js +0 -81
  270. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-CyNVQC-W.esm.js.map +0 -1
  271. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-zxcydJdp.esm.min.js +0 -2
  272. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-zxcydJdp.esm.min.js.map +0 -1
  273. package/dist/chunks/KHR_materials_sheen-BWL9yo8Z.esm.min.js +0 -2
  274. package/dist/chunks/KHR_materials_sheen-BWL9yo8Z.esm.min.js.map +0 -1
  275. package/dist/chunks/KHR_materials_sheen-DSThWwq2.esm.js +0 -85
  276. package/dist/chunks/KHR_materials_sheen-DSThWwq2.esm.js.map +0 -1
  277. package/dist/chunks/KHR_materials_specular-B96NRFEV.esm.js +0 -75
  278. package/dist/chunks/KHR_materials_specular-B96NRFEV.esm.js.map +0 -1
  279. package/dist/chunks/KHR_materials_specular-D2JwOdxw.esm.min.js +0 -2
  280. package/dist/chunks/KHR_materials_specular-D2JwOdxw.esm.min.js.map +0 -1
  281. package/dist/chunks/KHR_materials_transmission-BvqtJXfD.esm.js +0 -307
  282. package/dist/chunks/KHR_materials_transmission-BvqtJXfD.esm.js.map +0 -1
  283. package/dist/chunks/KHR_materials_transmission-ljXN4y_0.esm.min.js +0 -2
  284. package/dist/chunks/KHR_materials_transmission-ljXN4y_0.esm.min.js.map +0 -1
  285. package/dist/chunks/KHR_materials_unlit-CjGTXU3z.esm.min.js +0 -2
  286. package/dist/chunks/KHR_materials_unlit-CjGTXU3z.esm.min.js.map +0 -1
  287. package/dist/chunks/KHR_materials_unlit-ww00IloC.esm.js +0 -74
  288. package/dist/chunks/KHR_materials_unlit-ww00IloC.esm.js.map +0 -1
  289. package/dist/chunks/KHR_materials_variants-D0pVU1lm.esm.min.js +0 -2
  290. package/dist/chunks/KHR_materials_variants-D0pVU1lm.esm.min.js.map +0 -1
  291. package/dist/chunks/KHR_materials_variants-D3IDOJfB.esm.js +0 -262
  292. package/dist/chunks/KHR_materials_variants-D3IDOJfB.esm.js.map +0 -1
  293. package/dist/chunks/KHR_materials_volume-BfZR8rbr.esm.min.js +0 -2
  294. package/dist/chunks/KHR_materials_volume-BfZR8rbr.esm.min.js.map +0 -1
  295. package/dist/chunks/KHR_materials_volume-CLkC_Bvi.esm.js +0 -87
  296. package/dist/chunks/KHR_materials_volume-CLkC_Bvi.esm.js.map +0 -1
  297. package/dist/chunks/KHR_mesh_quantization-BJv1P2Wt.esm.js +0 -26
  298. package/dist/chunks/KHR_mesh_quantization-BJv1P2Wt.esm.js.map +0 -1
  299. package/dist/chunks/KHR_mesh_quantization-D69X_5bR.esm.min.js +0 -2
  300. package/dist/chunks/KHR_mesh_quantization-D69X_5bR.esm.min.js.map +0 -1
  301. package/dist/chunks/KHR_node_hoverability-CG6s7hhs.esm.min.js +0 -2
  302. package/dist/chunks/KHR_node_hoverability-CG6s7hhs.esm.min.js.map +0 -1
  303. package/dist/chunks/KHR_node_hoverability-xgvyZ_r-.esm.js +0 -39
  304. package/dist/chunks/KHR_node_hoverability-xgvyZ_r-.esm.js.map +0 -1
  305. package/dist/chunks/KHR_node_visibility-DUozjXRR.esm.min.js +0 -2
  306. package/dist/chunks/KHR_node_visibility-DUozjXRR.esm.min.js.map +0 -1
  307. package/dist/chunks/KHR_node_visibility-aAs5Kkey.esm.js +0 -46
  308. package/dist/chunks/KHR_node_visibility-aAs5Kkey.esm.js.map +0 -1
  309. package/dist/chunks/KHR_texture_basisu-Bjw0jG1d.esm.js +0 -43
  310. package/dist/chunks/KHR_texture_basisu-Bjw0jG1d.esm.js.map +0 -1
  311. package/dist/chunks/KHR_texture_basisu-FWm46QOj.esm.min.js +0 -2
  312. package/dist/chunks/KHR_texture_basisu-FWm46QOj.esm.min.js.map +0 -1
  313. package/dist/chunks/KHR_texture_transform-BZYr2brj.esm.min.js +0 -2
  314. package/dist/chunks/KHR_texture_transform-BZYr2brj.esm.min.js.map +0 -1
  315. package/dist/chunks/KHR_texture_transform-DdsN6SA_.esm.js +0 -63
  316. package/dist/chunks/KHR_texture_transform-DdsN6SA_.esm.js.map +0 -1
  317. package/dist/chunks/KHR_xmp_json_ld-DhFD64vh.esm.min.js +0 -2
  318. package/dist/chunks/KHR_xmp_json_ld-DhFD64vh.esm.min.js.map +0 -1
  319. package/dist/chunks/KHR_xmp_json_ld-sTn6N13E.esm.js +0 -51
  320. package/dist/chunks/KHR_xmp_json_ld-sTn6N13E.esm.js.map +0 -1
  321. package/dist/chunks/MSFT_audio_emitter-5lrNj8-c.esm.min.js +0 -2
  322. package/dist/chunks/MSFT_audio_emitter-5lrNj8-c.esm.min.js.map +0 -1
  323. package/dist/chunks/MSFT_audio_emitter-B7RJSCaF.esm.js +0 -2201
  324. package/dist/chunks/MSFT_audio_emitter-B7RJSCaF.esm.js.map +0 -1
  325. package/dist/chunks/MSFT_lod-BJBjM7Gp.esm.js +0 -337
  326. package/dist/chunks/MSFT_lod-BJBjM7Gp.esm.js.map +0 -1
  327. package/dist/chunks/MSFT_lod-DpEZMnoU.esm.min.js +0 -2
  328. package/dist/chunks/MSFT_lod-DpEZMnoU.esm.min.js.map +0 -1
  329. package/dist/chunks/MSFT_minecraftMesh-CXHPdyar.esm.min.js +0 -2
  330. package/dist/chunks/MSFT_minecraftMesh-CXHPdyar.esm.min.js.map +0 -1
  331. package/dist/chunks/MSFT_minecraftMesh-DRC2tMvY.esm.js +0 -46
  332. package/dist/chunks/MSFT_minecraftMesh-DRC2tMvY.esm.js.map +0 -1
  333. package/dist/chunks/MSFT_sRGBFactors-Db1asZRk.esm.js +0 -47
  334. package/dist/chunks/MSFT_sRGBFactors-Db1asZRk.esm.js.map +0 -1
  335. package/dist/chunks/MSFT_sRGBFactors-RhAtY3q7.esm.min.js +0 -2
  336. package/dist/chunks/MSFT_sRGBFactors-RhAtY3q7.esm.min.js.map +0 -1
  337. package/dist/chunks/animationGroup-CjaFhT87.esm.min.js +0 -2
  338. package/dist/chunks/animationGroup-CjaFhT87.esm.min.js.map +0 -1
  339. package/dist/chunks/animationGroup-Ctc6BUYh.esm.js +0 -2482
  340. package/dist/chunks/animationGroup-Ctc6BUYh.esm.js.map +0 -1
  341. package/dist/chunks/assetContainer-DDEska5G.esm.min.js +0 -2
  342. package/dist/chunks/assetContainer-DDEska5G.esm.min.js.map +0 -1
  343. package/dist/chunks/assetContainer-QD3gUzyx.esm.js +0 -1720
  344. package/dist/chunks/assetContainer-QD3gUzyx.esm.js.map +0 -1
  345. package/dist/chunks/audioEngine-C6R2Ow6e.esm.js +0 -305
  346. package/dist/chunks/audioEngine-C6R2Ow6e.esm.js.map +0 -1
  347. package/dist/chunks/audioEngine-FKYFzzDb.esm.min.js +0 -2
  348. package/dist/chunks/audioEngine-FKYFzzDb.esm.min.js.map +0 -1
  349. package/dist/chunks/bakedVertexAnimation-DKR6lpIg.esm.min.js +0 -2
  350. package/dist/chunks/bakedVertexAnimation-DKR6lpIg.esm.min.js.map +0 -1
  351. package/dist/chunks/bakedVertexAnimation-Hxn22qoJ.esm.js +0 -114
  352. package/dist/chunks/bakedVertexAnimation-Hxn22qoJ.esm.js.map +0 -1
  353. package/dist/chunks/basisTextureLoader-BcNAHqjw.esm.min.js +0 -2
  354. package/dist/chunks/basisTextureLoader-BcNAHqjw.esm.min.js.map +0 -1
  355. package/dist/chunks/basisTextureLoader-Dr2d0ez5.esm.js +0 -600
  356. package/dist/chunks/basisTextureLoader-Dr2d0ez5.esm.js.map +0 -1
  357. package/dist/chunks/dds-CFrq_XFM.esm.js +0 -540
  358. package/dist/chunks/dds-CFrq_XFM.esm.js.map +0 -1
  359. package/dist/chunks/dds-D1NTXLIL.esm.min.js +0 -2
  360. package/dist/chunks/dds-D1NTXLIL.esm.min.js.map +0 -1
  361. package/dist/chunks/ddsTextureLoader-DbvffCUa.esm.min.js +0 -2
  362. package/dist/chunks/ddsTextureLoader-DbvffCUa.esm.min.js.map +0 -1
  363. package/dist/chunks/ddsTextureLoader-wyjUdBoO.esm.js +0 -88
  364. package/dist/chunks/ddsTextureLoader-wyjUdBoO.esm.js.map +0 -1
  365. package/dist/chunks/decalFragment-CGto5zyq.esm.js +0 -18
  366. package/dist/chunks/decalFragment-CGto5zyq.esm.js.map +0 -1
  367. package/dist/chunks/decalFragment-CU64C8uG.esm.min.js +0 -2
  368. package/dist/chunks/decalFragment-CU64C8uG.esm.min.js.map +0 -1
  369. package/dist/chunks/default.fragment-B2bhCC4E.esm.js +0 -446
  370. package/dist/chunks/default.fragment-B2bhCC4E.esm.js.map +0 -1
  371. package/dist/chunks/default.fragment-Boq79lom.esm.min.js +0 -2
  372. package/dist/chunks/default.fragment-Boq79lom.esm.min.js.map +0 -1
  373. package/dist/chunks/default.fragment-CluFtXFp.esm.min.js +0 -2
  374. package/dist/chunks/default.fragment-CluFtXFp.esm.min.js.map +0 -1
  375. package/dist/chunks/default.fragment-Dshl5Uqc.esm.js +0 -515
  376. package/dist/chunks/default.fragment-Dshl5Uqc.esm.js.map +0 -1
  377. package/dist/chunks/default.vertex-BAAgCiYo.esm.min.js +0 -2
  378. package/dist/chunks/default.vertex-BAAgCiYo.esm.min.js.map +0 -1
  379. package/dist/chunks/default.vertex-BhOIicZW.esm.min.js +0 -2
  380. package/dist/chunks/default.vertex-BhOIicZW.esm.min.js.map +0 -1
  381. package/dist/chunks/default.vertex-DL7IogGB.esm.js +0 -211
  382. package/dist/chunks/default.vertex-DL7IogGB.esm.js.map +0 -1
  383. package/dist/chunks/default.vertex-DOXcZEQ0.esm.js +0 -190
  384. package/dist/chunks/default.vertex-DOXcZEQ0.esm.js.map +0 -1
  385. package/dist/chunks/defaultUboDeclaration-1qBz6EuF.esm.js +0 -15
  386. package/dist/chunks/defaultUboDeclaration-1qBz6EuF.esm.js.map +0 -1
  387. package/dist/chunks/defaultUboDeclaration-B9LzMzlw.esm.min.js +0 -2
  388. package/dist/chunks/defaultUboDeclaration-B9LzMzlw.esm.min.js.map +0 -1
  389. package/dist/chunks/defaultUboDeclaration-CXdodf7i.esm.js +0 -13
  390. package/dist/chunks/defaultUboDeclaration-CXdodf7i.esm.js.map +0 -1
  391. package/dist/chunks/defaultUboDeclaration-CZlCaxgu.esm.min.js +0 -2
  392. package/dist/chunks/defaultUboDeclaration-CZlCaxgu.esm.min.js.map +0 -1
  393. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js +0 -11
  394. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js.map +0 -1
  395. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js +0 -2
  396. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js.map +0 -1
  397. package/dist/chunks/dumpTools-C3vcqEdz.esm.js +0 -200
  398. package/dist/chunks/dumpTools-C3vcqEdz.esm.js.map +0 -1
  399. package/dist/chunks/dumpTools-C8ZzlWEh.esm.min.js +0 -2
  400. package/dist/chunks/dumpTools-C8ZzlWEh.esm.min.js.map +0 -1
  401. package/dist/chunks/engine-_wVL12I1.esm.js +0 -2213
  402. package/dist/chunks/engine-_wVL12I1.esm.js.map +0 -1
  403. package/dist/chunks/engine-nCWszV_w.esm.min.js +0 -2
  404. package/dist/chunks/engine-nCWszV_w.esm.min.js.map +0 -1
  405. package/dist/chunks/engine.common-BuPfo1Wj.esm.min.js +0 -2
  406. package/dist/chunks/engine.common-BuPfo1Wj.esm.min.js.map +0 -1
  407. package/dist/chunks/engine.common-CT5iq3ZT.esm.js +0 -1162
  408. package/dist/chunks/engine.common-CT5iq3ZT.esm.js.map +0 -1
  409. package/dist/chunks/envTextureLoader-D7L0fVXR.esm.min.js +0 -2
  410. package/dist/chunks/envTextureLoader-D7L0fVXR.esm.min.js.map +0 -1
  411. package/dist/chunks/envTextureLoader-PtuRNDrr.esm.js +0 -64
  412. package/dist/chunks/envTextureLoader-PtuRNDrr.esm.js.map +0 -1
  413. package/dist/chunks/environmentTextureTools-BjmCbfSf.esm.min.js +0 -2
  414. package/dist/chunks/environmentTextureTools-BjmCbfSf.esm.min.js.map +0 -1
  415. package/dist/chunks/environmentTextureTools-DYbFmR95.esm.js +0 -382
  416. package/dist/chunks/environmentTextureTools-DYbFmR95.esm.js.map +0 -1
  417. package/dist/chunks/exrTextureLoader-BIPK0bPG.esm.min.js +0 -2
  418. package/dist/chunks/exrTextureLoader-BIPK0bPG.esm.min.js.map +0 -1
  419. package/dist/chunks/exrTextureLoader-CEhv_7O9.esm.js +0 -1683
  420. package/dist/chunks/exrTextureLoader-CEhv_7O9.esm.js.map +0 -1
  421. package/dist/chunks/fogFragment-B7_evZbY.esm.js +0 -102
  422. package/dist/chunks/fogFragment-B7_evZbY.esm.js.map +0 -1
  423. package/dist/chunks/fogFragment-CoZPb7oI.esm.min.js +0 -2
  424. package/dist/chunks/fogFragment-CoZPb7oI.esm.min.js.map +0 -1
  425. package/dist/chunks/fogFragment-DSO97-dc.esm.min.js +0 -2
  426. package/dist/chunks/fogFragment-DSO97-dc.esm.min.js.map +0 -1
  427. package/dist/chunks/fogFragment-wY2jQ7fb.esm.js +0 -101
  428. package/dist/chunks/fogFragment-wY2jQ7fb.esm.js.map +0 -1
  429. package/dist/chunks/fresnelFunction-BSEp5SCT.esm.js +0 -12
  430. package/dist/chunks/fresnelFunction-BSEp5SCT.esm.js.map +0 -1
  431. package/dist/chunks/fresnelFunction-Cg-NNSrz.esm.min.js +0 -2
  432. package/dist/chunks/fresnelFunction-Cg-NNSrz.esm.min.js.map +0 -1
  433. package/dist/chunks/glTFLoader-3ZUBWawQ.esm.min.js +0 -2
  434. package/dist/chunks/glTFLoader-3ZUBWawQ.esm.min.js.map +0 -1
  435. package/dist/chunks/glTFLoader-DVoAJl_A.esm.js +0 -7658
  436. package/dist/chunks/glTFLoader-DVoAJl_A.esm.js.map +0 -1
  437. package/dist/chunks/glTFLoaderAnimation-By7yP8sQ.esm.js +0 -77
  438. package/dist/chunks/glTFLoaderAnimation-By7yP8sQ.esm.js.map +0 -1
  439. package/dist/chunks/glTFLoaderAnimation-C9g-SHaJ.esm.min.js +0 -2
  440. package/dist/chunks/glTFLoaderAnimation-C9g-SHaJ.esm.min.js.map +0 -1
  441. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +0 -2
  442. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +0 -1
  443. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +0 -67
  444. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +0 -1
  445. package/dist/chunks/harmonicsFunctions-B8pgRSdd.esm.min.js +0 -2
  446. package/dist/chunks/harmonicsFunctions-B8pgRSdd.esm.min.js.map +0 -1
  447. package/dist/chunks/harmonicsFunctions-BcfkM4gb.esm.js +0 -35
  448. package/dist/chunks/harmonicsFunctions-BcfkM4gb.esm.js.map +0 -1
  449. package/dist/chunks/harmonicsFunctions-DF1x585z.esm.min.js +0 -2
  450. package/dist/chunks/harmonicsFunctions-DF1x585z.esm.min.js.map +0 -1
  451. package/dist/chunks/harmonicsFunctions-a48Ki58F.esm.js +0 -34
  452. package/dist/chunks/harmonicsFunctions-a48Ki58F.esm.js.map +0 -1
  453. package/dist/chunks/hdrTextureLoader-BWnO8u1r.esm.js +0 -253
  454. package/dist/chunks/hdrTextureLoader-BWnO8u1r.esm.js.map +0 -1
  455. package/dist/chunks/hdrTextureLoader-Bii9QpYI.esm.min.js +0 -2
  456. package/dist/chunks/hdrTextureLoader-Bii9QpYI.esm.min.js.map +0 -1
  457. package/dist/chunks/helperFunctions-BinFB44e.esm.js +0 -110
  458. package/dist/chunks/helperFunctions-BinFB44e.esm.js.map +0 -1
  459. package/dist/chunks/helperFunctions-CZAyJNTJ.esm.min.js +0 -2
  460. package/dist/chunks/helperFunctions-CZAyJNTJ.esm.min.js.map +0 -1
  461. package/dist/chunks/helperFunctions-DjoUVhI2.esm.min.js +0 -2
  462. package/dist/chunks/helperFunctions-DjoUVhI2.esm.min.js.map +0 -1
  463. package/dist/chunks/helperFunctions-Ds3-3-tu.esm.js +0 -83
  464. package/dist/chunks/helperFunctions-Ds3-3-tu.esm.js.map +0 -1
  465. package/dist/chunks/iesTextureLoader-CsnjIN7M.esm.js +0 -189
  466. package/dist/chunks/iesTextureLoader-CsnjIN7M.esm.js.map +0 -1
  467. package/dist/chunks/iesTextureLoader-DkmTomCD.esm.min.js +0 -2
  468. package/dist/chunks/iesTextureLoader-DkmTomCD.esm.min.js.map +0 -1
  469. package/dist/chunks/index-Cw2FZpYY.esm.js +0 -74870
  470. package/dist/chunks/index-Cw2FZpYY.esm.js.map +0 -1
  471. package/dist/chunks/index-DRbhrB0j.esm.min.js +0 -57
  472. package/dist/chunks/index-DRbhrB0j.esm.min.js.map +0 -1
  473. package/dist/chunks/ktxTextureLoader-B4pmAFQl.esm.js +0 -814
  474. package/dist/chunks/ktxTextureLoader-B4pmAFQl.esm.js.map +0 -1
  475. package/dist/chunks/ktxTextureLoader-B8Rlj2T0.esm.min.js +0 -2
  476. package/dist/chunks/ktxTextureLoader-B8Rlj2T0.esm.min.js.map +0 -1
  477. package/dist/chunks/logDepthDeclaration-CGz2sG_K.esm.js +0 -11
  478. package/dist/chunks/logDepthDeclaration-CGz2sG_K.esm.js.map +0 -1
  479. package/dist/chunks/logDepthDeclaration-CfVFs2QC.esm.min.js +0 -2
  480. package/dist/chunks/logDepthDeclaration-CfVFs2QC.esm.min.js.map +0 -1
  481. package/dist/chunks/logDepthDeclaration-CzVshpad.esm.min.js +0 -2
  482. package/dist/chunks/logDepthDeclaration-CzVshpad.esm.min.js.map +0 -1
  483. package/dist/chunks/logDepthDeclaration-xOwnAKtd.esm.js +0 -35
  484. package/dist/chunks/logDepthDeclaration-xOwnAKtd.esm.js.map +0 -1
  485. package/dist/chunks/logDepthVertex-BRgUZAsw.esm.js +0 -81
  486. package/dist/chunks/logDepthVertex-BRgUZAsw.esm.js.map +0 -1
  487. package/dist/chunks/logDepthVertex-CWfPfN9-.esm.min.js +0 -2
  488. package/dist/chunks/logDepthVertex-CWfPfN9-.esm.min.js.map +0 -1
  489. package/dist/chunks/logDepthVertex-HDlt7vTP.esm.min.js +0 -2
  490. package/dist/chunks/logDepthVertex-HDlt7vTP.esm.min.js.map +0 -1
  491. package/dist/chunks/logDepthVertex-l0uEG89p.esm.js +0 -77
  492. package/dist/chunks/logDepthVertex-l0uEG89p.esm.js.map +0 -1
  493. package/dist/chunks/mainUVVaryingDeclaration-B72zV2P9.esm.min.js +0 -2
  494. package/dist/chunks/mainUVVaryingDeclaration-B72zV2P9.esm.min.js.map +0 -1
  495. package/dist/chunks/mainUVVaryingDeclaration-BDogjZrz.esm.js +0 -11
  496. package/dist/chunks/mainUVVaryingDeclaration-BDogjZrz.esm.js.map +0 -1
  497. package/dist/chunks/mainUVVaryingDeclaration-DO5HJKyl.esm.min.js +0 -2
  498. package/dist/chunks/mainUVVaryingDeclaration-DO5HJKyl.esm.min.js.map +0 -1
  499. package/dist/chunks/mainUVVaryingDeclaration-DqzNajlu.esm.js +0 -11
  500. package/dist/chunks/mainUVVaryingDeclaration-DqzNajlu.esm.js.map +0 -1
  501. package/dist/chunks/mesh.vertexData.functions-B_pMCAzZ.esm.js +0 -119
  502. package/dist/chunks/mesh.vertexData.functions-B_pMCAzZ.esm.js.map +0 -1
  503. package/dist/chunks/mesh.vertexData.functions-Bo7e6Of9.esm.min.js +0 -2
  504. package/dist/chunks/mesh.vertexData.functions-Bo7e6Of9.esm.min.js.map +0 -1
  505. package/dist/chunks/meshUboDeclaration-BCO87lfZ.esm.js +0 -26
  506. package/dist/chunks/meshUboDeclaration-BCO87lfZ.esm.js.map +0 -1
  507. package/dist/chunks/meshUboDeclaration-o4Xf2fwW.esm.min.js +0 -2
  508. package/dist/chunks/meshUboDeclaration-o4Xf2fwW.esm.min.js.map +0 -1
  509. package/dist/chunks/objFileLoader-BfPYM2Sh.esm.min.js +0 -2
  510. package/dist/chunks/objFileLoader-BfPYM2Sh.esm.min.js.map +0 -1
  511. package/dist/chunks/objFileLoader-D1emf4Qh.esm.js +0 -1338
  512. package/dist/chunks/objFileLoader-D1emf4Qh.esm.js.map +0 -1
  513. package/dist/chunks/oitFragment-B92YpEfj.esm.min.js +0 -2
  514. package/dist/chunks/oitFragment-B92YpEfj.esm.min.js.map +0 -1
  515. package/dist/chunks/oitFragment-BoFKkDNv.esm.js +0 -1078
  516. package/dist/chunks/oitFragment-BoFKkDNv.esm.js.map +0 -1
  517. package/dist/chunks/oitFragment-Cfx3g0iX.esm.js +0 -1240
  518. package/dist/chunks/oitFragment-Cfx3g0iX.esm.js.map +0 -1
  519. package/dist/chunks/oitFragment-CiA7gld-.esm.min.js +0 -2
  520. package/dist/chunks/oitFragment-CiA7gld-.esm.min.js.map +0 -1
  521. package/dist/chunks/pass.fragment-BLbIViJ7.esm.js +0 -15
  522. package/dist/chunks/pass.fragment-BLbIViJ7.esm.js.map +0 -1
  523. package/dist/chunks/pass.fragment-BqMk9ouF.esm.min.js +0 -2
  524. package/dist/chunks/pass.fragment-BqMk9ouF.esm.min.js.map +0 -1
  525. package/dist/chunks/pass.fragment-BuVDFNSR.esm.js +0 -15
  526. package/dist/chunks/pass.fragment-BuVDFNSR.esm.js.map +0 -1
  527. package/dist/chunks/pass.fragment-cM5FBHLm.esm.min.js +0 -2
  528. package/dist/chunks/pass.fragment-cM5FBHLm.esm.min.js.map +0 -1
  529. package/dist/chunks/pbr.fragment-5L_F7nGn.esm.js +0 -3222
  530. package/dist/chunks/pbr.fragment-5L_F7nGn.esm.js.map +0 -1
  531. package/dist/chunks/pbr.fragment-BJNPHSa-.esm.min.js +0 -2
  532. package/dist/chunks/pbr.fragment-BJNPHSa-.esm.min.js.map +0 -1
  533. package/dist/chunks/pbr.fragment-CTLrOzV2.esm.js +0 -3269
  534. package/dist/chunks/pbr.fragment-CTLrOzV2.esm.js.map +0 -1
  535. package/dist/chunks/pbr.fragment-D9MJFOr2.esm.min.js +0 -2
  536. package/dist/chunks/pbr.fragment-D9MJFOr2.esm.min.js.map +0 -1
  537. package/dist/chunks/pbr.vertex-BJyjq_fb.esm.js +0 -223
  538. package/dist/chunks/pbr.vertex-BJyjq_fb.esm.js.map +0 -1
  539. package/dist/chunks/pbr.vertex-Bm8Ng4Sx.esm.min.js +0 -2
  540. package/dist/chunks/pbr.vertex-Bm8Ng4Sx.esm.min.js.map +0 -1
  541. package/dist/chunks/pbr.vertex-CAKPUhfb.esm.min.js +0 -2
  542. package/dist/chunks/pbr.vertex-CAKPUhfb.esm.min.js.map +0 -1
  543. package/dist/chunks/pbr.vertex-DJd_-MvE.esm.js +0 -348
  544. package/dist/chunks/pbr.vertex-DJd_-MvE.esm.js.map +0 -1
  545. package/dist/chunks/postprocess.vertex-BjRX5eGi.esm.min.js +0 -2
  546. package/dist/chunks/postprocess.vertex-BjRX5eGi.esm.min.js.map +0 -1
  547. package/dist/chunks/postprocess.vertex-CFaKNIU-.esm.js +0 -20
  548. package/dist/chunks/postprocess.vertex-CFaKNIU-.esm.js.map +0 -1
  549. package/dist/chunks/rawTexture-ByD8l28R.esm.min.js +0 -2
  550. package/dist/chunks/rawTexture-ByD8l28R.esm.min.js.map +0 -1
  551. package/dist/chunks/rawTexture-DGz22uaX.esm.js +0 -191
  552. package/dist/chunks/rawTexture-DGz22uaX.esm.js.map +0 -1
  553. package/dist/chunks/ray-ByafiITx.esm.js +0 -946
  554. package/dist/chunks/ray-ByafiITx.esm.js.map +0 -1
  555. package/dist/chunks/ray-ChSTYrPm.esm.min.js +0 -2
  556. package/dist/chunks/ray-ChSTYrPm.esm.min.js.map +0 -1
  557. package/dist/chunks/rgbdDecode.fragment-CJ7PpH1N.esm.js +0 -13
  558. package/dist/chunks/rgbdDecode.fragment-CJ7PpH1N.esm.js.map +0 -1
  559. package/dist/chunks/rgbdDecode.fragment-DJ9crbPP.esm.js +0 -13
  560. package/dist/chunks/rgbdDecode.fragment-DJ9crbPP.esm.js.map +0 -1
  561. package/dist/chunks/rgbdDecode.fragment-DLpb3z18.esm.min.js +0 -2
  562. package/dist/chunks/rgbdDecode.fragment-DLpb3z18.esm.min.js.map +0 -1
  563. package/dist/chunks/rgbdDecode.fragment-ygeOUzIi.esm.min.js +0 -2
  564. package/dist/chunks/rgbdDecode.fragment-ygeOUzIi.esm.min.js.map +0 -1
  565. package/dist/chunks/rgbdEncode.fragment-BTG_wbck.esm.min.js +0 -2
  566. package/dist/chunks/rgbdEncode.fragment-BTG_wbck.esm.min.js.map +0 -1
  567. package/dist/chunks/rgbdEncode.fragment-C2s4AQaM.esm.js +0 -13
  568. package/dist/chunks/rgbdEncode.fragment-C2s4AQaM.esm.js.map +0 -1
  569. package/dist/chunks/rgbdEncode.fragment-C6LKySQH.esm.js +0 -13
  570. package/dist/chunks/rgbdEncode.fragment-C6LKySQH.esm.js.map +0 -1
  571. package/dist/chunks/rgbdEncode.fragment-CKB2lpgL.esm.min.js +0 -2
  572. package/dist/chunks/rgbdEncode.fragment-CKB2lpgL.esm.min.js.map +0 -1
  573. package/dist/chunks/splatFileLoader-BtSUlfZs.esm.min.js +0 -2
  574. package/dist/chunks/splatFileLoader-BtSUlfZs.esm.min.js.map +0 -1
  575. package/dist/chunks/splatFileLoader-Wn5sDtLq.esm.js +0 -3379
  576. package/dist/chunks/splatFileLoader-Wn5sDtLq.esm.js.map +0 -1
  577. package/dist/chunks/spotLight-CmDQEB8V.esm.js +0 -701
  578. package/dist/chunks/spotLight-CmDQEB8V.esm.js.map +0 -1
  579. package/dist/chunks/spotLight-hg94aMJD.esm.min.js +0 -2
  580. package/dist/chunks/spotLight-hg94aMJD.esm.min.js.map +0 -1
  581. package/dist/chunks/standardMaterial-BhIiLn1_.esm.js +0 -1806
  582. package/dist/chunks/standardMaterial-BhIiLn1_.esm.js.map +0 -1
  583. package/dist/chunks/standardMaterial-DQii8fRL.esm.min.js +0 -2
  584. package/dist/chunks/standardMaterial-DQii8fRL.esm.min.js.map +0 -1
  585. package/dist/chunks/stlFileLoader-D83u9BOr.esm.js +0 -238
  586. package/dist/chunks/stlFileLoader-D83u9BOr.esm.js.map +0 -1
  587. package/dist/chunks/stlFileLoader-DkXWqjZo.esm.min.js +0 -2
  588. package/dist/chunks/stlFileLoader-DkXWqjZo.esm.min.js.map +0 -1
  589. package/dist/chunks/tgaTextureLoader-C9xl6cvE.esm.js +0 -349
  590. package/dist/chunks/tgaTextureLoader-C9xl6cvE.esm.js.map +0 -1
  591. package/dist/chunks/tgaTextureLoader-DfzjGulW.esm.min.js +0 -2
  592. package/dist/chunks/tgaTextureLoader-DfzjGulW.esm.min.js.map +0 -1
  593. package/dist/chunks/thinEngine-Cu21aOSC.esm.min.js +0 -2
  594. package/dist/chunks/thinEngine-Cu21aOSC.esm.min.js.map +0 -1
  595. package/dist/chunks/thinEngine-IzS60pqU.esm.js +0 -3853
  596. package/dist/chunks/thinEngine-IzS60pqU.esm.js.map +0 -1
  597. package/dist/chunks/thinInstanceMesh-BN8Ev-h8.esm.js +0 -314
  598. package/dist/chunks/thinInstanceMesh-BN8Ev-h8.esm.js.map +0 -1
  599. package/dist/chunks/thinInstanceMesh-Bm9vmKU4.esm.min.js +0 -2
  600. package/dist/chunks/thinInstanceMesh-Bm9vmKU4.esm.min.js.map +0 -1
  601. package/dist/chunks/vertexColorMixing-Cazf4vEl.esm.min.js +0 -2
  602. package/dist/chunks/vertexColorMixing-Cazf4vEl.esm.min.js.map +0 -1
  603. package/dist/chunks/vertexColorMixing-DGvq3Fju.esm.js +0 -421
  604. package/dist/chunks/vertexColorMixing-DGvq3Fju.esm.js.map +0 -1
  605. package/dist/chunks/vertexColorMixing-D_6ZvivZ.esm.min.js +0 -2
  606. package/dist/chunks/vertexColorMixing-D_6ZvivZ.esm.min.js.map +0 -1
  607. package/dist/chunks/vertexColorMixing-DuYHnuUm.esm.js +0 -531
  608. package/dist/chunks/vertexColorMixing-DuYHnuUm.esm.js.map +0 -1
  609. package/dist/chunks/webgpuEngine-DHaXinU4.esm.min.js +0 -2
  610. package/dist/chunks/webgpuEngine-DHaXinU4.esm.min.js.map +0 -1
  611. package/dist/chunks/webgpuEngine-Dxev7pbz.esm.js +0 -11538
  612. package/dist/chunks/webgpuEngine-Dxev7pbz.esm.js.map +0 -1
  613. package/dist/chunks/workerPool-BUOov2K1.esm.js +0 -122
  614. package/dist/chunks/workerPool-BUOov2K1.esm.js.map +0 -1
  615. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +0 -2
  616. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +0 -1
  617. package/lib/index.d.ts +0 -591
  618. package/lib/index.js +0 -2165
  619. package/lib/index.js.map +0 -1
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../../../tools/viewer-alpha/src/viewer.ts","../../../../../node_modules/@lit/reactive-element/css-tag.js","../../../../../node_modules/@lit/reactive-element/reactive-element.js","../../../../../node_modules/lit-html/lit-html.js","../../../../../node_modules/lit-element/lit-element.js","../../../../../node_modules/@lit/reactive-element/decorators/custom-element.js","../../../../../node_modules/@lit/reactive-element/decorators/property.js","../../../../../node_modules/@lit/reactive-element/decorators/state.js","../../../../../node_modules/@lit/reactive-element/decorators/base.js","../../../../../node_modules/@lit/reactive-element/decorators/query.js","../../../../../../../../tools/viewer-alpha/src/viewerFactory.ts","../../../../../../../../tools/viewer-alpha/src/viewerElement.ts","../../../../../../../../tools/viewer-alpha/src/viewerAnnotationElement.ts"],"sourcesContent":["import type {\r\n AbstractEngine,\r\n AbstractMesh,\r\n AnimationGroup,\r\n AssetContainer,\r\n AutoRotationBehavior,\r\n Camera,\r\n FramingBehavior,\r\n HotSpotQuery,\r\n IDisposable,\r\n IMeshDataCache,\r\n ISceneLoaderProgressEvent,\r\n LoadAssetContainerOptions,\r\n Mesh,\r\n Nullable,\r\n Observer,\r\n PickingInfo,\r\n // eslint-disable-next-line import/no-internal-modules\r\n} from \"core/index\";\r\n\r\nimport type { MaterialVariantsController } from \"loaders/glTF/2.0/Extensions/KHR_materials_variants\";\r\n\r\nimport { ArcRotateCamera } from \"core/Cameras/arcRotateCamera\";\r\nimport { PointerEventTypes } from \"core/Events/pointerEvents\";\r\nimport { HemisphericLight } from \"core/Lights/hemisphericLight\";\r\nimport { loadAssetContainerAsync } from \"core/Loading/sceneLoader\";\r\nimport { ImageProcessingConfiguration } from \"core/Materials/imageProcessingConfiguration\";\r\nimport { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\r\nimport { CubeTexture } from \"core/Materials/Textures/cubeTexture\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { Clamp } from \"core/Maths/math.scalar.functions\";\r\nimport { Matrix, Vector3 } from \"core/Maths/math.vector\";\r\nimport { Viewport } from \"core/Maths/math.viewport\";\r\nimport { GetHotSpotToRef } from \"core/Meshes/abstractMesh.hotSpot\";\r\nimport { CreateBox } from \"core/Meshes/Builders/boxBuilder\";\r\nimport { computeMaxExtents } from \"core/Meshes/meshUtils\";\r\nimport { BuildTuple } from \"core/Misc/arrayTools\";\r\nimport { AsyncLock } from \"core/Misc/asyncLock\";\r\nimport { deepMerge } from \"core/Misc/deepMerger\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { SnapshotRenderingHelper } from \"core/Misc/snapshotRenderingHelper\";\r\nimport { Scene } from \"core/scene\";\r\nimport { registerBuiltInLoaders } from \"loaders/dynamic\";\r\n\r\nconst toneMappingOptions = [\"none\", \"standard\", \"aces\", \"neutral\"] as const;\r\nexport type ToneMapping = (typeof toneMappingOptions)[number];\r\n\r\nexport type LoadModelOptions = LoadAssetContainerOptions & {\r\n /**\r\n * The default animation index.\r\n */\r\n defaultAnimation?: number;\r\n};\r\n\r\nexport type CameraAutoOrbit = {\r\n /**\r\n * Whether the camera should automatically orbit around the model when idle.\r\n */\r\n enabled: boolean;\r\n\r\n /**\r\n * The speed at which the camera orbits around the model when idle.\r\n */\r\n speed: number;\r\n\r\n /**\r\n * The delay in milliseconds before the camera starts orbiting around the model when idle.\r\n */\r\n delay: number;\r\n};\r\n\r\nexport type PostProcessing = {\r\n /**\r\n * The tone mapping to use for rendering the scene.\r\n */\r\n toneMapping: ToneMapping;\r\n\r\n /**\r\n * The contrast applied to the scene.\r\n */\r\n contrast: number;\r\n\r\n /**\r\n * The exposure applied to the scene.\r\n */\r\n exposure: number;\r\n};\r\n\r\n/**\r\n * Checks if the given value is a valid tone mapping option.\r\n * @param value The value to check.\r\n * @returns True if the value is a valid tone mapping option, otherwise false.\r\n */\r\nexport function isToneMapping(value: string): value is ToneMapping {\r\n return toneMappingOptions.includes(value as ToneMapping);\r\n}\r\n\r\nfunction throwIfAborted(...abortSignals: (Nullable<AbortSignal> | undefined)[]): void {\r\n for (const signal of abortSignals) {\r\n signal?.throwIfAborted();\r\n }\r\n}\r\n\r\nfunction createSkybox(scene: Scene, camera: Camera, reflectionTexture: CubeTexture, blur: number): Mesh {\r\n const hdrSkybox = CreateBox(\"hdrSkyBox\", undefined, scene);\r\n const hdrSkyboxMaterial = new PBRMaterial(\"skyBox\", scene);\r\n // Use the default image processing configuration on the skybox (e.g. don't apply tone mapping, contrast, or exposure).\r\n hdrSkyboxMaterial.imageProcessingConfiguration = new ImageProcessingConfiguration();\r\n hdrSkyboxMaterial.backFaceCulling = false;\r\n hdrSkyboxMaterial.reflectionTexture = reflectionTexture;\r\n if (hdrSkyboxMaterial.reflectionTexture) {\r\n hdrSkyboxMaterial.reflectionTexture.coordinatesMode = Texture.SKYBOX_MODE;\r\n }\r\n hdrSkyboxMaterial.microSurface = 1.0 - blur;\r\n hdrSkyboxMaterial.disableLighting = true;\r\n hdrSkyboxMaterial.twoSidedLighting = true;\r\n hdrSkybox.material = hdrSkyboxMaterial;\r\n hdrSkybox.isPickable = false;\r\n hdrSkybox.infiniteDistance = true;\r\n\r\n updateSkybox(hdrSkybox, camera);\r\n\r\n return hdrSkybox;\r\n}\r\n\r\nfunction updateSkybox(skybox: Nullable<Mesh>, camera: Camera): void {\r\n skybox?.scaling.setAll((camera.maxZ - camera.minZ) / 2);\r\n}\r\n\r\nexport type ViewerDetails = {\r\n /**\r\n * Gets the Viewer instance.\r\n */\r\n viewer: Viewer;\r\n\r\n /**\r\n * Provides access to the Scene managed by the Viewer.\r\n */\r\n scene: Scene;\r\n\r\n /**\r\n * Provides access to the Camera managed by the Viewer.\r\n */\r\n camera: ArcRotateCamera;\r\n\r\n /**\r\n * Provides access to the currently loaded model.\r\n */\r\n model: Nullable<AssetContainer>;\r\n\r\n /**\r\n * Suspends the render loop.\r\n * @returns A token that should be disposed when the request for suspending rendering is no longer needed.\r\n */\r\n suspendRendering(): IDisposable;\r\n\r\n /**\r\n * Picks the object at the given screen coordinates.\r\n * @remarks This function ensures skeletal and morph target animations are up to date before picking, and typically should not be called at high frequency (e.g. every frame, on pointer move, etc.).\r\n * @param screenX The x coordinate in screen space.\r\n * @param screenY The y coordinate in screen space.\r\n * @returns A PickingInfo if an object was picked, otherwise null.\r\n */\r\n pick(screenX: number, screenY: number): Promise<Nullable<PickingInfo>>;\r\n};\r\n\r\nexport type ViewerOptions = Partial<\r\n Readonly<{\r\n /**\r\n * Called once when the viewer is initialized and provides viewer details that can be used for advanced customization.\r\n */\r\n onInitialized: (details: Readonly<ViewerDetails>) => void;\r\n }>\r\n>;\r\n\r\nexport type EnvironmentOptions = Partial<\r\n Readonly<{\r\n /**\r\n * Whether to use the environment for lighting (e.g. IBL).\r\n */\r\n lighting: boolean;\r\n\r\n /**\r\n * Whether to use the environment for the skybox.\r\n */\r\n skybox: boolean;\r\n }>\r\n>;\r\n\r\nconst defaultLoadEnvironmentOptions = {\r\n lighting: true,\r\n skybox: true,\r\n} as const satisfies EnvironmentOptions;\r\n\r\nexport type ViewerHotSpotQuery =\r\n | ({\r\n /**\r\n * The type of the hot spot.\r\n */\r\n type: \"surface\";\r\n\r\n /**\r\n * The index of the mesh within the loaded model.\r\n */\r\n meshIndex: number;\r\n } & HotSpotQuery)\r\n | {\r\n /**\r\n * The type of the hot spot.\r\n */\r\n type: \"world\";\r\n\r\n /**\r\n * The fixed world space position of the hot spot.\r\n */\r\n position: [x: number, y: number, z: number];\r\n\r\n /**\r\n * The fixed world space normal of the hot spot.\r\n */\r\n normal: [x: number, y: number, z: number];\r\n };\r\n\r\n/**\r\n * Provides the result of a hot spot query.\r\n */\r\nexport class ViewerHotSpotResult {\r\n /**\r\n * 2D canvas position in pixels\r\n */\r\n public readonly screenPosition: [x: number, y: number] = [NaN, NaN];\r\n\r\n /**\r\n * 3D world coordinates\r\n */\r\n public readonly worldPosition: [x: number, y: number, z: number] = [NaN, NaN, NaN];\r\n\r\n /**\r\n * visibility range is [-1..1]. A value of 0 means camera eye is on the plane.\r\n */\r\n public visibility: number = NaN;\r\n}\r\n\r\n/**\r\n * @experimental\r\n * Provides an experience for viewing a single 3D model.\r\n * @remarks\r\n * The Viewer is not tied to a specific UI framework and can be used with Babylon.js in a browser or with Babylon Native.\r\n */\r\nexport class Viewer implements IDisposable {\r\n static {\r\n registerBuiltInLoaders();\r\n }\r\n\r\n /**\r\n * Fired when the environment has changed.\r\n */\r\n public readonly onEnvironmentChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when an error occurs while loading the environment.\r\n */\r\n public readonly onEnvironmentError = new Observable<unknown>();\r\n\r\n /**\r\n * Fired when the skybox blur changes.\r\n */\r\n public readonly onSkyboxBlurChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the post processing state changes.\r\n */\r\n public readonly onPostProcessingChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when a model is loaded into the viewer (or unloaded from the viewer).\r\n */\r\n public readonly onModelChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when an error occurs while loading a model.\r\n */\r\n public readonly onModelError = new Observable<unknown>();\r\n\r\n /**\r\n * Fired when progress changes on loading activity.\r\n */\r\n public readonly onLoadingProgressChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the camera auto orbit state changes.\r\n */\r\n public readonly onCameraAutoOrbitChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the selected animation changes.\r\n */\r\n public readonly onSelectedAnimationChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the animation speed changes.\r\n */\r\n public readonly onAnimationSpeedChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the selected animation is playing or paused.\r\n */\r\n public readonly onIsAnimationPlayingChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the current point on the selected animation timeline changes.\r\n */\r\n public readonly onAnimationProgressChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the selected material variant changes.\r\n */\r\n public readonly onSelectedMaterialVariantChanged = new Observable<void>();\r\n\r\n private readonly _tempVectors = BuildTuple(4, Vector3.Zero);\r\n private readonly _details: ViewerDetails;\r\n private readonly _meshDataCache = new Map<AbstractMesh, IMeshDataCache>();\r\n private readonly _snapshotHelper: SnapshotRenderingHelper;\r\n private readonly _autoRotationBehavior: AutoRotationBehavior;\r\n private readonly _imageProcessingConfigurationObserver: Observer<ImageProcessingConfiguration>;\r\n private _renderLoopController: Nullable<IDisposable> = null;\r\n private _materialVariantsController: Nullable<MaterialVariantsController> = null;\r\n private _skybox: Nullable<Mesh> = null;\r\n private _skyboxBlur: number = 0.3;\r\n private _light: Nullable<HemisphericLight> = null;\r\n private _toneMappingEnabled: boolean;\r\n private _toneMappingType: number;\r\n private _contrast: number;\r\n private _exposure: number;\r\n\r\n private _suspendRenderCount = 0;\r\n private _isDisposed = false;\r\n\r\n private readonly _loadModelLock = new AsyncLock();\r\n private _loadModelAbortController: Nullable<AbortController> = null;\r\n\r\n private readonly _loadEnvironmentLock = new AsyncLock();\r\n private _loadEnvironmentAbortController: Nullable<AbortController> = null;\r\n\r\n private readonly _loadSkyboxLock = new AsyncLock();\r\n private _loadSkyboxAbortController: Nullable<AbortController> = null;\r\n\r\n private _isLoadingModel = false;\r\n private _modelLoadingProgress: Nullable<number> = null;\r\n\r\n private _selectedAnimation = -1;\r\n private _activeAnimationObservers: Observer<AnimationGroup>[] = [];\r\n private _animationSpeed = 1;\r\n\r\n public constructor(\r\n private readonly _engine: AbstractEngine,\r\n options?: ViewerOptions\r\n ) {\r\n {\r\n const scene = new Scene(this._engine);\r\n\r\n // Deduce tone mapping, contrast, and exposure from the scene (so the viewer stays in sync if anything mutates these values directly on the scene).\r\n this._toneMappingEnabled = scene.imageProcessingConfiguration.toneMappingEnabled;\r\n this._toneMappingType = scene.imageProcessingConfiguration.toneMappingType;\r\n this._contrast = scene.imageProcessingConfiguration.contrast;\r\n this._exposure = scene.imageProcessingConfiguration.exposure;\r\n\r\n this._imageProcessingConfigurationObserver = scene.imageProcessingConfiguration.onUpdateParameters.add(() => {\r\n let hasChanged = false;\r\n\r\n if (this._toneMappingEnabled !== scene.imageProcessingConfiguration.toneMappingEnabled) {\r\n this._toneMappingEnabled = scene.imageProcessingConfiguration.toneMappingEnabled;\r\n hasChanged = true;\r\n }\r\n\r\n if (this._toneMappingType !== scene.imageProcessingConfiguration.toneMappingType) {\r\n this._toneMappingType = scene.imageProcessingConfiguration.toneMappingType;\r\n hasChanged = true;\r\n }\r\n\r\n if (this._contrast !== scene.imageProcessingConfiguration.contrast) {\r\n this._contrast = scene.imageProcessingConfiguration.contrast;\r\n hasChanged = true;\r\n }\r\n\r\n if (this._exposure !== scene.imageProcessingConfiguration.exposure) {\r\n this._exposure = scene.imageProcessingConfiguration.exposure;\r\n hasChanged = true;\r\n }\r\n\r\n if (hasChanged) {\r\n this.onPostProcessingChanged.notifyObservers();\r\n }\r\n });\r\n\r\n const camera = new ArcRotateCamera(\"Viewer Default Camera\", 0, 0, 1, Vector3.Zero(), scene);\r\n camera.useInputToRestoreState = false;\r\n\r\n scene.onPointerObservable.add(async (pointerInfo) => {\r\n const pickingInfo = await this._pick(pointerInfo.event.offsetX, pointerInfo.event.offsetY);\r\n if (pickingInfo?.pickedPoint) {\r\n const distance = pickingInfo.pickedPoint.subtract(camera.position).dot(camera.getForwardRay().direction);\r\n // Immediately reset the target and the radius based on the distance to the picked point.\r\n // This eliminates unnecessary camera movement on the local z-axis when interpolating.\r\n camera.target = camera.position.add(camera.getForwardRay().direction.scale(distance));\r\n camera.radius = distance;\r\n camera.interpolateTo(undefined, undefined, undefined, pickingInfo.pickedPoint);\r\n } else {\r\n camera.restoreState();\r\n }\r\n }, PointerEventTypes.POINTERDOUBLETAP);\r\n\r\n this._details = {\r\n viewer: this,\r\n scene,\r\n camera,\r\n model: null,\r\n suspendRendering: () => this._suspendRendering(),\r\n pick: (screenX: number, screenY: number) => this._pick(screenX, screenY),\r\n };\r\n }\r\n this._details.scene.skipFrustumClipping = true;\r\n this._details.scene.skipPointerDownPicking = true;\r\n this._details.scene.skipPointerUpPicking = true;\r\n this._details.scene.skipPointerMovePicking = true;\r\n this._snapshotHelper = new SnapshotRenderingHelper(this._details.scene, { morphTargetsNumMaxInfluences: 30 });\r\n this._details.camera.attachControl();\r\n this._updateCamera(); // set default camera values\r\n this._autoRotationBehavior = this._details.camera.getBehaviorByName(\"AutoRotation\") as AutoRotationBehavior;\r\n\r\n // Default to KHR PBR Neutral tone mapping.\r\n this.postProcessing = {\r\n toneMapping: \"neutral\",\r\n };\r\n\r\n // Load a default light, but ignore errors as the user might be immediately loading their own environment.\r\n this.resetEnvironment().catch(() => {});\r\n\r\n this._beginRendering();\r\n\r\n options?.onInitialized?.(this._details);\r\n }\r\n\r\n /**\r\n * The camera auto orbit configuration.\r\n */\r\n public get cameraAutoOrbit(): Readonly<CameraAutoOrbit> {\r\n return {\r\n enabled: this._details.camera.behaviors.includes(this._autoRotationBehavior),\r\n speed: this._autoRotationBehavior.idleRotationSpeed,\r\n delay: this._autoRotationBehavior.idleRotationWaitTime,\r\n };\r\n }\r\n\r\n public set cameraAutoOrbit(value: Partial<Readonly<CameraAutoOrbit>>) {\r\n if (value.enabled !== undefined && value.enabled !== this.cameraAutoOrbit.enabled) {\r\n if (value.enabled) {\r\n this._details.camera.addBehavior(this._autoRotationBehavior);\r\n } else {\r\n this._details.camera.removeBehavior(this._autoRotationBehavior);\r\n }\r\n }\r\n\r\n if (value.delay !== undefined) {\r\n this._autoRotationBehavior.idleRotationWaitTime = value.delay;\r\n }\r\n\r\n if (value.speed !== undefined) {\r\n this._autoRotationBehavior.idleRotationSpeed = value.speed;\r\n }\r\n\r\n this.onCameraAutoOrbitChanged.notifyObservers();\r\n }\r\n\r\n /**\r\n * A value between 0 and 1 that specifies how much to blur the skybox.\r\n */\r\n public get skyboxBlur(): number {\r\n return this._skyboxBlur;\r\n }\r\n\r\n public set skyboxBlur(value: number) {\r\n if (value !== this._skyboxBlur) {\r\n this._skyboxBlur = value;\r\n if (this._skybox) {\r\n const material = this._skybox.material;\r\n if (material instanceof PBRMaterial) {\r\n this._snapshotHelper.disableSnapshotRendering();\r\n material.microSurface = 1.0 - value;\r\n this._snapshotHelper.enableSnapshotRendering();\r\n }\r\n }\r\n this.onSkyboxBlurChanged.notifyObservers();\r\n }\r\n }\r\n\r\n /**\r\n * The post processing configuration.\r\n */\r\n public get postProcessing(): PostProcessing {\r\n let toneMapping: ToneMapping;\r\n switch (this._toneMappingType) {\r\n case ImageProcessingConfiguration.TONEMAPPING_STANDARD:\r\n toneMapping = \"standard\";\r\n break;\r\n case ImageProcessingConfiguration.TONEMAPPING_ACES:\r\n toneMapping = \"aces\";\r\n break;\r\n case ImageProcessingConfiguration.TONEMAPPING_KHR_PBR_NEUTRAL:\r\n toneMapping = \"neutral\";\r\n break;\r\n default:\r\n toneMapping = \"none\";\r\n break;\r\n }\r\n\r\n return {\r\n toneMapping,\r\n contrast: this._contrast,\r\n exposure: this._exposure,\r\n };\r\n }\r\n\r\n public set postProcessing(value: Partial<Readonly<PostProcessing>>) {\r\n this._snapshotHelper.disableSnapshotRendering();\r\n\r\n if (value.toneMapping !== undefined) {\r\n if (value.toneMapping === \"none\") {\r\n this._details.scene.imageProcessingConfiguration.toneMappingEnabled = false;\r\n } else {\r\n switch (value.toneMapping) {\r\n case \"standard\":\r\n this._details.scene.imageProcessingConfiguration.toneMappingType = ImageProcessingConfiguration.TONEMAPPING_STANDARD;\r\n break;\r\n case \"aces\":\r\n this._details.scene.imageProcessingConfiguration.toneMappingType = ImageProcessingConfiguration.TONEMAPPING_ACES;\r\n break;\r\n case \"neutral\":\r\n this._details.scene.imageProcessingConfiguration.toneMappingType = ImageProcessingConfiguration.TONEMAPPING_KHR_PBR_NEUTRAL;\r\n break;\r\n }\r\n this._details.scene.imageProcessingConfiguration.toneMappingEnabled = true;\r\n }\r\n }\r\n\r\n if (value.contrast !== undefined) {\r\n this._details.scene.imageProcessingConfiguration.contrast = value.contrast;\r\n }\r\n\r\n if (value.exposure !== undefined) {\r\n this._details.scene.imageProcessingConfiguration.exposure = value.exposure;\r\n }\r\n\r\n this._details.scene.imageProcessingConfiguration.isEnabled = this._toneMappingEnabled || this._contrast !== 1 || this._exposure !== 1;\r\n\r\n this._snapshotHelper.enableSnapshotRendering();\r\n }\r\n\r\n /**\r\n * Gets information about loading activity.\r\n * @remarks\r\n * false indicates no loading activity.\r\n * true indicates loading activity with no progress information.\r\n * A number between 0 and 1 indicates loading activity with progress information.\r\n */\r\n public get loadingProgress(): boolean | number {\r\n if (this._isLoadingModel) {\r\n return this._modelLoadingProgress ?? true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * The list of animation names for the currently loaded model.\r\n */\r\n public get animations(): readonly string[] {\r\n return this._details.model?.animationGroups.map((group) => group.name) ?? [];\r\n }\r\n\r\n /**\r\n * The currently selected animation index.\r\n */\r\n public get selectedAnimation(): number {\r\n return this._selectedAnimation;\r\n }\r\n\r\n public set selectedAnimation(value: number) {\r\n value = Math.round(Clamp(value, -1, this.animations.length - 1));\r\n if (value !== this._selectedAnimation) {\r\n const startAnimation = this.isAnimationPlaying;\r\n if (this._activeAnimation) {\r\n this._activeAnimationObservers.forEach((observer) => observer.remove());\r\n this._activeAnimationObservers = [];\r\n this._activeAnimation.pause();\r\n this._activeAnimation.goToFrame(0);\r\n }\r\n\r\n this._selectedAnimation = value;\r\n\r\n if (this._activeAnimation) {\r\n this._activeAnimation.goToFrame(0);\r\n this._activeAnimation.play(true);\r\n\r\n if (!startAnimation) {\r\n this.pauseAnimation();\r\n }\r\n\r\n this._activeAnimationObservers = [\r\n this._activeAnimation.onAnimationGroupPlayObservable.add(() => {\r\n this.onIsAnimationPlayingChanged.notifyObservers();\r\n }),\r\n this._activeAnimation.onAnimationGroupPauseObservable.add(() => {\r\n this.onIsAnimationPlayingChanged.notifyObservers();\r\n }),\r\n this._activeAnimation.onAnimationGroupEndObservable.add(() => {\r\n this.onIsAnimationPlayingChanged.notifyObservers();\r\n this.onAnimationProgressChanged.notifyObservers();\r\n }),\r\n ];\r\n\r\n this._updateCamera(!this._isLoadingModel);\r\n }\r\n\r\n this.onSelectedAnimationChanged.notifyObservers();\r\n this.onAnimationProgressChanged.notifyObservers();\r\n }\r\n }\r\n\r\n /**\r\n * True if an animation is currently playing.\r\n */\r\n public get isAnimationPlaying(): boolean {\r\n return this._activeAnimation?.isPlaying ?? false;\r\n }\r\n\r\n /**\r\n * The speed scale at which animations are played.\r\n */\r\n public get animationSpeed(): number {\r\n return this._animationSpeed;\r\n }\r\n\r\n public set animationSpeed(value: number) {\r\n this._animationSpeed = value;\r\n this._applyAnimationSpeed();\r\n this.onAnimationSpeedChanged.notifyObservers();\r\n }\r\n\r\n /**\r\n * The current point on the selected animation timeline, normalized between 0 and 1.\r\n */\r\n public get animationProgress(): number {\r\n if (this._activeAnimation) {\r\n return this._activeAnimation.getCurrentFrame() / (this._activeAnimation.to - this._activeAnimation.from);\r\n }\r\n return 0;\r\n }\r\n\r\n public set animationProgress(value: number) {\r\n if (this._activeAnimation) {\r\n this._activeAnimation.goToFrame(value * (this._activeAnimation.to - this._activeAnimation.from));\r\n this.onAnimationProgressChanged.notifyObservers();\r\n this._autoRotationBehavior.resetLastInteractionTime();\r\n }\r\n }\r\n\r\n private get _activeAnimation(): Nullable<AnimationGroup> {\r\n return this._details.model?.animationGroups[this._selectedAnimation] ?? null;\r\n }\r\n\r\n /**\r\n * The list of material variant names for the currently loaded model.\r\n */\r\n public get materialVariants(): readonly string[] {\r\n return this._materialVariantsController?.variants ?? [];\r\n }\r\n\r\n /**\r\n * The currently selected material variant.\r\n */\r\n public get selectedMaterialVariant(): Nullable<string> {\r\n return this._materialVariantsController?.selectedVariant ?? null;\r\n }\r\n\r\n public set selectedMaterialVariant(value: string) {\r\n if (value !== this.selectedMaterialVariant && this._materialVariantsController?.variants.includes(value)) {\r\n this._snapshotHelper.disableSnapshotRendering();\r\n this._materialVariantsController.selectedVariant = value;\r\n this._snapshotHelper.enableSnapshotRendering();\r\n this.onSelectedMaterialVariantChanged.notifyObservers();\r\n }\r\n }\r\n\r\n /**\r\n * Loads a 3D model from the specified URL.\r\n * @remarks\r\n * If a model is already loaded, it will be unloaded before loading the new model.\r\n * @param source A url or File or ArrayBufferView that points to the model to load.\r\n * @param options The options to use when loading the model.\r\n * @param abortSignal An optional signal that can be used to abort the loading process.\r\n */\r\n public async loadModel(source: string | File | ArrayBufferView, options?: LoadModelOptions, abortSignal?: AbortSignal): Promise<void> {\r\n await this._updateModel(source, options, abortSignal);\r\n }\r\n\r\n /**\r\n * Unloads the current 3D model if one is loaded.\r\n * @param abortSignal An optional signal that can be used to abort the reset.\r\n */\r\n public async resetModel(abortSignal?: AbortSignal): Promise<void> {\r\n await this._updateModel(undefined, undefined, abortSignal);\r\n }\r\n\r\n private async _updateModel(source: string | File | ArrayBufferView | undefined, options?: LoadModelOptions, abortSignal?: AbortSignal): Promise<void> {\r\n this._throwIfDisposedOrAborted(abortSignal);\r\n\r\n const originalOnProgress = options?.onProgress;\r\n const onProgress = (event: ISceneLoaderProgressEvent) => {\r\n originalOnProgress?.(event);\r\n if (this._isLoadingModel) {\r\n this._modelLoadingProgress = event.lengthComputable ? event.loaded / event.total : null;\r\n this.onLoadingProgressChanged.notifyObservers();\r\n }\r\n };\r\n delete options?.onProgress;\r\n\r\n const originalOnMaterialVariantsLoaded = options?.pluginOptions?.gltf?.extensionOptions?.KHR_materials_variants?.onLoaded;\r\n const onMaterialVariantsLoaded: typeof originalOnMaterialVariantsLoaded = (controller) => {\r\n originalOnMaterialVariantsLoaded?.(controller);\r\n this._materialVariantsController = controller;\r\n };\r\n delete options?.pluginOptions?.gltf?.extensionOptions?.KHR_materials_variants?.onLoaded;\r\n\r\n const defaultOptions: LoadModelOptions = {\r\n // Pass a progress callback to update the loading progress.\r\n onProgress,\r\n pluginOptions: {\r\n gltf: {\r\n // Enable transparency as coverage by default to be 3D Commerce compliant by default.\r\n // https://doc.babylonjs.com/setup/support/3D_commerce_certif\r\n transparencyAsCoverage: true,\r\n extensionOptions: {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n KHR_materials_variants: {\r\n // Capture the material variants controller when it is loaded.\r\n onLoaded: onMaterialVariantsLoaded,\r\n },\r\n },\r\n },\r\n },\r\n };\r\n\r\n options = deepMerge(defaultOptions, options ?? {});\r\n\r\n this._loadModelAbortController?.abort(\"New model is being loaded before previous model finished loading.\");\r\n const abortController = (this._loadModelAbortController = new AbortController());\r\n\r\n await this._loadModelLock.lockAsync(async () => {\r\n throwIfAborted(abortSignal, abortController.signal);\r\n this._snapshotHelper.disableSnapshotRendering();\r\n this._details.model?.dispose();\r\n this._details.model = null;\r\n this._meshDataCache.clear();\r\n this._materialVariantsController = null;\r\n this.onSelectedMaterialVariantChanged.notifyObservers();\r\n this.selectedAnimation = -1;\r\n\r\n try {\r\n if (source) {\r\n this._isLoadingModel = true;\r\n this._modelLoadingProgress = 0;\r\n this.onLoadingProgressChanged.notifyObservers();\r\n this._details.model = await loadAssetContainerAsync(source, this._details.scene, options);\r\n this.onSelectedMaterialVariantChanged.notifyObservers();\r\n this._details.model.animationGroups.forEach((group) => {\r\n group.start(true, this.animationSpeed);\r\n group.pause();\r\n });\r\n this.selectedAnimation = options?.defaultAnimation ?? 0;\r\n this._snapshotHelper.fixMeshes(this._details.model.meshes);\r\n this._details.model.addAllToScene();\r\n }\r\n\r\n this._updateCamera();\r\n this._updateLight();\r\n this._applyAnimationSpeed();\r\n this.onModelChanged.notifyObservers();\r\n } catch (e) {\r\n this.onModelError.notifyObservers(e);\r\n throw e;\r\n } finally {\r\n this._isLoadingModel = false;\r\n this.onLoadingProgressChanged.notifyObservers();\r\n this._snapshotHelper.enableSnapshotRendering();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Loads an environment texture from the specified url and sets up a corresponding skybox.\r\n * @remarks\r\n * If an environment is already loaded, it will be unloaded before loading the new environment.\r\n * @param url The url of the environment texture to load.\r\n * @param options The options to use when loading the environment.\r\n * @param abortSignal An optional signal that can be used to abort the loading process.\r\n */\r\n public async loadEnvironment(url: string, options?: EnvironmentOptions, abortSignal?: AbortSignal): Promise<void> {\r\n await this._updateEnvironment(url, options, abortSignal);\r\n }\r\n\r\n /**\r\n * Unloads the current environment if one is loaded.\r\n * @param options The options to use when resetting the environment.\r\n * @param abortSignal An optional signal that can be used to abort the reset.\r\n */\r\n public async resetEnvironment(options?: EnvironmentOptions, abortSignal?: AbortSignal): Promise<void> {\r\n await this._updateEnvironment(undefined, options, abortSignal);\r\n }\r\n\r\n private async _updateEnvironment(url: Nullable<string | undefined>, options?: EnvironmentOptions, abortSignal?: AbortSignal): Promise<void> {\r\n this._throwIfDisposedOrAborted(abortSignal);\r\n\r\n options = options ?? defaultLoadEnvironmentOptions;\r\n if (!options.lighting && !options.skybox) {\r\n return;\r\n }\r\n\r\n const locks: AsyncLock[] = [];\r\n if (options.lighting) {\r\n this._loadEnvironmentAbortController?.abort(\"New environment lighting is being loaded before previous environment lighting finished loading.\");\r\n locks.push(this._loadEnvironmentLock);\r\n }\r\n if (options.skybox) {\r\n this._loadSkyboxAbortController?.abort(\"New environment skybox is being loaded before previous environment skybox finished loading.\");\r\n locks.push(this._loadSkyboxLock);\r\n }\r\n\r\n const environmentAbortController = (this._loadEnvironmentAbortController = options.lighting ? new AbortController() : null);\r\n const skyboxAbortController = (this._loadSkyboxAbortController = options.skybox ? new AbortController() : null);\r\n\r\n await AsyncLock.LockAsync(async () => {\r\n throwIfAborted(abortSignal, environmentAbortController?.signal, skyboxAbortController?.signal);\r\n this._snapshotHelper.disableSnapshotRendering();\r\n\r\n const dispose = () => {\r\n if (options.lighting) {\r\n this._details.scene.environmentTexture?.dispose();\r\n this._details.scene.environmentTexture = null;\r\n }\r\n if (options.skybox) {\r\n this._skybox?.dispose(undefined, true);\r\n this._skybox = null;\r\n this._details.scene.autoClear = true;\r\n }\r\n };\r\n\r\n // First dispose the current environment and/or skybox.\r\n dispose();\r\n\r\n try {\r\n if (url) {\r\n const cubeTexture = CubeTexture.CreateFromPrefilteredData(url, this._details.scene);\r\n\r\n if (options.lighting) {\r\n this._details.scene.environmentTexture = cubeTexture;\r\n }\r\n\r\n if (options.skybox) {\r\n const reflectionTexture = options.lighting ? cubeTexture.clone() : cubeTexture;\r\n this._skybox = createSkybox(this._details.scene, this._details.camera, reflectionTexture, this.skyboxBlur);\r\n this._snapshotHelper.fixMeshes([this._skybox]);\r\n this._details.scene.autoClear = false;\r\n }\r\n\r\n await new Promise<void>((resolve, reject) => {\r\n const successObserver = cubeTexture.onLoadObservable.addOnce(() => {\r\n successObserver.remove();\r\n errorObserver.remove();\r\n resolve();\r\n });\r\n\r\n const errorObserver = Texture.OnTextureLoadErrorObservable.add((texture) => {\r\n if (texture === cubeTexture) {\r\n successObserver.remove();\r\n errorObserver.remove();\r\n reject(new Error(\"Failed to load environment texture.\"));\r\n }\r\n });\r\n });\r\n }\r\n\r\n this._updateLight();\r\n this.onEnvironmentChanged.notifyObservers();\r\n } catch (e) {\r\n dispose();\r\n this.onEnvironmentError.notifyObservers(e);\r\n throw e;\r\n } finally {\r\n this._snapshotHelper.enableSnapshotRendering();\r\n }\r\n }, locks);\r\n }\r\n\r\n /**\r\n * Toggles the play/pause animation state if there is a selected animation.\r\n */\r\n public toggleAnimation() {\r\n if (this.isAnimationPlaying) {\r\n this.pauseAnimation();\r\n } else {\r\n this.playAnimation();\r\n }\r\n }\r\n\r\n /**\r\n * Plays the selected animation if there is one.\r\n */\r\n public playAnimation() {\r\n this._activeAnimation?.play(true);\r\n }\r\n\r\n /**\r\n * Pauses the selected animation if there is one.\r\n */\r\n public async pauseAnimation() {\r\n this._activeAnimation?.pause();\r\n }\r\n\r\n /**\r\n * Resets the camera to its initial pose.\r\n */\r\n public resetCamera() {\r\n this._details.camera.restoreState();\r\n }\r\n\r\n /**\r\n * Disposes of the resources held by the Viewer.\r\n */\r\n public dispose(): void {\r\n this.selectedAnimation = -1;\r\n this.animationProgress = 0;\r\n\r\n this._loadEnvironmentAbortController?.abort(\"Thew viewer is being disposed.\");\r\n this._loadModelAbortController?.abort(\"Thew viewer is being disposed.\");\r\n\r\n this._renderLoopController?.dispose();\r\n this._details.scene.dispose();\r\n\r\n this.onEnvironmentChanged.clear();\r\n this.onEnvironmentError.clear();\r\n this.onSkyboxBlurChanged.clear();\r\n this.onPostProcessingChanged.clear();\r\n this.onModelChanged.clear();\r\n this.onModelError.clear();\r\n this.onCameraAutoOrbitChanged.clear();\r\n this.onSelectedAnimationChanged.clear();\r\n this.onAnimationSpeedChanged.clear();\r\n this.onIsAnimationPlayingChanged.clear();\r\n this.onAnimationProgressChanged.clear();\r\n this.onLoadingProgressChanged.clear();\r\n\r\n this._imageProcessingConfigurationObserver.remove();\r\n\r\n this._isDisposed = true;\r\n }\r\n\r\n /**\r\n * retrun world and canvas coordinates of an hot spot\r\n * @param query mesh index and surface information to query the hot spot positions\r\n * @param result Query a Hot Spot and does the conversion for Babylon Hot spot to a more generic HotSpotPositions, without Vector types\r\n * @returns true if hotspot found\r\n */\r\n public getHotSpotToRef(query: Readonly<ViewerHotSpotQuery>, result: ViewerHotSpotResult): boolean {\r\n if (!this._details.model) {\r\n return false;\r\n }\r\n\r\n const worldNormal = this._tempVectors[2];\r\n const worldPos = this._tempVectors[1];\r\n const screenPos = this._tempVectors[0];\r\n\r\n if (query.type === \"surface\") {\r\n const mesh = this._details.model.meshes[query.meshIndex];\r\n if (!mesh) {\r\n return false;\r\n }\r\n\r\n if (!GetHotSpotToRef(mesh, query, worldPos, worldNormal)) {\r\n return false;\r\n }\r\n } else {\r\n worldPos.copyFromFloats(query.position[0], query.position[1], query.position[2]);\r\n worldNormal.copyFromFloats(query.normal[0], query.normal[1], query.normal[2]);\r\n }\r\n\r\n const renderWidth = this._engine.getRenderWidth(); // Get the canvas width\r\n const renderHeight = this._engine.getRenderHeight(); // Get the canvas height\r\n\r\n const viewportWidth = this._details.camera.viewport.width * renderWidth;\r\n const viewportHeight = this._details.camera.viewport.height * renderHeight;\r\n const scene = this._details.scene;\r\n\r\n Vector3.ProjectToRef(worldPos, Matrix.IdentityReadOnly, scene.getTransformMatrix(), new Viewport(0, 0, viewportWidth, viewportHeight), screenPos);\r\n result.screenPosition[0] = screenPos.x;\r\n result.screenPosition[1] = screenPos.y;\r\n result.worldPosition[0] = worldPos.x;\r\n result.worldPosition[1] = worldPos.y;\r\n result.worldPosition[2] = worldPos.z;\r\n\r\n // visibility\r\n const eyeToSurface = this._tempVectors[3];\r\n eyeToSurface.copyFrom(this._details.camera.globalPosition);\r\n eyeToSurface.subtractInPlace(worldPos);\r\n eyeToSurface.normalize();\r\n result.visibility = Vector3.Dot(eyeToSurface, worldNormal);\r\n\r\n return true;\r\n }\r\n\r\n private _suspendRendering(): IDisposable {\r\n this._renderLoopController?.dispose();\r\n this._suspendRenderCount++;\r\n let disposed = false;\r\n return {\r\n dispose: () => {\r\n if (!disposed) {\r\n disposed = true;\r\n this._suspendRenderCount--;\r\n if (this._suspendRenderCount === 0) {\r\n this._beginRendering();\r\n }\r\n }\r\n },\r\n };\r\n }\r\n\r\n private _beginRendering(): void {\r\n if (!this._renderLoopController) {\r\n const render = () => {\r\n this._details.scene.render();\r\n\r\n // Update the camera panning sensitivity related properties based on the camera's distance from the target.\r\n this._details.camera.panningSensibility = 5000 / this._details.camera.radius;\r\n this._details.camera.speed = this._details.camera.radius * 0.2;\r\n\r\n if (this.isAnimationPlaying) {\r\n this.onAnimationProgressChanged.notifyObservers();\r\n this._autoRotationBehavior.resetLastInteractionTime();\r\n }\r\n };\r\n\r\n this._engine.runRenderLoop(render);\r\n\r\n let disposed = false;\r\n this._renderLoopController = {\r\n dispose: () => {\r\n if (!disposed) {\r\n disposed = true;\r\n this._engine.stopRenderLoop(render);\r\n this._renderLoopController = null;\r\n }\r\n },\r\n };\r\n }\r\n }\r\n\r\n private _updateCamera(interpolate = false): void {\r\n this._details.camera.useFramingBehavior = true;\r\n const framingBehavior = this._details.camera.getBehaviorByName(\"Framing\") as FramingBehavior;\r\n framingBehavior.framingTime = 0;\r\n framingBehavior.elevationReturnTime = -1;\r\n\r\n this._details.camera.useAutoRotationBehavior = true;\r\n\r\n const currentAlpha = this._details.camera.alpha;\r\n const currentBeta = this._details.camera.beta;\r\n const currentRadius = this._details.camera.radius;\r\n const currentTarget = this._details.camera.target;\r\n\r\n const goalAlpha = Math.PI / 2;\r\n const goalBeta = Math.PI / 2.4;\r\n let goalRadius = 1;\r\n let goalTarget = currentTarget;\r\n\r\n if (this._details.model?.meshes.length) {\r\n // get bounds and prepare framing/camera radius from its values\r\n this._details.camera.lowerRadiusLimit = null;\r\n\r\n const maxExtents = computeMaxExtents(this._details.model.meshes, this._activeAnimation);\r\n const worldExtents = {\r\n min: new Vector3(Math.min(...maxExtents.map((e) => e.minimum.x)), Math.min(...maxExtents.map((e) => e.minimum.y)), Math.min(...maxExtents.map((e) => e.minimum.z))),\r\n max: new Vector3(Math.max(...maxExtents.map((e) => e.maximum.x)), Math.max(...maxExtents.map((e) => e.maximum.y)), Math.max(...maxExtents.map((e) => e.maximum.z))),\r\n };\r\n framingBehavior.zoomOnBoundingInfo(worldExtents.min, worldExtents.max);\r\n\r\n const worldSize = worldExtents.max.subtract(worldExtents.min);\r\n const worldCenter = worldExtents.min.add(worldSize.scale(0.5));\r\n\r\n goalRadius = worldSize.length() * 1.1;\r\n\r\n if (!isFinite(goalRadius)) {\r\n goalRadius = 1;\r\n worldCenter.copyFromFloats(0, 0, 0);\r\n }\r\n\r\n goalTarget = worldCenter;\r\n }\r\n this._details.camera.alpha = Math.PI / 2;\r\n this._details.camera.beta = Math.PI / 2.4;\r\n this._details.camera.radius = goalRadius;\r\n this._details.camera.target = goalTarget;\r\n this._details.camera.lowerRadiusLimit = goalRadius * 0.001;\r\n this._details.camera.upperRadiusLimit = goalRadius * 5;\r\n this._details.camera.minZ = goalRadius * 0.001;\r\n this._details.camera.maxZ = goalRadius * 1000;\r\n this._details.camera.wheelDeltaPercentage = 0.01;\r\n this._details.camera.useNaturalPinchZoom = true;\r\n this._details.camera.restoreStateInterpolationFactor = 0.1;\r\n this._details.camera.storeState();\r\n\r\n if (interpolate) {\r\n this._details.camera.alpha = currentAlpha;\r\n this._details.camera.beta = currentBeta;\r\n this._details.camera.radius = currentRadius;\r\n this._details.camera.target = currentTarget;\r\n this._details.camera.interpolateTo(goalAlpha, goalBeta, goalRadius, goalTarget);\r\n }\r\n\r\n updateSkybox(this._skybox, this._details.camera);\r\n }\r\n\r\n private _updateLight() {\r\n let shouldHaveDefaultLight: boolean;\r\n if (!this._details.model) {\r\n shouldHaveDefaultLight = false;\r\n } else {\r\n const hasModelProvidedLights = this._details.model.lights.length > 0;\r\n const hasImageBasedLighting = !!this._details.scene.environmentTexture;\r\n const hasMaterials = this._details.model.materials.length > 0;\r\n const hasNonPBRMaterials = this._details.model.materials.some((material) => !(material instanceof PBRMaterial));\r\n\r\n if (hasModelProvidedLights) {\r\n shouldHaveDefaultLight = false;\r\n } else {\r\n shouldHaveDefaultLight = !hasImageBasedLighting || !hasMaterials || hasNonPBRMaterials;\r\n }\r\n }\r\n\r\n if (shouldHaveDefaultLight) {\r\n if (!this._light) {\r\n this._light = new HemisphericLight(\"defaultLight\", Vector3.Up(), this._details.scene);\r\n }\r\n } else {\r\n this._light?.dispose();\r\n this._light = null;\r\n }\r\n }\r\n\r\n private _applyAnimationSpeed() {\r\n this._details.model?.animationGroups.forEach((group) => (group.speedRatio = this._animationSpeed));\r\n }\r\n\r\n private async _pick(screenX: number, screenY: number): Promise<Nullable<PickingInfo>> {\r\n await import(\"core/Culling/ray\");\r\n if (this._details.model) {\r\n const model = this._details.model;\r\n // Refresh bounding info to ensure morph target and skeletal animations are taken into account.\r\n model.meshes.forEach((mesh) => {\r\n let cache = this._meshDataCache.get(mesh);\r\n if (!cache) {\r\n cache = {};\r\n this._meshDataCache.set(mesh, cache);\r\n }\r\n mesh.refreshBoundingInfo({ applyMorph: true, applySkeleton: true, cache });\r\n });\r\n\r\n const pickingInfo = this._details.scene.pick(screenX, screenY, (mesh) => model.meshes.includes(mesh));\r\n if (pickingInfo.hit) {\r\n return pickingInfo;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Check for disposed or aborted state (basically everything that can interrupt an async operation).\r\n * @param abortSignals A set of optional AbortSignals to also check.\r\n */\r\n private _throwIfDisposedOrAborted(...abortSignals: (Nullable<AbortSignal> | undefined)[]): void {\r\n if (this._isDisposed) {\r\n throw new Error(\"Viewer is disposed.\");\r\n }\r\n\r\n throwIfAborted(...abortSignals);\r\n }\r\n}\r\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.2.1\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","// eslint-disable-next-line import/no-internal-modules\r\nimport type { AbstractEngine, AbstractEngineOptions, EngineOptions, IDisposable, Nullable, WebGPUEngineOptions } from \"core/index\";\r\n\r\nimport type { ViewerOptions } from \"./viewer\";\r\nimport { Viewer } from \"./viewer\";\r\n\r\n/**\r\n * Options for creating a Viewer instance that is bound to an HTML canvas.\r\n */\r\nexport type CanvasViewerOptions = ViewerOptions &\r\n (({ engine?: undefined } & AbstractEngineOptions) | ({ engine: \"WebGL\" } & EngineOptions) | ({ engine: \"WebGPU\" } & WebGPUEngineOptions));\r\nconst defaultCanvasViewerOptions: CanvasViewerOptions = {};\r\n\r\n/**\r\n * Chooses a default engine for the current browser environment.\r\n * @returns The default engine to use.\r\n */\r\nexport function getDefaultEngine(): NonNullable<CanvasViewerOptions[\"engine\"]> {\r\n // TODO: When WebGPU is fully production ready, we may want to prefer it if it is supported by the browser.\r\n return \"WebGL\";\r\n}\r\n\r\n/**\r\n * @experimental\r\n * Creates a Viewer instance that is bound to an HTML canvas.\r\n * @remarks\r\n * This function can be shared across multiple UI integrations (e.g. Web Components, React, etc.).\r\n * @param canvas The canvas element to bind the Viewer to.\r\n * @param options The options to use when creating the Viewer and binding it to the specified canvas.\r\n * @returns A Viewer instance that is bound to the specified canvas.\r\n */\r\nexport async function createViewerForCanvas(canvas: HTMLCanvasElement, options?: CanvasViewerOptions): Promise<Viewer> {\r\n const finalOptions = { ...defaultCanvasViewerOptions, ...options };\r\n const disposeActions: (() => void)[] = [];\r\n\r\n // If the canvas is resized, note that the engine needs a resize, but don't resize it here as it will result in flickering.\r\n let needsResize = false;\r\n const resizeObserver = new ResizeObserver(() => (needsResize = true));\r\n resizeObserver.observe(canvas);\r\n disposeActions.push(() => resizeObserver.disconnect());\r\n\r\n // Create an engine instance.\r\n let engine: AbstractEngine;\r\n switch (finalOptions.engine ?? getDefaultEngine()) {\r\n case \"WebGL\": {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-case-declarations\r\n const { Engine } = await import(\"core/Engines/engine\");\r\n engine = new Engine(canvas, undefined, options);\r\n break;\r\n }\r\n case \"WebGPU\": {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-case-declarations\r\n const { WebGPUEngine } = await import(\"core/Engines/webgpuEngine\");\r\n const webGPUEngine = new WebGPUEngine(canvas, options);\r\n await webGPUEngine.initAsync();\r\n engine = webGPUEngine;\r\n break;\r\n }\r\n }\r\n\r\n // Override the onInitialized callback to add in some specific behavior.\r\n const onInitialized = finalOptions.onInitialized;\r\n finalOptions.onInitialized = (details) => {\r\n // Resize if needed right before rendering the Viewer scene to avoid any flickering.\r\n const beforeRenderObserver = details.scene.onBeforeRenderObservable.add(() => {\r\n if (needsResize) {\r\n engine.resize();\r\n needsResize = false;\r\n }\r\n });\r\n disposeActions.push(() => beforeRenderObserver.remove());\r\n\r\n // If the canvas is not visible, suspend rendering.\r\n let offscreenRenderingSuspension: Nullable<IDisposable> = null;\r\n const intersectionObserver = new IntersectionObserver((entries) => {\r\n if (entries.length > 0) {\r\n if (entries[entries.length - 1].isIntersecting) {\r\n offscreenRenderingSuspension?.dispose();\r\n offscreenRenderingSuspension = null;\r\n } else {\r\n offscreenRenderingSuspension = details.suspendRendering();\r\n }\r\n }\r\n });\r\n intersectionObserver.observe(canvas);\r\n disposeActions.push(() => intersectionObserver.disconnect());\r\n\r\n // Call the original onInitialized callback, if one was provided.\r\n onInitialized?.(details);\r\n };\r\n\r\n // Instantiate the Viewer with the engine and options.\r\n const viewer = new Viewer(engine, finalOptions);\r\n disposeActions.push(viewer.dispose.bind(viewer));\r\n\r\n disposeActions.push(() => engine.dispose());\r\n\r\n // Override the Viewer's dispose method to add in additional cleanup.\r\n viewer.dispose = () => disposeActions.forEach((dispose) => dispose());\r\n\r\n return viewer;\r\n}\r\n","// eslint-disable-next-line import/no-internal-modules\r\nimport type { ArcRotateCamera, Nullable, Observable } from \"core/index\";\r\n\r\nimport type { PropertyValues, TemplateResult } from \"lit\";\r\nimport type { EnvironmentOptions, ToneMapping, ViewerDetails, ViewerHotSpotQuery } from \"./viewer\";\r\nimport type { CanvasViewerOptions } from \"./viewerFactory\";\r\n\r\nimport { LitElement, css, defaultConverter, html } from \"lit\";\r\nimport { customElement, property, query, state } from \"lit/decorators.js\";\r\n\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { AsyncLock } from \"core/Misc/asyncLock\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { isToneMapping, ViewerHotSpotResult } from \"./viewer\";\r\nimport { createViewerForCanvas, getDefaultEngine } from \"./viewerFactory\";\r\n\r\n// Icon SVG is pulled from https://iconcloud.design\r\nconst playFilledIcon =\r\n \"M5 5.27368C5 3.56682 6.82609 2.48151 8.32538 3.2973L20.687 10.0235C22.2531 10.8756 22.2531 13.124 20.687 13.9762L8.32538 20.7024C6.82609 21.5181 5 20.4328 5 18.726V5.27368Z\";\r\nconst pauseFilledIcon =\r\n \"M5.74609 3C4.7796 3 3.99609 3.7835 3.99609 4.75V19.25C3.99609 20.2165 4.7796 21 5.74609 21H9.24609C10.2126 21 10.9961 20.2165 10.9961 19.25V4.75C10.9961 3.7835 10.2126 3 9.24609 3H5.74609ZM14.7461 3C13.7796 3 12.9961 3.7835 12.9961 4.75V19.25C12.9961 20.2165 13.7796 21 14.7461 21H18.2461C19.2126 21 19.9961 20.2165 19.9961 19.25V4.75C19.9961 3.7835 19.2126 3 18.2461 3H14.7461Z\";\r\nconst arrowResetFilledIcon =\r\n \"M7.20711 2.54289C7.59763 2.93342 7.59763 3.56658 7.20711 3.95711L5.41421 5.75H13.25C17.6683 5.75 21.25 9.33172 21.25 13.75C21.25 18.1683 17.6683 21.75 13.25 21.75C8.83172 21.75 5.25 18.1683 5.25 13.75C5.25 13.1977 5.69772 12.75 6.25 12.75C6.80228 12.75 7.25 13.1977 7.25 13.75C7.25 17.0637 9.93629 19.75 13.25 19.75C16.5637 19.75 19.25 17.0637 19.25 13.75C19.25 10.4363 16.5637 7.75 13.25 7.75H5.41421L7.20711 9.54289C7.59763 9.93342 7.59763 10.5666 7.20711 10.9571C6.81658 11.3476 6.18342 11.3476 5.79289 10.9571L2.29289 7.45711C1.90237 7.06658 1.90237 6.43342 2.29289 6.04289L5.79289 2.54289C6.18342 2.15237 6.81658 2.15237 7.20711 2.54289Z\";\r\nconst targetFilledIcon =\r\n \"M12 14C13.1046 14 14 13.1046 14 12C14 10.8954 13.1046 10 12 10C10.8954 10 10 10.8954 10 12C10 13.1046 10.8954 14 12 14ZM6 12C6 8.68629 8.68629 6 12 6C15.3137 6 18 8.68629 18 12C18 15.3137 15.3137 18 12 18C8.68629 18 6 15.3137 6 12ZM12 8C9.79086 8 8 9.79086 8 12C8 14.2091 9.79086 16 12 16C14.2091 16 16 14.2091 16 12C16 9.79086 14.2091 8 12 8ZM2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4Z\";\r\n\r\nconst allowedAnimationSpeeds = [0.5, 1, 1.5, 2] as const;\r\n\r\n// Converts any standard html color string to a Color4 object.\r\nfunction parseColor(color: string | null | undefined): Nullable<Color4> {\r\n if (!color) {\r\n return null;\r\n }\r\n\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = canvas.height = 1;\r\n const context = canvas.getContext(\"2d\");\r\n\r\n if (!context) {\r\n throw new Error(\"Unable to get 2d context for parseColor\");\r\n }\r\n\r\n context.clearRect(0, 0, 1, 1);\r\n context.fillStyle = color;\r\n context.fillRect(0, 0, 1, 1);\r\n\r\n const data = context.getImageData(0, 0, 1, 1).data;\r\n return new Color4(data[0] / 255, data[1] / 255, data[2] / 255, data[3] / 255);\r\n}\r\n\r\ntype HotSpot = ViewerHotSpotQuery & { cameraOrbit?: [alpha: number, beta: number, radius: number] };\r\n\r\n// Custom events for the HTML3DElement.\r\ninterface HTML3DElementEventMap extends HTMLElementEventMap {\r\n viewerready: Event;\r\n viewerrender: Event;\r\n environmentchange: Event;\r\n environmenterror: ErrorEvent;\r\n modelchange: Event;\r\n modelerror: ErrorEvent;\r\n loadingprogresschange: Event;\r\n selectedanimationchange: Event;\r\n animationspeedchange: Event;\r\n animationplayingchange: Event;\r\n animationprogresschange: Event;\r\n selectedmaterialvariantchange: Event;\r\n}\r\n\r\n/**\r\n * Displays a 3D model using the Babylon.js Viewer.\r\n */\r\n@customElement(\"babylon-viewer\")\r\nexport class HTML3DElement extends LitElement {\r\n private readonly _viewerLock = new AsyncLock();\r\n private _viewerDetails?: Readonly<ViewerDetails>;\r\n\r\n // Bindings for properties that are synchronized both ways between the lower level Viewer and the HTML3DElement.\r\n private readonly _propertyBindings = [\r\n this._createPropertyBinding(\r\n \"clearColor\",\r\n (details) => details.scene.onClearColorChangedObservable,\r\n (details) => (details.scene.clearColor = this.clearColor ?? new Color4(0, 0, 0, 0)),\r\n (details) => (this.clearColor = details.scene.clearColor)\r\n ),\r\n this._createPropertyBinding(\r\n \"skyboxBlur\",\r\n (details) => details.viewer.onSkyboxBlurChanged,\r\n (details) => (details.viewer.skyboxBlur = this.skyboxBlur ?? details.viewer.skyboxBlur),\r\n (details) => (this.skyboxBlur = details.viewer.skyboxBlur)\r\n ),\r\n this._createPropertyBinding(\r\n \"toneMapping\",\r\n (details) => details.viewer.onPostProcessingChanged,\r\n (details) => {\r\n if (this.toneMapping) {\r\n details.viewer.postProcessing = { toneMapping: this.toneMapping };\r\n }\r\n },\r\n (details) => (this.toneMapping = details.viewer.postProcessing?.toneMapping)\r\n ),\r\n this._createPropertyBinding(\r\n \"contrast\",\r\n (details) => details.viewer.onPostProcessingChanged,\r\n (details) => (details.viewer.postProcessing = { contrast: this.contrast ?? undefined }),\r\n (details) => (this.contrast = details.viewer.postProcessing.contrast)\r\n ),\r\n this._createPropertyBinding(\r\n \"exposure\",\r\n (details) => details.viewer.onPostProcessingChanged,\r\n (details) => (details.viewer.postProcessing = { exposure: this.exposure ?? undefined }),\r\n (details) => (this.exposure = details.viewer.postProcessing.exposure)\r\n ),\r\n this._createPropertyBinding(\r\n \"cameraAutoOrbit\",\r\n (details) => details.viewer.onCameraAutoOrbitChanged,\r\n (details) => (details.viewer.cameraAutoOrbit = { enabled: this.cameraAutoOrbit }),\r\n (details) => (this.cameraAutoOrbit = details.viewer.cameraAutoOrbit.enabled)\r\n ),\r\n this._createPropertyBinding(\r\n \"cameraAutoOrbitSpeed\",\r\n (details) => details.viewer.onCameraAutoOrbitChanged,\r\n (details) => (details.viewer.cameraAutoOrbit = { speed: this.cameraAutoOrbitSpeed ?? undefined }),\r\n (details) => (this.cameraAutoOrbitSpeed = details.viewer.cameraAutoOrbit.speed)\r\n ),\r\n this._createPropertyBinding(\r\n \"cameraAutoOrbitDelay\",\r\n (details) => details.viewer.onCameraAutoOrbitChanged,\r\n (details) => (details.viewer.cameraAutoOrbit = { delay: this.cameraAutoOrbitDelay ?? undefined }),\r\n (details) => (this.cameraAutoOrbitDelay = details.viewer.cameraAutoOrbit.delay)\r\n ),\r\n this._createPropertyBinding(\r\n \"animationSpeed\",\r\n (details) => details.viewer.onAnimationSpeedChanged,\r\n (details) => (details.viewer.animationSpeed = this.animationSpeed),\r\n (details) => {\r\n let speed = details.viewer.animationSpeed;\r\n speed = allowedAnimationSpeeds.reduce((prev, curr) => (Math.abs(curr - speed) < Math.abs(prev - speed) ? curr : prev));\r\n this.animationSpeed = speed;\r\n this._dispatchCustomEvent(\"animationspeedchange\", (type) => new Event(type));\r\n }\r\n ),\r\n this._createPropertyBinding(\r\n \"selectedAnimation\",\r\n (details) => details.viewer.onSelectedAnimationChanged,\r\n (details) => (details.viewer.selectedAnimation = this.selectedAnimation ?? details.viewer.selectedAnimation),\r\n (details) => (this.selectedAnimation = details.viewer.selectedAnimation)\r\n ),\r\n this._createPropertyBinding(\r\n \"selectedMaterialVariant\",\r\n (details) => details.viewer.onSelectedMaterialVariantChanged,\r\n (details) => (details.viewer.selectedMaterialVariant = this.selectedMaterialVariant ?? details.viewer.selectedMaterialVariant ?? \"\"),\r\n (details) => (this.selectedMaterialVariant = details.viewer.selectedMaterialVariant)\r\n ),\r\n ] as const;\r\n\r\n /** @internal */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static override styles = css`\r\n :host {\r\n --ui-foreground-color: white;\r\n --ui-background-hue: 233;\r\n --ui-background-saturation: 8%;\r\n --ui-background-lightness: 39%;\r\n --ui-background-opacity: 0.75;\r\n --ui-background-color: hsla(var(--ui-background-hue), var(--ui-background-saturation), var(--ui-background-lightness), var(--ui-background-opacity));\r\n --ui-background-color-hover: hsla(\r\n var(--ui-background-hue),\r\n var(--ui-background-saturation),\r\n calc(var(--ui-background-lightness) - 10%),\r\n calc(var(--ui-background-opacity) - 0.1)\r\n );\r\n all: inherit;\r\n overflow: hidden;\r\n }\r\n\r\n .full-size {\r\n display: block;\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .canvas {\r\n outline: none;\r\n }\r\n\r\n .children-slot {\r\n position: absolute;\r\n top: 0;\r\n background: transparent;\r\n pointer-events: none;\r\n }\r\n\r\n .bar {\r\n position: absolute;\r\n width: calc(100% - 24px);\r\n min-width: 150px;\r\n max-width: 1280px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n background-color: var(--ui-background-color);\r\n }\r\n\r\n .bar-min {\r\n width: unset;\r\n min-width: unset;\r\n max-width: unset;\r\n }\r\n\r\n .loading-progress-outer {\r\n height: 4px;\r\n border-radius: 4px;\r\n border: 1px solid var(--ui-background-color);\r\n outline: none;\r\n top: 12px;\r\n pointer-events: none;\r\n transition: opacity 0.5s ease;\r\n }\r\n\r\n .loading-progress-outer-inactive {\r\n opacity: 0;\r\n /* Set the background color to the foreground color while in the inactive state so that the color seen is correct while fading out the opacity. */\r\n background-color: var(--ui-foreground-color);\r\n }\r\n\r\n .loading-progress-inner {\r\n width: 0;\r\n height: 100%;\r\n border-radius: inherit;\r\n background-color: var(--ui-foreground-color);\r\n transition: width 0.3s linear;\r\n }\r\n\r\n /* The right side of the inner progress bar starts aligned with the left side of the outer progress bar (container).\r\n So, if the width is 30%, then the left side of the inner progress bar moves a total of 130% of the width of the container.\r\n This is why the first keyframe is at 23% ((100/130)*30).\r\n */\r\n @keyframes indeterminate {\r\n 0% {\r\n left: 0%;\r\n width: 0%;\r\n }\r\n 23% {\r\n left: 0%;\r\n width: 30%;\r\n }\r\n 77% {\r\n left: 70%;\r\n width: 30%;\r\n }\r\n 100% {\r\n left: 100%;\r\n width: 0%;\r\n }\r\n }\r\n\r\n .loading-progress-inner-indeterminate {\r\n position: absolute;\r\n animation: indeterminate 1.5s infinite;\r\n animation-timing-function: linear;\r\n }\r\n\r\n .tool-bar {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n border-radius: 12px;\r\n border-color: var(--ui-foreground-color);\r\n height: 48px;\r\n bottom: 12px;\r\n color: var(--ui-foreground-color);\r\n -webkit-tap-highlight-color: transparent;\r\n }\r\n\r\n .tool-bar * {\r\n height: 100%;\r\n min-width: 48px;\r\n }\r\n\r\n .tool-bar .divider {\r\n min-width: 1px;\r\n margin: 0px 6px;\r\n height: 66%;\r\n background-color: var(--ui-foreground-color);\r\n }\r\n\r\n .tool-bar select {\r\n background: none;\r\n min-width: 52px;\r\n max-width: 128px;\r\n border: 1px solid transparent;\r\n border-radius: inherit;\r\n color: inherit;\r\n font-size: 14px;\r\n padding: 0px 12px;\r\n cursor: pointer;\r\n outline: none;\r\n appearance: none; /* Remove default styling */\r\n -webkit-appearance: none; /* Remove default styling for Safari */\r\n }\r\n\r\n .tool-bar .select-container {\r\n position: relative;\r\n display: flex;\r\n border-radius: inherit;\r\n border-width: 0;\r\n padding: 0;\r\n }\r\n\r\n .tool-bar .select-container select {\r\n position: absolute;\r\n min-width: 0;\r\n width: 100%;\r\n }\r\n\r\n .tool-bar .select-container button {\r\n position: absolute;\r\n border-width: 0;\r\n }\r\n\r\n .tool-bar select:hover,\r\n .tool-bar select:focus {\r\n background-color: var(--ui-background-color-hover);\r\n }\r\n\r\n .tool-bar select option {\r\n background-color: var(--ui-background-color);\r\n color: var(--ui-foreground-color);\r\n }\r\n\r\n .tool-bar select:focus-visible {\r\n border-color: inherit;\r\n }\r\n\r\n .tool-bar button {\r\n background: none;\r\n border: 1px solid transparent;\r\n border-radius: inherit;\r\n color: inherit;\r\n padding: 0;\r\n cursor: pointer;\r\n outline: none;\r\n }\r\n\r\n .tool-bar button:hover {\r\n background-color: var(--ui-background-color-hover);\r\n }\r\n\r\n .tool-bar button:focus-visible {\r\n border-color: inherit;\r\n }\r\n\r\n .tool-bar button svg {\r\n width: 32px;\r\n height: 32px;\r\n }\r\n\r\n .animation-timeline {\r\n display: flex;\r\n flex: 1;\r\n position: relative;\r\n overflow: hidden;\r\n cursor: pointer;\r\n align-items: center;\r\n border-radius: inherit;\r\n border-color: inherit;\r\n }\r\n\r\n .animation-timeline-input {\r\n -webkit-appearance: none;\r\n cursor: pointer;\r\n width: 100%;\r\n height: 100%;\r\n outline: none;\r\n border: 1px solid transparent;\r\n border-radius: inherit;\r\n padding: 0 12px;\r\n background-color: transparent;\r\n }\r\n\r\n .animation-timeline-input:focus-visible {\r\n border-color: inherit;\r\n }\r\n\r\n /*Chrome -webkit */\r\n\r\n .animation-timeline-input::-webkit-slider-thumb {\r\n -webkit-appearance: none;\r\n width: 20px;\r\n height: 20px;\r\n border: 2px solid;\r\n color: var(--ui-foreground-color);\r\n border-radius: 50%;\r\n background: hsla(var(--ui-background-hue), var(--ui-background-saturation), var(--ui-background-lightness), 1);\r\n margin-top: -10px;\r\n }\r\n\r\n .animation-timeline-input::-webkit-slider-runnable-track {\r\n height: 2px;\r\n -webkit-appearance: none;\r\n background-color: var(--ui-foreground-color);\r\n }\r\n\r\n /** FireFox -moz */\r\n\r\n .animation-timeline-input::-moz-range-progress {\r\n height: 2px;\r\n background-color: var(--ui-foreground-color);\r\n }\r\n\r\n .animation-timeline-input::-moz-range-thumb {\r\n width: 16px;\r\n height: 16px;\r\n border: 2px solid var(--ui-foreground-color);\r\n border-radius: 50%;\r\n background: hsla(var(--ui-background-hue), var(--ui-background-saturation), var(--ui-background-lightness), 1);\r\n }\r\n\r\n .animation-timeline-input::-moz-range-track {\r\n height: 2px;\r\n background: var(--ui-foreground-color);\r\n }\r\n `;\r\n\r\n /**\r\n * Gets the underlying viewer details (when the underlying viewer is in a loaded state).\r\n * This is useful for advanced scenarios where direct access to the viewer or Babylon scene is needed.\r\n */\r\n public get viewerDetails() {\r\n return this._viewerDetails;\r\n }\r\n\r\n /**\r\n * Get hotspot world and screen values from a named hotspot\r\n * @param name slot of the hot spot\r\n * @param result resulting world and screen positions\r\n * @returns world position, world normal and screen space coordinates\r\n */\r\n public queryHotSpot(name: string, result: ViewerHotSpotResult): boolean {\r\n return this._queryHotSpot(name, result) != null;\r\n }\r\n\r\n private _queryHotSpot(name: string, result: ViewerHotSpotResult): Nullable<HotSpot> {\r\n if (this._viewerDetails) {\r\n const hotSpot = this.hotSpots?.[name];\r\n if (hotSpot) {\r\n if (this._viewerDetails.viewer.getHotSpotToRef(hotSpot, result)) {\r\n return hotSpot;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Updates the camera to focus on a named hotspot.\r\n * @param name The name of the hotspot to focus on.\r\n * @returns true if the hotspot was found and the camera was updated, false otherwise.\r\n */\r\n public focusHotSpot(name: string): boolean {\r\n const result = new ViewerHotSpotResult();\r\n const query = this._queryHotSpot(name, result);\r\n if (query && this._viewerDetails) {\r\n this._viewerDetails.viewer.pauseAnimation();\r\n const cameraOrbit = query.cameraOrbit ?? [undefined, undefined, undefined];\r\n this._viewerDetails.camera.interpolateTo(\r\n cameraOrbit[0],\r\n cameraOrbit[1],\r\n cameraOrbit[2],\r\n new Vector3(result.worldPosition[0], result.worldPosition[1], result.worldPosition[2])\r\n );\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * The engine to use for rendering.\r\n */\r\n @property({\r\n converter: (value: string | null): HTML3DElement[\"engine\"] => {\r\n if (value === \"WebGL\" || value === \"WebGPU\") {\r\n return value;\r\n }\r\n return getDefaultEngine();\r\n },\r\n })\r\n public engine: NonNullable<CanvasViewerOptions[\"engine\"]> = getDefaultEngine();\r\n\r\n /**\r\n * The model URL.\r\n */\r\n @property()\r\n public source: Nullable<string> = null;\r\n\r\n /**\r\n * Forces the model to be loaded with the specified extension.\r\n * @remarks\r\n * If this property is not set, the extension will be inferred from the model URL when possible.\r\n */\r\n @property()\r\n public extension: Nullable<string> = null;\r\n\r\n /**\r\n * The texture URLs used for lighting and skybox. Setting this property will set both environmentLighting and environmentSkybox.\r\n */\r\n @property({\r\n hasChanged: (newValue: HTML3DElement[\"environment\"], oldValue: HTML3DElement[\"environment\"]) => {\r\n return newValue.lighting !== oldValue.lighting || newValue.skybox !== oldValue.skybox;\r\n },\r\n })\r\n public get environment(): { lighting: Nullable<string>; skybox: Nullable<string> } {\r\n return { lighting: this.environmentLighting, skybox: this.environmentSkybox };\r\n }\r\n public set environment(url: string) {\r\n this.environmentLighting = url;\r\n this.environmentSkybox = url;\r\n }\r\n\r\n /**\r\n * The texture URL for lighting.\r\n */\r\n @property({ attribute: \"environment-lighting\" })\r\n public environmentLighting: Nullable<string> = null;\r\n\r\n /**\r\n * The texture URL for the skybox.\r\n */\r\n @property({ attribute: \"environment-skybox\" })\r\n public environmentSkybox: Nullable<string> = null;\r\n\r\n @state()\r\n private _loadingProgress: boolean | number = false;\r\n\r\n /**\r\n * Gets information about loading activity.\r\n * @remarks\r\n * false indicates no loading activity.\r\n * true indicates loading activity with no progress information.\r\n * A number between 0 and 1 indicates loading activity with progress information.\r\n */\r\n public get loadingProgress(): boolean | number {\r\n return this._loadingProgress;\r\n }\r\n\r\n /**\r\n * A value between 0 and 1 that specifies how much to blur the skybox.\r\n */\r\n @property({ attribute: \"skybox-blur\" })\r\n public skyboxBlur: Nullable<number> = null;\r\n\r\n /**\r\n * The tone mapping to use for rendering the scene.\r\n */\r\n @property({\r\n attribute: \"tone-mapping\",\r\n converter: (value: string | null): ToneMapping => {\r\n if (!value || !isToneMapping(value)) {\r\n return \"neutral\";\r\n }\r\n return value;\r\n },\r\n })\r\n public toneMapping: Nullable<ToneMapping> = null;\r\n\r\n /**\r\n * The contrast applied to the scene.\r\n */\r\n @property()\r\n public contrast: Nullable<number> = null;\r\n\r\n /**\r\n * The exposure applied to the scene.\r\n */\r\n @property()\r\n public exposure: Nullable<number> = null;\r\n\r\n /**\r\n * The clear color (e.g. background color) for the viewer.\r\n */\r\n @property({\r\n attribute: \"clear-color\",\r\n reflect: true,\r\n converter: {\r\n fromAttribute: parseColor,\r\n toAttribute: (color: Nullable<Color4>) => (color ? color.toHexString() : null),\r\n },\r\n })\r\n public clearColor: Nullable<Color4> = null;\r\n\r\n /**\r\n * Enables or disables camera auto-orbit.\r\n */\r\n @property({\r\n attribute: \"camera-auto-orbit\",\r\n type: Boolean,\r\n })\r\n public cameraAutoOrbit = false;\r\n\r\n /**\r\n * The speed at which the camera auto-orbits around the target.\r\n */\r\n @property({\r\n attribute: \"camera-auto-orbit-speed\",\r\n type: Number,\r\n })\r\n public cameraAutoOrbitSpeed: Nullable<number> = null;\r\n\r\n /**\r\n * The delay in milliseconds before the camera starts auto-orbiting.\r\n */\r\n @property({\r\n attribute: \"camera-auto-orbit-delay\",\r\n type: Number,\r\n })\r\n public cameraAutoOrbitDelay: Nullable<number> = null;\r\n\r\n /**\r\n * Camera orbit can only be set as an attribute, and is set on the camera each time a new model is loaded.\r\n * For access to the real time camera properties, use viewerDetails.camera.\r\n */\r\n @property({\r\n attribute: \"camera-orbit\",\r\n converter: (value) => {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const array = value.split(/\\s+/);\r\n if (array.length !== 3) {\r\n throw new Error(\"cameraOrbit should be defined as 'alpha beta radius'\");\r\n }\r\n\r\n return (camera: ArcRotateCamera) => {\r\n for (const [index, property] of ([\"alpha\", \"beta\", \"radius\"] as const).entries()) {\r\n const value = array[index];\r\n if (value !== \"auto\") {\r\n camera[property] = Number(value);\r\n }\r\n }\r\n };\r\n },\r\n })\r\n private _cameraOrbitCoercer: Nullable<(camera: ArcRotateCamera) => void> = null;\r\n\r\n /**\r\n * Camera target can only be set as an attribute, and is set on the camera each time a new model is loaded.\r\n * For access to the real time camera properties, use viewerDetails.camera.\r\n */\r\n @property({\r\n attribute: \"camera-target\",\r\n converter: (value) => {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const array = value.split(/\\s+/);\r\n if (array.length !== 3) {\r\n throw new Error(\"cameraTarget should be defined as 'x y z'\");\r\n }\r\n\r\n return (camera: ArcRotateCamera) => {\r\n const target = camera.target;\r\n for (const [index, property] of ([\"x\", \"y\", \"z\"] as const).entries()) {\r\n const value = array[index];\r\n if (value !== \"auto\") {\r\n target[property] = Number(value);\r\n }\r\n }\r\n camera.target = target.clone();\r\n };\r\n },\r\n })\r\n private _cameraTargetCoercer: Nullable<(camera: ArcRotateCamera) => void> = null;\r\n\r\n /**\r\n * A string value that encodes one or more hotspots.\r\n */\r\n @property({\r\n attribute: \"hotspots\",\r\n converter: (value) => {\r\n if (!value) {\r\n return {};\r\n }\r\n\r\n return JSON.parse(value);\r\n },\r\n })\r\n public hotSpots: Readonly<Record<string, HotSpot>> = {};\r\n\r\n private get _hasHotSpots(): boolean {\r\n return Object.keys(this.hotSpots).length > 0;\r\n }\r\n\r\n /**\r\n * True if the default animation should play automatically when a model is loaded.\r\n */\r\n @property({ attribute: \"animation-auto-play\", reflect: true, type: Boolean })\r\n public animationAutoPlay = false;\r\n\r\n /**\r\n * The list of animation names for the currently loaded model.\r\n */\r\n public get animations(): readonly string[] {\r\n return this._animations;\r\n }\r\n\r\n private get _hasAnimations(): boolean {\r\n return this._animations.length > 0;\r\n }\r\n\r\n /**\r\n * The currently selected animation index.\r\n */\r\n @property({ attribute: \"selected-animation\", type: Number })\r\n public selectedAnimation: Nullable<number> = null;\r\n\r\n /**\r\n * True if an animation is currently playing.\r\n */\r\n public get isAnimationPlaying(): boolean {\r\n return this._isAnimationPlaying;\r\n }\r\n\r\n /**\r\n * The speed scale at which animations are played.\r\n */\r\n @property({ attribute: \"animation-speed\" })\r\n public animationSpeed = 1;\r\n\r\n /**\r\n * The current point on the selected animation timeline, normalized between 0 and 1.\r\n */\r\n @property({ attribute: false })\r\n public animationProgress = 0;\r\n\r\n @state()\r\n private _animations: readonly string[] = [];\r\n\r\n @state()\r\n private _isAnimationPlaying = false;\r\n\r\n /**\r\n * The list of material variants for the currently loaded model.\r\n */\r\n public get materialVariants(): readonly string[] {\r\n return this._viewerDetails?.viewer.materialVariants ?? [];\r\n }\r\n\r\n /**\r\n * The currently selected material variant.\r\n */\r\n @property({ attribute: \"material-variant\" })\r\n public selectedMaterialVariant: Nullable<string> = null;\r\n\r\n @query(\"#canvasContainer\")\r\n private _canvasContainer: HTMLDivElement | undefined;\r\n\r\n @query(\"#materialSelect\")\r\n private _materialSelect: HTMLSelectElement | undefined;\r\n\r\n /**\r\n * Toggles the play/pause animation state if there is a selected animation.\r\n */\r\n public toggleAnimation() {\r\n this._viewerDetails?.viewer.toggleAnimation();\r\n }\r\n\r\n /**\r\n * Resets the camera to its initial pose.\r\n */\r\n public resetCamera() {\r\n this._viewerDetails?.viewer.resetCamera();\r\n }\r\n\r\n /** @internal */\r\n public override connectedCallback(): void {\r\n super.connectedCallback();\r\n this._setupViewer();\r\n }\r\n\r\n /** @internal */\r\n public override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this._tearDownViewer();\r\n }\r\n\r\n /** @internal */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (this._materialSelect) {\r\n this._materialSelect.value = \"\";\r\n }\r\n\r\n if (changedProperties.get(\"engine\")) {\r\n this._tearDownViewer();\r\n this._setupViewer();\r\n } else {\r\n this._propertyBindings.filter((binding) => changedProperties.has(binding.property)).forEach((binding) => binding.updateViewer());\r\n\r\n if (changedProperties.has(\"source\")) {\r\n this._updateModel();\r\n }\r\n\r\n if (changedProperties.has(\"environmentLighting\") || changedProperties.has(\"environmentSkybox\")) {\r\n this._updateEnv({\r\n lighting: changedProperties.has(\"environmentLighting\"),\r\n skybox: changedProperties.has(\"environmentSkybox\"),\r\n });\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected override render() {\r\n const showProgressBar = this.loadingProgress !== false;\r\n // If loadingProgress is true, then the progress bar is indeterminate so the value doesn't matter.\r\n const progressValue = typeof this.loadingProgress === \"boolean\" ? 0 : this.loadingProgress * 100;\r\n const isIndeterminate = this.loadingProgress === true;\r\n\r\n const progressBar = html`\r\n <div part=\"progress-bar\" class=\"bar loading-progress-outer ${showProgressBar ? \"\" : \"loading-progress-outer-inactive\"}\" aria-label=\"Loading Progress\">\r\n <div\r\n class=\"loading-progress-inner ${isIndeterminate ? \"loading-progress-inner-indeterminate\" : \"\"}\"\r\n style=\"${isIndeterminate ? \"\" : `width: ${progressValue}%`}\"\r\n ></div>\r\n </div>\r\n `;\r\n\r\n // Setup the list of toolbar controls.\r\n let toolbarControls: TemplateResult[] = [];\r\n if (this._viewerDetails?.model != null) {\r\n // If the model has animations, add animation controls.\r\n if (this._hasAnimations) {\r\n toolbarControls.push(html`\r\n <div class=\"animation-timeline\">\r\n <button aria-label=\"${this.isAnimationPlaying ? \"Pause\" : \"Play\"}\" @click=\"${this.toggleAnimation}\">\r\n ${!this.isAnimationPlaying\r\n ? html`\r\n <svg viewBox=\"0 0 24 24\">\r\n <path d=\"${playFilledIcon}\" fill=\"currentColor\"></path>\r\n </svg>\r\n `\r\n : html`\r\n <svg viewBox=\"0 0 24 24\">\r\n <path d=\"${pauseFilledIcon}\" fill=\"currentColor\"></path>\r\n </svg>\r\n `}\r\n </button>\r\n <input\r\n aria-label=\"Animation Progress\"\r\n class=\"animation-timeline-input\"\r\n type=\"range\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.0001\"\r\n .value=\"${this.animationProgress}\"\r\n @input=\"${this._onAnimationTimelineChanged}\"\r\n @pointerdown=\"${this._onAnimationTimelinePointerDown}\"\r\n />\r\n </div>\r\n <select aria-label=\"Select Animation Speed\" @change=\"${this._onAnimationSpeedChanged}\">\r\n ${allowedAnimationSpeeds.map((speed) => html`<option value=\"${speed}\" .selected=\"${this.animationSpeed === speed}\">${speed}x</option> `)}\r\n </select>\r\n ${this.animations.length > 1\r\n ? html`<select aria-label=\"Select Animation\" @change=\"${this._onSelectedAnimationChanged}\">\r\n ${this.animations.map((name, index) => html`<option value=\"${index}\" .selected=\"${this.selectedAnimation === index}\">${name}</option>`)}\r\n </select>`\r\n : \"\"}\r\n `);\r\n }\r\n\r\n // If the model has material variants, add material variant controls.\r\n if (this.materialVariants.length > 1) {\r\n toolbarControls.push(html`\r\n <select aria-label=\"Select Material Variant\" @change=\"${this._onMaterialVariantChanged}\">\r\n ${this.materialVariants.map((name) => html`<option value=\"${name}\" .selected=\"${this.selectedMaterialVariant === name}\">${name}</option>`)}\r\n </select>\r\n `);\r\n }\r\n\r\n // Always include a button to reset the camera pose.\r\n toolbarControls.push(html`\r\n <button aria-label=\"Reset Camera Pose\" @click=\"${this.resetCamera}\">\r\n <svg viewBox=\"0 0 24 24\">\r\n <path d=\"${arrowResetFilledIcon}\" fill=\"currentColor\"></path>\r\n </svg>\r\n </button>\r\n `);\r\n\r\n // If hotspots have been defined, add hotspot controls.\r\n if (this._hasHotSpots) {\r\n toolbarControls.push(html`\r\n <div class=\"select-container\">\r\n <select id=\"materialSelect\" aria-label=\"Select HotSpot\" @change=\"${this._onHotSpotsChanged}\">\r\n <!-- When the select is forced to be less wide than the options, padding on the right is lost. Pad with white space. -->\r\n ${Object.keys(this.hotSpots).map((name) => html`<option value=\"${name}\">${name}&nbsp;&nbsp;</option>`)}\r\n </select>\r\n <!-- This button is not actually interactive, we want input to pass through to the select below. -->\r\n <button style=\"pointer-events: none\">\r\n <svg viewBox=\"0 0 24 24\">\r\n <path d=\"${targetFilledIcon}\" fill=\"currentColor\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n `);\r\n }\r\n\r\n // Add a vertical divider between each toolbar control.\r\n const controlCount = toolbarControls.length;\r\n const separator = html`<div class=\"divider\"></div>`;\r\n toolbarControls = toolbarControls.reduce((toolbarControls, toolbarControl, index) => {\r\n if (index < controlCount - 1) {\r\n return [...toolbarControls, toolbarControl, separator];\r\n } else {\r\n return [...toolbarControls, toolbarControl];\r\n }\r\n }, new Array<TemplateResult>());\r\n }\r\n\r\n // NOTE: The unnamed 'slot' element holds all child elements of the <babylon-viewer> that do not specify a 'slot' attribute.\r\n return html`\r\n <div class=\"full-size\">\r\n <div id=\"canvasContainer\" class=\"full-size\"></div>\r\n <slot class=\"full-size children-slot\"></slot>\r\n <slot name=\"progress-bar\"> ${progressBar}</slot>\r\n ${toolbarControls.length === 0\r\n ? \"\"\r\n : html`\r\n <slot name=\"tool-bar\">\r\n <div part=\"tool-bar\" class=\"bar ${this._hasAnimations ? \"\" : \"bar-min\"} tool-bar\">${toolbarControls}</div>\r\n </slot>\r\n `}\r\n </div>\r\n `;\r\n }\r\n\r\n // eslint-disable-next-line babylonjs/available\r\n override addEventListener<K extends keyof HTML3DElementEventMap>(\r\n type: K,\r\n listener: (this: HTMLElement, ev: HTML3DElementEventMap[K]) => any,\r\n options?: boolean | AddEventListenerOptions\r\n ): void;\r\n override addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void {\r\n super.addEventListener(type as string, listener as EventListenerOrEventListenerObject, options as boolean | AddEventListenerOptions);\r\n }\r\n\r\n private _dispatchCustomEvent<TEvent extends keyof HTML3DElementEventMap>(type: TEvent, event: (type: TEvent) => HTML3DElementEventMap[TEvent]) {\r\n this.dispatchEvent(event(type));\r\n }\r\n\r\n private _onSelectedAnimationChanged(event: Event) {\r\n const selectElement = event.target as HTMLSelectElement;\r\n this.selectedAnimation = Number(selectElement.value);\r\n }\r\n\r\n private _onAnimationSpeedChanged(event: Event) {\r\n const selectElement = event.target as HTMLSelectElement;\r\n this.animationSpeed = Number(selectElement.value);\r\n }\r\n\r\n private _onAnimationTimelineChanged(event: Event) {\r\n if (this._viewerDetails) {\r\n const input = event.target as HTMLInputElement;\r\n const value = Number(input.value);\r\n if (value !== this.animationProgress) {\r\n this._viewerDetails.viewer.animationProgress = value;\r\n }\r\n }\r\n }\r\n\r\n private _onAnimationTimelinePointerDown(event: Event) {\r\n if (this._viewerDetails?.viewer.isAnimationPlaying) {\r\n this._viewerDetails.viewer.pauseAnimation();\r\n const input = event.target as HTMLInputElement;\r\n input.addEventListener(\"pointerup\", () => this._viewerDetails?.viewer.playAnimation(), { once: true });\r\n }\r\n }\r\n\r\n private _onMaterialVariantChanged(event: Event) {\r\n const selectElement = event.target as HTMLSelectElement;\r\n this.selectedMaterialVariant = selectElement.value;\r\n }\r\n\r\n private _onHotSpotsChanged(event: Event) {\r\n const selectElement = event.target as HTMLSelectElement;\r\n const hotSpotName = selectElement.value;\r\n // We don't actually want a selected value, this is just a one time trigger.\r\n selectElement.value = \"\";\r\n this.focusHotSpot(hotSpotName);\r\n }\r\n\r\n // Helper function to simplify keeping Viewer properties in sync with HTML3DElement properties.\r\n private _createPropertyBinding(\r\n property: keyof HTML3DElement,\r\n getObservable: (viewerDetails: Readonly<ViewerDetails>) => Observable<any>,\r\n updateViewer: (viewerDetails: Readonly<ViewerDetails>) => void,\r\n updateElement: (viewerDetails: Readonly<ViewerDetails>) => void\r\n ) {\r\n return {\r\n property,\r\n // Called each time a Viewer instance is created.\r\n onInitialized: (viewerDetails: Readonly<ViewerDetails>) => {\r\n getObservable(viewerDetails).add(() => {\r\n updateElement(viewerDetails);\r\n });\r\n updateViewer(viewerDetails);\r\n },\r\n // Called when the HTML3DElement property should be propagated to the Viewer.\r\n updateViewer: () => {\r\n if (this._viewerDetails) {\r\n updateViewer(this._viewerDetails);\r\n }\r\n },\r\n // Called to re-sync the HTML3DElement property with its corresponding attribute.\r\n syncToAttribute: () => {\r\n const descriptor = HTML3DElement.elementProperties.get(property);\r\n if (descriptor) {\r\n if (descriptor.attribute) {\r\n const attributeName = descriptor.attribute === true ? property : descriptor.attribute;\r\n if (this.hasAttribute(attributeName)) {\r\n const attributeValue = this.getAttribute(attributeName);\r\n\r\n const converter =\r\n typeof descriptor.converter === \"function\"\r\n ? descriptor.converter\r\n : descriptor.converter?.fromAttribute !== undefined\r\n ? descriptor.converter.fromAttribute\r\n : defaultConverter.fromAttribute;\r\n\r\n (this as any)[property] = converter ? converter(attributeValue, descriptor.type) : attributeValue;\r\n }\r\n }\r\n }\r\n },\r\n };\r\n }\r\n\r\n private async _setupViewer() {\r\n await this._viewerLock.lockAsync(async () => {\r\n // The first time the element is connected, the canvas container may not be available yet.\r\n // Wait for the first update if needed.\r\n if (!this._canvasContainer) {\r\n await this.updateComplete;\r\n }\r\n\r\n if (this._canvasContainer && !this._viewerDetails) {\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.className = \"full-size canvas\";\r\n canvas.setAttribute(\"touch-action\", \"none\");\r\n this._canvasContainer.appendChild(canvas);\r\n\r\n await createViewerForCanvas(canvas, {\r\n engine: this.engine,\r\n onInitialized: (details) => {\r\n this._viewerDetails = details;\r\n\r\n details.viewer.onEnvironmentChanged.add(() => {\r\n this._dispatchCustomEvent(\"environmentchange\", (type) => new Event(type));\r\n });\r\n\r\n details.viewer.onEnvironmentError.add((error) => {\r\n this._dispatchCustomEvent(\"environmenterror\", (type) => new ErrorEvent(type, { error }));\r\n });\r\n\r\n details.viewer.onModelChanged.add(() => {\r\n this._animations = [...details.viewer.animations];\r\n\r\n // When attributes are explicitly set, they are re-applied when a new model is loaded.\r\n this._propertyBindings.forEach((binding) => binding.syncToAttribute());\r\n\r\n // The same goes for camera pose attributes, but it is handled a little differently because there are no corresponding public properties\r\n // (since the underlying Babylon camera already has these properties).\r\n this._cameraOrbitCoercer?.(details.camera);\r\n this._cameraTargetCoercer?.(details.camera);\r\n\r\n // If animation auto play was set, then start the default animation (if possible).\r\n if (this.animationAutoPlay) {\r\n details.viewer.playAnimation();\r\n }\r\n\r\n this._dispatchCustomEvent(\"modelchange\", (type) => new Event(type));\r\n });\r\n\r\n details.viewer.onModelError.add((error) => {\r\n this._animations = [...details.viewer.animations];\r\n this._dispatchCustomEvent(\"modelerror\", (type) => new ErrorEvent(type, { error }));\r\n });\r\n\r\n details.viewer.onLoadingProgressChanged.add(() => {\r\n this._loadingProgress = details.viewer.loadingProgress;\r\n this._dispatchCustomEvent(\"loadingprogresschange\", (type) => new Event(type));\r\n });\r\n\r\n details.viewer.onIsAnimationPlayingChanged.add(() => {\r\n this._isAnimationPlaying = details.viewer.isAnimationPlaying ?? false;\r\n this._dispatchCustomEvent(\"animationplayingchange\", (type) => new Event(type));\r\n });\r\n\r\n details.viewer.onAnimationProgressChanged.add(() => {\r\n this.animationProgress = details.viewer.animationProgress ?? 0;\r\n this._dispatchCustomEvent(\"animationprogresschange\", (type) => new Event(type));\r\n });\r\n\r\n details.scene.onAfterRenderCameraObservable.add(() => {\r\n this._dispatchCustomEvent(\"viewerrender\", (type) => new Event(type));\r\n });\r\n\r\n this._updateModel();\r\n this._updateEnv({ lighting: true, skybox: true });\r\n\r\n this._propertyBindings.forEach((binding) => binding.onInitialized(details));\r\n\r\n this._dispatchCustomEvent(\"viewerready\", (type) => new Event(type));\r\n },\r\n });\r\n }\r\n });\r\n }\r\n\r\n private async _tearDownViewer() {\r\n await this._viewerLock.lockAsync(async () => {\r\n if (this._viewerDetails) {\r\n this._viewerDetails.viewer.dispose();\r\n this._viewerDetails = undefined;\r\n }\r\n\r\n // We want to replace the canvas for two reasons:\r\n // 1. When the viewer element is reconnected to the DOM, we don't want to briefly see the last frame of the previous model.\r\n // 2. If we are changing engines (e.g. WebGL to WebGPU), we need to create a new canvas for the new engine.\r\n if (this._canvasContainer && this._canvasContainer.firstElementChild) {\r\n this._canvasContainer.removeChild(this._canvasContainer.firstElementChild);\r\n }\r\n });\r\n }\r\n\r\n private async _updateModel() {\r\n if (this._viewerDetails) {\r\n try {\r\n if (this.source) {\r\n await this._viewerDetails.viewer.loadModel(this.source, { pluginExtension: this.extension ?? undefined, defaultAnimation: this.selectedAnimation ?? 0 });\r\n } else {\r\n await this._viewerDetails.viewer.resetModel();\r\n }\r\n } catch (error) {\r\n Logger.Log(error);\r\n }\r\n }\r\n }\r\n\r\n private async _updateEnv(options: EnvironmentOptions) {\r\n if (this._viewerDetails) {\r\n try {\r\n const updates: [url: Nullable<string>, options: EnvironmentOptions][] = [];\r\n\r\n if (options.lighting && options.skybox && this.environmentLighting === this.environmentSkybox) {\r\n updates.push([this.environmentLighting, { lighting: true, skybox: true }]);\r\n } else {\r\n if (options.lighting) {\r\n updates.push([this.environmentLighting, { lighting: true }]);\r\n }\r\n if (options.skybox) {\r\n updates.push([this.environmentSkybox, { skybox: true }]);\r\n }\r\n }\r\n\r\n updates.forEach(async ([url, options]) => {\r\n if (url) {\r\n await this._viewerDetails?.viewer.loadEnvironment(url, options);\r\n } else {\r\n await this._viewerDetails?.viewer.resetEnvironment(options);\r\n }\r\n });\r\n } catch (error) {\r\n Logger.Log(error);\r\n }\r\n }\r\n }\r\n}\r\n","// eslint-disable-next-line import/no-internal-modules\r\nimport type { IDisposable, Nullable } from \"core/index\";\r\n\r\nimport { LitElement, css, html } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport { HTML3DElement } from \"./viewerElement\";\r\nimport { ViewerHotSpotResult } from \"./viewer\";\r\n\r\n/**\r\n * Displays child elements at the screen space location of a hotspot in a babylon-viewer.\r\n * @remarks\r\n * The babylon-viewer-annotation element must be a child of a babylon-viewer element.\r\n */\r\n@customElement(\"babylon-viewer-annotation\")\r\nexport class HTML3DAnnotationElement extends LitElement {\r\n /** @internal */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static override styles = css`\r\n :host {\r\n display: inline-block;\r\n position: absolute;\r\n transition: opacity 0.25s;\r\n }\r\n :host([hidden]) {\r\n display: none;\r\n }\r\n :host(:state(back-facing)) {\r\n opacity: 0.2;\r\n }\r\n :host(:state(invalid)) {\r\n display: none;\r\n }\r\n `;\r\n\r\n private readonly _internals = this.attachInternals();\r\n private _viewerAttachment: Nullable<IDisposable> = null;\r\n\r\n /**\r\n * The name of the hotspot to track.\r\n */\r\n @property({ attribute: \"hotspot\" })\r\n public hotSpot: string = \"\";\r\n\r\n /** @internal */\r\n public override connectedCallback(): void {\r\n super.connectedCallback();\r\n this._internals.states?.add(\"invalid\");\r\n\r\n if (!(this.parentElement instanceof HTML3DElement)) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"The babylon-viewer-annotation element must be a child of a babylon-viewer element.\");\r\n return;\r\n }\r\n\r\n const viewerElement = this.parentElement;\r\n const hotSpotResult = new ViewerHotSpotResult();\r\n const onViewerRendered = () => {\r\n if (this.hotSpot) {\r\n if (viewerElement.queryHotSpot(this.hotSpot, hotSpotResult)) {\r\n const [screenX, screenY] = hotSpotResult.screenPosition;\r\n this.style.transform = `translate(${screenX}px, ${screenY}px)`;\r\n this._internals.states?.delete(\"invalid\");\r\n\r\n if (hotSpotResult.visibility <= 0) {\r\n this._internals.states?.add(\"back-facing\");\r\n } else {\r\n this._internals.states?.delete(\"back-facing\");\r\n }\r\n } else {\r\n this._internals.states?.add(\"invalid\");\r\n }\r\n }\r\n };\r\n\r\n viewerElement.addEventListener(\"viewerrender\", onViewerRendered);\r\n this._viewerAttachment = {\r\n dispose() {\r\n viewerElement.removeEventListener(\"viewerrender\", onViewerRendered);\r\n },\r\n };\r\n }\r\n\r\n /** @internal */\r\n public override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this._viewerAttachment?.dispose();\r\n this._viewerAttachment = null;\r\n\r\n this._internals.states?.add(\"invalid\");\r\n }\r\n\r\n /** @internal */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected override render() {\r\n return html` <slot></slot> `;\r\n }\r\n}\r\n"],"names":["t","e","s","o","r","n","i","S","c","h","a","l","p","d","u","f","y","LitElement","html","defaultConverter","css","property","state","query","customElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAU;AA4C3E;;;;AAIG;AACG,SAAU,aAAa,CAAC,KAAa,EAAA;AACvC,IAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC,KAAoB,CAAC;AAC5D;AAEA,SAAS,cAAc,CAAC,GAAG,YAAmD,EAAA;AAC1E,IAAA,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE;QAC/B,MAAM,EAAE,cAAc,EAAE;;AAEhC;AAEA,SAAS,YAAY,CAAC,KAAY,EAAE,MAAc,EAAE,iBAA8B,EAAE,IAAY,EAAA;IAC5F,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC;IAC1D,MAAM,iBAAiB,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;;AAE1D,IAAA,iBAAiB,CAAC,4BAA4B,GAAG,IAAI,4BAA4B,EAAE;AACnF,IAAA,iBAAiB,CAAC,eAAe,GAAG,KAAK;AACzC,IAAA,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB;AACvD,IAAA,IAAI,iBAAiB,CAAC,iBAAiB,EAAE;QACrC,iBAAiB,CAAC,iBAAiB,CAAC,eAAe,GAAG,OAAO,CAAC,WAAW;;AAE7E,IAAA,iBAAiB,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI;AAC3C,IAAA,iBAAiB,CAAC,eAAe,GAAG,IAAI;AACxC,IAAA,iBAAiB,CAAC,gBAAgB,GAAG,IAAI;AACzC,IAAA,SAAS,CAAC,QAAQ,GAAG,iBAAiB;AACtC,IAAA,SAAS,CAAC,UAAU,GAAG,KAAK;AAC5B,IAAA,SAAS,CAAC,gBAAgB,GAAG,IAAI;AAEjC,IAAA,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;AAE/B,IAAA,OAAO,SAAS;AACpB;AAEA,SAAS,YAAY,CAAC,MAAsB,EAAE,MAAc,EAAA;AACxD,IAAA,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;AAC3D;AA8DA,MAAM,6BAA6B,GAAG;AAClC,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,MAAM,EAAE,IAAI;CACuB;AA+BvC;;AAEG;MACU,mBAAmB,CAAA;AAAhC,IAAA,WAAA,GAAA;AACI;;AAEG;AACa,QAAA,IAAA,CAAA,cAAc,GAA2B,CAAC,GAAG,EAAE,GAAG,CAAC;AAEnE;;AAEG;QACa,IAAa,CAAA,aAAA,GAAsC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAElF;;AAEG;QACI,IAAU,CAAA,UAAA,GAAW,GAAG;;AAClC;AAED;;;;;AAKG;MACU,MAAM,CAAA;IAyGf,WACqB,CAAA,OAAuB,EACxC,OAAuB,EAAA;QADN,IAAO,CAAA,OAAA,GAAP,OAAO;AArG5B;;AAEG;AACa,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,UAAU,EAAQ;AAE7D;;AAEG;AACa,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,UAAU,EAAW;AAE9D;;AAEG;AACa,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,UAAU,EAAQ;AAE5D;;AAEG;AACa,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,UAAU,EAAQ;AAEhE;;AAEG;AACa,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,UAAU,EAAQ;AAEvD;;AAEG;AACa,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,UAAU,EAAW;AAExD;;AAEG;AACa,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,UAAU,EAAQ;AAEjE;;AAEG;AACa,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,UAAU,EAAQ;AAEjE;;AAEG;AACa,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,UAAU,EAAQ;AAEnE;;AAEG;AACa,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,UAAU,EAAQ;AAEhE;;AAEG;AACa,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,UAAU,EAAQ;AAEpE;;AAEG;AACa,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,UAAU,EAAQ;AAEnE;;AAEG;AACa,QAAA,IAAA,CAAA,gCAAgC,GAAG,IAAI,UAAU,EAAQ;QAExD,IAAY,CAAA,YAAA,GAAG,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC;AAE1C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAgC;QAIjE,IAAqB,CAAA,qBAAA,GAA0B,IAAI;QACnD,IAA2B,CAAA,2BAAA,GAAyC,IAAI;QACxE,IAAO,CAAA,OAAA,GAAmB,IAAI;QAC9B,IAAW,CAAA,WAAA,GAAW,GAAG;QACzB,IAAM,CAAA,MAAA,GAA+B,IAAI;QAMzC,IAAmB,CAAA,mBAAA,GAAG,CAAC;QACvB,IAAW,CAAA,WAAA,GAAG,KAAK;AAEV,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,SAAS,EAAE;QACzC,IAAyB,CAAA,yBAAA,GAA8B,IAAI;AAElD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,SAAS,EAAE;QAC/C,IAA+B,CAAA,+BAAA,GAA8B,IAAI;AAExD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,SAAS,EAAE;QAC1C,IAA0B,CAAA,0BAAA,GAA8B,IAAI;QAE5D,IAAe,CAAA,eAAA,GAAG,KAAK;QACvB,IAAqB,CAAA,qBAAA,GAAqB,IAAI;QAE9C,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;QACvB,IAAyB,CAAA,yBAAA,GAA+B,EAAE;QAC1D,IAAe,CAAA,eAAA,GAAG,CAAC;QAMvB;YACI,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;YAGrC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,4BAA4B,CAAC,kBAAkB;YAChF,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,4BAA4B,CAAC,eAAe;YAC1E,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,4BAA4B,CAAC,QAAQ;YAC5D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,4BAA4B,CAAC,QAAQ;AAE5D,YAAA,IAAI,CAAC,qCAAqC,GAAG,KAAK,CAAC,4BAA4B,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAK;gBACxG,IAAI,UAAU,GAAG,KAAK;gBAEtB,IAAI,IAAI,CAAC,mBAAmB,KAAK,KAAK,CAAC,4BAA4B,CAAC,kBAAkB,EAAE;oBACpF,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,4BAA4B,CAAC,kBAAkB;oBAChF,UAAU,GAAG,IAAI;;gBAGrB,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,4BAA4B,CAAC,eAAe,EAAE;oBAC9E,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,4BAA4B,CAAC,eAAe;oBAC1E,UAAU,GAAG,IAAI;;gBAGrB,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,4BAA4B,CAAC,QAAQ,EAAE;oBAChE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,4BAA4B,CAAC,QAAQ;oBAC5D,UAAU,GAAG,IAAI;;gBAGrB,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,4BAA4B,CAAC,QAAQ,EAAE;oBAChE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,4BAA4B,CAAC,QAAQ;oBAC5D,UAAU,GAAG,IAAI;;gBAGrB,IAAI,UAAU,EAAE;AACZ,oBAAA,IAAI,CAAC,uBAAuB,CAAC,eAAe,EAAE;;AAEtD,aAAC,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC;AAC3F,YAAA,MAAM,CAAC,sBAAsB,GAAG,KAAK;YAErC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,WAAW,KAAI;AAChD,gBAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;AAC1F,gBAAA,IAAI,WAAW,EAAE,WAAW,EAAE;oBAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC;;;oBAGxG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACrF,oBAAA,MAAM,CAAC,MAAM,GAAG,QAAQ;AACxB,oBAAA,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC;;qBAC3E;oBACH,MAAM,CAAC,YAAY,EAAE;;AAE7B,aAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC;YAEtC,IAAI,CAAC,QAAQ,GAAG;AACZ,gBAAA,MAAM,EAAE,IAAI;gBACZ,KAAK;gBACL,MAAM;AACN,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,gBAAgB,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;AAChD,gBAAA,IAAI,EAAE,CAAC,OAAe,EAAE,OAAe,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;aAC3E;;QAEL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI;QAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI;QACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,GAAG,IAAI;QAC/C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI;AACjD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,4BAA4B,EAAE,EAAE,EAAE,CAAC;AAC7G,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE;AACpC,QAAA,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAyB;;QAG3G,IAAI,CAAC,cAAc,GAAG;AAClB,YAAA,WAAW,EAAE,SAAS;SACzB;;QAGD,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,MAAK,GAAG,CAAC;QAEvC,IAAI,CAAC,eAAe,EAAE;QAEtB,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;;AAG3C;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO;AACH,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC5E,YAAA,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,iBAAiB;AACnD,YAAA,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,oBAAoB;SACzD;;IAGL,IAAW,eAAe,CAAC,KAAyC,EAAA;AAChE,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;AAC/E,YAAA,IAAI,KAAK,CAAC,OAAO,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC;;iBACzD;gBACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC;;;AAIvE,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;YAC3B,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,GAAG,KAAK,CAAC,KAAK;;AAGjE,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;YAC3B,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,GAAG,KAAK,CAAC,KAAK;;AAG9D,QAAA,IAAI,CAAC,wBAAwB,CAAC,eAAe,EAAE;;AAGnD;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW;;IAG3B,IAAW,UAAU,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;AACtC,gBAAA,IAAI,QAAQ,YAAY,WAAW,EAAE;AACjC,oBAAA,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE;AAC/C,oBAAA,QAAQ,CAAC,YAAY,GAAG,GAAG,GAAG,KAAK;AACnC,oBAAA,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE;;;AAGtD,YAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE;;;AAIlD;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,IAAI,WAAwB;AAC5B,QAAA,QAAQ,IAAI,CAAC,gBAAgB;YACzB,KAAK,4BAA4B,CAAC,oBAAoB;gBAClD,WAAW,GAAG,UAAU;gBACxB;YACJ,KAAK,4BAA4B,CAAC,gBAAgB;gBAC9C,WAAW,GAAG,MAAM;gBACpB;YACJ,KAAK,4BAA4B,CAAC,2BAA2B;gBACzD,WAAW,GAAG,SAAS;gBACvB;AACJ,YAAA;gBACI,WAAW,GAAG,MAAM;gBACpB;;QAGR,OAAO;YACH,WAAW;YACX,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;SAC3B;;IAGL,IAAW,cAAc,CAAC,KAAwC,EAAA;AAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE;AAE/C,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,EAAE;gBAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,4BAA4B,CAAC,kBAAkB,GAAG,KAAK;;iBACxE;AACH,gBAAA,QAAQ,KAAK,CAAC,WAAW;AACrB,oBAAA,KAAK,UAAU;AACX,wBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,4BAA4B,CAAC,eAAe,GAAG,4BAA4B,CAAC,oBAAoB;wBACpH;AACJ,oBAAA,KAAK,MAAM;AACP,wBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,4BAA4B,CAAC,eAAe,GAAG,4BAA4B,CAAC,gBAAgB;wBAChH;AACJ,oBAAA,KAAK,SAAS;AACV,wBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,4BAA4B,CAAC,eAAe,GAAG,4BAA4B,CAAC,2BAA2B;wBAC3H;;gBAER,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,4BAA4B,CAAC,kBAAkB,GAAG,IAAI;;;AAIlF,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,4BAA4B,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ;;AAG9E,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,4BAA4B,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ;;QAG9E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,4BAA4B,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC;AAErI,QAAA,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE;;AAGlD;;;;;;AAMG;AACH,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,qBAAqB,IAAI,IAAI;;AAG7C,QAAA,OAAO,KAAK;;AAGhB;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;;AAGhF;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB;;IAGlC,IAAW,iBAAiB,CAAC,KAAa,EAAA;QACtC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,kBAAkB,EAAE;AACnC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB;AAC9C,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;AACvE,gBAAA,IAAI,CAAC,yBAAyB,GAAG,EAAE;AACnC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC7B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;;AAGtC,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AAE/B,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAEhC,IAAI,CAAC,cAAc,EAAE;oBACjB,IAAI,CAAC,cAAc,EAAE;;gBAGzB,IAAI,CAAC,yBAAyB,GAAG;oBAC7B,IAAI,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,GAAG,CAAC,MAAK;AAC1D,wBAAA,IAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE;AACtD,qBAAC,CAAC;oBACF,IAAI,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,GAAG,CAAC,MAAK;AAC3D,wBAAA,IAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE;AACtD,qBAAC,CAAC;oBACF,IAAI,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,GAAG,CAAC,MAAK;AACzD,wBAAA,IAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE;AAClD,wBAAA,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE;AACrD,qBAAC,CAAC;iBACL;gBAED,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;;AAG7C,YAAA,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE;AACjD,YAAA,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE;;;AAIzD;;AAEG;AACH,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,SAAS,IAAI,KAAK;;AAGpD;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe;;IAG/B,IAAW,cAAc,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC5B,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,uBAAuB,CAAC,eAAe,EAAE;;AAGlD;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;;AAE5G,QAAA,OAAO,CAAC;;IAGZ,IAAW,iBAAiB,CAAC,KAAa,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChG,YAAA,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE;AACjD,YAAA,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,EAAE;;;AAI7D,IAAA,IAAY,gBAAgB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI;;AAGhF;;AAEG;AACH,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,2BAA2B,EAAE,QAAQ,IAAI,EAAE;;AAG3D;;AAEG;AACH,IAAA,IAAW,uBAAuB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,2BAA2B,EAAE,eAAe,IAAI,IAAI;;IAGpE,IAAW,uBAAuB,CAAC,KAAa,EAAA;AAC5C,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,2BAA2B,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtG,YAAA,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE;AAC/C,YAAA,IAAI,CAAC,2BAA2B,CAAC,eAAe,GAAG,KAAK;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE;AAC9C,YAAA,IAAI,CAAC,gCAAgC,CAAC,eAAe,EAAE;;;AAI/D;;;;;;;AAOG;AACI,IAAA,MAAM,SAAS,CAAC,MAAuC,EAAE,OAA0B,EAAE,WAAyB,EAAA;QACjH,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC;;AAGzD;;;AAGG;IACI,MAAM,UAAU,CAAC,WAAyB,EAAA;QAC7C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC;;AAGtD,IAAA,MAAM,YAAY,CAAC,MAAmD,EAAE,OAA0B,EAAE,WAAyB,EAAA;AACjI,QAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC;AAE3C,QAAA,MAAM,kBAAkB,GAAG,OAAO,EAAE,UAAU;AAC9C,QAAA,MAAM,UAAU,GAAG,CAAC,KAAgC,KAAI;AACpD,YAAA,kBAAkB,GAAG,KAAK,CAAC;AAC3B,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;AACvF,gBAAA,IAAI,CAAC,wBAAwB,CAAC,eAAe,EAAE;;AAEvD,SAAC;QACD,OAAO,OAAO,EAAE,UAAU;AAE1B,QAAA,MAAM,gCAAgC,GAAG,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,QAAQ;AACzH,QAAA,MAAM,wBAAwB,GAA4C,CAAC,UAAU,KAAI;AACrF,YAAA,gCAAgC,GAAG,UAAU,CAAC;AAC9C,YAAA,IAAI,CAAC,2BAA2B,GAAG,UAAU;AACjD,SAAC;QACD,OAAO,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,QAAQ;AAEvF,QAAA,MAAM,cAAc,GAAqB;;YAErC,UAAU;AACV,YAAA,aAAa,EAAE;AACX,gBAAA,IAAI,EAAE;;;AAGF,oBAAA,sBAAsB,EAAE,IAAI;AAC5B,oBAAA,gBAAgB,EAAE;;AAEd,wBAAA,sBAAsB,EAAE;;AAEpB,4BAAA,QAAQ,EAAE,wBAAwB;AACrC,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;SACJ;QAED,OAAO,GAAG,SAAS,CAAC,cAAc,EAAE,OAAO,IAAI,EAAE,CAAC;AAElD,QAAA,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC,mEAAmE,CAAC;QAC1G,MAAM,eAAe,IAAI,IAAI,CAAC,yBAAyB,GAAG,IAAI,eAAe,EAAE,CAAC;QAEhF,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,YAAW;AAC3C,YAAA,cAAc,CAAC,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC;AACnD,YAAA,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE;AAC/C,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI;AAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI;AACvC,YAAA,IAAI,CAAC,gCAAgC,CAAC,eAAe,EAAE;AACvD,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAE3B,YAAA,IAAI;gBACA,IAAI,MAAM,EAAE;AACR,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,oBAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC;AAC9B,oBAAA,IAAI,CAAC,wBAAwB,CAAC,eAAe,EAAE;AAC/C,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;AACzF,oBAAA,IAAI,CAAC,gCAAgC,CAAC,eAAe,EAAE;AACvD,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;wBAClD,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC;wBACtC,KAAK,CAAC,KAAK,EAAE;AACjB,qBAAC,CAAC;oBACF,IAAI,CAAC,iBAAiB,GAAG,OAAO,EAAE,gBAAgB,IAAI,CAAC;AACvD,oBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1D,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE;;gBAGvC,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,gBAAA,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE;;YACvC,OAAO,CAAC,EAAE;AACR,gBAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;AACpC,gBAAA,MAAM,CAAC;;oBACD;AACN,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,gBAAA,IAAI,CAAC,wBAAwB,CAAC,eAAe,EAAE;AAC/C,gBAAA,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE;;AAEtD,SAAC,CAAC;;AAGN;;;;;;;AAOG;AACI,IAAA,MAAM,eAAe,CAAC,GAAW,EAAE,OAA4B,EAAE,WAAyB,EAAA;QAC7F,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC;;AAG5D;;;;AAIG;AACI,IAAA,MAAM,gBAAgB,CAAC,OAA4B,EAAE,WAAyB,EAAA;QACjF,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC;;AAG1D,IAAA,MAAM,kBAAkB,CAAC,GAAiC,EAAE,OAA4B,EAAE,WAAyB,EAAA;AACvH,QAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC;AAE3C,QAAA,OAAO,GAAG,OAAO,IAAI,6BAA6B;QAClD,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACtC;;QAGJ,MAAM,KAAK,GAAgB,EAAE;AAC7B,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC,iGAAiG,CAAC;AAC9I,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;;AAEzC,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC,6FAA6F,CAAC;AACrI,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;QAGpC,MAAM,0BAA0B,IAAI,IAAI,CAAC,+BAA+B,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,GAAG,IAAI,CAAC;QAC3H,MAAM,qBAAqB,IAAI,IAAI,CAAC,0BAA0B,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,eAAe,EAAE,GAAG,IAAI,CAAC;AAE/G,QAAA,MAAM,SAAS,CAAC,SAAS,CAAC,YAAW;YACjC,cAAc,CAAC,WAAW,EAAE,0BAA0B,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,CAAC;AAC9F,YAAA,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE;YAE/C,MAAM,OAAO,GAAG,MAAK;AACjB,gBAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;oBAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,EAAE,OAAO,EAAE;oBACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI;;AAEjD,gBAAA,IAAI,OAAO,CAAC,MAAM,EAAE;oBAChB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;AACtC,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;oBACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI;;AAE5C,aAAC;;AAGD,YAAA,OAAO,EAAE;AAET,YAAA,IAAI;gBACA,IAAI,GAAG,EAAE;AACL,oBAAA,MAAM,WAAW,GAAG,WAAW,CAAC,yBAAyB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAEnF,oBAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;wBAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,GAAG,WAAW;;AAGxD,oBAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAChB,wBAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,WAAW;wBAC9E,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC;wBAC1G,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK;;oBAGzC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;wBACxC,MAAM,eAAe,GAAG,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAK;4BAC9D,eAAe,CAAC,MAAM,EAAE;4BACxB,aAAa,CAAC,MAAM,EAAE;AACtB,4BAAA,OAAO,EAAE;AACb,yBAAC,CAAC;wBAEF,MAAM,aAAa,GAAG,OAAO,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AACvE,4BAAA,IAAI,OAAO,KAAK,WAAW,EAAE;gCACzB,eAAe,CAAC,MAAM,EAAE;gCACxB,aAAa,CAAC,MAAM,EAAE;AACtB,gCAAA,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;;AAEhE,yBAAC,CAAC;AACN,qBAAC,CAAC;;gBAGN,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE;;YAC7C,OAAO,CAAC,EAAE;AACR,gBAAA,OAAO,EAAE;AACT,gBAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;AAC1C,gBAAA,MAAM,CAAC;;oBACD;AACN,gBAAA,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE;;SAErD,EAAE,KAAK,CAAC;;AAGb;;AAEG;IACI,eAAe,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,cAAc,EAAE;;aAClB;YACH,IAAI,CAAC,aAAa,EAAE;;;AAI5B;;AAEG;IACI,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC;;AAGrC;;AAEG;AACI,IAAA,MAAM,cAAc,GAAA;AACvB,QAAA,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE;;AAGlC;;AAEG;IACI,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE;;AAGvC;;AAEG;IACI,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC;AAE1B,QAAA,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC,gCAAgC,CAAC;AAC7E,QAAA,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC,gCAAgC,CAAC;AAEvE,QAAA,IAAI,CAAC,qBAAqB,EAAE,OAAO,EAAE;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE;AAE7B,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;AACjC,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAC/B,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;AAChC,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE;AACrC,QAAA,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE;AACvC,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;AACpC,QAAA,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE;AACxC,QAAA,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE;AACvC,QAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE;AAErC,QAAA,IAAI,CAAC,qCAAqC,CAAC,MAAM,EAAE;AAEnD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAG3B;;;;;AAKG;IACI,eAAe,CAAC,KAAmC,EAAE,MAA2B,EAAA;AACnF,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACtB,YAAA,OAAO,KAAK;;QAGhB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AAEtC,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AAC1B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;YACxD,IAAI,CAAC,IAAI,EAAE;AACP,gBAAA,OAAO,KAAK;;AAGhB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE;AACtD,gBAAA,OAAO,KAAK;;;aAEb;YACH,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAChF,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;QAGjF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;AAEpD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,WAAW;AACvE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,YAAY;AAC1E,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;AAEjC,QAAA,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,kBAAkB,EAAE,EAAE,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,SAAS,CAAC;QACjJ,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;;QAGpC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACzC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC;AAC1D,QAAA,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC;QACtC,YAAY,CAAC,SAAS,EAAE;QACxB,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC;AAE1D,QAAA,OAAO,IAAI;;IAGP,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,qBAAqB,EAAE,OAAO,EAAE;QACrC,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,QAAQ,GAAG,KAAK;QACpB,OAAO;YACH,OAAO,EAAE,MAAK;gBACV,IAAI,CAAC,QAAQ,EAAE;oBACX,QAAQ,GAAG,IAAI;oBACf,IAAI,CAAC,mBAAmB,EAAE;AAC1B,oBAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,CAAC,EAAE;wBAChC,IAAI,CAAC,eAAe,EAAE;;;aAGjC;SACJ;;IAGG,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAK;AAChB,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;;AAG5B,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;AAC5E,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;AAE9D,gBAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,oBAAA,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE;AACjD,oBAAA,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,EAAE;;AAE7D,aAAC;AAED,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;YAElC,IAAI,QAAQ,GAAG,KAAK;YACpB,IAAI,CAAC,qBAAqB,GAAG;gBACzB,OAAO,EAAE,MAAK;oBACV,IAAI,CAAC,QAAQ,EAAE;wBACX,QAAQ,GAAG,IAAI;AACf,wBAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC;AACnC,wBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;;iBAExC;aACJ;;;IAID,aAAa,CAAC,WAAW,GAAG,KAAK,EAAA;QACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI;AAC9C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAoB;AAC5F,QAAA,eAAe,CAAC,WAAW,GAAG,CAAC;AAC/B,QAAA,eAAe,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,uBAAuB,GAAG,IAAI;QAEnD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;AAEjD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;AAC7B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG;QAC9B,IAAI,UAAU,GAAG,CAAC;QAClB,IAAI,UAAU,GAAG,aAAa;QAE9B,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;;YAEpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI;AAE5C,YAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACvF,YAAA,MAAM,YAAY,GAAG;AACjB,gBAAA,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnK,gBAAA,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;aACtK;YACD,eAAe,CAAC,kBAAkB,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC;AAEtE,YAAA,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;AAC7D,YAAA,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE9D,YAAA,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG;AAErC,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBACvB,UAAU,GAAG,CAAC;gBACd,WAAW,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;YAGvC,UAAU,GAAG,WAAW;;AAE5B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG;QACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU;QACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU;QACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,GAAG,UAAU,GAAG,KAAK;QAC1D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,GAAG,UAAU,GAAG,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU,GAAG,KAAK;QAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI;QAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,GAAG,IAAI;QAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,GAAG,IAAI;QAC/C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,+BAA+B,GAAG,GAAG;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE;QAEjC,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY;YACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,WAAW;YACvC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa;YAC3C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;;QAGnF,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;;IAG5C,YAAY,GAAA;AAChB,QAAA,IAAI,sBAA+B;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACtB,sBAAsB,GAAG,KAAK;;aAC3B;AACH,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACpE,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB;AACtE,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAC7D,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,EAAE,QAAQ,YAAY,WAAW,CAAC,CAAC;YAE/G,IAAI,sBAAsB,EAAE;gBACxB,sBAAsB,GAAG,KAAK;;iBAC3B;gBACH,sBAAsB,GAAG,CAAC,qBAAqB,IAAI,CAAC,YAAY,IAAI,kBAAkB;;;QAI9F,IAAI,sBAAsB,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;;;aAEtF;AACH,YAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;;IAIlB,oBAAoB,GAAA;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;;AAG9F,IAAA,MAAM,KAAK,CAAC,OAAe,EAAE,OAAe,EAAA;QAChD,MAAM,wCAA0B;AAChC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;;YAEjC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;gBACzC,IAAI,CAAC,KAAK,EAAE;oBACR,KAAK,GAAG,EAAE;oBACV,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;;AAExC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC9E,aAAC,CAAC;AAEF,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrG,YAAA,IAAI,WAAW,CAAC,GAAG,EAAE;AACjB,gBAAA,OAAO,WAAW;;;AAI1B,QAAA,OAAO,IAAI;;AAGf;;;AAGG;IACK,yBAAyB,CAAC,GAAG,YAAmD,EAAA;AACpF,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC;;AAG1C,QAAA,cAAc,CAAC,GAAG,YAAY,CAAC;;AAEtC;AAn7BG,CAAA,MAAA;AACI,IAAA,sBAAsB,EAAE;AAC5B,CAAC,GAAA;;AC5PL;AACA;AACA;AACA;AACA;AACA,MAAMA,GAAC,CAAC,UAAU,CAACC,GAAC,CAACD,GAAC,CAAC,UAAU,GAAG,KAAK,CAAC,GAAGA,GAAC,CAAC,QAAQ,EAAEA,GAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa,CAAC,SAAS,CAACE,GAAC,CAAC,MAAM,EAAE,CAACC,GAAC,CAAC,IAAI,OAAO,WAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGD,GAAC,CAAC,MAAM,KAAK,CAAC,mEAAmE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAGD,GAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAACE,GAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAEA,GAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAC,MAAMC,GAAC,CAAC,CAAC,EAAE,IAAIC,GAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAACH,GAAC,CAAC,CAACI,GAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,kEAAkE,CAAC,CAAC,CAAC,sFAAsF,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAID,GAAC,CAAC,CAAC,CAAC,CAAC,CAACH,GAAC,CAAC,CAAC,CAACK,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAGN,GAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,YAAY,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAACD,GAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAACQ,GAAC,CAACP,GAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAOG,GAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;ACJ5zC;AACA;AACA;AACA;AACA,GAAG,KAAK,CAAC,EAAE,CAACE,GAAC,CAAC,cAAc,CAACL,GAAC,CAAC,wBAAwB,CAACG,GAAC,CAAC,mBAAmB,CAACK,GAAC,CAAC,qBAAqB,CAACN,GAAC,CAAC,cAAc,CAACE,GAAC,CAAC,CAAC,MAAM,CAACK,GAAC,CAAC,UAAU,CAACF,GAAC,CAACE,GAAC,CAAC,YAAY,CAACC,GAAC,CAACH,GAAC,CAACA,GAAC,CAAC,WAAW,CAAC,EAAE,CAACI,GAAC,CAACF,GAAC,CAAC,8BAA8B,CAACG,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAACC,GAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAACH,GAAC,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAACI,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAACT,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACU,GAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAACF,GAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAACC,GAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAACL,GAAC,CAAC,mBAAmB,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,WAAW,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,EAAC,CAAC,WAAW,kBAAkB,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAACM,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAEf,GAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAACG,GAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,OAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAEY,GAAC,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAACH,GAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAACR,GAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAC,CAAC,OAAO,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAACQ,GAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAACA,GAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAGJ,GAAC,CAAC,CAAC,CAAC,CAAC,GAAGN,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAC,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAACH,GAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,aAAa,KAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,OAAOE,GAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,aAAa,IAAI,GAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,gBAAgB,IAAI,GAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAACY,GAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAACA,GAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAEC,GAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAC,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAC,CAAC,IAAI,cAAc,EAAE,CAAC,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,iBAAiB,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAACF,GAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAACA,GAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAACD,GAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAACF,GAAC,CAAC,uBAAuB,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC;;ACLz7K;AACA;AACA;AACA;AACA;AACK,MAACV,GAAC,CAAC,UAAU,CAACM,GAAC,CAACN,GAAC,CAAC,YAAY,CAAC,CAAC,CAACM,GAAC,CAACA,GAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAACL,GAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACE,GAAC,CAAC,GAAG,CAAC,CAAC,CAACE,GAAC,CAAC,CAAC,CAAC,EAAEF,GAAC,CAAC,CAAC,CAAC,CAACC,GAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAIA,GAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAe,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAACA,GAAC,CAAC,gBAAgB,CAACA,GAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,gCAAgC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA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CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9]}