angular-three 0.0.7 → 1.0.0-beta.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 (441) hide show
  1. package/esm2020/angular-three.mjs +1 -1
  2. package/esm2020/index.mjs +2 -35
  3. package/esm2020/lib/canvas.mjs +141 -128
  4. package/esm2020/lib/di/catalogue.mjs +7 -0
  5. package/esm2020/lib/directives/args.mjs +37 -17
  6. package/esm2020/lib/directives/repeat.mjs +5 -8
  7. package/esm2020/lib/events.mjs +341 -52
  8. package/esm2020/lib/loader.mjs +55 -0
  9. package/esm2020/lib/loop.mjs +137 -0
  10. package/esm2020/lib/renderer/di.mjs +3 -0
  11. package/esm2020/lib/renderer/enums.mjs +2 -0
  12. package/esm2020/lib/renderer/provider.mjs +19 -0
  13. package/esm2020/lib/renderer/renderer.mjs +293 -0
  14. package/esm2020/lib/renderer/state.mjs +350 -0
  15. package/esm2020/lib/renderer/utils.mjs +177 -0
  16. package/esm2020/lib/stores/rx-store.mjs +99 -0
  17. package/esm2020/lib/stores/store.mjs +190 -239
  18. package/esm2020/lib/types.mjs +1 -1
  19. package/esm2020/lib/utils/apply-props.mjs +37 -80
  20. package/esm2020/lib/utils/attach.mjs +29 -0
  21. package/esm2020/lib/utils/instance.mjs +43 -28
  22. package/esm2020/lib/utils/is.mjs +7 -11
  23. package/esm2020/lib/utils/make.mjs +30 -10
  24. package/esm2020/lib/utils/update.mjs +37 -0
  25. package/esm2020/lib/web/events.mjs +68 -0
  26. package/fesm2015/angular-three.mjs +2053 -2046
  27. package/fesm2015/angular-three.mjs.map +1 -1
  28. package/fesm2020/angular-three.mjs +2003 -1990
  29. package/fesm2020/angular-three.mjs.map +1 -1
  30. package/index.d.ts +1 -34
  31. package/lib/canvas.d.ts +29 -28
  32. package/lib/di/catalogue.d.ts +3 -0
  33. package/lib/directives/args.d.ts +8 -12
  34. package/lib/events.d.ts +7 -2
  35. package/lib/loader.d.ts +15 -0
  36. package/lib/{utils/loop.d.ts → loop.d.ts} +7 -6
  37. package/lib/renderer/di.d.ts +2 -0
  38. package/lib/renderer/enums.d.ts +25 -0
  39. package/lib/renderer/provider.d.ts +25 -0
  40. package/lib/renderer/renderer.d.ts +49 -0
  41. package/lib/renderer/state.d.ts +59 -0
  42. package/lib/renderer/utils.d.ts +20 -0
  43. package/lib/stores/rx-store.d.ts +17 -0
  44. package/lib/stores/store.d.ts +6 -23
  45. package/lib/types.d.ts +182 -191
  46. package/lib/utils/apply-props.d.ts +2 -6
  47. package/lib/utils/attach.d.ts +3 -0
  48. package/lib/utils/instance.d.ts +3 -3
  49. package/lib/utils/is.d.ts +6 -10
  50. package/lib/utils/make.d.ts +5 -2
  51. package/lib/utils/update.d.ts +4 -0
  52. package/lib/web/events.d.ts +4 -0
  53. package/package.json +30 -99
  54. package/attributes/README.md +0 -3
  55. package/attributes/index.d.ts +0 -22
  56. package/attributes/lib/buffer-attribute/buffer-attribute.d.ts +0 -8
  57. package/attributes/lib/color-attribute/color-attribute.d.ts +0 -8
  58. package/attributes/lib/common.d.ts +0 -1
  59. package/attributes/lib/float16-buffer-attribute/float16-buffer-attribute.d.ts +0 -8
  60. package/attributes/lib/float32-buffer-attribute/float32-buffer-attribute.d.ts +0 -8
  61. package/attributes/lib/float64-buffer-attribute/float64-buffer-attribute.d.ts +0 -8
  62. package/attributes/lib/fog-attribute/fog-attribute.d.ts +0 -8
  63. package/attributes/lib/fog-exp2-attribute/fog-exp2-attribute.d.ts +0 -8
  64. package/attributes/lib/instanced-buffer-attribute/instanced-buffer-attribute.d.ts +0 -8
  65. package/attributes/lib/int16-buffer-attribute/int16-buffer-attribute.d.ts +0 -8
  66. package/attributes/lib/int32-buffer-attribute/int32-buffer-attribute.d.ts +0 -8
  67. package/attributes/lib/int8-buffer-attribute/int8-buffer-attribute.d.ts +0 -8
  68. package/attributes/lib/interleaved-buffer-attribute/interleaved-buffer-attribute.d.ts +0 -8
  69. package/attributes/lib/matrix3-attribute/matrix3-attribute.d.ts +0 -8
  70. package/attributes/lib/matrix4-attribute/matrix4-attribute.d.ts +0 -8
  71. package/attributes/lib/uint16-buffer-attribute/uint16-buffer-attribute.d.ts +0 -8
  72. package/attributes/lib/uint32-buffer-attribute/uint32-buffer-attribute.d.ts +0 -8
  73. package/attributes/lib/uint8-buffer-attribute/uint8-buffer-attribute.d.ts +0 -8
  74. package/attributes/lib/uint8-clamped-buffer-attribute/uint8-clamped-buffer-attribute.d.ts +0 -8
  75. package/attributes/lib/value-attribute/value-attribute.d.ts +0 -8
  76. package/attributes/lib/vector2-attribute/vector2-attribute.d.ts +0 -8
  77. package/attributes/lib/vector3-attribute/vector3-attribute.d.ts +0 -8
  78. package/attributes/lib/vector4-attribute/vector4-attribute.d.ts +0 -8
  79. package/audios/README.md +0 -3
  80. package/audios/index.d.ts +0 -3
  81. package/audios/lib/audio/audio.d.ts +0 -49
  82. package/audios/lib/audio-listener/audio-listener.d.ts +0 -35
  83. package/audios/lib/common.d.ts +0 -3
  84. package/audios/lib/positional-audio/positional-audio.d.ts +0 -49
  85. package/cameras/README.md +0 -3
  86. package/cameras/index.d.ts +0 -5
  87. package/cameras/lib/array-camera/array-camera.d.ts +0 -56
  88. package/cameras/lib/common.d.ts +0 -3
  89. package/cameras/lib/cube-camera/cube-camera.d.ts +0 -36
  90. package/cameras/lib/orthographic-camera/orthographic-camera.d.ts +0 -54
  91. package/cameras/lib/perspective-camera/perspective-camera.d.ts +0 -55
  92. package/cameras/lib/stereo-camera/stereo-camera.d.ts +0 -42
  93. package/esm2020/attributes/angular-three-attributes.mjs +0 -5
  94. package/esm2020/attributes/index.mjs +0 -24
  95. package/esm2020/attributes/lib/buffer-attribute/buffer-attribute.mjs +0 -26
  96. package/esm2020/attributes/lib/color-attribute/color-attribute.mjs +0 -26
  97. package/esm2020/attributes/lib/common.mjs +0 -13
  98. package/esm2020/attributes/lib/float16-buffer-attribute/float16-buffer-attribute.mjs +0 -26
  99. package/esm2020/attributes/lib/float32-buffer-attribute/float32-buffer-attribute.mjs +0 -26
  100. package/esm2020/attributes/lib/float64-buffer-attribute/float64-buffer-attribute.mjs +0 -26
  101. package/esm2020/attributes/lib/fog-attribute/fog-attribute.mjs +0 -26
  102. package/esm2020/attributes/lib/fog-exp2-attribute/fog-exp2-attribute.mjs +0 -26
  103. package/esm2020/attributes/lib/instanced-buffer-attribute/instanced-buffer-attribute.mjs +0 -26
  104. package/esm2020/attributes/lib/int16-buffer-attribute/int16-buffer-attribute.mjs +0 -26
  105. package/esm2020/attributes/lib/int32-buffer-attribute/int32-buffer-attribute.mjs +0 -26
  106. package/esm2020/attributes/lib/int8-buffer-attribute/int8-buffer-attribute.mjs +0 -26
  107. package/esm2020/attributes/lib/interleaved-buffer-attribute/interleaved-buffer-attribute.mjs +0 -30
  108. package/esm2020/attributes/lib/matrix3-attribute/matrix3-attribute.mjs +0 -26
  109. package/esm2020/attributes/lib/matrix4-attribute/matrix4-attribute.mjs +0 -26
  110. package/esm2020/attributes/lib/uint16-buffer-attribute/uint16-buffer-attribute.mjs +0 -26
  111. package/esm2020/attributes/lib/uint32-buffer-attribute/uint32-buffer-attribute.mjs +0 -26
  112. package/esm2020/attributes/lib/uint8-buffer-attribute/uint8-buffer-attribute.mjs +0 -26
  113. package/esm2020/attributes/lib/uint8-clamped-buffer-attribute/uint8-clamped-buffer-attribute.mjs +0 -26
  114. package/esm2020/attributes/lib/value-attribute/value-attribute.mjs +0 -28
  115. package/esm2020/attributes/lib/vector2-attribute/vector2-attribute.mjs +0 -26
  116. package/esm2020/attributes/lib/vector3-attribute/vector3-attribute.mjs +0 -26
  117. package/esm2020/attributes/lib/vector4-attribute/vector4-attribute.mjs +0 -26
  118. package/esm2020/audios/angular-three-audios.mjs +0 -5
  119. package/esm2020/audios/index.mjs +0 -5
  120. package/esm2020/audios/lib/audio/audio.mjs +0 -45
  121. package/esm2020/audios/lib/audio-listener/audio-listener.mjs +0 -38
  122. package/esm2020/audios/lib/common.mjs +0 -54
  123. package/esm2020/audios/lib/positional-audio/positional-audio.mjs +0 -45
  124. package/esm2020/cameras/angular-three-cameras.mjs +0 -5
  125. package/esm2020/cameras/index.mjs +0 -7
  126. package/esm2020/cameras/lib/array-camera/array-camera.mjs +0 -44
  127. package/esm2020/cameras/lib/common.mjs +0 -54
  128. package/esm2020/cameras/lib/cube-camera/cube-camera.mjs +0 -30
  129. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -42
  130. package/esm2020/cameras/lib/perspective-camera/perspective-camera.mjs +0 -43
  131. package/esm2020/cameras/lib/stereo-camera/stereo-camera.mjs +0 -38
  132. package/esm2020/geometries/angular-three-geometries.mjs +0 -5
  133. package/esm2020/geometries/index.mjs +0 -25
  134. package/esm2020/geometries/lib/box-geometry/box-geometry.mjs +0 -26
  135. package/esm2020/geometries/lib/buffer-geometry/buffer-geometry.mjs +0 -26
  136. package/esm2020/geometries/lib/capsule-geometry/capsule-geometry.mjs +0 -26
  137. package/esm2020/geometries/lib/circle-geometry/circle-geometry.mjs +0 -26
  138. package/esm2020/geometries/lib/common.mjs +0 -13
  139. package/esm2020/geometries/lib/cone-geometry/cone-geometry.mjs +0 -26
  140. package/esm2020/geometries/lib/cylinder-geometry/cylinder-geometry.mjs +0 -26
  141. package/esm2020/geometries/lib/dodecahedron-geometry/dodecahedron-geometry.mjs +0 -26
  142. package/esm2020/geometries/lib/edges-geometry/edges-geometry.mjs +0 -26
  143. package/esm2020/geometries/lib/extrude-geometry/extrude-geometry.mjs +0 -26
  144. package/esm2020/geometries/lib/icosahedron-geometry/icosahedron-geometry.mjs +0 -26
  145. package/esm2020/geometries/lib/instanced-buffer-geometry/instanced-buffer-geometry.mjs +0 -26
  146. package/esm2020/geometries/lib/lathe-geometry/lathe-geometry.mjs +0 -26
  147. package/esm2020/geometries/lib/octahedron-geometry/octahedron-geometry.mjs +0 -26
  148. package/esm2020/geometries/lib/plane-geometry/plane-geometry.mjs +0 -26
  149. package/esm2020/geometries/lib/polyhedron-geometry/polyhedron-geometry.mjs +0 -26
  150. package/esm2020/geometries/lib/ring-geometry/ring-geometry.mjs +0 -26
  151. package/esm2020/geometries/lib/shape-geometry/shape-geometry.mjs +0 -26
  152. package/esm2020/geometries/lib/sphere-geometry/sphere-geometry.mjs +0 -26
  153. package/esm2020/geometries/lib/tetrahedron-geometry/tetrahedron-geometry.mjs +0 -26
  154. package/esm2020/geometries/lib/torus-geometry/torus-geometry.mjs +0 -26
  155. package/esm2020/geometries/lib/torus-knot-geometry/torus-knot-geometry.mjs +0 -26
  156. package/esm2020/geometries/lib/tube-geometry/tube-geometry.mjs +0 -26
  157. package/esm2020/geometries/lib/wireframe-geometry/wireframe-geometry.mjs +0 -26
  158. package/esm2020/helpers/angular-three-helpers.mjs +0 -5
  159. package/esm2020/helpers/index.mjs +0 -15
  160. package/esm2020/helpers/lib/arrow-helper/arrow-helper.mjs +0 -26
  161. package/esm2020/helpers/lib/axes-helper/axes-helper.mjs +0 -26
  162. package/esm2020/helpers/lib/box-helper/box-helper.mjs +0 -36
  163. package/esm2020/helpers/lib/box3-helper/box3-helper.mjs +0 -36
  164. package/esm2020/helpers/lib/camera-helper/camera-helper.mjs +0 -36
  165. package/esm2020/helpers/lib/common.mjs +0 -13
  166. package/esm2020/helpers/lib/directional-light-helper/directional-light-helper.mjs +0 -36
  167. package/esm2020/helpers/lib/grid-helper/grid-helper.mjs +0 -26
  168. package/esm2020/helpers/lib/hemisphere-light-helper/hemisphere-light-helper.mjs +0 -36
  169. package/esm2020/helpers/lib/plane-helper/plane-helper.mjs +0 -36
  170. package/esm2020/helpers/lib/point-light-helper/point-light-helper.mjs +0 -36
  171. package/esm2020/helpers/lib/polar-grid-helper/polar-grid-helper.mjs +0 -26
  172. package/esm2020/helpers/lib/skeleton-helper/skeleton-helper.mjs +0 -36
  173. package/esm2020/helpers/lib/spot-light-helper/spot-light-helper.mjs +0 -36
  174. package/esm2020/lib/di/resize.mjs +0 -19
  175. package/esm2020/lib/di/window.mjs +0 -13
  176. package/esm2020/lib/directives/cursor.mjs +0 -35
  177. package/esm2020/lib/instance.mjs +0 -368
  178. package/esm2020/lib/pipes/math.mjs +0 -15
  179. package/esm2020/lib/pipes/pi.mjs +0 -14
  180. package/esm2020/lib/pipes/radian.mjs +0 -14
  181. package/esm2020/lib/pipes/side.mjs +0 -22
  182. package/esm2020/lib/ref.mjs +0 -15
  183. package/esm2020/lib/services/loader.mjs +0 -45
  184. package/esm2020/lib/services/resize.mjs +0 -127
  185. package/esm2020/lib/stores/component-store.mjs +0 -137
  186. package/esm2020/lib/utils/build-graph.mjs +0 -15
  187. package/esm2020/lib/utils/camera.mjs +0 -28
  188. package/esm2020/lib/utils/capitalize.mjs +0 -4
  189. package/esm2020/lib/utils/check-update.mjs +0 -22
  190. package/esm2020/lib/utils/events.mjs +0 -353
  191. package/esm2020/lib/utils/get-instance-local-state.mjs +0 -6
  192. package/esm2020/lib/utils/inject.mjs +0 -18
  193. package/esm2020/lib/utils/loop.mjs +0 -139
  194. package/esm2020/lib/utils/mutate.mjs +0 -24
  195. package/esm2020/lib/utils/proxy.mjs +0 -99
  196. package/esm2020/lib/utils/renderer.mjs +0 -15
  197. package/esm2020/lights/angular-three-lights.mjs +0 -5
  198. package/esm2020/lights/index.mjs +0 -11
  199. package/esm2020/lights/lib/ambient-light/ambient-light.mjs +0 -30
  200. package/esm2020/lights/lib/ambient-light-probe/ambient-light-probe.mjs +0 -30
  201. package/esm2020/lights/lib/common.mjs +0 -54
  202. package/esm2020/lights/lib/directional-light/directional-light.mjs +0 -30
  203. package/esm2020/lights/lib/hemisphere-light/hemisphere-light.mjs +0 -30
  204. package/esm2020/lights/lib/hemisphere-light-probe/hemisphere-light-probe.mjs +0 -30
  205. package/esm2020/lights/lib/light-probe/light-probe.mjs +0 -30
  206. package/esm2020/lights/lib/point-light/point-light.mjs +0 -30
  207. package/esm2020/lights/lib/rect-area-light/rect-area-light.mjs +0 -30
  208. package/esm2020/lights/lib/spot-light/spot-light.mjs +0 -42
  209. package/esm2020/materials/angular-three-materials.mjs +0 -5
  210. package/esm2020/materials/index.mjs +0 -19
  211. package/esm2020/materials/lib/common.mjs +0 -13
  212. package/esm2020/materials/lib/line-basic-material/line-basic-material.mjs +0 -77
  213. package/esm2020/materials/lib/line-dashed-material/line-dashed-material.mjs +0 -80
  214. package/esm2020/materials/lib/mesh-basic-material/mesh-basic-material.mjs +0 -89
  215. package/esm2020/materials/lib/mesh-depth-material/mesh-depth-material.mjs +0 -80
  216. package/esm2020/materials/lib/mesh-distance-material/mesh-distance-material.mjs +0 -80
  217. package/esm2020/materials/lib/mesh-lambert-material/mesh-lambert-material.mjs +0 -100
  218. package/esm2020/materials/lib/mesh-matcap-material/mesh-matcap-material.mjs +0 -86
  219. package/esm2020/materials/lib/mesh-normal-material/mesh-normal-material.mjs +0 -83
  220. package/esm2020/materials/lib/mesh-phong-material/mesh-phong-material.mjs +0 -103
  221. package/esm2020/materials/lib/mesh-physical-material/mesh-physical-material.mjs +0 -119
  222. package/esm2020/materials/lib/mesh-standard-material/mesh-standard-material.mjs +0 -100
  223. package/esm2020/materials/lib/mesh-toon-material/mesh-toon-material.mjs +0 -96
  224. package/esm2020/materials/lib/points-material/points-material.mjs +0 -78
  225. package/esm2020/materials/lib/raw-shader-material/raw-shader-material.mjs +0 -83
  226. package/esm2020/materials/lib/shader-material/shader-material.mjs +0 -83
  227. package/esm2020/materials/lib/shadow-material/shadow-material.mjs +0 -74
  228. package/esm2020/materials/lib/sprite-material/sprite-material.mjs +0 -78
  229. package/esm2020/objects/angular-three-objects.mjs +0 -5
  230. package/esm2020/objects/index.mjs +0 -14
  231. package/esm2020/objects/lib/bone/bone.mjs +0 -27
  232. package/esm2020/objects/lib/common.mjs +0 -54
  233. package/esm2020/objects/lib/group/group.mjs +0 -27
  234. package/esm2020/objects/lib/instanced-mesh/instanced-mesh.mjs +0 -40
  235. package/esm2020/objects/lib/line/line.mjs +0 -30
  236. package/esm2020/objects/lib/line-loop/line-loop.mjs +0 -30
  237. package/esm2020/objects/lib/line-segments/line-segments.mjs +0 -30
  238. package/esm2020/objects/lib/lod/lod.mjs +0 -30
  239. package/esm2020/objects/lib/mesh/mesh.mjs +0 -30
  240. package/esm2020/objects/lib/points/points.mjs +0 -30
  241. package/esm2020/objects/lib/skeleton/skeleton.mjs +0 -41
  242. package/esm2020/objects/lib/skinned-mesh/skinned-mesh.mjs +0 -39
  243. package/esm2020/objects/lib/sprite/sprite.mjs +0 -30
  244. package/esm2020/primitives/angular-three-primitives.mjs +0 -5
  245. package/esm2020/primitives/index.mjs +0 -3
  246. package/esm2020/primitives/lib/common.mjs +0 -54
  247. package/esm2020/primitives/lib/object-primitive/object-primitive.mjs +0 -27
  248. package/esm2020/primitives/lib/primitive/primitive.mjs +0 -38
  249. package/esm2020/stats/angular-three-stats.mjs +0 -5
  250. package/esm2020/stats/index.mjs +0 -2
  251. package/esm2020/stats/lib/stats/stats.mjs +0 -54
  252. package/esm2020/textures/angular-three-textures.mjs +0 -5
  253. package/esm2020/textures/index.mjs +0 -12
  254. package/esm2020/textures/lib/canvas-texture/canvas-texture.mjs +0 -26
  255. package/esm2020/textures/lib/common.mjs +0 -13
  256. package/esm2020/textures/lib/compressed-array-texture/compressed-array-texture.mjs +0 -26
  257. package/esm2020/textures/lib/compressed-texture/compressed-texture.mjs +0 -26
  258. package/esm2020/textures/lib/cube-texture/cube-texture.mjs +0 -26
  259. package/esm2020/textures/lib/data-array-texture/data-array-texture.mjs +0 -26
  260. package/esm2020/textures/lib/data-texture/data-texture.mjs +0 -26
  261. package/esm2020/textures/lib/data3-dtexture/data3-dtexture.mjs +0 -26
  262. package/esm2020/textures/lib/depth-texture/depth-texture.mjs +0 -26
  263. package/esm2020/textures/lib/framebuffer-texture/framebuffer-texture.mjs +0 -26
  264. package/esm2020/textures/lib/video-texture/video-texture.mjs +0 -26
  265. package/fesm2015/angular-three-attributes.mjs +0 -475
  266. package/fesm2015/angular-three-attributes.mjs.map +0 -1
  267. package/fesm2015/angular-three-audios.mjs +0 -179
  268. package/fesm2015/angular-three-audios.mjs.map +0 -1
  269. package/fesm2015/angular-three-cameras.mjs +0 -236
  270. package/fesm2015/angular-three-cameras.mjs.map +0 -1
  271. package/fesm2015/angular-three-geometries.mjs +0 -488
  272. package/fesm2015/angular-three-geometries.mjs.map +0 -1
  273. package/fesm2015/angular-three-helpers.mjs +0 -378
  274. package/fesm2015/angular-three-helpers.mjs.map +0 -1
  275. package/fesm2015/angular-three-lights.mjs +0 -297
  276. package/fesm2015/angular-three-lights.mjs.map +0 -1
  277. package/fesm2015/angular-three-materials.mjs +0 -1415
  278. package/fesm2015/angular-three-materials.mjs.map +0 -1
  279. package/fesm2015/angular-three-objects.mjs +0 -381
  280. package/fesm2015/angular-three-objects.mjs.map +0 -1
  281. package/fesm2015/angular-three-primitives.mjs +0 -120
  282. package/fesm2015/angular-three-primitives.mjs.map +0 -1
  283. package/fesm2015/angular-three-stats.mjs +0 -62
  284. package/fesm2015/angular-three-stats.mjs.map +0 -1
  285. package/fesm2015/angular-three-textures.mjs +0 -228
  286. package/fesm2015/angular-three-textures.mjs.map +0 -1
  287. package/fesm2020/angular-three-attributes.mjs +0 -475
  288. package/fesm2020/angular-three-attributes.mjs.map +0 -1
  289. package/fesm2020/angular-three-audios.mjs +0 -179
  290. package/fesm2020/angular-three-audios.mjs.map +0 -1
  291. package/fesm2020/angular-three-cameras.mjs +0 -236
  292. package/fesm2020/angular-three-cameras.mjs.map +0 -1
  293. package/fesm2020/angular-three-geometries.mjs +0 -488
  294. package/fesm2020/angular-three-geometries.mjs.map +0 -1
  295. package/fesm2020/angular-three-helpers.mjs +0 -378
  296. package/fesm2020/angular-three-helpers.mjs.map +0 -1
  297. package/fesm2020/angular-three-lights.mjs +0 -297
  298. package/fesm2020/angular-three-lights.mjs.map +0 -1
  299. package/fesm2020/angular-three-materials.mjs +0 -1415
  300. package/fesm2020/angular-three-materials.mjs.map +0 -1
  301. package/fesm2020/angular-three-objects.mjs +0 -381
  302. package/fesm2020/angular-three-objects.mjs.map +0 -1
  303. package/fesm2020/angular-three-primitives.mjs +0 -120
  304. package/fesm2020/angular-three-primitives.mjs.map +0 -1
  305. package/fesm2020/angular-three-stats.mjs +0 -62
  306. package/fesm2020/angular-three-stats.mjs.map +0 -1
  307. package/fesm2020/angular-three-textures.mjs +0 -228
  308. package/fesm2020/angular-three-textures.mjs.map +0 -1
  309. package/geometries/README.md +0 -3
  310. package/geometries/index.d.ts +0 -23
  311. package/geometries/lib/box-geometry/box-geometry.d.ts +0 -8
  312. package/geometries/lib/buffer-geometry/buffer-geometry.d.ts +0 -8
  313. package/geometries/lib/capsule-geometry/capsule-geometry.d.ts +0 -8
  314. package/geometries/lib/circle-geometry/circle-geometry.d.ts +0 -8
  315. package/geometries/lib/common.d.ts +0 -1
  316. package/geometries/lib/cone-geometry/cone-geometry.d.ts +0 -8
  317. package/geometries/lib/cylinder-geometry/cylinder-geometry.d.ts +0 -8
  318. package/geometries/lib/dodecahedron-geometry/dodecahedron-geometry.d.ts +0 -8
  319. package/geometries/lib/edges-geometry/edges-geometry.d.ts +0 -8
  320. package/geometries/lib/extrude-geometry/extrude-geometry.d.ts +0 -8
  321. package/geometries/lib/icosahedron-geometry/icosahedron-geometry.d.ts +0 -8
  322. package/geometries/lib/instanced-buffer-geometry/instanced-buffer-geometry.d.ts +0 -8
  323. package/geometries/lib/lathe-geometry/lathe-geometry.d.ts +0 -8
  324. package/geometries/lib/octahedron-geometry/octahedron-geometry.d.ts +0 -8
  325. package/geometries/lib/plane-geometry/plane-geometry.d.ts +0 -8
  326. package/geometries/lib/polyhedron-geometry/polyhedron-geometry.d.ts +0 -8
  327. package/geometries/lib/ring-geometry/ring-geometry.d.ts +0 -8
  328. package/geometries/lib/shape-geometry/shape-geometry.d.ts +0 -8
  329. package/geometries/lib/sphere-geometry/sphere-geometry.d.ts +0 -8
  330. package/geometries/lib/tetrahedron-geometry/tetrahedron-geometry.d.ts +0 -8
  331. package/geometries/lib/torus-geometry/torus-geometry.d.ts +0 -8
  332. package/geometries/lib/torus-knot-geometry/torus-knot-geometry.d.ts +0 -8
  333. package/geometries/lib/tube-geometry/tube-geometry.d.ts +0 -8
  334. package/geometries/lib/wireframe-geometry/wireframe-geometry.d.ts +0 -8
  335. package/helpers/README.md +0 -3
  336. package/helpers/index.d.ts +0 -13
  337. package/helpers/lib/arrow-helper/arrow-helper.d.ts +0 -8
  338. package/helpers/lib/axes-helper/axes-helper.d.ts +0 -8
  339. package/helpers/lib/box-helper/box-helper.d.ts +0 -8
  340. package/helpers/lib/box3-helper/box3-helper.d.ts +0 -8
  341. package/helpers/lib/camera-helper/camera-helper.d.ts +0 -8
  342. package/helpers/lib/common.d.ts +0 -1
  343. package/helpers/lib/directional-light-helper/directional-light-helper.d.ts +0 -8
  344. package/helpers/lib/grid-helper/grid-helper.d.ts +0 -8
  345. package/helpers/lib/hemisphere-light-helper/hemisphere-light-helper.d.ts +0 -8
  346. package/helpers/lib/plane-helper/plane-helper.d.ts +0 -8
  347. package/helpers/lib/point-light-helper/point-light-helper.d.ts +0 -8
  348. package/helpers/lib/polar-grid-helper/polar-grid-helper.d.ts +0 -8
  349. package/helpers/lib/skeleton-helper/skeleton-helper.d.ts +0 -8
  350. package/helpers/lib/spot-light-helper/spot-light-helper.d.ts +0 -8
  351. package/lib/di/resize.d.ts +0 -12
  352. package/lib/di/window.d.ts +0 -1
  353. package/lib/directives/cursor.d.ts +0 -7
  354. package/lib/instance.d.ts +0 -81
  355. package/lib/pipes/math.d.ts +0 -7
  356. package/lib/pipes/pi.d.ts +0 -7
  357. package/lib/pipes/radian.d.ts +0 -7
  358. package/lib/pipes/side.d.ts +0 -8
  359. package/lib/ref.d.ts +0 -5
  360. package/lib/services/loader.d.ts +0 -11
  361. package/lib/services/resize.d.ts +0 -19
  362. package/lib/stores/component-store.d.ts +0 -69
  363. package/lib/utils/build-graph.d.ts +0 -3
  364. package/lib/utils/camera.d.ts +0 -4
  365. package/lib/utils/capitalize.d.ts +0 -1
  366. package/lib/utils/check-update.d.ts +0 -2
  367. package/lib/utils/events.d.ts +0 -6
  368. package/lib/utils/get-instance-local-state.d.ts +0 -2
  369. package/lib/utils/inject.d.ts +0 -9
  370. package/lib/utils/mutate.d.ts +0 -2
  371. package/lib/utils/proxy.d.ts +0 -7
  372. package/lib/utils/renderer.d.ts +0 -3
  373. package/lights/README.md +0 -3
  374. package/lights/index.d.ts +0 -9
  375. package/lights/lib/ambient-light/ambient-light.d.ts +0 -39
  376. package/lights/lib/ambient-light-probe/ambient-light-probe.d.ts +0 -40
  377. package/lights/lib/common.d.ts +0 -3
  378. package/lights/lib/directional-light/directional-light.d.ts +0 -40
  379. package/lights/lib/hemisphere-light/hemisphere-light.d.ts +0 -41
  380. package/lights/lib/hemisphere-light-probe/hemisphere-light-probe.d.ts +0 -42
  381. package/lights/lib/light-probe/light-probe.d.ts +0 -40
  382. package/lights/lib/point-light/point-light.d.ts +0 -42
  383. package/lights/lib/rect-area-light/rect-area-light.d.ts +0 -42
  384. package/lights/lib/spot-light/spot-light.d.ts +0 -45
  385. package/materials/README.md +0 -3
  386. package/materials/index.d.ts +0 -17
  387. package/materials/lib/common.d.ts +0 -1
  388. package/materials/lib/line-basic-material/line-basic-material.d.ts +0 -55
  389. package/materials/lib/line-dashed-material/line-dashed-material.d.ts +0 -58
  390. package/materials/lib/mesh-basic-material/mesh-basic-material.d.ts +0 -67
  391. package/materials/lib/mesh-depth-material/mesh-depth-material.d.ts +0 -58
  392. package/materials/lib/mesh-distance-material/mesh-distance-material.d.ts +0 -58
  393. package/materials/lib/mesh-lambert-material/mesh-lambert-material.d.ts +0 -78
  394. package/materials/lib/mesh-matcap-material/mesh-matcap-material.d.ts +0 -64
  395. package/materials/lib/mesh-normal-material/mesh-normal-material.d.ts +0 -61
  396. package/materials/lib/mesh-phong-material/mesh-phong-material.d.ts +0 -81
  397. package/materials/lib/mesh-physical-material/mesh-physical-material.d.ts +0 -97
  398. package/materials/lib/mesh-standard-material/mesh-standard-material.d.ts +0 -78
  399. package/materials/lib/mesh-toon-material/mesh-toon-material.d.ts +0 -74
  400. package/materials/lib/points-material/points-material.d.ts +0 -56
  401. package/materials/lib/raw-shader-material/raw-shader-material.d.ts +0 -68
  402. package/materials/lib/shader-material/shader-material.d.ts +0 -68
  403. package/materials/lib/shadow-material/shadow-material.d.ts +0 -52
  404. package/materials/lib/sprite-material/sprite-material.d.ts +0 -56
  405. package/objects/README.md +0 -3
  406. package/objects/index.d.ts +0 -12
  407. package/objects/lib/bone/bone.d.ts +0 -35
  408. package/objects/lib/common.d.ts +0 -3
  409. package/objects/lib/group/group.d.ts +0 -35
  410. package/objects/lib/instanced-mesh/instanced-mesh.d.ts +0 -44
  411. package/objects/lib/line/line.d.ts +0 -41
  412. package/objects/lib/line-loop/line-loop.d.ts +0 -41
  413. package/objects/lib/line-segments/line-segments.d.ts +0 -41
  414. package/objects/lib/lod/lod.d.ts +0 -40
  415. package/objects/lib/mesh/mesh.d.ts +0 -41
  416. package/objects/lib/points/points.d.ts +0 -41
  417. package/objects/lib/skeleton/skeleton.d.ts +0 -16
  418. package/objects/lib/skinned-mesh/skinned-mesh.d.ts +0 -45
  419. package/objects/lib/sprite/sprite.d.ts +0 -38
  420. package/primitives/README.md +0 -3
  421. package/primitives/index.d.ts +0 -2
  422. package/primitives/lib/common.d.ts +0 -3
  423. package/primitives/lib/object-primitive/object-primitive.d.ts +0 -35
  424. package/primitives/lib/primitive/primitive.d.ts +0 -10
  425. package/schematics/README.md +0 -11
  426. package/stats/README.md +0 -3
  427. package/stats/index.d.ts +0 -1
  428. package/stats/lib/stats/stats.d.ts +0 -16
  429. package/textures/README.md +0 -3
  430. package/textures/index.d.ts +0 -10
  431. package/textures/lib/canvas-texture/canvas-texture.d.ts +0 -8
  432. package/textures/lib/common.d.ts +0 -1
  433. package/textures/lib/compressed-array-texture/compressed-array-texture.d.ts +0 -8
  434. package/textures/lib/compressed-texture/compressed-texture.d.ts +0 -8
  435. package/textures/lib/cube-texture/cube-texture.d.ts +0 -8
  436. package/textures/lib/data-array-texture/data-array-texture.d.ts +0 -8
  437. package/textures/lib/data-texture/data-texture.d.ts +0 -8
  438. package/textures/lib/data3-dtexture/data3-dtexture.d.ts +0 -8
  439. package/textures/lib/depth-texture/depth-texture.d.ts +0 -8
  440. package/textures/lib/framebuffer-texture/framebuffer-texture.d.ts +0 -8
  441. package/textures/lib/video-texture/video-texture.d.ts +0 -8
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRocmVlL3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGVJbnB1dCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgUmVuZGVyZXIsIFdlYkdMUmVuZGVyZXIsIFdlYkdMUmVuZGVyZXJQYXJhbWV0ZXJzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0UmVmIH0gZnJvbSAnLi9yZWYnO1xuXG5leHBvcnQgdHlwZSBOZ3RFcXVDb25maWcgPSB7XG4gICAgLyoqIENvbXBhcmUgYXJyYXlzIGJ5IHJlZmVyZW5jZSBlcXVhbGl0eSBhID09PSBiIChkZWZhdWx0KSwgb3IgYnkgc2hhbGxvdyBlcXVhbGl0eSAqL1xuICAgIGFycmF5cz86ICdyZWZlcmVuY2UnIHwgJ3NoYWxsb3cnO1xuICAgIC8qKiBDb21wYXJlIG9iamVjdHMgYnkgcmVmZXJlbmNlIGVxdWFsaXR5IGEgPT09IGIgKGRlZmF1bHQpLCBvciBieSBzaGFsbG93IGVxdWFsaXR5ICovXG4gICAgb2JqZWN0cz86ICdyZWZlcmVuY2UnIHwgJ3NoYWxsb3cnO1xuICAgIC8qKiBJZiB0cnVlIHRoZSBrZXlzIGluIGJvdGggYSBhbmQgYiBtdXN0IG1hdGNoIDE6MSAoZGVmYXVsdCksIGlmIGZhbHNlIGEncyBrZXlzIG11c3QgaW50ZXJzZWN0IGIncyAqL1xuICAgIHN0cmljdD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RPYnNlcnZhYmxlSW5wdXQ8VD4gPSBUIHwgT2JzZXJ2YWJsZUlucHV0PFQ+O1xuXG5leHBvcnQgdHlwZSBOZ3RBbnlSZWNvcmQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuZXhwb3J0IHR5cGUgTmd0QW55RnVuY3Rpb248VFJldHVybiA9IGFueT4gPSAoLi4uYXJnczogYW55W10pID0+IFRSZXR1cm47XG5leHBvcnQgdHlwZSBOZ3RBbnlDb25zdHJ1Y3RvcjxUT2JqZWN0ID0gYW55PiA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IFRPYmplY3Q7XG5leHBvcnQgdHlwZSBOZ3RBbnlBYnN0cmFjdENvbnN0cnVjdG9yPFRPYmplY3QgPSBhbnk+ID0gYWJzdHJhY3QgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVE9iamVjdDtcbmV4cG9ydCB0eXBlIE5ndEFueUN0b3I8VE9iamVjdCA9IGFueT4gPSBOZ3RBbnlDb25zdHJ1Y3RvcjxUT2JqZWN0PiB8IE5ndEFueUFic3RyYWN0Q29uc3RydWN0b3I8VE9iamVjdD47XG5leHBvcnQgdHlwZSBOZ3RQcm9wZXJ0aWVzPFQ+ID0gUGljazxULCB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgKF86IGFueSkgPT4gYW55ID8gbmV2ZXIgOiBLIH1ba2V5b2YgVF0+O1xuZXhwb3J0IHR5cGUgTmd0Tm9uRnVuY3Rpb25LZXlzPFQ+ID0geyBbSyBpbiBrZXlvZiBUXS0/OiBUW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBuZXZlciA6IEsgfVtrZXlvZiBUXTtcbmV4cG9ydCB0eXBlIE5ndE92ZXJ3cml0ZTxULCBPPiA9IE9taXQ8VCwgTmd0Tm9uRnVuY3Rpb25LZXlzPE8+PiAmIE87XG5cbmV4cG9ydCB0eXBlIE5ndERwciA9IG51bWJlciB8IFttaW46IG51bWJlciwgbWF4OiBudW1iZXJdO1xuZXhwb3J0IHR5cGUgTmd0U2l6ZSA9IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXI7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXI7IHVwZGF0ZVN0eWxlPzogYm9vbGVhbiB9O1xuZXhwb3J0IHR5cGUgTmd0Vmlld3BvcnQgPSBOZ3RTaXplICYge1xuICAgIC8qKiBUaGUgaW5pdGlhbCBwaXhlbCByYXRpbyAqL1xuICAgIGluaXRpYWxEcHI6IG51bWJlcjtcbiAgICAvKiogQ3VycmVudCBwaXhlbCByYXRpbyAqL1xuICAgIGRwcjogbnVtYmVyO1xuICAgIC8qKiBzaXplLndpZHRoIC8gdmlld3BvcnQud2lkdGggKi9cbiAgICBmYWN0b3I6IG51bWJlcjtcbiAgICAvKiogQ2FtZXJhIGRpc3RhbmNlICovXG4gICAgZGlzdGFuY2U6IG51bWJlcjtcbiAgICAvKiogQ2FtZXJhIGFzcGVjdCByYXRpbzogd2lkdGggLyBoZWlnaHQgKi9cbiAgICBhc3BlY3Q6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndFBlcmZvcm1hbmNlID0ge1xuICAgIC8qKiBDdXJyZW50IHBlcmZvcm1hbmNlIG5vcm1hbCwgYmV0d2VlbiBtaW4gYW5kIG1heCAqL1xuICAgIGN1cnJlbnQ6IG51bWJlcjtcbiAgICAvKiogSG93IGxvdyB0aGUgcGVyZm9ybWFuY2UgY2FuIGdvLCBiZXR3ZWVuIDAgYW5kIG1heCAqL1xuICAgIG1pbjogbnVtYmVyO1xuICAgIC8qKiBIb3cgaGlnaCB0aGUgcGVyZm9ybWFuY2UgY2FuIGdvLCBiZXR3ZWVuIG1pbiBhbmQgbWF4ICovXG4gICAgbWF4OiBudW1iZXI7XG4gICAgLyoqIFRpbWUgdW50aWwgY3VycmVudCByZXR1cm5zIHRvIG1heCBpbiBtcyAqL1xuICAgIGRlYm91bmNlOiBudW1iZXI7XG4gICAgLyoqIFNldHMgY3VycmVudCB0byBtaW4sIHB1dHMgdGhlIHN5c3RlbSBpbiByZWdyZXNzaW9uICovXG4gICAgcmVncmVzczogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndENhbWVyYSA9IFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYSB8IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhO1xuXG5leHBvcnQgdHlwZSBOZ3REb21FdmVudCA9IFBvaW50ZXJFdmVudCB8IE1vdXNlRXZlbnQgfCBXaGVlbEV2ZW50O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEludGVyc2VjdGlvbkV2ZW50PFRTb3VyY2VFdmVudD4gZXh0ZW5kcyBOZ3RJbnRlcnNlY3Rpb24ge1xuICAgIC8qKiBBbiBhcnJheSBvZiBpbnRlcnNlY3Rpb25zICovXG4gICAgaW50ZXJzZWN0aW9uczogTmd0SW50ZXJzZWN0aW9uW107XG4gICAgLyoqIHZlYzMuc2V0KHBvaW50ZXIueCwgcG9pbnRlci55LCAwKS51bnByb2plY3QoY2FtZXJhKSAqL1xuICAgIHVucHJvamVjdGVkUG9pbnQ6IFRIUkVFLlZlY3RvcjM7XG4gICAgLyoqIE5vcm1hbGl6ZWQgZXZlbnQgY29vcmRpbmF0ZXMgKHg6IFstMSwgMV0sIHk6IFstMSwgMV0pICovXG4gICAgcG9pbnRlcjogVEhSRUUuVmVjdG9yMjtcbiAgICAvKiogZGVsdGEgYmV0d2VlbiBmaXJzdCBjbGljayBhbmQgdGhpcyBldmVudCAqL1xuICAgIGRlbHRhOiBudW1iZXI7XG4gICAgLyoqIHRoZSByYXkgY2FzdGVkIGZyb20gdGhlIGNhbWVyYSAqL1xuICAgIHJheTogVEhSRUUuUmF5O1xuICAgIC8qKiB0aGUgY2FtZXJhIHVzZWQgdG8gcmF5Y2FzdCAqL1xuICAgIGNhbWVyYTogTmd0Q2FtZXJhO1xuICAgIC8qKiBzdG9wUHJvcGFnYXRpb24gd2lsbCBzdG9wIHVuZGVybHlpbmcgaGFuZGxlcnMgZnJvbSBmaXJpbmcgKi9cbiAgICBzdG9wUHJvcGFnYXRpb246ICgpID0+IHZvaWQ7XG4gICAgLyoqIHRoZSBvcmlnaW5hbCBldmVudCAqL1xuICAgIG5hdGl2ZUV2ZW50OiBUU291cmNlRXZlbnQ7XG4gICAgLyoqIGlmIHRoZSBldmVudCB3YXMgc3RvcHBlZCBieSBjYWxsaW5nIHN0b3BQcm9wYWdhdGlvbiAqL1xuICAgIHN0b3BwZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0SW50ZXJzZWN0aW9uIGV4dGVuZHMgVEhSRUUuSW50ZXJzZWN0aW9uIHtcbiAgICAvKiogVGhlIGV2ZW50IHNvdXJjZSAodGhlIG9iamVjdCB3aGljaCByZWdpc3RlcmVkIHRoZSBoYW5kbGVyKSAqL1xuICAgIGV2ZW50T2JqZWN0OiBUSFJFRS5PYmplY3QzRDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RQb2ludGVyQ2FwdHVyZVRhcmdldCB7XG4gICAgaW50ZXJzZWN0aW9uOiBOZ3RJbnRlcnNlY3Rpb247XG4gICAgdGFyZ2V0OiBFbGVtZW50O1xufVxuXG5leHBvcnQgdHlwZSBOZ3RUaHJlZUV2ZW50PFRFdmVudD4gPSBOZ3RJbnRlcnNlY3Rpb25FdmVudDxURXZlbnQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEV2ZW50SGFuZGxlcnMge1xuICAgIGNsaWNrPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PE1vdXNlRXZlbnQ+KSA9PiB2b2lkO1xuICAgIGNvbnRleHRtZW51PzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PE1vdXNlRXZlbnQ+KSA9PiB2b2lkO1xuICAgIGRibGNsaWNrPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PE1vdXNlRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJ1cD86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJkb3duPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG4gICAgcG9pbnRlcm92ZXI/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVyb3V0PzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG4gICAgcG9pbnRlcmVudGVyPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG4gICAgcG9pbnRlcmxlYXZlPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG4gICAgcG9pbnRlcm1vdmU/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVybWlzc2VkPzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJjYW5jZWw/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICB3aGVlbD86IChldmVudDogTmd0VGhyZWVFdmVudDxXaGVlbEV2ZW50PikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgTmd0RXZlbnRzID0ge1xuICAgIGNsaWNrOiBFdmVudExpc3RlbmVyO1xuICAgIGNvbnRleHRtZW51OiBFdmVudExpc3RlbmVyO1xuICAgIGRibGNsaWNrOiBFdmVudExpc3RlbmVyO1xuICAgIHdoZWVsOiBFdmVudExpc3RlbmVyO1xuICAgIHBvaW50ZXJkb3duOiBFdmVudExpc3RlbmVyO1xuICAgIHBvaW50ZXJ1cDogRXZlbnRMaXN0ZW5lcjtcbiAgICBwb2ludGVybGVhdmU6IEV2ZW50TGlzdGVuZXI7XG4gICAgcG9pbnRlcm1vdmU6IEV2ZW50TGlzdGVuZXI7XG4gICAgcG9pbnRlcmNhbmNlbDogRXZlbnRMaXN0ZW5lcjtcbiAgICBsb3N0cG9pbnRlcmNhcHR1cmU6IEV2ZW50TGlzdGVuZXI7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RDb25kaXRpb25hbFR5cGU8Q2hpbGQsIFBhcmVudCwgVHJ1dGh5LCBGYWxzeT4gPSBDaGlsZCBleHRlbmRzIFBhcmVudCA/IFRydXRoeSA6IEZhbHN5O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndExvYWRlclByb3RvPFQ+IGV4dGVuZHMgVEhSRUUuTG9hZGVyIHtcbiAgICBsb2FkKFxuICAgICAgICB1cmw6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgICAgICBvbkxvYWQ/OiAocmVzdWx0OiBUKSA9PiB2b2lkLFxuICAgICAgICBvblByb2dyZXNzPzogKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB2b2lkLFxuICAgICAgICBvbkVycm9yPzogKGV2ZW50OiBFcnJvckV2ZW50KSA9PiB2b2lkXG4gICAgKTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RMb2FkZXJFeHRlbnNpb25zIHtcbiAgICAobG9hZGVyOiBUSFJFRS5Mb2FkZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RMb2FkZXJSZXN1bHQ8VD4gPSBUIGV4dGVuZHMgYW55W10gPyBOZ3RMb2FkZXJQcm90bzxUW251bWJlcl0+IDogTmd0TG9hZGVyUHJvdG88VD47XG5leHBvcnQgdHlwZSBOZ3RCcmFuY2hpbmdSZXR1cm48VCA9IGFueSwgUGFyZW50ID0gYW55LCBDb2VyY2VkID0gYW55PiA9IE5ndENvbmRpdGlvbmFsVHlwZTxULCBQYXJlbnQsIENvZXJjZWQsIFQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndE9iamVjdE1hcCB7XG4gICAgbm9kZXM6IHsgW25hbWU6IHN0cmluZ106IFRIUkVFLk9iamVjdDNEIH07XG4gICAgbWF0ZXJpYWxzOiB7IFtuYW1lOiBzdHJpbmddOiBUSFJFRS5NYXRlcmlhbCB9O1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuLyoqXG4gKiBJZiAqKlQqKiBjb250YWlucyBhIGNvbnN0cnVjdG9yLCBAc2VlIENvbnN0cnVjdG9yUGFyYW1ldGVycyBtdXN0IGJlIHVzZWQsIG90aGVyd2lzZSAqKlQqKi5cbiAqL1xuZXhwb3J0IHR5cGUgTmd0Tm9kZUFyZ3M8VD4gPSBUIGV4dGVuZHMgbmV3ICguLi5hcmdzOiBhbnkpID0+IGFueSA/IENvbnN0cnVjdG9yUGFyYW1ldGVyczxUPiA6IFQ7XG5cbi8qKlxuICogVHVybiBhbiBpbXBsZW1lbnRhdGlvbiBvZiBUSFJFRS5WZWN0b3IgaW4gdG8gdGhlIHR5cGUgdGhhdCBhbiByM2YgY29tcG9uZW50IHdvdWxkIGFjY2VwdCBhcyBhIHByb3AuXG4gKi9cbnR5cGUgTmd0VmVjdG9yTGlrZTxWZWN0b3JDbGFzcyBleHRlbmRzIFRIUkVFLlZlY3Rvcj4gPVxuICAgIHwgVmVjdG9yQ2xhc3NcbiAgICB8IFBhcmFtZXRlcnM8VmVjdG9yQ2xhc3NbJ3NldCddPlxuICAgIHwgUmVhZG9ubHk8UGFyYW1ldGVyczxWZWN0b3JDbGFzc1snc2V0J10+PlxuICAgIHwgUGFyYW1ldGVyczxWZWN0b3JDbGFzc1snc2V0U2NhbGFyJ10+WzBdO1xuXG5leHBvcnQgdHlwZSBOZ3RWZWN0b3IyID0gTmd0VmVjdG9yTGlrZTxUSFJFRS5WZWN0b3IyPjtcbmV4cG9ydCB0eXBlIE5ndFZlY3RvcjMgPSBOZ3RWZWN0b3JMaWtlPFRIUkVFLlZlY3RvcjM+O1xuZXhwb3J0IHR5cGUgTmd0VmVjdG9yNCA9IE5ndFZlY3Rvckxpa2U8VEhSRUUuVmVjdG9yND47XG5leHBvcnQgdHlwZSBOZ3RMYXllcnMgPSBUSFJFRS5MYXllcnMgfCBQYXJhbWV0ZXJzPFRIUkVFLkxheWVyc1snc2V0J10+WzBdO1xuZXhwb3J0IHR5cGUgTmd0UXVhdGVybmlvbiA9IFRIUkVFLlF1YXRlcm5pb24gfCBQYXJhbWV0ZXJzPFRIUkVFLlF1YXRlcm5pb25bJ3NldCddPjtcbmV4cG9ydCB0eXBlIE5ndEV1bGVyID0gVEhSRUUuRXVsZXIgfCBQYXJhbWV0ZXJzPFRIUkVFLkV1bGVyWydzZXQnXT47XG5leHBvcnQgdHlwZSBOZ3RNYXRyaXg0ID0gVEhSRUUuTWF0cml4NCB8IFBhcmFtZXRlcnM8VEhSRUUuTWF0cml4NFsnc2V0J10+IHwgUmVhZG9ubHk8VEhSRUUuTWF0cml4NFsnc2V0J10+O1xuXG5leHBvcnQgdHlwZSBOZ3RDb2xvciA9IENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgVEhSRUUuQ29sb3I+IHwgVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbjtcblxuZXhwb3J0IHR5cGUgTmd0RXh0ZW5kZWRDb2xvcnM8VD4gPSB7XG4gICAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBUSFJFRS5Db2xvciB8IHVuZGVmaW5lZCA/IE5ndENvbG9yIDogVFtLXTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Tm9kZVByb3BzPFA+IHtcbiAgICBhdHRhY2g/OiBzdHJpbmdbXTtcbiAgICAvKiogQ29uc3RydWN0b3IgYXJndW1lbnRzICovXG4gICAgYXJncz86IE5ndE5vZGVBcmdzPFA+O1xufVxuXG5leHBvcnQgdHlwZSBOZ3ROb2RlPFQsIFA+ID0gTmd0RXh0ZW5kZWRDb2xvcnM8Tmd0T3ZlcndyaXRlPFBhcnRpYWw8VD4sIE5ndE5vZGVQcm9wczxQPj4+O1xuZXhwb3J0IHR5cGUgTmd0T2JqZWN0M0ROb2RlPFQsIFA+ID0gTmd0T3ZlcndyaXRlPFxuICAgIE5ndE5vZGU8VCwgUD4sXG4gICAge1xuICAgICAgICBwb3NpdGlvbj86IE5ndFZlY3RvcjM7XG4gICAgICAgIHVwPzogTmd0VmVjdG9yMztcbiAgICAgICAgc2NhbGU/OiBOZ3RWZWN0b3IzO1xuICAgICAgICByb3RhdGlvbj86IE5ndEV1bGVyO1xuICAgICAgICBtYXRyaXg/OiBOZ3RNYXRyaXg0O1xuICAgICAgICBxdWF0ZXJuaW9uPzogTmd0UXVhdGVybmlvbjtcbiAgICAgICAgbGF5ZXJzPzogTmd0TGF5ZXJzO1xuICAgICAgICBkaXNwb3NlPzogKCgpID0+IHZvaWQpIHwgbnVsbDtcbiAgICB9XG4+ICZcbiAgICBOZ3RFdmVudEhhbmRsZXJzO1xuXG5leHBvcnQgdHlwZSBOZ3RDYW1lcmFXaXRoTWFudWFsID0gTmd0Q2FtZXJhICYgeyBtYW51YWw/OiBib29sZWFuIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0UmVuZGVyU3RhdGUgZXh0ZW5kcyBOZ3RTdGF0ZSB7XG4gICAgZGVsdGE6IG51bWJlcjtcbiAgICBmcmFtZT86IFhSRnJhbWU7XG59XG5cbmV4cG9ydCB0eXBlIE5ndEJlZm9yZVJlbmRlckNhbGxiYWNrPFRPYmplY3QgPSBhbnk+ID0gKHN0YXRlOiBOZ3RSZW5kZXJTdGF0ZSwgb2JqOiBUT2JqZWN0KSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEJlZm9yZVJlbmRlclJlY29yZCB7XG4gICAgb2JqPzogVEhSRUUuT2JqZWN0M0QgfCBOZ3RSZWY7XG4gICAgY2FsbGJhY2s6IE5ndEJlZm9yZVJlbmRlckNhbGxiYWNrPFRIUkVFLk9iamVjdDNEIHwgdW5kZWZpbmVkPjtcbiAgICBwcmlvcml0eT86IG51bWJlcjtcbiAgICBzdGF0ZUZhY3Rvcnk6IE5ndFN0YXRlRmFjdG9yeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RJbnRlcm5hbFN0YXRlIHtcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgcHJpb3JpdHk6IG51bWJlcjtcbiAgICBmcmFtZXM6IG51bWJlcjtcbiAgICBsYXN0RXZlbnQ6IE5ndERvbUV2ZW50IHwgbnVsbDtcbiAgICBpbnRlcmFjdGlvbjogVEhSRUUuT2JqZWN0M0RbXTtcbiAgICBob3ZlcmVkOiBNYXA8c3RyaW5nLCBOZ3RUaHJlZUV2ZW50PE5ndERvbUV2ZW50Pj47XG4gICAgc3Vic2NyaWJlcnM6IE5ndEJlZm9yZVJlbmRlclJlY29yZFtdO1xuICAgIGNhcHR1cmVkTWFwOiBNYXA8bnVtYmVyLCBNYXA8VEhSRUUuT2JqZWN0M0QsIE5ndFBvaW50ZXJDYXB0dXJlVGFyZ2V0Pj47XG4gICAgaW5pdGlhbENsaWNrOiBbeDogbnVtYmVyLCB5OiBudW1iZXJdO1xuICAgIGluaXRpYWxIaXRzOiBUSFJFRS5PYmplY3QzRFtdO1xuICAgIHN1YnNjcmliZTogKFxuICAgICAgICBjYWxsYmFjazogTmd0QmVmb3JlUmVuZGVyQ2FsbGJhY2ssXG4gICAgICAgIHByaW9yaXR5PzogbnVtYmVyLFxuICAgICAgICBzdGF0ZUZhY3Rvcnk/OiBOZ3RTdGF0ZUZhY3RvcnksXG4gICAgICAgIG9iaj86IFRIUkVFLk9iamVjdDNEIHwgTmd0UmVmXG4gICAgKSA9PiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndFN0YXRlIHtcbiAgICAvKiogVGhlIGZsYWcgdG8gbm90aWZ5IGlmIHRoZSBDYW52YXMgaXMgcmVhZHkgdG8gcmVuZGVyICovXG4gICAgcmVhZHk6IGJvb2xlYW47XG4gICAgLyoqIFRoZSBpbnN0YW5jZSBvZiB0aGUgcmVuZGVyZXIgKi9cbiAgICBnbDogVEhSRUUuV2ViR0xSZW5kZXJlcjtcbiAgICAvKiogRGVmYXVsdCBjYW1lcmEgKi9cbiAgICBjYW1lcmE6IE5ndENhbWVyYVdpdGhNYW51YWwgLyoqIERlZmF1bHQgc2NlbmUgKi87XG4gICAgY2FtZXJhUmVmOiBOZ3RSZWY8Tmd0Q2FtZXJhV2l0aE1hbnVhbD47XG4gICAgc2NlbmU6IFRIUkVFLlNjZW5lO1xuICAgIHNjZW5lUmVmOiBOZ3RSZWY8VEhSRUUuU2NlbmU+O1xuICAgIC8qKiBEZWZhdWx0IHJheWNhc3RlciAqL1xuICAgIHJheWNhc3RlcjogVEhSRUUuUmF5Y2FzdGVyO1xuICAgIC8qKiBEZWZhdWx0IGNsb2NrICovXG4gICAgY2xvY2s6IFRIUkVFLkNsb2NrO1xuICAgIC8qKiBFdmVudCBsYXllciBpbnRlcmZhY2UsIGNvbnRhaW5zIHRoZSBldmVudCBoYW5kbGVyIGFuZCB0aGUgbm9kZSB0aGV5J3JlIGNvbm5lY3RlZCB0byAqL1xuICAgIGV2ZW50czogTmd0RXZlbnRNYW5hZ2VyPGFueT47XG4gICAgLyoqIFhSIGludGVyZmFjZSAqL1xuICAgIHhyOiB7IGNvbm5lY3Q6ICgpID0+IHZvaWQ7IGRpc2Nvbm5lY3Q6ICgpID0+IHZvaWQgfTtcbiAgICAvKiogQ3VycmVudGx5IHVzZWQgY29udHJvbHMgKi9cbiAgICBjb250cm9sczogVEhSRUUuRXZlbnREaXNwYXRjaGVyIHwgbnVsbDtcbiAgICAvKiogTm9ybWFsaXplZCBldmVudCBjb29yZGluYXRlcyAqL1xuICAgIHBvaW50ZXI6IFRIUkVFLlZlY3RvcjI7XG4gICAgLyogV2hldGhlciB0byBlbmFibGUgcjEzOSdzIFRIUkVFLkNvbG9yTWFuYWdlbWVudC5sZWdhY3lNb2RlICovXG4gICAgbGVnYWN5OiBib29sZWFuO1xuICAgIC8qKiBTaG9ydGN1dCB0byBnbC5vdXRwdXRFbmNvZGluZyA9IExpbmVhckVuY29kaW5nICovXG4gICAgbGluZWFyOiBib29sZWFuO1xuICAgIC8qKiBTaG9ydGN1dCB0byBnbC50b25lTWFwcGluZyA9IE5vVG9uZW1hcHBpbmcgKi9cbiAgICBmbGF0OiBib29sZWFuO1xuICAgIC8qKiBSZW5kZXIgbG9vcCBmbGFncyAqL1xuICAgIGZyYW1lbG9vcDogJ2Fsd2F5cycgfCAnZGVtYW5kJyB8ICduZXZlcic7XG4gICAgLyoqIEFkYXB0aXZlIHBlcmZvcm1hbmNlIGludGVyZmFjZSAqL1xuICAgIHBlcmZvcm1hbmNlOiBOZ3RQZXJmb3JtYW5jZTtcbiAgICAvKiogUmVhY3RpdmUgcGl4ZWwtc2l6ZSBvZiB0aGUgY2FudmFzICovXG4gICAgc2l6ZTogTmd0U2l6ZTtcbiAgICAvKiogUmVhY3RpdmUgc2l6ZSBvZiB0aGUgdmlld3BvcnQgaW4gdGhyZWVqcyB1bml0cyAqL1xuICAgIHZpZXdwb3J0OiBOZ3RWaWV3cG9ydCAmIHtcbiAgICAgICAgZ2V0Q3VycmVudFZpZXdwb3J0OiAoXG4gICAgICAgICAgICBjYW1lcmE/OiBOZ3RDYW1lcmEsXG4gICAgICAgICAgICB0YXJnZXQ/OiBUSFJFRS5WZWN0b3IzIHwgUGFyYW1ldGVyczxUSFJFRS5WZWN0b3IzWydzZXQnXT4sXG4gICAgICAgICAgICBzaXplPzogTmd0U2l6ZVxuICAgICAgICApID0+IE9taXQ8Tmd0Vmlld3BvcnQsICdkcHInIHwgJ2luaXRpYWxEcHInPjtcbiAgICB9O1xuICAgIC8qKiBGbGFncyB0aGUgY2FudmFzIGZvciByZW5kZXIsIGJ1dCBkb2Vzbid0IHJlbmRlciBpbiBpdHNlbGYgKi9cbiAgICBpbnZhbGlkYXRlOiAoZnJhbWVzPzogbnVtYmVyKSA9PiB2b2lkO1xuICAgIC8qKiBBZHZhbmNlIChyZW5kZXIpIG9uZSBzdGVwICovXG4gICAgYWR2YW5jZTogKHRpbWVzdGFtcDogbnVtYmVyLCBydW5HbG9iYWxFZmZlY3RzPzogYm9vbGVhbikgPT4gdm9pZDtcbiAgICAvKiogU2hvcnRjdXQgdG8gc2V0dGluZyB0aGUgZXZlbnQgbGF5ZXIgKi9cbiAgICBzZXRFdmVudHM6IChldmVudHM6IFBhcnRpYWw8Tmd0RXZlbnRNYW5hZ2VyPGFueT4+KSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIFNob3J0Y3V0IHRvIG1hbnVhbCBzaXppbmdcbiAgICAgKi9cbiAgICBzZXRTaXplOiAod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHRvcD86IG51bWJlciwgbGVmdD86IG51bWJlciwgdXBkYXRlU3R5bGU/OiBib29sZWFuKSA9PiB2b2lkO1xuICAgIC8qKiBTaG9ydGN1dCB0byBtYW51YWwgc2V0dGluZyB0aGUgcGl4ZWwgcmF0aW8gKi9cbiAgICBzZXREcHI6IChkcHI6IE5ndERwcikgPT4gdm9pZDtcbiAgICAvKiogU2hvcnRjdXQgdG8gZnJhbWVsb29wIGZsYWdzICovXG4gICAgc2V0RnJhbWVsb29wOiAoZnJhbWVsb29wPzogJ2Fsd2F5cycgfCAnZGVtYW5kJyB8ICduZXZlcicpID0+IHZvaWQ7XG4gICAgLyoqIFNob3J0Y3V0IHRvIHNldCBwZXJmb3JtYW5jZS5jdXJyZW50IGZvciBwZXJmb3JtYW5jZSByZWdyZXNzaW5nICovXG4gICAgc2V0UGVyZm9ybWFuY2VDdXJyZW50OiAoY3VycmVudDogbnVtYmVyKSA9PiB2b2lkO1xuICAgIC8qKiBTaG9ydGN1dCB0byBzZXQgdGhlIGN1cnJlbnQgY2FtZXJhICovXG4gICAgc2V0Q2FtZXJhOiAoY2FtZXJhOiBOZ3RDYW1lcmEpID0+IHZvaWQ7XG5cbiAgICAvKiogU2hvcnRjdXQgdG8gYWRkIGFuIG9iamVjdCBhcyBhbiBFdmVudCBpbnRlcmFjdGlvbiAqL1xuICAgIGFkZEludGVyYWN0aW9uKGludGVyYWN0aW9uOiBUSFJFRS5PYmplY3QzRCk6IHZvaWQ7XG5cbiAgICAvKiogU2hvcnRjdXQgdG8gcmVtb3ZlIGFuIG9iamVjdCBVVUlEIGZyb20gcGFydGljaXBhdGluZyBpbiBFdmVudHMgKi9cbiAgICByZW1vdmVJbnRlcmFjdGlvbih1dWlkOiBzdHJpbmcpOiB2b2lkO1xuXG4gICAgLyoqIFdoZW4gdGhlIGNhbnZhcyB3YXMgY2xpY2tlZCBidXQgbm90aGluZyB3YXMgaGl0ICovXG4gICAgb25Qb2ludGVyTWlzc2VkPzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIC8qIGludGVybmFscyAqL1xuICAgIGludGVybmFsOiBOZ3RJbnRlcm5hbFN0YXRlO1xuICAgIC8qKiBJZiB0aGlzIHN0YXRlIG1vZGVsIGlzIGxheWVyZCAodmlhIGNyZWF0ZVBvcnRhbCkgdGhlbiB0aGlzIGNvbnRhaW5zIHRoZSBwcmV2aW91cyBsYXllciAqL1xuICAgIHByZXZpb3VzU3RhdGVGYWN0b3J5PzogTmd0U3RhdGVGYWN0b3J5O1xufVxuXG5leHBvcnQgdHlwZSBOZ3RTdGF0ZUZhY3RvcnkgPSAoKSA9PiBOZ3RTdGF0ZTtcblxuZXhwb3J0IHR5cGUgTmd0RmlsdGVyRnVuY3Rpb24gPSAoaXRlbXM6IFRIUkVFLkludGVyc2VjdGlvbltdLCBzdGF0ZUZhY3Rvcnk6IE5ndFN0YXRlRmFjdG9yeSkgPT4gVEhSRUUuSW50ZXJzZWN0aW9uW107XG5leHBvcnQgdHlwZSBOZ3RDb21wdXRlRnVuY3Rpb24gPSAoXG4gICAgZXZlbnQ6IE5ndERvbUV2ZW50LFxuICAgIHJvb3RTdGF0ZUZhY3Rvcnk6IE5ndFN0YXRlRmFjdG9yeSxcbiAgICBwcmV2aW91c1N0YXRlRmFjdG9yeT86IE5ndFN0YXRlRmFjdG9yeVxuKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEV2ZW50TWFuYWdlcjxUVGFyZ2V0PiB7XG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGV2ZW50IGxheWVyIGlzIGFjdGl2ZSAqL1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqIEV2ZW50IGxheWVyIHByaW9yaXR5LCBoaWdoZXIgcHJpb3JpdGl6ZWQgbGF5ZXJzIGNvbWUgZmlyc3QgYW5kIG1heSBzdG9wKC1wcm9wYWdhdGUpIGxvd2VyIGxheWVyICAqL1xuICAgIHByaW9yaXR5OiBudW1iZXI7XG4gICAgLyoqIFRoZSBjb21wdXRlIGZ1bmN0aW9uIG5lZWRzIHRvIHNldCB1cCB0aGUgcmF5Y2FzdGVyIGFuZCBhbiB4eS0gcG9pbnRlciAgKi9cbiAgICBjb21wdXRlPzogTmd0Q29tcHV0ZUZ1bmN0aW9uO1xuICAgIC8qKiBUaGUgZmlsdGVyIGNhbiByZS1vcmRlciBvciByZS1zdHJ1Y3R1cmUgdGhlIGludGVyc2VjdGlvbnMgICovXG4gICAgZmlsdGVyPzogTmd0RmlsdGVyRnVuY3Rpb247XG4gICAgLyoqIFRoZSB0YXJnZXQgbm9kZSB0aGUgZXZlbnQgbGF5ZXIgaXMgdGllZCB0byAqL1xuICAgIGNvbm5lY3RlZD86IFRUYXJnZXQ7XG4gICAgLyoqIEFsbCB0aGUgcG9pbnRlciBldmVudCBoYW5kbGVycyB0aHJvdWdoIHdoaWNoIHRoZSBob3N0IGZvcndhcmRzIG5hdGl2ZSBldmVudHMgKi9cbiAgICBoYW5kbGVycz86IE5ndEV2ZW50cztcbiAgICAvKiogQWxsb3dzIHJlLWNvbm5lY3RpbmcgdG8gYW5vdGhlciB0YXJnZXQgKi9cbiAgICBjb25uZWN0PzogKHRhcmdldDogVFRhcmdldCkgPT4gdm9pZDtcbiAgICAvKiogUmVtb3ZlcyBhbGwgZXhpc3RpbmcgZXZlbnRzIGhhbmRsZXJzIGZyb20gdGhlIHRhcmdldCAqL1xuICAgIGRpc2Nvbm5lY3Q/OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RBdHRhY2hGdW5jdGlvbjxUQ2hpbGQgPSBhbnksIFRQYXJlbnQgPSBhbnk+ID0gKFxuICAgIHBhcmVudDogTmd0UmVmPFRQYXJlbnQ+LFxuICAgIGNoaWxkOiBOZ3RSZWY8VENoaWxkPixcbiAgICBzdGF0ZUZhY3Rvcnk6IE5ndFN0YXRlRmFjdG9yeVxuKSA9PiB2b2lkIHwgKCgpID0+IHZvaWQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEluc3RhbmNlTG9jYWxTdGF0ZSB7XG4gICAgLyoqIHRoZSBzdGF0ZSBnZXR0ZXIgb2YgdGhlIGNhbnZhcyB0aGF0IHRoZSBpbnN0YW5jZSBpcyBiZWluZyByZW5kZXJlZCB0byAqL1xuICAgIHN0YXRlRmFjdG9yeTogTmd0U3RhdGVGYWN0b3J5O1xuICAgIHJvb3RGYWN0b3J5OiBOZ3RTdGF0ZUZhY3Rvcnk7XG4gICAgLy8gbm9uLW9iamVjdCAzZFxuICAgIGluc3RhbmNlc1JlZnM6IE5ndFJlZjxOZ3RSZWZbXT47XG4gICAgLy8gb2JqZWN0LTNkXG4gICAgb2JqZWN0c1JlZnM6IE5ndFJlZjxOZ3RSZWZbXT47XG4gICAgcGFyZW50UmVmOiBOZ3RSZWY8Tmd0SW5zdGFuY2VOb2RlPiB8IG51bGw7XG4gICAgaXNQcmltaXRpdmU/OiBib29sZWFuO1xuICAgIGlzUmF3PzogYm9vbGVhbjtcbiAgICBldmVudENvdW50OiBudW1iZXI7XG4gICAgaGFuZGxlcnM6IFBhcnRpYWw8Tmd0RXZlbnRIYW5kbGVycz47XG4gICAgYXJncz86IHVua25vd25bXTtcbiAgICBhdHRhY2g/OiBzdHJpbmdbXSB8ICgoKSA9PiB2b2lkKTtcbiAgICBhdHRhY2hWYWx1ZT86IHVua25vd247XG4gICAgbWVtb2l6ZWQ/OiBOZ3RBbnlSZWNvcmQ7XG59XG5cbmV4cG9ydCB0eXBlIE5ndEluc3RhbmNlTm9kZTxUTm9kZSA9IGFueT4gPSBUTm9kZSAmIHtcbiAgICBfX25ndF9fOiBOZ3RJbnN0YW5jZUxvY2FsU3RhdGU7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufTtcblxuZXhwb3J0IHR5cGUgTmd0R0xPcHRpb25zID1cbiAgICB8IFJlbmRlcmVyXG4gICAgfCAoKGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQpID0+IFJlbmRlcmVyKVxuICAgIHwgUGFydGlhbDxOZ3RQcm9wZXJ0aWVzPFdlYkdMUmVuZGVyZXI+IHwgV2ViR0xSZW5kZXJlclBhcmFtZXRlcnM+XG4gICAgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Q2FudmFzSW5wdXRzIHtcbiAgICAvKiogQSB0aHJlZWpzIHJlbmRlcmVyIGluc3RhbmNlIG9yIHByb3BzIHRoYXQgZ28gaW50byB0aGUgZGVmYXVsdCByZW5kZXJlciAqL1xuICAgIGdsPzogTmd0R0xPcHRpb25zO1xuICAgIC8qKiBEaW1lbnNpb25zIHRvIGZpdCB0aGUgcmVuZGVyZXIgdG8uIFdpbGwgbWVhc3VyZSBjYW52YXMgZGltZW5zaW9ucyBpZiBvbWl0dGVkICovXG4gICAgc2l6ZT86IE5ndFNpemU7XG4gICAgLyoqXG4gICAgICogRW5hYmxlcyBQQ0Zzb2Z0IHNoYWRvd3MuIENhbiBhY2NlcHQgYGdsLnNoYWRvd01hcGAgb3B0aW9ucyBmb3IgZmluZS10dW5pbmcuXG4gICAgICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI2FwaS9lbi9yZW5kZXJlcnMvV2ViR0xSZW5kZXJlci5zaGFkb3dNYXBcbiAgICAgKi9cbiAgICBzaGFkb3dzPzogYm9vbGVhbiB8IFBhcnRpYWw8VEhSRUUuV2ViR0xTaGFkb3dNYXA+O1xuICAgIC8qKlxuICAgICAqIERpc2FibGVzIHRocmVlIHIxMzkgY29sb3IgbWFuYWdlbWVudC5cbiAgICAgKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jbWFudWFsL2VuL2ludHJvZHVjdGlvbi9Db2xvci1tYW5hZ2VtZW50XG4gICAgICovXG4gICAgbGVnYWN5PzogYm9vbGVhbjtcbiAgICAvKiogU3dpdGNoIG9mZiBhdXRvbWF0aWMgc1JHQiBlbmNvZGluZyBhbmQgZ2FtbWEgY29ycmVjdGlvbiAqL1xuICAgIGxpbmVhcj86IGJvb2xlYW47XG4gICAgLyoqIFVzZSBgVEhSRUUuTm9Ub25lTWFwcGluZ2AgaW5zdGVhZCBvZiBgVEhSRUUuQUNFU0ZpbG1pY1RvbmVNYXBwaW5nYCAqL1xuICAgIGZsYXQ/OiBib29sZWFuO1xuICAgIC8qKiBDcmVhdGVzIGFuIG9ydGhvZ3JhcGhpYyBjYW1lcmEgKi9cbiAgICBvcnRob2dyYXBoaWM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFIzRidzIHJlbmRlciBtb2RlLiBTZXQgdG8gYGRlbWFuZGAgdG8gb25seSByZW5kZXIgb24gc3RhdGUgY2hhbmdlIG9yIGBuZXZlcmAgdG8gdGFrZSBjb250cm9sLlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kb2NzLnBtbmQucnMvcmVhY3QtdGhyZWUtZmliZXIvYWR2YW5jZWQvc2NhbGluZy1wZXJmb3JtYW5jZSNvbi1kZW1hbmQtcmVuZGVyaW5nXG4gICAgICovXG4gICAgZnJhbWVsb29wPzogJ2Fsd2F5cycgfCAnZGVtYW5kJyB8ICduZXZlcic7XG4gICAgLyoqXG4gICAgICogUjNGIHBlcmZvcm1hbmNlIG9wdGlvbnMgZm9yIGFkYXB0aXZlIHBlcmZvcm1hbmNlLlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kb2NzLnBtbmQucnMvcmVhY3QtdGhyZWUtZmliZXIvYWR2YW5jZWQvc2NhbGluZy1wZXJmb3JtYW5jZSNtb3ZlbWVudC1yZWdyZXNzaW9uXG4gICAgICovXG4gICAgcGVyZm9ybWFuY2U/OiBQYXJ0aWFsPE9taXQ8Tmd0UGVyZm9ybWFuY2UsICdyZWdyZXNzJz4+O1xuICAgIC8qKiBUYXJnZXQgcGl4ZWwgcmF0aW8uIENhbiBjbGFtcCBiZXR3ZWVuIGEgcmFuZ2U6IGBbbWluLCBtYXhdYCAqL1xuICAgIGRwcj86IE5ndERwcjtcbiAgICAvKiogUHJvcHMgdGhhdCBnbyBpbnRvIHRoZSBkZWZhdWx0IHJheWNhc3RlciAqL1xuICAgIHJheWNhc3Rlcj86IFBhcnRpYWw8VEhSRUUuUmF5Y2FzdGVyPjtcbiAgICAvKiogQSBgVEhSRUUuQ2FtZXJhYCBpbnN0YW5jZSBvciBwcm9wcyB0aGF0IGdvIGludG8gdGhlIGRlZmF1bHQgY2FtZXJhICovXG4gICAgY2FtZXJhPzogKFxuICAgICAgICB8IE5ndENhbWVyYVxuICAgICAgICB8IFBhcnRpYWw8XG4gICAgICAgICAgICAgIE5ndE9iamVjdDNETm9kZTxUSFJFRS5DYW1lcmEsIHR5cGVvZiBUSFJFRS5DYW1lcmE+ICZcbiAgICAgICAgICAgICAgICAgIE5ndE9iamVjdDNETm9kZTxUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYSwgdHlwZW9mIFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhPiAmXG4gICAgICAgICAgICAgICAgICBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhLCB0eXBlb2YgVEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhPlxuICAgICAgICAgID5cbiAgICApICYge1xuICAgICAgICAvKiogRmxhZ3MgdGhlIGNhbWVyYSBhcyBtYW51YWwsIHB1dHRpbmcgcHJvamVjdGlvbiBpbnRvIHlvdXIgb3duIGhhbmRzICovXG4gICAgICAgIG1hbnVhbD86IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQW4gUjNGIGV2ZW50IG1hbmFnZXIgdG8gbWFuYWdlIGVsZW1lbnRzJyBwb2ludGVyIGV2ZW50cyAqL1xuICAgIGV2ZW50cz86IChzdGF0ZUZhY3Rvcnk6IE5ndFN0YXRlRmFjdG9yeSkgPT4gTmd0RXZlbnRNYW5hZ2VyPEhUTUxFbGVtZW50PjtcbiAgICAvKiogVGhlIHRhcmdldCB3aGVyZSBldmVudHMgYXJlIGJlaW5nIHN1YnNjcmliZWQgdG8sIGRlZmF1bHQ6IHRoZSBkaXYgdGhhdCB3cmFwcyBjYW52YXMgKi9cbiAgICBldmVudFNvdXJjZT86IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgLyoqIFRoZSBldmVudCBwcmVmaXggdGhhdCBpcyBjYXN0IGludG8gY2FudmFzIHBvaW50ZXIgeC95IGV2ZW50cywgZGVmYXVsdDogXCJvZmZzZXRcIiAqL1xuICAgIGV2ZW50UHJlZml4PzogJ29mZnNldCcgfCAnY2xpZW50JyB8ICdwYWdlJyB8ICdsYXllcicgfCAnc2NyZWVuJztcbiAgICAvKiogRGVmYXVsdCBjb29yZGluYXRlIGZvciB0aGUgY2FtZXJhIHRvIGxvb2sgYXQgKi9cbiAgICBsb29rQXQ/OiBUSFJFRS5WZWN0b3IzO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgdHlwZSB7IE5ndFJ4U3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9yeC1zdG9yZSc7XG5cbmV4cG9ydCB0eXBlIE5ndEFueVJlY29yZCA9IFJlY29yZDxzdHJpbmcsIGFueT47XG5leHBvcnQgdHlwZSBOZ3ROb25GdW5jdGlvbktleXM8VD4gPSB7XG4gICAgW0sgaW4ga2V5b2YgVF0tPzogVFtLXSBleHRlbmRzIEZ1bmN0aW9uID8gbmV2ZXIgOiBLO1xufVtrZXlvZiBUXTtcbmV4cG9ydCB0eXBlIE5ndFByb3BlcnRpZXM8VD4gPSBQaWNrPFQsIHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyAoXzogYW55KSA9PiBhbnkgPyBuZXZlciA6IEsgfVtrZXlvZiBUXT47XG5leHBvcnQgdHlwZSBOZ3RPdmVyd3JpdGU8VCwgTz4gPSBPbWl0PFQsIE5ndE5vbkZ1bmN0aW9uS2V5czxPPj4gJiBPO1xuXG5leHBvcnQgdHlwZSBOZ3RFcXVDb25maWcgPSB7XG4gICAgLyoqIENvbXBhcmUgYXJyYXlzIGJ5IHJlZmVyZW5jZSBlcXVhbGl0eSBhID09PSBiIChkZWZhdWx0KSwgb3IgYnkgc2hhbGxvdyBlcXVhbGl0eSAqL1xuICAgIGFycmF5cz86ICdyZWZlcmVuY2UnIHwgJ3NoYWxsb3cnO1xuICAgIC8qKiBDb21wYXJlIG9iamVjdHMgYnkgcmVmZXJlbmNlIGVxdWFsaXR5IGEgPT09IGIgKGRlZmF1bHQpLCBvciBieSBzaGFsbG93IGVxdWFsaXR5ICovXG4gICAgb2JqZWN0cz86ICdyZWZlcmVuY2UnIHwgJ3NoYWxsb3cnO1xuICAgIC8qKiBJZiB0cnVlIHRoZSBrZXlzIGluIGJvdGggYSBhbmQgYiBtdXN0IG1hdGNoIDE6MSAoZGVmYXVsdCksIGlmIGZhbHNlIGEncyBrZXlzIG11c3QgaW50ZXJzZWN0IGIncyAqL1xuICAgIHN0cmljdD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEludGVyc2VjdGlvbiBleHRlbmRzIFRIUkVFLkludGVyc2VjdGlvbiB7XG4gICAgLyoqIFRoZSBldmVudCBzb3VyY2UgKHRoZSBvYmplY3Qgd2hpY2ggcmVnaXN0ZXJlZCB0aGUgaGFuZGxlcikgKi9cbiAgICBldmVudE9iamVjdDogVEhSRUUuT2JqZWN0M0Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0UG9pbnRlckNhcHR1cmVUYXJnZXQge1xuICAgIGludGVyc2VjdGlvbjogTmd0SW50ZXJzZWN0aW9uO1xuICAgIHRhcmdldDogRWxlbWVudDtcbn1cblxuZXhwb3J0IHR5cGUgTmd0Q2FtZXJhID0gVEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhIHwgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmE7XG5leHBvcnQgdHlwZSBOZ3RDYW1lcmFNYW51YWwgPSBOZ3RDYW1lcmEgJiB7IG1hbnVhbD86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RJbnRlcnNlY3Rpb25FdmVudDxUU291cmNlRXZlbnQ+IGV4dGVuZHMgTmd0SW50ZXJzZWN0aW9uIHtcbiAgICAvKiogVGhlIGV2ZW50IHNvdXJjZSAodGhlIG9iamVjdCB3aGljaCByZWdpc3RlcmVkIHRoZSBoYW5kbGVyKSAqL1xuICAgIGV2ZW50T2JqZWN0OiBUSFJFRS5PYmplY3QzRDtcbiAgICAvKiogQW4gYXJyYXkgb2YgaW50ZXJzZWN0aW9ucyAqL1xuICAgIGludGVyc2VjdGlvbnM6IE5ndEludGVyc2VjdGlvbltdO1xuICAgIC8qKiB2ZWMzLnNldChwb2ludGVyLngsIHBvaW50ZXIueSwgMCkudW5wcm9qZWN0KGNhbWVyYSkgKi9cbiAgICB1bnByb2plY3RlZFBvaW50OiBUSFJFRS5WZWN0b3IzO1xuICAgIC8qKiBOb3JtYWxpemVkIGV2ZW50IGNvb3JkaW5hdGVzICovXG4gICAgcG9pbnRlcjogVEhSRUUuVmVjdG9yMjtcbiAgICAvKiogRGVsdGEgYmV0d2VlbiBmaXJzdCBjbGljayBhbmQgdGhpcyBldmVudCAqL1xuICAgIGRlbHRhOiBudW1iZXI7XG4gICAgLyoqIFRoZSByYXkgdGhhdCBwaWVyY2VkIGl0ICovXG4gICAgcmF5OiBUSFJFRS5SYXk7XG4gICAgLyoqIFRoZSBjYW1lcmEgdGhhdCB3YXMgdXNlZCBieSB0aGUgcmF5Y2FzdGVyICovXG4gICAgY2FtZXJhOiBOZ3RDYW1lcmE7XG4gICAgLyoqIHN0b3BQcm9wYWdhdGlvbiB3aWxsIHN0b3AgdW5kZXJseWluZyBoYW5kbGVycyBmcm9tIGZpcmluZyAqL1xuICAgIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gdm9pZDtcbiAgICAvKiogVGhlIG9yaWdpbmFsIGhvc3QgZXZlbnQgKi9cbiAgICBuYXRpdmVFdmVudDogVFNvdXJjZUV2ZW50O1xuICAgIC8qKiBJZiB0aGUgZXZlbnQgd2FzIHN0b3BwZWQgYnkgY2FsbGluZyBzdG9wUHJvcGFnYXRpb24gKi9cbiAgICBzdG9wcGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RUaHJlZUV2ZW50PFRFdmVudD4gPSBOZ3RJbnRlcnNlY3Rpb25FdmVudDxURXZlbnQ+ICYgTmd0UHJvcGVydGllczxURXZlbnQ+O1xuZXhwb3J0IHR5cGUgTmd0RG9tRXZlbnQgPSBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50IHwgV2hlZWxFdmVudDtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RFdmVudHMge1xuICAgIGNsaWNrOiBFdmVudExpc3RlbmVyO1xuICAgIGNvbnRleHRtZW51OiBFdmVudExpc3RlbmVyO1xuICAgIGRibGNsaWNrOiBFdmVudExpc3RlbmVyO1xuICAgIHdoZWVsOiBFdmVudExpc3RlbmVyO1xuICAgIHBvaW50ZXJkb3duOiBFdmVudExpc3RlbmVyO1xuICAgIHBvaW50ZXJ1cDogRXZlbnRMaXN0ZW5lcjtcbiAgICBwb2ludGVybGVhdmU6IEV2ZW50TGlzdGVuZXI7XG4gICAgcG9pbnRlcm1vdmU6IEV2ZW50TGlzdGVuZXI7XG4gICAgcG9pbnRlcmNhbmNlbDogRXZlbnRMaXN0ZW5lcjtcbiAgICBsb3N0cG9pbnRlcmNhcHR1cmU6IEV2ZW50TGlzdGVuZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0RXZlbnRIYW5kbGVycyB7XG4gICAgY2xpY2s/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4pID0+IHZvaWQ7XG4gICAgY29udGV4dG1lbnU/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4pID0+IHZvaWQ7XG4gICAgZGJsY2xpY2s/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4pID0+IHZvaWQ7XG4gICAgcG9pbnRlcnVwPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG4gICAgcG9pbnRlcmRvd24/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVyb3Zlcj86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJvdXQ/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVyZW50ZXI/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVybGVhdmU/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVybW92ZT86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJtaXNzZWQ/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgcG9pbnRlcmNhbmNlbD86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHdoZWVsPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFdoZWVsRXZlbnQ+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RGaWx0ZXJGdW5jdGlvbiA9IChpdGVtczogVEhSRUUuSW50ZXJzZWN0aW9uW10sIHN0b3JlOiBOZ3RSeFN0b3JlPE5ndFN0YXRlPikgPT4gVEhSRUUuSW50ZXJzZWN0aW9uW107XG5cbmV4cG9ydCB0eXBlIE5ndENvbXB1dGVGdW5jdGlvbiA9IChcbiAgICBldmVudDogTmd0RG9tRXZlbnQsXG4gICAgcm9vdDogTmd0UnhTdG9yZTxOZ3RTdGF0ZT4sXG4gICAgcHJldmlvdXM/OiBOZ3RSeFN0b3JlPE5ndFN0YXRlPlxuKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEV2ZW50TWFuYWdlcjxUVGFyZ2V0ID0gYW55PiB7XG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGV2ZW50IGxheWVyIGlzIGFjdGl2ZSAqL1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqIEV2ZW50IGxheWVyIHByaW9yaXR5LCBoaWdoZXIgcHJpb3JpdGl6ZWQgbGF5ZXJzIGNvbWUgZmlyc3QgYW5kIG1heSBzdG9wKC1wcm9wYWdhdGUpIGxvd2VyIGxheWVyICAqL1xuICAgIHByaW9yaXR5OiBudW1iZXI7XG4gICAgLyoqIFRoZSBjb21wdXRlIGZ1bmN0aW9uIG5lZWRzIHRvIHNldCB1cCB0aGUgcmF5Y2FzdGVyIGFuZCBhbiB4eS0gcG9pbnRlciAgKi9cbiAgICBjb21wdXRlPzogTmd0Q29tcHV0ZUZ1bmN0aW9uO1xuICAgIC8qKiBUaGUgZmlsdGVyIGNhbiByZS1vcmRlciBvciByZS1zdHJ1Y3R1cmUgdGhlIGludGVyc2VjdGlvbnMgICovXG4gICAgZmlsdGVyPzogTmd0RmlsdGVyRnVuY3Rpb247XG4gICAgLyoqIFRoZSB0YXJnZXQgbm9kZSB0aGUgZXZlbnQgbGF5ZXIgaXMgdGllZCB0byAqL1xuICAgIGNvbm5lY3RlZD86IFRUYXJnZXQ7XG4gICAgLyoqIEFsbCB0aGUgcG9pbnRlciBldmVudCBoYW5kbGVycyB0aHJvdWdoIHdoaWNoIHRoZSBob3N0IGZvcndhcmRzIG5hdGl2ZSBldmVudHMgKi9cbiAgICBoYW5kbGVycz86IE5ndEV2ZW50cztcbiAgICAvKiogQWxsb3dzIHJlLWNvbm5lY3RpbmcgdG8gYW5vdGhlciB0YXJnZXQgKi9cbiAgICBjb25uZWN0PzogKHRhcmdldDogVFRhcmdldCkgPT4gdm9pZDtcbiAgICAvKiogUmVtb3ZlcyBhbGwgZXhpc3RpbmcgZXZlbnRzIGhhbmRsZXJzIGZyb20gdGhlIHRhcmdldCAqL1xuICAgIGRpc2Nvbm5lY3Q/OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndFBlcmZvcm1hbmNlIHtcbiAgICAvKiogQ3VycmVudCBwZXJmb3JtYW5jZSBub3JtYWwsIGJldHdlZW4gbWluIGFuZCBtYXggKi9cbiAgICBjdXJyZW50OiBudW1iZXI7XG4gICAgLyoqIEhvdyBsb3cgdGhlIHBlcmZvcm1hbmNlIGNhbiBnbywgYmV0d2VlbiAwIGFuZCBtYXggKi9cbiAgICBtaW46IG51bWJlcjtcbiAgICAvKiogSG93IGhpZ2ggdGhlIHBlcmZvcm1hbmNlIGNhbiBnbywgYmV0d2VlbiBtaW4gYW5kIG1heCAqL1xuICAgIG1heDogbnVtYmVyO1xuICAgIC8qKiBUaW1lIHVudGlsIGN1cnJlbnQgcmV0dXJucyB0byBtYXggaW4gbXMgKi9cbiAgICBkZWJvdW5jZTogbnVtYmVyO1xuICAgIC8qKiBTZXRzIGN1cnJlbnQgdG8gbWluLCBwdXRzIHRoZSBzeXN0ZW0gaW4gcmVncmVzc2lvbiAqL1xuICAgIHJlZ3Jlc3M6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIE5ndERwciA9IG51bWJlciB8IFttaW46IG51bWJlciwgbWF4OiBudW1iZXJdO1xuZXhwb3J0IHR5cGUgTmd0U2l6ZSA9IHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIHRvcDogbnVtYmVyO1xuICAgIGxlZnQ6IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBOZ3RWaWV3cG9ydCA9IE5ndFNpemUgJiB7XG4gICAgLyoqIFRoZSBpbml0aWFsIHBpeGVsIHJhdGlvICovXG4gICAgaW5pdGlhbERwcjogbnVtYmVyO1xuICAgIC8qKiBDdXJyZW50IHBpeGVsIHJhdGlvICovXG4gICAgZHByOiBudW1iZXI7XG4gICAgLyoqIHNpemUud2lkdGggLyB2aWV3cG9ydC53aWR0aCAqL1xuICAgIGZhY3RvcjogbnVtYmVyO1xuICAgIC8qKiBDYW1lcmEgZGlzdGFuY2UgKi9cbiAgICBkaXN0YW5jZTogbnVtYmVyO1xuICAgIC8qKiBDYW1lcmEgYXNwZWN0IHJhdGlvOiB3aWR0aCAvIGhlaWdodCAqL1xuICAgIGFzcGVjdDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RSZW5kZXJTdGF0ZSBleHRlbmRzIE5ndFN0YXRlIHtcbiAgICBkZWx0YTogbnVtYmVyO1xuICAgIGZyYW1lPzogWFJGcmFtZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RCZWZvcmVSZW5kZXJFdmVudDxUT2JqZWN0IGV4dGVuZHMgTmd0SW5zdGFuY2VOb2RlID0gTmd0SW5zdGFuY2VOb2RlPiB7XG4gICAgc3RhdGU6IE5ndFJlbmRlclN0YXRlO1xuICAgIG9iamVjdDogVE9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RCZWZvcmVSZW5kZXJSZWNvcmQge1xuICAgIGNhbGxiYWNrOiAoc3RhdGU6IE5ndFJlbmRlclN0YXRlKSA9PiB2b2lkO1xuICAgIHN0b3JlOiBOZ3RSeFN0b3JlPE5ndFN0YXRlPjtcbiAgICBwcmlvcml0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RJbnRlcm5hbFN0YXRlIHtcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgcHJpb3JpdHk6IG51bWJlcjtcbiAgICBmcmFtZXM6IG51bWJlcjtcbiAgICBsYXN0RXZlbnQ6IE5ndERvbUV2ZW50O1xuICAgIGludGVyYWN0aW9uOiBUSFJFRS5PYmplY3QzRFtdO1xuICAgIGhvdmVyZWQ6IE1hcDxzdHJpbmcsIE5ndFRocmVlRXZlbnQ8Tmd0RG9tRXZlbnQ+PjtcbiAgICBzdWJzY3JpYmVyczogTmd0QmVmb3JlUmVuZGVyUmVjb3JkW107XG4gICAgY2FwdHVyZWRNYXA6IE1hcDxudW1iZXIsIE1hcDxUSFJFRS5PYmplY3QzRCwgTmd0UG9pbnRlckNhcHR1cmVUYXJnZXQ+PjtcbiAgICBpbml0aWFsQ2xpY2s6IFt4OiBudW1iZXIsIHk6IG51bWJlcl07XG4gICAgaW5pdGlhbEhpdHM6IFRIUkVFLk9iamVjdDNEW107XG4gICAgc3Vic2NyaWJlOiAoXG4gICAgICAgIGNhbGxiYWNrOiBOZ3RCZWZvcmVSZW5kZXJSZWNvcmRbJ2NhbGxiYWNrJ10sXG4gICAgICAgIHByaW9yaXR5PzogbnVtYmVyLFxuICAgICAgICBzdG9yZT86IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+XG4gICAgKSA9PiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndFN0YXRlIHtcbiAgICAvKiogU2V0IGN1cnJlbnQgc3RhdGUgKi9cbiAgICBzZXQ6IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+WydzZXQnXTtcbiAgICAvKiogR2V0IGN1cnJlbnQgc3RhdGUgKi9cbiAgICBnZXQ6IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+WydnZXQnXTtcbiAgICBzZWxlY3Q6IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+WydzZWxlY3QnXTtcbiAgICAvKiogY2FudmFzIHJlYWR5IHN0YXRlICovXG4gICAgcmVhZHk6IGJvb2xlYW47XG4gICAgLyoqIFRoZSBpbnN0YW5jZSBvZiB0aGUgcmVuZGVyZXIgKi9cbiAgICBnbDogVEhSRUUuV2ViR0xSZW5kZXJlcjtcbiAgICAvKiogRGVmYXVsdCBjYW1lcmEgKi9cbiAgICBjYW1lcmE6IE5ndENhbWVyYU1hbnVhbDtcbiAgICAvKiogRGVmYXVsdCBzY2VuZSAqL1xuICAgIHNjZW5lOiBUSFJFRS5TY2VuZTtcbiAgICAvKiogRGVmYXVsdCByYXljYXN0ZXIgKi9cbiAgICByYXljYXN0ZXI6IFRIUkVFLlJheWNhc3RlcjtcbiAgICAvKiogRGVmYXVsdCBjbG9jayAqL1xuICAgIGNsb2NrOiBUSFJFRS5DbG9jaztcbiAgICAvKiogRXZlbnQgbGF5ZXIgaW50ZXJmYWNlLCBjb250YWlucyB0aGUgZXZlbnQgaGFuZGxlciBhbmQgdGhlIG5vZGUgdGhleSdyZSBjb25uZWN0ZWQgdG8gKi9cbiAgICBldmVudHM6IE5ndEV2ZW50TWFuYWdlcjtcbiAgICAvKiogWFIgaW50ZXJmYWNlICovXG4gICAgeHI6IHsgY29ubmVjdDogKCkgPT4gdm9pZDsgZGlzY29ubmVjdDogKCkgPT4gdm9pZCB9O1xuICAgIC8qKiBDdXJyZW50bHkgdXNlZCBjb250cm9scyAqL1xuICAgIGNvbnRyb2xzOiBUSFJFRS5FdmVudERpc3BhdGNoZXIgfCBudWxsO1xuICAgIC8qKiBOb3JtYWxpemVkIGV2ZW50IGNvb3JkaW5hdGVzICovXG4gICAgcG9pbnRlcjogVEhSRUUuVmVjdG9yMjtcbiAgICAvKiBXaGV0aGVyIHRvIGVuYWJsZSByMTM5J3MgQ29sb3JNYW5hZ2VtZW50LmxlZ2FjeU1vZGUgKi9cbiAgICBsZWdhY3k6IGJvb2xlYW47XG4gICAgLyoqIFNob3J0Y3V0IHRvIGdsLm91dHB1dEVuY29kaW5nID0gTGluZWFyRW5jb2RpbmcgKi9cbiAgICBsaW5lYXI6IGJvb2xlYW47XG4gICAgLyoqIFNob3J0Y3V0IHRvIGdsLnRvbmVNYXBwaW5nID0gTm9Ub25lbWFwcGluZyAqL1xuICAgIGZsYXQ6IGJvb2xlYW47XG4gICAgLyoqIFJlbmRlciBsb29wIGZsYWdzICovXG4gICAgZnJhbWVsb29wOiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJztcbiAgICAvKiogQWRhcHRpdmUgcGVyZm9ybWFuY2UgaW50ZXJmYWNlICovXG4gICAgcGVyZm9ybWFuY2U6IE5ndFBlcmZvcm1hbmNlO1xuICAgIC8qKiBSZWFjdGl2ZSBwaXhlbC1zaXplIG9mIHRoZSBjYW52YXMgKi9cbiAgICBzaXplOiBOZ3RTaXplO1xuICAgIC8qKiBSZWFjdGl2ZSBzaXplIG9mIHRoZSB2aWV3cG9ydCBpbiB0aHJlZWpzIHVuaXRzICovXG4gICAgdmlld3BvcnQ6IE5ndFZpZXdwb3J0ICYge1xuICAgICAgICBnZXRDdXJyZW50Vmlld3BvcnQ6IChcbiAgICAgICAgICAgIGNhbWVyYT86IE5ndENhbWVyYU1hbnVhbCxcbiAgICAgICAgICAgIHRhcmdldD86IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPixcbiAgICAgICAgICAgIHNpemU/OiBOZ3RTaXplXG4gICAgICAgICkgPT4gT21pdDxOZ3RWaWV3cG9ydCwgJ2RwcicgfCAnaW5pdGlhbERwcic+O1xuICAgIH07XG4gICAgLyoqIEZsYWdzIHRoZSBjYW52YXMgZm9yIHJlbmRlciwgYnV0IGRvZXNuJ3QgcmVuZGVyIGluIGl0c2VsZiAqL1xuICAgIGludmFsaWRhdGU6IChmcmFtZXM/OiBudW1iZXIpID0+IHZvaWQ7XG4gICAgLyoqIEFkdmFuY2UgKHJlbmRlcikgb25lIHN0ZXAgKi9cbiAgICBhZHZhbmNlOiAodGltZXN0YW1wOiBudW1iZXIsIHJ1bkdsb2JhbEVmZmVjdHM/OiBib29sZWFuKSA9PiB2b2lkO1xuICAgIC8qKiBTaG9ydGN1dCB0byBzZXR0aW5nIHRoZSBldmVudCBsYXllciAqL1xuICAgIHNldEV2ZW50czogKGV2ZW50czogUGFydGlhbDxOZ3RFdmVudE1hbmFnZXI8YW55Pj4pID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogU2hvcnRjdXQgdG8gbWFudWFsIHNpemluZ1xuICAgICAqL1xuICAgIHNldFNpemU6ICh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgdG9wPzogbnVtYmVyLCBsZWZ0PzogbnVtYmVyLCB1cGRhdGVTdHlsZT86IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgLyoqIFNob3J0Y3V0IHRvIG1hbnVhbCBzZXR0aW5nIHRoZSBwaXhlbCByYXRpbyAqL1xuICAgIHNldERwcjogKGRwcjogTmd0RHByKSA9PiB2b2lkO1xuICAgIC8qKiBTaG9ydGN1dCB0byBmcmFtZWxvb3AgZmxhZ3MgKi9cbiAgICBzZXRGcmFtZWxvb3A6IChmcmFtZWxvb3A/OiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJykgPT4gdm9pZDtcbiAgICAvKiogV2hlbiB0aGUgY2FudmFzIHdhcyBjbGlja2VkIGJ1dCBub3RoaW5nIHdhcyBoaXQgKi9cbiAgICBvblBvaW50ZXJNaXNzZWQ/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgLyoqIElmIHRoaXMgc3RhdGUgbW9kZWwgaXMgbGF5ZXJkICh2aWEgY3JlYXRlUG9ydGFsKSB0aGVuIHRoaXMgY29udGFpbnMgdGhlIHByZXZpb3VzIGxheWVyICovXG4gICAgcHJldmlvdXNTdG9yZT86IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+O1xuICAgIC8qKiBJbnRlcm5hbHMgKi9cbiAgICBpbnRlcm5hbDogTmd0SW50ZXJuYWxTdGF0ZTtcbiAgICAvKiogc2hvcnRjdXRzIGZvciBhZGQgYW5kIHJlbW92ZSBpbnRlcmFjdGlvbiAqL1xuICAgIGFkZEludGVyYWN0aW9uOiAoaW50ZXJhY3Rpb246IFRIUkVFLk9iamVjdDNEKSA9PiB2b2lkO1xuICAgIHJlbW92ZUludGVyYWN0aW9uOiAodXVpZDogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RBdHRhY2hGdW5jdGlvbjxUQ2hpbGQgPSBhbnksIFRQYXJlbnQgPSBhbnk+ID0gKFxuICAgIHBhcmVudDogVFBhcmVudCxcbiAgICBjaGlsZDogVENoaWxkLFxuICAgIHN0b3JlOiBOZ3RSeFN0b3JlPE5ndFN0YXRlPlxuKSA9PiB2b2lkIHwgKCgpID0+IHZvaWQpO1xuXG5leHBvcnQgdHlwZSBOZ3RBZnRlckF0dGFjaDxcbiAgICBUUGFyZW50IGV4dGVuZHMgTmd0SW5zdGFuY2VOb2RlID0gTmd0SW5zdGFuY2VOb2RlLFxuICAgIFRDaGlsZCBleHRlbmRzIE5ndEluc3RhbmNlTm9kZSA9IE5ndEluc3RhbmNlTm9kZVxuPiA9IHsgcGFyZW50OiBUUGFyZW50OyBub2RlOiBUQ2hpbGQgfTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RJbnN0YW5jZUxvY2FsU3RhdGUge1xuICAgIC8qKiB0aGUgc3RhdGUgZ2V0dGVyIG9mIHRoZSBjYW52YXMgdGhhdCB0aGUgaW5zdGFuY2UgaXMgYmVpbmcgcmVuZGVyZWQgdG8gKi9cbiAgICBzdG9yZTogTmd0UnhTdG9yZTxOZ3RTdGF0ZT47XG4gICAgLy8gb2JqZWN0cyBhbmQgcGFyZW50IGFyZSB1c2VkIHdoZW4gY2hpbGRyZW4gYXJlIGFkZGVkIHdpdGggYGF0dGFjaGAgaW5zdGVhZCBvZiBiZWluZyBhZGRlZCB0byB0aGUgT2JqZWN0M0Qgc2NlbmUgZ3JhcGhcbiAgICBub25PYmplY3RzOiBCZWhhdmlvclN1YmplY3Q8Tmd0SW5zdGFuY2VOb2RlW10+O1xuICAgIC8vIG9iamVjdHMgdGhhdCBhcmUgT2JqZWN0M0RcbiAgICBvYmplY3RzOiBCZWhhdmlvclN1YmplY3Q8Tmd0SW5zdGFuY2VOb2RlW10+O1xuICAgIC8vIHNob3J0Y3V0IHRvIGFkZC9yZW1vdmUgb2JqZWN0IHRvIGxpc3RcbiAgICBhZGQ6IChpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlLCB0eXBlOiAnb2JqZWN0cycgfCAnbm9uT2JqZWN0cycpID0+IHZvaWQ7XG4gICAgcmVtb3ZlOiAoaW5zdGFuY2U6IE5ndEluc3RhbmNlTm9kZSwgdHlwZTogJ29iamVjdHMnIHwgJ25vbk9iamVjdHMnKSA9PiB2b2lkO1xuICAgIC8vIHBhcmVudCBiYXNlZCBvbiBhdHRhY2ggdGhyZWUgaW5zdGFuY2VcbiAgICBwYXJlbnQ6IE5ndEluc3RhbmNlTm9kZSB8IG51bGw7XG4gICAgLy8gaWYgdGhpcyBUSFJFRSBpbnN0YW5jZSBpcyBhIG5ndC1wcmltaXRpdmVcbiAgICBwcmltaXRpdmU/OiBib29sZWFuO1xuICAgIC8vIGlmIHRoaXMgVEhSRUUgb2JqZWN0IGhhcyBhbnkgZXZlbnRzIGJvdW5kIHRvIGl0XG4gICAgZXZlbnRDb3VudDogbnVtYmVyO1xuICAgIC8vIGxpc3Qgb2YgaGFuZGxlcnMgdG8gaGFuZGxlIHRoZSBldmVudHNcbiAgICBoYW5kbGVyczogUGFydGlhbDxOZ3RFdmVudEhhbmRsZXJzPjtcbiAgICAvLyBwcmV2aW91cyBhcmdzXG4gICAgYXJncz86IHVua25vd25bXTtcbiAgICAvLyBhdHRhY2ggaW5mb3JtYXRpb24gc28gdGhhdCB3ZSBjYW4gZGV0YWNoIGFzIHdlbGwgYXMgcmVzZXRcbiAgICBhdHRhY2g/OiBzdHJpbmdbXSB8IE5ndEF0dGFjaEZ1bmN0aW9uO1xuICAgIC8vIHByZXZpb3VzbHkgYXR0YWNoIGluZm9ybWF0aW9uIHNvIHdlIGNhbiByZXNldCBhcyB3ZWxsIGFzIGNsZWFuIHVwXG4gICAgcHJldmlvdXNBdHRhY2g/OiB1bmtub3duIHwgKCgpID0+IHZvaWQpO1xuICAgIC8vIGlzIHJhdyB2YWx1ZVxuICAgIGlzUmF3PzogYm9vbGVhbjtcbiAgICAvLyBwcmlvcml0eSBmb3IgYmVmb3JlIHJlbmRlclxuICAgIHByaW9yaXR5PzogbnVtYmVyO1xuICAgIC8vIGVtaXR0ZXIgYWZ0ZXIgcHJvcHMgdXBkYXRlXG4gICAgYWZ0ZXJVcGRhdGU/OiBFdmVudEVtaXR0ZXI8Tmd0SW5zdGFuY2VOb2RlPjtcbiAgICAvLyBlbWl0dGVyIGFmdGVyIGF0dGFjaGluZyB0byBwYXJlbnRcbiAgICBhZnRlckF0dGFjaD86IEV2ZW50RW1pdHRlcjxOZ3RBZnRlckF0dGFjaD47XG59XG5cbmV4cG9ydCB0eXBlIE5ndEluc3RhbmNlTm9kZTxUTm9kZSA9IGFueT4gPSBUTm9kZSAmIHtcbiAgICBfX25ndF9fOiBOZ3RJbnN0YW5jZUxvY2FsU3RhdGU7XG59ICYgTmd0QW55UmVjb3JkO1xuXG5leHBvcnQgdHlwZSBOZ3RHTFJlbmRlcmVyID0ge1xuICAgIHJlbmRlcjogKHNjZW5lOiBUSFJFRS5TY2VuZSwgY2FtZXJhOiBUSFJFRS5DYW1lcmEpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RHTE9wdGlvbnMgPVxuICAgIHwgTmd0R0xSZW5kZXJlclxuICAgIHwgKChjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50KSA9PiBOZ3RHTFJlbmRlcmVyKVxuICAgIHwgUGFydGlhbDxOZ3RQcm9wZXJ0aWVzPFRIUkVFLldlYkdMUmVuZGVyZXI+IHwgVEhSRUUuV2ViR0xSZW5kZXJlclBhcmFtZXRlcnM+XG4gICAgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIE5ndEV4dGVuZGVkQ29sb3JzPFQ+ID0ge1xuICAgIFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgVEhSRUUuQ29sb3IgfCB1bmRlZmluZWQgPyBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uIDogVFtLXTtcbn07XG5cbi8qKlxuICogSWYgKipUKiogY29udGFpbnMgYSBjb25zdHJ1Y3RvciwgQHNlZSBDb25zdHJ1Y3RvclBhcmFtZXRlcnMgbXVzdCBiZSB1c2VkLCBvdGhlcndpc2UgKipUKiouXG4gKi9cbmV4cG9ydCB0eXBlIE5ndE5vZGVBcmdzPFQ+ID0gVCBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55KSA9PiBhbnkgPyBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8VD4gOiBUO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndE5vZGVQcm9wczxQPiB7XG4gICAgYXR0YWNoPzogc3RyaW5nW107XG4gICAgLyoqIENvbnN0cnVjdG9yIGFyZ3VtZW50cyAqL1xuICAgIGFyZ3M/OiBOZ3ROb2RlQXJnczxQPjtcbn1cblxuZXhwb3J0IHR5cGUgTmd0Tm9kZTxULCBQPiA9IE5ndEV4dGVuZGVkQ29sb3JzPE5ndE92ZXJ3cml0ZTxQYXJ0aWFsPFQ+LCBOZ3ROb2RlUHJvcHM8UD4+PjtcbmV4cG9ydCB0eXBlIE5ndE9iamVjdDNETm9kZTxULCBQPiA9IE5ndE92ZXJ3cml0ZTxcbiAgICBOZ3ROb2RlPFQsIFA+LFxuICAgIHtcbiAgICAgICAgcG9zaXRpb24/OiBUSFJFRS5WZWN0b3IzIHwgUGFyYW1ldGVyczxUSFJFRS5WZWN0b3IzWydzZXQnXT47XG4gICAgICAgIHVwPzogVEhSRUUuVmVjdG9yMyB8IFBhcmFtZXRlcnM8VEhSRUUuVmVjdG9yM1snc2V0J10+O1xuICAgICAgICBzY2FsZT86IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPjtcbiAgICAgICAgcm90YXRpb24/OiBUSFJFRS5FdWxlciB8IFBhcmFtZXRlcnM8VEhSRUUuRXVsZXJbJ3NldCddPjtcbiAgICAgICAgbWF0cml4PzogVEhSRUUuTWF0cml4NCB8IFBhcmFtZXRlcnM8VEhSRUUuTWF0cml4NFsnc2V0J10+O1xuICAgICAgICBxdWF0ZXJuaW9uPzogVEhSRUUuUXVhdGVybmlvbiB8IFBhcmFtZXRlcnM8VEhSRUUuUXVhdGVybmlvblsnc2V0J10+O1xuICAgICAgICBsYXllcnM/OiBUSFJFRS5MYXllcnMgfCBQYXJhbWV0ZXJzPFRIUkVFLkxheWVyc1snc2V0J10+O1xuICAgIH1cbj4gJlxuICAgIE5ndEV2ZW50SGFuZGxlcnM7XG5cbmV4cG9ydCB0eXBlIE5ndENvbmRpdGlvbmFsVHlwZTxDaGlsZCwgUGFyZW50LCBUcnV0aHksIEZhbHN5PiA9IENoaWxkIGV4dGVuZHMgUGFyZW50ID8gVHJ1dGh5IDogRmFsc3k7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0TG9hZGVyUHJvdG88VD4gZXh0ZW5kcyBUSFJFRS5Mb2FkZXIge1xuICAgIGxvYWQoXG4gICAgICAgIHVybDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgICAgIG9uTG9hZD86IChyZXN1bHQ6IFQpID0+IHZvaWQsXG4gICAgICAgIG9uUHJvZ3Jlc3M/OiAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHZvaWQsXG4gICAgICAgIG9uRXJyb3I/OiAoZXZlbnQ6IEVycm9yRXZlbnQpID0+IHZvaWRcbiAgICApOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndExvYWRlckV4dGVuc2lvbnMge1xuICAgIChsb2FkZXI6IFRIUkVFLkxvYWRlcik6IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIE5ndExvYWRlclJlc3VsdDxUPiA9IFQgZXh0ZW5kcyBhbnlbXSA/IE5ndExvYWRlclByb3RvPFRbbnVtYmVyXT4gOiBOZ3RMb2FkZXJQcm90bzxUPjtcbmV4cG9ydCB0eXBlIE5ndEJyYW5jaGluZ1JldHVybjxUID0gYW55LCBQYXJlbnQgPSBhbnksIENvZXJjZWQgPSBhbnk+ID0gTmd0Q29uZGl0aW9uYWxUeXBlPFQsIFBhcmVudCwgQ29lcmNlZCwgVD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0T2JqZWN0TWFwIHtcbiAgICBub2RlczogeyBbbmFtZTogc3RyaW5nXTogVEhSRUUuT2JqZWN0M0QgfTtcbiAgICBtYXRlcmlhbHM6IHsgW25hbWU6IHN0cmluZ106IFRIUkVFLk1hdGVyaWFsIH07XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndENhbnZhc0lucHV0cyB7XG4gICAgLyoqIEEgdGhyZWVqcyByZW5kZXJlciBpbnN0YW5jZSBvciBwcm9wcyB0aGF0IGdvIGludG8gdGhlIGRlZmF1bHQgcmVuZGVyZXIgKi9cbiAgICBnbD86IE5ndEdMT3B0aW9ucztcbiAgICAvKiogRGltZW5zaW9ucyB0byBmaXQgdGhlIHJlbmRlcmVyIHRvLiBXaWxsIG1lYXN1cmUgY2FudmFzIGRpbWVuc2lvbnMgaWYgb21pdHRlZCAqL1xuICAgIHNpemU/OiBOZ3RTaXplO1xuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgUENGc29mdCBzaGFkb3dzLiBDYW4gYWNjZXB0IGBnbC5zaGFkb3dNYXBgIG9wdGlvbnMgZm9yIGZpbmUtdHVuaW5nLlxuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vcmVuZGVyZXJzL1dlYkdMUmVuZGVyZXIuc2hhZG93TWFwXG4gICAgICovXG4gICAgc2hhZG93cz86IGJvb2xlYW4gfCBQYXJ0aWFsPFRIUkVFLldlYkdMU2hhZG93TWFwPjtcbiAgICAvKipcbiAgICAgKiBEaXNhYmxlcyB0aHJlZSByMTM5IGNvbG9yIG1hbmFnZW1lbnQuXG4gICAgICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI21hbnVhbC9lbi9pbnRyb2R1Y3Rpb24vQ29sb3ItbWFuYWdlbWVudFxuICAgICAqL1xuICAgIGxlZ2FjeT86IGJvb2xlYW47XG4gICAgLyoqIFN3aXRjaCBvZmYgYXV0b21hdGljIHNSR0IgZW5jb2RpbmcgYW5kIGdhbW1hIGNvcnJlY3Rpb24gKi9cbiAgICBsaW5lYXI/OiBib29sZWFuO1xuICAgIC8qKiBVc2UgYE5vVG9uZU1hcHBpbmdgIGluc3RlYWQgb2YgYEFDRVNGaWxtaWNUb25lTWFwcGluZ2AgKi9cbiAgICBmbGF0PzogYm9vbGVhbjtcbiAgICAvKiogQ3JlYXRlcyBhbiBvcnRob2dyYXBoaWMgY2FtZXJhICovXG4gICAgb3J0aG9ncmFwaGljPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBSM0YncyByZW5kZXIgbW9kZS4gU2V0IHRvIGBkZW1hbmRgIHRvIG9ubHkgcmVuZGVyIG9uIHN0YXRlIGNoYW5nZSBvciBgbmV2ZXJgIHRvIHRha2UgY29udHJvbC5cbiAgICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5wbW5kLnJzL3JlYWN0LXRocmVlLWZpYmVyL2FkdmFuY2VkL3NjYWxpbmctcGVyZm9ybWFuY2Ujb24tZGVtYW5kLXJlbmRlcmluZ1xuICAgICAqL1xuICAgIGZyYW1lbG9vcD86ICdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInO1xuICAgIC8qKlxuICAgICAqIFIzRiBwZXJmb3JtYW5jZSBvcHRpb25zIGZvciBhZGFwdGl2ZSBwZXJmb3JtYW5jZS5cbiAgICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5wbW5kLnJzL3JlYWN0LXRocmVlLWZpYmVyL2FkdmFuY2VkL3NjYWxpbmctcGVyZm9ybWFuY2UjbW92ZW1lbnQtcmVncmVzc2lvblxuICAgICAqL1xuICAgIHBlcmZvcm1hbmNlPzogUGFydGlhbDxPbWl0PE5ndFBlcmZvcm1hbmNlLCAncmVncmVzcyc+PjtcbiAgICAvKiogVGFyZ2V0IHBpeGVsIHJhdGlvLiBDYW4gY2xhbXAgYmV0d2VlbiBhIHJhbmdlOiBgW21pbiwgbWF4XWAgKi9cbiAgICBkcHI/OiBOZ3REcHI7XG4gICAgLyoqIFByb3BzIHRoYXQgZ28gaW50byB0aGUgZGVmYXVsdCByYXljYXN0ZXIgKi9cbiAgICByYXljYXN0ZXI/OiBQYXJ0aWFsPFRIUkVFLlJheWNhc3Rlcj47XG4gICAgLyoqIEEgYENhbWVyYWAgaW5zdGFuY2Ugb3IgcHJvcHMgdGhhdCBnbyBpbnRvIHRoZSBkZWZhdWx0IGNhbWVyYSAqL1xuICAgIGNhbWVyYT86IChcbiAgICAgICAgfCBOZ3RDYW1lcmFcbiAgICAgICAgfCBQYXJ0aWFsPFxuICAgICAgICAgICAgICBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuQ2FtZXJhLCB0eXBlb2YgVEhSRUUuQ2FtZXJhPiAmXG4gICAgICAgICAgICAgICAgICBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEsIHR5cGVvZiBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYT4gJlxuICAgICAgICAgICAgICAgICAgTmd0T2JqZWN0M0ROb2RlPFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYSwgdHlwZW9mIFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYT5cbiAgICAgICAgICA+XG4gICAgKSAmIHtcbiAgICAgICAgLyoqIEZsYWdzIHRoZSBjYW1lcmEgYXMgbWFudWFsLCBwdXR0aW5nIHByb2plY3Rpb24gaW50byB5b3VyIG93biBoYW5kcyAqL1xuICAgICAgICBtYW51YWw/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEFuIFIzRiBldmVudCBtYW5hZ2VyIHRvIG1hbmFnZSBlbGVtZW50cycgcG9pbnRlciBldmVudHMgKi9cbiAgICBldmVudHM/OiAoc3RvcmU6IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+KSA9PiBOZ3RFdmVudE1hbmFnZXI8SFRNTEVsZW1lbnQ+O1xuICAgIC8qKiBUaGUgdGFyZ2V0IHdoZXJlIGV2ZW50cyBhcmUgYmVpbmcgc3Vic2NyaWJlZCB0bywgZGVmYXVsdDogdGhlIGRpdiB0aGF0IHdyYXBzIGNhbnZhcyAqL1xuICAgIGV2ZW50U291cmNlPzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICAvKiogVGhlIGV2ZW50IHByZWZpeCB0aGF0IGlzIGNhc3QgaW50byBjYW52YXMgcG9pbnRlciB4L3kgZXZlbnRzLCBkZWZhdWx0OiBcIm9mZnNldFwiICovXG4gICAgZXZlbnRQcmVmaXg/OiAnb2Zmc2V0JyB8ICdjbGllbnQnIHwgJ3BhZ2UnIHwgJ2xheWVyJyB8ICdzY3JlZW4nO1xuICAgIC8qKiBEZWZhdWx0IGNvb3JkaW5hdGUgZm9yIHRoZSBjYW1lcmEgdG8gbG9vayBhdCAqL1xuICAgIGxvb2tBdD86IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPjtcbn1cbiJdfQ==
@@ -1,135 +1,92 @@
1
1
  import * as THREE from 'three';
