@datarailsshared/datarailsshared 1.4.202 → 1.4.203-rocket

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 (358) hide show
  1. package/_datarailsshared.styles.css +4 -4
  2. package/assets/styles/_styles.scss +2 -2
  3. package/datarailsshared-datarailsshared-1.4.203-rocket.tgz +0 -0
  4. package/esm2022/datarailsshared-datarailsshared.mjs +5 -0
  5. package/esm2022/lib/date-tags/any-tag.component.mjs +44 -0
  6. package/esm2022/lib/date-tags/date-tag.component.mjs +47 -0
  7. package/esm2022/lib/date-tags/date-tag.module.mjs +66 -0
  8. package/esm2022/lib/date-tags/day-tag/day-tag.component.mjs +82 -0
  9. package/esm2022/lib/date-tags/forecast-tag/forecast-tag.component.mjs +159 -0
  10. package/esm2022/lib/date-tags/month-tag/month-tag.component.mjs +87 -0
  11. package/esm2022/lib/date-tags/quarter-tag/quarter-tag.component.mjs +106 -0
  12. package/esm2022/lib/date-tags/week-tag/week-tag.component.mjs +89 -0
  13. package/esm2022/lib/date-tags/year-tag/year-tag.component.mjs +83 -0
  14. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +92 -0
  15. package/esm2022/lib/directives/click-outside/click-outside.module.mjs +18 -0
  16. package/esm2022/lib/dr-accordion/accordion-item-body.component.mjs +58 -0
  17. package/esm2022/lib/dr-accordion/accordion-item-header.component.mjs +108 -0
  18. package/esm2022/lib/dr-accordion/accordion-item.component.mjs +138 -0
  19. package/esm2022/lib/dr-accordion/accordion.component.mjs +42 -0
  20. package/esm2022/lib/dr-accordion/accordion.module.mjs +34 -0
  21. package/esm2022/lib/dr-avatar/dr-avatar.component.mjs +48 -0
  22. package/esm2022/lib/dr-avatar/dr-avatar.module.mjs +37 -0
  23. package/esm2022/lib/dr-avatar/dr-avatar.pipe.mjs +20 -0
  24. package/esm2022/lib/dr-badge-status/dr-badge-status.component.mjs +27 -0
  25. package/esm2022/lib/dr-badge-status/dr-badge-status.module.mjs +27 -0
  26. package/esm2022/lib/dr-chat/chat.component.mjs +138 -0
  27. package/esm2022/lib/dr-chat/chat.module.mjs +68 -0
  28. package/esm2022/lib/dr-chat/dr-chat-form/chat-form.component.mjs +168 -0
  29. package/esm2022/lib/dr-chat/dr-chat-message/chat-message.component.mjs +89 -0
  30. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.mjs +47 -0
  31. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.mjs +26 -0
  32. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.mjs +49 -0
  33. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.mjs +17 -0
  34. package/esm2022/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.mjs +88 -0
  35. package/esm2022/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.mjs +13 -0
  36. package/esm2022/lib/dr-details-list/dr-details-list.component.mjs +79 -0
  37. package/esm2022/lib/dr-details-list/dr-details-list.module.mjs +21 -0
  38. package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs +76 -0
  39. package/esm2022/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.mjs +97 -0
  40. package/esm2022/lib/dr-dialog/dialog.module.mjs +51 -0
  41. package/esm2022/lib/dr-dialog/interfaces/dialog-data.mjs +25 -0
  42. package/esm2022/lib/dr-dialog/services/dialog.service.mjs +77 -0
  43. package/esm2022/lib/dr-dropdown/dr-dropdown-item-show.pipe.mjs +16 -0
  44. package/esm2022/lib/dr-dropdown/dr-dropdown-position.directive.mjs +104 -0
  45. package/esm2022/lib/dr-dropdown/dr-dropdown.component.mjs +116 -0
  46. package/esm2022/lib/dr-dropdown/dr-dropdown.directive.mjs +117 -0
  47. package/esm2022/lib/dr-dropdown/dr-dropdown.module.mjs +49 -0
  48. package/esm2022/lib/dr-dropdown/dr-dropdown.service.mjs +25 -0
  49. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +112 -0
  50. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.module.mjs +28 -0
  51. package/esm2022/lib/dr-error/dr-error.component.mjs +67 -0
  52. package/esm2022/lib/dr-error/dr-error.module.mjs +31 -0
  53. package/esm2022/lib/dr-inputs/button/button.component.mjs +66 -0
  54. package/esm2022/lib/dr-inputs/checkbox/checkbox.component.mjs +65 -0
  55. package/esm2022/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.mjs +64 -0
  56. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.mjs +226 -0
  57. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.mjs +190 -0
  58. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.mjs +186 -0
  59. package/esm2022/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.mjs +16 -0
  60. package/esm2022/lib/dr-inputs/date-pickers/services/dr-date-picker.service.mjs +195 -0
  61. package/esm2022/lib/dr-inputs/dr-input/dr-input.component.mjs +218 -0
  62. package/esm2022/lib/dr-inputs/dr-inputs.module.mjs +108 -0
  63. package/esm2022/lib/dr-inputs/dr-model-debounce-change.directive.mjs +31 -0
  64. package/esm2022/lib/dr-inputs/dr-select/dr-select.component.mjs +159 -0
  65. package/esm2022/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.mjs +79 -0
  66. package/esm2022/lib/dr-inputs/dr-toggle/dr-toggle.component.mjs +72 -0
  67. package/esm2022/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.mjs +66 -0
  68. package/esm2022/lib/dr-inputs/radio-button/radio-button.component.mjs +78 -0
  69. package/esm2022/lib/dr-inputs/radio-button/radio-group.component.mjs +173 -0
  70. package/esm2022/lib/dr-layout/dr-layout-body.component.mjs +16 -0
  71. package/esm2022/lib/dr-layout/dr-layout-header.component.mjs +24 -0
  72. package/esm2022/lib/dr-layout/dr-layout.component.mjs +13 -0
  73. package/esm2022/lib/dr-layout/dr-layout.module.mjs +29 -0
  74. package/esm2022/lib/dr-popover/dr-popover.component.mjs +126 -0
  75. package/esm2022/lib/dr-popover/dr-popover.directive.mjs +110 -0
  76. package/esm2022/lib/dr-popover/dr-popover.module.mjs +30 -0
  77. package/esm2022/lib/dr-popover/dr-popover.service.mjs +107 -0
  78. package/esm2022/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.mjs +105 -0
  79. package/esm2022/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.mjs +83 -0
  80. package/esm2022/lib/dr-scenario/consts/scenario-tags-config.mjs +81 -0
  81. package/esm2022/lib/dr-scenario/dr-scenario.module.mjs +41 -0
  82. package/esm2022/lib/dr-scenario/services/scenario.service.mjs +165 -0
  83. package/esm2022/lib/dr-spinner/dr-spinner.component.mjs +17 -0
  84. package/esm2022/lib/dr-spinner/dr-spinner.directive.mjs +59 -0
  85. package/esm2022/lib/dr-spinner/dr-spinner.module.mjs +23 -0
  86. package/esm2022/lib/dr-tabs/dr-tab.component.mjs +37 -0
  87. package/esm2022/lib/dr-tabs/dr-tabs.component.mjs +47 -0
  88. package/esm2022/lib/dr-tabs/dr-tabs.module.mjs +49 -0
  89. package/esm2022/lib/dr-tags/dr-tag.component.mjs +188 -0
  90. package/esm2022/lib/dr-tags/dr-tag.module.mjs +35 -0
  91. package/esm2022/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.mjs +18 -0
  92. package/esm2022/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.mjs +16 -0
  93. package/esm2022/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.mjs +18 -0
  94. package/esm2022/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.mjs +19 -0
  95. package/esm2022/lib/dr-tooltip/dr-tooltip.component.mjs +48 -0
  96. package/esm2022/lib/dr-tooltip/dr-tooltip.directive.mjs +156 -0
  97. package/esm2022/lib/dr-tooltip/dr-tooltip.module.mjs +48 -0
  98. package/esm2022/lib/dr-treeview/components/treeview/treeview.component.mjs +215 -0
  99. package/esm2022/lib/dr-treeview/components/treeview-item/treeview-item.component.mjs +60 -0
  100. package/esm2022/lib/dr-treeview/dr-tree-view.module.mjs +48 -0
  101. package/esm2022/lib/dr-treeview/helpers/treeview-event-parser.mjs +106 -0
  102. package/esm2022/lib/dr-treeview/models/treeview-config.mjs +25 -0
  103. package/esm2022/lib/dr-treeview/models/treeview-i18n.mjs +47 -0
  104. package/esm2022/lib/dr-treeview/pipes/treeview.pipe.mjs +21 -0
  105. package/esm2022/lib/list-tags/list-tag.component.mjs +42 -0
  106. package/esm2022/lib/list-tags/list-tag.module.mjs +34 -0
  107. package/esm2022/lib/models/chat.mjs +36 -0
  108. package/{esm2015/lib/models/datePicker.js → esm2022/lib/models/datePicker.mjs} +1 -1
  109. package/esm2022/lib/models/popover.mjs +27 -0
  110. package/esm2022/lib/stepper/stepper.component.mjs +63 -0
  111. package/esm2022/lib/stepper/stepper.module.mjs +24 -0
  112. package/esm2022/lib/utils/dr-shared-utils.mjs +47 -0
  113. package/esm2022/public-api.mjs +120 -0
  114. package/fesm2022/datarailsshared-datarailsshared.mjs +7551 -0
  115. package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -0
  116. package/index.d.ts +5 -0
  117. package/lib/date-tags/any-tag.component.d.ts +20 -0
  118. package/lib/date-tags/date-tag.component.d.ts +4 -16
  119. package/lib/date-tags/date-tag.module.d.ts +19 -2
  120. package/lib/date-tags/day-tag/day-tag.component.d.ts +4 -1
  121. package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +5 -2
  122. package/lib/date-tags/month-tag/month-tag.component.d.ts +4 -1
  123. package/lib/date-tags/quarter-tag/quarter-tag.component.d.ts +4 -1
  124. package/lib/date-tags/week-tag/week-tag.component.d.ts +4 -1
  125. package/lib/date-tags/year-tag/year-tag.component.d.ts +4 -1
  126. package/lib/directives/click-outside/click-outside.directive.d.ts +23 -0
  127. package/lib/directives/click-outside/click-outside.module.d.ts +8 -0
  128. package/lib/dr-accordion/accordion-item-body.component.d.ts +3 -0
  129. package/lib/dr-accordion/accordion-item-header.component.d.ts +3 -0
  130. package/lib/dr-accordion/accordion-item.component.d.ts +3 -0
  131. package/lib/dr-accordion/accordion.component.d.ts +3 -0
  132. package/lib/dr-accordion/accordion.module.d.ts +9 -0
  133. package/lib/dr-avatar/dr-avatar.component.d.ts +3 -0
  134. package/lib/dr-avatar/dr-avatar.module.d.ts +9 -0
  135. package/lib/dr-avatar/dr-avatar.pipe.d.ts +3 -0
  136. package/lib/dr-badge-status/dr-badge-status.component.d.ts +3 -0
  137. package/lib/dr-badge-status/dr-badge-status.module.d.ts +7 -0
  138. package/lib/dr-chat/chat.component.d.ts +3 -0
  139. package/lib/dr-chat/chat.module.d.ts +17 -0
  140. package/lib/dr-chat/dr-chat-form/chat-form.component.d.ts +3 -0
  141. package/lib/dr-chat/dr-chat-message/chat-message.component.d.ts +3 -0
  142. package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.d.ts +3 -0
  143. package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.d.ts +3 -0
  144. package/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.d.ts +3 -0
  145. package/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.d.ts +3 -0
  146. package/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.d.ts +3 -0
  147. package/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.d.ts +3 -0
  148. package/lib/dr-details-list/dr-details-list.component.d.ts +3 -0
  149. package/lib/dr-details-list/dr-details-list.module.d.ts +6 -0
  150. package/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.d.ts +4 -1
  151. package/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.d.ts +5 -2
  152. package/lib/dr-dialog/dialog.module.d.ts +12 -0
  153. package/lib/dr-dialog/interfaces/dialog-data.d.ts +7 -7
  154. package/lib/dr-dialog/services/dialog.service.d.ts +4 -1
  155. package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +3 -0
  156. package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +3 -0
  157. package/lib/dr-dropdown/dr-dropdown.component.d.ts +3 -0
  158. package/lib/dr-dropdown/dr-dropdown.directive.d.ts +3 -0
  159. package/lib/dr-dropdown/dr-dropdown.module.d.ts +10 -0
  160. package/lib/dr-dropdown/dr-dropdown.service.d.ts +3 -0
  161. package/lib/dr-dynamic-tag/dr-dynamic-tag.component.d.ts +3 -0
  162. package/lib/dr-dynamic-tag/dr-dynamic-tag.module.d.ts +8 -0
  163. package/lib/dr-error/dr-error.component.d.ts +3 -0
  164. package/lib/dr-error/dr-error.module.d.ts +8 -0
  165. package/lib/dr-inputs/button/button.component.d.ts +4 -1
  166. package/lib/dr-inputs/checkbox/checkbox.component.d.ts +3 -0
  167. package/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.d.ts +3 -0
  168. package/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.d.ts +3 -0
  169. package/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.d.ts +3 -0
  170. package/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +4 -8
  171. package/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.d.ts +4 -2
  172. package/lib/dr-inputs/date-pickers/services/dr-date-picker.service.d.ts +3 -0
  173. package/lib/dr-inputs/dr-input/dr-input.component.d.ts +3 -0
  174. package/lib/dr-inputs/dr-inputs.module.d.ts +25 -0
  175. package/lib/dr-inputs/dr-model-debounce-change.directive.d.ts +3 -0
  176. package/lib/dr-inputs/dr-select/dr-select.component.d.ts +3 -0
  177. package/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.d.ts +3 -0
  178. package/lib/dr-inputs/dr-toggle/dr-toggle.component.d.ts +3 -0
  179. package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +3 -0
  180. package/lib/dr-inputs/radio-button/radio-button.component.d.ts +3 -0
  181. package/lib/dr-inputs/radio-button/radio-group.component.d.ts +3 -0
  182. package/lib/dr-layout/dr-layout-body.component.d.ts +3 -0
  183. package/lib/dr-layout/dr-layout-header.component.d.ts +3 -0
  184. package/lib/dr-layout/dr-layout.component.d.ts +3 -0
  185. package/lib/dr-layout/dr-layout.module.d.ts +8 -0
  186. package/lib/dr-popover/dr-popover.component.d.ts +8 -4
  187. package/lib/dr-popover/dr-popover.directive.d.ts +3 -0
  188. package/lib/dr-popover/dr-popover.module.d.ts +7 -0
  189. package/lib/dr-popover/dr-popover.service.d.ts +3 -0
  190. package/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.d.ts +3 -0
  191. package/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.d.ts +3 -0
  192. package/lib/dr-scenario/dr-scenario.module.d.ts +10 -0
  193. package/lib/dr-scenario/interfaces/scenario.d.ts +3 -3
  194. package/lib/dr-scenario/services/scenario.service.d.ts +3 -0
  195. package/lib/dr-spinner/dr-spinner.component.d.ts +3 -0
  196. package/lib/dr-spinner/dr-spinner.directive.d.ts +3 -0
  197. package/lib/dr-spinner/dr-spinner.module.d.ts +7 -0
  198. package/lib/dr-tabs/dr-tab.component.d.ts +3 -0
  199. package/lib/dr-tabs/dr-tabs.component.d.ts +3 -0
  200. package/lib/dr-tabs/dr-tabs.module.d.ts +11 -0
  201. package/lib/dr-tags/dr-tag.component.d.ts +3 -0
  202. package/lib/dr-tags/dr-tag.module.d.ts +9 -0
  203. package/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.d.ts +3 -0
  204. package/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.d.ts +3 -0
  205. package/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.d.ts +3 -0
  206. package/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.d.ts +3 -0
  207. package/lib/dr-tooltip/dr-tooltip.component.d.ts +4 -1
  208. package/lib/dr-tooltip/dr-tooltip.directive.d.ts +3 -0
  209. package/lib/dr-tooltip/dr-tooltip.module.d.ts +11 -0
  210. package/lib/dr-tooltip/interfaces/tooltip-component-context.d.ts +1 -1
  211. package/lib/dr-treeview/components/treeview/treeview.component.d.ts +3 -0
  212. package/lib/dr-treeview/components/treeview-item/treeview-item.component.d.ts +3 -0
  213. package/lib/dr-treeview/dr-tree-view.module.d.ts +9 -0
  214. package/lib/dr-treeview/helpers/treeview-event-parser.d.ts +9 -0
  215. package/lib/dr-treeview/models/treeview-config.d.ts +3 -0
  216. package/lib/dr-treeview/models/treeview-i18n.d.ts +5 -0
  217. package/lib/dr-treeview/pipes/treeview.pipe.d.ts +3 -0
  218. package/lib/list-tags/list-tag.component.d.ts +3 -0
  219. package/lib/list-tags/list-tag.module.d.ts +8 -0
  220. package/lib/models/chat.d.ts +2 -2
  221. package/lib/models/datePicker.d.ts +10 -3
  222. package/lib/models/dropdown.d.ts +1 -1
  223. package/lib/models/popover.d.ts +1 -1
  224. package/lib/models/serverTags.d.ts +4 -4
  225. package/lib/stepper/interfaces/stepper.d.ts +1 -1
  226. package/lib/stepper/stepper.component.d.ts +3 -0
  227. package/lib/stepper/stepper.module.d.ts +7 -0
  228. package/package.json +27 -15
  229. package/public-api.d.ts +27 -0
  230. package/bundles/datarailsshared-datarailsshared.umd.js +0 -8041
  231. package/bundles/datarailsshared-datarailsshared.umd.js.map +0 -1
  232. package/datarailsshared-datarailsshared-1.4.202.tgz +0 -0
  233. package/datarailsshared-datarailsshared.d.ts +0 -34
  234. package/datarailsshared-datarailsshared.metadata.json +0 -1
  235. package/esm2015/datarailsshared-datarailsshared.js +0 -35
  236. package/esm2015/lib/date-tags/date-tag.component.js +0 -73
  237. package/esm2015/lib/date-tags/date-tag.module.js +0 -36
  238. package/esm2015/lib/date-tags/day-tag/day-tag.component.js +0 -77
  239. package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +0 -153
  240. package/esm2015/lib/date-tags/month-tag/month-tag.component.js +0 -80
  241. package/esm2015/lib/date-tags/quarter-tag/quarter-tag.component.js +0 -105
  242. package/esm2015/lib/date-tags/week-tag/week-tag.component.js +0 -84
  243. package/esm2015/lib/date-tags/year-tag/year-tag.component.js +0 -78
  244. package/esm2015/lib/dr-accordion/accordion-item-body.component.js +0 -55
  245. package/esm2015/lib/dr-accordion/accordion-item-header.component.js +0 -77
  246. package/esm2015/lib/dr-accordion/accordion-item.component.js +0 -123
  247. package/esm2015/lib/dr-accordion/accordion.component.js +0 -43
  248. package/esm2015/lib/dr-accordion/accordion.module.js +0 -23
  249. package/esm2015/lib/dr-avatar/dr-avatar.component.js +0 -44
  250. package/esm2015/lib/dr-avatar/dr-avatar.module.js +0 -26
  251. package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +0 -16
  252. package/esm2015/lib/dr-badge-status/dr-badge-status.component.js +0 -25
  253. package/esm2015/lib/dr-badge-status/dr-badge-status.module.js +0 -20
  254. package/esm2015/lib/dr-chat/chat.component.js +0 -119
  255. package/esm2015/lib/dr-chat/chat.module.js +0 -41
  256. package/esm2015/lib/dr-chat/dr-chat-form/chat-form.component.js +0 -155
  257. package/esm2015/lib/dr-chat/dr-chat-message/chat-message.component.js +0 -71
  258. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.js +0 -49
  259. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.js +0 -23
  260. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.js +0 -47
  261. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.js +0 -18
  262. package/esm2015/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.js +0 -87
  263. package/esm2015/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.js +0 -15
  264. package/esm2015/lib/dr-details-list/dr-details-list.component.js +0 -65
  265. package/esm2015/lib/dr-details-list/dr-details-list.module.js +0 -16
  266. package/esm2015/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.js +0 -70
  267. package/esm2015/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.js +0 -92
  268. package/esm2015/lib/dr-dialog/dialog.module.js +0 -34
  269. package/esm2015/lib/dr-dialog/interfaces/dialog-data.js +0 -25
  270. package/esm2015/lib/dr-dialog/services/dialog.service.js +0 -78
  271. package/esm2015/lib/dr-dropdown/dr-dropdown-item-show.pipe.js +0 -12
  272. package/esm2015/lib/dr-dropdown/dr-dropdown-position.directive.js +0 -104
  273. package/esm2015/lib/dr-dropdown/dr-dropdown.component.js +0 -114
  274. package/esm2015/lib/dr-dropdown/dr-dropdown.directive.js +0 -104
  275. package/esm2015/lib/dr-dropdown/dr-dropdown.module.js +0 -34
  276. package/esm2015/lib/dr-dropdown/dr-dropdown.service.js +0 -24
  277. package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.component.js +0 -103
  278. package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.module.js +0 -19
  279. package/esm2015/lib/dr-error/dr-error.component.js +0 -64
  280. package/esm2015/lib/dr-error/dr-error.module.js +0 -22
  281. package/esm2015/lib/dr-inputs/button/button.component.js +0 -39
  282. package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +0 -65
  283. package/esm2015/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.js +0 -47
  284. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.js +0 -216
  285. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.js +0 -180
  286. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +0 -183
  287. package/esm2015/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.js +0 -12
  288. package/esm2015/lib/dr-inputs/date-pickers/services/dr-date-picker.service.js +0 -194
  289. package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +0 -194
  290. package/esm2015/lib/dr-inputs/dr-inputs.module.js +0 -66
  291. package/esm2015/lib/dr-inputs/dr-model-debounce-change.directive.js +0 -29
  292. package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +0 -119
  293. package/esm2015/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.js +0 -74
  294. package/esm2015/lib/dr-inputs/dr-toggle/dr-toggle.component.js +0 -68
  295. package/esm2015/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.js +0 -63
  296. package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +0 -73
  297. package/esm2015/lib/dr-inputs/radio-button/radio-group.component.js +0 -157
  298. package/esm2015/lib/dr-layout/dr-layout-body.component.js +0 -13
  299. package/esm2015/lib/dr-layout/dr-layout-header.component.js +0 -17
  300. package/esm2015/lib/dr-layout/dr-layout.component.js +0 -14
  301. package/esm2015/lib/dr-layout/dr-layout.module.js +0 -20
  302. package/esm2015/lib/dr-popover/dr-popover.component.js +0 -106
  303. package/esm2015/lib/dr-popover/dr-popover.directive.js +0 -84
  304. package/esm2015/lib/dr-popover/dr-popover.module.js +0 -23
  305. package/esm2015/lib/dr-popover/dr-popover.service.js +0 -106
  306. package/esm2015/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.js +0 -102
  307. package/esm2015/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.js +0 -74
  308. package/esm2015/lib/dr-scenario/consts/scenario-tags-config.js +0 -73
  309. package/esm2015/lib/dr-scenario/dr-scenario.module.js +0 -28
  310. package/esm2015/lib/dr-scenario/services/scenario.service.js +0 -167
  311. package/esm2015/lib/dr-spinner/dr-spinner.component.js +0 -18
  312. package/esm2015/lib/dr-spinner/dr-spinner.directive.js +0 -56
  313. package/esm2015/lib/dr-spinner/dr-spinner.module.js +0 -18
  314. package/esm2015/lib/dr-tabs/dr-tab.component.js +0 -26
  315. package/esm2015/lib/dr-tabs/dr-tabs.component.js +0 -35
  316. package/esm2015/lib/dr-tabs/dr-tabs.module.js +0 -32
  317. package/esm2015/lib/dr-tags/dr-tag.component.js +0 -177
  318. package/esm2015/lib/dr-tags/dr-tag.module.js +0 -24
  319. package/esm2015/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.js +0 -19
  320. package/esm2015/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.js +0 -18
  321. package/esm2015/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.js +0 -20
  322. package/esm2015/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.js +0 -34
  323. package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +0 -40
  324. package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +0 -147
  325. package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +0 -35
  326. package/esm2015/lib/dr-treeview/components/treeview/treeview.component.js +0 -210
  327. package/esm2015/lib/dr-treeview/components/treeview-item/treeview-item.component.js +0 -58
  328. package/esm2015/lib/dr-treeview/dr-tree-view.module.js +0 -38
  329. package/esm2015/lib/dr-treeview/helpers/treeview-event-parser.js +0 -97
  330. package/esm2015/lib/dr-treeview/models/treeview-config.js +0 -22
  331. package/esm2015/lib/dr-treeview/models/treeview-i18n.js +0 -42
  332. package/esm2015/lib/dr-treeview/pipes/treeview.pipe.js +0 -17
  333. package/esm2015/lib/list-tags/list-tag.component.js +0 -37
  334. package/esm2015/lib/list-tags/list-tag.module.js +0 -23
  335. package/esm2015/lib/models/chat.js +0 -36
  336. package/esm2015/lib/models/popover.js +0 -27
  337. package/esm2015/lib/stepper/stepper.component.js +0 -55
  338. package/esm2015/lib/stepper/stepper.module.js +0 -17
  339. package/esm2015/lib/utils/dr-shared-utils.js +0 -47
  340. package/esm2015/public-api.js +0 -93
  341. package/fesm2015/datarailsshared-datarailsshared.js +0 -6885
  342. package/fesm2015/datarailsshared-datarailsshared.js.map +0 -1
  343. /package/{esm2015/lib/dr-inputs/dr-toggle-button/toggle-button-mode.js → esm2022/lib/dr-inputs/dr-toggle-button/toggle-button-mode.mjs} +0 -0
  344. /package/{esm2015/lib/dr-popover/dr-popover-ref.js → esm2022/lib/dr-popover/dr-popover-ref.mjs} +0 -0
  345. /package/{esm2015/lib/dr-scenario/interfaces/scenario.js → esm2022/lib/dr-scenario/interfaces/scenario.mjs} +0 -0
  346. /package/{esm2015/lib/dr-tooltip/enums/tooltip-position.enum.js → esm2022/lib/dr-tooltip/enums/tooltip-position.enum.mjs} +0 -0
  347. /package/{esm2015/lib/dr-tooltip/interfaces/tooltip-component-context.js → esm2022/lib/dr-tooltip/interfaces/tooltip-component-context.mjs} +0 -0
  348. /package/{esm2015/lib/dr-treeview/helpers/treeview-helper.js → esm2022/lib/dr-treeview/helpers/treeview-helper.mjs} +0 -0
  349. /package/{esm2015/lib/dr-treeview/models/treeview-header-template-context.js → esm2022/lib/dr-treeview/models/treeview-header-template-context.mjs} +0 -0
  350. /package/{esm2015/lib/dr-treeview/models/treeview-item-template-context.js → esm2022/lib/dr-treeview/models/treeview-item-template-context.mjs} +0 -0
  351. /package/{esm2015/lib/dr-treeview/models/treeview-item.js → esm2022/lib/dr-treeview/models/treeview-item.mjs} +0 -0
  352. /package/{esm2015/lib/models/badgeStatus.js → esm2022/lib/models/badgeStatus.mjs} +0 -0
  353. /package/{esm2015/lib/models/constants.js → esm2022/lib/models/constants.mjs} +0 -0
  354. /package/{esm2015/lib/models/dropdown.js → esm2022/lib/models/dropdown.mjs} +0 -0
  355. /package/{esm2015/lib/models/serverTags.js → esm2022/lib/models/serverTags.mjs} +0 -0
  356. /package/{esm2015/lib/models/spinnerOptions.js → esm2022/lib/models/spinnerOptions.mjs} +0 -0
  357. /package/{esm2015/lib/models/validationError.js → esm2022/lib/models/validationError.mjs} +0 -0
  358. /package/{esm2015/lib/stepper/interfaces/stepper.js → esm2022/lib/stepper/interfaces/stepper.mjs} +0 -0
