@rocketshow/designer 1.32.0 → 1.35.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 (362) hide show
  1. package/assets/i18n/de.json +2 -1
  2. package/assets/i18n/en.json +2 -1
  3. package/esm2022/lib/array-sort-pipe.mjs +30 -0
  4. package/esm2022/lib/designer.component.mjs +672 -0
  5. package/esm2022/lib/designer.module.mjs +186 -0
  6. package/esm2022/lib/designer.service.mjs +14 -0
  7. package/esm2022/lib/dropzone/dropzone.component.mjs +93 -0
  8. package/esm2022/lib/effect/effect-curve/effect-curve.component.mjs +577 -0
  9. package/esm2022/lib/effect/effect-pan-tilt/effect-pan-tilt.component.mjs +36 -0
  10. package/esm2022/lib/effect/effect.component.mjs +174 -0
  11. package/esm2022/lib/error-dialog/error-dialog.component.mjs +75 -0
  12. package/esm2022/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.mjs +222 -0
  13. package/esm2022/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.mjs +147 -0
  14. package/esm2022/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.mjs +213 -0
  15. package/esm2022/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.mjs +78 -0
  16. package/esm2022/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.mjs +119 -0
  17. package/esm2022/lib/fixture/fixture-capability/fixture-capability.component.mjs +169 -0
  18. package/esm2022/lib/fixture/fixture-channel/fixture-channel.component.mjs +162 -0
  19. package/esm2022/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.mjs +365 -0
  20. package/esm2022/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.mjs +151 -0
  21. package/esm2022/lib/fixture/fixture-settings/fixture-settings.component.mjs +46 -0
  22. package/esm2022/lib/fixture/fixture.component.mjs +148 -0
  23. package/esm2022/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.mjs +145 -0
  24. package/esm2022/lib/fixture-pool/fixture-pool.component.mjs +643 -0
  25. package/esm2022/lib/intro/intro.component.mjs +95 -0
  26. package/esm2022/lib/master-dimmer/master-dimmer.component.mjs +66 -0
  27. package/esm2022/lib/models/cached-fixture-capability.mjs +9 -0
  28. package/esm2022/lib/models/cached-fixture-channel.mjs +7 -0
  29. package/esm2022/lib/models/cached-fixture.mjs +6 -0
  30. package/esm2022/lib/models/color.mjs +8 -0
  31. package/esm2022/lib/models/composition.mjs +46 -0
  32. package/esm2022/lib/models/effect-curve-profile-channel.mjs +15 -0
  33. package/esm2022/lib/models/effect-curve.mjs +69 -0
  34. package/esm2022/lib/models/effect-pan-tilt.mjs +19 -0
  35. package/esm2022/lib/models/effect.mjs +12 -0
  36. package/esm2022/lib/models/fixture-capability-value.mjs +15 -0
  37. package/esm2022/lib/models/fixture-capability.mjs +84 -0
  38. package/esm2022/lib/models/fixture-channel-value.mjs +11 -0
  39. package/esm2022/lib/models/fixture-channel.mjs +24 -0
  40. package/esm2022/lib/models/fixture-matrix-pixel-group-constraints.mjs +27 -0
  41. package/esm2022/lib/models/fixture-matrix-pixel-group.mjs +12 -0
  42. package/esm2022/lib/models/fixture-matrix.mjs +25 -0
  43. package/esm2022/lib/models/fixture-mode-channel.mjs +26 -0
  44. package/esm2022/lib/models/fixture-mode.mjs +17 -0
  45. package/esm2022/lib/models/fixture-physical.mjs +14 -0
  46. package/esm2022/lib/models/fixture-profile.mjs +85 -0
  47. package/esm2022/lib/models/fixture-wheel-slot.mjs +26 -0
  48. package/esm2022/lib/models/fixture-wheel.mjs +15 -0
  49. package/esm2022/lib/models/fixture.mjs +40 -0
  50. package/esm2022/lib/models/preset-fixture.mjs +10 -0
  51. package/esm2022/lib/models/preset-region-scene.mjs +8 -0
  52. package/esm2022/lib/models/preset.mjs +65 -0
  53. package/esm2022/lib/models/project.mjs +78 -0
  54. package/esm2022/lib/models/scene-playback-region.mjs +11 -0
  55. package/esm2022/lib/models/scene.mjs +27 -0
  56. package/esm2022/lib/preset/preset-settings/preset-settings.component.mjs +194 -0
  57. package/esm2022/lib/preset/preset.component.mjs +131 -0
  58. package/esm2022/lib/preview/models/color-changer-3d.mjs +64 -0
  59. package/esm2022/lib/preview/models/fixture-3d.mjs +274 -0
  60. package/esm2022/lib/preview/models/moving-head-3d.mjs +124 -0
  61. package/esm2022/lib/preview/preview.component.mjs +219 -0
  62. package/esm2022/lib/project/project-browser/project-browser.component.mjs +143 -0
  63. package/esm2022/lib/project/project-import/project-import.component.mjs +107 -0
  64. package/esm2022/lib/project/project-save/project-save.component.mjs +178 -0
  65. package/esm2022/lib/project/project-share/project-share.component.mjs +71 -0
  66. package/esm2022/lib/scene/scene-settings/scene-settings.component.mjs +146 -0
  67. package/esm2022/lib/scene/scene.component.mjs +110 -0
  68. package/esm2022/lib/services/animation.service.mjs +16 -0
  69. package/esm2022/lib/services/config.service.mjs +28 -0
  70. package/esm2022/lib/services/effect.service.mjs +14 -0
  71. package/esm2022/lib/services/error-dialog.service.mjs +39 -0
  72. package/esm2022/lib/services/fixture-pool.service.mjs +30 -0
  73. package/esm2022/lib/services/fixture.service.mjs +639 -0
  74. package/esm2022/lib/services/hotkey-target-exclude.service.mjs +24 -0
  75. package/esm2022/lib/services/intro.service.mjs +140 -0
  76. package/esm2022/lib/services/preset.service.mjs +449 -0
  77. package/esm2022/lib/services/preview-mesh.service.mjs +57 -0
  78. package/esm2022/lib/services/preview.service.mjs +497 -0
  79. package/esm2022/lib/services/project-load.service.mjs +209 -0
  80. package/esm2022/lib/services/project.service.mjs +93 -0
  81. package/esm2022/lib/services/scene.service.mjs +164 -0
  82. package/esm2022/lib/services/timeline.service.mjs +726 -0
  83. package/esm2022/lib/services/user-ensure-login.service.mjs +38 -0
  84. package/esm2022/lib/services/user.service.mjs +89 -0
  85. package/esm2022/lib/services/uuid.service.mjs +23 -0
  86. package/esm2022/lib/services/warning-dialog.service.mjs +38 -0
  87. package/esm2022/lib/timeline/composition-settings/composition-settings.component.mjs +304 -0
  88. package/esm2022/lib/timeline/timeline-grid/timeline-grid.component.mjs +216 -0
  89. package/esm2022/lib/timeline/timeline.component.mjs +418 -0
  90. package/esm2022/lib/user/user-login/user-login.component.mjs +144 -0
  91. package/esm2022/lib/user/user-register/user-register.component.mjs +220 -0
  92. package/esm2022/lib/wait-dialog/wait-dialog.component.mjs +26 -0
  93. package/esm2022/lib/warning-dialog/warning-dialog.component.mjs +68 -0
  94. package/esm2022/public_api.mjs +7 -0
  95. package/esm2022/rocketshow-designer.mjs +5 -0
  96. package/fesm2022/rocketshow-designer.mjs +11171 -0
  97. package/fesm2022/rocketshow-designer.mjs.map +1 -0
  98. package/index.d.ts +5 -0
  99. package/lib/array-sort-pipe.d.ts +3 -0
  100. package/lib/designer.component.d.ts +19 -16
  101. package/lib/designer.module.d.ts +55 -0
  102. package/lib/designer.service.d.ts +3 -0
  103. package/lib/dropzone/dropzone.component.d.ts +24 -0
  104. package/lib/effect/effect-curve/effect-curve.component.d.ts +4 -1
  105. package/lib/effect/effect-pan-tilt/effect-pan-tilt.component.d.ts +3 -0
  106. package/lib/effect/effect.component.d.ts +3 -0
  107. package/lib/error-dialog/error-dialog.component.d.ts +3 -0
  108. package/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.d.ts +4 -1
  109. package/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.d.ts +3 -0
  110. package/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.d.ts +5 -2
  111. package/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.d.ts +3 -0
  112. package/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.d.ts +3 -0
  113. package/lib/fixture/fixture-capability/fixture-capability.component.d.ts +3 -0
  114. package/lib/fixture/fixture-channel/fixture-channel.component.d.ts +3 -0
  115. package/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.d.ts +3 -0
  116. package/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.d.ts +3 -0
  117. package/lib/fixture/fixture-settings/fixture-settings.component.d.ts +3 -0
  118. package/lib/fixture/fixture.component.d.ts +7 -3
  119. package/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.d.ts +3 -0
  120. package/lib/fixture-pool/fixture-pool.component.d.ts +3 -0
  121. package/lib/intro/intro.component.d.ts +3 -0
  122. package/lib/master-dimmer/master-dimmer.component.d.ts +3 -0
  123. package/lib/models/cached-fixture.d.ts +1 -0
  124. package/lib/models/fixture-matrix-pixel-group-constraints.d.ts +8 -0
  125. package/lib/models/fixture-matrix-pixel-group.d.ts +6 -0
  126. package/lib/models/fixture-matrix.d.ts +6 -0
  127. package/lib/models/fixture-mode-channel.d.ts +8 -0
  128. package/lib/models/fixture-mode.d.ts +3 -1
  129. package/lib/models/fixture-physical.d.ts +4 -0
  130. package/lib/models/fixture-profile.d.ts +5 -0
  131. package/lib/models/preset-fixture.d.ts +5 -0
  132. package/lib/models/preset.d.ts +2 -0
  133. package/lib/models/project.d.ts +3 -0
  134. package/lib/preset/preset-settings/preset-settings.component.d.ts +3 -0
  135. package/lib/preset/preset.component.d.ts +3 -0
  136. package/lib/preview/models/color-changer-3d.d.ts +1 -11
  137. package/lib/preview/models/fixture-3d.d.ts +11 -0
  138. package/lib/preview/models/moving-head-3d.d.ts +1 -11
  139. package/lib/preview/preview.component.d.ts +4 -4
  140. package/lib/project/project-browser/project-browser.component.d.ts +3 -0
  141. package/lib/project/project-import/project-import.component.d.ts +3 -0
  142. package/lib/project/project-save/project-save.component.d.ts +3 -0
  143. package/lib/project/project-share/project-share.component.d.ts +3 -0
  144. package/lib/scene/scene-settings/scene-settings.component.d.ts +3 -0
  145. package/lib/scene/scene.component.d.ts +3 -0
  146. package/lib/services/animation.service.d.ts +3 -0
  147. package/lib/services/config.service.d.ts +4 -0
  148. package/lib/services/effect.service.d.ts +3 -0
  149. package/lib/services/error-dialog.service.d.ts +3 -0
  150. package/lib/services/fixture-pool.service.d.ts +3 -0
  151. package/lib/services/fixture.service.d.ts +10 -2
  152. package/lib/services/hotkey-target-exclude.service.d.ts +3 -0
  153. package/lib/services/intro.service.d.ts +3 -0
  154. package/lib/services/preset.service.d.ts +7 -2
  155. package/lib/services/preview-mesh.service.d.ts +3 -0
  156. package/lib/services/preview.service.d.ts +6 -4
  157. package/lib/services/project-load.service.d.ts +8 -1
  158. package/lib/services/project.service.d.ts +5 -3
  159. package/lib/services/scene.service.d.ts +3 -0
  160. package/lib/services/timeline.service.d.ts +3 -0
  161. package/lib/services/user-ensure-login.service.d.ts +3 -0
  162. package/lib/services/user.service.d.ts +3 -0
  163. package/lib/services/uuid.service.d.ts +3 -0
  164. package/lib/services/warning-dialog.service.d.ts +3 -0
  165. package/lib/timeline/composition-settings/composition-settings.component.d.ts +5 -1
  166. package/lib/timeline/timeline-grid/timeline-grid.component.d.ts +3 -0
  167. package/lib/timeline/timeline.component.d.ts +3 -0
  168. package/lib/user/user-login/user-login.component.d.ts +3 -0
  169. package/lib/user/user-register/user-register.component.d.ts +3 -0
  170. package/lib/wait-dialog/wait-dialog.component.d.ts +3 -0
  171. package/lib/warning-dialog/warning-dialog.component.d.ts +3 -0
  172. package/package.json +20 -22
  173. package/rocketshow-designer-1.35.0.tgz +0 -0
  174. package/bundles/rocketshow-designer.umd.js +0 -9966
  175. package/bundles/rocketshow-designer.umd.js.map +0 -1
  176. package/bundles/rocketshow-designer.umd.min.js +0 -17
  177. package/bundles/rocketshow-designer.umd.min.js.map +0 -1
  178. package/esm2015/lib/array-sort-pipe.js +0 -28
  179. package/esm2015/lib/designer.component.js +0 -411
  180. package/esm2015/lib/designer.module.js +0 -117
  181. package/esm2015/lib/designer.service.js +0 -16
  182. package/esm2015/lib/effect/effect-curve/effect-curve.component.js +0 -325
  183. package/esm2015/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -30
  184. package/esm2015/lib/effect/effect.component.js +0 -73
  185. package/esm2015/lib/error-dialog/error-dialog.component.js +0 -42
  186. package/esm2015/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -141
  187. package/esm2015/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -128
  188. package/esm2015/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -163
  189. package/esm2015/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -60
  190. package/esm2015/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -87
  191. package/esm2015/lib/fixture/fixture-capability/fixture-capability.component.js +0 -97
  192. package/esm2015/lib/fixture/fixture-channel/fixture-channel.component.js +0 -66
  193. package/esm2015/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -200
  194. package/esm2015/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -31
  195. package/esm2015/lib/fixture/fixture-settings/fixture-settings.component.js +0 -35
  196. package/esm2015/lib/fixture/fixture.component.js +0 -70
  197. package/esm2015/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -128
  198. package/esm2015/lib/fixture-pool/fixture-pool.component.js +0 -331
  199. package/esm2015/lib/intro/intro.component.js +0 -25
  200. package/esm2015/lib/master-dimmer/master-dimmer.component.js +0 -41
  201. package/esm2015/lib/models/cached-fixture-capability.js +0 -9
  202. package/esm2015/lib/models/cached-fixture-channel.js +0 -7
  203. package/esm2015/lib/models/cached-fixture.js +0 -6
  204. package/esm2015/lib/models/color.js +0 -8
  205. package/esm2015/lib/models/composition.js +0 -46
  206. package/esm2015/lib/models/effect-curve-profile-channel.js +0 -15
  207. package/esm2015/lib/models/effect-curve.js +0 -69
  208. package/esm2015/lib/models/effect-pan-tilt.js +0 -19
  209. package/esm2015/lib/models/effect.js +0 -12
  210. package/esm2015/lib/models/fixture-capability-value.js +0 -15
  211. package/esm2015/lib/models/fixture-capability.js +0 -84
  212. package/esm2015/lib/models/fixture-channel-value.js +0 -11
  213. package/esm2015/lib/models/fixture-channel.js +0 -24
  214. package/esm2015/lib/models/fixture-mode.js +0 -14
  215. package/esm2015/lib/models/fixture-profile.js +0 -70
  216. package/esm2015/lib/models/fixture-wheel-slot.js +0 -26
  217. package/esm2015/lib/models/fixture-wheel.js +0 -15
  218. package/esm2015/lib/models/fixture.js +0 -40
  219. package/esm2015/lib/models/preset-region-scene.js +0 -8
  220. package/esm2015/lib/models/preset.js +0 -56
  221. package/esm2015/lib/models/project.js +0 -68
  222. package/esm2015/lib/models/scene-playback-region.js +0 -11
  223. package/esm2015/lib/models/scene.js +0 -27
  224. package/esm2015/lib/models/universe.js +0 -11
  225. package/esm2015/lib/preset/preset-settings/preset-settings.component.js +0 -66
  226. package/esm2015/lib/preset/preset.component.js +0 -85
  227. package/esm2015/lib/preview/models/color-changer-3d.js +0 -167
  228. package/esm2015/lib/preview/models/fixture-3d.js +0 -150
  229. package/esm2015/lib/preview/models/moving-head-3d.js +0 -233
  230. package/esm2015/lib/preview/preview.component.js +0 -242
  231. package/esm2015/lib/project/project-browser/project-browser.component.js +0 -73
  232. package/esm2015/lib/project/project-import/project-import.component.js +0 -89
  233. package/esm2015/lib/project/project-save/project-save.component.js +0 -105
  234. package/esm2015/lib/project/project-share/project-share.component.js +0 -43
  235. package/esm2015/lib/scene/scene-settings/scene-settings.component.js +0 -52
  236. package/esm2015/lib/scene/scene.component.js +0 -56
  237. package/esm2015/lib/services/animation.service.js +0 -17
  238. package/esm2015/lib/services/config.service.js +0 -28
  239. package/esm2015/lib/services/effect.service.js +0 -16
  240. package/esm2015/lib/services/error-dialog.service.js +0 -44
  241. package/esm2015/lib/services/fixture-pool.service.js +0 -34
  242. package/esm2015/lib/services/fixture.service.js +0 -443
  243. package/esm2015/lib/services/hotkey-target-exclude.service.js +0 -26
  244. package/esm2015/lib/services/intro.service.js +0 -144
  245. package/esm2015/lib/services/preset.service.js +0 -416
  246. package/esm2015/lib/services/preview-mesh.service.js +0 -58
  247. package/esm2015/lib/services/preview.service.js +0 -500
  248. package/esm2015/lib/services/project-load.service.js +0 -171
  249. package/esm2015/lib/services/project.service.js +0 -113
  250. package/esm2015/lib/services/scene.service.js +0 -174
  251. package/esm2015/lib/services/timeline.service.js +0 -738
  252. package/esm2015/lib/services/universe.service.js +0 -24
  253. package/esm2015/lib/services/user-ensure-login.service.js +0 -44
  254. package/esm2015/lib/services/user.service.js +0 -93
  255. package/esm2015/lib/services/uuid.service.js +0 -25
  256. package/esm2015/lib/services/warning-dialog.service.js +0 -43
  257. package/esm2015/lib/timeline/composition-settings/composition-settings.component.js +0 -197
  258. package/esm2015/lib/timeline/timeline-grid/timeline-grid.component.js +0 -55
  259. package/esm2015/lib/timeline/timeline.component.js +0 -239
  260. package/esm2015/lib/user/user-login/user-login.component.js +0 -64
  261. package/esm2015/lib/user/user-register/user-register.component.js +0 -89
  262. package/esm2015/lib/wait-dialog/wait-dialog.component.js +0 -16
  263. package/esm2015/lib/warning-dialog/warning-dialog.component.js +0 -42
  264. package/esm2015/public_api.js +0 -7
  265. package/esm2015/rocketshow-designer.js +0 -61
  266. package/esm5/lib/array-sort-pipe.js +0 -31
  267. package/esm5/lib/designer.component.js +0 -468
  268. package/esm5/lib/designer.module.js +0 -120
  269. package/esm5/lib/designer.service.js +0 -17
  270. package/esm5/lib/effect/effect-curve/effect-curve.component.js +0 -386
  271. package/esm5/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -31
  272. package/esm5/lib/effect/effect.component.js +0 -75
  273. package/esm5/lib/error-dialog/error-dialog.component.js +0 -43
  274. package/esm5/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -159
  275. package/esm5/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -130
  276. package/esm5/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -215
  277. package/esm5/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -61
  278. package/esm5/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -88
  279. package/esm5/lib/fixture/fixture-capability/fixture-capability.component.js +0 -130
  280. package/esm5/lib/fixture/fixture-channel/fixture-channel.component.js +0 -68
  281. package/esm5/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -306
  282. package/esm5/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -32
  283. package/esm5/lib/fixture/fixture-settings/fixture-settings.component.js +0 -36
  284. package/esm5/lib/fixture/fixture.component.js +0 -71
  285. package/esm5/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -127
  286. package/esm5/lib/fixture-pool/fixture-pool.component.js +0 -430
  287. package/esm5/lib/intro/intro.component.js +0 -26
  288. package/esm5/lib/master-dimmer/master-dimmer.component.js +0 -42
  289. package/esm5/lib/models/cached-fixture-capability.js +0 -11
  290. package/esm5/lib/models/cached-fixture-channel.js +0 -9
  291. package/esm5/lib/models/cached-fixture.js +0 -8
  292. package/esm5/lib/models/color.js +0 -10
  293. package/esm5/lib/models/composition.js +0 -60
  294. package/esm5/lib/models/effect-curve-profile-channel.js +0 -29
  295. package/esm5/lib/models/effect-curve.js +0 -95
  296. package/esm5/lib/models/effect-pan-tilt.js +0 -24
  297. package/esm5/lib/models/effect.js +0 -14
  298. package/esm5/lib/models/fixture-capability-value.js +0 -17
  299. package/esm5/lib/models/fixture-capability.js +0 -86
  300. package/esm5/lib/models/fixture-channel-value.js +0 -13
  301. package/esm5/lib/models/fixture-channel.js +0 -38
  302. package/esm5/lib/models/fixture-mode.js +0 -16
  303. package/esm5/lib/models/fixture-profile.js +0 -114
  304. package/esm5/lib/models/fixture-wheel-slot.js +0 -28
  305. package/esm5/lib/models/fixture-wheel.js +0 -29
  306. package/esm5/lib/models/fixture.js +0 -42
  307. package/esm5/lib/models/preset-region-scene.js +0 -10
  308. package/esm5/lib/models/preset.js +0 -90
  309. package/esm5/lib/models/project.js +0 -122
  310. package/esm5/lib/models/scene-playback-region.js +0 -13
  311. package/esm5/lib/models/scene.js +0 -29
  312. package/esm5/lib/models/universe.js +0 -13
  313. package/esm5/lib/preset/preset-settings/preset-settings.component.js +0 -67
  314. package/esm5/lib/preset/preset.component.js +0 -86
  315. package/esm5/lib/preview/models/color-changer-3d.js +0 -194
  316. package/esm5/lib/preview/models/fixture-3d.js +0 -196
  317. package/esm5/lib/preview/models/moving-head-3d.js +0 -250
  318. package/esm5/lib/preview/preview.component.js +0 -280
  319. package/esm5/lib/project/project-browser/project-browser.component.js +0 -77
  320. package/esm5/lib/project/project-import/project-import.component.js +0 -88
  321. package/esm5/lib/project/project-save/project-save.component.js +0 -120
  322. package/esm5/lib/project/project-share/project-share.component.js +0 -44
  323. package/esm5/lib/scene/scene-settings/scene-settings.component.js +0 -53
  324. package/esm5/lib/scene/scene.component.js +0 -57
  325. package/esm5/lib/services/animation.service.js +0 -18
  326. package/esm5/lib/services/config.service.js +0 -29
  327. package/esm5/lib/services/effect.service.js +0 -17
  328. package/esm5/lib/services/error-dialog.service.js +0 -46
  329. package/esm5/lib/services/fixture-pool.service.js +0 -36
  330. package/esm5/lib/services/fixture.service.js +0 -643
  331. package/esm5/lib/services/hotkey-target-exclude.service.js +0 -27
  332. package/esm5/lib/services/intro.service.js +0 -145
  333. package/esm5/lib/services/preset.service.js +0 -637
  334. package/esm5/lib/services/preview-mesh.service.js +0 -61
  335. package/esm5/lib/services/preview.service.js +0 -754
  336. package/esm5/lib/services/project-load.service.js +0 -185
  337. package/esm5/lib/services/project.service.js +0 -127
  338. package/esm5/lib/services/scene.service.js +0 -251
  339. package/esm5/lib/services/timeline.service.js +0 -845
  340. package/esm5/lib/services/universe.service.js +0 -36
  341. package/esm5/lib/services/user-ensure-login.service.js +0 -45
  342. package/esm5/lib/services/user.service.js +0 -95
  343. package/esm5/lib/services/uuid.service.js +0 -26
  344. package/esm5/lib/services/warning-dialog.service.js +0 -45
  345. package/esm5/lib/timeline/composition-settings/composition-settings.component.js +0 -206
  346. package/esm5/lib/timeline/timeline-grid/timeline-grid.component.js +0 -56
  347. package/esm5/lib/timeline/timeline.component.js +0 -243
  348. package/esm5/lib/user/user-login/user-login.component.js +0 -66
  349. package/esm5/lib/user/user-register/user-register.component.js +0 -91
  350. package/esm5/lib/wait-dialog/wait-dialog.component.js +0 -18
  351. package/esm5/lib/warning-dialog/warning-dialog.component.js +0 -43
  352. package/esm5/public_api.js +0 -7
  353. package/esm5/rocketshow-designer.js +0 -61
  354. package/fesm2015/rocketshow-designer.js +0 -7945
  355. package/fesm2015/rocketshow-designer.js.map +0 -1
  356. package/fesm5/rocketshow-designer.js +0 -9690
  357. package/fesm5/rocketshow-designer.js.map +0 -1
  358. package/lib/models/universe.d.ts +0 -8
  359. package/lib/services/universe.service.d.ts +0 -6
  360. package/rocketshow-designer-1.32.0.tgz +0 -0
  361. package/rocketshow-designer.d.ts +0 -60
  362. package/rocketshow-designer.metadata.json +0 -1