2
- import { checkNeedsUpdate } from './check-update';
3
- import { getInstanceLocalState } from './get-instance-local-state';
4
- import { invalidateInstance } from './instance';
2
+ import { getLocalState, invalidateInstance } from './instance';
5
3
  import { is } from './is';
6
- const DEFAULT = '__default';
7
- export function diffProps(instance, props, previousProps = {}, remove = false) {
8
- const localState = getInstanceLocalState(instance) || {};
4
+ import { checkUpdate } from './update';
5
+ function diffProps(instance, props) {
9
6
  const propsEntries = Object.entries(props);
10
7
  const changes = [];
11
- // Catch removed props, prepend them, so they can be reset or removed
12
- if (remove) {
13
- const previousKeys = Object.keys(previousProps);
14
- for (const previousKey of previousKeys) {
15
- // @ts-ignore
16
- if (!Object.hasOwn(props, previousKey)) {
17
- propsEntries.unshift([previousKey, DEFAULT + 'remove']);
18
- }
19
- }
20
- }
21
8
  for (const [propKey, propValue] of propsEntries) {
22
- if (is.equ(propValue, previousProps[propKey]))
9
+ if (is.equ(propValue, instance[propKey]))
23
10
  continue;
24
11
  changes.push([propKey, propValue]);
25
12
  }
26
- const memoized = { ...props };
27
- if (localState.memoized && localState.memoized['args']) {
28
- memoized['args'] = localState.memoized['args'];
29
- }
30
- if (localState.memoized && localState.memoized['attach']) {
31
- memoized['attach'] = localState.memoized['attach'] || localState.attach;
32
- }
33
- return { changes, memoized };
13
+ return changes;
34
14
  }
35
15
  export function applyProps(instance, props) {
36
- // props is empty
16
+ // if props is empty
37
17
  if (!Object.keys(props).length)
38
18
  return instance;
39
- // Filter equals, events and reserved props
40
- const localState = getInstanceLocalState(instance) || {};
41
- const rootState = localState.stateFactory?.();
42
- const { changes, memoized } = diffProps(instance, props);
43
- const instanceHandlers = localState.eventCount;
44
- if (getInstanceLocalState(instance)) {
45
- getInstanceLocalState(instance).memoized = memoized;
46
- }
19
+ // filter equals, events , and reserved props
20
+ const localState = getLocalState(instance);
21
+ const rootState = localState.store?.get();
22
+ const changes = diffProps(instance, props);
47
23
  for (let i = 0; i < changes.length; i++) {
48
24
  const key = changes[i][0];
49
25
  const currentInstance = instance;
50
26
  const targetProp = currentInstance[key];
51
- let value = changes[i][1];
52
- if (is.ref(value)) {
53
- value = value.value;
54
- }
55
- if (value === DEFAULT + 'remove') {
56
- if (targetProp && targetProp.constructor) {
57
- // use the prop constructor to find the default it should be
58
- value = new targetProp.constructor(...(memoized['args'] ?? []));
59
- }
60
- else if (currentInstance.constructor) {
61
- const dummyInstance = new currentInstance.constructor(...(getInstanceLocalState(currentInstance)?.memoized?.['args'] || []));
62
- value = dummyInstance[targetProp];
63
- // destroy the instance
64
- if (dummyInstance.dispose)
65
- dummyInstance.dispose();
66
- }
67
- else {
68
- value = 0;
69
- }
70
- }
71
- // Special treatment for objects with support for set/copy, and layers
27
+ const value = changes[i][1];
28
+ // special treatmen for objects with support for set/copy, and layers
72
29
  if (targetProp && targetProp['set'] && (targetProp['copy'] || targetProp instanceof THREE.Layers)) {
73
30
  const isColor = targetProp instanceof THREE.Color;
74
- // If value is an array
31
+ // if value is an array
75
32
  if (Array.isArray(value)) {
76
33
  if (targetProp['fromArray'])
77
34
  targetProp['fromArray'](value);
78
35
  else
79
36
  targetProp['set'](...value);
80
37
  }
81
- // Test again target.copy(class) next ...
38
+ // test again target.copy
82
39
  else if (targetProp['copy'] &&
83
40
  value &&
84
41
  value.constructor &&
85
42
  targetProp.constructor.name === value.constructor.name) {
86
43
  targetProp['copy'](value);
87
- if (!is.supportColorManagement() && !rootState.linear && isColor) {
44
+ if (!THREE.ColorManagement && !rootState.linear && isColor) {
88
45
  targetProp['convertSRGBToLinear']();
89
46
  }
90
47
  }
91
- // If nothing else fits, just set the single value, ignore undefined
92
- // https://github.com/pmndrs/react-three-fiber/issues/274
48
+ // if nothing else fits, just set the single value, ignore undefined
93
49
  else if (value !== undefined) {
94
50
  const isColor = targetProp instanceof THREE.Color;
95
- // Allow setting array scalars
51
+ // allow setting array scalars
96
52
  if (!isColor && targetProp['setScalar'])
97
53
  targetProp['setScalar'](value);
98
- // Layers have no copy function, we must therefore copy the mask property
99
- else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers)
54
+ // layers have no copy function, copy the mask
55
+ else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers) {
100
56
  targetProp.mask = value.mask;
101
- // Otherwise just set ...
102
- else
57
+ }
58
+ // otherwise just set ...
59
+ else {
103
60
  targetProp['set'](value);
104
- // For versions of three which don't support THREE.ColorManagement,
105
- // Auto-convert sRGB colors
106
- // https://github.com/pmndrs/react-three-fiber/issues/344
107
- if (!is.supportColorManagement() && !rootState.linear && isColor)
61
+ }
62
+ // auto-convert srgb
63
+ if (!THREE.ColorManagement && !rootState?.linear && isColor) {
108
64
  targetProp.convertSRGBToLinear();
65
+ }
109
66
  }
110
- // Else, just overwrite the value
111
67
  }
68
+ // else just overwrite the value
112
69
  else {
113
70
  currentInstance[key] = value;
114
- // Auto-convert sRGB textures, for now ...
115
- // https://github.com/pmndrs/react-three-fiber/issues/344
71
+ // auto-convert srgb textures
116
72
  if (!rootState?.linear && currentInstance[key] instanceof THREE.Texture) {
117
73
  currentInstance[key]['encoding'] = THREE.sRGBEncoding;
118
74
  }
119
75
  }
120
- checkNeedsUpdate(targetProp);
76
+ checkUpdate(targetProp);
121
77
  invalidateInstance(instance);
122
78
  }
123
- if (localState.parentRef &&
124
- rootState.internal &&
125
- instance['raycast'] &&
126
- instanceHandlers !== localState.eventCount) {
127
- // Pre-emptively remove the instance from the interaction manager
79
+ const instanceHandlers = localState.eventCount;
80
+ if (localState.parent && rootState.internal && instance['raycast'] && instanceHandlers !== localState.eventCount) {
81
+ // pre-emptively remove the interaction from manager
128
82
  rootState.removeInteraction(instance['uuid']);
129
- // Add the instance to the interaction manager only when it has handlers
83
+ // add the instance to the interaction manager only when it has handlers
130
84
  if (localState.eventCount)
131
85
  rootState.addInteraction(instance);
132
86
  }
87
+ if (localState.parent && localState.afterUpdate && localState.afterUpdate.observed && changes.length) {
88
+ localState.afterUpdate.emit(instance);
89
+ }
133
90
  return instance;
134
91
  }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRocmVlL3NyYy9saWIvdXRpbHMvYXBwbHktcHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUIsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDO0FBRTVCLE1BQU0sVUFBVSxTQUFTLENBQ3JCLFFBQW1CLEVBQ25CLEtBQW1CLEVBQ25CLGdCQUE4QixFQUFFLEVBQ2hDLE1BQU0sR0FBRyxLQUFLO0lBRWQsTUFBTSxVQUFVLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUssRUFBNEIsQ0FBQztJQUNwRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLE1BQU0sT0FBTyxHQUFvQyxFQUFFLENBQUM7SUFFcEQscUVBQXFFO0lBQ3JFLElBQUksTUFBTSxFQUFFO1FBQ1IsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRCxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRTtZQUNwQyxhQUFhO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFO2dCQUNwQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO2FB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Q2pCLFFBQXlCLENBQUMsU0FBUyxDQUFDO1FBQ3JDLGdCQUFnQixLQUFLLFVBQVUsQ0FBQyxVQUFVLEVBQzVDO1FBQ0UsaUVBQWlFO1FBQ2pFLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBRSxRQUF5QixDQUFDLE1BQU0sQ0FBVyxDQUFDLENBQUM7UUFDMUUsd0VBQXdFO1FBQ3hFLElBQUksVUFBVSxDQUFDLFVBQVU7WUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLFFBQXFDLENBQUMsQ0FBQztLQUM5RjtJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEFueUNvbnN0cnVjdG9yLCBOZ3RBbnlGdW5jdGlvbiwgTmd0QW55UmVjb3JkLCBOZ3RJbnN0YW5jZUxvY2FsU3RhdGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBjaGVja05lZWRzVXBkYXRlIH0gZnJvbSAnLi9jaGVjay11cGRhdGUnO1xuaW1wb3J0IHsgZ2V0SW5zdGFuY2VMb2NhbFN0YXRlIH0gZnJvbSAnLi9nZXQtaW5zdGFuY2UtbG9jYWwtc3RhdGUnO1xuaW1wb3J0IHsgaW52YWxpZGF0ZUluc3RhbmNlIH0gZnJvbSAnLi9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vaXMnO1xuXG5jb25zdCBERUZBVUxUID0gJ19fZGVmYXVsdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmUHJvcHM8VEluc3RhbmNlIGV4dGVuZHMgb2JqZWN0PihcbiAgICBpbnN0YW5jZTogVEluc3RhbmNlLFxuICAgIHByb3BzOiBOZ3RBbnlSZWNvcmQsXG4gICAgcHJldmlvdXNQcm9wczogTmd0QW55UmVjb3JkID0ge30sXG4gICAgcmVtb3ZlID0gZmFsc2Vcbikge1xuICAgIGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRJbnN0YW5jZUxvY2FsU3RhdGUoaW5zdGFuY2UpIHx8ICh7fSBhcyBOZ3RJbnN0YW5jZUxvY2FsU3RhdGUpO1xuICAgIGNvbnN0IHByb3BzRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHByb3BzKTtcbiAgICBjb25zdCBjaGFuZ2VzOiBba2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duXVtdID0gW107XG5cbiAgICAvLyBDYXRjaCByZW1vdmVkIHByb3BzLCBwcmVwZW5kIHRoZW0sIHNvIHRoZXkgY2FuIGJlIHJlc2V0IG9yIHJlbW92ZWRcbiAgICBpZiAocmVtb3ZlKSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzS2V5cyA9IE9iamVjdC5rZXlzKHByZXZpb3VzUHJvcHMpO1xuICAgICAgICBmb3IgKGNvbnN0IHByZXZpb3VzS2V5IG9mIHByZXZpb3VzS2V5cykge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaWYgKCFPYmplY3QuaGFzT3duKHByb3BzLCBwcmV2aW91c0tleSkpIHtcbiAgICAgICAgICAgICAgICBwcm9wc0VudHJpZXMudW5zaGlmdChbcHJldmlvdXNLZXksIERFRkFVTFQgKyAncmVtb3ZlJ10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbcHJvcEtleSwgcHJvcFZhbHVlXSBvZiBwcm9wc0VudHJpZXMpIHtcbiAgICAgICAgaWYgKGlzLmVxdShwcm9wVmFsdWUsIHByZXZpb3VzUHJvcHNbcHJvcEtleV0pKSBjb250aW51ZTtcbiAgICAgICAgY2hhbmdlcy5wdXNoKFtwcm9wS2V5LCBwcm9wVmFsdWVdKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZW1vaXplZDogTmd0QW55UmVjb3JkID0geyAuLi5wcm9wcyB9O1xuICAgIGlmIChsb2NhbFN0YXRlLm1lbW9pemVkICYmIGxvY2FsU3RhdGUubWVtb2l6ZWRbJ2FyZ3MnXSkge1xuICAgICAgICBtZW1vaXplZFsnYXJncyddID0gbG9jYWxTdGF0ZS5tZW1vaXplZFsnYXJncyddO1xuICAgIH1cblxuICAgIGlmIChsb2NhbFN0YXRlLm1lbW9pemVkICYmIGxvY2FsU3RhdGUubWVtb2l6ZWRbJ2F0dGFjaCddKSB7XG4gICAgICAgIG1lbW9pemVkWydhdHRhY2gnXSA9IGxvY2FsU3RhdGUubWVtb2l6ZWRbJ2F0dGFjaCddIHx8IGxvY2FsU3RhdGUuYXR0YWNoO1xuICAgIH1cblxuICAgIHJldHVybiB7IGNoYW5nZXMsIG1lbW9pemVkIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVByb3BzPFRJbnN0YW5jZSBleHRlbmRzIG9iamVjdD4oaW5zdGFuY2U6IFRJbnN0YW5jZSwgcHJvcHM6IE5ndEFueVJlY29yZCk6IFRJbnN0YW5jZSB7XG4gICAgLy8gcHJvcHMgaXMgZW1wdHlcbiAgICBpZiAoIU9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGgpIHJldHVybiBpbnN0YW5jZTtcblxuICAgIC8vIEZpbHRlciBlcXVhbHMsIGV2ZW50cyBhbmQgcmVzZXJ2ZWQgcHJvcHNcbiAgICBjb25zdCBsb2NhbFN0YXRlID0gZ2V0SW5zdGFuY2VMb2NhbFN0YXRlKGluc3RhbmNlKSB8fCAoe30gYXMgTmd0SW5zdGFuY2VMb2NhbFN0YXRlKTtcbiAgICBjb25zdCByb290U3RhdGUgPSBsb2NhbFN0YXRlLnN0YXRlRmFjdG9yeT8uKCk7XG4gICAgY29uc3QgeyBjaGFuZ2VzLCBtZW1vaXplZCB9ID0gZGlmZlByb3BzKGluc3RhbmNlLCBwcm9wcyk7XG4gICAgY29uc3QgaW5zdGFuY2VIYW5kbGVycyA9IGxvY2FsU3RhdGUuZXZlbnRDb3VudDtcblxuICAgIGlmIChnZXRJbnN0YW5jZUxvY2FsU3RhdGUoaW5zdGFuY2UpKSB7XG4gICAgICAgIGdldEluc3RhbmNlTG9jYWxTdGF0ZShpbnN0YW5jZSkhLm1lbW9pemVkID0gbWVtb2l6ZWQ7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGNoYW5nZXNbaV1bMF07XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IGluc3RhbmNlO1xuICAgICAgICBjb25zdCB0YXJnZXRQcm9wID0gKGN1cnJlbnRJbnN0YW5jZSBhcyBOZ3RBbnlSZWNvcmQpW2tleV0gYXMgTmd0QW55UmVjb3JkO1xuICAgICAgICBsZXQgdmFsdWUgPSBjaGFuZ2VzW2ldWzFdO1xuXG4gICAgICAgIGlmIChpcy5yZWYodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlID09PSBERUZBVUxUICsgJ3JlbW92ZScpIHtcbiAgICAgICAgICAgIGlmICh0YXJnZXRQcm9wICYmIHRhcmdldFByb3AuY29uc3RydWN0b3IpIHtcbiAgICAgICAgICAgICAgICAvLyB1c2UgdGhlIHByb3AgY29uc3RydWN0b3IgdG8gZmluZCB0aGUgZGVmYXVsdCBpdCBzaG91bGQgYmVcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyAodGFyZ2V0UHJvcC5jb25zdHJ1Y3RvciBhcyBOZ3RBbnlDb25zdHJ1Y3RvcikoLi4uKChtZW1vaXplZFsnYXJncyddIGFzIHVua25vd25bXSkgPz8gW10pKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEluc3RhbmNlLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZHVtbXlJbnN0YW5jZSA9IG5ldyAoY3VycmVudEluc3RhbmNlLmNvbnN0cnVjdG9yIGFzIE5ndEFueUNvbnN0cnVjdG9yKShcbiAgICAgICAgICAgICAgICAgICAgLi4uKChnZXRJbnN0YW5jZUxvY2FsU3RhdGUoY3VycmVudEluc3RhbmNlKT8ubWVtb2l6ZWQ/LlsnYXJncyddIGFzIHVua25vd25bXSkgfHwgW10pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGR1bW15SW5zdGFuY2VbdGFyZ2V0UHJvcCBhcyB1bmtub3duIGFzIHN0cmluZ107XG4gICAgICAgICAgICAgICAgLy8gZGVzdHJveSB0aGUgaW5zdGFuY2VcbiAgICAgICAgICAgICAgICBpZiAoZHVtbXlJbnN0YW5jZS5kaXNwb3NlKSBkdW1teUluc3RhbmNlLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3BlY2lhbCB0cmVhdG1lbnQgZm9yIG9iamVjdHMgd2l0aCBzdXBwb3J0IGZvciBzZXQvY29weSwgYW5kIGxheWVyc1xuICAgICAgICBpZiAodGFyZ2V0UHJvcCAmJiB0YXJnZXRQcm9wWydzZXQnXSAmJiAodGFyZ2V0UHJvcFsnY29weSddIHx8IHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5MYXllcnMpKSB7XG4gICAgICAgICAgICBjb25zdCBpc0NvbG9yID0gdGFyZ2V0UHJvcCBpbnN0YW5jZW9mIFRIUkVFLkNvbG9yO1xuICAgICAgICAgICAgLy8gSWYgdmFsdWUgaXMgYW4gYXJyYXlcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRQcm9wWydmcm9tQXJyYXknXSkgKHRhcmdldFByb3BbJ2Zyb21BcnJheSddIGFzIE5ndEFueUZ1bmN0aW9uKSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgZWxzZSAodGFyZ2V0UHJvcFsnc2V0J10gYXMgTmd0QW55RnVuY3Rpb24pKC4uLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRlc3QgYWdhaW4gdGFyZ2V0LmNvcHkoY2xhc3MpIG5leHQgLi4uXG4gICAgICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0YXJnZXRQcm9wWydjb3B5J10gJiZcbiAgICAgICAgICAgICAgICB2YWx1ZSAmJlxuICAgICAgICAgICAgICAgIHZhbHVlLmNvbnN0cnVjdG9yICYmXG4gICAgICAgICAgICAgICAgdGFyZ2V0UHJvcC5jb25zdHJ1Y3Rvci5uYW1lID09PSB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAodGFyZ2V0UHJvcFsnY29weSddIGFzIE5ndEFueUZ1bmN0aW9uKSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFpcy5zdXBwb3J0Q29sb3JNYW5hZ2VtZW50KCkgJiYgIXJvb3RTdGF0ZS5saW5lYXIgJiYgaXNDb2xvcikge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wWydjb252ZXJ0U1JHQlRvTGluZWFyJ10oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiBub3RoaW5nIGVsc2UgZml0cywganVzdCBzZXQgdGhlIHNpbmdsZSB2YWx1ZSwgaWdub3JlIHVuZGVmaW5lZFxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BtbmRycy9yZWFjdC10aHJlZS1maWJlci9pc3N1ZXMvMjc0XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNDb2xvciA9IHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5Db2xvcjtcbiAgICAgICAgICAgICAgICAvLyBBbGxvdyBzZXR0aW5nIGFycmF5IHNjYWxhcnNcbiAgICAgICAgICAgICAgICBpZiAoIWlzQ29sb3IgJiYgdGFyZ2V0UHJvcFsnc2V0U2NhbGFyJ10pICh0YXJnZXRQcm9wWydzZXRTY2FsYXInXSBhcyBOZ3RBbnlGdW5jdGlvbikodmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIExheWVycyBoYXZlIG5vIGNvcHkgZnVuY3Rpb24sIHdlIG11c3QgdGhlcmVmb3JlIGNvcHkgdGhlIG1hc2sgcHJvcGVydHlcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0YXJnZXRQcm9wIGluc3RhbmNlb2YgVEhSRUUuTGF5ZXJzICYmIHZhbHVlIGluc3RhbmNlb2YgVEhSRUUuTGF5ZXJzKVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wLm1hc2sgPSB2YWx1ZS5tYXNrO1xuICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IHNldCAuLi5cbiAgICAgICAgICAgICAgICBlbHNlICh0YXJnZXRQcm9wWydzZXQnXSBhcyBOZ3RBbnlGdW5jdGlvbikodmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIEZvciB2ZXJzaW9ucyBvZiB0aHJlZSB3aGljaCBkb24ndCBzdXBwb3J0IFRIUkVFLkNvbG9yTWFuYWdlbWVudCxcbiAgICAgICAgICAgICAgICAvLyBBdXRvLWNvbnZlcnQgc1JHQiBjb2xvcnNcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcG1uZHJzL3JlYWN0LXRocmVlLWZpYmVyL2lzc3Vlcy8zNDRcbiAgICAgICAgICAgICAgICBpZiAoIWlzLnN1cHBvcnRDb2xvck1hbmFnZW1lbnQoKSAmJiAhcm9vdFN0YXRlLmxpbmVhciAmJiBpc0NvbG9yKSB0YXJnZXRQcm9wLmNvbnZlcnRTUkdCVG9MaW5lYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEVsc2UsIGp1c3Qgb3ZlcndyaXRlIHRoZSB2YWx1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgKGN1cnJlbnRJbnN0YW5jZSBhcyBOZ3RBbnlSZWNvcmQpW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIC8vIEF1dG8tY29udmVydCBzUkdCIHRleHR1cmVzLCBmb3Igbm93IC4uLlxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BtbmRycy9yZWFjdC10aHJlZS1maWJlci9pc3N1ZXMvMzQ0XG4gICAgICAgICAgICBpZiAoIXJvb3RTdGF0ZT8ubGluZWFyICYmIChjdXJyZW50SW5zdGFuY2UgYXMgTmd0QW55UmVjb3JkKVtrZXldIGluc3RhbmNlb2YgVEhSRUUuVGV4dHVyZSkge1xuICAgICAgICAgICAgICAgICgoY3VycmVudEluc3RhbmNlIGFzIE5ndEFueVJlY29yZClba2V5XSBhcyBOZ3RBbnlSZWNvcmQpWydlbmNvZGluZyddID0gVEhSRUUuc1JHQkVuY29kaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2hlY2tOZWVkc1VwZGF0ZSh0YXJnZXRQcm9wKTtcbiAgICAgICAgaW52YWxpZGF0ZUluc3RhbmNlKGluc3RhbmNlKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAgIGxvY2FsU3RhdGUucGFyZW50UmVmICYmXG4gICAgICAgIHJvb3RTdGF0ZS5pbnRlcm5hbCAmJlxuICAgICAgICAoaW5zdGFuY2UgYXMgTmd0QW55UmVjb3JkKVsncmF5Y2FzdCddICYmXG4gICAgICAgIGluc3RhbmNlSGFuZGxlcnMgIT09IGxvY2FsU3RhdGUuZXZlbnRDb3VudFxuICAgICkge1xuICAgICAgICAvLyBQcmUtZW1wdGl2ZWx5IHJlbW92ZSB0aGUgaW5zdGFuY2UgZnJvbSB0aGUgaW50ZXJhY3Rpb24gbWFuYWdlclxuICAgICAgICByb290U3RhdGUucmVtb3ZlSW50ZXJhY3Rpb24oKGluc3RhbmNlIGFzIE5ndEFueVJlY29yZClbJ3V1aWQnXSBhcyBzdHJpbmcpO1xuICAgICAgICAvLyBBZGQgdGhlIGluc3RhbmNlIHRvIHRoZSBpbnRlcmFjdGlvbiBtYW5hZ2VyIG9ubHkgd2hlbiBpdCBoYXMgaGFuZGxlcnNcbiAgICAgICAgaWYgKGxvY2FsU3RhdGUuZXZlbnRDb3VudCkgcm9vdFN0YXRlLmFkZEludGVyYWN0aW9uKGluc3RhbmNlIGFzIHVua25vd24gYXMgVEhSRUUuT2JqZWN0M0QpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbn1cbiJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi91dGlscy9hcHBseS1wcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2QyxTQUFTLFNBQVMsQ0FBQyxRQUFzQixFQUFFLEtBQW1CO0lBQzFELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsTUFBTSxPQUFPLEdBQW9DLEVBQUUsQ0FBQztJQUVwRCxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksWUFBWSxFQUFFO1FBQzdDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQUUsU0FBUztRQUNuRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDdEM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxRQUF5QixFQUFFLEtBQW1CO0lBQ3JFLG9CQUFvQjtJQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFFaEQsNkNBQTZDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENB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LEtBQUssQ0FBQyxZQUFZLENBQUM7YUFDekQ7U0FDSjtRQUVELFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNoQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQztJQUUvQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksZ0JBQWdCLEtBQUssVUFBVSxDQUFDLFVBQVUsRUFBRTtRQUM5RyxvREFBb0Q7UUFDcEQsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzlDLHdFQUF3RTtRQUN4RSxJQUFJLFVBQVUsQ0FBQyxVQUFVO1lBQUUsU0FBUyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNqRTtJQUVELElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsV0FBVyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDbEcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDekM7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RBbnlSZWNvcmQsIE5ndEluc3RhbmNlTm9kZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGdldExvY2FsU3RhdGUsIGludmFsaWRhdGVJbnN0YW5jZSB9IGZyb20gJy4vaW5zdGFuY2UnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL2lzJztcbmltcG9ydCB7IGNoZWNrVXBkYXRlIH0gZnJvbSAnLi91cGRhdGUnO1xuXG5mdW5jdGlvbiBkaWZmUHJvcHMoaW5zdGFuY2U6IE5ndEFueVJlY29yZCwgcHJvcHM6IE5ndEFueVJlY29yZCkge1xuICAgIGNvbnN0IHByb3BzRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHByb3BzKTtcbiAgICBjb25zdCBjaGFuZ2VzOiBba2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duXVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IFtwcm9wS2V5LCBwcm9wVmFsdWVdIG9mIHByb3BzRW50cmllcykge1xuICAgICAgICBpZiAoaXMuZXF1KHByb3BWYWx1ZSwgaW5zdGFuY2VbcHJvcEtleV0pKSBjb250aW51ZTtcbiAgICAgICAgY2hhbmdlcy5wdXNoKFtwcm9wS2V5LCBwcm9wVmFsdWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hhbmdlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UHJvcHMoaW5zdGFuY2U6IE5ndEluc3RhbmNlTm9kZSwgcHJvcHM6IE5ndEFueVJlY29yZCk6IE5ndEluc3RhbmNlTm9kZSB7XG4gICAgLy8gaWYgcHJvcHMgaXMgZW1wdHlcbiAgICBpZiAoIU9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGgpIHJldHVybiBpbnN0YW5jZTtcblxuICAgIC8vIGZpbHRlciBlcXVhbHMsIGV2ZW50cyAsIGFuZCByZXNlcnZlZCBwcm9wc1xuICAgIGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcbiAgICBjb25zdCByb290U3RhdGUgPSBsb2NhbFN0YXRlLnN0b3JlPy5nZXQoKTtcbiAgICBjb25zdCBjaGFuZ2VzID0gZGlmZlByb3BzKGluc3RhbmNlLCBwcm9wcyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0gY2hhbmdlc1tpXVswXTtcbiAgICAgICAgY29uc3QgY3VycmVudEluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgICAgIGNvbnN0IHRhcmdldFByb3AgPSBjdXJyZW50SW5zdGFuY2Vba2V5XSBhcyBOZ3RBbnlSZWNvcmQ7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlc1tpXVsxXTtcblxuICAgICAgICAvLyBzcGVjaWFsIHRyZWF0bWVuIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3Igc2V0L2NvcHksIGFuZCBsYXllcnNcbiAgICAgICAgaWYgKHRhcmdldFByb3AgJiYgdGFyZ2V0UHJvcFsnc2V0J10gJiYgKHRhcmdldFByb3BbJ2NvcHknXSB8fCB0YXJnZXRQcm9wIGluc3RhbmNlb2YgVEhSRUUuTGF5ZXJzKSkge1xuICAgICAgICAgICAgY29uc3QgaXNDb2xvciA9IHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5Db2xvcjtcbiAgICAgICAgICAgIC8vIGlmIHZhbHVlIGlzIGFuIGFycmF5XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0UHJvcFsnZnJvbUFycmF5J10pIHRhcmdldFByb3BbJ2Zyb21BcnJheSddKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBlbHNlIHRhcmdldFByb3BbJ3NldCddKC4uLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRlc3QgYWdhaW4gdGFyZ2V0LmNvcHlcbiAgICAgICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHRhcmdldFByb3BbJ2NvcHknXSAmJlxuICAgICAgICAgICAgICAgIHZhbHVlICYmXG4gICAgICAgICAgICAgICAgdmFsdWUuY29uc3RydWN0b3IgJiZcbiAgICAgICAgICAgICAgICB0YXJnZXRQcm9wLmNvbnN0cnVjdG9yLm5hbWUgPT09IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRhcmdldFByb3BbJ2NvcHknXSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFUSFJFRS5Db2xvck1hbmFnZW1lbnQgJiYgIXJvb3RTdGF0ZS5saW5lYXIgJiYgaXNDb2xvcikge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wWydjb252ZXJ0U1JHQlRvTGluZWFyJ10oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpZiBub3RoaW5nIGVsc2UgZml0cywganVzdCBzZXQgdGhlIHNpbmdsZSB2YWx1ZSwgaWdub3JlIHVuZGVmaW5lZFxuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29sb3IgPSB0YXJnZXRQcm9wIGluc3RhbmNlb2YgVEhSRUUuQ29sb3I7XG4gICAgICAgICAgICAgICAgLy8gYWxsb3cgc2V0dGluZyBhcnJheSBzY2FsYXJzXG4gICAgICAgICAgICAgICAgaWYgKCFpc0NvbG9yICYmIHRhcmdldFByb3BbJ3NldFNjYWxhciddKSB0YXJnZXRQcm9wWydzZXRTY2FsYXInXSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgLy8gbGF5ZXJzIGhhdmUgbm8gY29weSBmdW5jdGlvbiwgY29weSB0aGUgbWFza1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5MYXllcnMgJiYgdmFsdWUgaW5zdGFuY2VvZiBUSFJFRS5MYXllcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UHJvcC5tYXNrID0gdmFsdWUubWFzaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGp1c3Qgc2V0IC4uLlxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wWydzZXQnXSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gYXV0by1jb252ZXJ0IHNyZ2JcbiAgICAgICAgICAgICAgICBpZiAoIVRIUkVFLkNvbG9yTWFuYWdlbWVudCAmJiAhcm9vdFN0YXRlPy5saW5lYXIgJiYgaXNDb2xvcikge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wLmNvbnZlcnRTUkdCVG9MaW5lYXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZWxzZSBqdXN0IG92ZXJ3cml0ZSB0aGUgdmFsdWVcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50SW5zdGFuY2Vba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgLy8gYXV0by1jb252ZXJ0IHNyZ2IgdGV4dHVyZXNcbiAgICAgICAgICAgIGlmICghcm9vdFN0YXRlPy5saW5lYXIgJiYgY3VycmVudEluc3RhbmNlW2tleV0gaW5zdGFuY2VvZiBUSFJFRS5UZXh0dXJlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEluc3RhbmNlW2tleV1bJ2VuY29kaW5nJ10gPSBUSFJFRS5zUkdCRW5jb2Rpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjaGVja1VwZGF0ZSh0YXJnZXRQcm9wKTtcbiAgICAgICAgaW52YWxpZGF0ZUluc3RhbmNlKGluc3RhbmNlKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZUhhbmRsZXJzID0gbG9jYWxTdGF0ZS5ldmVudENvdW50O1xuXG4gICAgaWYgKGxvY2FsU3RhdGUucGFyZW50ICYmIHJvb3RTdGF0ZS5pbnRlcm5hbCAmJiBpbnN0YW5jZVsncmF5Y2FzdCddICYmIGluc3RhbmNlSGFuZGxlcnMgIT09IGxvY2FsU3RhdGUuZXZlbnRDb3VudCkge1xuICAgICAgICAvLyBwcmUtZW1wdGl2ZWx5IHJlbW92ZSB0aGUgaW50ZXJhY3Rpb24gZnJvbSBtYW5hZ2VyXG4gICAgICAgIHJvb3RTdGF0ZS5yZW1vdmVJbnRlcmFjdGlvbihpbnN0YW5jZVsndXVpZCddKTtcbiAgICAgICAgLy8gYWRkIHRoZSBpbnN0YW5jZSB0byB0aGUgaW50ZXJhY3Rpb24gbWFuYWdlciBvbmx5IHdoZW4gaXQgaGFzIGhhbmRsZXJzXG4gICAgICAgIGlmIChsb2NhbFN0YXRlLmV2ZW50Q291bnQpIHJvb3RTdGF0ZS5hZGRJbnRlcmFjdGlvbihpbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsU3RhdGUucGFyZW50ICYmIGxvY2FsU3RhdGUuYWZ0ZXJVcGRhdGUgJiYgbG9jYWxTdGF0ZS5hZnRlclVwZGF0ZS5vYnNlcnZlZCAmJiBjaGFuZ2VzLmxlbmd0aCkge1xuICAgICAgICBsb2NhbFN0YXRlLmFmdGVyVXBkYXRlLmVtaXQoaW5zdGFuY2UpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbn1cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { applyProps } from './apply-props';
2
+ import { getLocalState } from './instance';
3
+ export function attach(object, value, paths = []) {
4
+ const [base, ...remaining] = paths;
5
+ if (!base)
6
+ return;
7
+ if (remaining.length === 0) {
8
+ applyProps(object, { [base]: value });
9
+ }
10
+ else {
11
+ assignEmpty(object, base);
12
+ attach(object[base], value, remaining);
13
+ }
14
+ }
15
+ export function detach(parent, child, attachProp) {
16
+ const childLocalState = getLocalState(child);
17
+ if (Array.isArray(attachProp)) {
18
+ attach(parent, childLocalState.previousAttach, attachProp);
19
+ }
20
+ else {
21
+ childLocalState.previousAttach();
22
+ }
23
+ }
24
+ function assignEmpty(obj, base) {
25
+ if ((!Object.hasOwn(obj, base) && Reflect && !!Reflect.has && !Reflect.has(obj, base)) || obj[base] === undefined) {
26
+ obj[base] = {};
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvdXRpbHMvYXR0YWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxNQUFNLFVBQVUsTUFBTSxDQUFDLE1BQW9CLEVBQUUsS0FBYyxFQUFFLFFBQWtCLEVBQUU7SUFDN0UsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNuQyxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU87SUFFbEIsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN4QixVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ3pDO1NBQU07UUFDSCxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQzFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsTUFBb0IsRUFBRSxLQUFtQixFQUFFLFVBQXdDO0lBQ3RHLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDM0IsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQzlEO1NBQU07UUFDRixlQUFlLENBQUMsY0FBMkIsRUFBRSxDQUFDO0tBQ2xEO0FBQ0wsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEdBQWlCLEVBQUUsSUFBWTtJQUNoRCxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUU7UUFDL0csR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUNsQjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCwgTmd0QXR0YWNoRnVuY3Rpb24gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBhcHBseVByb3BzIH0gZnJvbSAnLi9hcHBseS1wcm9wcyc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlIH0gZnJvbSAnLi9pbnN0YW5jZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2gob2JqZWN0OiBOZ3RBbnlSZWNvcmQsIHZhbHVlOiB1bmtub3duLCBwYXRoczogc3RyaW5nW10gPSBbXSk6IHZvaWQge1xuICAgIGNvbnN0IFtiYXNlLCAuLi5yZW1haW5pbmddID0gcGF0aHM7XG4gICAgaWYgKCFiYXNlKSByZXR1cm47XG5cbiAgICBpZiAocmVtYWluaW5nLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBhcHBseVByb3BzKG9iamVjdCwgeyBbYmFzZV06IHZhbHVlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2lnbkVtcHR5KG9iamVjdCwgYmFzZSk7XG4gICAgICAgIGF0dGFjaChvYmplY3RbYmFzZV0sIHZhbHVlLCByZW1haW5pbmcpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRldGFjaChwYXJlbnQ6IE5ndEFueVJlY29yZCwgY2hpbGQ6IE5ndEFueVJlY29yZCwgYXR0YWNoUHJvcDogc3RyaW5nW10gfCBOZ3RBdHRhY2hGdW5jdGlvbikge1xuICAgIGNvbnN0IGNoaWxkTG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoY2hpbGQpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGF0dGFjaFByb3ApKSB7XG4gICAgICAgIGF0dGFjaChwYXJlbnQsIGNoaWxkTG9jYWxTdGF0ZS5wcmV2aW91c0F0dGFjaCwgYXR0YWNoUHJvcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgKGNoaWxkTG9jYWxTdGF0ZS5wcmV2aW91c0F0dGFjaCBhcyBGdW5jdGlvbikoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFzc2lnbkVtcHR5KG9iajogTmd0QW55UmVjb3JkLCBiYXNlOiBzdHJpbmcpIHtcbiAgICBpZiAoKCFPYmplY3QuaGFzT3duKG9iaiwgYmFzZSkgJiYgUmVmbGVjdCAmJiAhIVJlZmxlY3QuaGFzICYmICFSZWZsZWN0LmhhcyhvYmosIGJhc2UpKSB8fCBvYmpbYmFzZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvYmpbYmFzZV0gPSB7fTtcbiAgICB9XG59XG4iXX0=
@@ -1,35 +1,50 @@
1
- import { NgtRef } from '../ref';
2
- import { applyProps } from './apply-props';
3
- import { checkUpdate } from './check-update';
4
- import { getInstanceLocalState } from './get-instance-local-state';
5
- import { is } from './is';
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import { checkUpdate } from './update';
3
+ export function getLocalState(obj) {
4
+ if (!obj)
5
+ return {};
6
+ return obj['__ngt__'] || {};
7
+ }
6
8
  export function invalidateInstance(instance) {
7
- const state = getInstanceLocalState(instance)?.stateFactory();
9
+ const state = getLocalState(instance).store?.get();
8
10
  if (state && state.internal.frames === 0)
9
11
  state.invalidate();
10
12
  checkUpdate(instance);
11
13
  }
12
- export function prepare(instance, parentStateFactory, rootStateFactory, parentInstance, previousInstance, isPrimitive = false) {
13
- const previousInstanceInternal = getInstanceLocalState(previousInstance?.value);
14
- const parent = parentInstance
15
- ? parentInstance
16
- : previousInstanceInternal
17
- ? previousInstanceInternal.parentRef
18
- : undefined;
19
- if (is.scene(instance)) {
20
- applyProps(instance, { dispose: null });
14
+ export function prepare(object, localState) {
15
+ const instance = object;
16
+ if (localState?.primitive || !instance.__ngt__) {
17
+ const { objects = new BehaviorSubject([]), nonObjects = new BehaviorSubject([]), ...rest } = localState || {};
18
+ instance.__ngt__ = {
19
+ previousAttach: null,
20
+ store: null,
21
+ parent: null,
22
+ memoized: {},
23
+ eventCount: 0,
24
+ handlers: {},
25
+ objects,
26
+ nonObjects,
27
+ add: (object, type) => {
28
+ instance.__ngt__[type].next([...instance.__ngt__[type].value, object]);
29
+ notifyAncestors(instance.__ngt__.parent);
30
+ },
31
+ remove: (object, type) => {
32
+ instance.__ngt__[type].next(instance.__ngt__[type].value.filter((o) => o !== object));
33
+ notifyAncestors(instance.__ngt__.parent);
34
+ },
35
+ ...rest,
36
+ };
21
37
  }
22
- return Object.assign(instance, {
23
- __ngt__: {
24
- stateFactory: parentStateFactory,
25
- rootFactory: rootStateFactory,
26
- isPrimitive: !isPrimitive ? previousInstanceInternal?.isPrimitive : isPrimitive,
27
- eventCount: previousInstanceInternal?.eventCount ?? 0,
28
- handlers: previousInstanceInternal?.handlers ?? {},
29
- instancesRefs: previousInstanceInternal?.instancesRefs ?? new NgtRef([]),
30
- objectsRefs: previousInstanceInternal?.objectsRefs ?? new NgtRef([]),
31
- parentRef: parent ? (parent === instance || parent.value === instance ? null : parent) : null,
32
- },
33
- });
38
+ return instance;
39
+ }
40
+ function notifyAncestors(instance) {
41
+ if (!instance)
42
+ return;
43
+ const localState = getLocalState(instance);
44
+ if (localState.objects)
45
+ localState.objects.next(localState.objects.value);
46
+ if (localState.nonObjects)
47
+ localState.nonObjects.next(localState.nonObjects.value);
48
+ notifyAncestors(localState.parent);
34
49
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRocmVlL3NyYy9saWIvdXRpbHMvaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFCLE1BQU0sVUFBVSxrQkFBa0IsQ0FBMkIsUUFBbUI7SUFDNUUsTUFBTSxLQUFLLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUM7SUFDOUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM3RCxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQ25CLFFBQW1CLEVBQ25CLGtCQUFtQyxFQUNuQyxnQkFBaUMsRUFDakMsY0FBdUIsRUFDdkIsZ0JBQXlCLEVBQ3pCLFdBQVcsR0FBRyxLQUFLO0lBRW5CLE1BQU0sd0JBQXdCLEdBQUcscUJBQXFCLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFaEYsTUFBTSxNQUFNLEdBQUcsY0FBYztRQUN6QixDQUFDLENBQUMsY0FBYztRQUNoQixDQUFDLENBQUMsd0JBQXdCO1lBQzFCLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTO1lBQ3BDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFaEIsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ3BCLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUMzQztJQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7UUFDM0IsT0FBTyxFQUFFO1lBQ0wsWUFBWSxFQUFFLGtCQUFrQjtZQUNoQyxXQUFXLEVBQUUsZ0JBQWdCO1lBQzdCLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXO1lBQy9FLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxVQUFVLElBQUksQ0FBQztZQUNyRCxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDbEQsYUFBYSxFQUFFLHdCQUF3QixFQUFFLGFBQWEsSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFjLENBQUM7WUFDcEYsV0FBVyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFjLENBQUM7WUFDaEYsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ2hHO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5ndFJlZiB9IGZyb20gJy4uL3JlZic7XG5pbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCwgTmd0SW5zdGFuY2VOb2RlLCBOZ3RTdGF0ZUZhY3RvcnkgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBhcHBseVByb3BzIH0gZnJvbSAnLi9hcHBseS1wcm9wcyc7XG5pbXBvcnQgeyBjaGVja1VwZGF0ZSB9IGZyb20gJy4vY2hlY2stdXBkYXRlJztcbmltcG9ydCB7IGdldEluc3RhbmNlTG9jYWxTdGF0ZSB9IGZyb20gJy4vZ2V0LWluc3RhbmNlLWxvY2FsLXN0YXRlJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi9pcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlSW5zdGFuY2U8VEluc3RhbmNlIGV4dGVuZHMgb2JqZWN0PihpbnN0YW5jZTogVEluc3RhbmNlKSB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXRJbnN0YW5jZUxvY2FsU3RhdGUoaW5zdGFuY2UpPy5zdGF0ZUZhY3RvcnkoKTtcbiAgICBpZiAoc3RhdGUgJiYgc3RhdGUuaW50ZXJuYWwuZnJhbWVzID09PSAwKSBzdGF0ZS5pbnZhbGlkYXRlKCk7XG4gICAgY2hlY2tVcGRhdGUoaW5zdGFuY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZTxUSW5zdGFuY2UgZXh0ZW5kcyBvYmplY3QgPSBOZ3RBbnlSZWNvcmQ+KFxuICAgIGluc3RhbmNlOiBUSW5zdGFuY2UsXG4gICAgcGFyZW50U3RhdGVGYWN0b3J5OiBOZ3RTdGF0ZUZhY3RvcnksXG4gICAgcm9vdFN0YXRlRmFjdG9yeTogTmd0U3RhdGVGYWN0b3J5LFxuICAgIHBhcmVudEluc3RhbmNlPzogTmd0UmVmLFxuICAgIHByZXZpb3VzSW5zdGFuY2U/OiBOZ3RSZWYsXG4gICAgaXNQcmltaXRpdmUgPSBmYWxzZVxuKTogTmd0SW5zdGFuY2VOb2RlPFRJbnN0YW5jZT4ge1xuICAgIGNvbnN0IHByZXZpb3VzSW5zdGFuY2VJbnRlcm5hbCA9IGdldEluc3RhbmNlTG9jYWxTdGF0ZShwcmV2aW91c0luc3RhbmNlPy52YWx1ZSk7XG5cbiAgICBjb25zdCBwYXJlbnQgPSBwYXJlbnRJbnN0YW5jZVxuICAgICAgICA/IHBhcmVudEluc3RhbmNlXG4gICAgICAgIDogcHJldmlvdXNJbnN0YW5jZUludGVybmFsXG4gICAgICAgID8gcHJldmlvdXNJbnN0YW5jZUludGVybmFsLnBhcmVudFJlZlxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChpcy5zY2VuZShpbnN0YW5jZSkpIHtcbiAgICAgICAgYXBwbHlQcm9wcyhpbnN0YW5jZSwgeyBkaXNwb3NlOiBudWxsIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGluc3RhbmNlLCB7XG4gICAgICAgIF9fbmd0X186IHtcbiAgICAgICAgICAgIHN0YXRlRmFjdG9yeTogcGFyZW50U3RhdGVGYWN0b3J5LFxuICAgICAgICAgICAgcm9vdEZhY3Rvcnk6IHJvb3RTdGF0ZUZhY3RvcnksXG4gICAgICAgICAgICBpc1ByaW1pdGl2ZTogIWlzUHJpbWl0aXZlID8gcHJldmlvdXNJbnN0YW5jZUludGVybmFsPy5pc1ByaW1pdGl2ZSA6IGlzUHJpbWl0aXZlLFxuICAgICAgICAgICAgZXZlbnRDb3VudDogcHJldmlvdXNJbnN0YW5jZUludGVybmFsPy5ldmVudENvdW50ID8/IDAsXG4gICAgICAgICAgICBoYW5kbGVyczogcHJldmlvdXNJbnN0YW5jZUludGVybmFsPy5oYW5kbGVycyA/PyB7fSxcbiAgICAgICAgICAgIGluc3RhbmNlc1JlZnM6IHByZXZpb3VzSW5zdGFuY2VJbnRlcm5hbD8uaW5zdGFuY2VzUmVmcyA/PyBuZXcgTmd0UmVmKFtdIGFzIE5ndFJlZltdKSxcbiAgICAgICAgICAgIG9iamVjdHNSZWZzOiBwcmV2aW91c0luc3RhbmNlSW50ZXJuYWw/Lm9iamVjdHNSZWZzID8/IG5ldyBOZ3RSZWYoW10gYXMgTmd0UmVmW10pLFxuICAgICAgICAgICAgcGFyZW50UmVmOiBwYXJlbnQgPyAocGFyZW50ID09PSBpbnN0YW5jZSB8fCBwYXJlbnQudmFsdWUgPT09IGluc3RhbmNlID8gbnVsbCA6IHBhcmVudCkgOiBudWxsLFxuICAgICAgICB9LFxuICAgIH0pO1xufVxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi91dGlscy9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkMsTUFBTSxVQUFVLGFBQWEsQ0FDekIsR0FBMEI7SUFFMUIsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLEVBQXNDLENBQUM7SUFDeEQsT0FBUSxHQUFvQixDQUFDLFNBQVMsQ0FBQyxJQUFLLEVBQTRCLENBQUM7QUFDN0UsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBMkIsUUFBbUI7SUFDNUUsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNuRCxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzdELFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FDbkIsTUFBaUIsRUFDakIsVUFBMkM7SUFFM0MsTUFBTSxRQUFRLEdBQUcsTUFBK0MsQ0FBQztJQUVqRSxJQUFJLFVBQVUsRUFBRSxTQUFTLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO1FBQzVDLE1BQU0sRUFDRixPQUFPLEdBQUcsSUFBSSxlQUFlLENBQW9CLEVBQUUsQ0FBQyxFQUNwRCxVQUFVLEdBQUcsSUFBSSxlQUFlLENBQW9CLEVBQUUsQ0FBQyxFQUN2RCxHQUFHLElBQUksRUFDVixHQUFHLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFFckIsUUFBUSxDQUFDLE9BQU8sR0FBRztZQUNmLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLEtBQUssRUFBRSxJQUFJO1lBQ1gsTUFBTSxFQUFFLElBQUk7WUFDWixRQUFRLEVBQUUsRUFBRTtZQUNaLFVBQVUsRUFBRSxDQUFDO1lBQ2IsUUFBUSxFQUFFLEVBQUU7WUFDWixPQUFPO1lBQ1AsVUFBVTtZQUNWLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDbEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ3JCLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3RGLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxHQUFHLElBQUk7U0FDZSxDQUFDO0tBQzlCO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFFBQWdDO0lBQ3JELElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTztJQUN0QixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsSUFBSSxVQUFVLENBQUMsT0FBTztRQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUUsSUFBSSxVQUFVLENBQUMsVUFBVTtRQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkYsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCwgTmd0SW5zdGFuY2VMb2NhbFN0YXRlLCBOZ3RJbnN0YW5jZU5vZGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBjaGVja1VwZGF0ZSB9IGZyb20gJy4vdXBkYXRlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsU3RhdGU8VEluc3RhbmNlIGV4dGVuZHMgb2JqZWN0ID0gTmd0QW55UmVjb3JkPihcbiAgICBvYmo6IFRJbnN0YW5jZSB8IHVuZGVmaW5lZFxuKTogTmd0SW5zdGFuY2VMb2NhbFN0YXRlIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIHt9IGFzIHVua25vd24gYXMgTmd0SW5zdGFuY2VMb2NhbFN0YXRlO1xuICAgIHJldHVybiAob2JqIGFzIE5ndEFueVJlY29yZClbJ19fbmd0X18nXSB8fCAoe30gYXMgTmd0SW5zdGFuY2VMb2NhbFN0YXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGVJbnN0YW5jZTxUSW5zdGFuY2UgZXh0ZW5kcyBvYmplY3Q+KGluc3RhbmNlOiBUSW5zdGFuY2UpIHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpLnN0b3JlPy5nZXQoKTtcbiAgICBpZiAoc3RhdGUgJiYgc3RhdGUuaW50ZXJuYWwuZnJhbWVzID09PSAwKSBzdGF0ZS5pbnZhbGlkYXRlKCk7XG4gICAgY2hlY2tVcGRhdGUoaW5zdGFuY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZTxUSW5zdGFuY2UgZXh0ZW5kcyBvYmplY3QgPSBOZ3RBbnlSZWNvcmQ+KFxuICAgIG9iamVjdDogVEluc3RhbmNlLFxuICAgIGxvY2FsU3RhdGU/OiBQYXJ0aWFsPE5ndEluc3RhbmNlTG9jYWxTdGF0ZT5cbik6IE5ndEluc3RhbmNlTm9kZTxUSW5zdGFuY2U+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG9iamVjdCBhcyB1bmtub3duIGFzIE5ndEluc3RhbmNlTm9kZTxUSW5zdGFuY2U+O1xuXG4gICAgaWYgKGxvY2FsU3RhdGU/LnByaW1pdGl2ZSB8fCAhaW5zdGFuY2UuX19uZ3RfXykge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBvYmplY3RzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOZ3RJbnN0YW5jZU5vZGVbXT4oW10pLFxuICAgICAgICAgICAgbm9uT2JqZWN0cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Tmd0SW5zdGFuY2VOb2RlW10+KFtdKSxcbiAgICAgICAgICAgIC4uLnJlc3RcbiAgICAgICAgfSA9IGxvY2FsU3RhdGUgfHwge307XG5cbiAgICAgICAgaW5zdGFuY2UuX19uZ3RfXyA9IHtcbiAgICAgICAgICAgIHByZXZpb3VzQXR0YWNoOiBudWxsLFxuICAgICAgICAgICAgc3RvcmU6IG51bGwsXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBtZW1vaXplZDoge30sXG4gICAgICAgICAgICBldmVudENvdW50OiAwLFxuICAgICAgICAgICAgaGFuZGxlcnM6IHt9LFxuICAgICAgICAgICAgb2JqZWN0cyxcbiAgICAgICAgICAgIG5vbk9iamVjdHMsXG4gICAgICAgICAgICBhZGQ6IChvYmplY3QsIHR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5fX25ndF9fW3R5cGVdLm5leHQoWy4uLmluc3RhbmNlLl9fbmd0X19bdHlwZV0udmFsdWUsIG9iamVjdF0pO1xuICAgICAgICAgICAgICAgIG5vdGlmeUFuY2VzdG9ycyhpbnN0YW5jZS5fX25ndF9fLnBhcmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVtb3ZlOiAob2JqZWN0LCB0eXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuX19uZ3RfX1t0eXBlXS5uZXh0KGluc3RhbmNlLl9fbmd0X19bdHlwZV0udmFsdWUuZmlsdGVyKChvKSA9PiBvICE9PSBvYmplY3QpKTtcbiAgICAgICAgICAgICAgICBub3RpZnlBbmNlc3RvcnMoaW5zdGFuY2UuX19uZ3RfXy5wYXJlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLnJlc3QsXG4gICAgICAgIH0gYXMgTmd0SW5zdGFuY2VMb2NhbFN0YXRlO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbn1cblxuZnVuY3Rpb24gbm90aWZ5QW5jZXN0b3JzKGluc3RhbmNlOiBOZ3RJbnN0YW5jZU5vZGUgfCBudWxsKSB7XG4gICAgaWYgKCFpbnN0YW5jZSkgcmV0dXJuO1xuICAgIGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcbiAgICBpZiAobG9jYWxTdGF0ZS5vYmplY3RzKSBsb2NhbFN0YXRlLm9iamVjdHMubmV4dChsb2NhbFN0YXRlLm9iamVjdHMudmFsdWUpO1xuICAgIGlmIChsb2NhbFN0YXRlLm5vbk9iamVjdHMpIGxvY2FsU3RhdGUubm9uT2JqZWN0cy5uZXh0KGxvY2FsU3RhdGUubm9uT2JqZWN0cy52YWx1ZSk7XG4gICAgbm90aWZ5QW5jZXN0b3JzKGxvY2FsU3RhdGUucGFyZW50KTtcbn1cbiJdfQ==
@@ -1,21 +1,17 @@
1
+ import { ElementRef } from '@angular/core';
1
2
  import * as THREE from 'three';
2
- import { NgtRef } from '../ref';
3
3
  export const is = {
4
4
  obj: (a) => a === Object(a) && !Array.isArray(a) && typeof a !== 'function',
5
5
  material: (a) => !!a && a.isMaterial,
6
6
  geometry: (a) => !!a && a.isBufferGeometry,
7
- mesh: (a) => !!a && a.isMesh,
8
- color: (a) => !!a && a.isColor,
9
- orthographic: (a) => !!a && a.isOrthographicCamera,
10
- perspective: (a) => !!a && a.isPerspectiveCamera,
7
+ orthographicCamera: (a) => !!a && a.isOrthographicCamera,
8
+ perspectiveCamera: (a) => !!a && a.isPerspectiveCamera,
11
9
  camera: (a) => !!a && a.isCamera,
12
- glRenderer: (a) => !!a && a instanceof THREE.WebGLRenderer,
10
+ renderer: (a) => !!a && a instanceof THREE.WebGLRenderer,
13
11
  scene: (a) => !!a && a.isScene,
14
- object3d: (a) => !!a && a.isObject3D,
12
+ object3D: (a) => !!a && a.isObject3D,
15
13
  instance: (a) => !!a && !!a['__ngt__'],
16
- ref: (a) => !!a && a instanceof NgtRef,
17
- supportColorManagement: () => 'ColorManagement' in THREE,
18
- canvas: (a) => a instanceof HTMLCanvasElement,
14
+ ref: (a) => a instanceof ElementRef,
19
15
  equ(a, b, { arrays = 'shallow', objects = 'reference', strict = true } = {}) {
20
16
  // Wrong type or one of the two undefined, doesn't match
21
17
  if (typeof a !== typeof b || !!a !== !!b)
@@ -51,4 +47,4 @@ export const is = {
51
47
  return true;
52
48
  },
53
49
  };
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRocmVlL3NyYy9saWIvdXRpbHMvaXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUdoQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUc7SUFDZCxHQUFHLEVBQUUsQ0FBQyxDQUFVLEVBQWUsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFVBQVU7SUFDakcsUUFBUSxFQUFFLENBQUMsQ0FBVSxFQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFvQixDQUFDLFVBQVU7SUFDdEYsUUFBUSxFQUFFLENBQUMsQ0FBVSxFQUE2QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUEwQixDQUFDLGdCQUFnQjtJQUN4RyxJQUFJLEVBQUUsQ0FBQyxDQUFVLEVBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQWdCLENBQUMsTUFBTTtJQUN0RSxLQUFLLEVBQUUsQ0FBQyxDQUFVLEVBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQWlCLENBQUMsT0FBTztJQUMxRSxZQUFZLEVBQUUsQ0FBQyxDQUFVLEVBQWlDLEVBQUUsQ0FDeEQsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUE4QixDQUFDLG9CQUFvQjtJQUMvRCxXQUFXLEVBQUUsQ0FBQyxDQUFVLEVBQWdDLEVBQUUsQ0FDdEQsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUE2QixDQUFDLG1CQUFtQjtJQUM3RCxNQUFNLEVBQUUsQ0FBQyxDQUFVLEVBQXFCLEVBQUUsQ0FB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O1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RSZWYgfSBmcm9tICcuLi9yZWYnO1xuaW1wb3J0IHR5cGUgeyBOZ3RBbnlSZWNvcmQsIE5ndEVxdUNvbmZpZywgTmd0SW5zdGFuY2VOb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgaXMgPSB7XG4gICAgb2JqOiAoYTogdW5rbm93bik6IGEgaXMgb2JqZWN0ID0+IGEgPT09IE9iamVjdChhKSAmJiAhQXJyYXkuaXNBcnJheShhKSAmJiB0eXBlb2YgYSAhPT0gJ2Z1bmN0aW9uJyxcbiAgICBtYXRlcmlhbDogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLk1hdGVyaWFsID0+ICEhYSAmJiAoYSBhcyBUSFJFRS5NYXRlcmlhbCkuaXNNYXRlcmlhbCxcbiAgICBnZW9tZXRyeTogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLkJ1ZmZlckdlb21ldHJ5ID0+ICEhYSAmJiAoYSBhcyBUSFJFRS5CdWZmZXJHZW9tZXRyeSkuaXNCdWZmZXJHZW9tZXRyeSxcbiAgICBtZXNoOiAoYTogdW5rbm93bik6IGEgaXMgVEhSRUUuTWVzaCA9PiAhIWEgJiYgKGEgYXMgVEhSRUUuTWVzaCkuaXNNZXNoLFxuICAgIGNvbG9yOiAoYTogdW5rbm93bik6IGEgaXMgVEhSRUUuQ29sb3IgPT4gISFhICYmIChhIGFzIFRIUkVFLkNvbG9yKS5pc0NvbG9yLFxuICAgIG9ydGhvZ3JhcGhpYzogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYSA9PlxuICAgICAgICAhIWEgJiYgKGEgYXMgVEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhKS5pc09ydGhvZ3JhcGhpY0NhbWVyYSxcbiAgICBwZXJzcGVjdGl2ZTogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhID0+XG4gICAgICAgICEhYSAmJiAoYSBhcyBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYSkuaXNQZXJzcGVjdGl2ZUNhbWVyYSxcbiAgICBjYW1lcmE6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5DYW1lcmEgPT4gISFhICYmIChhIGFzIFRIUkVFLkNhbWVyYSkuaXNDYW1lcmEsXG4gICAgZ2xSZW5kZXJlcjogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLldlYkdMUmVuZGVyZXIgPT4gISFhICYmIGEgaW5zdGFuY2VvZiBUSFJFRS5XZWJHTFJlbmRlcmVyLFxuICAgIHNjZW5lOiAoYTogdW5rbm93bik6IGEgaXMgVEhSRUUuU2NlbmUgPT4gISFhICYmIChhIGFzIFRIUkVFLlNjZW5lKS5pc1NjZW5lLFxuICAgIG9iamVjdDNkOiAoYTogdW5rbm93bik6IGEgaXMgVEhSRUUuT2JqZWN0M0QgPT4gISFhICYmIChhIGFzIFRIUkVFLk9iamVjdDNEKS5pc09iamVjdDNELFxuICAgIGluc3RhbmNlOiAoYTogdW5rbm93bik6IGEgaXMgTmd0SW5zdGFuY2VOb2RlID0+ICEhYSAmJiAhIShhIGFzIE5ndEFueVJlY29yZClbJ19fbmd0X18nXSxcbiAgICByZWY6IChhOiB1bmtub3duKTogYSBpcyBOZ3RSZWYgPT4gISFhICYmIGEgaW5zdGFuY2VvZiBOZ3RSZWYsXG4gICAgc3VwcG9ydENvbG9yTWFuYWdlbWVudDogKCk6IGJvb2xlYW4gPT4gJ0NvbG9yTWFuYWdlbWVudCcgaW4gVEhSRUUsXG4gICAgY2FudmFzOiAoYTogdW5rbm93bik6IGEgaXMgSFRNTENhbnZhc0VsZW1lbnQgPT4gYSBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50LFxuICAgIGVxdShhOiBhbnksIGI6IGFueSwgeyBhcnJheXMgPSAnc2hhbGxvdycsIG9iamVjdHMgPSAncmVmZXJlbmNlJywgc3RyaWN0ID0gdHJ1ZSB9OiBOZ3RFcXVDb25maWcgPSB7fSkge1xuICAgICAgICAvLyBXcm9uZyB0eXBlIG9yIG9uZSBvZiB0aGUgdHdvIHVuZGVmaW5lZCwgZG9lc24ndCBtYXRjaFxuICAgICAgICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiIHx8ICEhYSAhPT0gISFiKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIEF0b21pYywganVzdCBjb21wYXJlIGEgYWdhaW5zdCBiXG4gICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGEgPT09ICdudW1iZXInKSByZXR1cm4gYSA9PT0gYjtcbiAgICAgICAgY29uc3QgaXNPYmogPSBpcy5vYmooYSk7XG4gICAgICAgIGlmIChpc09iaiAmJiBvYmplY3RzID09PSAncmVmZXJlbmNlJykgcmV0dXJuIGEgPT09IGI7XG4gICAgICAgIGNvbnN0IGlzQXJyID0gQXJyYXkuaXNBcnJheShhKTtcbiAgICAgICAgaWYgKGlzQXJyICYmIGFycmF5cyA9PT0gJ3JlZmVyZW5jZScpIHJldHVybiBhID09PSBiO1xuICAgICAgICAvLyBBcnJheSBvciBPYmplY3QsIHNoYWxsb3cgY29tcGFyZSBmaXJzdCB0byBzZWUgaWYgaXQncyBhIG1hdGNoXG4gICAgICAgIGlmICgoaXNBcnIgfHwgaXNPYmopICYmIGEgPT09IGIpIHJldHVybiB0cnVlO1xuICAgICAgICAvLyBMYXN0IHJlc29ydCwgZ28gdGhyb3VnaCBrZXlzXG4gICAgICAgIGxldCBpO1xuICAgICAgICBmb3IgKGkgaW4gYSkgaWYgKCEoaSBpbiBiKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGkgaW4gc3RyaWN0ID8gYiA6IGEpIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChpID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIGlmIChpc0FyciAmJiBhLmxlbmd0aCA9PT0gMCAmJiBiLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBpZiAoaXNPYmogJiYgT2JqZWN0LmtleXMoYSkubGVuZ3RoID09PSAwICYmIE9iamVjdC5rZXlzKGIpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBpZiAoYSAhPT0gYikgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG59O1xuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi91dGlscy9pcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRy9CLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRztJQUNkLEdBQUcsRUFBRSxDQUFDLENBQVUsRUFBZSxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssVUFBVTtJQUNqRyxRQUFRLEVBQUUsQ0FBQyxDQUFVLEVBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQW9CLENBQUMsVUFBVTtJQUN0RixRQUFRLEVBQUUsQ0FBQyxDQUFVLEVBQTZCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQTBCLENBQUMsZ0JBQWdCO0lBQ3hHLGtCQUFrQixFQUFFLENBQUMsQ0FBVSxFQUFpQyxFQUFFLENBQzlELENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBOEIsQ0FBQyxvQkFBb0I7SUFDL0QsaUJBQWlCLEVBQUUsQ0FBQyxDQUFVLEVBQWdDLEVBQUUsQ0FDNUQsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUE2QixDQUFDLG1CQUFtQjtJQUM3RCxNQUFNLEVBQUUsQ0FBQyxDQUFVLEVBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQWtCLENBQUMsUUFBUTtJQUM5RSxRQUFRLEVBQUUsQ0FBQyxDQUFVLEVBQTRCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLENBQUMsYUFBYTtJQUMzRixLQUFLLEVBQUUsQ0FBQyxDQUFVLEVBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQWlCLENBQUMsT0FBTztJQUMxRSxRQUFRLEVBQUUsQ0FBQyxDQUFVLEVBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQW9CLENBQUMsVUFBVTtJQUN0RixRQUFRLEVBQUUsQ0FBQyxDQUFVLEVBQXdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBRSxDQUFrQixDQUFDLFNBQVMsQ0FBQztJQUN2RixHQUFHLEVBQUUsQ0FBQyxDQUFVLEVBQW1CLEVBQUUsQ0FBQyxDQUFDLFlBQVksVUFBVTtJQUM3RCxHQUFHLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQUUsT0FBTyxHQUFHLFdBQVcsRUFBRSxNQUFNLEdBQUcsSUFBSSxLQUFtQixFQUFFO1FBQy9GLHdEQUF3RDtRQUN4RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN2RCxtQ0FBbUM7UUFDbkMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUTtZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxXQUFXO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLElBQUksTUFBTSxLQUFLLFdBQVc7WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsZ0VBQWdFO1FBQ2hFLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM3QywrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLENBQUM7UUFDTixLQUFLLENBQUMsSUFBSSxDQUFDO1lBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztRQUN6QyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDZCxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDM0QsSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDckYsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztTQUM3QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RBbnlSZWNvcmQsIE5ndEVxdUNvbmZpZywgTmd0SW5zdGFuY2VOb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgaXMgPSB7XG4gICAgb2JqOiAoYTogdW5rbm93bik6IGEgaXMgb2JqZWN0ID0+IGEgPT09IE9iamVjdChhKSAmJiAhQXJyYXkuaXNBcnJheShhKSAmJiB0eXBlb2YgYSAhPT0gJ2Z1bmN0aW9uJyxcbiAgICBtYXRlcmlhbDogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLk1hdGVyaWFsID0+ICEhYSAmJiAoYSBhcyBUSFJFRS5NYXRlcmlhbCkuaXNNYXRlcmlhbCxcbiAgICBnZW9tZXRyeTogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLkJ1ZmZlckdlb21ldHJ5ID0+ICEhYSAmJiAoYSBhcyBUSFJFRS5CdWZmZXJHZW9tZXRyeSkuaXNCdWZmZXJHZW9tZXRyeSxcbiAgICBvcnRob2dyYXBoaWNDYW1lcmE6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmEgPT5cbiAgICAgICAgISFhICYmIChhIGFzIFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYSkuaXNPcnRob2dyYXBoaWNDYW1lcmEsXG4gICAgcGVyc3BlY3RpdmVDYW1lcmE6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYSA9PlxuICAgICAgICAhIWEgJiYgKGEgYXMgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEpLmlzUGVyc3BlY3RpdmVDYW1lcmEsXG4gICAgY2FtZXJhOiAoYTogdW5rbm93bik6IGEgaXMgVEhSRUUuQ2FtZXJhID0+ICEhYSAmJiAoYSBhcyBUSFJFRS5DYW1lcmEpLmlzQ2FtZXJhLFxuICAgIHJlbmRlcmVyOiAoYTogdW5rbm93bik6IGEgaXMgVEhSRUUuV2ViR0xSZW5kZXJlciA9PiAhIWEgJiYgYSBpbnN0YW5jZW9mIFRIUkVFLldlYkdMUmVuZGVyZXIsXG4gICAgc2NlbmU6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5TY2VuZSA9PiAhIWEgJiYgKGEgYXMgVEhSRUUuU2NlbmUpLmlzU2NlbmUsXG4gICAgb2JqZWN0M0Q6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5PYmplY3QzRCA9PiAhIWEgJiYgKGEgYXMgVEhSRUUuT2JqZWN0M0QpLmlzT2JqZWN0M0QsXG4gICAgaW5zdGFuY2U6IChhOiB1bmtub3duKTogYSBpcyBOZ3RJbnN0YW5jZU5vZGUgPT4gISFhICYmICEhKGEgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfXyddLFxuICAgIHJlZjogKGE6IHVua25vd24pOiBhIGlzIEVsZW1lbnRSZWYgPT4gYSBpbnN0YW5jZW9mIEVsZW1lbnRSZWYsXG4gICAgZXF1KGE6IGFueSwgYjogYW55LCB7IGFycmF5cyA9ICdzaGFsbG93Jywgb2JqZWN0cyA9ICdyZWZlcmVuY2UnLCBzdHJpY3QgPSB0cnVlIH06IE5ndEVxdUNvbmZpZyA9IHt9KSB7XG4gICAgICAgIC8vIFdyb25nIHR5cGUgb3Igb25lIG9mIHRoZSB0d28gdW5kZWZpbmVkLCBkb2Vzbid0IG1hdGNoXG4gICAgICAgIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIgfHwgISFhICE9PSAhIWIpIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gQXRvbWljLCBqdXN0IGNvbXBhcmUgYSBhZ2FpbnN0IGJcbiAgICAgICAgaWYgKHR5cGVvZiBhID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgYSA9PT0gJ251bWJlcicpIHJldHVybiBhID09PSBiO1xuICAgICAgICBjb25zdCBpc09iaiA9IGlzLm9iaihhKTtcbiAgICAgICAgaWYgKGlzT2JqICYmIG9iamVjdHMgPT09ICdyZWZlcmVuY2UnKSByZXR1cm4gYSA9PT0gYjtcbiAgICAgICAgY29uc3QgaXNBcnIgPSBBcnJheS5pc0FycmF5KGEpO1xuICAgICAgICBpZiAoaXNBcnIgJiYgYXJyYXlzID09PSAncmVmZXJlbmNlJykgcmV0dXJuIGEgPT09IGI7XG4gICAgICAgIC8vIEFycmF5IG9yIE9iamVjdCwgc2hhbGxvdyBjb21wYXJlIGZpcnN0IHRvIHNlZSBpZiBpdCdzIGEgbWF0Y2hcbiAgICAgICAgaWYgKChpc0FyciB8fCBpc09iaikgJiYgYSA9PT0gYikgcmV0dXJuIHRydWU7XG4gICAgICAgIC8vIExhc3QgcmVzb3J0LCBnbyB0aHJvdWdoIGtleXNcbiAgICAgICAgbGV0IGk7XG4gICAgICAgIGZvciAoaSBpbiBhKSBpZiAoIShpIGluIGIpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGZvciAoaSBpbiBzdHJpY3QgPyBiIDogYSkgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGkgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgaWYgKGlzQXJyICYmIGEubGVuZ3RoID09PSAwICYmIGIubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChpc09iaiAmJiBPYmplY3Qua2V5cyhhKS5sZW5ndGggPT09IDAgJiYgT2JqZWN0LmtleXMoYikubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChhICE9PSBiKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbn07XG4iXX0=
@@ -16,15 +16,35 @@ export function makeDpr(dpr, window) {
16
16
  const target = window?.devicePixelRatio || 1;
17
17
  return Array.isArray(dpr) ? Math.min(Math.max(dpr[0], target), dpr[1]) : dpr;
18
18
  }
19
- export function make(type, input) {
20
- if (!input)
21
- return new type();
22
- if (input instanceof type) {
23
- return input;
24
- }
25
- if (!Array.isArray(input)) {
26
- input = typeof input === 'number' ? [input, input, input, input] : [input];
19
+ export function makeDefaultCamera(isOrthographic, size) {
20
+ if (isOrthographic)
21
+ return new THREE.OrthographicCamera(0, 0, 0, 0, 0.1, 1000);
22
+ return new THREE.PerspectiveCamera(75, size.width / size.height, 0.1, 1000);
23
+ }
24
+ export function makeDefaultRenderer(glOptions, canvasElement) {
25
+ const customRenderer = (typeof glOptions === 'function' ? glOptions(canvasElement) : glOptions);
26
+ if (customRenderer?.render != null)
27
+ return customRenderer;
28
+ return new THREE.WebGLRenderer({
29
+ powerPreference: 'high-performance',
30
+ canvas: canvasElement,
31
+ antialias: true,
32
+ alpha: true,
33
+ ...(glOptions || {}),
34
+ });
35
+ }
36
+ export function makeObjectGraph(object) {
37
+ const data = { nodes: {}, materials: {} };
38
+ if (object) {
39
+ object.traverse((child) => {
40
+ if (child.name)
41
+ data.nodes[child.name] = child;
42
+ if ('material' in child && !data.materials[child.material.name]) {
43
+ data.materials[child.material.name] = child
44
+ .material;
45
+ }
46
+ });
27
47
  }
28
- return new type(...input);
48
+ return data;
29
49
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi91dGlscy9tYWtlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRy9CLE1BQU0sT0FBTyxHQUEwQyxFQUFFLENBQUM7QUFDMUQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUF1QjtJQUMxQyxJQUFJLEtBQUssRUFBRTtRQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztLQUMxRjtJQUVELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsMEJBQTBCO0lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN0QixPQUFPLEtBQUssQ0FBQztLQUNoQjtJQUNELE9BQU8sTUFBTSxFQUFFLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsR0FBVyxFQUFFLE1BQWU7SUFDaEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLGdCQUFnQixJQUFJLENBQUMsQ0FBQztJQUM3QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNqRixDQUFDO0FBRUQsTUFBTSxVQUFVLElBQUksQ0FDaEIsSUFBVyxFQUNYLEtBSWtDO0lBRWxDLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO0lBRTlCLElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtRQUN2QixPQUFPLEtBQTRCLENBQUM7S0FDdkM7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN2QixLQUFLLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzlFO0lBRUQsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFJLEtBQW1CLENBQUMsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RBbnlDb25zdHJ1Y3RvciwgTmd0RHByLCBOZ3RJbnRlcnNlY3Rpb24gfSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IGlkQ2FjaGU6IHsgW2lkOiBzdHJpbmddOiBib29sZWFuIHwgdW5kZWZpbmVkIH0gPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiBtYWtlSWQoZXZlbnQ/OiBOZ3RJbnRlcnNlY3Rpb24pOiBzdHJpbmcge1xuICAgIGlmIChldmVudCkge1xuICAgICAgICByZXR1cm4gKGV2ZW50LmV2ZW50T2JqZWN0IHx8IGV2ZW50Lm9iamVjdCkudXVpZCArICcvJyArIGV2ZW50LmluZGV4ICsgZXZlbnQuaW5zdGFuY2VJZDtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdJZCA9IFRIUkVFLk1hdGhVdGlscy5nZW5lcmF0ZVVVSUQoKTtcbiAgICAvLyBlbnN1cmUgbm90IGFscmVhZHkgdXNlZFxuICAgIGlmICghaWRDYWNoZVtuZXdJZF0pIHtcbiAgICAgICAgaWRDYWNoZVtuZXdJZF0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gbmV3SWQ7XG4gICAgfVxuICAgIHJldHVybiBtYWtlSWQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VEcHIoZHByOiBOZ3REcHIsIHdpbmRvdz86IFdpbmRvdykge1xuICAgIGNvbnN0IHRhcmdldCA9IHdpbmRvdz8uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRwcikgPyBNYXRoLm1pbihNYXRoLm1heChkcHJbMF0sIHRhcmdldCksIGRwclsxXSkgOiBkcHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlPFRUeXBlIGV4dGVuZHMgTmd0QW55Q29uc3RydWN0b3I+KFxuICAgIHR5cGU6IFRUeXBlLFxuICAgIGlucHV0PzpcbiAgICAgICAgfCBJbnN0YW5jZVR5cGU8VFR5cGU+XG4gICAgICAgIHwgUGFyYW1ldGVyczx0eXBlb2YgdHlwZS5wcm90b3R5cGVbJ3NldCddPlxuICAgICAgICB8IFBhcmFtZXRlcnM8dHlwZW9mIHR5cGUucHJvdG90eXBlWydzZXRTY2FsYXInXT5bMF1cbiAgICAgICAgfCBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8VFR5cGU+XG4pOiBJbnN0YW5jZVR5cGU8VFR5cGU+IHtcbiAgICBpZiAoIWlucHV0KSByZXR1cm4gbmV3IHR5cGUoKTtcblxuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0IGFzIEluc3RhbmNlVHlwZTxUVHlwZT47XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgICAgICBpbnB1dCA9IHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBbaW5wdXQsIGlucHV0LCBpbnB1dCwgaW5wdXRdIDogW2lucHV0XTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IHR5cGUoLi4uKGlucHV0IGFzIHVua25vd25bXSkpO1xufVxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS9zcmMvbGliL3V0aWxzL21ha2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFHL0IsTUFBTSxPQUFPLEdBQTBDLEVBQUUsQ0FBQztBQUMxRCxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQXVCO0lBQzFDLElBQUksS0FBSyxFQUFFO1FBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO0tBQzFGO0lBRUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QywwQkFBMEI7SUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBQ0QsT0FBTyxNQUFNLEVBQUUsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxHQUFXLEVBQUUsTUFBZTtJQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO0lBQzdDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ2pGLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsY0FBdUIsRUFBRSxJQUFhO0lBQ3BFLElBQUksY0FBYztRQUFFLE9BQU8sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRSxPQUFPLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsU0FBdUIsRUFBRSxhQUFnQztJQUN6RixNQUFNLGNBQWMsR0FBRyxDQUNuQixPQUFPLFNBQVMsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUNsRCxDQUFDO0lBRXpCLElBQUksY0FBYyxFQUFFLE1BQU0sSUFBSSxJQUFJO1FBQUUsT0FBTyxjQUFjLENBQUM7SUFFMUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDM0IsZUFBZSxFQUFFLGtCQUFrQjtRQUNuQyxNQUFNLEVBQUUsYUFBYTtRQUNyQixTQUFTLEVBQUUsSUFBSTtRQUNmLEtBQUssRUFBRSxJQUFJO1FBQ1gsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7S0FDdkIsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBc0I7SUFDbEQsTUFBTSxJQUFJLEdBQWlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFFeEQsSUFBSSxNQUFNLEVBQUU7UUFDUixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBcUIsRUFBRSxFQUFFO1lBQ3RDLElBQUksS0FBSyxDQUFDLElBQUk7Z0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQy9DLElBQUksVUFBVSxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUcsS0FBb0IsQ0FBQyxRQUEyQixDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNqRyxJQUFJLENBQUMsU0FBUyxDQUFHLEtBQW9CLENBQUMsUUFBMkIsQ0FBQyxJQUFJLENBQUMsR0FBSSxLQUFvQjtxQkFDMUYsUUFBMEIsQ0FBQzthQUNuQztRQUNMLENBQUMsQ0FBQyxDQUFDO0tBQ047SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBOZ3REcHIsIE5ndEdMT3B0aW9ucywgTmd0SW50ZXJzZWN0aW9uLCBOZ3RPYmplY3RNYXAsIE5ndFNpemUgfSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IGlkQ2FjaGU6IHsgW2lkOiBzdHJpbmddOiBib29sZWFuIHwgdW5kZWZpbmVkIH0gPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiBtYWtlSWQoZXZlbnQ/OiBOZ3RJbnRlcnNlY3Rpb24pOiBzdHJpbmcge1xuICAgIGlmIChldmVudCkge1xuICAgICAgICByZXR1cm4gKGV2ZW50LmV2ZW50T2JqZWN0IHx8IGV2ZW50Lm9iamVjdCkudXVpZCArICcvJyArIGV2ZW50LmluZGV4ICsgZXZlbnQuaW5zdGFuY2VJZDtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdJZCA9IFRIUkVFLk1hdGhVdGlscy5nZW5lcmF0ZVVVSUQoKTtcbiAgICAvLyBlbnN1cmUgbm90IGFscmVhZHkgdXNlZFxuICAgIGlmICghaWRDYWNoZVtuZXdJZF0pIHtcbiAgICAgICAgaWRDYWNoZVtuZXdJZF0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gbmV3SWQ7XG4gICAgfVxuICAgIHJldHVybiBtYWtlSWQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VEcHIoZHByOiBOZ3REcHIsIHdpbmRvdz86IFdpbmRvdykge1xuICAgIGNvbnN0IHRhcmdldCA9IHdpbmRvdz8uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRwcikgPyBNYXRoLm1pbihNYXRoLm1heChkcHJbMF0sIHRhcmdldCksIGRwclsxXSkgOiBkcHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlRGVmYXVsdENhbWVyYShpc09ydGhvZ3JhcGhpYzogYm9vbGVhbiwgc2l6ZTogTmd0U2l6ZSkge1xuICAgIGlmIChpc09ydGhvZ3JhcGhpYykgcmV0dXJuIG5ldyBUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmEoMCwgMCwgMCwgMCwgMC4xLCAxMDAwKTtcbiAgICByZXR1cm4gbmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDc1LCBzaXplLndpZHRoIC8gc2l6ZS5oZWlnaHQsIDAuMSwgMTAwMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlRGVmYXVsdFJlbmRlcmVyKGdsT3B0aW9uczogTmd0R0xPcHRpb25zLCBjYW52YXNFbGVtZW50OiBIVE1MQ2FudmFzRWxlbWVudCk6IFRIUkVFLldlYkdMUmVuZGVyZXIge1xuICAgIGNvbnN0IGN1c3RvbVJlbmRlcmVyID0gKFxuICAgICAgICB0eXBlb2YgZ2xPcHRpb25zID09PSAnZnVuY3Rpb24nID8gZ2xPcHRpb25zKGNhbnZhc0VsZW1lbnQpIDogZ2xPcHRpb25zXG4gICAgKSBhcyBUSFJFRS5XZWJHTFJlbmRlcmVyO1xuXG4gICAgaWYgKGN1c3RvbVJlbmRlcmVyPy5yZW5kZXIgIT0gbnVsbCkgcmV0dXJuIGN1c3RvbVJlbmRlcmVyO1xuXG4gICAgcmV0dXJuIG5ldyBUSFJFRS5XZWJHTFJlbmRlcmVyKHtcbiAgICAgICAgcG93ZXJQcmVmZXJlbmNlOiAnaGlnaC1wZXJmb3JtYW5jZScsXG4gICAgICAgIGNhbnZhczogY2FudmFzRWxlbWVudCxcbiAgICAgICAgYW50aWFsaWFzOiB0cnVlLFxuICAgICAgICBhbHBoYTogdHJ1ZSxcbiAgICAgICAgLi4uKGdsT3B0aW9ucyB8fCB7fSksXG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlT2JqZWN0R3JhcGgob2JqZWN0OiBUSFJFRS5PYmplY3QzRCk6IE5ndE9iamVjdE1hcCB7XG4gICAgY29uc3QgZGF0YTogTmd0T2JqZWN0TWFwID0geyBub2Rlczoge30sIG1hdGVyaWFsczoge30gfTtcblxuICAgIGlmIChvYmplY3QpIHtcbiAgICAgICAgb2JqZWN0LnRyYXZlcnNlKChjaGlsZDogVEhSRUUuT2JqZWN0M0QpID0+IHtcbiAgICAgICAgICAgIGlmIChjaGlsZC5uYW1lKSBkYXRhLm5vZGVzW2NoaWxkLm5hbWVdID0gY2hpbGQ7XG4gICAgICAgICAgICBpZiAoJ21hdGVyaWFsJyBpbiBjaGlsZCAmJiAhZGF0YS5tYXRlcmlhbHNbKChjaGlsZCBhcyBUSFJFRS5NZXNoKS5tYXRlcmlhbCBhcyBUSFJFRS5NYXRlcmlhbCkubmFtZV0pIHtcbiAgICAgICAgICAgICAgICBkYXRhLm1hdGVyaWFsc1soKGNoaWxkIGFzIFRIUkVFLk1lc2gpLm1hdGVyaWFsIGFzIFRIUkVFLk1hdGVyaWFsKS5uYW1lXSA9IChjaGlsZCBhcyBUSFJFRS5NZXNoKVxuICAgICAgICAgICAgICAgICAgICAubWF0ZXJpYWwgYXMgVEhSRUUuTWF0ZXJpYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbn1cbiJdfQ==