@edm-sdui/sdui 1.0.69 → 1.0.70

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 (301) hide show
  1. package/edm-sdui-sdui-1.0.70.tgz +0 -0
  2. package/fesm2022/edm-sdui-sdui.mjs +1360 -516
  3. package/fesm2022/edm-sdui-sdui.mjs.map +1 -1
  4. package/package.json +6 -7
  5. package/types/edm-sdui-sdui.d.ts +1560 -0
  6. package/types/edm-sdui-sdui.d.ts.map +1 -0
  7. package/edm-sdui-sdui-1.0.69.tgz +0 -0
  8. package/edm-sdui-sdui.d.ts.map +0 -1
  9. package/esm2022/edm-sdui-sdui.mjs +0 -5
  10. package/esm2022/lib/components/navigation-controls/navigation-controls.component.mjs +0 -27
  11. package/esm2022/lib/components/uicomponent/button/button.component.mjs +0 -56
  12. package/esm2022/lib/components/uicomponent/column/column.component.mjs +0 -27
  13. package/esm2022/lib/components/uicomponent/image/image.component.mjs +0 -61
  14. package/esm2022/lib/components/uicomponent/image/ranking-svg.mjs +0 -186
  15. package/esm2022/lib/components/uicomponent/label/label.component.mjs +0 -97
  16. package/esm2022/lib/components/uicomponent/media-type/media-type.component.mjs +0 -71
  17. package/esm2022/lib/components/uicomponent/modal/modal.component.mjs +0 -30
  18. package/esm2022/lib/components/uicomponent/picker/picker.component.mjs +0 -56
  19. package/esm2022/lib/components/uicomponent/picker-item/picker-item.component.mjs +0 -34
  20. package/esm2022/lib/components/uicomponent/profile-button/profile-button.component.mjs +0 -115
  21. package/esm2022/lib/components/uicomponent/progress-bar/progress-bar.component.mjs +0 -42
  22. package/esm2022/lib/components/uicomponent/row/row.component.mjs +0 -22
  23. package/esm2022/lib/components/uicomponent/row-divisor/row-divisor.component.mjs +0 -22
  24. package/esm2022/lib/components/uicomponent/scrollable-column/scrollable-column.component.mjs +0 -33
  25. package/esm2022/lib/components/uicomponent/scrollable-row/scrollable-row.component.mjs +0 -131
  26. package/esm2022/lib/components/uicomponent/search-bar/search-bar.component.mjs +0 -102
  27. package/esm2022/lib/components/uicomponent/search-bar dismiss/search-bar-dismiss.component.mjs +0 -139
  28. package/esm2022/lib/components/uicomponent/space/space.component.mjs +0 -20
  29. package/esm2022/lib/components/uicomponent/tag/tag.component.mjs +0 -59
  30. package/esm2022/lib/components/uicomponent/tags-row/tag/tag.component.mjs +0 -282
  31. package/esm2022/lib/components/uicomponent/tags-row/tags-row.component.mjs +0 -178
  32. package/esm2022/lib/components/uicomponent/uicomponent.component.mjs +0 -52
  33. package/esm2022/lib/components/uicomponent/zstack/zstack.component.mjs +0 -23
  34. package/esm2022/lib/components/uilayout/centered-content-layout/centered-content-layout.component.mjs +0 -24
  35. package/esm2022/lib/components/uilayout/fab/fab.component.mjs +0 -42
  36. package/esm2022/lib/components/uilayout/single-column-layout/single-column-layout.component.mjs +0 -22
  37. package/esm2022/lib/components/uilayout/uinavigation/uinavigation.component.mjs +0 -15
  38. package/esm2022/lib/components/uiscreen/uiscreen.component.mjs +0 -31
  39. package/esm2022/lib/core/services/font-size-mapping.service.mjs +0 -30
  40. package/esm2022/lib/core/services/modal.service.mjs +0 -30
  41. package/esm2022/lib/core/services/scroll-spy.service.mjs +0 -102
  42. package/esm2022/lib/core/services/translation.service.mjs +0 -53
  43. package/esm2022/lib/core/services/ui-action-handlers.service.mjs +0 -17
  44. package/esm2022/lib/core/services/ui-action.service.mjs +0 -112
  45. package/esm2022/lib/core/services/uiscreen.service.mjs +0 -205
  46. package/esm2022/lib/core/tokens/sdui-config.token.mjs +0 -4
  47. package/esm2022/lib/core/uicomposition/enums/uicomponent-type.mjs +0 -36
  48. package/esm2022/lib/core/uicomposition/enums/uiplatform-type.mjs +0 -7
  49. package/esm2022/lib/core/uicomposition/enums/uiscene.mjs +0 -5
  50. package/esm2022/lib/core/uicomposition/enums/uiscreen-container-type.mjs +0 -6
  51. package/esm2022/lib/core/uicomposition/enums/uiscreen-identifier.mjs +0 -6
  52. package/esm2022/lib/core/uicomposition/mapping/component-mapping.mjs +0 -36
  53. package/esm2022/lib/core/uicomposition/models/uicentered-content-layout.mjs +0 -2
  54. package/esm2022/lib/core/uicomposition/models/uicomponent.mjs +0 -2
  55. package/esm2022/lib/core/uicomposition/models/uielement.mjs +0 -2
  56. package/esm2022/lib/core/uicomposition/models/uilayout.mjs +0 -2
  57. package/esm2022/lib/core/uicomposition/models/uinavigation.mjs +0 -2
  58. package/esm2022/lib/core/uicomposition/models/uiscreen-config.mjs +0 -2
  59. package/esm2022/lib/core/uicomposition/models/uiscreen.mjs +0 -2
  60. package/esm2022/lib/core/uicomposition/models/uisingle-column-layout.mjs +0 -2
  61. package/esm2022/lib/core/uicomposition/models/uitag.mjs +0 -2
  62. package/esm2022/lib/core/uicomposition/models/uiview.mjs +0 -2
  63. package/esm2022/lib/core/uitheme/enums/uiaction-type.mjs +0 -17
  64. package/esm2022/lib/core/uitheme/enums/uialignment-type.mjs +0 -7
  65. package/esm2022/lib/core/uitheme/enums/uiaspect-type.mjs +0 -6
  66. package/esm2022/lib/core/uitheme/enums/uiasset.mjs +0 -437
  67. package/esm2022/lib/core/uitheme/enums/uicolor.mjs +0 -157
  68. package/esm2022/lib/core/uitheme/enums/uicontent-type.mjs +0 -11
  69. package/esm2022/lib/core/uitheme/enums/uidimension.mjs +0 -49
  70. package/esm2022/lib/core/uitheme/enums/uijustify.mjs +0 -9
  71. package/esm2022/lib/core/uitheme/enums/uipadding-level.mjs +0 -12
  72. package/esm2022/lib/core/uitheme/enums/uipresentation-style.mjs +0 -7
  73. package/esm2022/lib/core/uitheme/enums/uiradius-level.mjs +0 -10
  74. package/esm2022/lib/core/uitheme/enums/uishadow-blur-radius.mjs +0 -5
  75. package/esm2022/lib/core/uitheme/enums/uishadow-offset.mjs +0 -5
  76. package/esm2022/lib/core/uitheme/enums/uisize.mjs +0 -22
  77. package/esm2022/lib/core/uitheme/enums/uispacing-level.mjs +0 -10
  78. package/esm2022/lib/core/uitheme/enums/uitext-style.mjs +0 -15
  79. package/esm2022/lib/core/uitheme/mapping/alignment-mapping.mjs +0 -7
  80. package/esm2022/lib/core/uitheme/mapping/aspect-mapping.mjs +0 -6
  81. package/esm2022/lib/core/uitheme/mapping/asset-mapping.mjs +0 -437
  82. package/esm2022/lib/core/uitheme/mapping/color-mapping.mjs +0 -157
  83. package/esm2022/lib/core/uitheme/mapping/dimension-mapping.mjs +0 -51
  84. package/esm2022/lib/core/uitheme/mapping/justify-mapping.mjs +0 -9
  85. package/esm2022/lib/core/uitheme/mapping/pad-mapping.mjs +0 -12
  86. package/esm2022/lib/core/uitheme/mapping/radius-mapping.mjs +0 -10
  87. package/esm2022/lib/core/uitheme/mapping/shadow-mapping.mjs +0 -9
  88. package/esm2022/lib/core/uitheme/mapping/size-mapping.mjs +0 -26
  89. package/esm2022/lib/core/uitheme/mapping/space-mapping.mjs +0 -10
  90. package/esm2022/lib/core/uitheme/mapping/text-style-mapping.mjs +0 -33
  91. package/esm2022/lib/core/uitheme/models/uiaction.mjs +0 -2
  92. package/esm2022/lib/core/uitheme/models/uialignment.mjs +0 -2
  93. package/esm2022/lib/core/uitheme/models/uibackground.mjs +0 -2
  94. package/esm2022/lib/core/uitheme/models/uicontent-inset.mjs +0 -2
  95. package/esm2022/lib/core/uitheme/models/uihover.mjs +0 -2
  96. package/esm2022/lib/core/uitheme/models/uipadding.mjs +0 -2
  97. package/esm2022/lib/core/uitheme/models/uiradius.mjs +0 -2
  98. package/esm2022/lib/core/uitheme/models/uishadow.mjs +0 -2
  99. package/esm2022/lib/core/uitheme/models/uispacing.mjs +0 -2
  100. package/esm2022/lib/core/utils/url-parser.util.mjs +0 -26
  101. package/esm2022/lib/core/view-models/uiscreen.viewmodel.mjs +0 -106
  102. package/esm2022/lib/directives/uiview.directive.mjs +0 -401
  103. package/esm2022/lib/sdui-routing.module.mjs +0 -28
  104. package/esm2022/lib/sdui.component.mjs +0 -51
  105. package/esm2022/lib/sdui.module.mjs +0 -139
  106. package/esm2022/public-api.mjs +0 -13
  107. package/index.d.ts +0 -6
  108. package/lib/components/navigation-controls/navigation-controls.component.d.ts +0 -12
  109. package/lib/components/navigation-controls/navigation-controls.component.d.ts.map +0 -1
  110. package/lib/components/uicomponent/button/button.component.d.ts +0 -19
  111. package/lib/components/uicomponent/button/button.component.d.ts.map +0 -1
  112. package/lib/components/uicomponent/column/column.component.d.ts +0 -12
  113. package/lib/components/uicomponent/column/column.component.d.ts.map +0 -1
  114. package/lib/components/uicomponent/image/image.component.d.ts +0 -18
  115. package/lib/components/uicomponent/image/image.component.d.ts.map +0 -1
  116. package/lib/components/uicomponent/image/ranking-svg.d.ts +0 -2
  117. package/lib/components/uicomponent/image/ranking-svg.d.ts.map +0 -1
  118. package/lib/components/uicomponent/label/label.component.d.ts +0 -18
  119. package/lib/components/uicomponent/label/label.component.d.ts.map +0 -1
  120. package/lib/components/uicomponent/media-type/media-type.component.d.ts +0 -24
  121. package/lib/components/uicomponent/media-type/media-type.component.d.ts.map +0 -1
  122. package/lib/components/uicomponent/modal/modal.component.d.ts +0 -15
  123. package/lib/components/uicomponent/modal/modal.component.d.ts.map +0 -1
  124. package/lib/components/uicomponent/picker/picker.component.d.ts +0 -22
  125. package/lib/components/uicomponent/picker/picker.component.d.ts.map +0 -1
  126. package/lib/components/uicomponent/picker-item/picker-item.component.d.ts +0 -16
  127. package/lib/components/uicomponent/picker-item/picker-item.component.d.ts.map +0 -1
  128. package/lib/components/uicomponent/profile-button/profile-button.component.d.ts +0 -22
  129. package/lib/components/uicomponent/profile-button/profile-button.component.d.ts.map +0 -1
  130. package/lib/components/uicomponent/progress-bar/progress-bar.component.d.ts +0 -15
  131. package/lib/components/uicomponent/progress-bar/progress-bar.component.d.ts.map +0 -1
  132. package/lib/components/uicomponent/row/row.component.d.ts +0 -11
  133. package/lib/components/uicomponent/row/row.component.d.ts.map +0 -1
  134. package/lib/components/uicomponent/row-divisor/row-divisor.component.d.ts +0 -11
  135. package/lib/components/uicomponent/row-divisor/row-divisor.component.d.ts.map +0 -1
  136. package/lib/components/uicomponent/scrollable-column/scrollable-column.component.d.ts +0 -15
  137. package/lib/components/uicomponent/scrollable-column/scrollable-column.component.d.ts.map +0 -1
  138. package/lib/components/uicomponent/scrollable-row/scrollable-row.component.d.ts +0 -29
  139. package/lib/components/uicomponent/scrollable-row/scrollable-row.component.d.ts.map +0 -1
  140. package/lib/components/uicomponent/search-bar/search-bar.component.d.ts +0 -19
  141. package/lib/components/uicomponent/search-bar/search-bar.component.d.ts.map +0 -1
  142. package/lib/components/uicomponent/search-bar dismiss/search-bar-dismiss.component.d.ts +0 -22
  143. package/lib/components/uicomponent/search-bar dismiss/search-bar-dismiss.component.d.ts.map +0 -1
  144. package/lib/components/uicomponent/space/space.component.d.ts +0 -11
  145. package/lib/components/uicomponent/space/space.component.d.ts.map +0 -1
  146. package/lib/components/uicomponent/tag/tag.component.d.ts +0 -19
  147. package/lib/components/uicomponent/tag/tag.component.d.ts.map +0 -1
  148. package/lib/components/uicomponent/tags-row/tag/tag.component.d.ts +0 -39
  149. package/lib/components/uicomponent/tags-row/tag/tag.component.d.ts.map +0 -1
  150. package/lib/components/uicomponent/tags-row/tags-row.component.d.ts +0 -37
  151. package/lib/components/uicomponent/tags-row/tags-row.component.d.ts.map +0 -1
  152. package/lib/components/uicomponent/uicomponent.component.d.ts +0 -18
  153. package/lib/components/uicomponent/uicomponent.component.d.ts.map +0 -1
  154. package/lib/components/uicomponent/zstack/zstack.component.d.ts +0 -11
  155. package/lib/components/uicomponent/zstack/zstack.component.d.ts.map +0 -1
  156. package/lib/components/uilayout/centered-content-layout/centered-content-layout.component.d.ts +0 -11
  157. package/lib/components/uilayout/centered-content-layout/centered-content-layout.component.d.ts.map +0 -1
  158. package/lib/components/uilayout/fab/fab.component.d.ts +0 -17
  159. package/lib/components/uilayout/fab/fab.component.d.ts.map +0 -1
  160. package/lib/components/uilayout/single-column-layout/single-column-layout.component.d.ts +0 -10
  161. package/lib/components/uilayout/single-column-layout/single-column-layout.component.d.ts.map +0 -1
  162. package/lib/components/uilayout/uinavigation/uinavigation.component.d.ts +0 -8
  163. package/lib/components/uilayout/uinavigation/uinavigation.component.d.ts.map +0 -1
  164. package/lib/components/uiscreen/uiscreen.component.d.ts +0 -13
  165. package/lib/components/uiscreen/uiscreen.component.d.ts.map +0 -1
  166. package/lib/core/services/font-size-mapping.service.d.ts +0 -10
  167. package/lib/core/services/font-size-mapping.service.d.ts.map +0 -1
  168. package/lib/core/services/modal.service.d.ts +0 -11
  169. package/lib/core/services/modal.service.d.ts.map +0 -1
  170. package/lib/core/services/scroll-spy.service.d.ts +0 -31
  171. package/lib/core/services/scroll-spy.service.d.ts.map +0 -1
  172. package/lib/core/services/translation.service.d.ts +0 -13
  173. package/lib/core/services/translation.service.d.ts.map +0 -1
  174. package/lib/core/services/ui-action-handlers.service.d.ts +0 -9
  175. package/lib/core/services/ui-action-handlers.service.d.ts.map +0 -1
  176. package/lib/core/services/ui-action.service.d.ts +0 -17
  177. package/lib/core/services/ui-action.service.d.ts.map +0 -1
  178. package/lib/core/services/uiscreen.service.d.ts +0 -26
  179. package/lib/core/services/uiscreen.service.d.ts.map +0 -1
  180. package/lib/core/tokens/sdui-config.token.d.ts +0 -4
  181. package/lib/core/tokens/sdui-config.token.d.ts.map +0 -1
  182. package/lib/core/uicomposition/enums/uicomponent-type.d.ts +0 -26
  183. package/lib/core/uicomposition/enums/uicomponent-type.d.ts.map +0 -1
  184. package/lib/core/uicomposition/enums/uiplatform-type.d.ts +0 -6
  185. package/lib/core/uicomposition/enums/uiplatform-type.d.ts.map +0 -1
  186. package/lib/core/uicomposition/enums/uiscene.d.ts +0 -4
  187. package/lib/core/uicomposition/enums/uiscene.d.ts.map +0 -1
  188. package/lib/core/uicomposition/enums/uiscreen-container-type.d.ts +0 -5
  189. package/lib/core/uicomposition/enums/uiscreen-container-type.d.ts.map +0 -1
  190. package/lib/core/uicomposition/enums/uiscreen-identifier.d.ts +0 -5
  191. package/lib/core/uicomposition/enums/uiscreen-identifier.d.ts.map +0 -1
  192. package/lib/core/uicomposition/mapping/component-mapping.d.ts +0 -4
  193. package/lib/core/uicomposition/mapping/component-mapping.d.ts.map +0 -1
  194. package/lib/core/uicomposition/models/uicentered-content-layout.d.ts +0 -11
  195. package/lib/core/uicomposition/models/uicentered-content-layout.d.ts.map +0 -1
  196. package/lib/core/uicomposition/models/uicomponent.d.ts +0 -12
  197. package/lib/core/uicomposition/models/uicomponent.d.ts.map +0 -1
  198. package/lib/core/uicomposition/models/uielement.d.ts +0 -28
  199. package/lib/core/uicomposition/models/uielement.d.ts.map +0 -1
  200. package/lib/core/uicomposition/models/uilayout.d.ts +0 -4
  201. package/lib/core/uicomposition/models/uilayout.d.ts.map +0 -1
  202. package/lib/core/uicomposition/models/uinavigation.d.ts +0 -6
  203. package/lib/core/uicomposition/models/uinavigation.d.ts.map +0 -1
  204. package/lib/core/uicomposition/models/uiscreen-config.d.ts +0 -6
  205. package/lib/core/uicomposition/models/uiscreen-config.d.ts.map +0 -1
  206. package/lib/core/uicomposition/models/uiscreen.d.ts +0 -20
  207. package/lib/core/uicomposition/models/uiscreen.d.ts.map +0 -1
  208. package/lib/core/uicomposition/models/uisingle-column-layout.d.ts +0 -12
  209. package/lib/core/uicomposition/models/uisingle-column-layout.d.ts.map +0 -1
  210. package/lib/core/uicomposition/models/uitag.d.ts +0 -6
  211. package/lib/core/uicomposition/models/uitag.d.ts.map +0 -1
  212. package/lib/core/uicomposition/models/uiview.d.ts +0 -33
  213. package/lib/core/uicomposition/models/uiview.d.ts.map +0 -1
  214. package/lib/core/uitheme/enums/uiaction-type.d.ts +0 -13
  215. package/lib/core/uitheme/enums/uiaction-type.d.ts.map +0 -1
  216. package/lib/core/uitheme/enums/uialignment-type.d.ts +0 -6
  217. package/lib/core/uitheme/enums/uialignment-type.d.ts.map +0 -1
  218. package/lib/core/uitheme/enums/uiaspect-type.d.ts +0 -5
  219. package/lib/core/uitheme/enums/uiaspect-type.d.ts.map +0 -1
  220. package/lib/core/uitheme/enums/uiasset.d.ts +0 -436
  221. package/lib/core/uitheme/enums/uiasset.d.ts.map +0 -1
  222. package/lib/core/uitheme/enums/uicolor.d.ts +0 -156
  223. package/lib/core/uitheme/enums/uicolor.d.ts.map +0 -1
  224. package/lib/core/uitheme/enums/uicontent-type.d.ts +0 -10
  225. package/lib/core/uitheme/enums/uicontent-type.d.ts.map +0 -1
  226. package/lib/core/uitheme/enums/uidimension.d.ts +0 -48
  227. package/lib/core/uitheme/enums/uidimension.d.ts.map +0 -1
  228. package/lib/core/uitheme/enums/uijustify.d.ts +0 -8
  229. package/lib/core/uitheme/enums/uijustify.d.ts.map +0 -1
  230. package/lib/core/uitheme/enums/uipadding-level.d.ts +0 -11
  231. package/lib/core/uitheme/enums/uipadding-level.d.ts.map +0 -1
  232. package/lib/core/uitheme/enums/uipresentation-style.d.ts +0 -6
  233. package/lib/core/uitheme/enums/uipresentation-style.d.ts.map +0 -1
  234. package/lib/core/uitheme/enums/uiradius-level.d.ts +0 -9
  235. package/lib/core/uitheme/enums/uiradius-level.d.ts.map +0 -1
  236. package/lib/core/uitheme/enums/uishadow-blur-radius.d.ts +0 -4
  237. package/lib/core/uitheme/enums/uishadow-blur-radius.d.ts.map +0 -1
  238. package/lib/core/uitheme/enums/uishadow-offset.d.ts +0 -4
  239. package/lib/core/uitheme/enums/uishadow-offset.d.ts.map +0 -1
  240. package/lib/core/uitheme/enums/uisize.d.ts +0 -21
  241. package/lib/core/uitheme/enums/uisize.d.ts.map +0 -1
  242. package/lib/core/uitheme/enums/uispacing-level.d.ts +0 -9
  243. package/lib/core/uitheme/enums/uispacing-level.d.ts.map +0 -1
  244. package/lib/core/uitheme/enums/uitext-style.d.ts +0 -14
  245. package/lib/core/uitheme/enums/uitext-style.d.ts.map +0 -1
  246. package/lib/core/uitheme/mapping/alignment-mapping.d.ts +0 -3
  247. package/lib/core/uitheme/mapping/alignment-mapping.d.ts.map +0 -1
  248. package/lib/core/uitheme/mapping/aspect-mapping.d.ts +0 -3
  249. package/lib/core/uitheme/mapping/aspect-mapping.d.ts.map +0 -1
  250. package/lib/core/uitheme/mapping/asset-mapping.d.ts +0 -3
  251. package/lib/core/uitheme/mapping/asset-mapping.d.ts.map +0 -1
  252. package/lib/core/uitheme/mapping/color-mapping.d.ts +0 -3
  253. package/lib/core/uitheme/mapping/color-mapping.d.ts.map +0 -1
  254. package/lib/core/uitheme/mapping/dimension-mapping.d.ts +0 -3
  255. package/lib/core/uitheme/mapping/dimension-mapping.d.ts.map +0 -1
  256. package/lib/core/uitheme/mapping/justify-mapping.d.ts +0 -3
  257. package/lib/core/uitheme/mapping/justify-mapping.d.ts.map +0 -1
  258. package/lib/core/uitheme/mapping/pad-mapping.d.ts +0 -3
  259. package/lib/core/uitheme/mapping/pad-mapping.d.ts.map +0 -1
  260. package/lib/core/uitheme/mapping/radius-mapping.d.ts +0 -3
  261. package/lib/core/uitheme/mapping/radius-mapping.d.ts.map +0 -1
  262. package/lib/core/uitheme/mapping/shadow-mapping.d.ts +0 -5
  263. package/lib/core/uitheme/mapping/shadow-mapping.d.ts.map +0 -1
  264. package/lib/core/uitheme/mapping/size-mapping.d.ts +0 -12
  265. package/lib/core/uitheme/mapping/size-mapping.d.ts.map +0 -1
  266. package/lib/core/uitheme/mapping/space-mapping.d.ts +0 -3
  267. package/lib/core/uitheme/mapping/space-mapping.d.ts.map +0 -1
  268. package/lib/core/uitheme/mapping/text-style-mapping.d.ts +0 -5
  269. package/lib/core/uitheme/mapping/text-style-mapping.d.ts.map +0 -1
  270. package/lib/core/uitheme/models/uiaction.d.ts +0 -10
  271. package/lib/core/uitheme/models/uiaction.d.ts.map +0 -1
  272. package/lib/core/uitheme/models/uialignment.d.ts +0 -5
  273. package/lib/core/uitheme/models/uialignment.d.ts.map +0 -1
  274. package/lib/core/uitheme/models/uibackground.d.ts +0 -7
  275. package/lib/core/uitheme/models/uibackground.d.ts.map +0 -1
  276. package/lib/core/uitheme/models/uicontent-inset.d.ts +0 -8
  277. package/lib/core/uitheme/models/uicontent-inset.d.ts.map +0 -1
  278. package/lib/core/uitheme/models/uihover.d.ts +0 -4
  279. package/lib/core/uitheme/models/uihover.d.ts.map +0 -1
  280. package/lib/core/uitheme/models/uipadding.d.ts +0 -8
  281. package/lib/core/uitheme/models/uipadding.d.ts.map +0 -1
  282. package/lib/core/uitheme/models/uiradius.d.ts +0 -8
  283. package/lib/core/uitheme/models/uiradius.d.ts.map +0 -1
  284. package/lib/core/uitheme/models/uishadow.d.ts +0 -11
  285. package/lib/core/uitheme/models/uishadow.d.ts.map +0 -1
  286. package/lib/core/uitheme/models/uispacing.d.ts +0 -5
  287. package/lib/core/uitheme/models/uispacing.d.ts.map +0 -1
  288. package/lib/core/utils/url-parser.util.d.ts +0 -3
  289. package/lib/core/utils/url-parser.util.d.ts.map +0 -1
  290. package/lib/core/view-models/uiscreen.viewmodel.d.ts +0 -39
  291. package/lib/core/view-models/uiscreen.viewmodel.d.ts.map +0 -1
  292. package/lib/directives/uiview.directive.d.ts +0 -54
  293. package/lib/directives/uiview.directive.d.ts.map +0 -1
  294. package/lib/sdui-routing.module.d.ts +0 -10
  295. package/lib/sdui-routing.module.d.ts.map +0 -1
  296. package/lib/sdui.component.d.ts +0 -17
  297. package/lib/sdui.component.d.ts.map +0 -1
  298. package/lib/sdui.module.d.ts +0 -47
  299. package/lib/sdui.module.d.ts.map +0 -1
  300. package/public-api.d.ts +0 -7
  301. package/public-api.d.ts.map +0 -1