@@ -1,430 +0,0 @@
1
- import { __decorate, __metadata, __read, __spread, __values } from "tslib";
2
- import { Component, HostListener } from '@angular/core';
3
- import { TranslateService } from '@ngx-translate/core';
4
- import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';
5
- import { ToastrService } from 'ngx-toastr';
6
- import { Subject } from 'rxjs';
7
- import { catchError, finalize } from 'rxjs/operators';
8
- import { Fixture } from '../models/fixture';
9
- import { ConfigService } from '../services/config.service';
10
- import { FixtureService } from '../services/fixture.service';
11
- import { PresetService } from '../services/preset.service';
12
- import { PreviewService } from '../services/preview.service';
13
- import { ProjectService } from '../services/project.service';
14
- import { UuidService } from '../services/uuid.service';
15
- import { FixturePoolCreateFromFileComponent } from './fixture-pool-create-from-file/fixture-pool-create-from-file.component';
16
- var FixturePoolComponent = /** @class */ (function () {
17
- function FixturePoolComponent(bsModalRef, fixtureService, uuidService, projectService, previewService, translateService, toastrService, presetService, configService, modalService) {
18
- this.bsModalRef = bsModalRef;
19
- this.fixtureService = fixtureService;
20
- this.uuidService = uuidService;
21
- this.projectService = projectService;
22
- this.previewService = previewService;
23
- this.translateService = translateService;
24
- this.toastrService = toastrService;
25
- this.presetService = presetService;
26
- this.configService = configService;
27
- this.modalService = modalService;
28
- this.loadingProfiles = false;
29
- this.dmxChannels = [];
30
- this.showChannelNumbers = false;
31
- this.onClose = new Subject();
32
- this.fixturePool = __spread(this.projectService.project.fixtures);
33
- if (this.fixturePool.length > 0) {
34
- this.selectFixture(this.fixturePool[0]);
35
- }
36
- }
37
- FixturePoolComponent.prototype.ngOnInit = function () {
38
- for (var i = 0; i < 512; i++) {
39
- this.dmxChannels.push(0);
40
- }
41
- this.loadProfiles();
42
- };
43
- FixturePoolComponent.prototype.loadProfiles = function () {
44
- var _this = this;
45
- this.loadingProfiles = true;
46
- this.fixtureService.getSearchProfiles().subscribe(function (profiles) {
47
- _this.profiles = profiles;
48
- _this.filterProfiles();
49
- _this.loadingProfiles = false;
50
- });
51
- };
52
- FixturePoolComponent.prototype.selectFixture = function (fixture) {
53
- this.selectedFixtureProfile = undefined;
54
- if (fixture) {
55
- this.selectedFixtureProfile = this.fixtureService.getProfileByUuid(fixture.profileUuid);
56
- }
57
- this.selectedFixture = fixture;
58
- };
59
- FixturePoolComponent.prototype.filterProfiles = function () {
60
- var e_1, _a, e_2, _b;
61
- if (!this.searchExpression || !this.profiles) {
62
- this.filteredProfiles = this.profiles;
63
- return;
64
- }
65
- this.filteredProfiles = [];
66
- var keywords = this.searchExpression.split(' ');
67
- try {
68
- for (var _c = __values(this.profiles), _d = _c.next(); !_d.done; _d = _c.next()) {
69
- var profile = _d.value;
70
- var foundKeywords = 0;
71
- try {
72
- for (var keywords_1 = (e_2 = void 0, __values(keywords)), keywords_1_1 = keywords_1.next(); !keywords_1_1.done; keywords_1_1 = keywords_1.next()) {
73
- var keyword = keywords_1_1.value;
74
- if (profile.uuid.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||
75
- profile.name.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||
76
- profile.manufacturerName.toLowerCase().indexOf(keyword.toLowerCase()) !== -1) {
77
- foundKeywords++;
78
- }
79
- }
80
- }
81
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
82
- finally {
83
- try {
84
- if (keywords_1_1 && !keywords_1_1.done && (_b = keywords_1.return)) _b.call(keywords_1);
85
- }
86
- finally { if (e_2) throw e_2.error; }
87
- }
88
- if (foundKeywords === keywords.length) {
89
- this.filteredProfiles.push(profile);
90
- }
91
- }
92
- }
93
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
94
- finally {
95
- try {
96
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
97
- }
98
- finally { if (e_1) throw e_1.error; }
99
- }
100
- };
101
- FixturePoolComponent.prototype.addFixture = function (searchProfile) {
102
- var _this = this;
103
- // Load the profile details, if not already done. There is only a
104
- // minimal profile passed from the search.
105
- this.fixtureService.loadProfileByUuid(searchProfile.uuid).subscribe(function () {
106
- var profile = _this.fixtureService.getProfileByUuid(searchProfile.uuid);
107
- var newFixture = _this.fixtureService.addFixture(profile, _this.fixturePool);
108
- _this.selectFixture(newFixture);
109
- });
110
- };
111
- FixturePoolComponent.prototype.addCopy = function (originalFixture) {
112
- var fixture = new Fixture();
113
- fixture.uuid = this.uuidService.getUuid();
114
- fixture.profileUuid = originalFixture.profileUuid;
115
- fixture.name = originalFixture.name;
116
- fixture.modeShortName = originalFixture.modeShortName;
117
- fixture.dmxFirstChannel = originalFixture.dmxFirstChannel;
118
- fixture.dmxUniverseUuid = originalFixture.dmxUniverseUuid;
119
- this.fixturePool.push(fixture);
120
- this.selectFixture(fixture);
121
- };
122
- FixturePoolComponent.prototype.removeFixture = function (fixture) {
123
- var e_3, _a;
124
- for (var i = 0; i < this.fixturePool.length; i++) {
125
- if (this.fixturePool[i].uuid === fixture.uuid) {
126
- if (this.selectedFixture === this.fixturePool[i]) {
127
- this.selectFixture(undefined);
128
- }
129
- this.fixturePool.splice(i, 1);
130
- break;
131
- }
132
- }
133
- if (!this.selectedFixture && this.fixturePool && this.fixturePool.length > 0) {
134
- this.selectFixture((this.selectedFixture = this.fixturePool[0]));
135
- }
136
- // remove unused profiles
137
- for (var i = 0; i < this.projectService.project.fixtureProfiles.length; i++) {
138
- var profileUsed = false;
139
- try {
140
- for (var _b = (e_3 = void 0, __values(this.fixturePool)), _c = _b.next(); !_c.done; _c = _b.next()) {
141
- var fixtureInPool = _c.value;
142
- if (fixtureInPool.profileUuid === this.projectService.project.fixtureProfiles[i].uuid) {
143
- profileUsed = true;
144
- break;
145
- }
146
- }
147
- }
148
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
149
- finally {
150
- try {
151
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
152
- }
153
- finally { if (e_3) throw e_3.error; }
154
- }
155
- if (!profileUsed) {
156
- this.projectService.project.fixtureProfiles.splice(i, 1);
157
- }
158
- }
159
- };
160
- FixturePoolComponent.prototype.channelOccupied = function (index) {
161
- var e_4, _a;
162
- try {
163
- for (var _b = __values(this.fixturePool), _c = _b.next(); !_c.done; _c = _b.next()) {
164
- var fixture = _c.value;
165
- var mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);
166
- if (index >= fixture.dmxFirstChannel && index < fixture.dmxFirstChannel + mode.channels.length) {
167
- return true;
168
- }
169
- }
170
- }
171
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
172
- finally {
173
- try {
174
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
175
- }
176
- finally { if (e_4) throw e_4.error; }
177
- }
178
- return false;
179
- };
180
- FixturePoolComponent.prototype.channelOccupiedStart = function (index) {
181
- var e_5, _a;
182
- try {
183
- for (var _b = __values(this.fixturePool), _c = _b.next(); !_c.done; _c = _b.next()) {
184
- var fixture = _c.value;
185
- if (index === fixture.dmxFirstChannel) {
186
- return true;
187
- }
188
- }
189
- }
190
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
191
- finally {
192
- try {
193
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
194
- }
195
- finally { if (e_5) throw e_5.error; }
196
- }
197
- return false;
198
- };
199
- FixturePoolComponent.prototype.channelOccupiedEnd = function (index) {
200
- var e_6, _a;
201
- try {
202
- for (var _b = __values(this.fixturePool), _c = _b.next(); !_c.done; _c = _b.next()) {
203
- var fixture = _c.value;
204
- var mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);
205
- if (index === fixture.dmxFirstChannel + mode.channels.length - 1) {
206
- return true;
207
- }
208
- }
209
- }
210
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
211
- finally {
212
- try {
213
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
214
- }
215
- finally { if (e_6) throw e_6.error; }
216
- }
217
- return false;
218
- };
219
- FixturePoolComponent.prototype.channelOverlapped = function (index) {
220
- var e_7, _a;
221
- var occupiedFixture;
222
- try {
223
- for (var _b = __values(this.fixturePool), _c = _b.next(); !_c.done; _c = _b.next()) {
224
- var fixture = _c.value;
225
- var mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);
226
- if (index >= fixture.dmxFirstChannel && index < fixture.dmxFirstChannel + mode.channels.length) {
227
- if (occupiedFixture) {
228
- if (occupiedFixture.dmxFirstChannel !== fixture.dmxFirstChannel || occupiedFixture.modeShortName !== fixture.modeShortName) {
229
- // fixtures are allowed to overlap, if they start at the same channel and
230
- // use the same mode. otherwise it's not allowed.
231
- return true;
232
- }
233
- }
234
- else {
235
- occupiedFixture = fixture;
236
- }
237
- }
238
- }
239
- }
240
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
241
- finally {
242
- try {
243
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
244
- }
245
- finally { if (e_7) throw e_7.error; }
246
- }
247
- return false;
248
- };
249
- FixturePoolComponent.prototype.channelMouseDown = function (event) {
250
- var e_8, _a;
251
- // start dragging
252
- var selectedIndex = event.target.dataset.index;
253
- var newSelectedFixture;
254
- try {
255
- // find a dragging fixture and select it, but don't change the selection, if the
256
- // currently selected fixture might also be selected (on overlapped fixtures)
257
- for (var _b = __values(this.fixturePool), _c = _b.next(); !_c.done; _c = _b.next()) {
258
- var fixture = _c.value;
259
- var mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);
260
- if (selectedIndex >= fixture.dmxFirstChannel && selectedIndex <= fixture.dmxFirstChannel + mode.channels.length - 1) {
261
- if (this.selectedFixture === fixture) {
262
- newSelectedFixture = fixture;
263
- break;
264
- }
265
- if (!newSelectedFixture) {
266
- newSelectedFixture = fixture;
267
- }
268
- }
269
- }
270
- }
271
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
272
- finally {
273
- try {
274
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
275
- }
276
- finally { if (e_8) throw e_8.error; }
277
- }
278
- if (newSelectedFixture) {
279
- if (newSelectedFixture !== this.selectedFixture) {
280
- this.selectFixture(newSelectedFixture);
281
- }
282
- this.channelDragFixture = newSelectedFixture;
283
- this.channelDragOffset = selectedIndex - newSelectedFixture.dmxFirstChannel;
284
- }
285
- };
286
- FixturePoolComponent.prototype.channelSelected = function (index) {
287
- if (!this.selectedFixture) {
288
- return false;
289
- }
290
- if (index >= this.selectedFixture.dmxFirstChannel) {
291
- var mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(this.selectedFixture.profileUuid), this.selectedFixture);
292
- if (index < this.selectedFixture.dmxFirstChannel + mode.channels.length) {
293
- return true;
294
- }
295
- }
296
- return false;
297
- };
298
- // register mouse up globally (e.g. also outside the DMX mapping)
299
- FixturePoolComponent.prototype.mouseUp = function (event) {
300
- // finish dragging
301
- this.channelDragFixture = undefined;
302
- this.channelDragOffset = undefined;
303
- };
304
- FixturePoolComponent.prototype.channelMouseOver = function (event) {
305
- // perform dragging
306
- var selectedIndex = event.target.dataset.index;
307
- if (this.channelDragFixture &&
308
- selectedIndex - this.channelDragOffset >= 0 &&
309
- selectedIndex -
310
- this.channelDragOffset +
311
- this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(this.channelDragFixture.profileUuid), this.channelDragFixture).channels.length -
312
- 1 <=
313
- 511) {
314
- this.channelDragFixture.dmxFirstChannel = selectedIndex - this.channelDragOffset;
315
- }
316
- };
317
- FixturePoolComponent.prototype.ok = function () {
318
- var _this = this;
319
- var _loop_1 = function (i) {
320
- if (this_1.channelOverlapped(i)) {
321
- var msg_1 = 'designer.fixture-pool.channel-occupied';
322
- var title_1 = 'designer.fixture-pool.channel-occupied-title';
323
- this_1.translateService.get([msg_1, title_1]).subscribe(function (result) {
324
- _this.toastrService.error(result[msg_1], result[title_1]);
325
- });
326
- return { value: void 0 };
327
- }
328
- };
329
- var this_1 = this;
330
- // don't allow OK if overlapping fixtures exist
331
- for (var i = 0; i < this.dmxChannels.length; i++) {
332
- var state_1 = _loop_1(i);
333
- if (typeof state_1 === "object")
334
- return state_1.value;
335
- }
336
- this.projectService.project.fixtures = this.fixturePool;
337
- this.fixtureService.updateCachedFixtures();
338
- this.presetService.removeDeletedFixtures();
339
- this.previewService.updateFixtureSetup();
340
- this.presetService.updateFixtureSelection();
341
- this.presetService.fixtureSelectionChanged.next();
342
- this.presetService.previewLive();
343
- this.onClose.next(1);
344
- this.bsModalRef.hide();
345
- };
346
- FixturePoolComponent.prototype.cancel = function () {
347
- this.onClose.next(2);
348
- this.bsModalRef.hide();
349
- };
350
- FixturePoolComponent.prototype.updateProfiles = function () {
351
- var _this = this;
352
- this.updatingProfiles = true;
353
- // TODO
354
- this.fixtureService
355
- .updateProfiles()
356
- .pipe(finalize(function () {
357
- _this.updatingProfiles = false;
358
- }), catchError(function () {
359
- var msg = 'designer.fixture-pool.profiles-update-error';
360
- var title = 'designer.fixture-pool.profiles-update-error-title';
361
- _this.translateService.get([msg, title]).subscribe(function (result) {
362
- _this.toastrService.error(result[msg], result[title]);
363
- });
364
- return undefined;
365
- }))
366
- .subscribe(function () {
367
- _this.loadProfiles();
368
- var msg = 'designer.fixture-pool.profiles-updated';
369
- var title = 'designer.fixture-pool.profiles-updated-title';
370
- _this.translateService.get([msg, title]).subscribe(function (result) {
371
- _this.toastrService.success(result[msg], result[title]);
372
- });
373
- });
374
- };
375
- FixturePoolComponent.prototype.createFixtureFromProfileFile = function () {
376
- var _this = this;
377
- var bsModalRef = this.modalService.show(FixturePoolCreateFromFileComponent, { keyboard: true, ignoreBackdropClick: false });
378
- bsModalRef.content.onClose.subscribe(function (profile) {
379
- var newFixture = _this.fixtureService.addFixture(profile, _this.fixturePool);
380
- _this.selectFixture(newFixture);
381
- });
382
- };
383
- FixturePoolComponent.prototype.handleKeyboardEvent = function (event) {
384
- this.ok();
385
- };
386
- FixturePoolComponent.ctorParameters = function () { return [
387
- { type: BsModalRef },
388
- { type: FixtureService },
389
- { type: UuidService },
390
- { type: ProjectService },
391
- { type: PreviewService },
392
- { type: TranslateService },
393
- { type: ToastrService },
394
- { type: PresetService },
395
- { type: ConfigService },
396
- { type: BsModalService }
397
- ]; };
398
- __decorate([
399
- HostListener('window:mouseup', ['$event']),
400
- __metadata("design:type", Function),
401
- __metadata("design:paramtypes", [Object]),
402
- __metadata("design:returntype", void 0)
403
- ], FixturePoolComponent.prototype, "mouseUp", null);
404
- __decorate([
405
- HostListener('document:keydown.enter', ['$event']),
406
- __metadata("design:type", Function),
407
- __metadata("design:paramtypes", [Object]),
408
- __metadata("design:returntype", void 0)
409
- ], FixturePoolComponent.prototype, "handleKeyboardEvent", null);
410
- FixturePoolComponent = __decorate([
411
- Component({
412
- selector: 'lib-app-fixture-pool',
413
- template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ 'designer.fixture-pool.title' | translate }}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel(); (false)\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col-6\">\n <!-- Search for profiles -->\n <input\n type=\"text\"\n class=\"form-control input-block mb-3\"\n id=\"searchSet\"\n placeholder=\"{{ 'designer.fixture-pool.search-profiles' | translate }}\"\n (input)=\"searchExpression = $event.target.value; filterProfiles()\"\n />\n\n <!-- Profiles -->\n <div class=\"card border-secondary w-100\" style=\"height: 200px\">\n <div class=\"card-body p-0 w-100\">\n <div class=\"list-group list-group-flush w-100\">\n <a *ngIf=\"loadingProfiles\" class=\"list-group-item flex-column align-items-start d-flex\">\n <p class=\"mb-0 mx-auto\">\n <i class=\"fa fa-spinner fa-pulse fa-fw\"></i>\n </p>\n </a>\n\n <div class=\"list-group-item\" *ngFor=\"let profile of filteredProfiles | sort: 'uuid'\">\n <div class=\"row\">\n <div class=\"col-10 col-auto my-auto pl-2\">\n <p class=\"mb-0\">\n <span class=\"icon-{{ fixtureService.getFixtureIconClass(profile) }} mr-1\"></span> {{ profile.manufacturerName }} -\n {{ profile.name }}\n </p>\n </div>\n <div class=\"col-2 my-auto\">\n <a class=\"btn btn-primary btn-sm float-right\" href=\"#\" role=\"button\" (click)=\"addFixture(profile); (false)\">\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div>\n <p class=\"d-inline-block mb-0 mt-2\">\n Powered by the <a href=\"https://open-fixture-library.org/\" target=\"_blank\">Open Fixture Library</a>\n </p>\n <a\n class=\"mt-2 btn btn-secondary btn-sm float-right\"\n href=\"https://open-fixture-library.org/fixture-editor\"\n target=\"_blank\"\n role=\"button\"\n >\n <i class=\"fa fa-file-o\" aria-hidden=\"true\"></i> {{ 'designer.fixture-pool.add-profile' | translate }}\n </a>\n <button\n *ngIf=\"configService.localProfiles\"\n type=\"button\"\n class=\"mr-2 mt-2 btn btn-secondary btn-sm float-right\"\n (click)=\"updateProfiles(); (false)\"\n [disabled]=\"updatingProfiles\"\n role=\"button\"\n >\n <i *ngIf=\"updatingProfiles\" class=\"fa fa-spinner fa-pulse fa-fw\" aria-hidden=\"true\"></i>\n <i *ngIf=\"!updatingProfiles\" class=\"fa fa-download fa-fw\" aria-hidden=\"true\"></i>\n {{ 'designer.fixture-pool.update-profiles' | translate }}\n </button>\n </div>\n </div>\n <div class=\"col-6\">\n <div class=\"row\">\n <!-- Add fixture from local profile -->\n <div class=\"col-6\">\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"createFixtureFromProfileFile()\" role=\"button\">\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i> {{ 'designer.fixture-pool.create-fixture-from-profile-file' | translate }}\n </button>\n </div>\n\n <!-- Universe -->\n <div class=\"col-6\">\n <div class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.fixture-pool.universe' | translate }}</label>\n <div class=\"col-lg-8\">\n <select class=\"custom-select\">\n <option>Universe 1</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Fixtures -->\n <div class=\"card border-secondary\" style=\"height: 235px\">\n <div class=\"card-body p-0\">\n <div class=\"list-group list-group-flush\" [sortablejs]=\"fixturePool\">\n <div\n class=\"list-group-item\"\n *ngFor=\"let fixture of fixturePool\"\n [class.active]=\"fixture == selectedFixture\"\n (click)=\"selectFixture(fixture)\"\n style=\"cursor: pointer\"\n >\n <div class=\"row\">\n <div class=\"col-auto list-sort-handle my-auto\" style=\"cursor: move; cursor: -webkit-grabbing\">\n <i class=\"fa fa-bars\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"col-auto flex-grow pl-0 my-auto\">\n <p class=\"mb-0\">\n <span class=\"icon-{{ fixtureService.getFixtureIconClass(fixtureService.getProfileByUuid(fixture.profileUuid)) }} mr-1\">\n </span\n >{{ fixture.name }}\n </p>\n </div>\n <div class=\"col-auto my-auto\">\n <a class=\"btn btn-primary btn-sm float-right\" href=\"#\" role=\"button\" (click)=\"removeFixture(fixture); (false)\">\n <i class=\"fa fa-minus\" aria-hidden=\"true\"></i>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row mt-3\">\n <div class=\"col\">\n <!-- Tab navigation -->\n <ul class=\"nav nav-tabs mb-4\" id=\"myTab\" role=\"tablist\">\n <li class=\"nav-item\">\n <a class=\"nav-link active\" id=\"sets-tab\" data-toggle=\"tab\" href=\"#dmx\" role=\"tab\">\n <i class=\"icon-ola\" aria-hidden=\"true\"></i> {{ 'designer.fixture-pool.dmx' | translate }}\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" id=\"compositions-tab\" data-toggle=\"tab\" href=\"#settings\" role=\"tab\">\n <i class=\"fa fa-cog\" aria-hidden=\"true\"></i> {{ 'designer.fixture-pool.settings' | translate }}\n </a>\n </li>\n </ul>\n\n <!-- Tab content -->\n <div class=\"tab-content\" id=\"myTabContent\">\n <!-- DMX universe overview-->\n <div class=\"tab-pane show active\" id=\"dmx\" role=\"tabpanel\">\n <!-- Show all channel numbers -->\n <!-- <div class=\"form-group row\">\n <div class=\"col-auto flex-grow\"></div>\n <div class=\"col-lg-3 d-flex\">\n <div class=\"form-check my-auto ml-auto\">\n <input type=\"checkbox\" class=\"form-check-input\" id=\"showChannelNumbers\" [ngModel]=\"showChannelNumbers\"\n (ngModelChange)=\"showChannelNumbers = $event\">\n <label class=\"form-check-label\" for=\"showChannelNumbers\">Show channels</label>\n </div>\n </div>\n </div> -->\n\n <!-- List of DMX channels -->\n <div>\n <div\n *ngFor=\"let channel of dmxChannels; let i = index\"\n class=\"dmx-channel\"\n [class.dmx-channel-occupied]=\"channelOccupied(i)\"\n [class.dmx-channel-occupied-start]=\"channelOccupiedStart(i)\"\n [class.dmx-channel-occupied-end]=\"channelOccupiedEnd(i)\"\n [class.dmx-channel-selected]=\"channelSelected(i)\"\n [class.dmx-channel-overlapped]=\"channelOverlapped(i)\"\n (mousedown)=\"channelMouseDown($event)\"\n (mouseover)=\"channelMouseOver($event)\"\n [attr.data-index]=\"i\"\n popover=\"{{ i + 1 }}\"\n placement=\"top\"\n triggers=\"mouseenter:mouseleave\"\n >\n <div class=\"d-flex w-100 dmx-channel-text\" [attr.data-index]=\"i\" [class.dmx-channel-text-visible]=\"showChannelNumbers\">\n <div class=\"m-auto\" style=\"font-size: 11px\" [attr.data-index]=\"i\"><small [attr.data-index]=\"i\">&nbsp;</small></div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Fixture settings -->\n <div class=\"tab-pane\" id=\"settings\" role=\"tabpanel\">\n <div *ngIf=\"selectedFixture && selectedFixtureProfile\">\n <div class=\"form-group row\">\n <label class=\"col-lg-3 col-form-label\" for=\"fixtureName\">{{ 'designer.fixture-pool.fixture-name' | translate }}</label>\n <div class=\"col-lg-9\">\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"selectedFixture.name\" maxlength=\"200\" id=\"fixtureName\" />\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-3 col-form-label\">{{ 'designer.fixture-pool.mode' | translate }}</label>\n <div class=\"col-lg-9\">\n <select\n class=\"custom-select\"\n [ngModel]=\"selectedFixture.modeShortName\"\n (ngModelChange)=\"selectedFixture.modeShortName = $event\"\n >\n <option *ngFor=\"let mode of selectedFixtureProfile.modes\" [ngValue]=\"mode.shortName || mode.name\">\n {{ mode.name }}\n - {{ mode.channels.length }}\n {{ 'designer.fixture-pool.channels' | translate }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-3 col-form-label\">{{ 'designer.fixture-pool.first-channel' | translate }}</label>\n <div class=\"col-lg-9\">\n <select\n class=\"custom-select\"\n [ngModel]=\"selectedFixture.dmxFirstChannel\"\n (ngModelChange)=\"selectedFixture.dmxFirstChannel = $event\"\n >\n <option *ngFor=\"let channel of dmxChannels; let i = index\" [ngValue]=\"i\">\n {{ i + 1 }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-3 col-form-label\"></label>\n <div class=\"col-lg-9\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"addCopy(selectedFixture)\">\n {{ 'designer.fixture.add-copy' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-footer\">\n <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n {{ 'designer.misc.cancel' | translate }}\n </a>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n",
414
- styles: [".list-group-item{padding:.3rem 1.25rem}.dmx-channel{display:flex;float:left;width:28px;border:1px solid #fff;margin-left:-1px;margin-bottom:-1px;padding-bottom:2px}.dmx-channel-occupied{background-color:#63462e;border-left:none;border-right:none;cursor:move}.dmx-channel-occupied-start{border-left:1px solid #fff;border-top-left-radius:8px;border-bottom-left-radius:8px}.dmx-channel-occupied-end{border-right:1px solid #fff;border-top-right-radius:8px;border-bottom-right-radius:8px}.dmx-channel-selected{background-color:#fd7e14}.dmx-channel-overlapped{background-color:red;border:1px solid red;cursor:move}.card{overflow:auto}"]
415
- }),
416
- __metadata("design:paramtypes", [BsModalRef,
417
- FixtureService,
418
- UuidService,
419
- ProjectService,
420
- PreviewService,
421
- TranslateService,
422
- ToastrService,
423
- PresetService,
424
- ConfigService,
425
- BsModalService])
426
- ], FixturePoolComponent);
427
- return FixturePoolComponent;
428
- }());
429
- export { FixturePoolComponent };
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1wb29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL2ZpeHR1cmUtcG9vbC9maXh0dXJlLXBvb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQU83SDtJQW9CRSw4QkFDUyxVQUFzQixFQUN0QixjQUE4QixFQUM3QixXQUF3QixFQUN6QixjQUE4QixFQUM3QixjQUE4QixFQUM5QixnQkFBa0MsRUFDbEMsYUFBNEIsRUFD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QUFDLENBQUM7WUFDN0UsS0FBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxrREFBbUIsR0FBbkIsVUFBb0IsS0FBVTtRQUM1QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDWixDQUFDOztnQkFwVm9CLFVBQVU7Z0JBQ04sY0FBYztnQkFDaEIsV0FBVztnQkFDVCxjQUFjO2dCQUNiLGNBQWM7Z0JBQ1osZ0JBQWdCO2dCQUNuQixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2QsYUFBYTtnQkFDYixjQUFjOztJQW9PdEM7UUFEQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7Ozt1REFLMUM7SUFpR0Q7UUFEQyxZQUFZLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7OzttRUFHbEQ7SUF6V1Usb0JBQW9CO1FBTGhDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsbzFWQUE0Qzs7U0FFN0MsQ0FBQzt5Q0FzQnFCLFVBQVU7WUFDTixjQUFjO1lBQ2hCLFdBQVc7WUFDVCxjQUFjO1lBQ2IsY0FBYztZQUNaLGdCQUFnQjtZQUNuQixhQUFhO1lBQ2IsYUFBYTtZQUNkLGFBQWE7WUFDYixjQUFjO09BOUIzQixvQkFBb0IsQ0EwV2hDO0lBQUQsMkJBQUM7Q0FBQSxBQTFXRCxJQTBXQztTQTFXWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsUmVmLCBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGaXh0dXJlIH0gZnJvbSAnLi4vbW9kZWxzL2ZpeHR1cmUnO1xuaW1wb3J0IHsgRml4dHVyZVByb2ZpbGUgfSBmcm9tICcuLi9tb2RlbHMvZml4dHVyZS1wcm9maWxlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBGaXh0dXJlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZpeHR1cmUuc2VydmljZSc7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJlc2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJldmlld1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcmV2aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvamVjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9qZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXVpZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRml4dHVyZVBvb2xDcmVhdGVGcm9tRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vZml4dHVyZS1wb29sLWNyZWF0ZS1mcm9tLWZpbGUvZml4dHVyZS1wb29sLWNyZWF0ZS1mcm9tLWZpbGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFwcC1maXh0dXJlLXBvb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vZml4dHVyZS1wb29sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZml4dHVyZS1wb29sLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRml4dHVyZVBvb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHByb2ZpbGVzOiBGaXh0dXJlUHJvZmlsZVtdO1xuICBwdWJsaWMgZmlsdGVyZWRQcm9maWxlczogRml4dHVyZVByb2ZpbGVbXTtcbiAgcHVibGljIGxvYWRpbmdQcm9maWxlcyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBmaXh0dXJlUG9vbDogRml4dHVyZVtdO1xuXG4gIHB1YmxpYyBkbXhDaGFubmVsczogbnVtYmVyW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkRml4dHVyZTogRml4dHVyZTtcbiAgcHVibGljIHNlbGVjdGVkRml4dHVyZVByb2ZpbGU6IEZpeHR1cmVQcm9maWxlO1xuICBwdWJsaWMgc2hvd0NoYW5uZWxOdW1iZXJzID0gZmFsc2U7XG4gIHB1YmxpYyBjaGFubmVsRHJhZ0ZpeHR1cmU6IEZpeHR1cmU7XG4gIHB1YmxpYyBjaGFubmVsRHJhZ09mZnNldDogbnVtYmVyO1xuXG4gIHB1YmxpYyBvbkNsb3NlOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyBzZWFyY2hFeHByZXNzaW9uOiBzdHJpbmc7XG5cbiAgcHVibGljIHVwZGF0aW5nUHJvZmlsZXM6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHVibGljIGZpeHR1cmVTZXJ2aWNlOiBGaXh0dXJlU2VydmljZSxcbiAgICBwcml2YXRlIHV1aWRTZXJ2aWNlOiBVdWlkU2VydmljZSxcbiAgICBwdWJsaWMgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJldmlld1NlcnZpY2U6IFByZXZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmVzZXRTZXJ2aWNlOiBQcmVzZXRTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZVxuICApIHtcbiAgICB0aGlzLmZpeHR1cmVQb29sID0gWy4uLnRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlc107XG5cbiAgICBpZiAodGhpcy5maXh0dXJlUG9vbC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdEZpeHR1cmUodGhpcy5maXh0dXJlUG9vbFswXSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MTI7IGkrKykge1xuICAgICAgdGhpcy5kbXhDaGFubmVscy5wdXNoKDApO1xuICAgIH1cblxuICAgIHRoaXMubG9hZFByb2ZpbGVzKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRQcm9maWxlcygpIHtcbiAgICB0aGlzLmxvYWRpbmdQcm9maWxlcyA9IHRydWU7XG5cbiAgICB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFNlYXJjaFByb2ZpbGVzKCkuc3Vic2NyaWJlKChwcm9maWxlcykgPT4ge1xuICAgICAgdGhpcy5wcm9maWxlcyA9IHByb2ZpbGVzO1xuICAgICAgdGhpcy5maWx0ZXJQcm9maWxlcygpO1xuICAgICAgdGhpcy5sb2FkaW5nUHJvZmlsZXMgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdEZpeHR1cmUoZml4dHVyZTogRml4dHVyZSkge1xuICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlUHJvZmlsZSA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZml4dHVyZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEZpeHR1cmVQcm9maWxlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKGZpeHR1cmUucHJvZmlsZVV1aWQpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkRml4dHVyZSA9IGZpeHR1cmU7XG4gIH1cblxuICBmaWx0ZXJQcm9maWxlcygpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoRXhwcmVzc2lvbiB8fCAhdGhpcy5wcm9maWxlcykge1xuICAgICAgdGhpcy5maWx0ZXJlZFByb2ZpbGVzID0gdGhpcy5wcm9maWxlcztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlcmVkUHJvZmlsZXMgPSBbXTtcblxuICAgIGNvbnN0IGtleXdvcmRzID0gdGhpcy5zZWFyY2hFeHByZXNzaW9uLnNwbGl0KCcgJyk7XG5cbiAgICBmb3IgKGNvbnN0IHByb2ZpbGUgb2YgdGhpcy5wcm9maWxlcykge1xuICAgICAgbGV0IGZvdW5kS2V5d29yZHMgPSAwO1xuXG4gICAgICBmb3IgKGNvbnN0IGtleXdvcmQgb2Yga2V5d29yZHMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByb2ZpbGUudXVpZC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoa2V5d29yZC50b0xvd2VyQ2FzZSgpKSAhPT0gLTEgfHxcbiAgICAgICAgICBwcm9maWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGtleXdvcmQudG9Mb3dlckNhc2UoKSkgIT09IC0xIHx8XG4gICAgICAgICAgcHJvZmlsZS5tYW51ZmFjdHVyZXJOYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihrZXl3b3JkLnRvTG93ZXJDYXNlKCkpICE9PSAtMVxuICAgICAgICApIHtcbiAgICAgICAgICBmb3VuZEtleXdvcmRzKys7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZvdW5kS2V5d29yZHMgPT09IGtleXdvcmRzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkUHJvZmlsZXMucHVzaChwcm9maWxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRGaXh0dXJlKHNlYXJjaFByb2ZpbGU6IEZpeHR1cmVQcm9maWxlKSB7XG4gICAgLy8gTG9hZCB0aGUgcHJvZmlsZSBkZXRhaWxzLCBpZiBub3QgYWxyZWFkeSBkb25lLiBUaGVyZSBpcyBvbmx5IGFcbiAgICAvLyBtaW5pbWFsIHByb2ZpbGUgcGFzc2VkIGZyb20gdGhlIHNlYXJjaC5cbiAgICB0aGlzLmZpeHR1cmVTZXJ2aWNlLmxvYWRQcm9maWxlQnlVdWlkKHNlYXJjaFByb2ZpbGUudXVpZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQoc2VhcmNoUHJvZmlsZS51dWlkKTtcbiAgICAgIGNvbnN0IG5ld0ZpeHR1cmUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmFkZEZpeHR1cmUocHJvZmlsZSwgdGhpcy5maXh0dXJlUG9vbCk7XG4gICAgICB0aGlzLnNlbGVjdEZpeHR1cmUobmV3Rml4dHVyZSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRDb3B5KG9yaWdpbmFsRml4dHVyZTogRml4dHVyZSkge1xuICAgIGNvbnN0IGZpeHR1cmUgPSBuZXcgRml4dHVyZSgpO1xuICAgIGZpeHR1cmUudXVpZCA9IHRoaXMudXVpZFNlcnZpY2UuZ2V0VXVpZCgpO1xuICAgIGZpeHR1cmUucHJvZmlsZVV1aWQgPSBvcmlnaW5hbEZpeHR1cmUucHJvZmlsZVV1aWQ7XG4gICAgZml4dHVyZS5uYW1lID0gb3JpZ2luYWxGaXh0dXJlLm5hbWU7XG4gICAgZml4dHVyZS5tb2RlU2hvcnROYW1lID0gb3JpZ2luYWxGaXh0dXJlLm1vZGVTaG9ydE5hbWU7XG4gICAgZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgPSBvcmlnaW5hbEZpeHR1cmUuZG14Rmlyc3RDaGFubmVsO1xuICAgIGZpeHR1cmUuZG14VW5pdmVyc2VVdWlkID0gb3JpZ2luYWxGaXh0dXJlLmRteFVuaXZlcnNlVXVpZDtcblxuICAgIHRoaXMuZml4dHVyZVBvb2wucHVzaChmaXh0dXJlKTtcbiAgICB0aGlzLnNlbGVjdEZpeHR1cmUoZml4dHVyZSk7XG4gIH1cblxuICByZW1vdmVGaXh0dXJlKGZpeHR1cmU6IEZpeHR1cmUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZml4dHVyZVBvb2wubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmZpeHR1cmVQb29sW2ldLnV1aWQgPT09IGZpeHR1cmUudXVpZCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpeHR1cmUgPT09IHRoaXMuZml4dHVyZVBvb2xbaV0pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdEZpeHR1cmUodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpeHR1cmVQb29sLnNwbGljZShpLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRml4dHVyZSAmJiB0aGlzLmZpeHR1cmVQb29sICYmIHRoaXMuZml4dHVyZVBvb2wubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RGaXh0dXJlKCh0aGlzLnNlbGVjdGVkRml4dHVyZSA9IHRoaXMuZml4dHVyZVBvb2xbMF0pKTtcbiAgICB9XG5cbiAgICAvLyByZW1vdmUgdW51c2VkIHByb2ZpbGVzXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QuZml4dHVyZVByb2ZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgcHJvZmlsZVVzZWQgPSBmYWxzZTtcblxuICAgICAgZm9yIChjb25zdCBmaXh0dXJlSW5Qb29sIG9mIHRoaXMuZml4dHVyZVBvb2wpIHtcbiAgICAgICAgaWYgKGZpeHR1cmVJblBvb2wucHJvZmlsZVV1aWQgPT09IHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlUHJvZmlsZXNbaV0udXVpZCkge1xuICAgICAgICAgIHByb2ZpbGVVc2VkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXByb2ZpbGVVc2VkKSB7XG4gICAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlUHJvZmlsZXMuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoYW5uZWxPY2N1cGllZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZVBvb2wpIHtcbiAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldE1vZGVCeUZpeHR1cmUodGhpcy5maXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKGZpeHR1cmUucHJvZmlsZVV1aWQpLCBmaXh0dXJlKTtcblxuICAgICAgaWYgKGluZGV4ID49IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICYmIGluZGV4IDwgZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgKyBtb2RlLmNoYW5uZWxzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjaGFubmVsT2NjdXBpZWRTdGFydChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZVBvb2wpIHtcbiAgICAgIGlmIChpbmRleCA9PT0gZml4dHVyZS5kbXhGaXJzdENoYW5uZWwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2hhbm5lbE9jY3VwaWVkRW5kKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgdGhpcy5maXh0dXJlUG9vbCkge1xuICAgICAgY29uc3QgbW9kZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUJ5Rml4dHVyZSh0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQoZml4dHVyZS5wcm9maWxlVXVpZCksIGZpeHR1cmUpO1xuXG4gICAgICBpZiAoaW5kZXggPT09IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICsgbW9kZS5jaGFubmVscy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNoYW5uZWxPdmVybGFwcGVkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBsZXQgb2NjdXBpZWRGaXh0dXJlOiBGaXh0dXJlO1xuXG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZVBvb2wpIHtcbiAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldE1vZGVCeUZpeHR1cmUodGhpcy5maXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKGZpeHR1cmUucHJvZmlsZVV1aWQpLCBmaXh0dXJlKTtcblxuICAgICAgaWYgKGluZGV4ID49IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICYmIGluZGV4IDwgZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgKyBtb2RlLmNoYW5uZWxzLmxlbmd0aCkge1xuICAgICAgICBpZiAob2NjdXBpZWRGaXh0dXJlKSB7XG4gICAgICAgICAgaWYgKG9jY3VwaWVkRml4dHVyZS5kbXhGaXJzdENoYW5uZWwgIT09IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsIHx8IG9jY3VwaWVkRml4dHVyZS5tb2RlU2hvcnROYW1lICE9PSBmaXh0dXJlLm1vZGVTaG9ydE5hbWUpIHtcbiAgICAgICAgICAgIC8vIGZpeHR1cmVzIGFyZSBhbGxvd2VkIHRvIG92ZXJsYXAsIGlmIHRoZXkgc3RhcnQgYXQgdGhlIHNhbWUgY2hhbm5lbCBhbmRcbiAgICAgICAgICAgIC8vIHVzZSB0aGUgc2FtZSBtb2RlLiBvdGhlcndpc2UgaXQncyBub3QgYWxsb3dlZC5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvY2N1cGllZEZpeHR1cmUgPSBmaXh0dXJlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2hhbm5lbE1vdXNlRG93bihldmVudDogYW55KSB7XG4gICAgLy8gc3RhcnQgZHJhZ2dpbmdcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gZXZlbnQudGFyZ2V0LmRhdGFzZXQuaW5kZXg7XG4gICAgbGV0IG5ld1NlbGVjdGVkRml4dHVyZTogRml4dHVyZTtcblxuICAgIC8vIGZpbmQgYSBkcmFnZ2luZyBmaXh0dXJlIGFuZCBzZWxlY3QgaXQsIGJ1dCBkb24ndCBjaGFuZ2UgdGhlIHNlbGVjdGlvbiwgaWYgdGhlXG4gICAgLy8gY3VycmVudGx5IHNlbGVjdGVkIGZpeHR1cmUgbWlnaHQgYWxzbyBiZSBzZWxlY3RlZCAob24gb3ZlcmxhcHBlZCBmaXh0dXJlcylcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgdGhpcy5maXh0dXJlUG9vbCkge1xuICAgICAgY29uc3QgbW9kZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUJ5Rml4dHVyZSh0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQoZml4dHVyZS5wcm9maWxlVXVpZCksIGZpeHR1cmUpO1xuXG4gICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+PSBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCAmJiBzZWxlY3RlZEluZGV4IDw9IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICsgbW9kZS5jaGFubmVscy5sZW5ndGggLSAxKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRml4dHVyZSA9PT0gZml4dHVyZSkge1xuICAgICAgICAgIG5ld1NlbGVjdGVkRml4dHVyZSA9IGZpeHR1cmU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW5ld1NlbGVjdGVkRml4dHVyZSkge1xuICAgICAgICAgIG5ld1NlbGVjdGVkRml4dHVyZSA9IGZpeHR1cmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmV3U2VsZWN0ZWRGaXh0dXJlKSB7XG4gICAgICBpZiAobmV3U2VsZWN0ZWRGaXh0dXJlICE9PSB0aGlzLnNlbGVjdGVkRml4dHVyZSkge1xuICAgICAgICB0aGlzLnNlbGVjdEZpeHR1cmUobmV3U2VsZWN0ZWRGaXh0dXJlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGFubmVsRHJhZ0ZpeHR1cmUgPSBuZXdTZWxlY3RlZEZpeHR1cmU7XG4gICAgICB0aGlzLmNoYW5uZWxEcmFnT2Zmc2V0ID0gc2VsZWN0ZWRJbmRleCAtIG5ld1NlbGVjdGVkRml4dHVyZS5kbXhGaXJzdENoYW5uZWw7XG4gICAgfVxuICB9XG5cbiAgY2hhbm5lbFNlbGVjdGVkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGaXh0dXJlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ID49IHRoaXMuc2VsZWN0ZWRGaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCkge1xuICAgICAgY29uc3QgbW9kZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUJ5Rml4dHVyZShcbiAgICAgICAgdGhpcy5maXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKHRoaXMuc2VsZWN0ZWRGaXh0dXJlLnByb2ZpbGVVdWlkKSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpeHR1cmVcbiAgICAgICk7XG5cbiAgICAgIGlmIChpbmRleCA8IHRoaXMuc2VsZWN0ZWRGaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCArIG1vZGUuY2hhbm5lbHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIHJlZ2lzdGVyIG1vdXNlIHVwIGdsb2JhbGx5IChlLmcuIGFsc28gb3V0c2lkZSB0aGUgRE1YIG1hcHBpbmcpXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZXVwJywgWyckZXZlbnQnXSlcbiAgbW91c2VVcChldmVudDogYW55KSB7XG4gICAgLy8gZmluaXNoIGRyYWdnaW5nXG4gICAgdGhpcy5jaGFubmVsRHJhZ0ZpeHR1cmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jaGFubmVsRHJhZ09mZnNldCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNoYW5uZWxNb3VzZU92ZXIoZXZlbnQ6IGFueSkge1xuICAgIC8vIHBlcmZvcm0gZHJhZ2dpbmdcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gZXZlbnQudGFyZ2V0LmRhdGFzZXQuaW5kZXg7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmNoYW5uZWxEcmFnRml4dHVyZSAmJlxuICAgICAgc2VsZWN0ZWRJbmRleCAtIHRoaXMuY2hhbm5lbERyYWdPZmZzZXQgPj0gMCAmJlxuICAgICAgc2VsZWN0ZWRJbmRleCAtXG4gICAgICAgIHRoaXMuY2hhbm5lbERyYWdPZmZzZXQgK1xuICAgICAgICB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldE1vZGVCeUZpeHR1cmUoXG4gICAgICAgICAgdGhpcy5maXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKHRoaXMuY2hhbm5lbERyYWdGaXh0dXJlLnByb2ZpbGVVdWlkKSxcbiAgICAgICAgICB0aGlzLmNoYW5uZWxEcmFnRml4dHVyZVxuICAgICAgICApLmNoYW5uZWxzLmxlbmd0aCAtXG4gICAgICAgIDEgPD1cbiAgICAgICAgNTExXG4gICAgKSB7XG4gICAgICB0aGlzLmNoYW5uZWxEcmFnRml4dHVyZS5kbXhGaXJzdENoYW5uZWwgPSBzZWxlY3RlZEluZGV4IC0gdGhpcy5jaGFubmVsRHJhZ09mZnNldDtcbiAgICB9XG4gIH1cblxuICBvaygpIHtcbiAgICAvLyBkb24ndCBhbGxvdyBPSyBpZiBvdmVybGFwcGluZyBmaXh0dXJlcyBleGlzdFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kbXhDaGFubmVscy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuY2hhbm5lbE92ZXJsYXBwZWQoaSkpIHtcbiAgICAgICAgY29uc3QgbXNnID0gJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5jaGFubmVsLW9jY3VwaWVkJztcbiAgICAgICAgY29uc3QgdGl0bGUgPSAnZGVzaWduZXIuZml4dHVyZS1wb29sLmNoYW5uZWwtb2NjdXBpZWQtdGl0bGUnO1xuXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoW21zZywgdGl0bGVdKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5lcnJvcihyZXN1bHRbbXNnXSwgcmVzdWx0W3RpdGxlXSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QuZml4dHVyZXMgPSB0aGlzLmZpeHR1cmVQb29sO1xuXG4gICAgdGhpcy5maXh0dXJlU2VydmljZS51cGRhdGVDYWNoZWRGaXh0dXJlcygpO1xuICAgIHRoaXMucHJlc2V0U2VydmljZS5yZW1vdmVEZWxldGVkRml4dHVyZXMoKTtcbiAgICB0aGlzLnByZXZpZXdTZXJ2aWNlLnVwZGF0ZUZpeHR1cmVTZXR1cCgpO1xuICAgIHRoaXMucHJlc2V0U2VydmljZS51cGRhdGVGaXh0dXJlU2VsZWN0aW9uKCk7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLmZpeHR1cmVTZWxlY3Rpb25DaGFuZ2VkLm5leHQoKTtcbiAgICB0aGlzLnByZXNldFNlcnZpY2UucHJldmlld0xpdmUoKTtcblxuICAgIHRoaXMub25DbG9zZS5uZXh0KDEpO1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5vbkNsb3NlLm5leHQoMik7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIHVwZGF0ZVByb2ZpbGVzKCkge1xuICAgIHRoaXMudXBkYXRpbmdQcm9maWxlcyA9IHRydWU7XG5cbiAgICAvLyBUT0RPXG4gICAgdGhpcy5maXh0dXJlU2VydmljZVxuICAgICAgLnVwZGF0ZVByb2ZpbGVzKClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGluZ1Byb2ZpbGVzID0gZmFsc2U7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPSAnZGVzaWduZXIuZml4dHVyZS1wb29sLnByb2ZpbGVzLXVwZGF0ZS1lcnJvcic7XG4gICAgICAgICAgY29uc3QgdGl0bGUgPSAnZGVzaWduZXIuZml4dHVyZS1wb29sLnByb2ZpbGVzLXVwZGF0ZS1lcnJvci10aXRsZSc7XG5cbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KFttc2csIHRpdGxlXSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5lcnJvcihyZXN1bHRbbXNnXSwgcmVzdWx0W3RpdGxlXSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZFByb2ZpbGVzKCk7XG5cbiAgICAgICAgY29uc3QgbXNnID0gJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5wcm9maWxlcy11cGRhdGVkJztcbiAgICAgICAgY29uc3QgdGl0bGUgPSAnZGVzaWduZXIuZml4dHVyZS1wb29sLnByb2ZpbGVzLXVwZGF0ZWQtdGl0bGUnO1xuXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoW21zZywgdGl0bGVdKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zdWNjZXNzKHJlc3VsdFttc2ddLCByZXN1bHRbdGl0bGVdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUZpeHR1cmVGcm9tUHJvZmlsZUZpbGUoKSB7XG4gICAgY29uc3QgYnNNb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3coRml4dHVyZVBvb2xDcmVhdGVGcm9tRmlsZUNvbXBvbmVudCwgeyBrZXlib2FyZDogdHJ1ZSwgaWdub3JlQmFja2Ryb3BDbGljazogZmFsc2UgfSk7XG4gICAgKGJzTW9kYWxSZWYuY29udGVudCBhcyBGaXh0dXJlUG9vbENyZWF0ZUZyb21GaWxlQ29tcG9uZW50KS5vbkNsb3NlLnN1YnNjcmliZSgocHJvZmlsZTogRml4dHVyZVByb2ZpbGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld0ZpeHR1cmUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmFkZEZpeHR1cmUocHJvZmlsZSwgdGhpcy5maXh0dXJlUG9vbCk7XG4gICAgICB0aGlzLnNlbGVjdEZpeHR1cmUobmV3Rml4dHVyZSk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogYW55KSB7XG4gICAgdGhpcy5vaygpO1xuICB9XG59XG4iXX0=
@@ -1,26 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Component } from '@angular/core';
3
- import { IntroService } from '../services/intro.service';
4
- var IntroComponent = /** @class */ (function () {
5
- function IntroComponent(introService) {
6
- this.introService = introService;
7
- }
8
- IntroComponent.prototype.ngOnInit = function () { };
9
- IntroComponent.prototype.close = function () {
10
- this.introService.setShowIntro(false);
11
- };
12
- IntroComponent.ctorParameters = function () { return [
13
- { type: IntroService }
14
- ]; };
15
- IntroComponent = __decorate([
16
- Component({
17
- selector: 'lib-app-intro',
18
- template: "<div\n *ngIf=\"introService.showIntro\"\n class=\"card border-secondary h-100 panel card-intro-active\"\n [ngStyle]=\"{\n top: 'calc(' + introService.positionTopPercentage + '% - 150px)',\n left: 'calc(' + introService.positionLeftPercentage + '% - 200px)'\n }\"\n>\n <div class=\"card-header d-flex\">\n <div>\n <i class=\"fa fa-info-circle mr-1\" aria-hidden=\"true\"></i>\n {{ 'designer.intro.title-' + introService.activeStep | translate }}\n </div>\n <div class=\"ml-auto\">\n <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"close(); (false)\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></a>\n </div>\n </div>\n\n <div class=\"card-body h-100\">\n <p>{{ 'designer.intro.step-' + introService.activeStep | translate }}</p>\n </div>\n\n <div class=\"card-footer\">\n <button *ngIf=\"introService.activeStep != 'start'\" type=\"button\" class=\"btn btn-secondary\" (click)=\"introService.back()\">\n <i class=\"fa fa-chevron-left\" aria-hidden=\"true\"></i> {{ 'designer.intro.back' | translate }}\n </button>\n <button *ngIf=\"introService.activeStep != 'finish'\" type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"introService.next()\">\n {{ 'designer.intro.next' | translate }} <i class=\"fa fa-chevron-right\" aria-hidden=\"true\"></i>\n </button>\n <button *ngIf=\"introService.activeStep == 'finish'\" type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"close()\">\n {{ 'designer.intro.close' | translate }}\n </button>\n </div>\n</div>\n",
19
- styles: [".card{position:absolute;width:400px;height:350px!important;z-index:999999}"]
20
- }),
21
- __metadata("design:paramtypes", [IntroService])
22
- ], IntroComponent);
23
- return IntroComponent;
24
- }());
25
- export { IntroComponent };
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50cm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJvY2tldHNob3cvZGVzaWduZXIvIiwic291cmNlcyI6WyJsaWIvaW50cm8vaW50cm8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU96RDtJQUNFLHdCQUFtQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUFHLENBQUM7SUFFakQsaUNBQVEsR0FBUixjQUFZLENBQUM7SUFFYiw4QkFBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7Z0JBTmdDLFlBQVk7O0lBRGxDLGNBQWM7UUFMMUIsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGVBQWU7WUFDekIsaWpEQUFxQzs7U0FFdEMsQ0FBQzt5Q0FFaUMsWUFBWTtPQURsQyxjQUFjLENBUTFCO0lBQUQscUJBQUM7Q0FBQSxBQVJELElBUUM7U0FSWSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludHJvU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ludHJvLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXBwLWludHJvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ludHJvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW50cm8uY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJbnRyb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpbnRyb1NlcnZpY2U6IEludHJvU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pbnRyb1NlcnZpY2Uuc2V0U2hvd0ludHJvKGZhbHNlKTtcbiAgfVxufVxuIl19
@@ -1,42 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { ChangeDetectorRef, Component, OnInit } from '@angular/core';
3
- import { PresetService } from '../services/preset.service';
4
- import { ProjectService } from '../services/project.service';
5
- var MasterDimmerComponent = /** @class */ (function () {
6
- function MasterDimmerComponent(projectService, changeDetectorRef, presetService) {
7
- this.projectService = projectService;
8
- this.changeDetectorRef = changeDetectorRef;
9
- this.presetService = presetService;
10
- }
11
- MasterDimmerComponent.prototype.ngOnInit = function () { };
12
- MasterDimmerComponent.prototype.setValue = function (value) {
13
- if (isNaN(value)) {
14
- return;
15
- }
16
- if (value < 0 || value > 1) {
17
- return;
18
- }
19
- this.projectService.project.masterDimmerValue = value;
20
- this.changeDetectorRef.detectChanges();
21
- this.presetService.previewLive();
22
- };
23
- MasterDimmerComponent.prototype.getValue = function () {
24
- return Math.round(this.projectService.project.masterDimmerValue * 100 * 100) / 100;
25
- };
26
- MasterDimmerComponent.ctorParameters = function () { return [
27
- { type: ProjectService },
28
- { type: ChangeDetectorRef },
29
- { type: PresetService }
30
- ]; };
31
- MasterDimmerComponent = __decorate([
32
- Component({
33
- selector: 'lib-app-master-dimmer',
34
- template: "<div class=\"card border-secondary h-100\">\n <!-- For larger screens vertically -->\n <div class=\"d-none d-md-flex card-body h-100\" style=\"flex-direction: column\">\n <div class=\"mb-3 w-100 d-flex\">\n <i class=\"icon-dimmer m-auto\" style=\"font-size: 2em\"></i>\n </div>\n\n <div class=\"mb-4 w-100 d-flex\">\n <input\n class=\"mx-auto\"\n type=\"text\"\n [ngModel]=\"getValue()\"\n (ngModelChange)=\"setValue($event / 100)\"\n style=\"width: 42px; height: 23px; text-align: center; font-size: 12px; font-family: monospace\"\n />\n </div>\n\n <div class=\"h-100 w-100 d-flex\">\n <mv-slider\n class=\"mx-auto\"\n [value]=\"projectService?.project?.masterDimmerValue\"\n (change)=\"setValue($event.newValue)\"\n [orientation]=\"'vertical'\"\n [reversed]=\"true\"\n style=\"height: 100%\"\n [tooltip]=\"'hide'\"\n [min]=\"0\"\n [max]=\"1\"\n [step]=\"0.001\"\n ></mv-slider>\n </div>\n </div>\n\n <!-- For smaller screens horizontally -->\n <div class=\"d-flex d-md-none card-body h-100\">\n <div class=\"mb-3 d-flex my-auto\">\n <i class=\"icon-dimmer m-auto\" style=\"font-size: 2em\"></i>\n </div>\n\n <div class=\"h-100 w-100 d-flex my-auto mx-3\">\n <mv-slider\n class=\"mx-auto\"\n [value]=\"projectService?.project?.masterDimmerValue\"\n (change)=\"setValue($event.newValue)\"\n [orientation]=\"'horizontal'\"\n style=\"width: 100%\"\n [tooltip]=\"'hide'\"\n [min]=\"0\"\n [max]=\"1\"\n [step]=\"0.001\"\n ></mv-slider>\n </div>\n\n <div class=\"mb-4 d-flex my-auto\">\n <input\n class=\"mx-auto\"\n type=\"text\"\n [ngModel]=\"getValue()\"\n (ngModelChange)=\"setValue($event / 100)\"\n style=\"width: 42px; height: 23px; text-align: center; font-size: 12px; font-family: monospace\"\n />\n </div>\n </div>\n</div>\n",
35
- styles: [""]
36
- }),
37
- __metadata("design:paramtypes", [ProjectService, ChangeDetectorRef, PresetService])
38
- ], MasterDimmerComponent);
39
- return MasterDimmerComponent;
40
- }());
41
- export { MasterDimmerComponent };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLWRpbW1lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Acm9ja2V0c2hvdy9kZXNpZ25lci8iLCJzb3VyY2VzIjpbImxpYi9tYXN0ZXItZGltbWVyL21hc3Rlci1kaW1tZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBTzdEO0lBQ0UsK0JBQW1CLGNBQThCLEVBQVUsaUJBQW9DLEVBQVUsYUFBNEI7UUFBbEgsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQUcsQ0FBQztJQUV6SSx3Q0FBUSxHQUFSLGNBQVksQ0FBQztJQUViLHdDQUFRLEdBQVIsVUFBUyxLQUFVO1FBQ2pCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLE9BQU87U0FDUjtRQUVELElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsd0NBQVEsR0FBUjtRQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3JGLENBQUM7O2dCQXBCa0MsY0FBYztnQkFBNkIsaUJBQWlCO2dCQUF5QixhQUFhOztJQUQxSCxxQkFBcUI7UUFMakMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLHVCQUF1QjtZQUNqQyxvL0RBQTZDOztTQUU5QyxDQUFDO3lDQUVtQyxjQUFjLEVBQTZCLGlCQUFpQixFQUF5QixhQUFhO09BRDFILHFCQUFxQixDQXNCakM7SUFBRCw0QkFBQztDQUFBLEFBdEJELElBc0JDO1NBdEJZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ByZXNldC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFwcC1tYXN0ZXItZGltbWVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hc3Rlci1kaW1tZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXN0ZXItZGltbWVyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWFzdGVyRGltbWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHByb2plY3RTZXJ2aWNlOiBQcm9qZWN0U2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcHJlc2V0U2VydmljZTogUHJlc2V0U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgc2V0VmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5tYXN0ZXJEaW1tZXJWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMucHJlc2V0U2VydmljZS5wcmV2aWV3TGl2ZSgpO1xuICB9XG5cbiAgZ2V0VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QubWFzdGVyRGltbWVyVmFsdWUgKiAxMDAgKiAxMDApIC8gMTAwO1xuICB9XG59XG4iXX0=
@@ -1,11 +0,0 @@
1
- var CachedFixtureCapability = /** @class */ (function () {
2
- function CachedFixtureCapability() {
3
- // the wheel slots, if available
4
- this.wheelSlots = [];
5
- // is this a color wheel?
6
- this.wheelIsColor = false;
7
- }
8
- return CachedFixtureCapability;
9
- }());
10
- export { CachedFixtureCapability };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkLWZpeHR1cmUtY2FwYWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9jYWNoZWQtZml4dHVyZS1jYXBhYmlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBO0lBQUE7UUFTRSxnQ0FBZ0M7UUFDaEMsZUFBVSxHQUF1QixFQUFFLENBQUM7UUFFcEMseUJBQXlCO1FBQ3pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBR3ZCLENBQUM7SUFBRCw4QkFBQztBQUFELENBQUMsQUFoQkQsSUFnQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaXh0dXJlQ2FwYWJpbGl0eSB9IGZyb20gJy4vZml4dHVyZS1jYXBhYmlsaXR5JztcbmltcG9ydCB7IEZpeHR1cmVXaGVlbCB9IGZyb20gJy4vZml4dHVyZS13aGVlbCc7XG5pbXBvcnQgeyBGaXh0dXJlV2hlZWxTbG90IH0gZnJvbSAnLi9maXh0dXJlLXdoZWVsLXNsb3QnO1xuXG5leHBvcnQgY2xhc3MgQ2FjaGVkRml4dHVyZUNhcGFiaWxpdHkge1xuICBjYXBhYmlsaXR5OiBGaXh0dXJlQ2FwYWJpbGl0eTtcblxuICAvLyB0aGUgd2hlZWwgbmFtZXMsIGlmIGF2YWlsYWJsZVxuICB3aGVlbE5hbWU6IHN0cmluZztcblxuICAvLyB0aGUgd2hlZWwsIGlmIGF2YWlsYWJsZVxuICB3aGVlbDogRml4dHVyZVdoZWVsO1xuXG4gIC8vIHRoZSB3aGVlbCBzbG90cywgaWYgYXZhaWxhYmxlXG4gIHdoZWVsU2xvdHM6IEZpeHR1cmVXaGVlbFNsb3RbXSA9IFtdO1xuXG4gIC8vIGlzIHRoaXMgYSBjb2xvciB3aGVlbD9cbiAgd2hlZWxJc0NvbG9yID0gZmFsc2U7XG5cbiAgY2VudGVyVmFsdWU6IG51bWJlcjtcbn1cbiJdfQ==
@@ -1,9 +0,0 @@
1
- var CachedFixtureChannel = /** @class */ (function () {
2
- function CachedFixtureChannel() {
3
- // all channel capabilities
4
- this.capabilities = [];
5
- }
6
- return CachedFixtureChannel;
7
- }());
8
- export { CachedFixtureChannel };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkLWZpeHR1cmUtY2hhbm5lbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9jYWNoZWQtZml4dHVyZS1jaGFubmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBO0lBQUE7UUFPRSwyQkFBMkI7UUFDM0IsaUJBQVksR0FBOEIsRUFBRSxDQUFDO0lBVS9DLENBQUM7SUFBRCwyQkFBQztBQUFELENBQUMsQUFsQkQsSUFrQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWNoZWRGaXh0dXJlQ2FwYWJpbGl0eSB9IGZyb20gJy4vY2FjaGVkLWZpeHR1cmUtY2FwYWJpbGl0eSc7XG5pbXBvcnQgeyBGaXh0dXJlQ2hhbm5lbCB9IGZyb20gJy4vZml4dHVyZS1jaGFubmVsJztcbmltcG9ydCB7IEZpeHR1cmVXaGVlbCB9IGZyb20gJy4vZml4dHVyZS13aGVlbCc7XG5cbmV4cG9ydCBjbGFzcyBDYWNoZWRGaXh0dXJlQ2hhbm5lbCB7XG4gIC8vIHRoZSBjb3JyZXNwb25kaW5nIGNoYW5uZWxcbiAgY2hhbm5lbDogRml4dHVyZUNoYW5uZWw7XG5cbiAgLy8gdGhlIG5hbWUgb2YgdGhlIGNoYW5uZWxcbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8vIGFsbCBjaGFubmVsIGNhcGFiaWxpdGllc1xuICBjYXBhYmlsaXRpZXM6IENhY2hlZEZpeHR1cmVDYXBhYmlsaXR5W10gPSBbXTtcblxuICAvLyBkZWZhdWx0IHZhbHVlXG4gIGRlZmF1bHRWYWx1ZTogbnVtYmVyO1xuXG4gIC8vIG1heGltdW0gdmFsdWVcbiAgbWF4VmFsdWU6IG51bWJlcjtcblxuICAvLyBhIGNvbG9yIHdoZWVsLCBpZiBhdmFpbGFibGVcbiAgY29sb3JXaGVlbDogRml4dHVyZVdoZWVsO1xufVxuIl19