@wavemaker/app-ng-runtime 11.8.0-next.24904 → 11.8.0-next.27301

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 (346) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +5 -5
  2. app-ng-runtime/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +1 -1
  3. app-ng-runtime/build-task/esm2022/page/page.build.mjs +3 -2
  4. app-ng-runtime/build-task/fesm2022/index.mjs +2 -1
  5. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  6. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +5 -5
  7. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +3 -2
  8. app-ng-runtime/components/advanced/carousel/esm2022/carousel.directive.mjs +1 -1
  9. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +2 -1
  10. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  11. app-ng-runtime/components/advanced/login/bundles/index.umd.js +6 -6
  12. app-ng-runtime/components/advanced/login/esm2022/login.component.mjs +4 -3
  13. app-ng-runtime/components/advanced/login/fesm2022/index.mjs +3 -2
  14. app-ng-runtime/components/advanced/login/fesm2022/index.mjs.map +1 -1
  15. app-ng-runtime/components/base/bundles/index.umd.js +203 -171
  16. app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +1 -1
  17. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +12 -11
  18. app-ng-runtime/components/base/esm2022/pipes/wm-pipe.mjs +3 -2
  19. app-ng-runtime/components/base/esm2022/utils/data-utils.mjs +30 -29
  20. app-ng-runtime/components/base/esm2022/utils/form-utils.mjs +47 -41
  21. app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -7
  22. app-ng-runtime/components/base/esm2022/utils/widget-utils.mjs +28 -27
  23. app-ng-runtime/components/base/esm2022/widgets/common/base/base-container.component.mjs +4 -3
  24. app-ng-runtime/components/base/esm2022/widgets/common/base/base-field-validations.mjs +24 -21
  25. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +12 -11
  26. app-ng-runtime/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +40 -14
  27. app-ng-runtime/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +3 -2
  28. app-ng-runtime/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +3 -2
  29. app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +1 -1
  30. app-ng-runtime/components/base/esm2022/widgets/common/partial/partial.directive.mjs +3 -2
  31. app-ng-runtime/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +3 -2
  32. app-ng-runtime/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +6 -5
  33. app-ng-runtime/components/base/esm2022/widgets/framework/deviceview.mjs +1 -1
  34. app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +3 -2
  35. app-ng-runtime/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +4 -3
  36. app-ng-runtime/components/base/fesm2022/index.mjs +206 -173
  37. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  38. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  39. app-ng-runtime/components/base/utils/data-utils.d.ts +0 -1
  40. app-ng-runtime/components/base/utils/widget-utils.d.ts +2 -2
  41. app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
  42. app-ng-runtime/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
  43. app-ng-runtime/components/basic/default/bundles/index.umd.js +10 -10
  44. app-ng-runtime/components/basic/default/esm2022/label/label.directive.mjs +4 -3
  45. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.component.mjs +6 -5
  46. app-ng-runtime/components/basic/default/fesm2022/index.mjs +7 -6
  47. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  48. app-ng-runtime/components/basic/progress/bundles/index.umd.js +13 -13
  49. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +5 -4
  50. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +6 -5
  51. app-ng-runtime/components/basic/progress/esm2022/utils.mjs +3 -3
  52. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +10 -9
  53. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  54. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +15 -10
  55. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +14 -8
  56. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +13 -7
  57. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  58. app-ng-runtime/components/basic/rich-text-editor/rich-text-editor.component.d.ts +2 -2
  59. app-ng-runtime/components/basic/search/bundles/index.umd.js +67 -65
  60. app-ng-runtime/components/basic/search/esm2022/data-provider/data-provider.mjs +1 -1
  61. app-ng-runtime/components/basic/search/esm2022/data-provider/local-data-provider.mjs +26 -23
  62. app-ng-runtime/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +12 -11
  63. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +31 -30
  64. app-ng-runtime/components/basic/search/fesm2022/index.mjs +66 -63
  65. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  66. app-ng-runtime/components/basic/tree/bundles/index.umd.js +9 -9
  67. app-ng-runtime/components/basic/tree/esm2022/tree.component.mjs +7 -6
  68. app-ng-runtime/components/basic/tree/fesm2022/index.mjs +6 -5
  69. app-ng-runtime/components/basic/tree/fesm2022/index.mjs.map +1 -1
  70. app-ng-runtime/components/chart/bundles/index.umd.js +72 -63
  71. app-ng-runtime/components/chart/chart.component.d.ts +1 -1
  72. app-ng-runtime/components/chart/chart.utils.d.ts +3 -3
  73. app-ng-runtime/components/chart/esm2022/chart.component.mjs +58 -48
  74. app-ng-runtime/components/chart/esm2022/chart.utils.mjs +14 -13
  75. app-ng-runtime/components/chart/fesm2022/index.mjs +69 -59
  76. app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
  77. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +16 -16
  78. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +14 -13
  79. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +13 -12
  80. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  81. app-ng-runtime/components/containers/panel/bundles/index.umd.js +5 -5
  82. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +3 -2
  83. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +2 -1
  84. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  85. app-ng-runtime/components/containers/panel/panel.component.d.ts +1 -1
  86. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +17 -17
  87. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +15 -14
  88. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +14 -13
  89. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  90. app-ng-runtime/components/data/form/bundles/index.umd.js +75 -75
  91. app-ng-runtime/components/data/form/esm2022/form-action/form-action.directive.mjs +3 -2
  92. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +10 -9
  93. app-ng-runtime/components/data/form/esm2022/form.component.mjs +54 -53
  94. app-ng-runtime/components/data/form/esm2022/live-filter/live-filter.directive.mjs +3 -2
  95. app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +11 -10
  96. app-ng-runtime/components/data/form/fesm2022/index.mjs +77 -76
  97. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  98. app-ng-runtime/components/data/form/form.component.d.ts +2 -2
  99. app-ng-runtime/components/data/form/live-form/live-form.directive.d.ts +1 -1
  100. app-ng-runtime/components/data/list/bundles/index.umd.js +692 -687
  101. app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +1 -1
  102. app-ng-runtime/components/data/list/esm2022/list.animator.mjs +5 -3
  103. app-ng-runtime/components/data/list/esm2022/list.component.mjs +687 -682
  104. app-ng-runtime/components/data/list/fesm2022/index.mjs +690 -684
  105. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  106. app-ng-runtime/components/data/list/list.component.d.ts +53 -53
  107. app-ng-runtime/components/data/live-table/bundles/index.umd.js +1 -1
  108. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +2 -2
  109. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +1 -1
  110. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  111. app-ng-runtime/components/data/pagination/bundles/index.umd.js +14 -14
  112. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +12 -11
  113. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +11 -10
  114. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  115. app-ng-runtime/components/data/table/bundles/index.umd.js +175 -172
  116. app-ng-runtime/components/data/table/esm2022/table-action/table-action.directive.mjs +3 -2
  117. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +19 -18
  118. app-ng-runtime/components/data/table/esm2022/table-cud.directive.mjs +7 -6
  119. app-ng-runtime/components/data/table/esm2022/table-filter.directive.mjs +53 -55
  120. app-ng-runtime/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +3 -2
  121. app-ng-runtime/components/data/table/esm2022/table.component.mjs +98 -91
  122. app-ng-runtime/components/data/table/fesm2022/index.mjs +172 -168
  123. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  124. app-ng-runtime/components/data/table/table-column/table-column.directive.d.ts +6 -6
  125. app-ng-runtime/components/data/table/table.component.d.ts +2 -2
  126. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +2 -2
  127. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +3 -3
  128. app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +1 -1
  129. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +1 -1
  130. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  131. app-ng-runtime/components/input/calendar/bundles/index.umd.js +33 -31
  132. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +31 -28
  133. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +30 -27
  134. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  135. app-ng-runtime/components/input/chips/bundles/index.umd.js +29 -28
  136. app-ng-runtime/components/input/chips/chips.component.d.ts +1 -1
  137. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +27 -25
  138. app-ng-runtime/components/input/chips/fesm2022/index.mjs +26 -24
  139. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  140. app-ng-runtime/components/input/default/base-form.component.d.ts +3 -3
  141. app-ng-runtime/components/input/default/bundles/index.umd.js +75 -62
  142. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  143. app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +4 -4
  144. app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +14 -8
  145. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +3 -2
  146. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +2 -2
  147. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +6 -4
  148. app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +29 -23
  149. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +4 -3
  150. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +4 -3
  151. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
  152. app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +4 -3
  153. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +20 -18
  154. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +2 -2
  155. app-ng-runtime/components/input/default/fesm2022/index.mjs +75 -62
  156. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  157. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +1 -1
  158. app-ng-runtime/components/input/epoch/bundles/index.umd.js +53 -51
  159. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +34 -31
  160. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +5 -4
  161. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +5 -4
  162. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +7 -6
  163. app-ng-runtime/components/input/epoch/esm2022/picker/picker.component.mjs +1 -1
  164. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +6 -5
  165. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +48 -45
  166. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  167. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +15 -15
  168. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +13 -12
  169. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +12 -11
  170. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  171. app-ng-runtime/components/input/rating/bundles/index.umd.js +12 -12
  172. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +10 -9
  173. app-ng-runtime/components/input/rating/fesm2022/index.mjs +9 -8
  174. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  175. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +1 -1
  176. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +2 -2
  177. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +1 -1
  178. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  179. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +23 -22
  180. app-ng-runtime/components/navigation/menu/esm2022/menu-adapator.component.mjs +3 -2
  181. app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +6 -5
  182. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
  183. app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +10 -8
  184. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +20 -18
  185. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  186. app-ng-runtime/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +12 -1
  187. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +1 -1
  188. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  189. app-ng-runtime/components/prefab/bundles/index.umd.js +6 -6
  190. app-ng-runtime/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +3 -2
  191. app-ng-runtime/components/prefab/esm2022/prefab.directive.mjs +3 -2
  192. app-ng-runtime/components/prefab/fesm2022/index.mjs +3 -2
  193. app-ng-runtime/components/prefab/fesm2022/index.mjs.map +1 -1
  194. app-ng-runtime/core/bundles/index.umd.js +119 -130
  195. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  196. app-ng-runtime/core/esm2022/services/field-type.service.mjs +3 -2
  197. app-ng-runtime/core/esm2022/services/field-widget.service.mjs +3 -2
  198. app-ng-runtime/core/esm2022/services/pagination.service.mjs +7 -6
  199. app-ng-runtime/core/esm2022/services/state-persistence.service.mjs +17 -16
  200. app-ng-runtime/core/esm2022/services/utils.service.mjs +3 -2
  201. app-ng-runtime/core/esm2022/services/viewport.service.mjs +3 -2
  202. app-ng-runtime/core/esm2022/utils/build-utils.mjs +5 -4
  203. app-ng-runtime/core/esm2022/utils/expression-parser.mjs +5 -4
  204. app-ng-runtime/core/esm2022/utils/lru-cache.mjs +3 -2
  205. app-ng-runtime/core/esm2022/utils/utils.mjs +79 -82
  206. app-ng-runtime/core/esm2022/utils/watcher.mjs +9 -7
  207. app-ng-runtime/core/fesm2022/index.mjs +117 -123
  208. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  209. app-ng-runtime/core/public_api.d.ts +1 -1
  210. app-ng-runtime/core/services/pagination.service.d.ts +1 -1
  211. app-ng-runtime/core/utils/utils.d.ts +5 -9
  212. app-ng-runtime/http/bundles/index.umd.js +7 -7
  213. app-ng-runtime/http/esm2022/http.service.mjs +5 -4
  214. app-ng-runtime/http/esm2022/wm-http-request.mjs +1 -1
  215. app-ng-runtime/http/esm2022/wm-http-response.mjs +1 -1
  216. app-ng-runtime/http/fesm2022/index.mjs +4 -3
  217. app-ng-runtime/http/fesm2022/index.mjs.map +1 -1
  218. app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js +24 -20
  219. app-ng-runtime/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +5 -4
  220. app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +12 -8
  221. app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +5 -3
  222. app-ng-runtime/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +3 -2
  223. app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +5 -4
  224. app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs +21 -16
  225. app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs.map +1 -1
  226. app-ng-runtime/mobile/components/containers/segmented-control/bundles/index.umd.js +7 -7
  227. app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +2 -2
  228. app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +4 -3
  229. app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs +4 -3
  230. app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +1 -1
  231. app-ng-runtime/mobile/components/data/media-list/bundles/index.umd.js +8 -8
  232. app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.component.mjs +4 -3
  233. app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs +3 -2
  234. app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs.map +1 -1
  235. app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +5 -5
  236. app-ng-runtime/mobile/components/page/default/esm2022/page.directive.mjs +3 -2
  237. app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs +2 -1
  238. app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
  239. app-ng-runtime/mobile/components/page/tab-bar/bundles/index.umd.js +9 -9
  240. app-ng-runtime/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +7 -6
  241. app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs +6 -5
  242. app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs.map +1 -1
  243. app-ng-runtime/mobile/core/bundles/index.umd.js +25 -25
  244. app-ng-runtime/mobile/core/esm2022/services/device-file-download.service.mjs +5 -4
  245. app-ng-runtime/mobile/core/esm2022/services/device-file-opener.service.mjs +3 -2
  246. app-ng-runtime/mobile/core/esm2022/services/device-file-upload.service.mjs +4 -3
  247. app-ng-runtime/mobile/core/esm2022/services/device-file.service.mjs +6 -5
  248. app-ng-runtime/mobile/core/esm2022/services/device.service.mjs +3 -2
  249. app-ng-runtime/mobile/core/esm2022/services/ext-app-message.service.mjs +5 -4
  250. app-ng-runtime/mobile/core/esm2022/services/network.service.mjs +9 -8
  251. app-ng-runtime/mobile/core/fesm2022/index.mjs +22 -21
  252. app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
  253. app-ng-runtime/mobile/core/services/ext-app-message.service.d.ts +1 -1
  254. app-ng-runtime/mobile/core/services/network.service.d.ts +7 -1
  255. app-ng-runtime/mobile/offline/bundles/index.umd.js +161 -144
  256. app-ng-runtime/mobile/offline/esm2022/models/local-db-store.mjs +23 -21
  257. app-ng-runtime/mobile/offline/esm2022/services/change-log.service.mjs +7 -6
  258. app-ng-runtime/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +37 -35
  259. app-ng-runtime/mobile/offline/esm2022/services/local-db-management.service.mjs +54 -45
  260. app-ng-runtime/mobile/offline/esm2022/services/local-db.service.mjs +5 -4
  261. app-ng-runtime/mobile/offline/esm2022/services/workers/error-blocker.mjs +4 -3
  262. app-ng-runtime/mobile/offline/esm2022/services/workers/file-handler.mjs +18 -13
  263. app-ng-runtime/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +9 -5
  264. app-ng-runtime/mobile/offline/esm2022/utils/live-variable.utils.mjs +12 -11
  265. app-ng-runtime/mobile/offline/esm2022/utils/query-executor.utils.mjs +5 -4
  266. app-ng-runtime/mobile/offline/esm2022/utils/security.utils.mjs +3 -2
  267. app-ng-runtime/mobile/offline/fesm2022/index.mjs +156 -138
  268. app-ng-runtime/mobile/offline/fesm2022/index.mjs.map +1 -1
  269. app-ng-runtime/mobile/runtime/bundles/index.umd.js +11 -8
  270. app-ng-runtime/mobile/runtime/esm2022/mobile-runtime.module.mjs +3 -2
  271. app-ng-runtime/mobile/runtime/esm2022/services/cookie.service.mjs +6 -2
  272. app-ng-runtime/mobile/runtime/esm2022/services/http-interceptor.service.mjs +4 -3
  273. app-ng-runtime/mobile/runtime/fesm2022/index.mjs +8 -4
  274. app-ng-runtime/mobile/runtime/fesm2022/index.mjs.map +1 -1
  275. app-ng-runtime/mobile/runtime-dynamic/bundles/index.umd.js +2 -2
  276. app-ng-runtime/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +3 -3
  277. app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs +2 -2
  278. app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
  279. app-ng-runtime/mobile/variables/bundles/index.umd.js +23 -16
  280. app-ng-runtime/mobile/variables/esm2022/services/camera-service.mjs +2 -2
  281. app-ng-runtime/mobile/variables/esm2022/services/datasync-service.mjs +10 -9
  282. app-ng-runtime/mobile/variables/esm2022/services/file-service.mjs +11 -3
  283. app-ng-runtime/mobile/variables/fesm2022/index.mjs +19 -11
  284. app-ng-runtime/mobile/variables/fesm2022/index.mjs.map +1 -1
  285. app-ng-runtime/oAuth/bundles/index.umd.js +12 -12
  286. app-ng-runtime/oAuth/esm2022/oAuth.service.mjs +4 -3
  287. app-ng-runtime/oAuth/esm2022/oAuth.utils.mjs +8 -7
  288. app-ng-runtime/oAuth/fesm2022/index.mjs +9 -8
  289. app-ng-runtime/oAuth/fesm2022/index.mjs.map +1 -1
  290. app-ng-runtime/package.json +1 -1
  291. app-ng-runtime/runtime/base/bundles/index.umd.js +121 -120
  292. app-ng-runtime/runtime/base/esm2022/components/base-layout.component.mjs +4 -3
  293. app-ng-runtime/runtime/base/esm2022/components/base-page.component.mjs +14 -13
  294. app-ng-runtime/runtime/base/esm2022/components/base-partial.component.mjs +13 -12
  295. app-ng-runtime/runtime/base/esm2022/components/base-prefab.component.mjs +15 -14
  296. app-ng-runtime/runtime/base/esm2022/components/base-spa-page.component.mjs +14 -13
  297. app-ng-runtime/runtime/base/esm2022/components/custom-toaster.component.mjs +6 -5
  298. app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +11 -10
  299. app-ng-runtime/runtime/base/esm2022/guards/page-not-found.guard.mjs +1 -1
  300. app-ng-runtime/runtime/base/esm2022/guards/role.guard.mjs +3 -2
  301. app-ng-runtime/runtime/base/esm2022/services/app-defaults.service.mjs +1 -1
  302. app-ng-runtime/runtime/base/esm2022/services/app.manager.service.mjs +17 -14
  303. app-ng-runtime/runtime/base/esm2022/services/app.service.mjs +7 -6
  304. app-ng-runtime/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +3 -2
  305. app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +4 -3
  306. app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +12 -10
  307. app-ng-runtime/runtime/base/esm2022/services/navigation.service.mjs +8 -7
  308. app-ng-runtime/runtime/base/esm2022/services/prefab-manager.service.mjs +3 -2
  309. app-ng-runtime/runtime/base/esm2022/services/spinner.service.mjs +7 -6
  310. app-ng-runtime/runtime/base/esm2022/services/toaster.service.mjs +6 -5
  311. app-ng-runtime/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +6 -7
  312. app-ng-runtime/runtime/base/fesm2022/index.mjs +119 -117
  313. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  314. app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
  315. app-ng-runtime/runtime/dynamic/bundles/index.umd.js +7 -7
  316. app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +4 -3
  317. app-ng-runtime/runtime/dynamic/esm2022/main.mjs +3 -2
  318. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +4 -3
  319. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  320. app-ng-runtime/scripts/jquery-ui/ui/widgets/droppable.js +7 -7
  321. app-ng-runtime/scripts/jquery-ui/ui/widgets/resizable.js +13 -10
  322. app-ng-runtime/scripts/jquery-ui/ui/widgets/sortable.js +7 -7
  323. app-ng-runtime/security/bundles/index.umd.js +14 -14
  324. app-ng-runtime/security/esm2022/security.service.mjs +12 -11
  325. app-ng-runtime/security/fesm2022/index.mjs +11 -10
  326. app-ng-runtime/security/fesm2022/index.mjs.map +1 -1
  327. app-ng-runtime/security/security.service.d.ts +1 -1
  328. app-ng-runtime/swipey/esm2022/swipe.animation.mjs +1 -1
  329. app-ng-runtime/swipey/fesm2022/index.mjs.map +1 -1
  330. app-ng-runtime/transpiler/bundles/index.umd.js +10 -9
  331. app-ng-runtime/transpiler/esm2022/build.mjs +8 -6
  332. app-ng-runtime/transpiler/fesm2022/index.mjs +7 -5
  333. app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
  334. app-ng-runtime/variables/bundles/index.umd.js +155 -145
  335. app-ng-runtime/variables/esm2022/manager/action/login-action.manager.mjs +15 -14
  336. app-ng-runtime/variables/esm2022/manager/action/notification-action.manager.mjs +9 -8
  337. app-ng-runtime/variables/esm2022/manager/variable/base-variable.manager.mjs +3 -2
  338. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +11 -10
  339. app-ng-runtime/variables/esm2022/service/variables.service.mjs +7 -6
  340. app-ng-runtime/variables/esm2022/util/action/navigation-action.utils.mjs +4 -4
  341. app-ng-runtime/variables/esm2022/util/variable/pagination.utils.mjs +30 -23
  342. app-ng-runtime/variables/esm2022/util/variable/service-variable.utils.mjs +29 -28
  343. app-ng-runtime/variables/esm2022/util/variable/variables.utils.mjs +75 -70
  344. app-ng-runtime/variables/fesm2022/index.mjs +169 -158
  345. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  346. app-ng-runtime/variables/util/variable/service-variable.utils.d.ts +1 -1
@@ -7,6 +7,7 @@ import { BaseDateTimeComponent } from './../base-date-time.component';
7
7
  import { registerProps } from './date.props';
8
8
  import { validateTheMaskedDate } from './imaskUtil';
9
9
  import { IMaskDirective } from 'angular-imask';
10
+ import { includes, isNaN, parseInt } from "lodash-es";
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "@wm/core";
12
13
  import * as i2 from "@angular/common";
@@ -185,7 +186,7 @@ export class DateComponent extends BaseDateTimeComponent {
185
186
  }
186
187
  // change and blur events are added from the template
187
188
  handleEvent(node, eventName, callback, locals) {
188
- if (!_.includes(['blur', 'focus', 'change', 'click'], eventName)) {
189
+ if (!includes(['blur', 'focus', 'change', 'click'], eventName)) {
189
190
  super.handleEvent(node, eventName, callback, locals);
190
191
  }
191
192
  }
@@ -234,7 +235,7 @@ export class DateComponent extends BaseDateTimeComponent {
234
235
  const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this);
235
236
  const inputVal = event.target.value.trim();
236
237
  if (inputVal && this.datepattern === 'timestamp') {
237
- if (!_.isNaN(inputVal) && _.parseInt(inputVal) !== formattedDate) {
238
+ if (!isNaN(inputVal) && parseInt(inputVal) !== formattedDate) {
238
239
  this.invalidDateTimeFormat = true;
239
240
  this.invokeOnChange(this.datavalue, event, false);
240
241
  }
@@ -348,5 +349,5 @@ export class DateComponent extends BaseDateTimeComponent {
348
349
  type: ViewChild,
349
350
  args: ['dateInput', { read: IMaskDirective }]
350
351
  }] }); })();
351
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DateComponent, { className: "DateComponent", filePath: "date/date.component.ts", lineNumber: 42 }); })();
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL2RhdGUvZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFakUsT0FBTyxFQUNILHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsV0FBVyxFQUVYLGNBQWMsRUFDZCxVQUFVLEVBQ1Ysd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3hCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBaUIsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztJQ3NDM0MsNENBU29DO0lBQWhDLG9NQUFVLDJCQUFvQixLQUFDO0lBQ25DLGlC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a0IsS0FBQyx3SEFDbEIsNEJBQXdCLEtBQUMsd0lBQ3BCLHdCQUFvQixLQUFDO1lBQzlDLEFBbEJJLGlCQWlCMkMsRUFDekM7WUFFTiw4RUFBMEM7O1lBMUNsQyxBQURBLEFBREEsQUFEQSxBQUpBLEFBRkEsQUFEQSxBQURBLEFBRkEsK0JBQWEsbUJBRUMsZ0JBQ0MsMkRBQ21DLDJCQUU1QiwwQ0FJVyw0QkFDViwwQkFDRiw0QkFDRTs7WUFVbkIsZUFBa0Q7WUFFbEQsQUFGQSx3RUFBa0QsMENBRWpCOztZQWFyQyxlQUFlO1lBV2YsQUFEQSxBQUZBLEFBREEsQUFIQSxBQURBLEFBREEsQUFGQSw2QkFBZSwrQ0FFMkIsOEJBQ2pCLHNCQUNSLDJDQUdxQiw2Q0FDRSw0Q0FFTCw0QkFDWjs7WUFNbEIsZUFBNEI7WUFBNUIsOENBQTRCOzs7aUZEakI1QixhQUFhO2NBVHpCLFNBQVM7MkJBQ0ksVUFBVSxhQUVUO29CQUNQLFNBQVMsZ0JBQWdCLGlCQUFpQixFQUFFLElBQUksQ0FBQztvQkFDakQsU0FBUyxnQkFBZ0IsYUFBYSxFQUFFLElBQUksQ0FBQztvQkFDN0Msa0JBQWtCLGVBQWU7aUJBQ3BDOztzQkFzRUksTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7cUJBUkcscUJBQXFCO2tCQUFoRSxTQUFTO21CQUFDLHFCQUFxQjtZQUNnQixLQUFLO2tCQUFwRCxTQUFTO21CQUFDLFdBQVcsRUFBRSxFQUFDLElBQUksRUFBRSxjQUFjLEVBQUM7O2tGQTdEckMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgT3B0aW9uYWwsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgTkdfVkFMSURBVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQnNEYXRlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcblxuaW1wb3J0IHtcbiAgICBhZGp1c3RDb250YWluZXJQb3NpdGlvbixcbiAgICBhZGRFdmVudExpc3RlbmVyT25FbGVtZW50LFxuICAgIEFwcERlZmF1bHRzLFxuICAgIEVWRU5UX0xJRkUsXG4gICAgRm9ybVdpZGdldFR5cGUsXG4gICAgZ2V0RGF0ZU9iaixcbiAgICBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQsXG4gICAgZ2V0Rm9ybWF0dGVkRGF0ZSxcbiAgICBhZGp1c3RDb250YWluZXJSaWdodEVkZ2VzLFxuICAgIGdldE1vbWVudExvY2FsZU9iamVjdFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBJV2lkZ2V0Q29uZmlnLCBwcm92aWRlQXMsIHByb3ZpZGVBc1dpZGdldFJlZiwgc2V0Rm9jdXNUcmFwLCBzdHlsZXIgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IEJhc2VEYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vLi4vYmFzZS1kYXRlLXRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL2RhdGUucHJvcHMnO1xuaW1wb3J0IHsgdmFsaWRhdGVUaGVNYXNrZWREYXRlIH0gZnJvbSAnLi9pbWFza1V0aWwnO1xuaW1wb3J0IHsgSU1hc2tEaXJlY3RpdmUgfSBmcm9tICdhbmd1bGFyLWltYXNrJztcblxuZGVjbGFyZSBjb25zdCBfLCAkO1xuXG5jb25zdCBDVVJSRU5UX0RBVEUgPSAnQ1VSUkVOVF9EQVRFJztcbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1kYXRlIGlucHV0LWdyb3VwJztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLWRhdGUnLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFNcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3dtRGF0ZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKERhdGVDb21wb25lbnQsIE5HX1ZBTFVFX0FDQ0VTU09SLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzKERhdGVDb21wb25lbnQsIE5HX1ZBTElEQVRPUlMsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoRGF0ZUNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGF0ZVRpbWVDb21wb25lbnQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwdWJsaWMgYnNEYXRhVmFsdWU7XG4gICAgcHVibGljIHNob3dkcm9wZG93bm9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkYXRlQ29udGFpbmVyQ2xzOiBzdHJpbmc7XG4gICAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2JzRGVmYXVsdExvYWRDaGVjazogYm9vbGVhbjtcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBkZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcjtcbiAgICBwcml2YXRlIGlzQ3VycmVudERhdGU7XG4gICAgcHJpdmF0ZSBmb2N1c1RyYXA7XG4gICAgcHJpdmF0ZSBzaG93ZGF0ZWZvcm1hdGFzcGxhY2Vob2xkZXIgPSBmYWxzZTtcbiAgICBtYXNrO1xuICAgIHByaXZhdGUgbWFza0RhdGVJbnB1dEZvcm1hdDtcblxuICAgIGdldCB0aW1lc3RhbXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJzRGF0YVZhbHVlID8gdGhpcy5ic0RhdGFWYWx1ZS52YWx1ZU9mKCkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGRhdGVJbnB1dEZvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVPcHRpb25zLmRhdGVJbnB1dEZvcm1hdCB8fCAneXl5eS1NTS1kZCc7XG4gICAgfVxuXG4gICAgZ2V0IGRpc3BsYXlWYWx1ZSgpIHtcbiAgICAgICAgaWYodGhpcy5zaG93ZGF0ZWZvcm1hdGFzcGxhY2Vob2xkZXIgJiYgdGhpcy5pbWFzaz8ubWFza1JlZiAmJiB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIHRoaXMuYnNEYXRhVmFsdWUsIHRoaXMubWFza0RhdGVJbnB1dEZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKSB8fCAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzRGF0YVZhbHVlLCB0aGlzLmRhdGVJbnB1dEZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRGlzcGxheVZhbHVlKCkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzRGF0YVZhbHVlLCAneXl5eS1NTS1kZCcsIHRoaXMudGltZVpvbmUsIG51bGwsIHRoaXMuaXNDdXJyZW50RGF0ZSwgdGhpcykgfHwgJyc7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBkYXRhdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIHRoaXMuYnNEYXRhVmFsdWUsIHRoaXMub3V0cHV0Zm9ybWF0LCB0aGlzLnRpbWVab25lLCBudWxsLCB0aGlzLmlzQ3VycmVudERhdGUsIHRoaXMpIHx8ICcnO1xuICAgIH1cblxuICAgIC8vIFRvZG9bU2h1YmhhbV06IG5lZWRzIHRvIGJlIHJlZGVmaW5lZFxuICAgIC8vIHNldHMgdGhlIGRhdGFWYWx1ZSBhbmQgY29tcHV0ZXMgdGhlIGRpc3BsYXkgbW9kZWwgdmFsdWVzXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHNldCBkYXRhdmFsdWUobmV3VmFsKSB7XG4gICAgICAgIGlmIChuZXdWYWwgPT09IENVUlJFTlRfREFURSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ic0RhdGFWYWx1ZSA9IHRoaXMudGltZVpvbmUgPyBnZXRNb21lbnRMb2NhbGVPYmplY3QodGhpcy50aW1lWm9uZSkgOiBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgfSwgNTApO1xuICAgICAgICAgICAgdGhpcy5pc0N1cnJlbnREYXRlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnNEYXRhVmFsdWUgPSBuZXdWYWwgPyBnZXREYXRlT2JqKG5ld1ZhbCwge2lzTmF0aXZlUGlja2VyOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXR9LCB0aGlzLnRpbWVab25lKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50RGF0ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHVwZGF0ZSB0aGUgcHJldmlvdXMgZGF0YXZhbHVlLlxuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKEJzRGF0ZXBpY2tlckRpcmVjdGl2ZSkgcHJvdGVjdGVkIGJzRGF0ZVBpY2tlckRpcmVjdGl2ZTtcbiAgICBAVmlld0NoaWxkKCdkYXRlSW5wdXQnLCB7cmVhZDogSU1hc2tEaXJlY3RpdmV9KSBpbWFzazogSU1hc2tEaXJlY3RpdmU8YW55PjtcblxuICAgIC8vIFRPRE8gdXNlIEJzTG9jYWxlU2VydmljZSB0byBzZXQgdGhlIGN1cnJlbnQgdXNlcidzIGxvY2FsZSB0byBzZWUgdGhlIGxvY2FsaXplZCBsYWJlbHNcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgYXBwRGVmYXVsdHM6IEFwcERlZmF1bHRzLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzKTtcblxuICAgICAgICB0aGlzLmRhdGVDb250YWluZXJDbHMgPSBgYXBwLWRhdGUtJHt0aGlzLndpZGdldElkfWA7XG4gICAgICAgIHRoaXMuX2RhdGVPcHRpb25zLmNvbnRhaW5lckNsYXNzID0gYGFwcC1kYXRlICR7dGhpcy5kYXRlQ29udGFpbmVyQ2xzfWA7XG4gICAgICAgIHRoaXMuX2RhdGVPcHRpb25zLnNob3dXZWVrTnVtYmVycyA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9ic0RlZmF1bHRMb2FkQ2hlY2sgPSB0cnVlO1xuICAgICAgICB0aGlzLmRhdGVwYXR0ZXJuID0gdGhpcy5hcHBEZWZhdWx0cy5kYXRlRm9ybWF0IHx8IGdldERpc3BsYXlEYXRlVGltZUZvcm1hdChGb3JtV2lkZ2V0VHlwZS5EQVRFKTtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtYXQoJ2RhdGVwYXR0ZXJuJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRyaWdnZXJlZCB3aGVuIHRoZSBkYXRlIGlucHV0IGNoYW5nZXNcbiAgICAgKi9cbiAgICBvbkRpc3BsYXlEYXRlQ2hhbmdlKCRldmVudCwgaXNOYXRpdmVQaWNrZXI6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUlNYXNrKCk7XG4gICAgICAgIGlmICh0aGlzLmlzRW50ZXJQcmVzc2VkT25EYXRlSW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1ZhbCA9IGdldERhdGVPYmooJGV2ZW50LnRhcmdldC52YWx1ZSwge3BhdHRlcm46IHRoaXMuZGF0ZXBhdHRlcm4sIGlzTmF0aXZlUGlja2VyOiBpc05hdGl2ZVBpY2tlcn0pO1xuICAgICAgICAvLyBkYXRlIHBhdHRlcm4gdmFsaWRhdGlvblxuICAgICAgICAvLyBpZiBpbnZhbGlkIHBhdHRlcm4gaXMgZW50ZXJlZCwgZGV2aWNlIGlzIHNob3dpbmcgYW4gZXJyb3IuXG4gICAgICAgIGlmICghdGhpcy5mb3JtYXRWYWxpZGF0aW9uKG5ld1ZhbCwgJGV2ZW50LnRhcmdldC52YWx1ZSwgaXNOYXRpdmVQaWNrZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gbWluIGRhdGUgYW5kIG1heCBkYXRlIHZhbGlkYXRpb24gaW4gbW9iaWxlIHZpZXcuXG4gICAgICAgIC8vIGlmIGludmFsaWQgZGF0ZXMgYXJlIGVudGVyZWQsIGRldmljZSBpcyBzaG93aW5nIGFuIGFsZXJ0LlxuICAgICAgICBpZiAoaXNOYXRpdmVQaWNrZXIgJiYgdGhpcy5taW5EYXRlTWF4RGF0ZVZhbGlkYXRpb25PbklucHV0KG5ld1ZhbCwgJGV2ZW50LCB0aGlzLmRpc3BsYXlWYWx1ZSwgaXNOYXRpdmVQaWNrZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUobmV3VmFsKTtcbiAgICB9XG5cbiAgICAvLyBzZXRzIHRoZSBkYXRhVmFsdWUgYW5kIGNvbXB1dGVzIHRoZSBkaXNwbGF5IG1vZGVsIHZhbHVlc1xuICAgIHByaXZhdGUgc2V0RGF0YVZhbHVlKG5ld1ZhbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmludmFsaWREYXRlVGltZUZvcm1hdCA9IGZhbHNlO1xuICAgICAgICAvLyBtaW4gZGF0ZSBhbmQgbWF4IGRhdGUgdmFsaWRhdGlvbiBpbiB3ZWIuXG4gICAgICAgIC8vIGlmIGludmFsaWQgZGF0ZXMgYXJlIGVudGVyZWQsIGRldmljZSBpcyBzaG93aW5nIHZhbGlkYXRpb24gbWVzc2FnZS5cbiAgICAgICAgdGhpcy5taW5EYXRlTWF4RGF0ZVZhbGlkYXRpb25PbklucHV0KG5ld1ZhbCk7XG4gICAgICAgIGlmIChnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIG5ld1ZhbCwgdGhpcy5kYXRlSW5wdXRGb3JtYXQsIHRoaXMudGltZVpvbmUsIG51bGwsIHRoaXMuaXNDdXJyZW50RGF0ZSwgdGhpcykgPT09IHRoaXMuZGlzcGxheVZhbHVlKSB7XG4gICAgICAgICAgICAkKHRoaXMubmF0aXZlRWxlbWVudCkuZmluZCgnLmRpc3BsYXktaW5wdXQnKS52YWwodGhpcy5kaXNwbGF5VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgIHRoaXMuYnNEYXRhVmFsdWUgPSBuZXdWYWw7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUlNYXNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJzRGF0YVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsIHt9LCB0cnVlKTtcbiAgICB9XG5cbiAgICBvbkRhdGVQaWNrZXJPcGVuKCkge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMuYnNEYXRhVmFsdWUgPyB0aGlzLmJzRGF0YVZhbHVlIDogKHRoaXMudGltZVpvbmUgPyBnZXRNb21lbnRMb2NhbGVPYmplY3QodGhpcy50aW1lWm9uZSkgOiBuZXcgRGF0ZSgpKTtcbiAgICAgICAgaWYgKCF0aGlzLmJzRGF0YVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmhpZ2h0bGlnaHRUb2RheSh0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlSU1hc2soKTtcblxuICAgICAgICAvLyBXZSBhcmUgdXNpbmcgdGhlIHR3byBpbnB1dCB0YWdzKFRvIG1haW50YWluIHRoZSBtb2RhbCBhbmQgcHJveHkgbW9kYWwpIGZvciB0aGUgZGF0ZSBjb250cm9sLlxuICAgICAgICAvLyBTbyBhY3R1YWwgYm9vdHN0cmFwIGlucHV0IHRhcmdldCB3aWR0aCB3ZSBtYWRlIGl0IHRvIDAsIHNvIGJvb3RzdHJhcCBjYWxjdWxhdGluZyB0aGUgY2FsZW5kYXIgY29udGFpbmVyIHRvcCBwb3NpdGlvbiBpbXByb3Blcmx5LlxuICAgICAgICAvLyBUbyBmaXggdGhlIGNvbnRhaW5lciB0b3AgcG9zaXRpb24gc2V0IHRoZSB3aWR0aCAxcHg7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnLm1vZGVsLWhvbGRlcicpLndpZHRoKCcxcHgnKTtcbiAgICAgICAgY29uc3QgZHBDb250YWluZXJFbCA9ICQoJ2JzLWRhdGVwaWNrZXItY29udGFpbmVyJyk7XG4gICAgICAgIGRwQ29udGFpbmVyRWwuYXR0cignYXJpYS1sYWJlbCcsICdVc2UgQXJyb3cga2V5cyB0byBuYXZpZ2F0ZSBkYXRlcywgQ2hvb3NlIERhdGUgZnJvbSBkYXRlcGlja2VyJyk7XG4gICAgICAgICQoJy5icy1jYWxlbmRhci1jb250YWluZXInKS5yZW1vdmVBdHRyKCdyb2xlJyk7XG4gICAgICAgIGNvbnN0IGRhdGVQaWNrZXJDb250YWluZXIgPSAkKCcuYnMtZGF0ZXBpY2tlci1jb250YWluZXInKVswXTtcbiAgICAgICAgdGhpcy5mb2N1c1RyYXAgPSBzZXRGb2N1c1RyYXAoZGF0ZVBpY2tlckNvbnRhaW5lciwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZm9jdXNUcmFwLmFjdGl2YXRlKCk7XG4gICAgICAgIHRoaXMuYWRkRGF0ZXBpY2tlcktleWJvYXJkRXZlbnRzKHRoaXMsIGZhbHNlKTtcbiAgICAgICAgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oJCgnYnMtZGF0ZXBpY2tlci1jb250YWluZXInKSwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5fZGF0ZXBpY2tlcik7XG4gICAgICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMoJCgnYnMtZGF0ZXBpY2tlci1jb250YWluZXInKSwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5fZGF0ZXBpY2tlcik7XG5cbiAgICAgICAgaWYodGhpcy50aW1lWm9uZSkge1xuICAgICAgICAgICAgY29uc3QgdG9kYXlCdG4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLmRhdGVDb250YWluZXJDbHN9IC5icy1kYXRlcGlja2VyLWJ1dHRvbnMgLmJ0bi10b2RheS13cmFwcGVyIGJ1dHRvbmApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3Qgc2V0VG9kYXlUWkhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2RheVRaID0gZ2V0TW9tZW50TG9jYWxlT2JqZWN0KHRoaXMudGltZVpvbmUpO1xuICAgICAgICAgICAgICAgIGlmKG5ldyBEYXRlKHRoaXMuYnNEYXRhVmFsdWUpLnRvRGF0ZVN0cmluZygpICE9PSBuZXcgRGF0ZSh0b2RheVRaKS50b0RhdGVTdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJzRGF0YVZhbHVlID0gdG9kYXlUWjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdG9kYXlCdG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzZXRUb2RheVRaSGFuZGxlcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdG9kYXlCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzZXRUb2RheVRaSGFuZGxlcilcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbklucHV0Qmx1cigkZXZlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJTWFzaygpO1xuICAgICAgICBpZiAoISQoJGV2ZW50LnJlbGF0ZWRUYXJnZXQpLmhhc0NsYXNzKCdjdXJyZW50LWRhdGUnKSkge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmx1cicsIHsgJGV2ZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlSU1hc2soKSB7XG4gICAgICAgIHRoaXMuaW1hc2s/Lm1hc2tSZWY/LnVwZGF0ZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhpZGVEYXRlcGlja2VyRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNUcmFwPy5kZWFjdGl2YXRlKCk7XG4gICAgICAgIHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmx1ckRhdGVJbnB1dCh0aGlzLmlzT3Blbik7XG4gICAgfVxuXG4gICAgLy8gY2hhbmdlIGFuZCBibHVyIGV2ZW50cyBhcmUgYWRkZWQgZnJvbSB0aGUgdGVtcGxhdGVcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXZlbnQobm9kZTogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghXy5pbmNsdWRlcyhbJ2JsdXInLCAnZm9jdXMnLCAnY2hhbmdlJywgJ2NsaWNrJ10sIGV2ZW50TmFtZSkpIHtcbiAgICAgICAgICAgIHN1cGVyLmhhbmRsZUV2ZW50KG5vZGUsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIGxvY2Fscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB1c2VkIHRvIHRvZ2dsZSB0aGUgZHJvcGRvd24gb2YgdGhlIGRhdGUgd2lkZ2V0XG4gICAgICovXG4gICAgIHB1YmxpYyB0b2dnbGVEcERyb3Bkb3duKCRldmVudCwgc2tpcEZvY3VzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCkge1xuICAgICAgICAgICAgIC8vIEZpeGVzIGNsaWNrIGV2ZW50IGdldHRpbmcgdHJpZ2dyZWQgdHdpY2UgaW4gTW9iaWxlIGRldmljZXMuXG4gICAgICAgICAgICBpZiAoIXNraXBGb2N1cykge1xuICAgICAgICAgICAgICAgIHRoaXMub25EYXRlVGltZUlucHV0Rm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoJGV2ZW50LnR5cGUgPT09ICdjbGljaycpIHtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY2xpY2snLCB7ICRldmVudDogJGV2ZW50IH0pO1xuICAgICAgICAgIC8vICB0aGlzLmZvY3VzT25JbnB1dEVsKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRldmVudC50YXJnZXQgJiYgJCgkZXZlbnQudGFyZ2V0KS5pcygnaW5wdXQnKSAmJiAhKHRoaXMuaXNEcm9wRG93bkRpc3BsYXlFbmFibGVkT25JbnB1dCh0aGlzLnNob3dkcm9wZG93bm9uKSkpIHtcbiAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS50b2dnbGUoKTtcbiAgICAgICAgdGhpcy5hZGRCb2R5Q2xpY2tMaXN0ZW5lcih0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5pc09wZW4pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQm9keUNsaWNrTGlzdGVuZXIoc2tpcExpc3RlbmVyKSB7XG4gICAgICAgIGlmICghc2tpcExpc3RlbmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYnNEYXRlQ29udGFpbmVyRWxlbWVudCA9IGJvZHlFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3RoaXMuZGF0ZUNvbnRhaW5lckNsc31gKTtcbiAgICAgICAgICAgIHRoaXMuZGVyZWdpc3RlckV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyT25FbGVtZW50KGJvZHlFbGVtZW50LCBic0RhdGVDb250YWluZXJFbGVtZW50LCB0aGlzLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsIHRoaXMuaXNEcm9wRG93bkRpc3BsYXlFbmFibGVkT25JbnB1dCh0aGlzLnNob3dkcm9wZG93bm9uKSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB9LCBFVkVOVF9MSUZFLk9OQ0UsIHRydWUpO1xuICAgICAgICB9LCAzNTApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRyaWdnZXJlZCB3aGVuIHByZXNzaW5nIGtleSBvbiB0aGUgZGF0ZSBpbnB1dFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkRpc3BsYXlLZXlkb3duKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRHJvcERvd25EaXNwbGF5RW5hYmxlZE9uSW5wdXQodGhpcy5zaG93ZHJvcGRvd25vbikpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IGdldERhdGVPYmooZXZlbnQudGFyZ2V0LnZhbHVlLCB7cGF0dGVybjogdGhpcy5kYXRlcGF0dGVybn0pO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgbmV3VmFsLCB0aGlzLmRhdGVJbnB1dEZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnB1dFZhbCA9IGV2ZW50LnRhcmdldC52YWx1ZS50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0VmFsICYmIHRoaXMuZGF0ZXBhdHRlcm4gPT09ICd0aW1lc3RhbXAnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghXy5pc05hTihpbnB1dFZhbCkgJiYgXy5wYXJzZUludChpbnB1dFZhbCkgIT09IGZvcm1hdHRlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZERhdGVUaW1lRm9ybWF0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsIGV2ZW50LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0VmFsICYmIGlucHV0VmFsICE9PSBmb3JtYXR0ZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZERhdGVUaW1lRm9ybWF0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwgZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlVGltZUZvcm1hdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRW50ZXJQcmVzc2VkT25EYXRlSW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5ic1ZhbHVlID0gIGV2ZW50LnRhcmdldC52YWx1ZSA/IG5ld1ZhbCA6ICcnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlNYXNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlRHBEcm9wZG93bihldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZURhdGVwaWNrZXJEcm9wZG93bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlRGF0ZXBpY2tlckRyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiB0aGUgZGF0ZSBzZWxlY3Rpb24gY2hhbmdlc1xuICAgICAqL1xuICAgIG9uRGF0ZUNoYW5nZShuZXdWYWwpOiB2b2lkIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqICBOZ3gtYm9vdHN0cmFwIHVwZ3JhZGUgOiBUbyBhdm9pZCB0aGUgcGFnZSBsb2FkIGRhdGVjaGFuZ2UgZXZlbnQ7XG4gICAgICAgICAqICBUT0RPOlxuICAgICAgICAgKiAgaHR0cHM6Ly9naXRodWIuY29tL3ZhbG9yLXNvZnR3YXJlL25neC1ib290c3RyYXAvaXNzdWVzLzYwMTZcbiAgICAgICAgICogIEZvciBhYm92ZSBpc3N1ZSwgb25jZSB3ZSBnZXQgdGhlIHNvbHV0aW9uIGZyb20gTmd4LUJvb3RzdHJhcCB0ZWFtLCAgcmVtb3ZlIHRoZSBfYnNEZWZhdWx0TG9hZENoZWNrIGNoZWNrIGFuZCB1cGRhdGUgYWNjb3JkaW5nbHkuXG4gICAgICAgICAqICovXG4gICAgICAgIGlmICh0aGlzLl9ic0RlZmF1bHRMb2FkQ2hlY2spIHtcbiAgICAgICAgICAgIHRoaXMuX2JzRGVmYXVsdExvYWRDaGVjayA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUobmV3VmFsKTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnc2hvd2RhdGVmb3JtYXRhc3BsYWNlaG9sZGVyJykge1xuICAgICAgICAgICAgdGhpcy5zaG93ZGF0ZWZvcm1hdGFzcGxhY2Vob2xkZXIgPSBudjtcbiAgICAgICAgICAgIHRoaXMuaW1hc2s/LmRlc3Ryb3lNYXNrKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5zaG93ZGF0ZWZvcm1hdGFzcGxhY2Vob2xkZXIgJiYgdGhpcy5kYXRlcGF0dGVybiAhPT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hc2sgPSB2YWxpZGF0ZVRoZU1hc2tlZERhdGUodGhpcy5kYXRlcGF0dGVybiwgdGhpcy5zZWxlY3RlZExvY2FsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0ID0gdGhpcy5kYXRlSW5wdXRGb3JtYXQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0ID0gKHRoaXMuZGF0ZUlucHV0Rm9ybWF0LnNwbGl0KCdkJykubGVuZ3RoIC0gMSkgPT09IDEgPyB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQucmVwbGFjZSgnZCcsICdkZCcpIDogdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0O1xuICAgICAgICAgICAgICAgIHRoaXMubWFza0RhdGVJbnB1dEZvcm1hdCA9ICh0aGlzLmRhdGVJbnB1dEZvcm1hdC5zcGxpdCgnTScpLmxlbmd0aCAtIDEpID09PSAxID8gdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0LnJlcGxhY2UoJ00nLCAnTU0nKSA6IHRoaXMubWFza0RhdGVJbnB1dEZvcm1hdDtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlNYXNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIiAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYXBwLXRleHRib3ggYXBwLWRhdGVpbnB1dCBkaXNwbGF5LWlucHV0XCJcbiAgICAgICAgZm9jdXMtdGFyZ2V0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICNkYXRlSW5wdXRcbiAgICAgICAgW2ltYXNrXT1cIm1hc2tcIlxuICAgICAgICBbdW5tYXNrXT1cInRydWVcIlxuICAgICAgICBbdGFiaW5kZXhdPVwibG9hZE5hdGl2ZURhdGVJbnB1dCA/ICctMScgOiB0YWJpbmRleFwiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIiEhbG9hZE5hdGl2ZURhdGVJbnB1dFwiXG4gICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5VmFsdWVcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlRHBEcm9wZG93bigkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgKGZvY3VzKT1cIm9uRGF0ZVRpbWVJbnB1dEZvY3VzKCk7IGludm9rZU9uRm9jdXMoJGV2ZW50KTsgdXBkYXRlSU1hc2soKVwiXG4gICAgICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbYXR0ci5hY2Nlc3NrZXldPVwic2hvcnRjdXRrZXlcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImhpbnRcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uRGlzcGxheURhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duKT1cInRoaXMuX3RyaWdnZXJlZEJ5VXNlciA9IHRydWU7IG9uRGlzcGxheUtleWRvd24oJGV2ZW50KTtcIj5cblxuICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tdGltZVwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwibG9hZE5hdGl2ZURhdGVJbnB1dCA/ICctMScgOiB0YWJpbmRleFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhIWxvYWROYXRpdmVEYXRlSW5wdXRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGlzcGxheVZhbHVlID8gJ0NoYW5nZSBEYXRlICcgKyBkaXNwbGF5VmFsdWUgOiAnQ2hvb3NlIGRhdGUgYnkgcHJlc3NpbmcgZW50ZXInXCJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRHBEcm9wZG93bigkZXZlbnQsIGZhbHNlKVwiPlxuICAgICAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFwcC1pY29uIHdtLXNsLWwgc2wtY2FsZW5kYXJcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvc3Bhbj5cbiAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDA7ZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxuICAgIDxpbnB1dCBjbGFzcz1cIm1vZGVsLWhvbGRlclwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJkYXRlcGlja2VyIGRyb3Bkb3dubWVudVwiXG4gICAgICAgIGFyaWEtY29udHJvbHM9XCJkYXRlXCJcbiAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiISFsb2FkTmF0aXZlRGF0ZUlucHV0XCJcbiAgICAgICAgW2NvbnRhaW5lcl09XCJjb250YWluZXJUYXJnZXQgfHwgJy53bS1hcHAnXCJcbiAgICAgICAgW2JzQ29uZmlnXT1cIl9kYXRlT3B0aW9uc1wiXG4gICAgICAgIFtpc09wZW5dPVwiaXNPcGVuXCJcbiAgICAgICAgI2RhdGVwaWNrZXI9XCJic0RhdGVwaWNrZXJcIlxuICAgICAgICBic0RhdGVwaWNrZXJcbiAgICAgICAgW2RheXNEaXNhYmxlZF09XCJleGNsdWRlZERheXNUb0Rpc2FibGVcIlxuICAgICAgICBbZGF0ZXNEaXNhYmxlZF09XCJleGNsdWRlZERhdGVzVG9EaXNhYmxlXCJcbiAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCJcbiAgICAgICAgW2lzRGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICBbYnNWYWx1ZV09XCJic0RhdGFWYWx1ZVwiXG4gICAgICAgIChvblNob3duKT1cIm9uRGF0ZVBpY2tlck9wZW4oKVwiXG4gICAgICAgIChvbkhpZGRlbik9XCJoaWRlRGF0ZXBpY2tlckRyb3Bkb3duKClcIlxuICAgICAgICAoYnNWYWx1ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBbbmdJZl09XCJsb2FkTmF0aXZlRGF0ZUlucHV0XCI+XG4gICAgPHdtLWRhdGV0aW1lcGlja2VyXG4gICAgICAgIGRhdGVUaW1lUGlja2VyXG4gICAgICAgIG1vZGU9XCJEQVRFXCJcbiAgICAgICAgW2NvbmZpZ109XCJfZGF0ZU9wdGlvbnNcIlxuICAgICAgICBbcGxhY2VtZW50XT1cIm1vZGFsXCJcbiAgICAgICAgW2V4Y2x1ZGVkRGF5c1RvRGlzYWJsZV09XCJleGNsdWRlZERheXNUb0Rpc2FibGVcIlxuICAgICAgICBbZXhjbHVkZWREYXRlc1RvRGlzYWJsZV09XCJleGNsdWRlZERhdGVzVG9EaXNhYmxlXCJcbiAgICAgICAgW2Rpc3BsYXlGb3JtYXRdPVwiZGF0ZUlucHV0Rm9ybWF0XCJcbiAgICAgICAgW3ZhbHVlXT1cImJzRGF0YVZhbHVlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvd20tZGF0ZXRpbWVwaWNrZXI+XG4gICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1pbnB1dCBtb2JpbGUtZGF0ZXBpY2tlci1jb250YWluZXJcIlxuICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXggfHwgMFwiXG4gICAgICAgICAoY2xpY2spPVwiIShkaXNhYmxlZCB8fCByZWFkb25seSkgJiYgc2hvd0RhdGVQaWNrZXJNb2RhbChic0RhdGFWYWx1ZSlcIlxuICAgICAgICAoZm9jdXMpPVwib25EYXRlVGltZUlucHV0Rm9jdXModHJ1ZSk7IGludm9rZU9uRm9jdXMoJGV2ZW50KTtcIlxuICAgICAgICAoYmx1cik9XCJvbkRhdGVUaW1lSW5wdXRCbHVyKCk7IGludm9rZU9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGlzcGxheVZhbHVlID8gJ0NoYW5nZSBEYXRlICcgKyBkaXNwbGF5VmFsdWUgOiBoaW50IHx8ICdDaG9vc2UgRGF0ZSdcIlxuICAgICAgICAgcm9sZT1cImJ1dHRvblwiPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
352
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DateComponent, { className: "DateComponent", filePath: "date/date.component.ts", lineNumber: 43 }); })();
353
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL2RhdGUvZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFakUsT0FBTyxFQUNILHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsV0FBVyxFQUVYLGNBQWMsRUFDZCxVQUFVLEVBQ1Ysd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3hCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBaUIsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBQyxNQUFNLFdBQVcs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QWtCRjtZQUF2QyxBQURBLEFBREEsbUlBQVcsc0JBQWtCLEtBQUMsd0hBQ2xCLDRCQUF3QixLQUFDLHdJQUNwQix3QkFBb0IsS0FBQztZQUM5QyxBQWxCSSxpQkFpQjJDLEVBQ3pDO1lBRU4sOEVBQTBDOztZQTFDbEMsQUFEQSxBQURBLEFBREEsQUFKQSxBQUZBLEFBREEsQUFEQSxBQUZBLCtCQUFhLG1CQUVDLGdCQUNDLDJEQUNtQywyQkFFNUIsMENBSVcsNEJBQ1YsMEJBQ0YsNEJBQ0U7O1lBVW5CLGVBQWtEO1lBRWxELEFBRkEsd0VBQWtELDBDQUVqQjs7WUFhckMsZUFBZTtZQVdmLEFBREEsQUFGQSxBQURBLEFBSEEsQUFEQSxBQURBLEFBRkEsNkJBQWUsK0NBRTJCLDhCQUNqQixzQkFDUiwyQ0FHcUIsNkNBQ0UsNENBRUwsNEJBQ1o7O1lBTWxCLGVBQTRCO1lBQTVCLDhDQUE0Qjs7O2lGRGhCNUIsYUFBYTtjQVR6QixTQUFTOzJCQUNJLFVBQVUsYUFFVDtvQkFDUCxTQUFTLGdCQUFnQixpQkFBaUIsRUFBRSxJQUFJLENBQUM7b0JBQ2pELFNBQVMsZ0JBQWdCLGFBQWEsRUFBRSxJQUFJLENBQUM7b0JBQzdDLGtCQUFrQixlQUFlO2lCQUNwQzs7c0JBc0VJLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFRO3FCQVJHLHFCQUFxQjtrQkFBaEUsU0FBUzttQkFBQyxxQkFBcUI7WUFDZ0IsS0FBSztrQkFBcEQsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBQyxJQUFJLEVBQUUsY0FBYyxFQUFDOztrRkE3RHJDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIE9wdGlvbmFsLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIE5HX1ZBTElEQVRPUlMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEJzRGF0ZXBpY2tlckRpcmVjdGl2ZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5cbmltcG9ydCB7XG4gICAgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24sXG4gICAgYWRkRXZlbnRMaXN0ZW5lck9uRWxlbWVudCxcbiAgICBBcHBEZWZhdWx0cyxcbiAgICBFVkVOVF9MSUZFLFxuICAgIEZvcm1XaWRnZXRUeXBlLFxuICAgIGdldERhdGVPYmosXG4gICAgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0LFxuICAgIGdldEZvcm1hdHRlZERhdGUsXG4gICAgYWRqdXN0Q29udGFpbmVyUmlnaHRFZGdlcyxcbiAgICBnZXRNb21lbnRMb2NhbGVPYmplY3Rcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgSVdpZGdldENvbmZpZywgcHJvdmlkZUFzLCBwcm92aWRlQXNXaWRnZXRSZWYsIHNldEZvY3VzVHJhcCwgc3R5bGVyIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBCYXNlRGF0ZVRpbWVDb21wb25lbnQgfSBmcm9tICcuLy4uL2Jhc2UtZGF0ZS10aW1lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9kYXRlLnByb3BzJztcbmltcG9ydCB7IHZhbGlkYXRlVGhlTWFza2VkRGF0ZSB9IGZyb20gJy4vaW1hc2tVdGlsJztcbmltcG9ydCB7IElNYXNrRGlyZWN0aXZlIH0gZnJvbSAnYW5ndWxhci1pbWFzayc7XG5pbXBvcnQge2luY2x1ZGVzLCBpc05hTiwgcGFyc2VJbnR9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCBfLCAkO1xuXG5jb25zdCBDVVJSRU5UX0RBVEUgPSAnQ1VSUkVOVF9EQVRFJztcbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1kYXRlIGlucHV0LWdyb3VwJztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLWRhdGUnLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFNcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3dtRGF0ZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKERhdGVDb21wb25lbnQsIE5HX1ZBTFVFX0FDQ0VTU09SLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzKERhdGVDb21wb25lbnQsIE5HX1ZBTElEQVRPUlMsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoRGF0ZUNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGF0ZVRpbWVDb21wb25lbnQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwdWJsaWMgYnNEYXRhVmFsdWU7XG4gICAgcHVibGljIHNob3dkcm9wZG93bm9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkYXRlQ29udGFpbmVyQ2xzOiBzdHJpbmc7XG4gICAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2JzRGVmYXVsdExvYWRDaGVjazogYm9vbGVhbjtcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBkZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcjtcbiAgICBwcml2YXRlIGlzQ3VycmVudERhdGU7XG4gICAgcHJpdmF0ZSBmb2N1c1RyYXA7XG4gICAgcHJpdmF0ZSBzaG93ZGF0ZWZvcm1hdGFzcGxhY2Vob2xkZXIgPSBmYWxzZTtcbiAgICBtYXNrO1xuICAgIHByaXZhdGUgbWFza0RhdGVJbnB1dEZvcm1hdDtcblxuICAgIGdldCB0aW1lc3RhbXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJzRGF0YVZhbHVlID8gdGhpcy5ic0RhdGFWYWx1ZS52YWx1ZU9mKCkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGRhdGVJbnB1dEZvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVPcHRpb25zLmRhdGVJbnB1dEZvcm1hdCB8fCAneXl5eS1NTS1kZCc7XG4gICAgfVxuXG4gICAgZ2V0IGRpc3BsYXlWYWx1ZSgpIHtcbiAgICAgICAgaWYodGhpcy5zaG93ZGF0ZWZvcm1hdGFzcGxhY2Vob2xkZXIgJiYgdGhpcy5pbWFzaz8ubWFza1JlZiAmJiB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIHRoaXMuYnNEYXRhVmFsdWUsIHRoaXMubWFza0RhdGVJbnB1dEZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKSB8fCAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzRGF0YVZhbHVlLCB0aGlzLmRhdGVJbnB1dEZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRGlzcGxheVZhbHVlKCkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzRGF0YVZhbHVlLCAneXl5eS1NTS1kZCcsIHRoaXMudGltZVpvbmUsIG51bGwsIHRoaXMuaXNDdXJyZW50RGF0ZSwgdGhpcykgfHwgJyc7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBkYXRhdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIHRoaXMuYnNEYXRhVmFsdWUsIHRoaXMub3V0cHV0Zm9ybWF0LCB0aGlzLnRpbWVab25lLCBudWxsLCB0aGlzLmlzQ3VycmVudERhdGUsIHRoaXMpIHx8ICcnO1xuICAgIH1cblxuICAgIC8vIFRvZG9bU2h1YmhhbV06IG5lZWRzIHRvIGJlIHJlZGVmaW5lZFxuICAgIC8vIHNldHMgdGhlIGRhdGFWYWx1ZSBhbmQgY29tcHV0ZXMgdGhlIGRpc3BsYXkgbW9kZWwgdmFsdWVzXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHNldCBkYXRhdmFsdWUobmV3VmFsKSB7XG4gICAgICAgIGlmIChuZXdWYWwgPT09IENVUlJFTlRfREFURSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ic0RhdGFWYWx1ZSA9IHRoaXMudGltZVpvbmUgPyBnZXRNb21lbnRMb2NhbGVPYmplY3QodGhpcy50aW1lWm9uZSkgOiBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgfSwgNTApO1xuICAgICAgICAgICAgdGhpcy5pc0N1cnJlbnREYXRlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnNEYXRhVmFsdWUgPSBuZXdWYWwgPyBnZXREYXRlT2JqKG5ld1ZhbCwge2lzTmF0aXZlUGlja2VyOiB0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXR9LCB0aGlzLnRpbWVab25lKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50RGF0ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHVwZGF0ZSB0aGUgcHJldmlvdXMgZGF0YXZhbHVlLlxuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKEJzRGF0ZXBpY2tlckRpcmVjdGl2ZSkgcHJvdGVjdGVkIGJzRGF0ZVBpY2tlckRpcmVjdGl2ZTtcbiAgICBAVmlld0NoaWxkKCdkYXRlSW5wdXQnLCB7cmVhZDogSU1hc2tEaXJlY3RpdmV9KSBpbWFzazogSU1hc2tEaXJlY3RpdmU8YW55PjtcblxuICAgIC8vIFRPRE8gdXNlIEJzTG9jYWxlU2VydmljZSB0byBzZXQgdGhlIGN1cnJlbnQgdXNlcidzIGxvY2FsZSB0byBzZWUgdGhlIGxvY2FsaXplZCBsYWJlbHNcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgYXBwRGVmYXVsdHM6IEFwcERlZmF1bHRzLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzKTtcblxuICAgICAgICB0aGlzLmRhdGVDb250YWluZXJDbHMgPSBgYXBwLWRhdGUtJHt0aGlzLndpZGdldElkfWA7XG4gICAgICAgIHRoaXMuX2RhdGVPcHRpb25zLmNvbnRhaW5lckNsYXNzID0gYGFwcC1kYXRlICR7dGhpcy5kYXRlQ29udGFpbmVyQ2xzfWA7XG4gICAgICAgIHRoaXMuX2RhdGVPcHRpb25zLnNob3dXZWVrTnVtYmVycyA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9ic0RlZmF1bHRMb2FkQ2hlY2sgPSB0cnVlO1xuICAgICAgICB0aGlzLmRhdGVwYXR0ZXJuID0gdGhpcy5hcHBEZWZhdWx0cy5kYXRlRm9ybWF0IHx8IGdldERpc3BsYXlEYXRlVGltZUZvcm1hdChGb3JtV2lkZ2V0VHlwZS5EQVRFKTtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtYXQoJ2RhdGVwYXR0ZXJuJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRyaWdnZXJlZCB3aGVuIHRoZSBkYXRlIGlucHV0IGNoYW5nZXNcbiAgICAgKi9cbiAgICBvbkRpc3BsYXlEYXRlQ2hhbmdlKCRldmVudCwgaXNOYXRpdmVQaWNrZXI6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUlNYXNrKCk7XG4gICAgICAgIGlmICh0aGlzLmlzRW50ZXJQcmVzc2VkT25EYXRlSW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1ZhbCA9IGdldERhdGVPYmooJGV2ZW50LnRhcmdldC52YWx1ZSwge3BhdHRlcm46IHRoaXMuZGF0ZXBhdHRlcm4sIGlzTmF0aXZlUGlja2VyOiBpc05hdGl2ZVBpY2tlcn0pO1xuICAgICAgICAvLyBkYXRlIHBhdHRlcm4gdmFsaWRhdGlvblxuICAgICAgICAvLyBpZiBpbnZhbGlkIHBhdHRlcm4gaXMgZW50ZXJlZCwgZGV2aWNlIGlzIHNob3dpbmcgYW4gZXJyb3IuXG4gICAgICAgIGlmICghdGhpcy5mb3JtYXRWYWxpZGF0aW9uKG5ld1ZhbCwgJGV2ZW50LnRhcmdldC52YWx1ZSwgaXNOYXRpdmVQaWNrZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gbWluIGRhdGUgYW5kIG1heCBkYXRlIHZhbGlkYXRpb24gaW4gbW9iaWxlIHZpZXcuXG4gICAgICAgIC8vIGlmIGludmFsaWQgZGF0ZXMgYXJlIGVudGVyZWQsIGRldmljZSBpcyBzaG93aW5nIGFuIGFsZXJ0LlxuICAgICAgICBpZiAoaXNOYXRpdmVQaWNrZXIgJiYgdGhpcy5taW5EYXRlTWF4RGF0ZVZhbGlkYXRpb25PbklucHV0KG5ld1ZhbCwgJGV2ZW50LCB0aGlzLmRpc3BsYXlWYWx1ZSwgaXNOYXRpdmVQaWNrZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUobmV3VmFsKTtcbiAgICB9XG5cbiAgICAvLyBzZXRzIHRoZSBkYXRhVmFsdWUgYW5kIGNvbXB1dGVzIHRoZSBkaXNwbGF5IG1vZGVsIHZhbHVlc1xuICAgIHByaXZhdGUgc2V0RGF0YVZhbHVlKG5ld1ZhbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmludmFsaWREYXRlVGltZUZvcm1hdCA9IGZhbHNlO1xuICAgICAgICAvLyBtaW4gZGF0ZSBhbmQgbWF4IGRhdGUgdmFsaWRhdGlvbiBpbiB3ZWIuXG4gICAgICAgIC8vIGlmIGludmFsaWQgZGF0ZXMgYXJlIGVudGVyZWQsIGRldmljZSBpcyBzaG93aW5nIHZhbGlkYXRpb24gbWVzc2FnZS5cbiAgICAgICAgdGhpcy5taW5EYXRlTWF4RGF0ZVZhbGlkYXRpb25PbklucHV0KG5ld1ZhbCk7XG4gICAgICAgIGlmIChnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIG5ld1ZhbCwgdGhpcy5kYXRlSW5wdXRGb3JtYXQsIHRoaXMudGltZVpvbmUsIG51bGwsIHRoaXMuaXNDdXJyZW50RGF0ZSwgdGhpcykgPT09IHRoaXMuZGlzcGxheVZhbHVlKSB7XG4gICAgICAgICAgICAkKHRoaXMubmF0aXZlRWxlbWVudCkuZmluZCgnLmRpc3BsYXktaW5wdXQnKS52YWwodGhpcy5kaXNwbGF5VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgIHRoaXMuYnNEYXRhVmFsdWUgPSBuZXdWYWw7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUlNYXNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJzRGF0YVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsIHt9LCB0cnVlKTtcbiAgICB9XG5cbiAgICBvbkRhdGVQaWNrZXJPcGVuKCkge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMuYnNEYXRhVmFsdWUgPyB0aGlzLmJzRGF0YVZhbHVlIDogKHRoaXMudGltZVpvbmUgPyBnZXRNb21lbnRMb2NhbGVPYmplY3QodGhpcy50aW1lWm9uZSkgOiBuZXcgRGF0ZSgpKTtcbiAgICAgICAgaWYgKCF0aGlzLmJzRGF0YVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmhpZ2h0bGlnaHRUb2RheSh0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlSU1hc2soKTtcblxuICAgICAgICAvLyBXZSBhcmUgdXNpbmcgdGhlIHR3byBpbnB1dCB0YWdzKFRvIG1haW50YWluIHRoZSBtb2RhbCBhbmQgcHJveHkgbW9kYWwpIGZvciB0aGUgZGF0ZSBjb250cm9sLlxuICAgICAgICAvLyBTbyBhY3R1YWwgYm9vdHN0cmFwIGlucHV0IHRhcmdldCB3aWR0aCB3ZSBtYWRlIGl0IHRvIDAsIHNvIGJvb3RzdHJhcCBjYWxjdWxhdGluZyB0aGUgY2FsZW5kYXIgY29udGFpbmVyIHRvcCBwb3NpdGlvbiBpbXByb3Blcmx5LlxuICAgICAgICAvLyBUbyBmaXggdGhlIGNvbnRhaW5lciB0b3AgcG9zaXRpb24gc2V0IHRoZSB3aWR0aCAxcHg7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnLm1vZGVsLWhvbGRlcicpLndpZHRoKCcxcHgnKTtcbiAgICAgICAgY29uc3QgZHBDb250YWluZXJFbCA9ICQoJ2JzLWRhdGVwaWNrZXItY29udGFpbmVyJyk7XG4gICAgICAgIGRwQ29udGFpbmVyRWwuYXR0cignYXJpYS1sYWJlbCcsICdVc2UgQXJyb3cga2V5cyB0byBuYXZpZ2F0ZSBkYXRlcywgQ2hvb3NlIERhdGUgZnJvbSBkYXRlcGlja2VyJyk7XG4gICAgICAgICQoJy5icy1jYWxlbmRhci1jb250YWluZXInKS5yZW1vdmVBdHRyKCdyb2xlJyk7XG4gICAgICAgIGNvbnN0IGRhdGVQaWNrZXJDb250YWluZXIgPSAkKCcuYnMtZGF0ZXBpY2tlci1jb250YWluZXInKVswXTtcbiAgICAgICAgdGhpcy5mb2N1c1RyYXAgPSBzZXRGb2N1c1RyYXAoZGF0ZVBpY2tlckNvbnRhaW5lciwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZm9jdXNUcmFwLmFjdGl2YXRlKCk7XG4gICAgICAgIHRoaXMuYWRkRGF0ZXBpY2tlcktleWJvYXJkRXZlbnRzKHRoaXMsIGZhbHNlKTtcbiAgICAgICAgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oJCgnYnMtZGF0ZXBpY2tlci1jb250YWluZXInKSwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5fZGF0ZXBpY2tlcik7XG4gICAgICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMoJCgnYnMtZGF0ZXBpY2tlci1jb250YWluZXInKSwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5fZGF0ZXBpY2tlcik7XG5cbiAgICAgICAgaWYodGhpcy50aW1lWm9uZSkge1xuICAgICAgICAgICAgY29uc3QgdG9kYXlCdG4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLmRhdGVDb250YWluZXJDbHN9IC5icy1kYXRlcGlja2VyLWJ1dHRvbnMgLmJ0bi10b2RheS13cmFwcGVyIGJ1dHRvbmApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3Qgc2V0VG9kYXlUWkhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2RheVRaID0gZ2V0TW9tZW50TG9jYWxlT2JqZWN0KHRoaXMudGltZVpvbmUpO1xuICAgICAgICAgICAgICAgIGlmKG5ldyBEYXRlKHRoaXMuYnNEYXRhVmFsdWUpLnRvRGF0ZVN0cmluZygpICE9PSBuZXcgRGF0ZSh0b2RheVRaKS50b0RhdGVTdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJzRGF0YVZhbHVlID0gdG9kYXlUWjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdG9kYXlCdG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzZXRUb2RheVRaSGFuZGxlcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdG9kYXlCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzZXRUb2RheVRaSGFuZGxlcilcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbklucHV0Qmx1cigkZXZlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJTWFzaygpO1xuICAgICAgICBpZiAoISQoJGV2ZW50LnJlbGF0ZWRUYXJnZXQpLmhhc0NsYXNzKCdjdXJyZW50LWRhdGUnKSkge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmx1cicsIHsgJGV2ZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlSU1hc2soKSB7XG4gICAgICAgIHRoaXMuaW1hc2s/Lm1hc2tSZWY/LnVwZGF0ZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhpZGVEYXRlcGlja2VyRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNUcmFwPy5kZWFjdGl2YXRlKCk7XG4gICAgICAgIHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmx1ckRhdGVJbnB1dCh0aGlzLmlzT3Blbik7XG4gICAgfVxuXG4gICAgLy8gY2hhbmdlIGFuZCBibHVyIGV2ZW50cyBhcmUgYWRkZWQgZnJvbSB0aGUgdGVtcGxhdGVcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXZlbnQobm9kZTogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghaW5jbHVkZXMoWydibHVyJywgJ2ZvY3VzJywgJ2NoYW5nZScsICdjbGljayddLCBldmVudE5hbWUpKSB7XG4gICAgICAgICAgICBzdXBlci5oYW5kbGVFdmVudChub2RlLCBldmVudE5hbWUsIGNhbGxiYWNrLCBsb2NhbHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgdXNlZCB0byB0b2dnbGUgdGhlIGRyb3Bkb3duIG9mIHRoZSBkYXRlIHdpZGdldFxuICAgICAqL1xuICAgICBwdWJsaWMgdG9nZ2xlRHBEcm9wZG93bigkZXZlbnQsIHNraXBGb2N1czogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLmxvYWROYXRpdmVEYXRlSW5wdXQpIHtcbiAgICAgICAgICAgICAvLyBGaXhlcyBjbGljayBldmVudCBnZXR0aW5nIHRyaWdncmVkIHR3aWNlIGluIE1vYmlsZSBkZXZpY2VzLlxuICAgICAgICAgICAgaWYgKCFza2lwRm9jdXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGF0ZVRpbWVJbnB1dEZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRldmVudC50eXBlID09PSAnY2xpY2snKSB7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NsaWNrJywgeyAkZXZlbnQ6ICRldmVudCB9KTtcbiAgICAgICAgICAvLyAgdGhpcy5mb2N1c09uSW5wdXRFbCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQudGFyZ2V0ICYmICQoJGV2ZW50LnRhcmdldCkuaXMoJ2lucHV0JykgJiYgISh0aGlzLmlzRHJvcERvd25EaXNwbGF5RW5hYmxlZE9uSW5wdXQodGhpcy5zaG93ZHJvcGRvd25vbikpKSB7XG4gICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ic0RhdGVQaWNrZXJEaXJlY3RpdmUudG9nZ2xlKCk7XG4gICAgICAgIHRoaXMuYWRkQm9keUNsaWNrTGlzdGVuZXIodGhpcy5ic0RhdGVQaWNrZXJEaXJlY3RpdmUuaXNPcGVuKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEJvZHlDbGlja0xpc3RlbmVyKHNraXBMaXN0ZW5lcikge1xuICAgICAgICBpZiAoIXNraXBMaXN0ZW5lcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJzRGF0ZUNvbnRhaW5lckVsZW1lbnQgPSBib2R5RWxlbWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLmRhdGVDb250YWluZXJDbHN9YCk7XG4gICAgICAgICAgICB0aGlzLmRlcmVnaXN0ZXJFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lck9uRWxlbWVudChib2R5RWxlbWVudCwgYnNEYXRlQ29udGFpbmVyRWxlbWVudCwgdGhpcy5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCB0aGlzLmlzRHJvcERvd25EaXNwbGF5RW5hYmxlZE9uSW5wdXQodGhpcy5zaG93ZHJvcGRvd25vbiksICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgRVZFTlRfTElGRS5PTkNFLCB0cnVlKTtcbiAgICAgICAgfSwgMzUwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiBwcmVzc2luZyBrZXkgb24gdGhlIGRhdGUgaW5wdXRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EaXNwbGF5S2V5ZG93bihldmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0Ryb3BEb3duRGlzcGxheUVuYWJsZWRPbklucHV0KHRoaXMuc2hvd2Ryb3Bkb3dub24pKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWwgPSBnZXREYXRlT2JqKGV2ZW50LnRhcmdldC52YWx1ZSwge3BhdHRlcm46IHRoaXMuZGF0ZXBhdHRlcm59KTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBnZXRGb3JtYXR0ZWREYXRlKHRoaXMuZGF0ZVBpcGUsIG5ld1ZhbCwgdGhpcy5kYXRlSW5wdXRGb3JtYXQsIHRoaXMudGltZVpvbmUsIG51bGwsIHRoaXMuaXNDdXJyZW50RGF0ZSwgdGhpcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXRWYWwgPSBldmVudC50YXJnZXQudmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dFZhbCAmJiB0aGlzLmRhdGVwYXR0ZXJuID09PSAndGltZXN0YW1wJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKGlucHV0VmFsKSAmJiBwYXJzZUludChpbnB1dFZhbCkgIT09IGZvcm1hdHRlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZERhdGVUaW1lRm9ybWF0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsIGV2ZW50LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0VmFsICYmIGlucHV0VmFsICE9PSBmb3JtYXR0ZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZERhdGVUaW1lRm9ybWF0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwgZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlVGltZUZvcm1hdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRW50ZXJQcmVzc2VkT25EYXRlSW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5ic1ZhbHVlID0gIGV2ZW50LnRhcmdldC52YWx1ZSA/IG5ld1ZhbCA6ICcnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlNYXNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlRHBEcm9wZG93bihldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZURhdGVwaWNrZXJEcm9wZG93bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlRGF0ZXBpY2tlckRyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiB0aGUgZGF0ZSBzZWxlY3Rpb24gY2hhbmdlc1xuICAgICAqL1xuICAgIG9uRGF0ZUNoYW5nZShuZXdWYWwpOiB2b2lkIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqICBOZ3gtYm9vdHN0cmFwIHVwZ3JhZGUgOiBUbyBhdm9pZCB0aGUgcGFnZSBsb2FkIGRhdGVjaGFuZ2UgZXZlbnQ7XG4gICAgICAgICAqICBUT0RPOlxuICAgICAgICAgKiAgaHR0cHM6Ly9naXRodWIuY29tL3ZhbG9yLXNvZnR3YXJlL25neC1ib290c3RyYXAvaXNzdWVzLzYwMTZcbiAgICAgICAgICogIEZvciBhYm92ZSBpc3N1ZSwgb25jZSB3ZSBnZXQgdGhlIHNvbHV0aW9uIGZyb20gTmd4LUJvb3RzdHJhcCB0ZWFtLCAgcmVtb3ZlIHRoZSBfYnNEZWZhdWx0TG9hZENoZWNrIGNoZWNrIGFuZCB1cGRhdGUgYWNjb3JkaW5nbHkuXG4gICAgICAgICAqICovXG4gICAgICAgIGlmICh0aGlzLl9ic0RlZmF1bHRMb2FkQ2hlY2spIHtcbiAgICAgICAgICAgIHRoaXMuX2JzRGVmYXVsdExvYWRDaGVjayA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUobmV3VmFsKTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnc2hvd2RhdGVmb3JtYXRhc3BsYWNlaG9sZGVyJykge1xuICAgICAgICAgICAgdGhpcy5zaG93ZGF0ZWZvcm1hdGFzcGxhY2Vob2xkZXIgPSBudjtcbiAgICAgICAgICAgIHRoaXMuaW1hc2s/LmRlc3Ryb3lNYXNrKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5zaG93ZGF0ZWZvcm1hdGFzcGxhY2Vob2xkZXIgJiYgdGhpcy5kYXRlcGF0dGVybiAhPT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hc2sgPSB2YWxpZGF0ZVRoZU1hc2tlZERhdGUodGhpcy5kYXRlcGF0dGVybiwgdGhpcy5zZWxlY3RlZExvY2FsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0ID0gdGhpcy5kYXRlSW5wdXRGb3JtYXQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0ID0gKHRoaXMuZGF0ZUlucHV0Rm9ybWF0LnNwbGl0KCdkJykubGVuZ3RoIC0gMSkgPT09IDEgPyB0aGlzLm1hc2tEYXRlSW5wdXRGb3JtYXQucmVwbGFjZSgnZCcsICdkZCcpIDogdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0O1xuICAgICAgICAgICAgICAgIHRoaXMubWFza0RhdGVJbnB1dEZvcm1hdCA9ICh0aGlzLmRhdGVJbnB1dEZvcm1hdC5zcGxpdCgnTScpLmxlbmd0aCAtIDEpID09PSAxID8gdGhpcy5tYXNrRGF0ZUlucHV0Rm9ybWF0LnJlcGxhY2UoJ00nLCAnTU0nKSA6IHRoaXMubWFza0RhdGVJbnB1dEZvcm1hdDtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlNYXNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIiAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYXBwLXRleHRib3ggYXBwLWRhdGVpbnB1dCBkaXNwbGF5LWlucHV0XCJcbiAgICAgICAgZm9jdXMtdGFyZ2V0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICNkYXRlSW5wdXRcbiAgICAgICAgW2ltYXNrXT1cIm1hc2tcIlxuICAgICAgICBbdW5tYXNrXT1cInRydWVcIlxuICAgICAgICBbdGFiaW5kZXhdPVwibG9hZE5hdGl2ZURhdGVJbnB1dCA/ICctMScgOiB0YWJpbmRleFwiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIiEhbG9hZE5hdGl2ZURhdGVJbnB1dFwiXG4gICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5VmFsdWVcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlRHBEcm9wZG93bigkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgKGZvY3VzKT1cIm9uRGF0ZVRpbWVJbnB1dEZvY3VzKCk7IGludm9rZU9uRm9jdXMoJGV2ZW50KTsgdXBkYXRlSU1hc2soKVwiXG4gICAgICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbYXR0ci5hY2Nlc3NrZXldPVwic2hvcnRjdXRrZXlcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImhpbnRcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uRGlzcGxheURhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duKT1cInRoaXMuX3RyaWdnZXJlZEJ5VXNlciA9IHRydWU7IG9uRGlzcGxheUtleWRvd24oJGV2ZW50KTtcIj5cblxuICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tdGltZVwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwibG9hZE5hdGl2ZURhdGVJbnB1dCA/ICctMScgOiB0YWJpbmRleFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhIWxvYWROYXRpdmVEYXRlSW5wdXRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGlzcGxheVZhbHVlID8gJ0NoYW5nZSBEYXRlICcgKyBkaXNwbGF5VmFsdWUgOiAnQ2hvb3NlIGRhdGUgYnkgcHJlc3NpbmcgZW50ZXInXCJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRHBEcm9wZG93bigkZXZlbnQsIGZhbHNlKVwiPlxuICAgICAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFwcC1pY29uIHdtLXNsLWwgc2wtY2FsZW5kYXJcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvc3Bhbj5cbiAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDA7ZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxuICAgIDxpbnB1dCBjbGFzcz1cIm1vZGVsLWhvbGRlclwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJkYXRlcGlja2VyIGRyb3Bkb3dubWVudVwiXG4gICAgICAgIGFyaWEtY29udHJvbHM9XCJkYXRlXCJcbiAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiISFsb2FkTmF0aXZlRGF0ZUlucHV0XCJcbiAgICAgICAgW2NvbnRhaW5lcl09XCJjb250YWluZXJUYXJnZXQgfHwgJy53bS1hcHAnXCJcbiAgICAgICAgW2JzQ29uZmlnXT1cIl9kYXRlT3B0aW9uc1wiXG4gICAgICAgIFtpc09wZW5dPVwiaXNPcGVuXCJcbiAgICAgICAgI2RhdGVwaWNrZXI9XCJic0RhdGVwaWNrZXJcIlxuICAgICAgICBic0RhdGVwaWNrZXJcbiAgICAgICAgW2RheXNEaXNhYmxlZF09XCJleGNsdWRlZERheXNUb0Rpc2FibGVcIlxuICAgICAgICBbZGF0ZXNEaXNhYmxlZF09XCJleGNsdWRlZERhdGVzVG9EaXNhYmxlXCJcbiAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCJcbiAgICAgICAgW2lzRGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICBbYnNWYWx1ZV09XCJic0RhdGFWYWx1ZVwiXG4gICAgICAgIChvblNob3duKT1cIm9uRGF0ZVBpY2tlck9wZW4oKVwiXG4gICAgICAgIChvbkhpZGRlbik9XCJoaWRlRGF0ZXBpY2tlckRyb3Bkb3duKClcIlxuICAgICAgICAoYnNWYWx1ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBbbmdJZl09XCJsb2FkTmF0aXZlRGF0ZUlucHV0XCI+XG4gICAgPHdtLWRhdGV0aW1lcGlja2VyXG4gICAgICAgIGRhdGVUaW1lUGlja2VyXG4gICAgICAgIG1vZGU9XCJEQVRFXCJcbiAgICAgICAgW2NvbmZpZ109XCJfZGF0ZU9wdGlvbnNcIlxuICAgICAgICBbcGxhY2VtZW50XT1cIm1vZGFsXCJcbiAgICAgICAgW2V4Y2x1ZGVkRGF5c1RvRGlzYWJsZV09XCJleGNsdWRlZERheXNUb0Rpc2FibGVcIlxuICAgICAgICBbZXhjbHVkZWREYXRlc1RvRGlzYWJsZV09XCJleGNsdWRlZERhdGVzVG9EaXNhYmxlXCJcbiAgICAgICAgW2Rpc3BsYXlGb3JtYXRdPVwiZGF0ZUlucHV0Rm9ybWF0XCJcbiAgICAgICAgW3ZhbHVlXT1cImJzRGF0YVZhbHVlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvd20tZGF0ZXRpbWVwaWNrZXI+XG4gICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1pbnB1dCBtb2JpbGUtZGF0ZXBpY2tlci1jb250YWluZXJcIlxuICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXggfHwgMFwiXG4gICAgICAgICAoY2xpY2spPVwiIShkaXNhYmxlZCB8fCByZWFkb25seSkgJiYgc2hvd0RhdGVQaWNrZXJNb2RhbChic0RhdGFWYWx1ZSlcIlxuICAgICAgICAoZm9jdXMpPVwib25EYXRlVGltZUlucHV0Rm9jdXModHJ1ZSk7IGludm9rZU9uRm9jdXMoJGV2ZW50KTtcIlxuICAgICAgICAoYmx1cik9XCJvbkRhdGVUaW1lSW5wdXRCbHVyKCk7IGludm9rZU9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGlzcGxheVZhbHVlID8gJ0NoYW5nZSBEYXRlICcgKyBkaXNwbGF5VmFsdWUgOiBoaW50IHx8ICdDaG9vc2UgRGF0ZSdcIlxuICAgICAgICAgcm9sZT1cImJ1dHRvblwiPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -2,6 +2,7 @@ import { Component, EventEmitter, Injector, Input, Output, TemplateRef, ViewChil
2
2
  import { BsDatepickerConfig } from 'ngx-bootstrap/datepicker';
3
3
  import { BsModalService } from 'ngx-bootstrap/modal';
4
4
  import { App } from '@wm/core';
5
+ import { filter } from "lodash-es";
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "ngx-bootstrap/modal";
7
8
  import * as i2 from "@angular/common";
@@ -151,7 +152,7 @@ export class DateTimePickerComponent {
151
152
  */
152
153
  hightlightToday() {
153
154
  const toDay = new Date().getDate().toString();
154
- _.filter($(`body>modal-container .date-picker-modal span:contains(${toDay})`)
155
+ filter($(`body > modal-container .date-picker-modal span:contains(${toDay})`)
155
156
  .not('.is-other-month,.current-date'), (obj) => {
156
157
  if ($(obj).text() === toDay) {
157
158
  $(obj).addClass('current-date text-info');
@@ -330,7 +331,7 @@ export class DateTimePickerComponent {
330
331
  }], displayFormat: [{
331
332
  type: Input
332
333
  }] }); })();
333
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DateTimePickerComponent, { className: "DateTimePickerComponent", filePath: "date-time/date-time-picker.component.ts", lineNumber: 53 }); })();
334
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DateTimePickerComponent, { className: "DateTimePickerComponent", filePath: "date-time/date-time-picker.component.ts", lineNumber: 54 }); })();
334
335
  export class TimePickerComponent {
335
336
  constructor(inj) {
336
337
  this.inj = inj;
@@ -454,5 +455,5 @@ export class TimePickerComponent {
454
455
  }], change: [{
455
456
  type: Output
456
457
  }] }); })();
457
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimePickerComponent, { className: "TimePickerComponent", filePath: "date-time/date-time-picker.component.ts", lineNumber: 304 }); })();
458
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL2RhdGUtdGltZS9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQVUsUUFBUSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0osT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7OztJQWFmLGdEQU1vRDtJQURoRCx1UEFBaUIsMkJBQW9CLEtBQUM7SUFFMUMsaUJBQXVCOzs7SUFIbkIsQUFGQSxBQURBLG9EQUErQixnREFDUyxnQ0FFaEI7Ozs7SUFJNUIseUNBS29EO0lBRGhELDJOQUFVLDJCQUFvQixLQUFDO0lBQ2lCLGlCQUFnQjs7O0lBRmhFLEFBREEsQUFEQSwyQ0FBc0IsdUJBQ1AsdUJBQ0E7Ozs7SUFRbkIsa0NBR3lCO0lBQXJCLHFNQUFTLGlCQUFVLEtBQUM7SUFBQyxZQUEwQztJQUFBLGlCQUFTOzs7SUFBbkQsY0FBMEM7SUFBMUMsa0VBQTBDOzs7O0lBQ25FLGtDQUcwQjtJQUF0QixxTUFBUyxrQkFBVyxLQUFDO0lBQUMsWUFBK0I7SUFBQSxpQkFBUzs7O0lBQXhDLGNBQStCO0lBQS9CLHVEQUErQjs7OztJQTlCN0QsQUFESiw4QkFBaUMsYUFDTDtJQUNwQix5QkFFTTtJQVNOLEFBUkEsd0hBTW9ELDZGQU9BO0lBQ3BELCtCQUE2QztJQUN6QyxZQUNKO0lBQ0osQUFESSxpQkFB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QUUsQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JFLENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JFLENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNKLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxZQUFZLENBQUMsTUFBTTtRQUN0QixRQUFRLENBQUM7SUFDYixDQUFDO0lBRUQsZUFBZTtJQUVmLENBQUM7b0ZBL0VRLG1CQUFtQjtvRUFBbkIsbUJBQW1CO1lBakJwQixBQURKLHNDQUFnQixtQkFJdUI7WUFBL0IsMkdBQVUsZ0JBQVksTUFBTSxDQUFDLElBQUM7WUFBQyxpQkFBWTtZQUMvQywrQkFBaUM7WUFBQSxpQkFBQztZQUFBLGlCQUFPO1lBQ3pDLG9DQUdxQztZQUFqQywyR0FBVSxnQkFBWSxRQUFRLENBQUMsSUFBQztZQUFDLGlCQUFZO1lBQ2pELCtCQUFpQztZQUFBLGlCQUFDO1lBQUEsaUJBQU87WUFDekMsb0NBR3FDO1lBQWpDLDJHQUFVLGdCQUFZLFFBQVEsQ0FBQyxJQUFDO1lBQ3hDLEFBRHlDLGlCQUFZLEVBQ3BDOztZQWJULGNBQXdCO1lBQ3hCLEFBREEsMENBQXdCLDJCQUNGO1lBSXRCLGVBQTBCO1lBQzFCLEFBREEsNENBQTBCLDZCQUNGO1lBSXhCLGVBQTBCO1lBQzFCLEFBREEsNENBQTBCLDZCQUNGOzs7aUZBSzNCLG1CQUFtQjtjQXJCL0IsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBaUJUO2FBQ0o7eUNBV1csS0FBSztrQkFEWixLQUFLO1lBSUUsR0FBRztrQkFEVixLQUFLO1lBSUUsR0FBRztrQkFEVixLQUFLO1lBR0ksTUFBTTtrQkFBZixNQUFNOztrRkFsQkUsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJDb25maWcgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiwgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcblxuaW1wb3J0IHsgQXBwIH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5kZWNsYXJlIGNvbnN0IG1vbWVudCwgJCwgXztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd3bS1kYXRldGltZXBpY2tlcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2RhdGV0aW1lcGlja2VyVGVtcGxhdGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtZGF0ZXRpbWUtcGlja2VyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtZGF0ZXRpbWUtcGlja2VyLW9wdGlvbnNcIj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxicy1kYXRlcGlja2VyLWlubGluZVxuICAgICAgICAgICAgICAgICAgICBbYnNDb25maWddPVwiYnNEYXRlcGlja2VyQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGVzRGlzYWJsZWRdPVwiZXhjbHVkZWREYXRlc1RvRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIGJzRGF0ZXBpY2tlclxuICAgICAgICAgICAgICAgICAgICBbYnNWYWx1ZV09XCJjaGFuZ2VkVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAoYnNWYWx1ZUNoYW5nZSk9XCJvbkRhdGVVcGRhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ0RBVEVfVElNRScgfHwgbW9kZSA9PT0gJ0RBVEUnXCI+XG4gICAgICAgICAgICAgICAgPC9icy1kYXRlcGlja2VyLWlubGluZT5cbiAgICAgICAgICAgICAgICA8d20tdGltZXBpY2tlclxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY2hhbmdlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW21pbl09XCJtaW5UaW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW21heF09XCJtYXhUaW1lXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblRpbWVVcGRhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ0RBVEVfVElNRScgfHwgbW9kZSA9PT0gJ1RJTUUnXCI+PC93bS10aW1lcGlja2VyPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1wcmltYXJ5IGRhdGUtcGlja2VyLXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7Z2V0RGF0ZUxhYmVsKCl9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtb2RlID09PSAnREFURV9USU1FJyB8fCBtb2RlID09PSAnREFURSdcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IHRvZGF5LWJ0blwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRUb2RheSgpXCI+e3thcHBMb2NhbGUuTEFCRUxfVE9EQVlfREFURSB8fCBcIlRvZGF5XCIgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB1bGwtcmlnaHQgb2stYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtb2RlID09PSAnREFURV9USU1FJyB8fCBtb2RlID09PSAnVElNRSdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Pa0NsaWNrKClcIj57e2FwcExvY2FsZS5MQUJFTF9PSyB8fCBcIk9rXCIgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgcHVsbC1yaWdodCBjbGVhci1idG5cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiPnt7YXBwTG9jYWxlLkxBQkVMX0NMRUFSX0RBVEUgfHwgXCJDbGVhclwiIH19PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIERhdGVUaW1lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIHByaXZhdGUgaXNEYXRlT3BlbiA9IHRydWU7XG5cbiAgICBwcml2YXRlIGlzVGltZU9wZW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgYXBwTG9jYWxlOiBhbnk7XG5cbiAgICBAVmlld0NoaWxkKCdkYXRldGltZXBpY2tlclRlbXBsYXRlJyAsIHsgc3RhdGljOiB0cnVlIH0pIGRhdGV0aW1lcGlja2VyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKVxuICAgIHByaXZhdGUgbW9kZTogJ0RBVEUnIHwgJ1RJTUUnIHwgJ0RBVEVfVElNRScgPSAnREFURV9USU1FJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHJpdmF0ZSBwbGFjZW1lbnQ6ICdNT0RBTCcgfCAnSU5MSU5FJyA9ICdNT0RBTCc7XG5cbiAgICBASW5wdXQoXCJjb25maWdcIilcbiAgICBwcml2YXRlIF9ic0RhdGVwaWNrZXJDb25maWc6IEJzRGF0ZXBpY2tlckNvbmZpZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHJpdmF0ZSBtaW5UaW1lOiBEYXRlO1xuXG4gICAgQElucHV0KClcbiAgICBwcml2YXRlIG1heFRpbWU6IERhdGU7XG5cbiAgICBASW5wdXQoKVxuICAgIHByaXZhdGUgX2Rpc3BsYXlGb3JtYXQ6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgICBwcml2YXRlIF92YWx1ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICBwcml2YXRlIGNoYW5nZWRWYWx1ZSA9IG51bGw7XG5cbiAgICBwcml2YXRlIG1vZGFsUmVmOiBCc01vZGFsUmVmO1xuXG4gICAgQElucHV0KClcbiAgICBwcml2YXRlIGV4Y2x1ZGVkRGF0ZXNUb0Rpc2FibGU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGluajogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgYnNNb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuYXBwTG9jYWxlID0gaW5qLmdldChBcHApLmFwcExvY2FsZSB8fCB7fTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZShkOiBEYXRlKSB7XG4gICAgICAgIGQgPSBkIHx8IG5ldyBEYXRlKCk7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gZDtcbiAgICAgICAgdGhpcy5jaGFuZ2VkVmFsdWUgPSBkO1xuICAgIH1cblxuXG4gICAgQElucHV0KFwiY29uZmlnXCIpXG4gICAgc2V0IGJzRGF0ZXBpY2tlckNvbmZpZyhjb25maWc6IEJzRGF0ZXBpY2tlckNvbmZpZykge1xuICAgICAgICB0aGlzLl9ic0RhdGVwaWNrZXJDb25maWcgPSBjb25maWc7XG4gICAgICAgIHRoaXMuX2JzRGF0ZXBpY2tlckNvbmZpZy5zaG93Q2xlYXJCdXR0b24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fYnNEYXRlcGlja2VyQ29uZmlnLnNob3dUb2RheUJ1dHRvbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGV4Y2x1ZGVkRGF5c1RvRGlzYWJsZSh2OiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLl9ic0RhdGVwaWNrZXJDb25maWcuZGF5c0Rpc2FibGVkID0gdjtcbiAgICB9XG5cbiAgICBnZXQgYnNEYXRlcGlja2VyQ29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnNEYXRlcGlja2VyQ29uZmlnO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRpc3BsYXlGb3JtYXQoZm9ybWF0OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGZvcm1hdCkge1xuICAgICAgICAgICAgdGhpcy5fZGlzcGxheUZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKC95L2csIFwiWVwiKS5yZXBsYWNlKC9kL2csIFwiRFwiKS5yZXBsYWNlKFwiYVwiLCBcIkFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZVNlbGVjdGVkRGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNoYW5nZWRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2QgPSBtb21lbnQodGhpcy5jaGFuZ2VkVmFsdWUpO1xuICAgICAgICBjb25zdCBtaW5EYXRlID0gdGhpcy5fYnNEYXRlcGlja2VyQ29uZmlnPy5taW5EYXRlO1xuICAgICAgICBjb25zdCBtYXhEYXRlID0gdGhpcy5fYnNEYXRlcGlja2VyQ29uZmlnPy5tYXhEYXRlO1xuICAgICAgICBpZiAobWluRGF0ZVxuICAgICAgICAgICAgJiYgKCh0aGlzLm1vZGUgPT09ICdEQVRFJyBcbiAgICAgICAgICAgICAgICAgICAgJiYgbW9tZW50KG1pbkRhdGUpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpID4gdGhpcy5jaGFuZ2VkVmFsdWUpXG4gICAgICAgICAgICAgICAgfHwgKHRoaXMubW9kZSAhPT0gJ0RBVEUnIFxuICAgICAgICAgICAgICAgICAgICAmJiBtaW5EYXRlID4gdGhpcy5jaGFuZ2VkVmFsdWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXhEYXRlIFxuICAgICAgICAgICAgJiYgKCh0aGlzLm1vZGUgPT09ICdEQVRFJyBcbiAgICAgICAgICAgICAgICAgICAgJiYgbW9tZW50KG1heERhdGUpLmVuZE9mKCdkYXknKS50b0RhdGUoKSA8IHRoaXMuY2hhbmdlZFZhbHVlKVxuICAgICAgICAgICAgICAgIHx8ICh0aGlzLm1vZGUgIT09ICdEQVRFJyBcbiAgICAgICAgICAgICAgICAgICAgJiYgbWF4RGF0ZSA8IHRoaXMuY2hhbmdlZFZhbHVlKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fYnNEYXRlcGlja2VyQ29uZmlnPy5kYXlzRGlzYWJsZWQ/LmluZGV4T2YoY2QuZGF5KCkpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjZFN0ID0gY2Quc3RhcnRPZignZGF5JykudG9EYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBpZiAodGhpcy5leGNsdWRlZERhdGVzVG9EaXNhYmxlPy5maW5kKGQgPT4gZC5nZXRUaW1lKCkgPT09IGNkU3QpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IGRpc3BsYXlGb3JtYXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9kaXNwbGF5Rm9ybWF0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheUZvcm1hdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGhpZ2hsaWdodCB0aGUgY3VycmVudCBkYXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBoaWdodGxpZ2h0VG9kYXkoKSB7XG4gICAgICAgIGNvbnN0IHRvRGF5ID0gbmV3IERhdGUoKS5nZXREYXRlKCkudG9TdHJpbmcoKTtcbiAgICAgICAgXy5maWx0ZXIoJChgYm9keT5tb2RhbC1jb250YWluZXIgLmRhdGUtcGlja2VyLW1vZGFsIHNwYW46Y29udGFpbnMoJHt0b0RheX0pYClcbiAgICAgICAgICAgIC5ub3QoJy5pcy1vdGhlci1tb250aCwuY3VycmVudC1kYXRlJyksIChvYmopID0+IHtcbiAgICAgICAgICAgIGlmICgkKG9iaikudGV4dCgpID09PSB0b0RheSkge1xuICAgICAgICAgICAgICAgICQob2JqKS5hZGRDbGFzcygnY3VycmVudC1kYXRlIHRleHQtaW5mbycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVPbkNsaWNrKCkge1xuICAgICAgICAkKCdib2R5Pm1vZGFsLWNvbnRhaW5lciAuZGF0ZS1waWNrZXItbW9kYWwgLmFwcC1kYXRldGltZS1waWNrZXInKVxuICAgICAgICAgICAgLmNsaWNrKCgkZXZlbnQpID0+ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKSk7XG4gICAgICAgICQoJ2JvZHk+bW9kYWwtY29udGFpbmVyIC5kYXRlLXBpY2tlci1tb2RhbCcpLmNsaWNrKCgpID0+IHRoaXMub25DYW5jZWxDbGljaygpKTtcbiAgICB9XG5cbiAgICBnZXREYXRlTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiBtb21lbnQodGhpcy5jaGFuZ2VkVmFsdWUpLmZvcm1hdCh0aGlzLmRpc3BsYXlGb3JtYXQpO1xuICAgIH1cblxuICAgIG9wZW5EYXRlUGlja2VyKCkge1xuICAgICAgICB0aGlzLmlzVGltZU9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0RhdGVPcGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvcGVuVGltZVBpY2tlcigpIHtcbiAgICAgICAgdGhpcy5pc1RpbWVPcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc0RhdGVPcGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRGF0ZVVwZGF0ZShuZXdWYWwpIHtcbiAgICAgICAgY29uc3Qgb2xkVmFsID0gdGhpcy5jaGFuZ2VkVmFsdWU7XG4gICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnREFURScpIHtcbiAgICAgICAgICAgIG5ld1ZhbC5zZXRIb3VycygwKTtcbiAgICAgICAgICAgIG5ld1ZhbC5zZXRNaW51dGVzKDApO1xuICAgICAgICAgICAgbmV3VmFsLnNldFNlY29uZHMoMCk7XG4gICAgICAgICAgICBuZXdWYWwuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgICAgICB9IGVsc2UgaWYgKG9sZFZhbCAmJiBuZXdWYWwpIHtcbiAgICAgICAgICAgIG5ld1ZhbC5zZXRIb3VycyhvbGRWYWwuZ2V0SG91cnMoKSk7XG4gICAgICAgICAgICBuZXdWYWwuc2V0TWludXRlcyhvbGRWYWwuZ2V0TWludXRlcygpKTtcbiAgICAgICAgICAgIG5ld1ZhbC5zZXRTZWNvbmRzKG9sZFZhbC5nZXRTZWNvbmRzKCkpO1xuICAgICAgICAgICAgbmV3VmFsLnNldE1pbGxpc2Vjb25kcyhvbGRWYWwuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhbmdlZFZhbHVlID0gbmV3VmFsO1xuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnREFURSdcbiAgICAgICAgICAgICYmIG9sZFZhbCAhPT0gbmV3VmFsXG4gICAgICAgICAgICAmJiB0aGlzLnZhbGlkYXRlU2VsZWN0ZWREYXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMub25Pa0NsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25UaW1lVXBkYXRlKG5ld1ZhbCkge1xuICAgICAgICB0aGlzLmNoYW5nZWRWYWx1ZSA9IG5ld1ZhbDtcbiAgICB9XG5cbiAgICBzaG93KCkge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMubW9kYWxSZWYgPSB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3codGhpcy5kYXRldGltZXBpY2tlclRlbXBsYXRlLCB7XG4gICAgICAgICAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tkcm9wOiAnc3RhdGljJyxcbiAgICAgICAgICAgIGNsYXNzOiAnZGF0ZS1waWNrZXItbW9kYWwgbW9kYWwtZGlhbG9nLWNlbnRlcmVkJ1xuICAgICAgICB9KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuaGlkZU9uQ2xpY2soKX0sIDUwMCk7XG4gICAgfVxuXG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlZFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy50cmlnZ2VyQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgfVxuXG4gICAgc2V0VG9kYXkoKSB7XG4gICAgICAgIGNvbnN0IHRvZGF5ID0gbW9tZW50KCkuc3RhcnRPZignZGF5JykudG9EYXRlKCk7XG4gICAgICAgIHRoaXMub25EYXRlVXBkYXRlKHRvZGF5KTtcbiAgICB9XG5cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VkVmFsdWUgPSB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBoaWRlTW9kYWwoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGFsUmVmPy5pZCkge1xuICAgICAgICAgICAgdGhpcy5ic01vZGFsU2VydmljZS5oaWRlKHRoaXMubW9kYWxSZWYuaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25DYW5jZWxDbGljaygpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VkVmFsdWUgPSB0aGlzLl92YWx1ZTtcbiAgICAgICAgdGhpcy5oaWRlTW9kYWwoKTtcbiAgICB9XG5cbiAgICBvbk9rQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlU2VsZWN0ZWREYXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlckNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgfVxuXG4gICAgdHJpZ2dlckNoYW5nZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgIT09IHRoaXMuY2hhbmdlZFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuY2hhbmdlZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhpZGVNb2RhbCgpO1xuICAgIH1cblxufVxuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd20tdGltZXBpY2tlcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHdtLXBpY2tlcmdyb3VwPlxuICAgICAgICAgICAgPHdtLXBpY2tlclxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnMuaG91clwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwiaG91clwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXQoJGV2ZW50LCAnSE9VUicpXCI+PC93bS1waWNrZXI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcC10aW1lLXNlcGFyYXRvclwiPjo8L3NwYW4+XG4gICAgICAgICAgICA8d20tcGlja2VyXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9ucy5taW51dGVcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cIm1pbnV0ZVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXQoJGV2ZW50LCAnTUlOVVRFJylcIj48L3dtLXBpY2tlcj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLXRpbWUtc2VwYXJhdG9yXCI+Ojwvc3Bhbj5cbiAgICAgICAgICAgIDx3bS1waWNrZXJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zLm1pbnV0ZVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwic2Vjb25kXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldCgkZXZlbnQsICdTRUNPTkQnKVwiPjwvd20tcGlja2VyPlxuICAgICAgICA8L3dtLXBpY2tlcmdyb3VwPlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gICAgb3B0aW9ucyA9IHtcbiAgICAgICAgaG91cjogW10sXG4gICAgICAgIG1pbnV0ZTogW10sXG4gICAgICAgIHNlY29uZDogW10sXG4gICAgICAgIG1lcmlkaWFuOiBbJ0FNJywgJ1BNJ11cbiAgICB9O1xuXG4gICAgQElucHV0KClcbiAgICBwcml2YXRlIHZhbHVlID0gbmV3IERhdGUoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHJpdmF0ZSBtaW46IERhdGUgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBwcml2YXRlIG1heDogRGF0ZSA9IG51bGw7XG5cbiAgICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBpbmo6IEluamVjdG9yKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5ob3VyID0gdGhpcy5wb3B1bGF0ZU51bWJlcnMoMCwgMjMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMubWludXRlID0gdGhpcy5wb3B1bGF0ZU51bWJlcnMoMCwgNTkpO1xuICAgICAgICB0aGlzLm9wdGlvbnMuc2Vjb25kID0gdGhpcy5wb3B1bGF0ZU51bWJlcnMoMCwgNTkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcG9wdWxhdGVOdW1iZXJzKHN0YXJ0OiBudW1iZXIsIHRvOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgYXJyID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IHN0YXJ0OyBpIDw9IHRvOyBpKyspIHtcbiAgICAgICAgICAgIGFyci5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogKGkgPCAxMCA/ICcwJyA6ICcnKSArIGksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG5cbiAgICBzZXQoe2luZGV4LCB2YWx1ZX0sIHVuaXQ6ICdIT1VSJyB8ICdNSU5VVEUnIHwgJ1NFQ09ORCcgfCAnTUVSSURJQU4nKSB7XG4gICAgICAgIGlmICh1bml0ID09PSAnSE9VUicpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQodGhpcy52YWx1ZSkuaG91cihwYXJzZUludCh2YWx1ZSkpLnRvRGF0ZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICdNSU5VVEUnKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbW9tZW50KHRoaXMudmFsdWUpLm1pbnV0ZShwYXJzZUludCh2YWx1ZSkpLnRvRGF0ZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICdTRUNPTkQnKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbW9tZW50KHRoaXMudmFsdWUpLnNlY29uZChwYXJzZUludCh2YWx1ZSkpLnRvRGF0ZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaXQgPT09ICdNRVJJRElBTicpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQodGhpcy52YWx1ZSkubWludXRlKHZhbHVlKS50b0RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5taW4gJiYgdGhpcy52YWx1ZSA8IHRoaXMubWluKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5taW47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubWF4ICYmIHRoaXMudmFsdWUgPiB0aGlzLm1heCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGhvdXIoKSB7XG4gICAgICAgIHJldHVybiBtb21lbnQodGhpcy52YWx1ZSkuaG91cigpO1xuICAgIH1cblxuICAgIGdldCBtaW51dGUoKSB7XG4gICAgICAgIHJldHVybiBtb21lbnQodGhpcy52YWx1ZSkubWludXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHNlY29uZCgpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLnZhbHVlKS5zZWNvbmQoKTtcbiAgICB9XG5cbiAgICBnZXQgbWVyaWRpYW4oKSB7XG4gICAgICAgIHJldHVybiAnQU0nO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRhdGVVcGRhdGUobmV3VmFsKSB7XG4gICAgICAgIGRlYnVnZ2VyO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIH1cblxufVxuIl19
458
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimePickerComponent, { className: "TimePickerComponent", filePath: "date-time/date-time-picker.component.ts", lineNumber: 305 }); })();
459
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL2RhdGUtdGltZS9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQVUsUUFBUSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0osT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0IsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7O0lBY2pCLGdEQU1vRDtJQURoRCx1UEFBaUIsMkJBQW9CLEtBQUM7SUFFMUMsaUJBQXVCOzs7SUFIbkIsQUFGQSxBQURBLG9EQUErQixnREFDUyxnQ0FFaEI7Ozs7SUFJNUIseUNBS29EO0lBRGhELDJOQUFVLDJCQUFvQixLQUFDO0lBQ2lCLGlCQUFnQjs7O0lBRmhFLEFBREEsQUFEQSwyQ0FBc0IsdUJBQ1AsdUJBQ0E7Ozs7SUFRbkIsa0NBR3lCO0lBQXJCLHFNQUFTLGlCQUFVLEtBQUM7SUFBQyxZQUEwQztJQUFBLGlCQUFTOzs7SUFBbkQsY0FBMEM7SUFBMUMsa0VBQTBDOzs7O0lBQ25FLGtDQUcwQjtJQUF0QixxTUFBUyxrQkFBVyxLQUFDO0lBQUMsWUFBK0I7SUFBQSxpQkFBUzs7O0lBQXhDLGNBQStCO0lBQS9CLHVEQUErQjs7OztJQTlCN0QsQUFESiw4QkFBaUMsYUFDTDtJQUNwQix5QkFFTTtJQVNOLEFBUkEsd0hBTW9ELDZG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Q0FBQzthQUFNLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckUsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckUsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFlBQVksQ0FBQyxNQUFNO1FBQ3RCLFFBQVEsQ0FBQztJQUNiLENBQUM7SUFFRCxlQUFlO0lBRWYsQ0FBQztvRkEvRVEsbUJBQW1CO29FQUFuQixtQkFBbUI7WUFqQnBCLEFBREosc0NBQWdCLG1CQUl1QjtZQUEvQiwyR0FBVSxnQkFBWSxNQUFNLENBQUMsSUFBQztZQUFDLGlCQUFZO1lBQy9DLCtCQUFpQztZQUFBLGlCQUFDO1lBQUEsaUJBQU87WUFDekMsb0NBR3FDO1lBQWpDLDJHQUFVLGdCQUFZLFFBQVEsQ0FBQyxJQUFDO1lBQUMsaUJBQVk7WUFDakQsK0JBQWlDO1lBQUEsaUJBQUM7WUFBQSxpQkFBTztZQUN6QyxvQ0FHcUM7WUFBakMsMkdBQVUsZ0JBQVksUUFBUSxDQUFDLElBQUM7WUFDeEMsQUFEeUMsaUJBQVksRUFDcEM7O1lBYlQsY0FBd0I7WUFDeEIsQUFEQSwwQ0FBd0IsMkJBQ0Y7WUFJdEIsZUFBMEI7WUFDMUIsQUFEQSw0Q0FBMEIsNkJBQ0Y7WUFJeEIsZUFBMEI7WUFDMUIsQUFEQSw0Q0FBMEIsNkJBQ0Y7OztpRkFLM0IsbUJBQW1CO2NBckIvQixTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FpQlQ7YUFDSjt5Q0FXVyxLQUFLO2tCQURaLEtBQUs7WUFJRSxHQUFHO2tCQURWLEtBQUs7WUFJRSxHQUFHO2tCQURWLEtBQUs7WUFHSSxNQUFNO2tCQUFmLE1BQU07O2tGQWxCRSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzRGF0ZXBpY2tlckNvbmZpZyB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBCc01vZGFsUmVmLCBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCAkO1xuZGVjbGFyZSBjb25zdCBtb21lbnQ7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd20tZGF0ZXRpbWVwaWNrZXInLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICNkYXRldGltZXBpY2tlclRlbXBsYXRlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLWRhdGV0aW1lLXBpY2tlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLWRhdGV0aW1lLXBpY2tlci1vcHRpb25zXCI+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnMtZGF0ZXBpY2tlci1pbmxpbmVcbiAgICAgICAgICAgICAgICAgICAgW2JzQ29uZmlnXT1cImJzRGF0ZXBpY2tlckNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgIFtkYXRlc0Rpc2FibGVkXT1cImV4Y2x1ZGVkRGF0ZXNUb0Rpc2FibGVcIlxuICAgICAgICAgICAgICAgICAgICBic0RhdGVwaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgW2JzVmFsdWVdPVwiY2hhbmdlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgKGJzVmFsdWVDaGFuZ2UpPVwib25EYXRlVXBkYXRlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1vZGUgPT09ICdEQVRFX1RJTUUnIHx8IG1vZGUgPT09ICdEQVRFJ1wiPlxuICAgICAgICAgICAgICAgIDwvYnMtZGF0ZXBpY2tlci1pbmxpbmU+XG4gICAgICAgICAgICAgICAgPHdtLXRpbWVwaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNoYW5nZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFttaW5dPVwibWluVGltZVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhdPVwibWF4VGltZVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25UaW1lVXBkYXRlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1vZGUgPT09ICdEQVRFX1RJTUUnIHx8IG1vZGUgPT09ICdUSU1FJ1wiPjwvd20tdGltZXBpY2tlcj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcHJpbWFyeSBkYXRlLXBpY2tlci12YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2dldERhdGVMYWJlbCgpfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ0RBVEVfVElNRScgfHwgbW9kZSA9PT0gJ0RBVEUnXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSB0b2RheS1idG5cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VG9kYXkoKVwiPnt7YXBwTG9jYWxlLkxBQkVMX1RPREFZX0RBVEUgfHwgXCJUb2RheVwiIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBwdWxsLXJpZ2h0IG9rLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ0RBVEVfVElNRScgfHwgbW9kZSA9PT0gJ1RJTUUnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uT2tDbGljaygpXCI+e3thcHBMb2NhbGUuTEFCRUxfT0sgfHwgXCJPa1wiIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IHB1bGwtcmlnaHQgY2xlYXItYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKClcIj57e2FwcExvY2FsZS5MQUJFTF9DTEVBUl9EQVRFIHx8IFwiQ2xlYXJcIiB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlVGltZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBwcml2YXRlIGlzRGF0ZU9wZW4gPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBpc1RpbWVPcGVuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGFwcExvY2FsZTogYW55O1xuXG4gICAgQFZpZXdDaGlsZCgnZGF0ZXRpbWVwaWNrZXJUZW1wbGF0ZScgLCB7IHN0YXRpYzogdHJ1ZSB9KSBkYXRldGltZXBpY2tlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KClcbiAgICBwcml2YXRlIG1vZGU6ICdEQVRFJyB8ICdUSU1FJyB8ICdEQVRFX1RJTUUnID0gJ0RBVEVfVElNRSc7XG5cbiAgICBASW5wdXQoKVxuICAgIHByaXZhdGUgcGxhY2VtZW50OiAnTU9EQUwnIHwgJ0lOTElORScgPSAnTU9EQUwnO1xuXG4gICAgQElucHV0KFwiY29uZmlnXCIpXG4gICAgcHJpdmF0ZSBfYnNEYXRlcGlja2VyQ29uZmlnOiBCc0RhdGVwaWNrZXJDb25maWc7XG5cbiAgICBASW5wdXQoKVxuICAgIHByaXZhdGUgbWluVGltZTogRGF0ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHJpdmF0ZSBtYXhUaW1lOiBEYXRlO1xuXG4gICAgQElucHV0KClcbiAgICBwcml2YXRlIF9kaXNwbGF5Rm9ybWF0OiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gICAgcHJpdmF0ZSBfdmFsdWUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgcHJpdmF0ZSBjaGFuZ2VkVmFsdWUgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSBtb2RhbFJlZjogQnNNb2RhbFJlZjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHJpdmF0ZSBleGNsdWRlZERhdGVzVG9EaXNhYmxlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBpbmo6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGJzTW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSkge1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IGluai5nZXQoQXBwKS5hcHBMb2NhbGUgfHwge307XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUoZDogRGF0ZSkge1xuICAgICAgICBkID0gZCB8fCBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IGQ7XG4gICAgICAgIHRoaXMuY2hhbmdlZFZhbHVlID0gZDtcbiAgICB9XG5cblxuICAgIEBJbnB1dChcImNvbmZpZ1wiKVxuICAgIHNldCBic0RhdGVwaWNrZXJDb25maWcoY29uZmlnOiBCc0RhdGVwaWNrZXJDb25maWcpIHtcbiAgICAgICAgdGhpcy5fYnNEYXRlcGlja2VyQ29uZmlnID0gY29uZmlnO1xuICAgICAgICB0aGlzLl9ic0RhdGVwaWNrZXJDb25maWcuc2hvd0NsZWFyQnV0dG9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JzRGF0ZXBpY2tlckNvbmZpZy5zaG93VG9kYXlCdXR0b24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBleGNsdWRlZERheXNUb0Rpc2FibGUodjogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5fYnNEYXRlcGlja2VyQ29uZmlnLmRheXNEaXNhYmxlZCA9IHY7XG4gICAgfVxuXG4gICAgZ2V0IGJzRGF0ZXBpY2tlckNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JzRGF0ZXBpY2tlckNvbmZpZztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBkaXNwbGF5Rm9ybWF0KGZvcm1hdDogc3RyaW5nKSB7XG4gICAgICAgIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlGb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgveS9nLCBcIllcIikucmVwbGFjZSgvZC9nLCBcIkRcIikucmVwbGFjZShcImFcIiwgXCJBXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdGVTZWxlY3RlZERhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5jaGFuZ2VkVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNkID0gbW9tZW50KHRoaXMuY2hhbmdlZFZhbHVlKTtcbiAgICAgICAgY29uc3QgbWluRGF0ZSA9IHRoaXMuX2JzRGF0ZXBpY2tlckNvbmZpZz8ubWluRGF0ZTtcbiAgICAgICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMuX2JzRGF0ZXBpY2tlckNvbmZpZz8ubWF4RGF0ZTtcbiAgICAgICAgaWYgKG1pbkRhdGVcbiAgICAgICAgICAgICYmICgodGhpcy5tb2RlID09PSAnREFURSdcbiAgICAgICAgICAgICAgICAgICAgJiYgbW9tZW50KG1pbkRhdGUpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpID4gdGhpcy5jaGFuZ2VkVmFsdWUpXG4gICAgICAgICAgICAgICAgfHwgKHRoaXMubW9kZSAhPT0gJ0RBVEUnXG4gICAgICAgICAgICAgICAgICAgICYmIG1pbkRhdGUgPiB0aGlzLmNoYW5nZWRWYWx1ZSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1heERhdGVcbiAgICAgICAgICAgICYmICgodGhpcy5tb2RlID09PSAnREFURSdcbiAgICAgICAgICAgICAgICAgICAgJiYgbW9tZW50KG1heERhdGUpLmVuZE9mKCdkYXknKS50b0RhdGUoKSA8IHRoaXMuY2hhbmdlZFZhbHVlKVxuICAgICAgICAgICAgICAgIHx8ICh0aGlzLm1vZGUgIT09ICdEQVRFJ1xuICAgICAgICAgICAgICAgICAgICAmJiBtYXhEYXRlIDwgdGhpcy5jaGFuZ2VkVmFsdWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9ic0RhdGVwaWNrZXJDb25maWc/LmRheXNEaXNhYmxlZD8uaW5kZXhPZihjZC5kYXkoKSkgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNkU3QgPSBjZC5zdGFydE9mKCdkYXknKS50b0RhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIGlmICh0aGlzLmV4Y2x1ZGVkRGF0ZXNUb0Rpc2FibGU/LmZpbmQoZCA9PiBkLmdldFRpbWUoKSA9PT0gY2RTdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBnZXQgZGlzcGxheUZvcm1hdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlGb3JtYXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5Rm9ybWF0O1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSBjdXJyZW50IGRhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGhpZ2h0bGlnaHRUb2RheSgpIHtcbiAgICAgICAgY29uc3QgdG9EYXkgPSBuZXcgRGF0ZSgpLmdldERhdGUoKS50b1N0cmluZygpO1xuICAgICAgICBmaWx0ZXIoJChgYm9keSA+IG1vZGFsLWNvbnRhaW5lciAuZGF0ZS1waWNrZXItbW9kYWwgc3Bhbjpjb250YWlucygke3RvRGF5fSlgKVxuICAgICAgICAgICAgLm5vdCgnLmlzLW90aGVyLW1vbnRoLC5jdXJyZW50LWRhdGUnKSwgKG9iaikgPT4ge1xuICAgICAgICAgICAgaWYgKCQob2JqKS50ZXh0KCkgPT09IHRvRGF5KSB7XG4gICAgICAgICAgICAgICAgJChvYmopLmFkZENsYXNzKCdjdXJyZW50LWRhdGUgdGV4dC1pbmZvJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZU9uQ2xpY2soKSB7XG4gICAgICAgICQoJ2JvZHk+bW9kYWwtY29udGFpbmVyIC5kYXRlLXBpY2tlci1tb2RhbCAuYXBwLWRhdGV0aW1lLXBpY2tlcicpXG4gICAgICAgICAgICAuY2xpY2soKCRldmVudCkgPT4gJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpKTtcbiAgICAgICAgJCgnYm9keT5tb2RhbC1jb250YWluZXIgLmRhdGUtcGlja2VyLW1vZGFsJykuY2xpY2soKCkgPT4gdGhpcy5vbkNhbmNlbENsaWNrKCkpO1xuICAgIH1cblxuICAgIGdldERhdGVMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLmNoYW5nZWRWYWx1ZSkuZm9ybWF0KHRoaXMuZGlzcGxheUZvcm1hdCk7XG4gICAgfVxuXG4gICAgb3BlbkRhdGVQaWNrZXIoKSB7XG4gICAgICAgIHRoaXMuaXNUaW1lT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRGF0ZU9wZW4gPSB0cnVlO1xuICAgIH1cblxuICAgIG9wZW5UaW1lUGlja2VyKCkge1xuICAgICAgICB0aGlzLmlzVGltZU9wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLmlzRGF0ZU9wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EYXRlVXBkYXRlKG5ld1ZhbCkge1xuICAgICAgICBjb25zdCBvbGRWYWwgPSB0aGlzLmNoYW5nZWRWYWx1ZTtcbiAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdEQVRFJykge1xuICAgICAgICAgICAgbmV3VmFsLnNldEhvdXJzKDApO1xuICAgICAgICAgICAgbmV3VmFsLnNldE1pbnV0ZXMoMCk7XG4gICAgICAgICAgICBuZXdWYWwuc2V0U2Vjb25kcygwKTtcbiAgICAgICAgICAgIG5ld1ZhbC5zZXRNaWxsaXNlY29uZHMoMCk7XG4gICAgICAgIH0gZWxzZSBpZiAob2xkVmFsICYmIG5ld1ZhbCkge1xuICAgICAgICAgICAgbmV3VmFsLnNldEhvdXJzKG9sZFZhbC5nZXRIb3VycygpKTtcbiAgICAgICAgICAgIG5ld1ZhbC5zZXRNaW51dGVzKG9sZFZhbC5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgbmV3VmFsLnNldFNlY29uZHMob2xkVmFsLmdldFNlY29uZHMoKSk7XG4gICAgICAgICAgICBuZXdWYWwuc2V0TWlsbGlzZWNvbmRzKG9sZFZhbC5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VkVmFsdWUgPSBuZXdWYWw7XG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdEQVRFJ1xuICAgICAgICAgICAgJiYgb2xkVmFsICE9PSBuZXdWYWxcbiAgICAgICAgICAgICYmIHRoaXMudmFsaWRhdGVTZWxlY3RlZERhdGUoKSkge1xuICAgICAgICAgICAgdGhpcy5vbk9rQ2xpY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblRpbWVVcGRhdGUobmV3VmFsKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlZFZhbHVlID0gbmV3VmFsO1xuICAgIH1cblxuICAgIHNob3coKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyh0aGlzLmRhdGV0aW1lcGlja2VyVGVtcGxhdGUsIHtcbiAgICAgICAgICAgIGFuaW1hdGVkOiB0cnVlLFxuICAgICAgICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxuICAgICAgICAgICAgY2xhc3M6ICdkYXRlLXBpY2tlci1tb2RhbCBtb2RhbC1kaWFsb2ctY2VudGVyZWQnXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5oaWRlT25DbGljaygpfSwgNTAwKTtcbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VkVmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLnRyaWdnZXJDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5oaWRlTW9kYWwoKTtcbiAgICB9XG5cbiAgICBzZXRUb2RheSgpIHtcbiAgICAgICAgY29uc3QgdG9kYXkgPSBtb21lbnQoKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKTtcbiAgICAgICAgdGhpcy5vbkRhdGVVcGRhdGUodG9kYXkpO1xuICAgIH1cblxuICAgIHJlc2V0KCkge1xuICAgICAgICB0aGlzLmNoYW5nZWRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIGhpZGVNb2RhbCgpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kYWxSZWY/LmlkKSB7XG4gICAgICAgICAgICB0aGlzLmJzTW9kYWxTZXJ2aWNlLmhpZGUodGhpcy5tb2RhbFJlZi5pZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNhbmNlbENsaWNrKCkge1xuICAgICAgICB0aGlzLmNoYW5nZWRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICAgICAgICB0aGlzLmhpZGVNb2RhbCgpO1xuICAgIH1cblxuICAgIG9uT2tDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdGVTZWxlY3RlZERhdGUoKSkge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oaWRlTW9kYWwoKTtcbiAgICB9XG5cbiAgICB0cmlnZ2VyQ2hhbmdlKCkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSAhPT0gdGhpcy5jaGFuZ2VkVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5jaGFuZ2VkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgfVxuXG59XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd3bS10aW1lcGlja2VyJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8d20tcGlja2VyZ3JvdXA+XG4gICAgICAgICAgICA8d20tcGlja2VyXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9ucy5ob3VyXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZV09XCJob3VyXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldCgkZXZlbnQsICdIT1VSJylcIj48L3dtLXBpY2tlcj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLXRpbWUtc2VwYXJhdG9yXCI+Ojwvc3Bhbj5cbiAgICAgICAgICAgIDx3bS1waWNrZXJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zLm1pbnV0ZVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwibWludXRlXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldCgkZXZlbnQsICdNSU5VVEUnKVwiPjwvd20tcGlja2VyPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtdGltZS1zZXBhcmF0b3JcIj46PC9zcGFuPlxuICAgICAgICAgICAgPHdtLXBpY2tlclxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnMubWludXRlXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZV09XCJzZWNvbmRcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0KCRldmVudCwgJ1NFQ09ORCcpXCI+PC93bS1waWNrZXI+XG4gICAgICAgIDwvd20tcGlja2VyZ3JvdXA+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICBvcHRpb25zID0ge1xuICAgICAgICBob3VyOiBbXSxcbiAgICAgICAgbWludXRlOiBbXSxcbiAgICAgICAgc2Vjb25kOiBbXSxcbiAgICAgICAgbWVyaWRpYW46IFsnQU0nLCAnUE0nXVxuICAgIH07XG5cbiAgICBASW5wdXQoKVxuICAgIHByaXZhdGUgdmFsdWUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgQElucHV0KClcbiAgICBwcml2YXRlIG1pbjogRGF0ZSA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHByaXZhdGUgbWF4OiBEYXRlID0gbnVsbDtcblxuICAgIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGluajogSW5qZWN0b3IpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmhvdXIgPSB0aGlzLnBvcHVsYXRlTnVtYmVycygwLCAyMyk7XG4gICAgICAgIHRoaXMub3B0aW9ucy5taW51dGUgPSB0aGlzLnBvcHVsYXRlTnVtYmVycygwLCA1OSk7XG4gICAgICAgIHRoaXMub3B0aW9ucy5zZWNvbmQgPSB0aGlzLnBvcHVsYXRlTnVtYmVycygwLCA1OSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZU51bWJlcnMoc3RhcnQ6IG51bWJlciwgdG86IG51bWJlcikge1xuICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgZm9yKGxldCBpID0gc3RhcnQ7IGkgPD0gdG87IGkrKykge1xuICAgICAgICAgICAgYXJyLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAoaSA8IDEwID8gJzAnIDogJycpICsgaSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogaVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cblxuICAgIHNldCh7aW5kZXgsIHZhbHVlfSwgdW5pdDogJ0hPVVInIHwgJ01JTlVURScgfCAnU0VDT05EJyB8ICdNRVJJRElBTicpIHtcbiAgICAgICAgaWYgKHVuaXQgPT09ICdIT1VSJykge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG1vbWVudCh0aGlzLnZhbHVlKS5ob3VyKHBhcnNlSW50KHZhbHVlKSkudG9EYXRlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodW5pdCA9PT0gJ01JTlVURScpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQodGhpcy52YWx1ZSkubWludXRlKHBhcnNlSW50KHZhbHVlKSkudG9EYXRlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodW5pdCA9PT0gJ1NFQ09ORCcpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQodGhpcy52YWx1ZSkuc2Vjb25kKHBhcnNlSW50KHZhbHVlKSkudG9EYXRlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodW5pdCA9PT0gJ01FUklESUFOJykge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG1vbWVudCh0aGlzLnZhbHVlKS5taW51dGUodmFsdWUpLnRvRGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1pbiAmJiB0aGlzLnZhbHVlIDwgdGhpcy5taW4pIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tYXggJiYgdGhpcy52YWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5tYXg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgaG91cigpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLnZhbHVlKS5ob3VyKCk7XG4gICAgfVxuXG4gICAgZ2V0IG1pbnV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLnZhbHVlKS5taW51dGUoKTtcbiAgICB9XG5cbiAgICBnZXQgc2Vjb25kKCkge1xuICAgICAgICByZXR1cm4gbW9tZW50KHRoaXMudmFsdWUpLnNlY29uZCgpO1xuICAgIH1cblxuICAgIGdldCBtZXJpZGlhbigpIHtcbiAgICAgICAgcmV0dXJuICdBTSc7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRGF0ZVVwZGF0ZShuZXdWYWwpIHtcbiAgICAgICAgZGVidWdnZXI7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgfVxuXG59XG4iXX0=