@@ -1,401 +0,0 @@
1
- import { Directive, ElementRef, HostListener, Input, Optional, Renderer2, } from '@angular/core';
2
- import { spaceMapping } from '../core/uitheme/mapping/space-mapping';
3
- import { colorMapping } from '../core/uitheme/mapping/color-mapping';
4
- import { padMapping } from '../core/uitheme/mapping/pad-mapping';
5
- import { radiusMapping } from '../core/uitheme/mapping/radius-mapping';
6
- import { alignmentMapping } from '../core/uitheme/mapping/alignment-mapping';
7
- import { dimensionMapping } from '../core/uitheme/mapping/dimension-mapping';
8
- import { shadowOffsetMapping, shadowBlurRadiusMapping, } from '../core/uitheme/mapping/shadow-mapping';
9
- import { justifyMapping } from '../core/uitheme/mapping/justify-mapping';
10
- import { Router } from '@angular/router';
11
- import { UIScreenViewModel } from '../core/view-models/uiscreen.viewmodel';
12
- import { UIActionService } from '../core/services/ui-action.service';
13
- import { sizeMapping } from '../core/uitheme/mapping/size-mapping';
14
- import { UIScreenContainerType } from '../core/uicomposition/enums/uiscreen-container-type';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "@angular/router";
17
- import * as i2 from "../core/services/ui-action.service";
18
- import * as i3 from "../core/view-models/uiscreen.viewmodel";
19
- export class UIViewDirective {
20
- static { this.EXPLORE_LAST_ANCHOR_KEY = 'exploreLastAnchor'; }
21
- static { this.EXPLORE_CLICKED_ANCHOR_KEY = 'exploreClickedAnchor'; }
22
- static { this.EXPLORE_LAST_ROW_INDEX_KEY = 'exploreLastRowIndex'; }
23
- static { this.EXPLORE_LAST_ROW_SCROLL_LEFT_KEY = 'exploreLastRowScrollLeft'; }
24
- static { this.EXPLORE_LAST_ITEM_ID_KEY = 'exploreLastItemId'; }
25
- constructor(elementRef, renderer, router, actionService, screenViewModel) {
26
- this.elementRef = elementRef;
27
- this.renderer = renderer;
28
- this.router = router;
29
- this.actionService = actionService;
30
- this.screenViewModel = screenViewModel;
31
- this.disableClick = false;
32
- this.lastUiView = null;
33
- this.wasSmallScreen = this.isSmallScreen();
34
- this.currentContainer = UIScreenContainerType.CONTAINED;
35
- if (this.screenViewModel) {
36
- this.screenViewModel.uiScreen$.subscribe((screen) => {
37
- this.currentContainer =
38
- screen?.config?.container ?? UIScreenContainerType.CONTAINED;
39
- });
40
- }
41
- }
42
- ngOnChanges(changes) {
43
- if (this.edmSduiView) {
44
- this.lastUiView = this.edmSduiView;
45
- this.applyStyles(this.edmSduiView);
46
- this.wasSmallScreen = this.isSmallScreen();
47
- }
48
- }
49
- applyStyles(uiView) {
50
- if (uiView.id) {
51
- this.renderer.setAttribute(this.elementRef.nativeElement, 'id', String(uiView.id));
52
- }
53
- if (uiView.padding) {
54
- this.applyPadding(uiView.padding);
55
- }
56
- if (uiView.contentInset) {
57
- this.applyContentInset(uiView.contentInset);
58
- }
59
- if (uiView.background) {
60
- this.applyBackground(uiView.background);
61
- }
62
- if (uiView.action) {
63
- this.applyAction(uiView.action);
64
- }
65
- if (uiView.alignment) {
66
- this.applyAlignment(uiView.alignment);
67
- }
68
- if (uiView.shadow) {
69
- this.applyShadow(uiView.shadow);
70
- }
71
- if (uiView.radius) {
72
- this.applyRadius(uiView.radius);
73
- }
74
- if (uiView.spacing) {
75
- this.applySpacing(uiView.spacing);
76
- }
77
- if (uiView.height) {
78
- this.applyHeight(uiView.height);
79
- }
80
- if (uiView.width) {
81
- this.applyWidth(uiView.width);
82
- }
83
- if (uiView.borderWidth) {
84
- this.applyBorderWidth(uiView.borderWidth);
85
- }
86
- if (uiView.borderColor) {
87
- this.applyBorderColor(uiView.borderColor);
88
- }
89
- if (uiView.justify) {
90
- this.applyJustify(uiView.justify);
91
- }
92
- if (uiView.size) {
93
- this.applySize(uiView.size);
94
- }
95
- if (uiView.aspectRatio !== null && uiView.aspectRatio !== undefined) {
96
- this.applyAspectRatio(uiView.aspectRatio);
97
- }
98
- if (uiView.hover) {
99
- this.applyHoverVars(uiView);
100
- }
101
- }
102
- applyPadding(uiPadding) {
103
- if (uiPadding.top) {
104
- const padValue = padMapping[uiPadding.top];
105
- this.renderer.setStyle(this.elementRef.nativeElement, 'padding-top', padValue);
106
- }
107
- if (uiPadding.left) {
108
- const padValue = padMapping[uiPadding.left];
109
- this.renderer.setStyle(this.elementRef.nativeElement, 'padding-left', padValue);
110
- }
111
- if (uiPadding.right) {
112
- const padValue = padMapping[uiPadding.right];
113
- this.renderer.setStyle(this.elementRef.nativeElement, 'padding-right', padValue);
114
- }
115
- if (uiPadding.bottom) {
116
- const padValue = padMapping[uiPadding.bottom];
117
- this.renderer.setStyle(this.elementRef.nativeElement, 'padding-bottom', padValue);
118
- }
119
- }
120
- applyContentInset(uiContentInset) {
121
- if (uiContentInset.top) {
122
- const insetValue = spaceMapping[uiContentInset.top];
123
- this.renderer.setStyle(this.elementRef.nativeElement, 'padding-top', insetValue);
124
- this.renderer.setStyle(this.elementRef.nativeElement, '--sdui-content-inset-top', insetValue);
125
- }
126
- if (uiContentInset.left) {
127
- const insetValue = spaceMapping[uiContentInset.left];
128
- this.renderer.setStyle(this.elementRef.nativeElement, 'padding-left', insetValue);
129
- this.renderer.setStyle(this.elementRef.nativeElement, '--sdui-content-inset-left', insetValue);
130
- }
131
- if (uiContentInset.right) {
132
- const insetValue = spaceMapping[uiContentInset.right];
133
- this.renderer.setStyle(this.elementRef.nativeElement, 'padding-right', insetValue);
134
- this.renderer.setStyle(this.elementRef.nativeElement, '--sdui-content-inset-right', insetValue);
135
- }
136
- if (uiContentInset.bottom) {
137
- const insetValue = spaceMapping[uiContentInset.bottom];
138
- this.renderer.setStyle(this.elementRef.nativeElement, 'padding-bottom', insetValue);
139
- this.renderer.setStyle(this.elementRef.nativeElement, '--sdui-content-inset-bottom', insetValue);
140
- }
141
- }
142
- applyBackground(uiBackground) {
143
- if (uiBackground.backgroundColor) {
144
- const backgroundColor = colorMapping[uiBackground.backgroundColor];
145
- this.renderer.setStyle(this.elementRef.nativeElement, 'background-color', backgroundColor);
146
- }
147
- if (uiBackground.gradientColor1 && uiBackground.gradientColor2) {
148
- const gradientColor1 = colorMapping[uiBackground.gradientColor1];
149
- const gradientColor2 = colorMapping[uiBackground.gradientColor2];
150
- const gradientStyles = `linear-gradient(45deg, ${gradientColor1}, ${gradientColor2})`;
151
- this.renderer.setStyle(this.elementRef.nativeElement, 'background', gradientStyles);
152
- }
153
- }
154
- applyAction(uiAction) {
155
- if (this.disableClick) {
156
- return;
157
- }
158
- this.renderer.setStyle(this.elementRef.nativeElement, 'cursor', 'pointer');
159
- }
160
- applyAlignment(uiAlignment) {
161
- if (uiAlignment.alignment) {
162
- const alignment = alignmentMapping[uiAlignment.alignment];
163
- this.renderer.setStyle(this.elementRef.nativeElement, 'align-items', alignment);
164
- }
165
- }
166
- applyShadow(uiShadow) {
167
- if (uiShadow.color && uiShadow.offsetX && uiShadow.offsetY && uiShadow.blurRadius) {
168
- const color = colorMapping[uiShadow.color];
169
- const offsetX = shadowOffsetMapping[uiShadow.offsetX];
170
- const offsetY = shadowOffsetMapping[uiShadow.offsetY];
171
- const blurRadius = shadowBlurRadiusMapping[uiShadow.blurRadius];
172
- const opacity = uiShadow.opacity !== undefined ? uiShadow.opacity : 1;
173
- // Format: box-shadow: offsetX offsetY blurRadius color
174
- const shadowValue = `${offsetX} ${offsetY} ${blurRadius} ${color}`;
175
- this.renderer.setStyle(this.elementRef.nativeElement, 'box-shadow', shadowValue);
176
- if (opacity !== 1) {
177
- this.renderer.setStyle(this.elementRef.nativeElement, 'opacity', opacity.toString());
178
- }
179
- }
180
- }
181
- applyRadius(uiRadius) {
182
- if (uiRadius.topLeft) {
183
- const radius = radiusMapping[uiRadius.topLeft];
184
- this.renderer.setStyle(this.elementRef.nativeElement, 'border-top-left-radius', radius);
185
- }
186
- if (uiRadius.topRight) {
187
- const radius = radiusMapping[uiRadius.topRight];
188
- this.renderer.setStyle(this.elementRef.nativeElement, 'border-top-right-radius', radius);
189
- }
190
- if (uiRadius.bottomLeft) {
191
- const radius = radiusMapping[uiRadius.bottomLeft];
192
- this.renderer.setStyle(this.elementRef.nativeElement, 'border-bottom-left-radius', radius);
193
- }
194
- if (uiRadius.bottomRight) {
195
- const radius = radiusMapping[uiRadius.bottomRight];
196
- this.renderer.setStyle(this.elementRef.nativeElement, 'border-bottom-right-radius', radius);
197
- }
198
- }
199
- applySpacing(uiSpacing) {
200
- if (uiSpacing.spacing) {
201
- const spacingValue = spaceMapping[uiSpacing.spacing];
202
- this.renderer.setStyle(this.elementRef.nativeElement, 'gap', spacingValue);
203
- }
204
- }
205
- applyHeight(height) {
206
- if (height) {
207
- const heightValue = dimensionMapping[height];
208
- this.renderer.setStyle(this.elementRef.nativeElement, 'height', heightValue);
209
- }
210
- }
211
- applyWidth(width) {
212
- if (width) {
213
- const widthValue = dimensionMapping[width];
214
- this.renderer.setStyle(this.elementRef.nativeElement, 'width', widthValue);
215
- }
216
- }
217
- applyBorderWidth(borderWidth) {
218
- if (borderWidth !== null && borderWidth !== undefined) {
219
- this.renderer.setStyle(this.elementRef.nativeElement, 'border-width', `${borderWidth}px`);
220
- // Ensure border style is set, otherwise border-width won't be visible
221
- this.renderer.setStyle(this.elementRef.nativeElement, 'border-style', 'solid');
222
- }
223
- }
224
- applyBorderColor(borderColor) {
225
- if (borderColor) {
226
- const color = colorMapping[borderColor];
227
- this.renderer.setStyle(this.elementRef.nativeElement, 'border-color', color);
228
- }
229
- }
230
- applyJustify(justify) {
231
- if (justify) {
232
- const justifyValue = justifyMapping[justify];
233
- this.renderer.setStyle(this.elementRef.nativeElement, 'justify-content', justifyValue);
234
- }
235
- }
236
- applyAspectRatio(aspectRatio) {
237
- }
238
- applySize(size) {
239
- const config = sizeMapping[size];
240
- if (!config)
241
- return;
242
- let { width: widthValue, height: heightValue } = config;
243
- if (config.scalable && this.isSmallScreen()) {
244
- widthValue = this.scalePixelValue(widthValue, 1.1);
245
- heightValue = this.scalePixelValue(heightValue, 1.1);
246
- }
247
- this.renderer.setStyle(this.elementRef.nativeElement, 'width', widthValue);
248
- this.renderer.setStyle(this.elementRef.nativeElement, 'height', heightValue);
249
- }
250
- applyHoverVars(uiView) {
251
- const hover = uiView?.hover ?? uiView?.element?.hover;
252
- if (!hover)
253
- return;
254
- const el = this.elementRef.nativeElement;
255
- // marca que esse elemento tem hover
256
- this.renderer.addClass(el, 'edm-hover');
257
- if (hover.border_color || hover.borderColor) {
258
- const token = (hover.border_color ?? hover.borderColor).replace(/_/g, '-');
259
- el.style.setProperty('--edm-hover-border-color', `var(--${token})`);
260
- }
261
- if (hover.background_color || hover.backgroundColor) {
262
- const token = (hover.background_color ?? hover.backgroundColor).replace(/_/g, '-');
263
- el.style.setProperty('--edm-hover-bg-color', `var(--${token})`);
264
- }
265
- }
266
- isSmallScreen() {
267
- return typeof window !== 'undefined' && window.innerWidth >= 565;
268
- }
269
- scalePixelValue(value, divisor) {
270
- const match = /^(\d+(?:\.\d+)?)px$/.exec(value);
271
- if (!match) {
272
- return value;
273
- }
274
- const num = parseFloat(match[1]);
275
- const scaled = num * divisor;
276
- return `${scaled}px`;
277
- }
278
- onWindowResize() {
279
- const isSmall = this.isSmallScreen();
280
- if (this.lastUiView && isSmall !== this.wasSmallScreen) {
281
- this.applyStyles(this.lastUiView);
282
- this.wasSmallScreen = isSmall;
283
- }
284
- }
285
- onClick(event) {
286
- if (this.disableClick)
287
- return;
288
- if (this.edmSduiView?.action) {
289
- this.captureExploreScrollContext();
290
- event.stopPropagation();
291
- this.actionService.execute(this.edmSduiView.action);
292
- }
293
- }
294
- captureExploreScrollContext() {
295
- if (typeof window === 'undefined' || !this.router.url.includes('/explorar')) {
296
- return;
297
- }
298
- const element = this.elementRef.nativeElement;
299
- const scrollRow = element.closest('.scrollable-row');
300
- if (!scrollRow) {
301
- this.clearExploreHorizontalScrollContext();
302
- return;
303
- }
304
- const section = this.resolveExploreSection(element, scrollRow);
305
- const activeTag = document.querySelector('.row-tag--selected')?.getAttribute('data-tag');
306
- const sectionId = section?.id || activeTag || sessionStorage.getItem(UIViewDirective.EXPLORE_LAST_ANCHOR_KEY);
307
- const rowIndex = this.resolveRowIndex(scrollRow, section);
308
- const itemId = this.resolveClickedItemId(element, section);
309
- try {
310
- if (sectionId) {
311
- sessionStorage.setItem(UIViewDirective.EXPLORE_LAST_ANCHOR_KEY, sectionId);
312
- }
313
- // Salva o anchor do clique separado do scroll spy para não ser sobrescrito durante navegação
314
- const clickedAnchor = section?.id || activeTag;
315
- if (clickedAnchor) {
316
- sessionStorage.setItem(UIViewDirective.EXPLORE_CLICKED_ANCHOR_KEY, clickedAnchor);
317
- }
318
- if (rowIndex >= 0) {
319
- sessionStorage.setItem(UIViewDirective.EXPLORE_LAST_ROW_INDEX_KEY, String(rowIndex));
320
- }
321
- sessionStorage.setItem(UIViewDirective.EXPLORE_LAST_ROW_SCROLL_LEFT_KEY, String(Math.round(scrollRow.scrollLeft)));
322
- if (itemId) {
323
- sessionStorage.setItem(UIViewDirective.EXPLORE_LAST_ITEM_ID_KEY, itemId);
324
- }
325
- else {
326
- sessionStorage.removeItem(UIViewDirective.EXPLORE_LAST_ITEM_ID_KEY);
327
- }
328
- }
329
- catch { }
330
- }
331
- clearExploreHorizontalScrollContext() {
332
- try {
333
- sessionStorage.removeItem(UIViewDirective.EXPLORE_LAST_ROW_INDEX_KEY);
334
- sessionStorage.removeItem(UIViewDirective.EXPLORE_LAST_ROW_SCROLL_LEFT_KEY);
335
- sessionStorage.removeItem(UIViewDirective.EXPLORE_LAST_ITEM_ID_KEY);
336
- }
337
- catch { }
338
- }
339
- resolveExploreSection(element, scrollRow) {
340
- const fromAncestor = scrollRow.closest('[data-anchor-target][id]') ||
341
- scrollRow.closest('.column[id]') ||
342
- element.closest('[data-anchor-target][id]') ||
343
- element.closest('.column[id]');
344
- if (fromAncestor)
345
- return fromAncestor;
346
- // Seções podem ser irmãs do scrollable-row (não ancestrais).
347
- // Sobe até o wrapper edm-sdui-component e percorre irmãos anteriores.
348
- const wrapper = scrollRow.closest('edm-sdui-component');
349
- let sibling = wrapper?.previousElementSibling;
350
- while (sibling) {
351
- if (sibling.matches('.column[id]') || sibling.matches('[data-anchor-target][id]')) {
352
- return sibling;
353
- }
354
- const inner = sibling.querySelector('.column[id]') ||
355
- sibling.querySelector('[data-anchor-target][id]');
356
- if (inner)
357
- return inner;
358
- sibling = sibling.previousElementSibling;
359
- }
360
- return null;
361
- }
362
- resolveRowIndex(scrollRow, section) {
363
- const scope = section ?? scrollRow.parentElement;
364
- if (!scope) {
365
- return -1;
366
- }
367
- return Array.from(scope.querySelectorAll('.scrollable-row')).indexOf(scrollRow);
368
- }
369
- resolveClickedItemId(element, section) {
370
- if (element.id && element.id !== section?.id) {
371
- return element.id;
372
- }
373
- const candidate = element.closest('[id]');
374
- if (candidate?.id && candidate.id !== section?.id) {
375
- return candidate.id;
376
- }
377
- return null;
378
- }
379
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UIViewDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.Router }, { token: i2.UIActionService }, { token: i3.UIScreenViewModel, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
380
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: UIViewDirective, isStandalone: false, selector: "[edmSduiView]", inputs: { edmSduiView: "edmSduiView", disableClick: "disableClick" }, host: { listeners: { "window:resize": "onWindowResize()", "click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0 }); }
381
- }
382
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UIViewDirective, decorators: [{
383
- type: Directive,
384
- args: [{
385
- selector: '[edmSduiView]',
386
- standalone: false,
387
- }]
388
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.Router }, { type: i2.UIActionService }, { type: i3.UIScreenViewModel, decorators: [{
389
- type: Optional
390
- }] }], propDecorators: { edmSduiView: [{
391
- type: Input
392
- }], disableClick: [{
393
- type: Input
394
- }], onWindowResize: [{
395
- type: HostListener,
396
- args: ['window:resize']
397
- }], onClick: [{
398
- type: HostListener,
399
- args: ['click', ['$event']]
400
- }] } });
401
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWl2aWV3LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2R1aS9zcmMvbGliL2RpcmVjdGl2ZXMvdWl2aWV3LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFhdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3hCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7OztBQU01RixNQUFNLE9BQU8sZUFBZTthQUdGLDRCQUF1QixHQUFHLG1CQUFtQixBQUF0QixDQUF1QjthQUM5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QU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRU8sb0JBQW9CLENBQUMsT0FBb0IsRUFBRSxPQUEyQjtRQUM1RSxJQUFJLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDN0MsT0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBdUIsQ0FBQztRQUNoRSxJQUFJLFNBQVMsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDLEVBQUUsS0FBSyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDbEQsT0FBTyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBM2lCVSxlQUFlO21HQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBSjNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjs7MEJBbUJJLFFBQVE7eUNBakJGLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFrYk4sY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWU7Z0JBVTdCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVSVZpZXcgfSBmcm9tICcuLi9jb3JlL3VpY29tcG9zaXRpb24vbW9kZWxzL3Vpdmlldyc7XG5pbXBvcnQgeyBVSVBhZGRpbmcgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbW9kZWxzL3VpcGFkZGluZyc7XG5pbXBvcnQgeyBVSUJhY2tncm91bmQgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbW9kZWxzL3VpYmFja2dyb3VuZCc7XG5pbXBvcnQgeyBVSUFjdGlvbiB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tb2RlbHMvdWlhY3Rpb24nO1xuaW1wb3J0IHsgVUlBbGlnbm1lbnQgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbW9kZWxzL3VpYWxpZ25tZW50JztcbmltcG9ydCB7IFVJU2hhZG93IH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL21vZGVscy91aXNoYWRvdyc7XG5pbXBvcnQgeyBVSVJhZGl1cyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tb2RlbHMvdWlyYWRpdXMnO1xuaW1wb3J0IHsgVUlTcGFjaW5nIH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL21vZGVscy91aXNwYWNpbmcnO1xuaW1wb3J0IHsgVUlDb2xvciB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9lbnVtcy91aWNvbG9yJztcbmltcG9ydCB7IFVJSnVzdGlmeSB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9lbnVtcy91aWp1c3RpZnknO1xuaW1wb3J0IHsgVUlEaW1lbnNpb24gfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvZW51bXMvdWlkaW1lbnNpb24nO1xuaW1wb3J0IHsgVUlDb250ZW50SW5zZXQgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbW9kZWxzL3VpY29udGVudC1pbnNldCc7XG5pbXBvcnQgeyBzcGFjZU1hcHBpbmcgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9zcGFjZS1tYXBwaW5nJztcbmltcG9ydCB7IGNvbG9yTWFwcGluZyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL2NvbG9yLW1hcHBpbmcnO1xuaW1wb3J0IHsgcGFkTWFwcGluZyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL3BhZC1tYXBwaW5nJztcbmltcG9ydCB7IHJhZGl1c01hcHBpbmcgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9yYWRpdXMtbWFwcGluZyc7XG5pbXBvcnQgeyBhbGlnbm1lbnRNYXBwaW5nIH0gZnJvbSAnLi4vY29yZS91aXRoZW1lL21hcHBpbmcvYWxpZ25tZW50LW1hcHBpbmcnO1xuaW1wb3J0IHsgZGltZW5zaW9uTWFwcGluZyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL2RpbWVuc2lvbi1tYXBwaW5nJztcbmltcG9ydCB7XG4gIHNoYWRvd09mZnNldE1hcHBpbmcsXG4gIHNoYWRvd0JsdXJSYWRpdXNNYXBwaW5nLFxufSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9zaGFkb3ctbWFwcGluZyc7XG5pbXBvcnQgeyBqdXN0aWZ5TWFwcGluZyB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL2p1c3RpZnktbWFwcGluZyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVUlTY3JlZW5WaWV3TW9kZWwgfSBmcm9tICcuLi9jb3JlL3ZpZXctbW9kZWxzL3Vpc2NyZWVuLnZpZXdtb2RlbCc7XG5pbXBvcnQgeyBVSUFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlcnZpY2VzL3VpLWFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFVJU2l6ZSB9IGZyb20gJy4uL2NvcmUvdWl0aGVtZS9lbnVtcy91aXNpemUnO1xuaW1wb3J0IHsgc2l6ZU1hcHBpbmcgfSBmcm9tICcuLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9zaXplLW1hcHBpbmcnO1xuaW1wb3J0IHsgVUlTY3JlZW5Db250YWluZXJUeXBlIH0gZnJvbSAnLi4vY29yZS91aWNvbXBvc2l0aW9uL2VudW1zL3Vpc2NyZWVuLWNvbnRhaW5lci10eXBlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2VkbVNkdWlWaWV3XScsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBVSVZpZXdEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBlZG1TZHVpVmlldz86IFVJVmlldztcbiAgQElucHV0KCkgZGlzYWJsZUNsaWNrOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEVYUExPUkVfTEFTVF9BTkNIT1JfS0VZID0gJ2V4cGxvcmVMYXN0QW5jaG9yJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVhQTE9SRV9DTElDS0VEX0FOQ0hPUl9LRVkgPSAnZXhwbG9yZUNsaWNrZWRBbmNob3InO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBFWFBMT1JFX0xBU1RfUk9XX0lOREVYX0tFWSA9ICdleHBsb3JlTGFzdFJvd0luZGV4JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVhQTE9SRV9MQVNUX1JPV19TQ1JPTExfTEVGVF9LRVkgPSAnZXhwbG9yZUxhc3RSb3dTY3JvbGxMZWZ0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVhQTE9SRV9MQVNUX0lURU1fSURfS0VZID0gJ2V4cGxvcmVMYXN0SXRlbUlkJztcblxuICBwcml2YXRlIGxhc3RVaVZpZXc6IFVJVmlldyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHdhc1NtYWxsU2NyZWVuID0gdGhpcy5pc1NtYWxsU2NyZWVuKCk7XG4gIHByaXZhdGUgY3VycmVudENvbnRhaW5lcjogVUlTY3JlZW5Db250YWluZXJUeXBlID0gVUlTY3JlZW5Db250YWluZXJUeXBlLkNPTlRBSU5FRDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBVSUFjdGlvblNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzY3JlZW5WaWV3TW9kZWw6IFVJU2NyZWVuVmlld01vZGVsXG4gICkge1xuICAgIGlmICh0aGlzLnNjcmVlblZpZXdNb2RlbCkge1xuICAgICAgdGhpcy5zY3JlZW5WaWV3TW9kZWwudWlTY3JlZW4kLnN1YnNjcmliZSgoc2NyZWVuKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudENvbnRhaW5lciA9XG4gICAgICAgICAgc2NyZWVuPy5jb25maWc/LmNvbnRhaW5lciA/PyBVSVNjcmVlbkNvbnRhaW5lclR5cGUuQ09OVEFJTkVEO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkbVNkdWlWaWV3KSB7XG4gICAgICB0aGlzLmxhc3RVaVZpZXcgPSB0aGlzLmVkbVNkdWlWaWV3O1xuICAgICAgdGhpcy5hcHBseVN0eWxlcyh0aGlzLmVkbVNkdWlWaWV3KTtcbiAgICAgIHRoaXMud2FzU21hbGxTY3JlZW4gPSB0aGlzLmlzU21hbGxTY3JlZW4oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U3R5bGVzKHVpVmlldzogVUlWaWV3KSB7XG4gICAgaWYgKHVpVmlldy5pZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnaWQnLFxuICAgICAgICBTdHJpbmcodWlWaWV3LmlkKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnBhZGRpbmcpIHtcbiAgICAgIHRoaXMuYXBwbHlQYWRkaW5nKHVpVmlldy5wYWRkaW5nKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmNvbnRlbnRJbnNldCkge1xuICAgICAgdGhpcy5hcHBseUNvbnRlbnRJbnNldCh1aVZpZXcuY29udGVudEluc2V0KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmJhY2tncm91bmQpIHtcbiAgICAgIHRoaXMuYXBwbHlCYWNrZ3JvdW5kKHVpVmlldy5iYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmFjdGlvbikge1xuICAgICAgdGhpcy5hcHBseUFjdGlvbih1aVZpZXcuYWN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmFsaWdubWVudCkge1xuICAgICAgdGhpcy5hcHBseUFsaWdubWVudCh1aVZpZXcuYWxpZ25tZW50KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnNoYWRvdykge1xuICAgICAgdGhpcy5hcHBseVNoYWRvdyh1aVZpZXcuc2hhZG93KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnJhZGl1cykge1xuICAgICAgdGhpcy5hcHBseVJhZGl1cyh1aVZpZXcucmFkaXVzKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnNwYWNpbmcpIHtcbiAgICAgIHRoaXMuYXBwbHlTcGFjaW5nKHVpVmlldy5zcGFjaW5nKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmhlaWdodCkge1xuICAgICAgdGhpcy5hcHBseUhlaWdodCh1aVZpZXcuaGVpZ2h0KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LndpZHRoKSB7XG4gICAgICB0aGlzLmFwcGx5V2lkdGgodWlWaWV3LndpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmJvcmRlcldpZHRoKSB7XG4gICAgICB0aGlzLmFwcGx5Qm9yZGVyV2lkdGgodWlWaWV3LmJvcmRlcldpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LmJvcmRlckNvbG9yKSB7XG4gICAgICB0aGlzLmFwcGx5Qm9yZGVyQ29sb3IodWlWaWV3LmJvcmRlckNvbG9yKTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3Lmp1c3RpZnkpIHtcbiAgICAgIHRoaXMuYXBwbHlKdXN0aWZ5KHVpVmlldy5qdXN0aWZ5KTtcbiAgICB9XG5cbiAgICBpZiAodWlWaWV3LnNpemUpIHtcbiAgICAgIHRoaXMuYXBwbHlTaXplKHVpVmlldy5zaXplKTtcbiAgICB9XG4gICAgaWYgKHVpVmlldy5hc3BlY3RSYXRpbyAhPT0gbnVsbCAmJiB1aVZpZXcuYXNwZWN0UmF0aW8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5hcHBseUFzcGVjdFJhdGlvKHVpVmlldy5hc3BlY3RSYXRpbyk7XG4gICAgfVxuXG4gICAgaWYodWlWaWV3LmhvdmVyKXtcbiAgICAgIHRoaXMuYXBwbHlIb3ZlclZhcnModWlWaWV3KTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlQYWRkaW5nKHVpUGFkZGluZzogVUlQYWRkaW5nKSB7XG4gICAgaWYgKHVpUGFkZGluZy50b3ApIHtcbiAgICAgIGNvbnN0IHBhZFZhbHVlID0gcGFkTWFwcGluZ1t1aVBhZGRpbmcudG9wXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAncGFkZGluZy10b3AnLFxuICAgICAgICBwYWRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHVpUGFkZGluZy5sZWZ0KSB7XG4gICAgICBjb25zdCBwYWRWYWx1ZSA9IHBhZE1hcHBpbmdbdWlQYWRkaW5nLmxlZnRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdwYWRkaW5nLWxlZnQnLFxuICAgICAgICBwYWRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHVpUGFkZGluZy5yaWdodCkge1xuICAgICAgY29uc3QgcGFkVmFsdWUgPSBwYWRNYXBwaW5nW3VpUGFkZGluZy5yaWdodF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ3BhZGRpbmctcmlnaHQnLFxuICAgICAgICBwYWRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHVpUGFkZGluZy5ib3R0b20pIHtcbiAgICAgIGNvbnN0IHBhZFZhbHVlID0gcGFkTWFwcGluZ1t1aVBhZGRpbmcuYm90dG9tXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAncGFkZGluZy1ib3R0b20nLFxuICAgICAgICBwYWRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29udGVudEluc2V0KHVpQ29udGVudEluc2V0OiBVSUNvbnRlbnRJbnNldCkge1xuICAgIGlmICh1aUNvbnRlbnRJbnNldC50b3ApIHtcbiAgICAgIGNvbnN0IGluc2V0VmFsdWUgPSBzcGFjZU1hcHBpbmdbdWlDb250ZW50SW5zZXQudG9wXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAncGFkZGluZy10b3AnLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICctLXNkdWktY29udGVudC1pbnNldC10b3AnLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aUNvbnRlbnRJbnNldC5sZWZ0KSB7XG4gICAgICBjb25zdCBpbnNldFZhbHVlID0gc3BhY2VNYXBwaW5nW3VpQ29udGVudEluc2V0LmxlZnRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdwYWRkaW5nLWxlZnQnLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICctLXNkdWktY29udGVudC1pbnNldC1sZWZ0JyxcbiAgICAgICAgaW5zZXRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodWlDb250ZW50SW5zZXQucmlnaHQpIHtcbiAgICAgIGNvbnN0IGluc2V0VmFsdWUgPSBzcGFjZU1hcHBpbmdbdWlDb250ZW50SW5zZXQucmlnaHRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdwYWRkaW5nLXJpZ2h0JyxcbiAgICAgICAgaW5zZXRWYWx1ZVxuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnLS1zZHVpLWNvbnRlbnQtaW5zZXQtcmlnaHQnLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aUNvbnRlbnRJbnNldC5ib3R0b20pIHtcbiAgICAgIGNvbnN0IGluc2V0VmFsdWUgPSBzcGFjZU1hcHBpbmdbdWlDb250ZW50SW5zZXQuYm90dG9tXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAncGFkZGluZy1ib3R0b20nLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICctLXNkdWktY29udGVudC1pbnNldC1ib3R0b20nLFxuICAgICAgICBpbnNldFZhbHVlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlCYWNrZ3JvdW5kKHVpQmFja2dyb3VuZDogVUlCYWNrZ3JvdW5kKSB7XG4gICAgaWYgKHVpQmFja2dyb3VuZC5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IGNvbG9yTWFwcGluZ1t1aUJhY2tncm91bmQuYmFja2dyb3VuZENvbG9yXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICAgIGJhY2tncm91bmRDb2xvclxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodWlCYWNrZ3JvdW5kLmdyYWRpZW50Q29sb3IxICYmIHVpQmFja2dyb3VuZC5ncmFkaWVudENvbG9yMikge1xuICAgICAgY29uc3QgZ3JhZGllbnRDb2xvcjEgPSBjb2xvck1hcHBpbmdbdWlCYWNrZ3JvdW5kLmdyYWRpZW50Q29sb3IxXTtcbiAgICAgIGNvbnN0IGdyYWRpZW50Q29sb3IyID0gY29sb3JNYXBwaW5nW3VpQmFja2dyb3VuZC5ncmFkaWVudENvbG9yMl07XG4gICAgICBjb25zdCBncmFkaWVudFN0eWxlcyA9IGBsaW5lYXItZ3JhZGllbnQoNDVkZWcsICR7Z3JhZGllbnRDb2xvcjF9LCAke2dyYWRpZW50Q29sb3IyfSlgXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2JhY2tncm91bmQnLFxuICAgICAgICBncmFkaWVudFN0eWxlc1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5QWN0aW9uKHVpQWN0aW9uOiBVSUFjdGlvbikge1xuICAgIGlmICh0aGlzLmRpc2FibGVDbGljaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjdXJzb3InLCAncG9pbnRlcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUFsaWdubWVudCh1aUFsaWdubWVudDogVUlBbGlnbm1lbnQpIHtcbiAgICBpZiAodWlBbGlnbm1lbnQuYWxpZ25tZW50KSB7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBhbGlnbm1lbnRNYXBwaW5nW3VpQWxpZ25tZW50LmFsaWdubWVudF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2FsaWduLWl0ZW1zJyxcbiAgICAgICAgYWxpZ25tZW50XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTaGFkb3codWlTaGFkb3c6IFVJU2hhZG93KSB7XG4gICAgaWYgKHVpU2hhZG93LmNvbG9yICYmIHVpU2hhZG93Lm9mZnNldFggJiYgdWlTaGFkb3cub2Zmc2V0WSAmJiB1aVNoYWRvdy5ibHVyUmFkaXVzKSB7XG4gICAgICBjb25zdCBjb2xvciA9IGNvbG9yTWFwcGluZ1t1aVNoYWRvdy5jb2xvcl07XG4gICAgICBjb25zdCBvZmZzZXRYID0gc2hhZG93T2Zmc2V0TWFwcGluZ1t1aVNoYWRvdy5vZmZzZXRYXTtcbiAgICAgIGNvbnN0IG9mZnNldFkgPSBzaGFkb3dPZmZzZXRNYXBwaW5nW3VpU2hhZG93Lm9mZnNldFldO1xuICAgICAgY29uc3QgYmx1clJhZGl1cyA9IHNoYWRvd0JsdXJSYWRpdXNNYXBwaW5nW3VpU2hhZG93LmJsdXJSYWRpdXNdO1xuICAgICAgY29uc3Qgb3BhY2l0eSA9IHVpU2hhZG93Lm9wYWNpdHkgIT09IHVuZGVmaW5lZCA/IHVpU2hhZG93Lm9wYWNpdHkgOiAxO1xuXG4gICAgICAvLyBGb3JtYXQ6IGJveC1zaGFkb3c6IG9mZnNldFggb2Zmc2V0WSBibHVyUmFkaXVzIGNvbG9yXG4gICAgICBjb25zdCBzaGFkb3dWYWx1ZSA9IGAke29mZnNldFh9ICR7b2Zmc2V0WX0gJHtibHVyUmFkaXVzfSAke2NvbG9yfWA7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYm94LXNoYWRvdycsXG4gICAgICAgIHNoYWRvd1ZhbHVlXG4gICAgICApO1xuXG4gICAgICBpZiAob3BhY2l0eSAhPT0gMSkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICdvcGFjaXR5JyxcbiAgICAgICAgICBvcGFjaXR5LnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5UmFkaXVzKHVpUmFkaXVzOiBVSVJhZGl1cykge1xuICAgIGlmICh1aVJhZGl1cy50b3BMZWZ0KSB7XG4gICAgICBjb25zdCByYWRpdXMgPSByYWRpdXNNYXBwaW5nW3VpUmFkaXVzLnRvcExlZnRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdib3JkZXItdG9wLWxlZnQtcmFkaXVzJyxcbiAgICAgICAgcmFkaXVzXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aVJhZGl1cy50b3BSaWdodCkge1xuICAgICAgY29uc3QgcmFkaXVzID0gcmFkaXVzTWFwcGluZ1t1aVJhZGl1cy50b3BSaWdodF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2JvcmRlci10b3AtcmlnaHQtcmFkaXVzJyxcbiAgICAgICAgcmFkaXVzXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aVJhZGl1cy5ib3R0b21MZWZ0KSB7XG4gICAgICBjb25zdCByYWRpdXMgPSByYWRpdXNNYXBwaW5nW3VpUmFkaXVzLmJvdHRvbUxlZnRdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzJyxcbiAgICAgICAgcmFkaXVzXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1aVJhZGl1cy5ib3R0b21SaWdodCkge1xuICAgICAgY29uc3QgcmFkaXVzID0gcmFkaXVzTWFwcGluZ1t1aVJhZGl1cy5ib3R0b21SaWdodF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzJyxcbiAgICAgICAgcmFkaXVzXG4gICAgICApO1xuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNwYWNpbmcodWlTcGFjaW5nOiBVSVNwYWNpbmcpIHtcbiAgICBpZiAodWlTcGFjaW5nLnNwYWNpbmcpIHtcbiAgICAgIGNvbnN0IHNwYWNpbmdWYWx1ZSA9IHNwYWNlTWFwcGluZ1t1aVNwYWNpbmcuc3BhY2luZ107XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2dhcCcsXG4gICAgICAgIHNwYWNpbmdWYWx1ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SGVpZ2h0KGhlaWdodDogVUlEaW1lbnNpb24pIHtcbiAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICBjb25zdCBoZWlnaHRWYWx1ZSA9IGRpbWVuc2lvbk1hcHBpbmdbaGVpZ2h0XTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgaGVpZ2h0VmFsdWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVdpZHRoKHdpZHRoOiBVSURpbWVuc2lvbikge1xuICAgIGlmICh3aWR0aCkge1xuICAgICAgY29uc3Qgd2lkdGhWYWx1ZSA9IGRpbWVuc2lvbk1hcHBpbmdbd2lkdGhdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICd3aWR0aCcsXG4gICAgICAgIHdpZHRoVmFsdWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUJvcmRlcldpZHRoKGJvcmRlcldpZHRoOiBudW1iZXIpIHtcbiAgICBpZiAoYm9yZGVyV2lkdGggIT09IG51bGwgJiYgYm9yZGVyV2lkdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdib3JkZXItd2lkdGgnLFxuICAgICAgICBgJHtib3JkZXJXaWR0aH1weGBcbiAgICAgICk7XG5cbiAgICAgIC8vIEVuc3VyZSBib3JkZXIgc3R5bGUgaXMgc2V0LCBvdGhlcndpc2UgYm9yZGVyLXdpZHRoIHdvbid0IGJlIHZpc2libGVcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYm9yZGVyLXN0eWxlJyxcbiAgICAgICAgJ3NvbGlkJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Qm9yZGVyQ29sb3IoYm9yZGVyQ29sb3I6IFVJQ29sb3IpIHtcbiAgICBpZiAoYm9yZGVyQ29sb3IpIHtcbiAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JNYXBwaW5nW2JvcmRlckNvbG9yXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnYm9yZGVyLWNvbG9yJyxcbiAgICAgICAgY29sb3JcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUp1c3RpZnkoanVzdGlmeTogVUlKdXN0aWZ5KSB7XG4gICAgaWYgKGp1c3RpZnkpIHtcbiAgICAgIGNvbnN0IGp1c3RpZnlWYWx1ZSA9IGp1c3RpZnlNYXBwaW5nW2p1c3RpZnldO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnLFxuICAgICAgICBqdXN0aWZ5VmFsdWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUFzcGVjdFJhdGlvKGFzcGVjdFJhdGlvOiBudW1iZXIpIHtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTaXplKHNpemU6IFVJU2l6ZSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHNpemVNYXBwaW5nW3NpemVdO1xuICAgIGlmICghY29uZmlnKSByZXR1cm47XG5cbiAgICBsZXQgeyB3aWR0aDogd2lkdGhWYWx1ZSwgaGVpZ2h0OiBoZWlnaHRWYWx1ZSB9ID0gY29uZmlnO1xuXG4gICAgaWYgKGNvbmZpZy5zY2FsYWJsZSAmJiB0aGlzLmlzU21hbGxTY3JlZW4oKSkge1xuICAgICAgd2lkdGhWYWx1ZSA9IHRoaXMuc2NhbGVQaXhlbFZhbHVlKHdpZHRoVmFsdWUsIDEuMSk7XG4gICAgICBoZWlnaHRWYWx1ZSA9IHRoaXMuc2NhbGVQaXhlbFZhbHVlKGhlaWdodFZhbHVlLCAxLjEpO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIHdpZHRoVmFsdWUpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdoZWlnaHQnLCBoZWlnaHRWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SG92ZXJWYXJzKHVpVmlldzogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaG92ZXIgPSB1aVZpZXc/LmhvdmVyID8/IHVpVmlldz8uZWxlbWVudD8uaG92ZXI7XG4gICAgaWYgKCFob3ZlcikgcmV0dXJuO1xuXG4gICAgY29uc3QgZWwgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIC8vIG1hcmNhIHF1ZSBlc3NlIGVsZW1lbnRvIHRlbSBob3ZlclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZWwsICdlZG0taG92ZXInKTtcblxuICAgIGlmIChob3Zlci5ib3JkZXJfY29sb3IgfHwgaG92ZXIuYm9yZGVyQ29sb3IpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gKGhvdmVyLmJvcmRlcl9jb2xvciA/PyBob3Zlci5ib3JkZXJDb2xvcikucmVwbGFjZSgvXy9nLCAnLScpO1xuICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoJy0tZWRtLWhvdmVyLWJvcmRlci1jb2xvcicsIGB2YXIoLS0ke3Rva2VufSlgKTtcbiAgICB9XG5cbiAgICBpZiAoaG92ZXIuYmFja2dyb3VuZF9jb2xvciB8fCBob3Zlci5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gKGhvdmVyLmJhY2tncm91bmRfY29sb3IgPz8gaG92ZXIuYmFja2dyb3VuZENvbG9yKS5yZXBsYWNlKC9fL2csICctJyk7XG4gICAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1lZG0taG92ZXItYmctY29sb3InLCBgdmFyKC0tJHt0b2tlbn0pYCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1NtYWxsU2NyZWVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuaW5uZXJXaWR0aCA+PSA1NjU7XG4gIH1cblxuICBwcml2YXRlIHNjYWxlUGl4ZWxWYWx1ZSh2YWx1ZTogc3RyaW5nLCBkaXZpc29yOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1hdGNoID0gL14oXFxkKyg/OlxcLlxcZCspPylweCQvLmV4ZWModmFsdWUpO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBudW0gPSBwYXJzZUZsb2F0KG1hdGNoWzFdKTtcbiAgICBjb25zdCBzY2FsZWQgPSBudW0gKiBkaXZpc29yO1xuICAgIHJldHVybiBgJHtzY2FsZWR9cHhgO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IGlzU21hbGwgPSB0aGlzLmlzU21hbGxTY3JlZW4oKTtcbiAgICBpZiAodGhpcy5sYXN0VWlWaWV3ICYmIGlzU21hbGwgIT09IHRoaXMud2FzU21hbGxTY3JlZW4pIHtcbiAgICAgIHRoaXMuYXBwbHlTdHlsZXModGhpcy5sYXN0VWlWaWV3KTtcbiAgICAgIHRoaXMud2FzU21hbGxTY3JlZW4gPSBpc1NtYWxsO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlQ2xpY2spIHJldHVybjtcblxuICAgIGlmICh0aGlzLmVkbVNkdWlWaWV3Py5hY3Rpb24pIHtcbiAgICAgIHRoaXMuY2FwdHVyZUV4cGxvcmVTY3JvbGxDb250ZXh0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMuYWN0aW9uU2VydmljZS5leGVjdXRlKHRoaXMuZWRtU2R1aVZpZXcuYWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNhcHR1cmVFeHBsb3JlU2Nyb2xsQ29udGV4dCgpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgIXRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnL2V4cGxvcmFyJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3Qgc2Nyb2xsUm93ID0gZWxlbWVudC5jbG9zZXN0KCcuc2Nyb2xsYWJsZS1yb3cnKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICBpZiAoIXNjcm9sbFJvdykge1xuICAgICAgdGhpcy5jbGVhckV4cGxvcmVIb3Jpem9udGFsU2Nyb2xsQ29udGV4dCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLnJlc29sdmVFeHBsb3JlU2VjdGlvbihlbGVtZW50LCBzY3JvbGxSb3cpO1xuICAgIGNvbnN0IGFjdGl2ZVRhZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcucm93LXRhZy0tc2VsZWN0ZWQnKT8uZ2V0QXR0cmlidXRlKCdkYXRhLXRhZycpO1xuICAgIGNvbnN0IHNlY3Rpb25JZCA9IHNlY3Rpb24/LmlkIHx8IGFjdGl2ZVRhZyB8fCBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFVJVmlld0RpcmVjdGl2ZS5FWFBMT1JFX0xBU1RfQU5DSE9SX0tFWSk7XG4gICAgY29uc3Qgcm93SW5kZXggPSB0aGlzLnJlc29sdmVSb3dJbmRleChzY3JvbGxSb3csIHNlY3Rpb24pO1xuICAgIGNvbnN0IGl0ZW1JZCA9IHRoaXMucmVzb2x2ZUNsaWNrZWRJdGVtSWQoZWxlbWVudCwgc2VjdGlvbik7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHNlY3Rpb25JZCkge1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFVJVmlld0RpcmVjdGl2ZS5FWFBMT1JFX0xBU1RfQU5DSE9SX0tFWSwgc2VjdGlvbklkKTtcbiAgICAgIH1cbiAgICAgIC8vIFNhbHZhIG8gYW5jaG9yIGRvIGNsaXF1ZSBzZXBhcmFkbyBkbyBzY3JvbGwgc3B5IHBhcmEgbsOjbyBzZXIgc29icmVzY3JpdG8gZHVyYW50ZSBuYXZlZ2HDp8Ojb1xuICAgICAgY29uc3QgY2xpY2tlZEFuY2hvciA9IHNlY3Rpb24/LmlkIHx8IGFjdGl2ZVRhZztcbiAgICAgIGlmIChjbGlja2VkQW5jaG9yKSB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVUlWaWV3RGlyZWN0aXZlLkVYUExPUkVfQ0xJQ0tFRF9BTkNIT1JfS0VZLCBjbGlja2VkQW5jaG9yKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJvd0luZGV4ID49IDApIHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX1JPV19JTkRFWF9LRVksIFN0cmluZyhyb3dJbmRleCkpO1xuICAgICAgfVxuXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICBVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX1JPV19TQ1JPTExfTEVGVF9LRVksXG4gICAgICAgIFN0cmluZyhNYXRoLnJvdW5kKHNjcm9sbFJvdy5zY3JvbGxMZWZ0KSlcbiAgICAgICk7XG5cbiAgICAgIGlmIChpdGVtSWQpIHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX0lURU1fSURfS0VZLCBpdGVtSWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShVSVZpZXdEaXJlY3RpdmUuRVhQTE9SRV9MQVNUX0lURU1fSURfS0VZKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHt9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRXhwbG9yZUhvcml6b250YWxTY3JvbGxDb250ZXh0KCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFVJVmlld0RpcmVjdGl2ZS5FWFBMT1JFX0xBU1RfUk9XX0lOREVYX0tFWSk7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFVJVmlld0RpcmVjdGl2ZS5FWFBMT1JFX0xBU1RfUk9XX1NDUk9MTF9MRUZUX0tFWSk7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFVJVmlld0RpcmVjdGl2ZS5FWFBMT1JFX0xBU1RfSVRFTV9JRF9LRVkpO1xuICAgIH0gY2F0Y2gge31cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUV4cGxvcmVTZWN0aW9uKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBzY3JvbGxSb3c6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBmcm9tQW5jZXN0b3IgPVxuICAgICAgc2Nyb2xsUm93LmNsb3Nlc3QoJ1tkYXRhLWFuY2hvci10YXJnZXRdW2lkXScpIGFzIEhUTUxFbGVtZW50IHwgbnVsbCB8fFxuICAgICAgc2Nyb2xsUm93LmNsb3Nlc3QoJy5jb2x1bW5baWRdJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsIHx8XG4gICAgICBlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLWFuY2hvci10YXJnZXRdW2lkXScpIGFzIEhUTUxFbGVtZW50IHwgbnVsbCB8fFxuICAgICAgZWxlbWVudC5jbG9zZXN0KCcuY29sdW1uW2lkXScpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgIGlmIChmcm9tQW5jZXN0b3IpIHJldHVybiBmcm9tQW5jZXN0b3I7XG5cbiAgICAvLyBTZcOnw7VlcyBwb2RlbSBzZXIgaXJtw6NzIGRvIHNjcm9sbGFibGUtcm93IChuw6NvIGFuY2VzdHJhaXMpLlxuICAgIC8vIFNvYmUgYXTDqSBvIHdyYXBwZXIgZWRtLXNkdWktY29tcG9uZW50IGUgcGVyY29ycmUgaXJtw6NvcyBhbnRlcmlvcmVzLlxuICAgIGNvbnN0IHdyYXBwZXIgPSBzY3JvbGxSb3cuY2xvc2VzdCgnZWRtLXNkdWktY29tcG9uZW50JykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGxldCBzaWJsaW5nID0gd3JhcHBlcj8ucHJldmlvdXNFbGVtZW50U2libGluZyBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgd2hpbGUgKHNpYmxpbmcpIHtcbiAgICAgIGlmIChzaWJsaW5nLm1hdGNoZXMoJy5jb2x1bW5baWRdJykgfHwgc2libGluZy5tYXRjaGVzKCdbZGF0YS1hbmNob3ItdGFyZ2V0XVtpZF0nKSkge1xuICAgICAgICByZXR1cm4gc2libGluZztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlubmVyID0gc2libGluZy5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLmNvbHVtbltpZF0nKSB8fFxuICAgICAgICBzaWJsaW5nLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCdbZGF0YS1hbmNob3ItdGFyZ2V0XVtpZF0nKTtcbiAgICAgIGlmIChpbm5lcikgcmV0dXJuIGlubmVyO1xuICAgICAgc2libGluZyA9IHNpYmxpbmcucHJldmlvdXNFbGVtZW50U2libGluZyBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVSb3dJbmRleChzY3JvbGxSb3c6IEhUTUxFbGVtZW50LCBzZWN0aW9uOiBIVE1MRWxlbWVudCB8IG51bGwpOiBudW1iZXIge1xuICAgIGNvbnN0IHNjb3BlID0gc2VjdGlvbiA/PyAoc2Nyb2xsUm93LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfCBudWxsKTtcbiAgICBpZiAoIXNjb3BlKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oc2NvcGUucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5zY3JvbGxhYmxlLXJvdycpKS5pbmRleE9mKHNjcm9sbFJvdyk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVDbGlja2VkSXRlbUlkKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBzZWN0aW9uOiBIVE1MRWxlbWVudCB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoZWxlbWVudC5pZCAmJiBlbGVtZW50LmlkICE9PSBzZWN0aW9uPy5pZCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuaWQ7XG4gICAgfVxuXG4gICAgY29uc3QgY2FuZGlkYXRlID0gZWxlbWVudC5jbG9zZXN0KCdbaWRdJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmIChjYW5kaWRhdGU/LmlkICYmIGNhbmRpZGF0ZS5pZCAhPT0gc2VjdGlvbj8uaWQpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGUuaWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -1,28 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { RouterModule } from '@angular/router';
3
- import { SduiComponent } from './sdui.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/router";
6
- const defaultRoutes = [{ path: 'sdui', component: SduiComponent }];
7
- export class SduiRoutingModule {
8
- static forChild(customPath) {
9
- const routes = customPath
10
- ? [{ path: customPath, component: SduiComponent }]
11
- : defaultRoutes;
12
- return {
13
- ngModule: SduiRoutingModule,
14
- providers: [],
15
- };
16
- }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SduiRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: SduiRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] }); }
19
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SduiRoutingModule, imports: [RouterModule.forChild(defaultRoutes), RouterModule] }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SduiRoutingModule, decorators: [{
22
- type: NgModule,
23
- args: [{
24
- imports: [RouterModule.forChild(defaultRoutes)],
25
- exports: [RouterModule],
26
- }]
27
- }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2R1aS1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvc2R1aS9zcmMvbGliL3NkdWktcm91dGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBRWpELE1BQU0sYUFBYSxHQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBTTNFLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFtQjtRQUNqQyxNQUFNLE1BQU0sR0FBRyxVQUFVO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDbEQsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUVsQixPQUFPO1lBQ0wsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUM7SUFDSixDQUFDOytHQVZVLGlCQUFpQjtnSEFBakIsaUJBQWlCLHdDQUZsQixZQUFZO2dIQUVYLGlCQUFpQixZQUhsQixZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUNwQyxZQUFZOzs0RkFFWCxpQkFBaUI7a0JBSjdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDL0MsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTZHVpQ29tcG9uZW50IH0gZnJvbSAnLi9zZHVpLmNvbXBvbmVudCc7XG5cbmNvbnN0IGRlZmF1bHRSb3V0ZXM6IFJvdXRlcyA9IFt7IHBhdGg6ICdzZHVpJywgY29tcG9uZW50OiBTZHVpQ29tcG9uZW50IH1dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKGRlZmF1bHRSb3V0ZXMpXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNkdWlSb3V0aW5nTW9kdWxlIHtcbiAgc3RhdGljIGZvckNoaWxkKGN1c3RvbVBhdGg/OiBzdHJpbmcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFNkdWlSb3V0aW5nTW9kdWxlPiB7XG4gICAgY29uc3Qgcm91dGVzID0gY3VzdG9tUGF0aFxuICAgICAgPyBbeyBwYXRoOiBjdXN0b21QYXRoLCBjb21wb25lbnQ6IFNkdWlDb21wb25lbnQgfV1cbiAgICAgIDogZGVmYXVsdFJvdXRlcztcblxuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogU2R1aVJvdXRpbmdNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,51 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { ActivatedRoute } from '@angular/router';
3
- import { UIScreenViewModel, SDUI_URL_PARAM, } from './core/view-models/uiscreen.viewmodel';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/router";
6
- import * as i2 from "./core/view-models/uiscreen.viewmodel";
7
- import * as i3 from "@angular/common";
8
- import * as i4 from "./components/uiscreen/uiscreen.component";
9
- export class SduiComponent {
10
- constructor(route, viewModel) {
11
- this.route = route;
12
- this.viewModel = viewModel;
13
- this.currentSduiUrl = null;
14
- this.initialUrl = null;
15
- }
16
- ngOnInit() {
17
- this.viewModel.currentUrl$.subscribe((url) => {
18
- this.currentSduiUrl = url;
19
- });
20
- this.route.queryParams.subscribe((params) => {
21
- const paramValue = params[SDUI_URL_PARAM];
22
- const hasValidParam = this.validateParam(paramValue);
23
- if (hasValidParam) {
24
- console.debug('[SduiComponent] carregando sdui do parâmetro...');
25
- this.viewModel.loadUIScreen(paramValue);
26
- }
27
- });
28
- }
29
- ngAfterViewInit() {
30
- const paramValue = this.route.snapshot.queryParamMap.get(SDUI_URL_PARAM);
31
- const hasValidParam = this.validateParam(paramValue);
32
- if (!hasValidParam &&
33
- this.initialUrl &&
34
- this.currentSduiUrl !== this.initialUrl) {
35
- console.debug('[SduiComponent] carregando initialUrl:', this.initialUrl);
36
- this.viewModel.loadUIScreen(this.initialUrl);
37
- }
38
- }
39
- validateParam(paramValue) {
40
- return !!paramValue && paramValue.trim() !== '';
41
- }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SduiComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.UIScreenViewModel }], target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: SduiComponent, isStandalone: false, selector: "edm-sdui", inputs: { initialUrl: "initialUrl" }, ngImport: i0, template: "<div class=\"sdui-container\">\n <edm-sdui-uiscreen *ngIf=\"currentSduiUrl\"></edm-sdui-uiscreen>\n</div>\n", styles: [":host{display:contents}.sdui-container{display:flex;flex-direction:column;min-height:100vh;width:100vw;position:relative}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.UIScreenComponent, selector: "edm-sdui-uiscreen" }] }); }
44
- }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SduiComponent, decorators: [{
46
- type: Component,
47
- args: [{ selector: 'edm-sdui', standalone: false, template: "<div class=\"sdui-container\">\n <edm-sdui-uiscreen *ngIf=\"currentSduiUrl\"></edm-sdui-uiscreen>\n</div>\n", styles: [":host{display:contents}.sdui-container{display:flex;flex-direction:column;min-height:100vh;width:100vw;position:relative}\n"] }]
48
- }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.UIScreenViewModel }], propDecorators: { initialUrl: [{
49
- type: Input
50
- }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2R1aS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9zZHVpLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvc2R1aS9zcmMvbGliL3NkdWkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGNBQWMsR0FDZixNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7QUFRL0MsTUFBTSxPQUFPLGFBQWE7SUFLeEIsWUFDVSxLQUFxQixFQUNyQixTQUE0QjtRQUQ1QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQU50QyxtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFFNUIsZUFBVSxHQUFrQixJQUFJLENBQUM7SUFLdkMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUUxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JELElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztnQkFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFckQsSUFDRSxDQUFDLGFBQWE7WUFDZCxJQUFJLENBQUMsVUFBVTtZQUNmLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFDdkMsQ0FBQztZQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxVQUFlO1FBQ25DLE9BQU8sQ0FBQyxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2xELENBQUM7K0dBMUNVLGFBQWE7bUdBQWIsYUFBYSwyR0NiMUIsOEdBR0E7OzRGRFVhLGFBQWE7a0JBTnpCLFNBQVM7K0JBQ0UsVUFBVSxjQUdSLEtBQUs7bUhBS1IsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgVUlTY3JlZW5WaWV3TW9kZWwsXG4gIFNEVUlfVVJMX1BBUkFNLFxufSBmcm9tICcuL2NvcmUvdmlldy1tb2RlbHMvdWlzY3JlZW4udmlld21vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWRtLXNkdWknLFxuICB0ZW1wbGF0ZVVybDogJy4vc2R1aS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NkdWkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNkdWlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBjdXJyZW50U2R1aVVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KCkgaW5pdGlhbFVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB2aWV3TW9kZWw6IFVJU2NyZWVuVmlld01vZGVsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnZpZXdNb2RlbC5jdXJyZW50VXJsJC5zdWJzY3JpYmUoKHVybCkgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50U2R1aVVybCA9IHVybDtcbiAgICB9KTtcblxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSBwYXJhbXNbU0RVSV9VUkxfUEFSQU1dO1xuXG4gICAgICBjb25zdCBoYXNWYWxpZFBhcmFtID0gdGhpcy52YWxpZGF0ZVBhcmFtKHBhcmFtVmFsdWUpO1xuICAgICAgaWYgKGhhc1ZhbGlkUGFyYW0pIHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnW1NkdWlDb21wb25lbnRdIGNhcnJlZ2FuZG8gc2R1aSBkbyBwYXLDom1ldHJvLi4uJyk7XG4gICAgICAgIHRoaXMudmlld01vZGVsLmxvYWRVSVNjcmVlbihwYXJhbVZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbVZhbHVlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChTRFVJX1VSTF9QQVJBTSk7XG4gICAgY29uc3QgaGFzVmFsaWRQYXJhbSA9IHRoaXMudmFsaWRhdGVQYXJhbShwYXJhbVZhbHVlKTtcblxuICAgIGlmIChcbiAgICAgICFoYXNWYWxpZFBhcmFtICYmXG4gICAgICB0aGlzLmluaXRpYWxVcmwgJiZcbiAgICAgIHRoaXMuY3VycmVudFNkdWlVcmwgIT09IHRoaXMuaW5pdGlhbFVybFxuICAgICkge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW1NkdWlDb21wb25lbnRdIGNhcnJlZ2FuZG8gaW5pdGlhbFVybDonLCB0aGlzLmluaXRpYWxVcmwpO1xuICAgICAgdGhpcy52aWV3TW9kZWwubG9hZFVJU2NyZWVuKHRoaXMuaW5pdGlhbFVybCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVBhcmFtKHBhcmFtVmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXBhcmFtVmFsdWUgJiYgcGFyYW1WYWx1ZS50cmltKCkgIT09ICcnO1xuICB9XG5cblxufVxuIiwiPGRpdiBjbGFzcz1cInNkdWktY29udGFpbmVyXCI+XG4gIDxlZG0tc2R1aS11aXNjcmVlbiAqbmdJZj1cImN1cnJlbnRTZHVpVXJsXCI+PC9lZG0tc2R1aS11aXNjcmVlbj5cbjwvZGl2PlxuIl19