@@ -0,0 +1,165 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { TagsConfigSubType, TagTypes } from '../../models/serverTags';
3
+ import { Scenario } from '../interfaces/scenario';
4
+ import { cloneDeep as _cloneDeep, filter as _filter, find as _find, forEach as _forEach, orderBy as _orderBy, indexOf as _indexOf, reduce as _reduce, some as _some, } from 'lodash';
5
+ import { getScenarioTagDataConfig } from '../consts/scenario-tags-config';
6
+ import * as i0 from "@angular/core";
7
+ export class ScenarioService {
8
+ constructor() {
9
+ this.DEFAULT_FORECAST_DATE_TAG = 'Month';
10
+ }
11
+ get scenarios() {
12
+ return _orderBy(Object.values(Scenario), (scenario) => scenario === Scenario.NONE ? 1 : 0);
13
+ }
14
+ get areExistingTagsConfig() {
15
+ return !!this.currentTagsConfig;
16
+ }
17
+ initScenarioTags(wholeTagsConfig, currentTagsConfig, isMultipleDimension) {
18
+ if (!wholeTagsConfig?.length)
19
+ return;
20
+ this.wholeTagsConfig = _cloneDeep(wholeTagsConfig);
21
+ this.currentTagsConfig = currentTagsConfig;
22
+ this.isMultipleDimension = isMultipleDimension;
23
+ }
24
+ getTagsConfigByScenarioTags(scenarioTags, tagsConfig) {
25
+ const scenarioTagsConfig = _filter(tagsConfig, (tagConfig) => _some(scenarioTags, (scenarioTag) => scenarioTag.toggle && scenarioTag.selectedTagSubType === tagConfig.options.sub_type));
26
+ return this.sortScenarioTags(scenarioTagsConfig);
27
+ }
28
+ getScenarioTagsByScenario(scenario) {
29
+ const scenarioTagsConfig = this.getScenarioTagsConfig(scenario, this.wholeTagsConfig);
30
+ const scenarioTagsUi = [];
31
+ _forEach(scenarioTagsConfig, (scenarioTag) => {
32
+ const isTagWithSubTags = scenarioTag.type === TagTypes.DATE;
33
+ const tagWithSubTags = isTagWithSubTags && _find(scenarioTagsUi, { type: scenarioTag.type });
34
+ const tag = tagWithSubTags || this.prepareScenarioTag(scenarioTagsConfig, scenarioTag, scenario, isTagWithSubTags);
35
+ if (isTagWithSubTags) {
36
+ this.updateScenarioSubTags(tag, scenarioTag);
37
+ tag.subTags = this.sortedScenarioSubTags(tag);
38
+ }
39
+ if (tagWithSubTags)
40
+ return;
41
+ scenarioTagsUi.push(tag);
42
+ });
43
+ if (this.areExistingTagsConfig) {
44
+ this.initExistingTagsConfig(scenario, scenarioTagsUi);
45
+ }
46
+ const isTagNotSupportingDates = _some(scenarioTagsUi, { turnOffDateTags: true, toggle: true });
47
+ if (isTagNotSupportingDates) {
48
+ this.turnOffDateTag(scenarioTagsUi);
49
+ }
50
+ const tagWithSpecificDateTags = _find(scenarioTagsUi, (tag) => tag.toggle && !!tag.acceptableDateTags?.length);
51
+ if (tagWithSpecificDateTags) {
52
+ this.hideNotAvailableTags(tagWithSpecificDateTags, scenarioTagsUi);
53
+ }
54
+ return this.sortScenarioTags(scenarioTagsUi);
55
+ }
56
+ sortScenarioTags(scenarioTagsUi) {
57
+ return _orderBy(scenarioTagsUi, [
58
+ (tag) => (tag.type === TagTypes.DATE ? 0 : 1),
59
+ (tag) => (tag.name === 'File Status')
60
+ ]);
61
+ }
62
+ initExistingTagsConfig(scenario, scenarioTagsUi) {
63
+ _forEach(this.currentTagsConfig, (tagConfig) => {
64
+ const tagSubType = tagConfig?.options?.sub_type;
65
+ const scenarioTagDataConfig = getScenarioTagDataConfig(this.isMultipleDimension);
66
+ if (!scenarioTagDataConfig || !scenarioTagDataConfig[scenario] || !scenarioTagDataConfig[scenario][tagSubType]) {
67
+ return;
68
+ }
69
+ const scenarioTagUi = tagConfig.type === TagTypes.DATE
70
+ ? _find(scenarioTagsUi, { type: tagConfig.type })
71
+ : _find(scenarioTagsUi, { selectedTagSubType: tagSubType });
72
+ scenarioTagUi.toggle = true;
73
+ scenarioTagUi.selectedTagSubType = tagSubType;
74
+ });
75
+ }
76
+ prepareScenarioTag(scenarioTagsConfig, scenarioTag, scenario, isDateTag) {
77
+ const toggleStatus = isDateTag
78
+ ? _some(scenarioTagsConfig, (tag) => tag.type === TagTypes.DATE && tag.scenarioData.toggle)
79
+ : scenarioTag.scenarioData.toggle;
80
+ const selectedTagSubType = isDateTag
81
+ ? this.getScenarioSelectedDateTag(scenario, scenarioTagsConfig)
82
+ : scenarioTag.options.sub_type;
83
+ const tag = {
84
+ toggle: this.areExistingTagsConfig ? false : toggleStatus,
85
+ name: scenarioTag.scenarioData.name || scenarioTag.name,
86
+ description: scenarioTag.scenarioData.description || scenarioTag.description,
87
+ type: scenarioTag.type,
88
+ selectedTagSubType,
89
+ };
90
+ if (scenarioTag.scenarioData.turnOffDateTags) {
91
+ tag.turnOffDateTags = scenarioTag.scenarioData.turnOffDateTags;
92
+ }
93
+ if (scenarioTag.scenarioData.acceptableDateTags) {
94
+ tag.acceptableDateTags = scenarioTag.scenarioData.acceptableDateTags;
95
+ }
96
+ return tag;
97
+ }
98
+ sortedScenarioSubTags(tag) {
99
+ const SUB_TAGS_ORDER = [TagsConfigSubType.DAY, TagsConfigSubType.WEEK, TagsConfigSubType.MONTH, TagsConfigSubType.QUARTER, TagsConfigSubType.YEAR];
100
+ return _orderBy(tag.subTags, (subTag) => _indexOf(SUB_TAGS_ORDER, subTag.subType));
101
+ }
102
+ updateScenarioSubTags(tag, scenarioTag) {
103
+ if (!tag.subTags) {
104
+ tag.subTags = [];
105
+ }
106
+ const tagSubType = scenarioTag.options.sub_type;
107
+ tag.subTags.push({
108
+ subType: tagSubType,
109
+ name: tagSubType === TagsConfigSubType.FORECAST_NEW ? this.DEFAULT_FORECAST_DATE_TAG : scenarioTag.name,
110
+ });
111
+ }
112
+ turnOffDateTag(scenarioTags) {
113
+ const dateTag = _find(scenarioTags, { type: TagTypes.DATE });
114
+ if (!dateTag)
115
+ return;
116
+ dateTag.toggle = false;
117
+ }
118
+ hideNotAvailableTags(tagWithSpecificDateTags, scenarioTags) {
119
+ const subTags = _find(scenarioTags, { type: TagTypes.DATE })?.subTags;
120
+ if (!subTags.length)
121
+ return;
122
+ _forEach(scenarioTags, (tag) => {
123
+ if (!tag.acceptableDateTags?.length)
124
+ return;
125
+ if (tag !== tagWithSpecificDateTags) {
126
+ tag.toggle = false;
127
+ }
128
+ });
129
+ _forEach(subTags, (subTag) => {
130
+ subTag.hidden = !tagWithSpecificDateTags.acceptableDateTags.includes(subTag.subType);
131
+ });
132
+ }
133
+ getScenarioSelectedDateTag(scenario, dateTags) {
134
+ const monthSubType = _find(dateTags, (tag) => tag.options.sub_type === TagsConfigSubType.MONTH)?.options?.sub_type;
135
+ const scenarioSelectedDateTag = {
136
+ [Scenario.ACTUALS]: () => monthSubType,
137
+ [Scenario.BUDGET]: () => _find(dateTags, (tag) => tag.options.sub_type === TagsConfigSubType.YEAR)?.options?.sub_type,
138
+ [Scenario.FORECAST]: () => _find(dateTags, (tag) => tag.options.sub_type === TagsConfigSubType.FORECAST_NEW)?.options?.sub_type,
139
+ [Scenario.NONE]: () => monthSubType,
140
+ };
141
+ if (!scenarioSelectedDateTag[scenario])
142
+ return;
143
+ return scenarioSelectedDateTag[scenario]();
144
+ }
145
+ getScenarioTagsConfig(scenario, tagsConfig) {
146
+ return _reduce(tagsConfig, (acc, tagConfig) => {
147
+ const tagSubType = tagConfig?.options?.sub_type;
148
+ const scenarioTagDataConfig = getScenarioTagDataConfig(this.isMultipleDimension);
149
+ const scenarioTagConfig = scenarioTagDataConfig && scenarioTagDataConfig[scenario] ?
150
+ scenarioTagDataConfig[scenario][tagSubType] : null;
151
+ if (!scenarioTagConfig || scenarioTagConfig.hidden)
152
+ return acc;
153
+ const clonedTagConfig = _cloneDeep(tagConfig);
154
+ const scenarioTag = { ...clonedTagConfig, scenarioData: scenarioTagConfig };
155
+ acc.push(scenarioTag);
156
+ return acc;
157
+ }, []);
158
+ }
159
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ScenarioService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
160
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ScenarioService }); }
161
+ }
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ScenarioService, decorators: [{
163
+ type: Injectable
164
+ }] });
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLXNjZW5hcmlvL3NlcnZpY2VzL3NjZW5hcmlvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVEsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUE0RCxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RyxPQUFPLEVBQ0gsU0FBUyxJQUFJLFVBQVUsRUFDdkIsTUFBTSxJQUFJLE9BQU8sRUFDakIsSUFBSSxJQUFJLEtBQUssRUFDYixPQUFPLElBQUksUUFBUSxFQUNuQixPQUFPLElBQUksUUFBUSxFQUNuQixPQUFPLElBQUksUUFBUSxFQUNuQixNQUFNLElBQUksT0FBTyxFQUNqQixJQUFJLElBQUksS0FBSyxHQUNoQixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFHMUUsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFWSw4QkFBeUIsR0FBRyxPQUFPLENBQUM7S0E0TC9DO0lBdExHLElBQVcsU0FBUztRQUNoQixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsSUFBWSxxQkFBcUI7UUFDN0IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ3BDLENBQUM7SUFFTSxnQkFBZ0IsQ0FB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ZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVRhZywgVGFnc0NvbmZpZ1N1YlR5cGUsIFRhZ1R5cGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3MnO1xuaW1wb3J0IHsgSVNjZW5hcmlvLCBJU2NlbmFyaW9TdWJUYWcsIElTY2VuYXJpb1RhZywgSVNjZW5hcmlvVGFnVWksIFNjZW5hcmlvIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zY2VuYXJpbyc7XG5pbXBvcnQge1xuICAgIGNsb25lRGVlcCBhcyBfY2xvbmVEZWVwLFxuICAgIGZpbHRlciBhcyBfZmlsdGVyLFxuICAgIGZpbmQgYXMgX2ZpbmQsXG4gICAgZm9yRWFjaCBhcyBfZm9yRWFjaCxcbiAgICBvcmRlckJ5IGFzIF9vcmRlckJ5LFxuICAgIGluZGV4T2YgYXMgX2luZGV4T2YsXG4gICAgcmVkdWNlIGFzIF9yZWR1Y2UsXG4gICAgc29tZSBhcyBfc29tZSxcbn0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGdldFNjZW5hcmlvVGFnRGF0YUNvbmZpZyB9IGZyb20gJy4uL2NvbnN0cy9zY2VuYXJpby10YWdzLWNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTY2VuYXJpb1NlcnZpY2Uge1xuICAgIHByaXZhdGUgREVGQVVMVF9GT1JFQ0FTVF9EQVRFX1RBRyA9ICdNb250aCc7XG5cbiAgICBwcml2YXRlIHdob2xlVGFnc0NvbmZpZzogSVRhZ1tdO1xuICAgIHByaXZhdGUgY3VycmVudFRhZ3NDb25maWc6IElUYWdbXTtcbiAgICBwcml2YXRlIGlzTXVsdGlwbGVEaW1lbnNpb246IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgZ2V0IHNjZW5hcmlvcygpOiBTY2VuYXJpb1tdIHtcbiAgICAgICAgcmV0dXJuIF9vcmRlckJ5KE9iamVjdC52YWx1ZXMoU2NlbmFyaW8pLCAoc2NlbmFyaW8pID0+IHNjZW5hcmlvID09PSBTY2VuYXJpby5OT05FID8gMSA6IDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGFyZUV4aXN0aW5nVGFnc0NvbmZpZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jdXJyZW50VGFnc0NvbmZpZztcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdFNjZW5hcmlvVGFncyh3aG9sZVRhZ3NDb25maWc6IElUYWdbXSwgY3VycmVudFRhZ3NDb25maWc6IElUYWdbXSwgaXNNdWx0aXBsZURpbWVuc2lvbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIXdob2xlVGFnc0NvbmZpZz8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy53aG9sZVRhZ3NDb25maWcgPSBfY2xvbmVEZWVwKHdob2xlVGFnc0NvbmZpZyk7XG4gICAgICAgIHRoaXMuY3VycmVudFRhZ3NDb25maWcgPSBjdXJyZW50VGFnc0NvbmZpZztcbiAgICAgICAgdGhpcy5pc011bHRpcGxlRGltZW5zaW9uID0gaXNNdWx0aXBsZURpbWVuc2lvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VGFnc0NvbmZpZ0J5U2NlbmFyaW9UYWdzKHNjZW5hcmlvVGFnczogSVNjZW5hcmlvVGFnVWlbXSwgdGFnc0NvbmZpZzogSVRhZ1tdKTogSVRhZ1tdIHtcbiAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdzQ29uZmlnID0gX2ZpbHRlcih0YWdzQ29uZmlnLCAodGFnQ29uZmlnKSA9PlxuICAgICAgICAgICAgX3NvbWUoc2NlbmFyaW9UYWdzLCAoc2NlbmFyaW9UYWcpID0+IHNjZW5hcmlvVGFnLnRvZ2dsZSAmJiBzY2VuYXJpb1RhZy5zZWxlY3RlZFRhZ1N1YlR5cGUgPT09IHRhZ0NvbmZpZy5vcHRpb25zLnN1Yl90eXBlKSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydFNjZW5hcmlvVGFncyhzY2VuYXJpb1RhZ3NDb25maWcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTY2VuYXJpb1RhZ3NCeVNjZW5hcmlvKHNjZW5hcmlvOiBTY2VuYXJpbykge1xuICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ3NDb25maWc6IElTY2VuYXJpb1RhZ1tdID0gdGhpcy5nZXRTY2VuYXJpb1RhZ3NDb25maWcoc2NlbmFyaW8sIHRoaXMud2hvbGVUYWdzQ29uZmlnKTtcbiAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdzVWk6IElTY2VuYXJpb1RhZ1VpW10gPSBbXTtcblxuICAgICAgICBfZm9yRWFjaChzY2VuYXJpb1RhZ3NDb25maWcsIChzY2VuYXJpb1RhZzogSVNjZW5hcmlvVGFnKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc1RhZ1dpdGhTdWJUYWdzID0gc2NlbmFyaW9UYWcudHlwZSA9PT0gVGFnVHlwZXMuREFURTtcbiAgICAgICAgICAgIGNvbnN0IHRhZ1dpdGhTdWJUYWdzID0gaXNUYWdXaXRoU3ViVGFncyAmJiBfZmluZChzY2VuYXJpb1RhZ3NVaSwgeyB0eXBlOiBzY2VuYXJpb1RhZy50eXBlIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB0YWc6IElTY2VuYXJpb1RhZ1VpID0gdGFnV2l0aFN1YlRhZ3MgfHwgdGhpcy5wcmVwYXJlU2NlbmFyaW9UYWcoc2NlbmFyaW9UYWdzQ29uZmlnLCBzY2VuYXJpb1RhZywgc2NlbmFyaW8sIGlzVGFnV2l0aFN1YlRhZ3MpO1xuXG4gICAgICAgICAgICBpZiAoaXNUYWdXaXRoU3ViVGFncykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2NlbmFyaW9TdWJUYWdzKHRhZywgc2NlbmFyaW9UYWcpO1xuICAgICAgICAgICAgICAgIHRhZy5zdWJUYWdzID0gdGhpcy5zb3J0ZWRTY2VuYXJpb1N1YlRhZ3ModGFnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhZ1dpdGhTdWJUYWdzKSByZXR1cm47XG4gICAgICAgICAgICBzY2VuYXJpb1RhZ3NVaS5wdXNoKHRhZyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmFyZUV4aXN0aW5nVGFnc0NvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5pbml0RXhpc3RpbmdUYWdzQ29uZmlnKHNjZW5hcmlvLCBzY2VuYXJpb1RhZ3NVaSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1RhZ05vdFN1cHBvcnRpbmdEYXRlcyA9IF9zb21lKHNjZW5hcmlvVGFnc1VpLCB7IHR1cm5PZmZEYXRlVGFnczogdHJ1ZSwgdG9nZ2xlOiB0cnVlIH0pO1xuICAgICAgICBpZiAoaXNUYWdOb3RTdXBwb3J0aW5nRGF0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMudHVybk9mZkRhdGVUYWcoc2NlbmFyaW9UYWdzVWkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3M6IElTY2VuYXJpb1RhZ1VpID0gX2ZpbmQoc2NlbmFyaW9UYWdzVWksICh0YWcpID0+IHRhZy50b2dnbGUgJiYgISF0YWcuYWNjZXB0YWJsZURhdGVUYWdzPy5sZW5ndGgpO1xuICAgICAgICBpZiAodGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3MpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZU5vdEF2YWlsYWJsZVRhZ3ModGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3MsIHNjZW5hcmlvVGFnc1VpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnNvcnRTY2VuYXJpb1RhZ3Moc2NlbmFyaW9UYWdzVWkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzb3J0U2NlbmFyaW9UYWdzKHNjZW5hcmlvVGFnc1VpOiBhbnlbXSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIF9vcmRlckJ5KHNjZW5hcmlvVGFnc1VpLCBbXG4gICAgICAgICAgICAodGFnKSA9PiAodGFnLnR5cGUgPT09IFRhZ1R5cGVzLkRBVEUgPyAwIDogMSksXG4gICAgICAgICAgICAodGFnKSA9PiAodGFnLm5hbWUgPT09ICdGaWxlIFN0YXR1cycpXG4gICAgICAgIF0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEV4aXN0aW5nVGFnc0NvbmZpZyhzY2VuYXJpbzogU2NlbmFyaW8sIHNjZW5hcmlvVGFnc1VpOiBJU2NlbmFyaW9UYWdVaVtdKSB7XG4gICAgICAgIF9mb3JFYWNoKHRoaXMuY3VycmVudFRhZ3NDb25maWcsICh0YWdDb25maWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ1N1YlR5cGUgPSB0YWdDb25maWc/Lm9wdGlvbnM/LnN1Yl90eXBlO1xuICAgICAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdEYXRhQ29uZmlnID0gZ2V0U2NlbmFyaW9UYWdEYXRhQ29uZmlnKHRoaXMuaXNNdWx0aXBsZURpbWVuc2lvbik7XG4gICAgICAgICAgICBpZiAoIXNjZW5hcmlvVGFnRGF0YUNvbmZpZyB8fCAhc2NlbmFyaW9UYWdEYXRhQ29uZmlnW3NjZW5hcmlvXSB8fCAhc2NlbmFyaW9UYWdEYXRhQ29uZmlnW3NjZW5hcmlvXVt0YWdTdWJUeXBlXSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdVaSA9IHRhZ0NvbmZpZy50eXBlID09PSBUYWdUeXBlcy5EQVRFXG4gICAgICAgICAgICAgICAgPyBfZmluZChzY2VuYXJpb1RhZ3NVaSwgeyB0eXBlOiB0YWdDb25maWcudHlwZSB9KVxuICAgICAgICAgICAgICAgIDogX2ZpbmQoc2NlbmFyaW9UYWdzVWksIHsgc2VsZWN0ZWRUYWdTdWJUeXBlOiB0YWdTdWJUeXBlIH0pO1xuXG4gICAgICAgICAgICBzY2VuYXJpb1RhZ1VpLnRvZ2dsZSA9IHRydWU7XG4gICAgICAgICAgICBzY2VuYXJpb1RhZ1VpLnNlbGVjdGVkVGFnU3ViVHlwZSA9IHRhZ1N1YlR5cGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJlcGFyZVNjZW5hcmlvVGFnKHNjZW5hcmlvVGFnc0NvbmZpZzogSVNjZW5hcmlvVGFnW10sIHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcsIHNjZW5hcmlvOiBTY2VuYXJpbywgaXNEYXRlVGFnOiBib29sZWFuKTogSVNjZW5hcmlvVGFnVWkge1xuICAgICAgICBjb25zdCB0b2dnbGVTdGF0dXMgPSBpc0RhdGVUYWdcbiAgICAgICAgICAgID8gX3NvbWUoc2NlbmFyaW9UYWdzQ29uZmlnLCAodGFnKSA9PiB0YWcudHlwZSA9PT0gVGFnVHlwZXMuREFURSAmJiB0YWcuc2NlbmFyaW9EYXRhLnRvZ2dsZSlcbiAgICAgICAgICAgIDogc2NlbmFyaW9UYWcuc2NlbmFyaW9EYXRhLnRvZ2dsZTtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZFRhZ1N1YlR5cGUgPSAgaXNEYXRlVGFnXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldFNjZW5hcmlvU2VsZWN0ZWREYXRlVGFnKHNjZW5hcmlvLCBzY2VuYXJpb1RhZ3NDb25maWcpXG4gICAgICAgICAgICAgICAgOiBzY2VuYXJpb1RhZy5vcHRpb25zLnN1Yl90eXBlO1xuXG4gICAgICAgIGNvbnN0IHRhZzogSVNjZW5hcmlvVGFnVWkgPSB7XG4gICAgICAgICAgICB0b2dnbGU6IHRoaXMuYXJlRXhpc3RpbmdUYWdzQ29uZmlnID8gZmFsc2UgOiB0b2dnbGVTdGF0dXMsXG4gICAgICAgICAgICBuYW1lOiBzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEubmFtZSB8fCBzY2VuYXJpb1RhZy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS5kZXNjcmlwdGlvbiB8fCBzY2VuYXJpb1RhZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHR5cGU6IHNjZW5hcmlvVGFnLnR5cGUsXG4gICAgICAgICAgICBzZWxlY3RlZFRhZ1N1YlR5cGUsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS50dXJuT2ZmRGF0ZVRhZ3MpIHtcbiAgICAgICAgICAgIHRhZy50dXJuT2ZmRGF0ZVRhZ3MgPSBzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEudHVybk9mZkRhdGVUYWdzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS5hY2NlcHRhYmxlRGF0ZVRhZ3MpIHtcbiAgICAgICAgICAgIHRhZy5hY2NlcHRhYmxlRGF0ZVRhZ3MgPSBzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEuYWNjZXB0YWJsZURhdGVUYWdzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhZztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRlZFNjZW5hcmlvU3ViVGFncyh0YWc6IElTY2VuYXJpb1RhZ1VpKTogSVNjZW5hcmlvU3ViVGFnW10ge1xuICAgICAgICBjb25zdCBTVUJfVEFHU19PUkRFUiA9IFtUYWdzQ29uZmlnU3ViVHlwZS5EQVksIFRhZ3NDb25maWdTdWJUeXBlLldFRUssIFRhZ3NDb25maWdTdWJUeXBlLk1PTlRILCBUYWdzQ29uZmlnU3ViVHlwZS5RVUFSVEVSLCBUYWdzQ29uZmlnU3ViVHlwZS5ZRUFSXTtcbiAgICAgICAgcmV0dXJuIF9vcmRlckJ5KHRhZy5zdWJUYWdzLCAoc3ViVGFnKSA9PiBfaW5kZXhPZihTVUJfVEFHU19PUkRFUiwgc3ViVGFnLnN1YlR5cGUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVNjZW5hcmlvU3ViVGFncyh0YWc6IElTY2VuYXJpb1RhZ1VpLCBzY2VuYXJpb1RhZzogSVNjZW5hcmlvVGFnKTogdm9pZCB7XG4gICAgICAgIGlmICghdGFnLnN1YlRhZ3MpIHtcbiAgICAgICAgICAgIHRhZy5zdWJUYWdzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YWdTdWJUeXBlID0gc2NlbmFyaW9UYWcub3B0aW9ucy5zdWJfdHlwZTtcblxuICAgICAgICB0YWcuc3ViVGFncy5wdXNoKHtcbiAgICAgICAgICAgIHN1YlR5cGU6IHRhZ1N1YlR5cGUsXG4gICAgICAgICAgICBuYW1lOiB0YWdTdWJUeXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5GT1JFQ0FTVF9ORVcgPyB0aGlzLkRFRkFVTFRfRk9SRUNBU1RfREFURV9UQUcgOiBzY2VuYXJpb1RhZy5uYW1lLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHR1cm5PZmZEYXRlVGFnKHNjZW5hcmlvVGFnczogSVNjZW5hcmlvVGFnVWlbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRlVGFnID0gX2ZpbmQoc2NlbmFyaW9UYWdzLCB7IHR5cGU6IFRhZ1R5cGVzLkRBVEUgfSk7XG5cbiAgICAgICAgaWYgKCFkYXRlVGFnKSByZXR1cm47XG4gICAgICAgIGRhdGVUYWcudG9nZ2xlPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVOb3RBdmFpbGFibGVUYWdzKHRhZ1dpdGhTcGVjaWZpY0RhdGVUYWdzOiBJU2NlbmFyaW9UYWdVaSwgc2NlbmFyaW9UYWdzOiBJU2NlbmFyaW9UYWdVaVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN1YlRhZ3MgPSBfZmluZChzY2VuYXJpb1RhZ3MsIHsgdHlwZTogVGFnVHlwZXMuREFURSB9KT8uc3ViVGFncztcbiAgICAgICAgaWYgKCFzdWJUYWdzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgIF9mb3JFYWNoKHNjZW5hcmlvVGFncywgKHRhZykgPT4ge1xuICAgICAgICAgICAgaWYgKCF0YWcuYWNjZXB0YWJsZURhdGVUYWdzPy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgICAgIGlmICh0YWcgIT09IHRhZ1dpdGhTcGVjaWZpY0RhdGVUYWdzKSB7XG4gICAgICAgICAgICAgICAgdGFnLnRvZ2dsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBfZm9yRWFjaChzdWJUYWdzLCAoc3ViVGFnKSA9PiB7XG4gICAgICAgICAgICBzdWJUYWcuaGlkZGVuID0gIXRhZ1dpdGhTcGVjaWZpY0RhdGVUYWdzLmFjY2VwdGFibGVEYXRlVGFncy5pbmNsdWRlcyhzdWJUYWcuc3ViVHlwZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2NlbmFyaW9TZWxlY3RlZERhdGVUYWcoc2NlbmFyaW86IFNjZW5hcmlvLCBkYXRlVGFnczogSVNjZW5hcmlvVGFnW10pOiBUYWdzQ29uZmlnU3ViVHlwZSB7XG4gICAgICAgIGNvbnN0IG1vbnRoU3ViVHlwZSA9IF9maW5kKGRhdGVUYWdzLCAodGFnOiBJU2NlbmFyaW9UYWcpID0+IHRhZy5vcHRpb25zLnN1Yl90eXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5NT05USCk/Lm9wdGlvbnM/LnN1Yl90eXBlO1xuXG4gICAgICAgIGNvbnN0IHNjZW5hcmlvU2VsZWN0ZWREYXRlVGFnID0ge1xuICAgICAgICAgICAgW1NjZW5hcmlvLkFDVFVBTFNdOiAoKSA9PiBtb250aFN1YlR5cGUsXG4gICAgICAgICAgICBbU2NlbmFyaW8uQlVER0VUXTogKCkgPT4gX2ZpbmQoZGF0ZVRhZ3MsICh0YWc6IElTY2VuYXJpb1RhZykgPT4gdGFnLm9wdGlvbnMuc3ViX3R5cGUgPT09IFRhZ3NDb25maWdTdWJUeXBlLllFQVIpPy5vcHRpb25zPy5zdWJfdHlwZSxcbiAgICAgICAgICAgIFtTY2VuYXJpby5GT1JFQ0FTVF06ICgpID0+IF9maW5kKGRhdGVUYWdzLCAodGFnOiBJU2NlbmFyaW9UYWcpID0+IHRhZy5vcHRpb25zLnN1Yl90eXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5GT1JFQ0FTVF9ORVcpPy5vcHRpb25zPy5zdWJfdHlwZSxcbiAgICAgICAgICAgIFtTY2VuYXJpby5OT05FXTogKCkgPT4gbW9udGhTdWJUeXBlLFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzY2VuYXJpb1NlbGVjdGVkRGF0ZVRhZ1tzY2VuYXJpb10pIHJldHVybjtcbiAgICAgICAgcmV0dXJuIHNjZW5hcmlvU2VsZWN0ZWREYXRlVGFnW3NjZW5hcmlvXSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2NlbmFyaW9UYWdzQ29uZmlnKHNjZW5hcmlvOiBTY2VuYXJpbywgdGFnc0NvbmZpZzogSVRhZ1tdKTogSVNjZW5hcmlvVGFnW10ge1xuICAgICAgICByZXR1cm4gX3JlZHVjZSh0YWdzQ29uZmlnLCAoYWNjOiBJU2NlbmFyaW9UYWdbXSwgdGFnQ29uZmlnOiBJVGFnKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWdTdWJUeXBlID0gdGFnQ29uZmlnPy5vcHRpb25zPy5zdWJfdHlwZTtcblxuICAgICAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdEYXRhQ29uZmlnID0gZ2V0U2NlbmFyaW9UYWdEYXRhQ29uZmlnKHRoaXMuaXNNdWx0aXBsZURpbWVuc2lvbik7XG4gICAgICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ0NvbmZpZzogSVNjZW5hcmlvID0gc2NlbmFyaW9UYWdEYXRhQ29uZmlnICYmIHNjZW5hcmlvVGFnRGF0YUNvbmZpZ1tzY2VuYXJpb10gP1xuICAgICAgICAgICAgICAgIHNjZW5hcmlvVGFnRGF0YUNvbmZpZ1tzY2VuYXJpb11bdGFnU3ViVHlwZV0gOiBudWxsO1xuICAgICAgICAgICAgaWYgKCFzY2VuYXJpb1RhZ0NvbmZpZyB8fCBzY2VuYXJpb1RhZ0NvbmZpZy5oaWRkZW4pIHJldHVybiBhY2M7XG5cbiAgICAgICAgICAgIGNvbnN0IGNsb25lZFRhZ0NvbmZpZyA9IF9jbG9uZURlZXAodGFnQ29uZmlnKTtcbiAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcgPSB7IC4uLmNsb25lZFRhZ0NvbmZpZywgc2NlbmFyaW9EYXRhOiBzY2VuYXJpb1RhZ0NvbmZpZyB9O1xuXG4gICAgICAgICAgICBhY2MucHVzaChzY2VuYXJpb1RhZyk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxufVxuIl19