@wavemaker/app-ng-runtime 12.0.0-next.45002 → 12.0.0-next.45006

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 (1480) hide show
  1. app-ng-runtime/build-task/.npmignore +2 -0
  2. app-ng-runtime/build-task/bundles/index.umd.js +341 -344
  3. app-ng-runtime/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +5 -3
  4. app-ng-runtime/build-task/esm2022/advanced/carousel/carousel.build.mjs +1 -1
  5. app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +1 -1
  6. app-ng-runtime/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +1 -1
  7. app-ng-runtime/build-task/esm2022/containers/accordion/accordion.build.mjs +1 -1
  8. app-ng-runtime/build-task/esm2022/containers/repeat-template.build.mjs +5 -3
  9. app-ng-runtime/build-task/esm2022/containers/tabs/tabs.build.mjs +1 -1
  10. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +1 -1
  11. app-ng-runtime/build-task/esm2022/data/form/form.build.mjs +5 -2
  12. app-ng-runtime/build-task/esm2022/data/list/list.build.mjs +1 -1
  13. app-ng-runtime/build-task/esm2022/data/media-list/media-list.build.mjs +1 -1
  14. app-ng-runtime/build-task/esm2022/data/table/table-column/table-column.build.mjs +1 -1
  15. app-ng-runtime/build-task/esm2022/data/table/table.build.mjs +1 -1
  16. app-ng-runtime/build-task/esm2022/dialogs/partial-dialog/partial-dialog.build.mjs +1 -1
  17. app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +1 -1
  18. app-ng-runtime/build-task/esm2022/navigation/menu/menu.build.mjs +8 -3
  19. app-ng-runtime/build-task/esm2022/navigation/popover/popover.build.mjs +1 -1
  20. app-ng-runtime/build-task/esm2022/page/page-content/page-content.build.mjs +1 -1
  21. app-ng-runtime/build-task/esm2022/page/page.build.mjs +3 -2
  22. app-ng-runtime/build-task/esm2022/public_api.mjs +1 -2
  23. app-ng-runtime/build-task/esm2022/utils/utils.mjs +1 -1
  24. app-ng-runtime/build-task/fesm2022/index.mjs +340 -341
  25. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  26. app-ng-runtime/build-task/public_api.d.ts +0 -1
  27. app-ng-runtime/components/advanced/carousel/.npmignore +2 -0
  28. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +29 -18
  29. app-ng-runtime/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +3 -3
  30. app-ng-runtime/components/advanced/carousel/carousel.directive.d.ts +2 -2
  31. app-ng-runtime/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +15 -9
  32. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +3 -2
  33. app-ng-runtime/components/advanced/carousel/esm2022/carousel.directive.mjs +12 -7
  34. app-ng-runtime/components/advanced/carousel/esm2022/carousel.module.mjs +2 -2
  35. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +28 -16
  36. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  37. app-ng-runtime/components/advanced/custom/.npmignore +2 -0
  38. app-ng-runtime/components/advanced/custom/bundles/index.umd.js +31 -94
  39. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +2 -0
  40. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +1 -0
  41. app-ng-runtime/components/advanced/custom/custom-widget.module.d.ts +4 -5
  42. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +21 -13
  43. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +5 -2
  44. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +5 -5
  45. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.module.mjs +2 -9
  46. app-ng-runtime/components/advanced/custom/esm2022/public_api.mjs +1 -2
  47. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +31 -93
  48. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +1 -1
  49. app-ng-runtime/components/advanced/custom/public_api.d.ts +0 -1
  50. app-ng-runtime/components/advanced/login/.npmignore +2 -0
  51. app-ng-runtime/components/advanced/login/bundles/index.umd.js +19 -13
  52. app-ng-runtime/components/advanced/login/esm2022/login.component.mjs +17 -10
  53. app-ng-runtime/components/advanced/login/esm2022/login.module.mjs +2 -2
  54. app-ng-runtime/components/advanced/login/fesm2022/index.mjs +18 -11
  55. app-ng-runtime/components/advanced/login/fesm2022/index.mjs.map +1 -1
  56. app-ng-runtime/components/advanced/login/login.component.d.ts +2 -2
  57. app-ng-runtime/components/advanced/marquee/.npmignore +2 -0
  58. app-ng-runtime/components/advanced/marquee/bundles/index.umd.js +11 -6
  59. app-ng-runtime/components/advanced/marquee/esm2022/marquee.directive.mjs +12 -7
  60. app-ng-runtime/components/advanced/marquee/esm2022/marquee.module.mjs +2 -2
  61. app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs +13 -8
  62. app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
  63. app-ng-runtime/components/advanced/marquee/marquee.directive.d.ts +2 -2
  64. app-ng-runtime/components/base/.npmignore +2 -0
  65. app-ng-runtime/components/base/bundles/index.umd.js +400 -312
  66. app-ng-runtime/components/base/directives/show-in-device.directive.d.ts +3 -6
  67. app-ng-runtime/components/base/esm2022/components.module.mjs +2 -2
  68. app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +13 -15
  69. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +35 -34
  70. app-ng-runtime/components/base/esm2022/pipes/image.pipe.mjs +2 -2
  71. app-ng-runtime/components/base/esm2022/pipes/sanitize.pipe.mjs +3 -3
  72. app-ng-runtime/components/base/esm2022/pipes/trust-as.pipe.mjs +3 -3
  73. app-ng-runtime/components/base/esm2022/pipes/wm-pipe.mjs +3 -2
  74. app-ng-runtime/components/base/esm2022/public_api.mjs +2 -1
  75. app-ng-runtime/components/base/esm2022/utils/data-utils.mjs +30 -29
  76. app-ng-runtime/components/base/esm2022/utils/form-utils.mjs +48 -42
  77. app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -7
  78. app-ng-runtime/components/base/esm2022/utils/widget-utils.mjs +28 -27
  79. app-ng-runtime/components/base/esm2022/widgets/common/base/base-container.component.mjs +8 -7
  80. app-ng-runtime/components/base/esm2022/widgets/common/base/base-field-validations.mjs +23 -22
  81. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +63 -42
  82. app-ng-runtime/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +4 -4
  83. app-ng-runtime/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +52 -18
  84. app-ng-runtime/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +6 -5
  85. app-ng-runtime/components/base/esm2022/widgets/common/base/stylable.component.mjs +3 -3
  86. app-ng-runtime/components/base/esm2022/widgets/common/base/text-content.directive.mjs +3 -3
  87. app-ng-runtime/components/base/esm2022/widgets/common/container/container.directive.mjs +12 -7
  88. app-ng-runtime/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +5 -4
  89. app-ng-runtime/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +12 -7
  90. app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +14 -7
  91. app-ng-runtime/components/base/esm2022/widgets/common/message/message.component.mjs +16 -10
  92. app-ng-runtime/components/base/esm2022/widgets/common/partial/partial.directive.mjs +14 -8
  93. app-ng-runtime/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +9 -8
  94. app-ng-runtime/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +1 -1
  95. app-ng-runtime/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +4 -4
  96. app-ng-runtime/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +15 -9
  97. app-ng-runtime/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +11 -10
  98. app-ng-runtime/components/base/esm2022/widgets/framework/deviceview.mjs +1 -1
  99. app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +3 -2
  100. app-ng-runtime/components/base/esm2022/widgets/framework/styler.mjs +1 -1
  101. app-ng-runtime/components/base/esm2022/widgets/framework/widget-props.mjs +1 -1
  102. app-ng-runtime/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +4 -3
  103. app-ng-runtime/components/base/esm2022/widgets/framework/widget-registry.mjs +1 -1
  104. app-ng-runtime/components/base/fesm2022/index.mjs +405 -315
  105. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  106. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  107. app-ng-runtime/components/base/public_api.d.ts +1 -0
  108. app-ng-runtime/components/base/utils/data-utils.d.ts +1 -0
  109. app-ng-runtime/components/base/utils/widget-utils.d.ts +2 -2
  110. app-ng-runtime/components/base/widgets/common/base/base-container.component.d.ts +1 -1
  111. app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
  112. app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +22 -4
  113. app-ng-runtime/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +1 -1
  114. app-ng-runtime/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
  115. app-ng-runtime/components/base/widgets/common/container/container.directive.d.ts +2 -2
  116. app-ng-runtime/components/base/widgets/common/item-template/item-template.directive.d.ts +2 -2
  117. app-ng-runtime/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +2 -2
  118. app-ng-runtime/components/base/widgets/common/message/message.component.d.ts +2 -2
  119. app-ng-runtime/components/base/widgets/common/partial/partial.directive.d.ts +2 -2
  120. app-ng-runtime/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +3 -3
  121. app-ng-runtime/components/basic/default/.npmignore +2 -0
  122. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +2 -2
  123. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +2 -2
  124. app-ng-runtime/components/basic/default/bundles/index.umd.js +158 -115
  125. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +31 -27
  126. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +13 -7
  127. app-ng-runtime/components/basic/default/esm2022/basic.module.mjs +2 -2
  128. app-ng-runtime/components/basic/default/esm2022/html/html.directive.mjs +13 -8
  129. app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +19 -14
  130. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +15 -9
  131. app-ng-runtime/components/basic/default/esm2022/label/label.directive.mjs +15 -9
  132. app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +12 -7
  133. app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +1 -1
  134. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.component.mjs +34 -30
  135. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +21 -17
  136. app-ng-runtime/components/basic/default/fesm2022/index.mjs +157 -113
  137. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  138. app-ng-runtime/components/basic/default/html/html.directive.d.ts +2 -2
  139. app-ng-runtime/components/basic/default/icon/icon.component.d.ts +2 -2
  140. app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +2 -2
  141. app-ng-runtime/components/basic/default/label/label.directive.d.ts +2 -2
  142. app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -2
  143. app-ng-runtime/components/basic/default/spinner/spinner.component.d.ts +2 -2
  144. app-ng-runtime/components/basic/default/video/video.component.d.ts +2 -2
  145. app-ng-runtime/components/basic/progress/.npmignore +2 -0
  146. app-ng-runtime/components/basic/progress/bundles/index.umd.js +40 -28
  147. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +22 -15
  148. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +17 -10
  149. app-ng-runtime/components/basic/progress/esm2022/progress.module.mjs +2 -2
  150. app-ng-runtime/components/basic/progress/esm2022/utils.mjs +3 -3
  151. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +39 -26
  152. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  153. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +2 -2
  154. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +2 -2
  155. app-ng-runtime/components/basic/rich-text-editor/.npmignore +2 -0
  156. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +19 -13
  157. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +17 -10
  158. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +2 -2
  159. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +18 -11
  160. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  161. app-ng-runtime/components/basic/rich-text-editor/rich-text-editor.component.d.ts +2 -2
  162. app-ng-runtime/components/basic/search/.npmignore +2 -0
  163. app-ng-runtime/components/basic/search/bundles/index.umd.js +186 -175
  164. app-ng-runtime/components/basic/search/esm2022/data-provider/data-provider.mjs +1 -1
  165. app-ng-runtime/components/basic/search/esm2022/data-provider/local-data-provider.mjs +26 -23
  166. app-ng-runtime/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +12 -11
  167. app-ng-runtime/components/basic/search/esm2022/scrollable.directive.mjs +3 -3
  168. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +148 -138
  169. app-ng-runtime/components/basic/search/esm2022/search.module.mjs +2 -2
  170. app-ng-runtime/components/basic/search/fesm2022/index.mjs +186 -174
  171. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  172. app-ng-runtime/components/basic/search/search.component.d.ts +2 -2
  173. app-ng-runtime/components/basic/tree/.npmignore +2 -0
  174. app-ng-runtime/components/basic/tree/bundles/index.umd.js +23 -17
  175. app-ng-runtime/components/basic/tree/esm2022/tree.component.mjs +21 -14
  176. app-ng-runtime/components/basic/tree/esm2022/tree.module.mjs +2 -2
  177. app-ng-runtime/components/basic/tree/fesm2022/index.mjs +22 -15
  178. app-ng-runtime/components/basic/tree/fesm2022/index.mjs.map +1 -1
  179. app-ng-runtime/components/basic/tree/tree.component.d.ts +2 -2
  180. app-ng-runtime/components/chart/.npmignore +2 -0
  181. app-ng-runtime/components/chart/bundles/index.umd.js +97 -84
  182. app-ng-runtime/components/chart/chart.component.d.ts +3 -3
  183. app-ng-runtime/components/chart/chart.utils.d.ts +3 -3
  184. app-ng-runtime/components/chart/esm2022/chart.component.mjs +82 -68
  185. app-ng-runtime/components/chart/esm2022/chart.module.mjs +2 -2
  186. app-ng-runtime/components/chart/esm2022/chart.utils.mjs +14 -13
  187. app-ng-runtime/components/chart/fesm2022/index.mjs +95 -81
  188. app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
  189. app-ng-runtime/components/containers/accordion/.npmignore +2 -0
  190. app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +2 -2
  191. app-ng-runtime/components/containers/accordion/accordion.directive.d.ts +2 -2
  192. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +51 -40
  193. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +23 -17
  194. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.props.mjs +4 -4
  195. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +25 -19
  196. app-ng-runtime/components/containers/accordion/esm2022/accordion.module.mjs +2 -2
  197. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +50 -38
  198. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  199. app-ng-runtime/components/containers/layout-grid/.npmignore +2 -0
  200. app-ng-runtime/components/containers/layout-grid/bundles/index.umd.js +32 -17
  201. app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +13 -8
  202. app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +12 -7
  203. app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +12 -7
  204. app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.module.mjs +2 -2
  205. app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs +34 -19
  206. app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
  207. app-ng-runtime/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +2 -2
  208. app-ng-runtime/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +2 -2
  209. app-ng-runtime/components/containers/layout-grid/layout-grid.directive.d.ts +2 -2
  210. app-ng-runtime/components/containers/linear-layout/.npmignore +2 -0
  211. app-ng-runtime/components/containers/linear-layout/bundles/index.umd.js +21 -11
  212. app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +12 -7
  213. app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +12 -7
  214. app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.module.mjs +2 -2
  215. app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs +23 -13
  216. app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
  217. app-ng-runtime/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +2 -2
  218. app-ng-runtime/components/containers/linear-layout/linear-layout.directive.d.ts +2 -2
  219. app-ng-runtime/components/containers/panel/.npmignore +2 -0
  220. app-ng-runtime/components/containers/panel/bundles/index.umd.js +85 -85
  221. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +83 -82
  222. app-ng-runtime/components/containers/panel/esm2022/panel.module.mjs +2 -2
  223. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +84 -83
  224. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  225. app-ng-runtime/components/containers/panel/panel.component.d.ts +3 -3
  226. app-ng-runtime/components/containers/tabs/.npmignore +2 -0
  227. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +74 -63
  228. app-ng-runtime/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +14 -8
  229. app-ng-runtime/components/containers/tabs/esm2022/tab-pane/tab-pane.props.mjs +4 -4
  230. app-ng-runtime/components/containers/tabs/esm2022/tabs.animator.mjs +1 -1
  231. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +57 -51
  232. app-ng-runtime/components/containers/tabs/esm2022/tabs.module.mjs +2 -2
  233. app-ng-runtime/components/containers/tabs/esm2022/tabs.props.mjs +1 -1
  234. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +73 -61
  235. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  236. app-ng-runtime/components/containers/tabs/tab-pane/tab-pane.component.d.ts +2 -2
  237. app-ng-runtime/components/containers/tabs/tabs.component.d.ts +2 -2
  238. app-ng-runtime/components/containers/tile/.npmignore +2 -0
  239. app-ng-runtime/components/containers/tile/bundles/index.umd.js +11 -6
  240. app-ng-runtime/components/containers/tile/esm2022/tile.directive.mjs +12 -7
  241. app-ng-runtime/components/containers/tile/esm2022/tile.module.mjs +2 -2
  242. app-ng-runtime/components/containers/tile/fesm2022/index.mjs +13 -8
  243. app-ng-runtime/components/containers/tile/fesm2022/index.mjs.map +1 -1
  244. app-ng-runtime/components/containers/tile/tile.directive.d.ts +2 -2
  245. app-ng-runtime/components/containers/wizard/.npmignore +2 -0
  246. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +102 -98
  247. app-ng-runtime/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +13 -8
  248. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +92 -93
  249. app-ng-runtime/components/containers/wizard/esm2022/wizard.module.mjs +2 -2
  250. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +104 -100
  251. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  252. app-ng-runtime/components/containers/wizard/wizard-step/wizard-step.directive.d.ts +2 -2
  253. app-ng-runtime/components/containers/wizard/wizard.component.d.ts +2 -2
  254. app-ng-runtime/components/data/card/.npmignore +2 -0
  255. app-ng-runtime/components/data/card/bundles/index.umd.js +70 -50
  256. app-ng-runtime/components/data/card/card-actions/card-actions.directive.d.ts +2 -2
  257. app-ng-runtime/components/data/card/card-content/card-content.component.d.ts +2 -2
  258. app-ng-runtime/components/data/card/card-footer/card-footer.directive.d.ts +2 -2
  259. app-ng-runtime/components/data/card/card.component.d.ts +2 -2
  260. app-ng-runtime/components/data/card/esm2022/card-actions/card-actions.directive.mjs +12 -7
  261. app-ng-runtime/components/data/card/esm2022/card-content/card-content.component.mjs +15 -9
  262. app-ng-runtime/components/data/card/esm2022/card-footer/card-footer.directive.mjs +12 -7
  263. app-ng-runtime/components/data/card/esm2022/card.component.mjs +38 -34
  264. app-ng-runtime/components/data/card/esm2022/card.module.mjs +2 -2
  265. app-ng-runtime/components/data/card/fesm2022/index.mjs +72 -52
  266. app-ng-runtime/components/data/card/fesm2022/index.mjs.map +1 -1
  267. app-ng-runtime/components/data/form/.npmignore +2 -0
  268. app-ng-runtime/components/data/form/bundles/index.umd.js +197 -184
  269. app-ng-runtime/components/data/form/esm2022/form-action/form-action.directive.mjs +15 -9
  270. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +21 -15
  271. app-ng-runtime/components/data/form/esm2022/form-field/form-field.props.mjs +1 -1
  272. app-ng-runtime/components/data/form/esm2022/form-widget.directive.mjs +4 -4
  273. app-ng-runtime/components/data/form/esm2022/form.component.mjs +138 -134
  274. app-ng-runtime/components/data/form/esm2022/form.module.mjs +2 -2
  275. app-ng-runtime/components/data/form/esm2022/form.props.mjs +1 -1
  276. app-ng-runtime/components/data/form/esm2022/live-actions/dependson.directive.mjs +4 -4
  277. app-ng-runtime/components/data/form/esm2022/live-actions/live-actions.directive.mjs +4 -4
  278. app-ng-runtime/components/data/form/esm2022/live-filter/live-filter.directive.mjs +7 -6
  279. app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +14 -13
  280. app-ng-runtime/components/data/form/fesm2022/index.mjs +201 -187
  281. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  282. app-ng-runtime/components/data/form/form-action/form-action.directive.d.ts +2 -2
  283. app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +2 -2
  284. app-ng-runtime/components/data/form/form.component.d.ts +4 -4
  285. app-ng-runtime/components/data/form/live-form/live-form.directive.d.ts +1 -1
  286. app-ng-runtime/components/data/list/.npmignore +2 -0
  287. app-ng-runtime/components/data/list/bundles/index.umd.js +829 -818
  288. app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +9 -4
  289. app-ng-runtime/components/data/list/esm2022/list.animator.mjs +5 -3
  290. app-ng-runtime/components/data/list/esm2022/list.component.mjs +817 -810
  291. app-ng-runtime/components/data/list/esm2022/list.module.mjs +2 -2
  292. app-ng-runtime/components/data/list/fesm2022/index.mjs +828 -816
  293. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  294. app-ng-runtime/components/data/list/list-item.directive.d.ts +4 -0
  295. app-ng-runtime/components/data/list/list.component.d.ts +55 -54
  296. app-ng-runtime/components/data/live-table/.npmignore +2 -0
  297. app-ng-runtime/components/data/live-table/bundles/index.umd.js +13 -7
  298. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +14 -8
  299. app-ng-runtime/components/data/live-table/esm2022/live-table.module.mjs +2 -2
  300. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +15 -9
  301. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  302. app-ng-runtime/components/data/live-table/live-table.component.d.ts +2 -2
  303. app-ng-runtime/components/data/pagination/.npmignore +2 -0
  304. app-ng-runtime/components/data/pagination/bundles/index.umd.js +113 -110
  305. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +111 -107
  306. app-ng-runtime/components/data/pagination/esm2022/pagination.module.mjs +2 -2
  307. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +112 -108
  308. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  309. app-ng-runtime/components/data/pagination/pagination.component.d.ts +2 -2
  310. app-ng-runtime/components/data/table/.npmignore +2 -0
  311. app-ng-runtime/components/data/table/bundles/index.umd.js +314 -269
  312. app-ng-runtime/components/data/table/esm2022/table-action/table-action.directive.mjs +15 -9
  313. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +40 -25
  314. app-ng-runtime/components/data/table/esm2022/table-column/table-column.props.mjs +2 -2
  315. app-ng-runtime/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +13 -8
  316. app-ng-runtime/components/data/table/esm2022/table-cud.directive.mjs +10 -9
  317. app-ng-runtime/components/data/table/esm2022/table-filter.directive.mjs +56 -58
  318. app-ng-runtime/components/data/table/esm2022/table-row/table-row.directive.mjs +13 -8
  319. app-ng-runtime/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +14 -8
  320. app-ng-runtime/components/data/table/esm2022/table.component.mjs +165 -150
  321. app-ng-runtime/components/data/table/esm2022/table.module.mjs +2 -2
  322. app-ng-runtime/components/data/table/esm2022/table.props.mjs +2 -2
  323. app-ng-runtime/components/data/table/fesm2022/index.mjs +313 -267
  324. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  325. app-ng-runtime/components/data/table/table-action/table-action.directive.d.ts +2 -2
  326. app-ng-runtime/components/data/table/table-column/table-column.directive.d.ts +8 -8
  327. app-ng-runtime/components/data/table/table-column-group/table-column-group.directive.d.ts +2 -2
  328. app-ng-runtime/components/data/table/table-row/table-row.directive.d.ts +2 -2
  329. app-ng-runtime/components/data/table/table-row-action/table-row-action.directive.d.ts +2 -2
  330. app-ng-runtime/components/data/table/table.component.d.ts +4 -4
  331. app-ng-runtime/components/dialogs/alert-dialog/.npmignore +2 -0
  332. app-ng-runtime/components/dialogs/alert-dialog/alert-dialog.component.d.ts +2 -2
  333. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +15 -9
  334. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +16 -10
  335. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +2 -2
  336. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +17 -11
  337. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  338. app-ng-runtime/components/dialogs/confirm-dialog/.npmignore +2 -0
  339. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +17 -11
  340. app-ng-runtime/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +2 -2
  341. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +18 -12
  342. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +2 -2
  343. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +19 -13
  344. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  345. app-ng-runtime/components/dialogs/default/.npmignore +2 -0
  346. app-ng-runtime/components/dialogs/default/base-dialog.d.ts +2 -2
  347. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +75 -71
  348. app-ng-runtime/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +2 -2
  349. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +14 -9
  350. app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +4 -4
  351. app-ng-runtime/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +12 -7
  352. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +49 -55
  353. app-ng-runtime/components/dialogs/default/esm2022/dialog.module.mjs +2 -2
  354. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +76 -72
  355. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  356. app-ng-runtime/components/dialogs/design-dialog/.npmignore +2 -0
  357. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +20 -14
  358. app-ng-runtime/components/dialogs/design-dialog/dialog.component.d.ts +2 -2
  359. app-ng-runtime/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +2 -2
  360. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +21 -15
  361. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +22 -16
  362. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  363. app-ng-runtime/components/dialogs/iframe-dialog/.npmignore +2 -0
  364. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +20 -14
  365. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +21 -15
  366. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +2 -2
  367. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +22 -16
  368. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  369. app-ng-runtime/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +2 -2
  370. app-ng-runtime/components/dialogs/login-dialog/.npmignore +2 -0
  371. app-ng-runtime/components/dialogs/login-dialog/bundles/index.umd.js +4 -4
  372. app-ng-runtime/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +4 -4
  373. app-ng-runtime/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +2 -2
  374. app-ng-runtime/components/dialogs/login-dialog/fesm2022/index.mjs +4 -4
  375. app-ng-runtime/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
  376. app-ng-runtime/components/dialogs/partial-dialog/.npmignore +2 -0
  377. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +16 -10
  378. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +17 -11
  379. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +2 -2
  380. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +18 -12
  381. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  382. app-ng-runtime/components/dialogs/partial-dialog/partial-dialog.component.d.ts +2 -2
  383. app-ng-runtime/components/input/calendar/.npmignore +2 -0
  384. app-ng-runtime/components/input/calendar/bundles/index.umd.js +46 -38
  385. app-ng-runtime/components/input/calendar/calendar.component.d.ts +2 -2
  386. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +44 -35
  387. app-ng-runtime/components/input/calendar/esm2022/calendar.module.mjs +2 -2
  388. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +45 -36
  389. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  390. app-ng-runtime/components/input/chips/.npmignore +2 -0
  391. app-ng-runtime/components/input/chips/bundles/index.umd.js +69 -61
  392. app-ng-runtime/components/input/chips/chips.component.d.ts +3 -3
  393. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +67 -58
  394. app-ng-runtime/components/input/chips/esm2022/chips.module.mjs +2 -2
  395. app-ng-runtime/components/input/chips/fesm2022/index.mjs +67 -58
  396. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  397. app-ng-runtime/components/input/color-picker/.npmignore +2 -0
  398. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +25 -12
  399. app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +2 -2
  400. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +26 -13
  401. app-ng-runtime/components/input/color-picker/esm2022/color-picker.module.mjs +2 -2
  402. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +26 -13
  403. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  404. app-ng-runtime/components/input/currency/.npmignore +2 -0
  405. app-ng-runtime/components/input/currency/bundles/index.umd.js +18 -11
  406. app-ng-runtime/components/input/currency/currency.component.d.ts +2 -2
  407. app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +19 -12
  408. app-ng-runtime/components/input/currency/esm2022/currency.module.mjs +2 -2
  409. app-ng-runtime/components/input/currency/fesm2022/index.mjs +19 -12
  410. app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
  411. app-ng-runtime/components/input/default/.npmignore +2 -0
  412. app-ng-runtime/components/input/default/base-form.component.d.ts +3 -3
  413. app-ng-runtime/components/input/default/bundles/index.umd.js +583 -450
  414. app-ng-runtime/components/input/default/button/button.component.d.ts +2 -2
  415. app-ng-runtime/components/input/default/button-group/button-group.directive.d.ts +2 -2
  416. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +3 -2
  417. app-ng-runtime/components/input/default/checkboxset/checkboxset.component.d.ts +2 -2
  418. app-ng-runtime/components/input/default/composite/composite.directive.d.ts +2 -2
  419. app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +4 -4
  420. app-ng-runtime/components/input/default/esm2022/base-form-custom.component.mjs +3 -3
  421. app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +17 -11
  422. app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +32 -28
  423. app-ng-runtime/components/input/default/esm2022/button-group/button-group.directive.mjs +12 -7
  424. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +5 -4
  425. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +27 -17
  426. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +107 -103
  427. app-ng-runtime/components/input/default/esm2022/composite/composite.directive.mjs +12 -7
  428. app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +32 -26
  429. app-ng-runtime/components/input/default/esm2022/input.module.mjs +2 -2
  430. app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +17 -10
  431. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +105 -102
  432. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +43 -32
  433. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +38 -31
  434. app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +18 -11
  435. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +23 -12
  436. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +23 -12
  437. app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +20 -11
  438. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +35 -24
  439. app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +21 -12
  440. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +20 -11
  441. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +21 -12
  442. app-ng-runtime/components/input/default/fesm2022/index.mjs +586 -451
  443. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  444. app-ng-runtime/components/input/default/number/number.component.d.ts +2 -2
  445. app-ng-runtime/components/input/default/radioset/radioset.component.d.ts +2 -2
  446. app-ng-runtime/components/input/default/select/select.component.d.ts +2 -2
  447. app-ng-runtime/components/input/default/switch/switch.component.d.ts +2 -2
  448. app-ng-runtime/components/input/default/text/base/base-input.d.ts +3 -2
  449. app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +2 -2
  450. app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +2 -2
  451. app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +2 -2
  452. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -1
  453. app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +2 -2
  454. app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +2 -2
  455. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +2 -2
  456. app-ng-runtime/components/input/epoch/.npmignore +2 -0
  457. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -2
  458. app-ng-runtime/components/input/epoch/bundles/index.umd.js +200 -163
  459. app-ng-runtime/components/input/epoch/date/date.component.d.ts +2 -2
  460. app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -2
  461. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +44 -36
  462. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +29 -21
  463. app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -2
  464. app-ng-runtime/components/input/epoch/esm2022/date/imaskUtil.mjs +1 -1
  465. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +42 -41
  466. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +49 -37
  467. app-ng-runtime/components/input/epoch/esm2022/epoch.module.mjs +2 -2
  468. app-ng-runtime/components/input/epoch/esm2022/picker/picker.component.mjs +7 -5
  469. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +35 -24
  470. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +197 -159
  471. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  472. app-ng-runtime/components/input/epoch/time/time.component.d.ts +2 -2
  473. app-ng-runtime/components/input/file-upload/.npmignore +2 -0
  474. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +133 -135
  475. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +131 -132
  476. app-ng-runtime/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
  477. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +132 -133
  478. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  479. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +2 -2
  480. app-ng-runtime/components/input/rating/.npmignore +2 -0
  481. app-ng-runtime/components/input/rating/bundles/index.umd.js +60 -51
  482. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +58 -48
  483. app-ng-runtime/components/input/rating/esm2022/rating.module.mjs +2 -2
  484. app-ng-runtime/components/input/rating/fesm2022/index.mjs +58 -48
  485. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  486. app-ng-runtime/components/input/rating/rating.component.d.ts +2 -2
  487. app-ng-runtime/components/input/slider/.npmignore +2 -0
  488. app-ng-runtime/components/input/slider/bundles/index.umd.js +23 -13
  489. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +24 -14
  490. app-ng-runtime/components/input/slider/esm2022/slider.module.mjs +2 -2
  491. app-ng-runtime/components/input/slider/fesm2022/index.mjs +24 -14
  492. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
  493. app-ng-runtime/components/input/slider/slider.component.d.ts +2 -2
  494. app-ng-runtime/components/navigation/breadcrumb/.npmignore +2 -0
  495. app-ng-runtime/components/navigation/breadcrumb/breadcrumb.component.d.ts +2 -2
  496. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +33 -28
  497. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +34 -29
  498. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +2 -2
  499. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +35 -30
  500. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  501. app-ng-runtime/components/navigation/menu/.npmignore +2 -0
  502. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +160 -145
  503. app-ng-runtime/components/navigation/menu/esm2022/menu-adapator.component.mjs +13 -7
  504. app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +5 -4
  505. app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +27 -26
  506. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +44 -40
  507. app-ng-runtime/components/navigation/menu/esm2022/menu.module.mjs +4 -3
  508. app-ng-runtime/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +14 -8
  509. app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +63 -63
  510. app-ng-runtime/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +3 -3
  511. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +160 -144
  512. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  513. app-ng-runtime/components/navigation/menu/menu-adapator.component.d.ts +1 -1
  514. app-ng-runtime/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +12 -1
  515. app-ng-runtime/components/navigation/menu/menu.component.d.ts +2 -2
  516. app-ng-runtime/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +3 -3
  517. app-ng-runtime/components/navigation/menu/nav/nav.component.d.ts +3 -4
  518. app-ng-runtime/components/navigation/navbar/.npmignore +2 -0
  519. app-ng-runtime/components/navigation/navbar/bundles/index.umd.js +29 -22
  520. app-ng-runtime/components/navigation/navbar/esm2022/navbar.component.mjs +30 -23
  521. app-ng-runtime/components/navigation/navbar/esm2022/navbar.module.mjs +2 -2
  522. app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs +31 -24
  523. app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
  524. app-ng-runtime/components/navigation/navbar/navbar.component.d.ts +2 -2
  525. app-ng-runtime/components/navigation/popover/.npmignore +2 -0
  526. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +18 -11
  527. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +19 -12
  528. app-ng-runtime/components/navigation/popover/esm2022/popover.module.mjs +2 -2
  529. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +20 -13
  530. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  531. app-ng-runtime/components/navigation/popover/popover.component.d.ts +2 -2
  532. app-ng-runtime/components/page/default/.npmignore +2 -0
  533. app-ng-runtime/components/page/default/bundles/index.umd.js +63 -31
  534. app-ng-runtime/components/page/default/content/content.component.d.ts +2 -2
  535. app-ng-runtime/components/page/default/esm2022/content/content.component.mjs +13 -7
  536. app-ng-runtime/components/page/default/esm2022/layout.directive.mjs +12 -7
  537. app-ng-runtime/components/page/default/esm2022/page-content/page-content.component.mjs +13 -7
  538. app-ng-runtime/components/page/default/esm2022/page.directive.mjs +12 -7
  539. app-ng-runtime/components/page/default/esm2022/page.module.mjs +2 -2
  540. app-ng-runtime/components/page/default/esm2022/router-outlet.directive.mjs +12 -7
  541. app-ng-runtime/components/page/default/esm2022/spa-page.directive.mjs +12 -7
  542. app-ng-runtime/components/page/default/fesm2022/index.mjs +65 -33
  543. app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
  544. app-ng-runtime/components/page/default/layout.directive.d.ts +2 -2
  545. app-ng-runtime/components/page/default/page-content/page-content.component.d.ts +2 -2
  546. app-ng-runtime/components/page/default/page.directive.d.ts +2 -2
  547. app-ng-runtime/components/page/default/router-outlet.directive.d.ts +2 -2
  548. app-ng-runtime/components/page/default/spa-page.directive.d.ts +2 -2
  549. app-ng-runtime/components/page/footer/.npmignore +2 -0
  550. app-ng-runtime/components/page/footer/bundles/index.umd.js +11 -6
  551. app-ng-runtime/components/page/footer/esm2022/footer.directive.mjs +12 -7
  552. app-ng-runtime/components/page/footer/esm2022/footer.module.mjs +2 -2
  553. app-ng-runtime/components/page/footer/fesm2022/index.mjs +13 -8
  554. app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
  555. app-ng-runtime/components/page/footer/footer.directive.d.ts +2 -2
  556. app-ng-runtime/components/page/header/.npmignore +2 -0
  557. app-ng-runtime/components/page/header/bundles/index.umd.js +12 -6
  558. app-ng-runtime/components/page/header/esm2022/header.component.mjs +13 -7
  559. app-ng-runtime/components/page/header/esm2022/header.module.mjs +2 -2
  560. app-ng-runtime/components/page/header/fesm2022/index.mjs +14 -8
  561. app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
  562. app-ng-runtime/components/page/header/header.component.d.ts +2 -2
  563. app-ng-runtime/components/page/left-panel/.npmignore +2 -0
  564. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +12 -7
  565. app-ng-runtime/components/page/left-panel/esm2022/left-panel.animator.mjs +1 -1
  566. app-ng-runtime/components/page/left-panel/esm2022/left-panel.directive.mjs +13 -8
  567. app-ng-runtime/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
  568. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +14 -9
  569. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  570. app-ng-runtime/components/page/left-panel/left-panel.directive.d.ts +2 -2
  571. app-ng-runtime/components/page/right-panel/.npmignore +2 -0
  572. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +11 -6
  573. app-ng-runtime/components/page/right-panel/esm2022/right-panel.directive.mjs +12 -7
  574. app-ng-runtime/components/page/right-panel/esm2022/right-panel.module.mjs +2 -2
  575. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +13 -8
  576. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  577. app-ng-runtime/components/page/right-panel/right-panel.directive.d.ts +2 -2
  578. app-ng-runtime/components/page/top-nav/.npmignore +2 -0
  579. app-ng-runtime/components/page/top-nav/bundles/index.umd.js +11 -6
  580. app-ng-runtime/components/page/top-nav/esm2022/top-nav.directive.mjs +12 -7
  581. app-ng-runtime/components/page/top-nav/esm2022/top-nav.module.mjs +2 -2
  582. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +13 -8
  583. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  584. app-ng-runtime/components/page/top-nav/top-nav.directive.d.ts +2 -2
  585. app-ng-runtime/components/prefab/.npmignore +2 -0
  586. app-ng-runtime/components/prefab/bundles/index.umd.js +28 -18
  587. app-ng-runtime/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +14 -8
  588. app-ng-runtime/components/prefab/esm2022/prefab.directive.mjs +15 -9
  589. app-ng-runtime/components/prefab/esm2022/prefab.module.mjs +2 -2
  590. app-ng-runtime/components/prefab/fesm2022/index.mjs +26 -15
  591. app-ng-runtime/components/prefab/fesm2022/index.mjs.map +1 -1
  592. app-ng-runtime/components/prefab/prefab-container/prefab-container.directive.d.ts +2 -2
  593. app-ng-runtime/components/prefab/prefab.directive.d.ts +2 -2
  594. app-ng-runtime/core/.npmignore +2 -0
  595. app-ng-runtime/core/bundles/index.umd.js +158 -146
  596. app-ng-runtime/core/esm2022/core.module.mjs +2 -2
  597. app-ng-runtime/core/esm2022/public_api.mjs +3 -2
  598. app-ng-runtime/core/esm2022/services/constant.service.mjs +2 -2
  599. app-ng-runtime/core/esm2022/services/custom-icons-loader.service.mjs +26 -0
  600. app-ng-runtime/core/esm2022/services/field-type.service.mjs +5 -4
  601. app-ng-runtime/core/esm2022/services/field-widget.service.mjs +5 -4
  602. app-ng-runtime/core/esm2022/services/pagination.service.mjs +8 -7
  603. app-ng-runtime/core/esm2022/services/script-loader.service.mjs +3 -3
  604. app-ng-runtime/core/esm2022/services/state-persistence.service.mjs +18 -17
  605. app-ng-runtime/core/esm2022/services/user-custom-pipe-manager.service.mjs +2 -2
  606. app-ng-runtime/core/esm2022/services/utils.service.mjs +5 -4
  607. app-ng-runtime/core/esm2022/services/viewport.service.mjs +5 -4
  608. app-ng-runtime/core/esm2022/utils/build-utils.mjs +5 -4
  609. app-ng-runtime/core/esm2022/utils/dom.mjs +1 -1
  610. app-ng-runtime/core/esm2022/utils/event-notifier.mjs +1 -1
  611. app-ng-runtime/core/esm2022/utils/expression-parser.mjs +6 -5
  612. app-ng-runtime/core/esm2022/utils/id-generator.mjs +1 -1
  613. app-ng-runtime/core/esm2022/utils/lru-cache.mjs +3 -2
  614. app-ng-runtime/core/esm2022/utils/utils.mjs +79 -82
  615. app-ng-runtime/core/esm2022/utils/watcher.mjs +9 -7
  616. app-ng-runtime/core/esm2022/utils/wm-project-properties.mjs +1 -1
  617. app-ng-runtime/core/fesm2022/index.mjs +158 -142
  618. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  619. app-ng-runtime/core/public_api.d.ts +2 -1
  620. app-ng-runtime/core/services/custom-icons-loader.service.d.ts +7 -0
  621. app-ng-runtime/core/services/pagination.service.d.ts +1 -1
  622. app-ng-runtime/core/utils/utils.d.ts +5 -9
  623. app-ng-runtime/http/.npmignore +2 -0
  624. app-ng-runtime/http/bundles/index.umd.js +10 -10
  625. app-ng-runtime/http/esm2022/http-service.module.mjs +2 -2
  626. app-ng-runtime/http/esm2022/http.service.mjs +7 -6
  627. app-ng-runtime/http/esm2022/wm-http-request.mjs +1 -1
  628. app-ng-runtime/http/esm2022/wm-http-response.mjs +1 -1
  629. app-ng-runtime/http/fesm2022/index.mjs +7 -6
  630. app-ng-runtime/http/fesm2022/index.mjs.map +1 -1
  631. app-ng-runtime/locales/angular/global/af-na.js +4 -4
  632. app-ng-runtime/locales/angular/global/af.js +4 -4
  633. app-ng-runtime/locales/angular/global/agq.js +4 -4
  634. app-ng-runtime/locales/angular/global/ak.js +4 -4
  635. app-ng-runtime/locales/angular/global/am.js +4 -4
  636. app-ng-runtime/locales/angular/global/ar-ae.js +4 -4
  637. app-ng-runtime/locales/angular/global/ar-bh.js +4 -4
  638. app-ng-runtime/locales/angular/global/ar-dj.js +4 -4
  639. app-ng-runtime/locales/angular/global/ar-dz.js +4 -4
  640. app-ng-runtime/locales/angular/global/ar-eg.js +4 -4
  641. app-ng-runtime/locales/angular/global/ar-eh.js +4 -4
  642. app-ng-runtime/locales/angular/global/ar-er.js +4 -4
  643. app-ng-runtime/locales/angular/global/ar-il.js +4 -4
  644. app-ng-runtime/locales/angular/global/ar-iq.js +4 -4
  645. app-ng-runtime/locales/angular/global/ar-jo.js +4 -4
  646. app-ng-runtime/locales/angular/global/ar-km.js +4 -4
  647. app-ng-runtime/locales/angular/global/ar-kw.js +4 -4
  648. app-ng-runtime/locales/angular/global/ar-lb.js +4 -4
  649. app-ng-runtime/locales/angular/global/ar-ly.js +4 -4
  650. app-ng-runtime/locales/angular/global/ar-ma.js +4 -4
  651. app-ng-runtime/locales/angular/global/ar-mr.js +4 -4
  652. app-ng-runtime/locales/angular/global/ar-om.js +4 -4
  653. app-ng-runtime/locales/angular/global/ar-ps.js +4 -4
  654. app-ng-runtime/locales/angular/global/ar-qa.js +4 -4
  655. app-ng-runtime/locales/angular/global/ar-sa.js +4 -4
  656. app-ng-runtime/locales/angular/global/ar-sd.js +4 -4
  657. app-ng-runtime/locales/angular/global/ar-so.js +4 -4
  658. app-ng-runtime/locales/angular/global/ar-ss.js +4 -4
  659. app-ng-runtime/locales/angular/global/ar-sy.js +4 -4
  660. app-ng-runtime/locales/angular/global/ar-td.js +4 -4
  661. app-ng-runtime/locales/angular/global/ar-tn.js +4 -4
  662. app-ng-runtime/locales/angular/global/ar-ye.js +4 -4
  663. app-ng-runtime/locales/angular/global/ar.js +4 -4
  664. app-ng-runtime/locales/angular/global/as.js +4 -4
  665. app-ng-runtime/locales/angular/global/asa.js +4 -4
  666. app-ng-runtime/locales/angular/global/ast.js +4 -4
  667. app-ng-runtime/locales/angular/global/az-cyrl.js +4 -4
  668. app-ng-runtime/locales/angular/global/az-latn.js +4 -4
  669. app-ng-runtime/locales/angular/global/az.js +4 -4
  670. app-ng-runtime/locales/angular/global/bas.js +4 -4
  671. app-ng-runtime/locales/angular/global/be-tarask.js +4 -4
  672. app-ng-runtime/locales/angular/global/be.js +4 -4
  673. app-ng-runtime/locales/angular/global/bem.js +4 -4
  674. app-ng-runtime/locales/angular/global/bez.js +4 -4
  675. app-ng-runtime/locales/angular/global/bg.js +4 -4
  676. app-ng-runtime/locales/angular/global/bm.js +4 -4
  677. app-ng-runtime/locales/angular/global/bn-in.js +4 -4
  678. app-ng-runtime/locales/angular/global/bn.js +4 -4
  679. app-ng-runtime/locales/angular/global/bo-in.js +4 -4
  680. app-ng-runtime/locales/angular/global/bo.js +4 -4
  681. app-ng-runtime/locales/angular/global/br.js +4 -4
  682. app-ng-runtime/locales/angular/global/brx.js +4 -4
  683. app-ng-runtime/locales/angular/global/bs-cyrl.js +4 -4
  684. app-ng-runtime/locales/angular/global/bs-latn.js +4 -4
  685. app-ng-runtime/locales/angular/global/bs.js +4 -4
  686. app-ng-runtime/locales/angular/global/ca-ad.js +4 -4
  687. app-ng-runtime/locales/angular/global/ca-es-valencia.js +4 -4
  688. app-ng-runtime/locales/angular/global/ca-fr.js +4 -4
  689. app-ng-runtime/locales/angular/global/ca-it.js +4 -4
  690. app-ng-runtime/locales/angular/global/ca.js +4 -4
  691. app-ng-runtime/locales/angular/global/ccp-in.js +4 -4
  692. app-ng-runtime/locales/angular/global/ccp.js +4 -4
  693. app-ng-runtime/locales/angular/global/ce.js +4 -4
  694. app-ng-runtime/locales/angular/global/ceb.js +4 -4
  695. app-ng-runtime/locales/angular/global/cgg.js +4 -4
  696. app-ng-runtime/locales/angular/global/chr.js +4 -4
  697. app-ng-runtime/locales/angular/global/ckb-ir.js +4 -4
  698. app-ng-runtime/locales/angular/global/ckb.js +4 -4
  699. app-ng-runtime/locales/angular/global/cs.js +4 -4
  700. app-ng-runtime/locales/angular/global/cy.js +4 -4
  701. app-ng-runtime/locales/angular/global/da-gl.js +4 -4
  702. app-ng-runtime/locales/angular/global/da.js +4 -4
  703. app-ng-runtime/locales/angular/global/dav.js +4 -4
  704. app-ng-runtime/locales/angular/global/de-at.js +4 -4
  705. app-ng-runtime/locales/angular/global/de-be.js +4 -4
  706. app-ng-runtime/locales/angular/global/de-ch.js +4 -4
  707. app-ng-runtime/locales/angular/global/de-it.js +4 -4
  708. app-ng-runtime/locales/angular/global/de-li.js +4 -4
  709. app-ng-runtime/locales/angular/global/de-lu.js +4 -4
  710. app-ng-runtime/locales/angular/global/de.js +4 -4
  711. app-ng-runtime/locales/angular/global/dje.js +4 -4
  712. app-ng-runtime/locales/angular/global/doi.js +4 -4
  713. app-ng-runtime/locales/angular/global/dsb.js +4 -4
  714. app-ng-runtime/locales/angular/global/dua.js +4 -4
  715. app-ng-runtime/locales/angular/global/dyo.js +4 -4
  716. app-ng-runtime/locales/angular/global/dz.js +4 -4
  717. app-ng-runtime/locales/angular/global/ebu.js +4 -4
  718. app-ng-runtime/locales/angular/global/ee-tg.js +4 -4
  719. app-ng-runtime/locales/angular/global/ee.js +4 -4
  720. app-ng-runtime/locales/angular/global/el-cy.js +4 -4
  721. app-ng-runtime/locales/angular/global/el.js +4 -4
  722. app-ng-runtime/locales/angular/global/en-001.js +4 -4
  723. app-ng-runtime/locales/angular/global/en-150.js +4 -4
  724. app-ng-runtime/locales/angular/global/en-ae.js +4 -4
  725. app-ng-runtime/locales/angular/global/en-ag.js +4 -4
  726. app-ng-runtime/locales/angular/global/en-ai.js +4 -4
  727. app-ng-runtime/locales/angular/global/en-as.js +4 -4
  728. app-ng-runtime/locales/angular/global/en-at.js +4 -4
  729. app-ng-runtime/locales/angular/global/en-au.js +4 -4
  730. app-ng-runtime/locales/angular/global/en-bb.js +4 -4
  731. app-ng-runtime/locales/angular/global/en-be.js +4 -4
  732. app-ng-runtime/locales/angular/global/en-bi.js +4 -4
  733. app-ng-runtime/locales/angular/global/en-bm.js +4 -4
  734. app-ng-runtime/locales/angular/global/en-bs.js +4 -4
  735. app-ng-runtime/locales/angular/global/en-bw.js +4 -4
  736. app-ng-runtime/locales/angular/global/en-bz.js +4 -4
  737. app-ng-runtime/locales/angular/global/en-ca.js +4 -4
  738. app-ng-runtime/locales/angular/global/en-cc.js +4 -4
  739. app-ng-runtime/locales/angular/global/en-ch.js +4 -4
  740. app-ng-runtime/locales/angular/global/en-ck.js +4 -4
  741. app-ng-runtime/locales/angular/global/en-cm.js +4 -4
  742. app-ng-runtime/locales/angular/global/en-cx.js +4 -4
  743. app-ng-runtime/locales/angular/global/en-cy.js +4 -4
  744. app-ng-runtime/locales/angular/global/en-de.js +4 -4
  745. app-ng-runtime/locales/angular/global/en-dg.js +4 -4
  746. app-ng-runtime/locales/angular/global/en-dk.js +4 -4
  747. app-ng-runtime/locales/angular/global/en-dm.js +4 -4
  748. app-ng-runtime/locales/angular/global/en-er.js +4 -4
  749. app-ng-runtime/locales/angular/global/en-fi.js +4 -4
  750. app-ng-runtime/locales/angular/global/en-fj.js +4 -4
  751. app-ng-runtime/locales/angular/global/en-fk.js +4 -4
  752. app-ng-runtime/locales/angular/global/en-fm.js +4 -4
  753. app-ng-runtime/locales/angular/global/en-gb.js +4 -4
  754. app-ng-runtime/locales/angular/global/en-gd.js +4 -4
  755. app-ng-runtime/locales/angular/global/en-gg.js +4 -4
  756. app-ng-runtime/locales/angular/global/en-gh.js +4 -4
  757. app-ng-runtime/locales/angular/global/en-gi.js +4 -4
  758. app-ng-runtime/locales/angular/global/en-gm.js +4 -4
  759. app-ng-runtime/locales/angular/global/en-gu.js +4 -4
  760. app-ng-runtime/locales/angular/global/en-gy.js +4 -4
  761. app-ng-runtime/locales/angular/global/en-hk.js +4 -4
  762. app-ng-runtime/locales/angular/global/en-ie.js +4 -4
  763. app-ng-runtime/locales/angular/global/en-il.js +4 -4
  764. app-ng-runtime/locales/angular/global/en-im.js +4 -4
  765. app-ng-runtime/locales/angular/global/en-in.js +4 -4
  766. app-ng-runtime/locales/angular/global/en-io.js +4 -4
  767. app-ng-runtime/locales/angular/global/en-je.js +4 -4
  768. app-ng-runtime/locales/angular/global/en-jm.js +4 -4
  769. app-ng-runtime/locales/angular/global/en-ke.js +4 -4
  770. app-ng-runtime/locales/angular/global/en-ki.js +4 -4
  771. app-ng-runtime/locales/angular/global/en-kn.js +4 -4
  772. app-ng-runtime/locales/angular/global/en-ky.js +4 -4
  773. app-ng-runtime/locales/angular/global/en-lc.js +4 -4
  774. app-ng-runtime/locales/angular/global/en-lr.js +4 -4
  775. app-ng-runtime/locales/angular/global/en-ls.js +4 -4
  776. app-ng-runtime/locales/angular/global/en-mg.js +4 -4
  777. app-ng-runtime/locales/angular/global/en-mh.js +4 -4
  778. app-ng-runtime/locales/angular/global/en-mo.js +4 -4
  779. app-ng-runtime/locales/angular/global/en-mp.js +4 -4
  780. app-ng-runtime/locales/angular/global/en-ms.js +4 -4
  781. app-ng-runtime/locales/angular/global/en-mt.js +4 -4
  782. app-ng-runtime/locales/angular/global/en-mu.js +4 -4
  783. app-ng-runtime/locales/angular/global/en-mv.js +4 -4
  784. app-ng-runtime/locales/angular/global/en-mw.js +4 -4
  785. app-ng-runtime/locales/angular/global/en-my.js +4 -4
  786. app-ng-runtime/locales/angular/global/en-na.js +4 -4
  787. app-ng-runtime/locales/angular/global/en-nf.js +4 -4
  788. app-ng-runtime/locales/angular/global/en-ng.js +4 -4
  789. app-ng-runtime/locales/angular/global/en-nl.js +4 -4
  790. app-ng-runtime/locales/angular/global/en-nr.js +4 -4
  791. app-ng-runtime/locales/angular/global/en-nu.js +4 -4
  792. app-ng-runtime/locales/angular/global/en-nz.js +4 -4
  793. app-ng-runtime/locales/angular/global/en-pg.js +4 -4
  794. app-ng-runtime/locales/angular/global/en-ph.js +4 -4
  795. app-ng-runtime/locales/angular/global/en-pk.js +4 -4
  796. app-ng-runtime/locales/angular/global/en-pn.js +4 -4
  797. app-ng-runtime/locales/angular/global/en-pr.js +4 -4
  798. app-ng-runtime/locales/angular/global/en-pw.js +4 -4
  799. app-ng-runtime/locales/angular/global/en-rw.js +4 -4
  800. app-ng-runtime/locales/angular/global/en-sb.js +4 -4
  801. app-ng-runtime/locales/angular/global/en-sc.js +4 -4
  802. app-ng-runtime/locales/angular/global/en-sd.js +4 -4
  803. app-ng-runtime/locales/angular/global/en-se.js +4 -4
  804. app-ng-runtime/locales/angular/global/en-sg.js +4 -4
  805. app-ng-runtime/locales/angular/global/en-sh.js +4 -4
  806. app-ng-runtime/locales/angular/global/en-si.js +4 -4
  807. app-ng-runtime/locales/angular/global/en-sl.js +4 -4
  808. app-ng-runtime/locales/angular/global/en-ss.js +4 -4
  809. app-ng-runtime/locales/angular/global/en-sx.js +4 -4
  810. app-ng-runtime/locales/angular/global/en-sz.js +4 -4
  811. app-ng-runtime/locales/angular/global/en-tc.js +4 -4
  812. app-ng-runtime/locales/angular/global/en-tk.js +4 -4
  813. app-ng-runtime/locales/angular/global/en-to.js +4 -4
  814. app-ng-runtime/locales/angular/global/en-tt.js +4 -4
  815. app-ng-runtime/locales/angular/global/en-tv.js +4 -4
  816. app-ng-runtime/locales/angular/global/en-tz.js +4 -4
  817. app-ng-runtime/locales/angular/global/en-ug.js +4 -4
  818. app-ng-runtime/locales/angular/global/en-um.js +4 -4
  819. app-ng-runtime/locales/angular/global/en-vc.js +4 -4
  820. app-ng-runtime/locales/angular/global/en-vg.js +4 -4
  821. app-ng-runtime/locales/angular/global/en-vi.js +4 -4
  822. app-ng-runtime/locales/angular/global/en-vu.js +4 -4
  823. app-ng-runtime/locales/angular/global/en-ws.js +4 -4
  824. app-ng-runtime/locales/angular/global/en-za.js +4 -4
  825. app-ng-runtime/locales/angular/global/en-zm.js +4 -4
  826. app-ng-runtime/locales/angular/global/en-zw.js +4 -4
  827. app-ng-runtime/locales/angular/global/en.js +4 -4
  828. app-ng-runtime/locales/angular/global/eo.js +4 -4
  829. app-ng-runtime/locales/angular/global/es-419.js +4 -4
  830. app-ng-runtime/locales/angular/global/es-ar.js +4 -4
  831. app-ng-runtime/locales/angular/global/es-bo.js +4 -4
  832. app-ng-runtime/locales/angular/global/es-br.js +4 -4
  833. app-ng-runtime/locales/angular/global/es-bz.js +4 -4
  834. app-ng-runtime/locales/angular/global/es-cl.js +4 -4
  835. app-ng-runtime/locales/angular/global/es-co.js +4 -4
  836. app-ng-runtime/locales/angular/global/es-cr.js +4 -4
  837. app-ng-runtime/locales/angular/global/es-cu.js +4 -4
  838. app-ng-runtime/locales/angular/global/es-do.js +4 -4
  839. app-ng-runtime/locales/angular/global/es-ea.js +4 -4
  840. app-ng-runtime/locales/angular/global/es-ec.js +4 -4
  841. app-ng-runtime/locales/angular/global/es-gq.js +4 -4
  842. app-ng-runtime/locales/angular/global/es-gt.js +4 -4
  843. app-ng-runtime/locales/angular/global/es-hn.js +4 -4
  844. app-ng-runtime/locales/angular/global/es-ic.js +4 -4
  845. app-ng-runtime/locales/angular/global/es-mx.js +4 -4
  846. app-ng-runtime/locales/angular/global/es-ni.js +4 -4
  847. app-ng-runtime/locales/angular/global/es-pa.js +4 -4
  848. app-ng-runtime/locales/angular/global/es-pe.js +4 -4
  849. app-ng-runtime/locales/angular/global/es-ph.js +4 -4
  850. app-ng-runtime/locales/angular/global/es-pr.js +4 -4
  851. app-ng-runtime/locales/angular/global/es-py.js +4 -4
  852. app-ng-runtime/locales/angular/global/es-sv.js +4 -4
  853. app-ng-runtime/locales/angular/global/es-us.js +4 -4
  854. app-ng-runtime/locales/angular/global/es-uy.js +4 -4
  855. app-ng-runtime/locales/angular/global/es-ve.js +4 -4
  856. app-ng-runtime/locales/angular/global/es.js +4 -4
  857. app-ng-runtime/locales/angular/global/et.js +4 -4
  858. app-ng-runtime/locales/angular/global/eu.js +4 -4
  859. app-ng-runtime/locales/angular/global/ewo.js +4 -4
  860. app-ng-runtime/locales/angular/global/fa-af.js +4 -4
  861. app-ng-runtime/locales/angular/global/fa.js +4 -4
  862. app-ng-runtime/locales/angular/global/ff-adlm-bf.js +4 -4
  863. app-ng-runtime/locales/angular/global/ff-adlm-cm.js +4 -4
  864. app-ng-runtime/locales/angular/global/ff-adlm-gh.js +4 -4
  865. app-ng-runtime/locales/angular/global/ff-adlm-gm.js +4 -4
  866. app-ng-runtime/locales/angular/global/ff-adlm-gw.js +4 -4
  867. app-ng-runtime/locales/angular/global/ff-adlm-lr.js +4 -4
  868. app-ng-runtime/locales/angular/global/ff-adlm-mr.js +4 -4
  869. app-ng-runtime/locales/angular/global/ff-adlm-ne.js +4 -4
  870. app-ng-runtime/locales/angular/global/ff-adlm-ng.js +4 -4
  871. app-ng-runtime/locales/angular/global/ff-adlm-sl.js +4 -4
  872. app-ng-runtime/locales/angular/global/ff-adlm-sn.js +4 -4
  873. app-ng-runtime/locales/angular/global/ff-adlm.js +4 -4
  874. app-ng-runtime/locales/angular/global/ff-cm.js +58 -44
  875. app-ng-runtime/locales/angular/global/ff-gn.js +58 -44
  876. app-ng-runtime/locales/angular/global/ff-latn-bf.js +4 -4
  877. app-ng-runtime/locales/angular/global/ff-latn-cm.js +4 -4
  878. app-ng-runtime/locales/angular/global/ff-latn-gh.js +4 -4
  879. app-ng-runtime/locales/angular/global/ff-latn-gm.js +4 -4
  880. app-ng-runtime/locales/angular/global/ff-latn-gn.js +4 -4
  881. app-ng-runtime/locales/angular/global/ff-latn-gw.js +4 -4
  882. app-ng-runtime/locales/angular/global/ff-latn-lr.js +4 -4
  883. app-ng-runtime/locales/angular/global/ff-latn-mr.js +4 -4
  884. app-ng-runtime/locales/angular/global/ff-latn-ne.js +4 -4
  885. app-ng-runtime/locales/angular/global/ff-latn-ng.js +4 -4
  886. app-ng-runtime/locales/angular/global/ff-latn-sl.js +4 -4
  887. app-ng-runtime/locales/angular/global/ff-latn.js +4 -4
  888. app-ng-runtime/locales/angular/global/ff-mr.js +58 -44
  889. app-ng-runtime/locales/angular/global/ff.js +4 -4
  890. app-ng-runtime/locales/angular/global/fi.js +4 -4
  891. app-ng-runtime/locales/angular/global/fil.js +4 -4
  892. app-ng-runtime/locales/angular/global/fo-dk.js +4 -4
  893. app-ng-runtime/locales/angular/global/fo.js +4 -4
  894. app-ng-runtime/locales/angular/global/fr-be.js +4 -4
  895. app-ng-runtime/locales/angular/global/fr-bf.js +4 -4
  896. app-ng-runtime/locales/angular/global/fr-bi.js +4 -4
  897. app-ng-runtime/locales/angular/global/fr-bj.js +4 -4
  898. app-ng-runtime/locales/angular/global/fr-bl.js +4 -4
  899. app-ng-runtime/locales/angular/global/fr-ca.js +4 -4
  900. app-ng-runtime/locales/angular/global/fr-cd.js +4 -4
  901. app-ng-runtime/locales/angular/global/fr-cf.js +4 -4
  902. app-ng-runtime/locales/angular/global/fr-cg.js +4 -4
  903. app-ng-runtime/locales/angular/global/fr-ch.js +4 -4
  904. app-ng-runtime/locales/angular/global/fr-ci.js +4 -4
  905. app-ng-runtime/locales/angular/global/fr-cm.js +4 -4
  906. app-ng-runtime/locales/angular/global/fr-dj.js +4 -4
  907. app-ng-runtime/locales/angular/global/fr-dz.js +4 -4
  908. app-ng-runtime/locales/angular/global/fr-ga.js +4 -4
  909. app-ng-runtime/locales/angular/global/fr-gf.js +4 -4
  910. app-ng-runtime/locales/angular/global/fr-gn.js +4 -4
  911. app-ng-runtime/locales/angular/global/fr-gp.js +4 -4
  912. app-ng-runtime/locales/angular/global/fr-gq.js +4 -4
  913. app-ng-runtime/locales/angular/global/fr-ht.js +4 -4
  914. app-ng-runtime/locales/angular/global/fr-km.js +4 -4
  915. app-ng-runtime/locales/angular/global/fr-lu.js +4 -4
  916. app-ng-runtime/locales/angular/global/fr-ma.js +4 -4
  917. app-ng-runtime/locales/angular/global/fr-mc.js +4 -4
  918. app-ng-runtime/locales/angular/global/fr-mf.js +4 -4
  919. app-ng-runtime/locales/angular/global/fr-mg.js +4 -4
  920. app-ng-runtime/locales/angular/global/fr-ml.js +4 -4
  921. app-ng-runtime/locales/angular/global/fr-mq.js +4 -4
  922. app-ng-runtime/locales/angular/global/fr-mr.js +4 -4
  923. app-ng-runtime/locales/angular/global/fr-mu.js +4 -4
  924. app-ng-runtime/locales/angular/global/fr-nc.js +4 -4
  925. app-ng-runtime/locales/angular/global/fr-ne.js +4 -4
  926. app-ng-runtime/locales/angular/global/fr-pf.js +4 -4
  927. app-ng-runtime/locales/angular/global/fr-pm.js +4 -4
  928. app-ng-runtime/locales/angular/global/fr-re.js +4 -4
  929. app-ng-runtime/locales/angular/global/fr-rw.js +4 -4
  930. app-ng-runtime/locales/angular/global/fr-sc.js +4 -4
  931. app-ng-runtime/locales/angular/global/fr-sn.js +4 -4
  932. app-ng-runtime/locales/angular/global/fr-sy.js +4 -4
  933. app-ng-runtime/locales/angular/global/fr-td.js +4 -4
  934. app-ng-runtime/locales/angular/global/fr-tg.js +4 -4
  935. app-ng-runtime/locales/angular/global/fr-tn.js +4 -4
  936. app-ng-runtime/locales/angular/global/fr-vu.js +4 -4
  937. app-ng-runtime/locales/angular/global/fr-wf.js +4 -4
  938. app-ng-runtime/locales/angular/global/fr-yt.js +4 -4
  939. app-ng-runtime/locales/angular/global/fr.js +4 -4
  940. app-ng-runtime/locales/angular/global/fur.js +4 -4
  941. app-ng-runtime/locales/angular/global/fy.js +4 -4
  942. app-ng-runtime/locales/angular/global/ga-gb.js +4 -4
  943. app-ng-runtime/locales/angular/global/ga.js +4 -4
  944. app-ng-runtime/locales/angular/global/gd.js +4 -4
  945. app-ng-runtime/locales/angular/global/gl.js +4 -4
  946. app-ng-runtime/locales/angular/global/gsw-fr.js +4 -4
  947. app-ng-runtime/locales/angular/global/gsw-li.js +4 -4
  948. app-ng-runtime/locales/angular/global/gsw.js +4 -4
  949. app-ng-runtime/locales/angular/global/gu.js +4 -4
  950. app-ng-runtime/locales/angular/global/guz.js +4 -4
  951. app-ng-runtime/locales/angular/global/gv.js +4 -4
  952. app-ng-runtime/locales/angular/global/ha-gh.js +4 -4
  953. app-ng-runtime/locales/angular/global/ha-ne.js +4 -4
  954. app-ng-runtime/locales/angular/global/ha.js +4 -4
  955. app-ng-runtime/locales/angular/global/haw.js +4 -4
  956. app-ng-runtime/locales/angular/global/he.js +4 -4
  957. app-ng-runtime/locales/angular/global/hi-latn.js +4 -4
  958. app-ng-runtime/locales/angular/global/hi.js +4 -4
  959. app-ng-runtime/locales/angular/global/hr-ba.js +4 -4
  960. app-ng-runtime/locales/angular/global/hr.js +4 -4
  961. app-ng-runtime/locales/angular/global/hsb.js +4 -4
  962. app-ng-runtime/locales/angular/global/hu.js +4 -4
  963. app-ng-runtime/locales/angular/global/hy.js +4 -4
  964. app-ng-runtime/locales/angular/global/ia.js +4 -4
  965. app-ng-runtime/locales/angular/global/id.js +4 -4
  966. app-ng-runtime/locales/angular/global/ig.js +4 -4
  967. app-ng-runtime/locales/angular/global/ii.js +4 -4
  968. app-ng-runtime/locales/angular/global/is.js +4 -4
  969. app-ng-runtime/locales/angular/global/it-ch.js +4 -4
  970. app-ng-runtime/locales/angular/global/it-sm.js +4 -4
  971. app-ng-runtime/locales/angular/global/it-va.js +4 -4
  972. app-ng-runtime/locales/angular/global/it.js +4 -4
  973. app-ng-runtime/locales/angular/global/ja.js +4 -4
  974. app-ng-runtime/locales/angular/global/jgo.js +4 -4
  975. app-ng-runtime/locales/angular/global/jmc.js +4 -4
  976. app-ng-runtime/locales/angular/global/jv.js +4 -4
  977. app-ng-runtime/locales/angular/global/ka.js +4 -4
  978. app-ng-runtime/locales/angular/global/kab.js +4 -4
  979. app-ng-runtime/locales/angular/global/kam.js +4 -4
  980. app-ng-runtime/locales/angular/global/kde.js +4 -4
  981. app-ng-runtime/locales/angular/global/kea.js +4 -4
  982. app-ng-runtime/locales/angular/global/kgp.js +4 -4
  983. app-ng-runtime/locales/angular/global/khq.js +4 -4
  984. app-ng-runtime/locales/angular/global/ki.js +4 -4
  985. app-ng-runtime/locales/angular/global/kk.js +4 -4
  986. app-ng-runtime/locales/angular/global/kkj.js +4 -4
  987. app-ng-runtime/locales/angular/global/kl.js +4 -4
  988. app-ng-runtime/locales/angular/global/kln.js +4 -4
  989. app-ng-runtime/locales/angular/global/km.js +4 -4
  990. app-ng-runtime/locales/angular/global/kn.js +4 -4
  991. app-ng-runtime/locales/angular/global/ko-kp.js +4 -4
  992. app-ng-runtime/locales/angular/global/ko.js +4 -4
  993. app-ng-runtime/locales/angular/global/kok.js +4 -4
  994. app-ng-runtime/locales/angular/global/ks-arab.js +4 -4
  995. app-ng-runtime/locales/angular/global/ks-deva.js +4 -4
  996. app-ng-runtime/locales/angular/global/ks.js +4 -4
  997. app-ng-runtime/locales/angular/global/ksb.js +4 -4
  998. app-ng-runtime/locales/angular/global/ksf.js +4 -4
  999. app-ng-runtime/locales/angular/global/ksh.js +4 -4
  1000. app-ng-runtime/locales/angular/global/ku.js +4 -4
  1001. app-ng-runtime/locales/angular/global/kw.js +4 -4
  1002. app-ng-runtime/locales/angular/global/ky.js +4 -4
  1003. app-ng-runtime/locales/angular/global/lag.js +4 -4
  1004. app-ng-runtime/locales/angular/global/lb.js +4 -4
  1005. app-ng-runtime/locales/angular/global/lg.js +4 -4
  1006. app-ng-runtime/locales/angular/global/lkt.js +4 -4
  1007. app-ng-runtime/locales/angular/global/ln-ao.js +4 -4
  1008. app-ng-runtime/locales/angular/global/ln-cf.js +4 -4
  1009. app-ng-runtime/locales/angular/global/ln-cg.js +4 -4
  1010. app-ng-runtime/locales/angular/global/ln.js +4 -4
  1011. app-ng-runtime/locales/angular/global/lo.js +4 -4
  1012. app-ng-runtime/locales/angular/global/lrc-iq.js +4 -4
  1013. app-ng-runtime/locales/angular/global/lrc.js +4 -4
  1014. app-ng-runtime/locales/angular/global/lt.js +4 -4
  1015. app-ng-runtime/locales/angular/global/lu.js +4 -4
  1016. app-ng-runtime/locales/angular/global/luo.js +4 -4
  1017. app-ng-runtime/locales/angular/global/luy.js +4 -4
  1018. app-ng-runtime/locales/angular/global/lv.js +4 -4
  1019. app-ng-runtime/locales/angular/global/mai.js +4 -4
  1020. app-ng-runtime/locales/angular/global/mas-tz.js +4 -4
  1021. app-ng-runtime/locales/angular/global/mas.js +4 -4
  1022. app-ng-runtime/locales/angular/global/mer.js +4 -4
  1023. app-ng-runtime/locales/angular/global/mfe.js +4 -4
  1024. app-ng-runtime/locales/angular/global/mg.js +4 -4
  1025. app-ng-runtime/locales/angular/global/mgh.js +4 -4
  1026. app-ng-runtime/locales/angular/global/mgo.js +4 -4
  1027. app-ng-runtime/locales/angular/global/mi.js +4 -4
  1028. app-ng-runtime/locales/angular/global/mk.js +4 -4
  1029. app-ng-runtime/locales/angular/global/ml.js +4 -4
  1030. app-ng-runtime/locales/angular/global/mn.js +4 -4
  1031. app-ng-runtime/locales/angular/global/mni-beng.js +4 -4
  1032. app-ng-runtime/locales/angular/global/mni.js +4 -4
  1033. app-ng-runtime/locales/angular/global/mr.js +4 -4
  1034. app-ng-runtime/locales/angular/global/ms-bn.js +4 -4
  1035. app-ng-runtime/locales/angular/global/ms-id.js +4 -4
  1036. app-ng-runtime/locales/angular/global/ms-sg.js +4 -4
  1037. app-ng-runtime/locales/angular/global/ms.js +4 -4
  1038. app-ng-runtime/locales/angular/global/mt.js +4 -4
  1039. app-ng-runtime/locales/angular/global/mua.js +4 -4
  1040. app-ng-runtime/locales/angular/global/my.js +4 -4
  1041. app-ng-runtime/locales/angular/global/mzn.js +4 -4
  1042. app-ng-runtime/locales/angular/global/naq.js +4 -4
  1043. app-ng-runtime/locales/angular/global/nb-sj.js +4 -4
  1044. app-ng-runtime/locales/angular/global/nb.js +4 -4
  1045. app-ng-runtime/locales/angular/global/nd.js +4 -4
  1046. app-ng-runtime/locales/angular/global/nds-nl.js +4 -4
  1047. app-ng-runtime/locales/angular/global/nds.js +4 -4
  1048. app-ng-runtime/locales/angular/global/ne-in.js +4 -4
  1049. app-ng-runtime/locales/angular/global/ne.js +4 -4
  1050. app-ng-runtime/locales/angular/global/nl-aw.js +4 -4
  1051. app-ng-runtime/locales/angular/global/nl-be.js +4 -4
  1052. app-ng-runtime/locales/angular/global/nl-bq.js +4 -4
  1053. app-ng-runtime/locales/angular/global/nl-cw.js +4 -4
  1054. app-ng-runtime/locales/angular/global/nl-sr.js +4 -4
  1055. app-ng-runtime/locales/angular/global/nl-sx.js +4 -4
  1056. app-ng-runtime/locales/angular/global/nl.js +4 -4
  1057. app-ng-runtime/locales/angular/global/nmg.js +4 -4
  1058. app-ng-runtime/locales/angular/global/nn.js +4 -4
  1059. app-ng-runtime/locales/angular/global/nnh.js +4 -4
  1060. app-ng-runtime/locales/angular/global/no.js +4 -4
  1061. app-ng-runtime/locales/angular/global/nus.js +4 -4
  1062. app-ng-runtime/locales/angular/global/nyn.js +4 -4
  1063. app-ng-runtime/locales/angular/global/om-ke.js +4 -4
  1064. app-ng-runtime/locales/angular/global/om.js +4 -4
  1065. app-ng-runtime/locales/angular/global/or.js +4 -4
  1066. app-ng-runtime/locales/angular/global/os-ru.js +4 -4
  1067. app-ng-runtime/locales/angular/global/os.js +4 -4
  1068. app-ng-runtime/locales/angular/global/pa-arab.js +4 -4
  1069. app-ng-runtime/locales/angular/global/pa-guru.js +4 -4
  1070. app-ng-runtime/locales/angular/global/pa.js +4 -4
  1071. app-ng-runtime/locales/angular/global/pcm.js +4 -4
  1072. app-ng-runtime/locales/angular/global/pl.js +4 -4
  1073. app-ng-runtime/locales/angular/global/ps-pk.js +4 -4
  1074. app-ng-runtime/locales/angular/global/ps.js +4 -4
  1075. app-ng-runtime/locales/angular/global/pt-ao.js +4 -4
  1076. app-ng-runtime/locales/angular/global/pt-ch.js +4 -4
  1077. app-ng-runtime/locales/angular/global/pt-cv.js +4 -4
  1078. app-ng-runtime/locales/angular/global/pt-gq.js +4 -4
  1079. app-ng-runtime/locales/angular/global/pt-gw.js +4 -4
  1080. app-ng-runtime/locales/angular/global/pt-lu.js +4 -4
  1081. app-ng-runtime/locales/angular/global/pt-mo.js +4 -4
  1082. app-ng-runtime/locales/angular/global/pt-mz.js +4 -4
  1083. app-ng-runtime/locales/angular/global/pt-pt.js +4 -4
  1084. app-ng-runtime/locales/angular/global/pt-st.js +4 -4
  1085. app-ng-runtime/locales/angular/global/pt-tl.js +4 -4
  1086. app-ng-runtime/locales/angular/global/pt.js +4 -4
  1087. app-ng-runtime/locales/angular/global/qu-bo.js +4 -4
  1088. app-ng-runtime/locales/angular/global/qu-ec.js +4 -4
  1089. app-ng-runtime/locales/angular/global/qu.js +4 -4
  1090. app-ng-runtime/locales/angular/global/rm.js +4 -4
  1091. app-ng-runtime/locales/angular/global/rn.js +4 -4
  1092. app-ng-runtime/locales/angular/global/ro-md.js +4 -4
  1093. app-ng-runtime/locales/angular/global/ro.js +4 -4
  1094. app-ng-runtime/locales/angular/global/rof.js +4 -4
  1095. app-ng-runtime/locales/angular/global/ru-by.js +4 -4
  1096. app-ng-runtime/locales/angular/global/ru-kg.js +4 -4
  1097. app-ng-runtime/locales/angular/global/ru-kz.js +4 -4
  1098. app-ng-runtime/locales/angular/global/ru-md.js +4 -4
  1099. app-ng-runtime/locales/angular/global/ru-ua.js +4 -4
  1100. app-ng-runtime/locales/angular/global/ru.js +4 -4
  1101. app-ng-runtime/locales/angular/global/rw.js +4 -4
  1102. app-ng-runtime/locales/angular/global/rwk.js +4 -4
  1103. app-ng-runtime/locales/angular/global/sa.js +4 -4
  1104. app-ng-runtime/locales/angular/global/sah.js +4 -4
  1105. app-ng-runtime/locales/angular/global/saq.js +4 -4
  1106. app-ng-runtime/locales/angular/global/sat-olck.js +4 -4
  1107. app-ng-runtime/locales/angular/global/sat.js +4 -4
  1108. app-ng-runtime/locales/angular/global/sbp.js +4 -4
  1109. app-ng-runtime/locales/angular/global/sc.js +4 -4
  1110. app-ng-runtime/locales/angular/global/sd-arab.js +4 -4
  1111. app-ng-runtime/locales/angular/global/sd-deva.js +4 -4
  1112. app-ng-runtime/locales/angular/global/sd.js +4 -4
  1113. app-ng-runtime/locales/angular/global/se-fi.js +4 -4
  1114. app-ng-runtime/locales/angular/global/se-se.js +4 -4
  1115. app-ng-runtime/locales/angular/global/se.js +4 -4
  1116. app-ng-runtime/locales/angular/global/seh.js +4 -4
  1117. app-ng-runtime/locales/angular/global/ses.js +4 -4
  1118. app-ng-runtime/locales/angular/global/sg.js +4 -4
  1119. app-ng-runtime/locales/angular/global/shi-latn.js +4 -4
  1120. app-ng-runtime/locales/angular/global/shi-tfng.js +4 -4
  1121. app-ng-runtime/locales/angular/global/shi.js +4 -4
  1122. app-ng-runtime/locales/angular/global/si.js +4 -4
  1123. app-ng-runtime/locales/angular/global/sk.js +4 -4
  1124. app-ng-runtime/locales/angular/global/sl.js +4 -4
  1125. app-ng-runtime/locales/angular/global/smn.js +4 -4
  1126. app-ng-runtime/locales/angular/global/sn.js +4 -4
  1127. app-ng-runtime/locales/angular/global/so-dj.js +4 -4
  1128. app-ng-runtime/locales/angular/global/so-et.js +4 -4
  1129. app-ng-runtime/locales/angular/global/so-ke.js +4 -4
  1130. app-ng-runtime/locales/angular/global/so.js +4 -4
  1131. app-ng-runtime/locales/angular/global/sq-mk.js +4 -4
  1132. app-ng-runtime/locales/angular/global/sq-xk.js +4 -4
  1133. app-ng-runtime/locales/angular/global/sq.js +4 -4
  1134. app-ng-runtime/locales/angular/global/sr-cyrl-ba.js +4 -4
  1135. app-ng-runtime/locales/angular/global/sr-cyrl-me.js +4 -4
  1136. app-ng-runtime/locales/angular/global/sr-cyrl-xk.js +4 -4
  1137. app-ng-runtime/locales/angular/global/sr-cyrl.js +4 -4
  1138. app-ng-runtime/locales/angular/global/sr-latn-ba.js +4 -4
  1139. app-ng-runtime/locales/angular/global/sr-latn-me.js +4 -4
  1140. app-ng-runtime/locales/angular/global/sr-latn-xk.js +4 -4
  1141. app-ng-runtime/locales/angular/global/sr-latn.js +4 -4
  1142. app-ng-runtime/locales/angular/global/sr.js +4 -4
  1143. app-ng-runtime/locales/angular/global/su-latn.js +4 -4
  1144. app-ng-runtime/locales/angular/global/su.js +4 -4
  1145. app-ng-runtime/locales/angular/global/sv-ax.js +4 -4
  1146. app-ng-runtime/locales/angular/global/sv-fi.js +4 -4
  1147. app-ng-runtime/locales/angular/global/sv.js +4 -4
  1148. app-ng-runtime/locales/angular/global/sw-cd.js +4 -4
  1149. app-ng-runtime/locales/angular/global/sw-ke.js +4 -4
  1150. app-ng-runtime/locales/angular/global/sw-ug.js +4 -4
  1151. app-ng-runtime/locales/angular/global/sw.js +4 -4
  1152. app-ng-runtime/locales/angular/global/ta-lk.js +4 -4
  1153. app-ng-runtime/locales/angular/global/ta-my.js +4 -4
  1154. app-ng-runtime/locales/angular/global/ta-sg.js +4 -4
  1155. app-ng-runtime/locales/angular/global/ta.js +4 -4
  1156. app-ng-runtime/locales/angular/global/te.js +4 -4
  1157. app-ng-runtime/locales/angular/global/teo-ke.js +4 -4
  1158. app-ng-runtime/locales/angular/global/teo.js +4 -4
  1159. app-ng-runtime/locales/angular/global/tg.js +4 -4
  1160. app-ng-runtime/locales/angular/global/th.js +4 -4
  1161. app-ng-runtime/locales/angular/global/ti-er.js +4 -4
  1162. app-ng-runtime/locales/angular/global/ti.js +4 -4
  1163. app-ng-runtime/locales/angular/global/tk.js +4 -4
  1164. app-ng-runtime/locales/angular/global/to.js +4 -4
  1165. app-ng-runtime/locales/angular/global/tr-cy.js +4 -4
  1166. app-ng-runtime/locales/angular/global/tr.js +4 -4
  1167. app-ng-runtime/locales/angular/global/tt.js +4 -4
  1168. app-ng-runtime/locales/angular/global/twq.js +4 -4
  1169. app-ng-runtime/locales/angular/global/tzm.js +4 -4
  1170. app-ng-runtime/locales/angular/global/ug.js +4 -4
  1171. app-ng-runtime/locales/angular/global/uk.js +4 -4
  1172. app-ng-runtime/locales/angular/global/und.js +4 -4
  1173. app-ng-runtime/locales/angular/global/ur-in.js +4 -4
  1174. app-ng-runtime/locales/angular/global/ur.js +4 -4
  1175. app-ng-runtime/locales/angular/global/uz-arab.js +4 -4
  1176. app-ng-runtime/locales/angular/global/uz-cyrl.js +4 -4
  1177. app-ng-runtime/locales/angular/global/uz-latn.js +4 -4
  1178. app-ng-runtime/locales/angular/global/uz.js +4 -4
  1179. app-ng-runtime/locales/angular/global/vai-latn.js +4 -4
  1180. app-ng-runtime/locales/angular/global/vai-vaii.js +4 -4
  1181. app-ng-runtime/locales/angular/global/vai.js +4 -4
  1182. app-ng-runtime/locales/angular/global/vi.js +4 -4
  1183. app-ng-runtime/locales/angular/global/vun.js +4 -4
  1184. app-ng-runtime/locales/angular/global/wae.js +4 -4
  1185. app-ng-runtime/locales/angular/global/wo.js +4 -4
  1186. app-ng-runtime/locales/angular/global/xh.js +4 -4
  1187. app-ng-runtime/locales/angular/global/xog.js +4 -4
  1188. app-ng-runtime/locales/angular/global/yav.js +4 -4
  1189. app-ng-runtime/locales/angular/global/yi.js +4 -4
  1190. app-ng-runtime/locales/angular/global/yo-bj.js +4 -4
  1191. app-ng-runtime/locales/angular/global/yo.js +4 -4
  1192. app-ng-runtime/locales/angular/global/yrl-co.js +4 -4
  1193. app-ng-runtime/locales/angular/global/yrl-ve.js +4 -4
  1194. app-ng-runtime/locales/angular/global/yrl.js +4 -4
  1195. app-ng-runtime/locales/angular/global/yue-hans.js +4 -4
  1196. app-ng-runtime/locales/angular/global/yue-hant.js +4 -4
  1197. app-ng-runtime/locales/angular/global/yue.js +4 -4
  1198. app-ng-runtime/locales/angular/global/zgh.js +4 -4
  1199. app-ng-runtime/locales/angular/global/zh-hans-hk.js +4 -4
  1200. app-ng-runtime/locales/angular/global/zh-hans-mo.js +4 -4
  1201. app-ng-runtime/locales/angular/global/zh-hans-sg.js +4 -4
  1202. app-ng-runtime/locales/angular/global/zh-hans.js +4 -4
  1203. app-ng-runtime/locales/angular/global/zh-hant-hk.js +4 -4
  1204. app-ng-runtime/locales/angular/global/zh-hant-mo.js +4 -4
  1205. app-ng-runtime/locales/angular/global/zh-hant.js +4 -4
  1206. app-ng-runtime/locales/angular/global/zh.js +4 -4
  1207. app-ng-runtime/locales/angular/global/zu.js +4 -4
  1208. app-ng-runtime/mobile/components/basic/default/.npmignore +2 -0
  1209. app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js +148 -143
  1210. app-ng-runtime/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +8 -7
  1211. app-ng-runtime/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +7 -6
  1212. app-ng-runtime/mobile/components/basic/default/esm2022/basic.module.mjs +2 -2
  1213. app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +47 -43
  1214. app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +7 -5
  1215. app-ng-runtime/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +6 -5
  1216. app-ng-runtime/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +49 -47
  1217. app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +2 -2
  1218. app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +31 -32
  1219. app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs +146 -140
  1220. app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs.map +1 -1
  1221. app-ng-runtime/mobile/components/basic/default/network-info-toaster/network-info-toaster.component.d.ts +2 -2
  1222. app-ng-runtime/mobile/components/basic/search/.npmignore +2 -0
  1223. app-ng-runtime/mobile/components/basic/search/bundles/index.umd.js +3 -3
  1224. app-ng-runtime/mobile/components/basic/search/esm2022/search.directive.mjs +3 -3
  1225. app-ng-runtime/mobile/components/basic/search/esm2022/search.module.mjs +2 -2
  1226. app-ng-runtime/mobile/components/basic/search/fesm2022/index.mjs +3 -3
  1227. app-ng-runtime/mobile/components/basic/search/fesm2022/index.mjs.map +1 -1
  1228. app-ng-runtime/mobile/components/containers/segmented-control/.npmignore +2 -0
  1229. app-ng-runtime/mobile/components/containers/segmented-control/bundles/index.umd.js +42 -30
  1230. app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +14 -8
  1231. app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +28 -21
  1232. app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +2 -2
  1233. app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs +41 -28
  1234. app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +1 -1
  1235. app-ng-runtime/mobile/components/containers/segmented-control/segment-content/segment-content.component.d.ts +2 -2
  1236. app-ng-runtime/mobile/components/containers/segmented-control/segmented-control.component.d.ts +2 -2
  1237. app-ng-runtime/mobile/components/data/media-list/.npmignore +2 -0
  1238. app-ng-runtime/mobile/components/data/media-list/bundles/index.umd.js +53 -48
  1239. app-ng-runtime/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +2 -2
  1240. app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.component.mjs +48 -42
  1241. app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.module.mjs +2 -2
  1242. app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs +50 -44
  1243. app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs.map +1 -1
  1244. app-ng-runtime/mobile/components/data/media-list/media-list.component.d.ts +2 -2
  1245. app-ng-runtime/mobile/components/device/barcode-scanner/.npmignore +2 -0
  1246. app-ng-runtime/mobile/components/device/barcode-scanner/barcode-scanner.component.d.ts +2 -2
  1247. app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +14 -8
  1248. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +15 -9
  1249. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +2 -2
  1250. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +16 -10
  1251. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  1252. app-ng-runtime/mobile/components/device/camera/.npmignore +2 -0
  1253. app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +15 -9
  1254. app-ng-runtime/mobile/components/device/camera/camera.component.d.ts +2 -2
  1255. app-ng-runtime/mobile/components/device/camera/esm2022/camera.component.mjs +16 -10
  1256. app-ng-runtime/mobile/components/device/camera/esm2022/camera.module.mjs +2 -2
  1257. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +17 -11
  1258. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  1259. app-ng-runtime/mobile/components/input/file-upload/.npmignore +2 -0
  1260. app-ng-runtime/mobile/components/input/file-upload/bundles/index.umd.js +3 -3
  1261. app-ng-runtime/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +3 -3
  1262. app-ng-runtime/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
  1263. app-ng-runtime/mobile/components/input/file-upload/fesm2022/index.mjs +3 -3
  1264. app-ng-runtime/mobile/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  1265. app-ng-runtime/mobile/components/page/default/.npmignore +2 -0
  1266. app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +11 -10
  1267. app-ng-runtime/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +4 -3
  1268. app-ng-runtime/mobile/components/page/default/esm2022/page.directive.mjs +5 -4
  1269. app-ng-runtime/mobile/components/page/default/esm2022/page.module.mjs +2 -2
  1270. app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs +8 -6
  1271. app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
  1272. app-ng-runtime/mobile/components/page/left-panel/.npmignore +2 -0
  1273. app-ng-runtime/mobile/components/page/left-panel/bundles/index.umd.js +3 -3
  1274. app-ng-runtime/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +3 -3
  1275. app-ng-runtime/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
  1276. app-ng-runtime/mobile/components/page/left-panel/fesm2022/index.mjs +3 -3
  1277. app-ng-runtime/mobile/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  1278. app-ng-runtime/mobile/components/page/mobile-navbar/.npmignore +2 -0
  1279. app-ng-runtime/mobile/components/page/mobile-navbar/bundles/index.umd.js +40 -35
  1280. app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +41 -36
  1281. app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +2 -2
  1282. app-ng-runtime/mobile/components/page/mobile-navbar/fesm2022/index.mjs +41 -36
  1283. app-ng-runtime/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +1 -1
  1284. app-ng-runtime/mobile/components/page/mobile-navbar/mobile-navbar.component.d.ts +2 -2
  1285. app-ng-runtime/mobile/components/page/tab-bar/.npmignore +2 -0
  1286. app-ng-runtime/mobile/components/page/tab-bar/bundles/index.umd.js +52 -46
  1287. app-ng-runtime/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +2 -2
  1288. app-ng-runtime/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +50 -43
  1289. app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs +51 -44
  1290. app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs.map +1 -1
  1291. app-ng-runtime/mobile/components/page/tab-bar/tabbar.component.d.ts +2 -2
  1292. app-ng-runtime/mobile/core/.npmignore +2 -0
  1293. app-ng-runtime/mobile/core/bundles/index.umd.js +43 -43
  1294. app-ng-runtime/mobile/core/esm2022/core.module.mjs +3 -3
  1295. app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +1 -1
  1296. app-ng-runtime/mobile/core/esm2022/services/device-file-cache.service.mjs +3 -3
  1297. app-ng-runtime/mobile/core/esm2022/services/device-file-download.service.mjs +7 -6
  1298. app-ng-runtime/mobile/core/esm2022/services/device-file-opener.service.mjs +5 -4
  1299. app-ng-runtime/mobile/core/esm2022/services/device-file-upload.service.mjs +6 -5
  1300. app-ng-runtime/mobile/core/esm2022/services/device-file.service.mjs +8 -7
  1301. app-ng-runtime/mobile/core/esm2022/services/device.service.mjs +5 -4
  1302. app-ng-runtime/mobile/core/esm2022/services/ext-app-message.service.mjs +7 -6
  1303. app-ng-runtime/mobile/core/esm2022/services/network.service.mjs +11 -10
  1304. app-ng-runtime/mobile/core/fesm2022/index.mjs +40 -39
  1305. app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
  1306. app-ng-runtime/mobile/core/services/ext-app-message.service.d.ts +1 -1
  1307. app-ng-runtime/mobile/core/services/network.service.d.ts +7 -1
  1308. app-ng-runtime/mobile/offline/.npmignore +2 -0
  1309. app-ng-runtime/mobile/offline/bundles/index.umd.js +176 -159
  1310. app-ng-runtime/mobile/offline/esm2022/models/local-db-store.mjs +23 -21
  1311. app-ng-runtime/mobile/offline/esm2022/offline.module.mjs +3 -3
  1312. app-ng-runtime/mobile/offline/esm2022/services/change-log.service.mjs +9 -8
  1313. app-ng-runtime/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +39 -37
  1314. app-ng-runtime/mobile/offline/esm2022/services/local-db-management.service.mjs +56 -47
  1315. app-ng-runtime/mobile/offline/esm2022/services/local-db.service.mjs +7 -6
  1316. app-ng-runtime/mobile/offline/esm2022/services/local-key-value.service.mjs +2 -2
  1317. app-ng-runtime/mobile/offline/esm2022/services/push.service.mjs +3 -3
  1318. app-ng-runtime/mobile/offline/esm2022/services/workers/error-blocker.mjs +4 -3
  1319. app-ng-runtime/mobile/offline/esm2022/services/workers/file-handler.mjs +18 -13
  1320. app-ng-runtime/mobile/offline/esm2022/services/workers/id-resolver.mjs +3 -3
  1321. app-ng-runtime/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +9 -5
  1322. app-ng-runtime/mobile/offline/esm2022/utils/file-upload.utils.mjs +1 -1
  1323. app-ng-runtime/mobile/offline/esm2022/utils/live-variable.utils.mjs +12 -11
  1324. app-ng-runtime/mobile/offline/esm2022/utils/query-executor.utils.mjs +5 -4
  1325. app-ng-runtime/mobile/offline/esm2022/utils/security.utils.mjs +3 -2
  1326. app-ng-runtime/mobile/offline/esm2022/utils/utils.mjs +1 -1
  1327. app-ng-runtime/mobile/offline/fesm2022/index.mjs +171 -153
  1328. app-ng-runtime/mobile/offline/fesm2022/index.mjs.map +1 -1
  1329. app-ng-runtime/mobile/placeholder/runtime/.npmignore +2 -0
  1330. app-ng-runtime/mobile/placeholder/runtime/bundles/index.umd.js +3 -2
  1331. app-ng-runtime/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +3 -2
  1332. app-ng-runtime/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +2 -2
  1333. app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs +3 -2
  1334. app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs.map +1 -1
  1335. app-ng-runtime/mobile/placeholder/runtime-dynamic/.npmignore +2 -0
  1336. app-ng-runtime/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +1 -1
  1337. app-ng-runtime/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
  1338. app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +1 -1
  1339. app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +1 -1
  1340. app-ng-runtime/mobile/runtime/.npmignore +2 -0
  1341. app-ng-runtime/mobile/runtime/bundles/index.umd.js +21 -17
  1342. app-ng-runtime/mobile/runtime/esm2022/components/app-ext.component.mjs +4 -3
  1343. app-ng-runtime/mobile/runtime/esm2022/mobile-runtime.module.mjs +5 -4
  1344. app-ng-runtime/mobile/runtime/esm2022/services/cookie.service.mjs +7 -3
  1345. app-ng-runtime/mobile/runtime/esm2022/services/http-interceptor.service.mjs +6 -5
  1346. app-ng-runtime/mobile/runtime/esm2022/services/webprocess.service.mjs +3 -3
  1347. app-ng-runtime/mobile/runtime/fesm2022/index.mjs +18 -13
  1348. app-ng-runtime/mobile/runtime/fesm2022/index.mjs.map +1 -1
  1349. app-ng-runtime/mobile/runtime-dynamic/.npmignore +2 -0
  1350. app-ng-runtime/mobile/runtime-dynamic/bundles/index.umd.js +5 -5
  1351. app-ng-runtime/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
  1352. app-ng-runtime/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +5 -5
  1353. app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs +5 -5
  1354. app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
  1355. app-ng-runtime/mobile/variables/.npmignore +2 -0
  1356. app-ng-runtime/mobile/variables/bundles/index.umd.js +28 -21
  1357. app-ng-runtime/mobile/variables/esm2022/services/camera-service.mjs +5 -5
  1358. app-ng-runtime/mobile/variables/esm2022/services/contacts-service.mjs +1 -1
  1359. app-ng-runtime/mobile/variables/esm2022/services/datasync-service.mjs +10 -9
  1360. app-ng-runtime/mobile/variables/esm2022/services/device-service/device-service.mjs +1 -1
  1361. app-ng-runtime/mobile/variables/esm2022/services/device-service/location-service.mjs +1 -1
  1362. app-ng-runtime/mobile/variables/esm2022/services/file-service.mjs +11 -3
  1363. app-ng-runtime/mobile/variables/esm2022/services/scan-service.mjs +1 -1
  1364. app-ng-runtime/mobile/variables/esm2022/variables.module.mjs +3 -3
  1365. app-ng-runtime/mobile/variables/fesm2022/index.mjs +24 -16
  1366. app-ng-runtime/mobile/variables/fesm2022/index.mjs.map +1 -1
  1367. app-ng-runtime/oAuth/.npmignore +2 -0
  1368. app-ng-runtime/oAuth/bundles/index.umd.js +15 -15
  1369. app-ng-runtime/oAuth/esm2022/oAuth.module.mjs +2 -2
  1370. app-ng-runtime/oAuth/esm2022/oAuth.service.mjs +6 -5
  1371. app-ng-runtime/oAuth/esm2022/oAuth.utils.mjs +8 -7
  1372. app-ng-runtime/oAuth/fesm2022/index.mjs +12 -11
  1373. app-ng-runtime/oAuth/fesm2022/index.mjs.map +1 -1
  1374. app-ng-runtime/package.json +1 -1
  1375. app-ng-runtime/runtime/base/.npmignore +2 -0
  1376. app-ng-runtime/runtime/base/bundles/index.umd.js +267 -251
  1377. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +3 -1
  1378. app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +3 -3
  1379. app-ng-runtime/runtime/base/directives/accessroles.directive.d.ts +4 -3
  1380. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +34 -30
  1381. app-ng-runtime/runtime/base/esm2022/components/app-spinner.component.mjs +9 -8
  1382. app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +9 -9
  1383. app-ng-runtime/runtime/base/esm2022/components/base-layout.component.mjs +5 -4
  1384. app-ng-runtime/runtime/base/esm2022/components/base-page.component.mjs +16 -15
  1385. app-ng-runtime/runtime/base/esm2022/components/base-partial.component.mjs +15 -14
  1386. app-ng-runtime/runtime/base/esm2022/components/base-prefab.component.mjs +17 -16
  1387. app-ng-runtime/runtime/base/esm2022/components/base-spa-page.component.mjs +16 -15
  1388. app-ng-runtime/runtime/base/esm2022/components/custom-toaster.component.mjs +17 -15
  1389. app-ng-runtime/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +4 -3
  1390. app-ng-runtime/runtime/base/esm2022/components/prefab-preview.component.mjs +4 -3
  1391. app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +24 -16
  1392. app-ng-runtime/runtime/base/esm2022/directives/prefab.directive.mjs +4 -4
  1393. app-ng-runtime/runtime/base/esm2022/guards/auth.guard.mjs +3 -3
  1394. app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +3 -3
  1395. app-ng-runtime/runtime/base/esm2022/guards/page-not-found.guard.mjs +3 -3
  1396. app-ng-runtime/runtime/base/esm2022/guards/role.guard.mjs +5 -4
  1397. app-ng-runtime/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +4 -4
  1398. app-ng-runtime/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +5 -5
  1399. app-ng-runtime/runtime/base/esm2022/resolves/app-extension.resolve.mjs +3 -3
  1400. app-ng-runtime/runtime/base/esm2022/resolves/app-js.resolve.mjs +3 -3
  1401. app-ng-runtime/runtime/base/esm2022/resolves/app-variables.resolve.mjs +3 -3
  1402. app-ng-runtime/runtime/base/esm2022/resolves/i18n.resolve.mjs +3 -3
  1403. app-ng-runtime/runtime/base/esm2022/resolves/metadata.resolve.mjs +3 -3
  1404. app-ng-runtime/runtime/base/esm2022/resolves/security-config.resolve.mjs +3 -3
  1405. app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +3 -3
  1406. app-ng-runtime/runtime/base/esm2022/services/app-defaults.service.mjs +3 -3
  1407. app-ng-runtime/runtime/base/esm2022/services/app.manager.service.mjs +19 -16
  1408. app-ng-runtime/runtime/base/esm2022/services/app.service.mjs +9 -8
  1409. app-ng-runtime/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +5 -4
  1410. app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +6 -5
  1411. app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +15 -13
  1412. app-ng-runtime/runtime/base/esm2022/services/navigation.service.mjs +10 -9
  1413. app-ng-runtime/runtime/base/esm2022/services/pipe-provider.service.mjs +3 -3
  1414. app-ng-runtime/runtime/base/esm2022/services/pipe.service.mjs +3 -3
  1415. app-ng-runtime/runtime/base/esm2022/services/prefab-manager.service.mjs +5 -4
  1416. app-ng-runtime/runtime/base/esm2022/services/spinner.service.mjs +9 -8
  1417. app-ng-runtime/runtime/base/esm2022/services/toaster.service.mjs +8 -7
  1418. app-ng-runtime/runtime/base/esm2022/util/fragment-monitor.mjs +3 -3
  1419. app-ng-runtime/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +7 -8
  1420. app-ng-runtime/runtime/base/fesm2022/index.mjs +277 -260
  1421. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  1422. app-ng-runtime/runtime/base/overrides/wm_dom_renderer.d.ts +2 -2
  1423. app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
  1424. app-ng-runtime/runtime/dynamic/.npmignore +2 -0
  1425. app-ng-runtime/runtime/dynamic/bundles/index.umd.js +22 -21
  1426. app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +1 -1
  1427. app-ng-runtime/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +4 -3
  1428. app-ng-runtime/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +3 -3
  1429. app-ng-runtime/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +3 -3
  1430. app-ng-runtime/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +3 -3
  1431. app-ng-runtime/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +3 -3
  1432. app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +6 -5
  1433. app-ng-runtime/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +3 -3
  1434. app-ng-runtime/runtime/dynamic/esm2022/main.mjs +3 -2
  1435. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +21 -19
  1436. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  1437. app-ng-runtime/scripts/datatable/datatable.js +2 -2
  1438. app-ng-runtime/scripts/jquery-ui/ui/widgets/droppable.js +7 -7
  1439. app-ng-runtime/scripts/jquery-ui/ui/widgets/resizable.js +13 -10
  1440. app-ng-runtime/scripts/jquery-ui/ui/widgets/sortable.js +7 -7
  1441. app-ng-runtime/security/.npmignore +2 -0
  1442. app-ng-runtime/security/bundles/index.umd.js +17 -17
  1443. app-ng-runtime/security/esm2022/security.module.mjs +2 -2
  1444. app-ng-runtime/security/esm2022/security.service.mjs +14 -13
  1445. app-ng-runtime/security/fesm2022/index.mjs +14 -13
  1446. app-ng-runtime/security/fesm2022/index.mjs.map +1 -1
  1447. app-ng-runtime/security/security.service.d.ts +1 -1
  1448. app-ng-runtime/swipey/.npmignore +2 -0
  1449. app-ng-runtime/swipey/esm2022/swipe.animation.mjs +1 -1
  1450. app-ng-runtime/swipey/fesm2022/index.mjs.map +1 -1
  1451. app-ng-runtime/transpiler/.npmignore +2 -0
  1452. app-ng-runtime/transpiler/bundles/index.umd.js +10 -9
  1453. app-ng-runtime/transpiler/esm2022/build.mjs +8 -6
  1454. app-ng-runtime/transpiler/fesm2022/index.mjs +7 -5
  1455. app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
  1456. app-ng-runtime/variables/.npmignore +2 -0
  1457. app-ng-runtime/variables/bundles/index.umd.js +160 -150
  1458. app-ng-runtime/variables/esm2022/factory/variable.factory.mjs +1 -1
  1459. app-ng-runtime/variables/esm2022/manager/action/login-action.manager.mjs +15 -14
  1460. app-ng-runtime/variables/esm2022/manager/action/logout-action.manager.mjs +1 -1
  1461. app-ng-runtime/variables/esm2022/manager/action/notification-action.manager.mjs +9 -8
  1462. app-ng-runtime/variables/esm2022/manager/variable/base-variable.manager.mjs +3 -2
  1463. app-ng-runtime/variables/esm2022/manager/variable/device-variable-manager.mjs +1 -1
  1464. app-ng-runtime/variables/esm2022/manager/variable/device-variable-service.mjs +1 -1
  1465. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +11 -10
  1466. app-ng-runtime/variables/esm2022/model/action/notification-action.mjs +1 -1
  1467. app-ng-runtime/variables/esm2022/service/metadata-service/metadata.service.mjs +3 -3
  1468. app-ng-runtime/variables/esm2022/service/variables.service.mjs +9 -8
  1469. app-ng-runtime/variables/esm2022/util/action/navigation-action.utils.mjs +4 -4
  1470. app-ng-runtime/variables/esm2022/util/variable/pagination.utils.mjs +30 -23
  1471. app-ng-runtime/variables/esm2022/util/variable/service-variable.utils.mjs +29 -28
  1472. app-ng-runtime/variables/esm2022/util/variable/variables.utils.mjs +75 -70
  1473. app-ng-runtime/variables/esm2022/variables.module.mjs +2 -2
  1474. app-ng-runtime/variables/fesm2022/index.mjs +174 -163
  1475. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  1476. app-ng-runtime/variables/util/variable/service-variable.utils.d.ts +1 -1
  1477. app-ng-runtime/build-task/advanced/custom-widget-prop/custom-widget-prop.build.d.ts +0 -2
  1478. app-ng-runtime/build-task/esm2022/advanced/custom-widget-prop/custom-widget-prop.build.mjs +0 -10
  1479. app-ng-runtime/components/advanced/custom/custom-widget-container-prop/custom-widget-container-prop.directive.d.ts +0 -20
  1480. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container-prop/custom-widget-container-prop.directive.mjs +0 -70
@@ -31,10 +31,10 @@ export class TrustAsPipe {
31
31
  static { this.ɵfac = function TrustAsPipe_Factory(t) { return new (t || TrustAsPipe)(i0.ɵɵdirectiveInject(i1.DomSanitizer, 16)); }; }
32
32
  static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "trustAs", type: TrustAsPipe, pure: true }); }
33
33
  }
34
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TrustAsPipe, [{
34
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TrustAsPipe, [{
35
35
  type: Pipe,
36
36
  args: [{
37
37
  name: 'trustAs'
38
38
  }]
39
- }], function () { return [{ type: i1.DomSanitizer }]; }, null); })();
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3QtYXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcGlwZXMvdHJ1c3QtYXMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFDLFlBQVksRUFBNEQsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBS2xILE1BQU0sT0FBTyxXQUFXO0lBRXBCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQUcsQ0FBQztJQUVsRCxTQUFTLENBQUMsT0FBZSxFQUFFLE9BQWlDO1FBQ3hELElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQzNDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxRQUFRLE9BQU8sRUFBRTtZQUNiLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxlQUFlLENBQUMsSUFBSTtnQkFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlELEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxlQUFlLENBQUMsS0FBSztnQkFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9ELEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxlQUFlLENBQUMsTUFBTTtnQkFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hFLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxlQUFlLENBQUMsR0FBRztnQkFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdELEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssZUFBZSxDQUFDLFlBQVk7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4RTtJQUNMLENBQUM7NEVBekJRLFdBQVc7aUZBQVgsV0FBVzs7dUZBQVgsV0FBVztjQUh2QixJQUFJO2VBQUM7Z0JBQ0YsSUFBSSxFQUFFLFNBQVM7YUFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBTZWN1cml0eUNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlSHRtbCwgU2FmZVJlc291cmNlVXJsLCBTYWZlU2NyaXB0LCBTYWZlU3R5bGUsIFNhZmVVcmx9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3RydXN0QXMnXG59KVxuZXhwb3J0IGNsYXNzIFRydXN0QXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gICAgdHJhbnNmb3JtKGNvbnRlbnQ6IHN0cmluZywgY29udGV4dDogc3RyaW5nIHwgU2VjdXJpdHlDb250ZXh0KSB7XG4gICAgICAgIGlmIChjb250ZW50ID09PSBudWxsIHx8IGNvbnRlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoY29udGV4dCkge1xuICAgICAgICAgICAgY2FzZSAnaHRtbCc6XG4gICAgICAgICAgICBjYXNlIFNlY3VyaXR5Q29udGV4dC5IVE1MOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChjb250ZW50KTtcbiAgICAgICAgICAgIGNhc2UgJ3N0eWxlJzpcbiAgICAgICAgICAgIGNhc2UgU2VjdXJpdHlDb250ZXh0LlNUWUxFOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoY29udGVudCk7XG4gICAgICAgICAgICBjYXNlICdzY3JpcHQnOlxuICAgICAgICAgICAgY2FzZSBTZWN1cml0eUNvbnRleHQuU0NSSVBUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U2NyaXB0KGNvbnRlbnQpO1xuICAgICAgICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgICAgIGNhc2UgU2VjdXJpdHlDb250ZXh0LlVSTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChjb250ZW50KTtcbiAgICAgICAgICAgIGNhc2UgJ3Jlc291cmNlJzpcbiAgICAgICAgICAgIGNhc2UgU2VjdXJpdHlDb250ZXh0LlJFU09VUkNFX1VSTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
39
+ }], () => [{ type: i1.DomSanitizer }], null); })();
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3QtYXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcGlwZXMvdHJ1c3QtYXMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFDLFlBQVksRUFBNEQsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBS2xILE1BQU0sT0FBTyxXQUFXO0lBRXBCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQUcsQ0FBQztJQUVsRCxTQUFTLENBQUMsT0FBZSxFQUFFLE9BQWlDO1FBQ3hELElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUMsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQ0QsUUFBUSxPQUFPLEVBQUUsQ0FBQztZQUNkLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxlQUFlLENBQUMsSUFBSTtnQkFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlELEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxlQUFlLENBQUMsS0FBSztnQkFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9ELEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxlQUFlLENBQUMsTUFBTTtnQkFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hFLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxlQUFlLENBQUMsR0FBRztnQkFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdELEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssZUFBZSxDQUFDLFlBQVk7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0wsQ0FBQzs0RUF6QlEsV0FBVztpRkFBWCxXQUFXOztpRkFBWCxXQUFXO2NBSHZCLElBQUk7ZUFBQztnQkFDRixJQUFJLEVBQUUsU0FBUzthQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIFNlY3VyaXR5Q29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXIsIFNhZmVIdG1sLCBTYWZlUmVzb3VyY2VVcmwsIFNhZmVTY3JpcHQsIFNhZmVTdHlsZSwgU2FmZVVybH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAndHJ1c3RBcydcbn0pXG5leHBvcnQgY2xhc3MgVHJ1c3RBc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgICB0cmFuc2Zvcm0oY29udGVudDogc3RyaW5nLCBjb250ZXh0OiBzdHJpbmcgfCBTZWN1cml0eUNvbnRleHQpIHtcbiAgICAgICAgaWYgKGNvbnRlbnQgPT09IG51bGwgfHwgY29udGVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChjb250ZXh0KSB7XG4gICAgICAgICAgICBjYXNlICdodG1sJzpcbiAgICAgICAgICAgIGNhc2UgU2VjdXJpdHlDb250ZXh0LkhUTUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGNvbnRlbnQpO1xuICAgICAgICAgICAgY2FzZSAnc3R5bGUnOlxuICAgICAgICAgICAgY2FzZSBTZWN1cml0eUNvbnRleHQuU1RZTEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShjb250ZW50KTtcbiAgICAgICAgICAgIGNhc2UgJ3NjcmlwdCc6XG4gICAgICAgICAgICBjYXNlIFNlY3VyaXR5Q29udGV4dC5TQ1JJUFQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQoY29udGVudCk7XG4gICAgICAgICAgICBjYXNlICd1cmwnOlxuICAgICAgICAgICAgY2FzZSBTZWN1cml0eUNvbnRleHQuVVJMOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGNvbnRlbnQpO1xuICAgICAgICAgICAgY2FzZSAncmVzb3VyY2UnOlxuICAgICAgICAgICAgY2FzZSBTZWN1cml0eUNvbnRleHQuUkVTT1VSQ0VfVVJMOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoY29udGVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,9 +1,10 @@
1
+ import { isFunction } from "lodash-es";
1
2
  export class WmPipe {
2
3
  constructor(pipeName, customPipeManager) {
3
4
  this.pipeName = pipeName;
4
5
  this.customPipeManager = customPipeManager;
5
6
  this.pipeRef = this.customPipeManager ? this.customPipeManager.getCustomPipe(pipeName) : null;
6
- this.isCustomPipe = this.pipeRef && _.isFunction(this.pipeRef.formatter);
7
+ this.isCustomPipe = this.pipeRef && isFunction(this.pipeRef.formatter);
7
8
  }
8
9
  customFormatter(data, args) {
9
10
  try {
@@ -14,4 +15,4 @@ export class WmPipe {
14
15
  }
15
16
  }
16
17
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcGlwZXMvd20tcGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQU8sTUFBTTtJQUdmLFlBQW9CLFFBQVEsRUFBWSxpQkFBb0M7UUFBeEQsYUFBUSxHQUFSLFFBQVEsQ0FBQTtRQUFZLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDeEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM5RixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUk7UUFDdEIsSUFBSTtZQUNBLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUMxQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ3VzdG9tUGlwZU1hbmFnZXIgfSBmcm9tICdAd20vY29yZSc7XG5kZWNsYXJlIGNvbnN0IF87XG5cbmV4cG9ydCBjbGFzcyBXbVBpcGUge1xuICAgIHByb3RlY3RlZCBwaXBlUmVmO1xuICAgIHByb3RlY3RlZCBpc0N1c3RvbVBpcGU7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwaXBlTmFtZSwgcHJvdGVjdGVkIGN1c3RvbVBpcGVNYW5hZ2VyOiBDdXN0b21QaXBlTWFuYWdlcikge1xuICAgICAgICB0aGlzLnBpcGVSZWYgPSB0aGlzLmN1c3RvbVBpcGVNYW5hZ2VyID8gdGhpcy5jdXN0b21QaXBlTWFuYWdlci5nZXRDdXN0b21QaXBlKHBpcGVOYW1lKSA6IG51bGw7XG4gICAgICAgIHRoaXMuaXNDdXN0b21QaXBlID0gdGhpcy5waXBlUmVmICYmIF8uaXNGdW5jdGlvbih0aGlzLnBpcGVSZWYuZm9ybWF0dGVyKTtcbiAgICB9XG5cbiAgICBjdXN0b21Gb3JtYXR0ZXIoZGF0YSwgYXJncykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGlwZVJlZi5mb3JtYXR0ZXIoLi4uYXJncyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcGlwZXMvd20tcGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE1BQU0sT0FBTyxNQUFNO0lBR2YsWUFBb0IsUUFBUSxFQUFZLGlCQUFvQztRQUF4RCxhQUFRLEdBQVIsUUFBUSxDQUFBO1FBQVksc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUN4RSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzlGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJO1FBQ3RCLElBQUksQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEN1c3RvbVBpcGVNYW5hZ2VyIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtpc0Z1bmN0aW9ufSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBjbGFzcyBXbVBpcGUge1xuICAgIHByb3RlY3RlZCBwaXBlUmVmO1xuICAgIHByb3RlY3RlZCBpc0N1c3RvbVBpcGU7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwaXBlTmFtZSwgcHJvdGVjdGVkIGN1c3RvbVBpcGVNYW5hZ2VyOiBDdXN0b21QaXBlTWFuYWdlcikge1xuICAgICAgICB0aGlzLnBpcGVSZWYgPSB0aGlzLmN1c3RvbVBpcGVNYW5hZ2VyID8gdGhpcy5jdXN0b21QaXBlTWFuYWdlci5nZXRDdXN0b21QaXBlKHBpcGVOYW1lKSA6IG51bGw7XG4gICAgICAgIHRoaXMuaXNDdXN0b21QaXBlID0gdGhpcy5waXBlUmVmICYmIGlzRnVuY3Rpb24odGhpcy5waXBlUmVmLmZvcm1hdHRlcik7XG4gICAgfVxuXG4gICAgY3VzdG9tRm9ybWF0dGVyKGRhdGEsIGFyZ3MpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBpcGVSZWYuZm9ybWF0dGVyKC4uLmFyZ3MpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -20,6 +20,7 @@ export * from './widgets/framework/constants';
20
20
  export { updateDeviceView } from './widgets/framework/deviceview';
21
21
  export * from './widgets/framework/styler';
22
22
  export * from './widgets/framework/types';
23
+ export * from './widgets/framework/widget-id-generator';
23
24
  export { getWidgetPropsByType, register, registerFormWidget, PROP_TYPE, PROP_STRING, PROP_NUMBER, PROP_BOOLEAN, PROP_ANY } from './widgets/framework/widget-props';
24
25
  export * from './widgets/common/dialog/dialog.service';
25
26
  export { ToDatePipe, ToNumberPipe, ToCurrencyPipe, PrefixPipe, SuffixPipe, CustomPipe, TimeFromNowPipe, NumberToStringPipe, StringToNumberPipe, FilterPipe, FileSizePipe, FileIconClassPipe, StateClassPipe, FileExtensionFromMimePipe, TrailingZeroDecimalPipe } from './pipes/custom-pipes';
@@ -32,4 +33,4 @@ export * from './widgets/common/partial-param/partial-param.directive';
32
33
  export * from './widgets/common/smooth-scroll/smooth-scroll.directive';
33
34
  export * from './widgets/common/base/text-content.directive';
34
35
  export * from './directives/show-in-device.directive';
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLE9BQU8sRUFDSCxlQUFlLEVBQ2YsU0FBUyxFQUNULGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osV0FBVyxFQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILFNBQVMsRUFDVCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQiwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2xCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsZUFBZSxFQUNmLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIsU0FBUyxFQUNULGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsZ0NBQWdDLEVBQ2hDLGVBQWUsRUFDZixTQUFTLEVBQ1QsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osNEJBQTRCLEVBQy9CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNILGFBQWEsRUFDaEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELE9BQU8sRUFDSCx3QkFBd0IsRUFFM0IsTUFBTSxtREFBbUQsQ0FBQztBQUMzRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsT0FBTyxFQUNILGdCQUFnQixFQUNuQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFFBQVEsRUFDWCxNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osY0FBYyxFQUNkLFVBQVUsRUFDVixVQUFVLEVBQ1YsVUFBVSxFQUNWLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCx5QkFBeUIsRUFDekIsdUJBQXVCLEVBQzFCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaXZlX09wZXJhdGlvbnMgfSBmcm9tICcuL3V0aWxzL2RhdGEtdXRpbHMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMubW9kdWxlJztcbmV4cG9ydCB7XG4gICAgTGl2ZV9PcGVyYXRpb25zLFxuICAgIEFMTEZJRUxEUyxcbiAgICBMSVZFX0NPTlNUQU5UUyxcbiAgICBwZXJmb3JtRGF0YU9wZXJhdGlvbixcbiAgICByZWZyZXNoRGF0YVNvdXJjZSxcbiAgICBmZXRjaFJlbGF0ZWRGaWVsZERhdGEsXG4gICAgaW50ZXJwb2xhdGVCaW5kRXhwcmVzc2lvbnMsXG4gICAgZ2V0RGlzdGluY3RGaWVsZFByb3BlcnRpZXMsXG4gICAgZ2V0RGlzdGluY3RWYWx1ZXMsXG4gICAgZmV0Y2hEaXN0aW5jdFZhbHVlcyxcbiAgICBnZXREaXN0aW5jdFZhbHVlc0ZvckZpZWxkLFxuICAgIGdldFJhbmdlRmllbGRWYWx1ZSxcbiAgICBnZXRSYW5nZU1hdGNoTW9kZSxcbiAgICBnZXRFbmFibGVFbXB0eUZpbHRlcixcbiAgICBnZXRFbXB0eU1hdGNoTW9kZSxcbiAgICBjcmVhdGVBcnJheUZyb20sXG4gICAgYXBwbHlGaWx0ZXJPbkZpZWxkLFxuICAgIHRyYW5zZm9ybURhdGFcbn0gZnJvbSAnLi91dGlscy9kYXRhLXV0aWxzJztcbmV4cG9ydCB7XG4gICAgZ2V0T3JkZXJlZERhdGFzZXQsXG4gICAgdHJhbnNmb3JtRGF0YVdpdGhLZXlzLFxuICAgIGV4dHJhY3REYXRhQXNBcnJheSxcbiAgICBjb252ZXJ0RGF0YVRvT2JqZWN0LFxuICAgIHRyYW5zZm9ybUZvcm1EYXRhLFxuICAgIGdldFVuaXFPYmpzQnlEYXRhRmllbGQsXG4gICAgc2V0SXRlbUJ5Q29tcGFyZSxcbiAgICBncm91cERhdGEsXG4gICAgZmlsdGVyRGF0ZSxcbiAgICB0b2dnbGVBbGxIZWFkZXJzLFxuICAgIGhhbmRsZUhlYWRlckNsaWNrLFxuICAgIGNvbmZpZ3VyZURuRCxcbiAgICBEYXRhU2V0SXRlbVxufSBmcm9tICcuL3V0aWxzL2Zvcm0tdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBFRElUX01PREUsXG4gICAgc2V0SGVhZGVyQ29uZmlnLFxuICAgIHNldEhlYWRlckNvbmZpZ0ZvclRhYmxlLFxuICAgIGdldFJvd09wZXJhdGlvbnNDb2x1bW4sXG4gICAgZ2V0RmllbGRMYXlvdXRDb25maWcsXG4gICAgZ2V0RGVmYXVsdFZpZXdNb2RlV2lkZ2V0LFxuICAgIHBhcnNlVmFsdWVCeVR5cGUsXG4gICAgZ2V0RmllbGRUeXBlV2lkZ2V0VHlwZXNNYXAsXG4gICAgZ2V0RGF0YVRhYmxlRmlsdGVyV2lkZ2V0LFxuICAgIGdldEVkaXRNb2RlV2lkZ2V0LFxuICAgIGdldERlZmF1bHRWYWx1ZVxufSBmcm9tICcuL3V0aWxzL2xpdmUtdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBnZXRPYmpWYWx1ZUJ5S2V5LFxuICAgIGdldEV2YWx1YXRlZERhdGEsXG4gICAgaXNBY3RpdmVOYXZJdGVtLFxuICAgIGhhc0xpbmtUb0N1cnJlbnRQYWdlLFxuICAgIGdldE9yZGVyQnlFeHByLFxuICAgIGlzRGF0YVNldFdpZGdldCxcbiAgICBnZXRJbWFnZVVybCxcbiAgICBnZXRCYWNrR3JvdW5kSW1hZ2VVcmwsXG4gICAgcHJvdmlkZUFzLFxuICAgIHByb3ZpZGVBc1dpZGdldFJlZixcbiAgICBwcm92aWRlQXNEaWFsb2dSZWYsXG4gICAgdW5zdXBwb3J0ZWRTdGF0ZVBlcnNpc3RlbmNlVHlwZXMsXG4gICAgTkFWSUdBVElPTl9UWVBFLFxuICAgIElOUFVUTU9ERSxcbiAgICBBVVRPQ0xPU0VfVFlQRSxcbiAgICBnZXRXYXRjaElkZW50aWZpZXIsXG4gICAgZ2V0TWF0Y2hNb2RlVHlwZXNNYXAsXG4gICAgZ2V0TWF0Y2hNb2RlTXNncyxcbiAgICBnZXRDb25kaXRpb25hbENsYXNzZXMsXG4gICAgcHJlcGFyZUZpZWxkRGVmcyAsXG4gICAgZ2V0Q29udGFpbmVyVGFyZ2V0Q2xhc3MsXG4gICAgZXh0cmFjdERhdGFTb3VyY2VOYW1lLFxuICAgIHNldEZvY3VzVHJhcCxcbiAgICBnZXRLZXlib2FyZEZvY3VzYWJsZUVsZW1lbnRzXG59IGZyb20gJy4vdXRpbHMvd2lkZ2V0LXV0aWxzJztcbmV4cG9ydCB7XG4gICAgQmFzZUNvbXBvbmVudFxufSBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvYmFzZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2Jhc2UtY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQge1xuICAgIERhdGFzZXRBd2FyZU5hdkNvbXBvbmVudCxcbiAgICBOYXZOb2RlXG59IGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9kYXRhc2V0LWF3YXJlLW5hdi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL3BhcnRpYWwtY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvY3VzdG9tLXdpZGdldC1jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9iYXNlLWZpZWxkLXZhbGlkYXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vaXRlbS10ZW1wbGF0ZS9pdGVtLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL3JlcGVhdC10ZW1wbGF0ZS9yZXBlYXQtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9zdHlsYWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9tZXNzYWdlL21lc3NhZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcHVsbC10by1yZWZyZXNoL3B1bGwtdG8tcmVmcmVzaCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL3BhcnRpYWwvcGFydGlhbC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9yZWRyYXcvcmVkcmF3YWJsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay9jb25zdGFudHMnO1xuZXhwb3J0IHtcbiAgICB1cGRhdGVEZXZpY2VWaWV3XG59IGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvZGV2aWNldmlldyc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL3N0eWxlcic7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL3R5cGVzJztcbmV4cG9ydCB7XG4gICAgZ2V0V2lkZ2V0UHJvcHNCeVR5cGUsXG4gICAgcmVnaXN0ZXIsXG4gICAgcmVnaXN0ZXJGb3JtV2lkZ2V0LFxuICAgIFBST1BfVFlQRSxcbiAgICBQUk9QX1NUUklORyxcbiAgICBQUk9QX05VTUJFUixcbiAgICBQUk9QX0JPT0xFQU4sXG4gICAgUFJPUF9BTllcbn0gZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay93aWRnZXQtcHJvcHMnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xuZXhwb3J0IHtcbiAgICBUb0RhdGVQaXBlLFxuICAgIFRvTnVtYmVyUGlwZSxcbiAgICBUb0N1cnJlbmN5UGlwZSxcbiAgICBQcmVmaXhQaXBlLFxuICAgIFN1ZmZpeFBpcGUsXG4gICAgQ3VzdG9tUGlwZSxcbiAgICBUaW1lRnJvbU5vd1BpcGUsXG4gICAgTnVtYmVyVG9TdHJpbmdQaXBlLFxuICAgIFN0cmluZ1RvTnVtYmVyUGlwZSxcbiAgICBGaWx0ZXJQaXBlLFxuICAgIEZpbGVTaXplUGlwZSxcbiAgICBGaWxlSWNvbkNsYXNzUGlwZSxcbiAgICBTdGF0ZUNsYXNzUGlwZSxcbiAgICBGaWxlRXh0ZW5zaW9uRnJvbU1pbWVQaXBlLFxuICAgIFRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlXG59IGZyb20gJy4vcGlwZXMvY3VzdG9tLXBpcGVzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvdHJ1c3QtYXMucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3Nhbml0aXplLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9pbWFnZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vY29udGFpbmVyL2NvbnRhaW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9sYXp5LWxvYWQvbGF6eS1sb2FkLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL3BhcnRpYWwtcGFyYW0vcGFydGlhbC1wYXJhbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9zbW9vdGgtc2Nyb2xsL3Ntb290aC1zY3JvbGwuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS90ZXh0LWNvbnRlbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9zaG93LWluLWRldmljZS5kaXJlY3RpdmUnO1xuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLE9BQU8sRUFDSCxlQUFlLEVBQ2YsU0FBUyxFQUNULGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osV0FBVyxFQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILFNBQVMsRUFDVCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQiwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2xCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsZUFBZSxFQUNmLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIsU0FBUyxFQUNULGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsZ0NBQWdDLEVBQ2hDLGVBQWUsRUFDZixTQUFTLEVBQ1QsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osNEJBQTRCLEVBQy9CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNILGFBQWEsRUFDaEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELE9BQU8sRUFDSCx3QkFBd0IsRUFFM0IsTUFBTSxtREFBbUQsQ0FBQztBQUMzRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsT0FBTyxFQUNILGdCQUFnQixFQUNuQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osUUFBUSxFQUNYLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2QsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEVBQ1YsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFlBQVksRUFDWixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpdmVfT3BlcmF0aW9ucyB9IGZyb20gJy4vdXRpbHMvZGF0YS11dGlscyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy5tb2R1bGUnO1xuZXhwb3J0IHtcbiAgICBMaXZlX09wZXJhdGlvbnMsXG4gICAgQUxMRklFTERTLFxuICAgIExJVkVfQ09OU1RBTlRTLFxuICAgIHBlcmZvcm1EYXRhT3BlcmF0aW9uLFxuICAgIHJlZnJlc2hEYXRhU291cmNlLFxuICAgIGZldGNoUmVsYXRlZEZpZWxkRGF0YSxcbiAgICBpbnRlcnBvbGF0ZUJpbmRFeHByZXNzaW9ucyxcbiAgICBnZXREaXN0aW5jdEZpZWxkUHJvcGVydGllcyxcbiAgICBnZXREaXN0aW5jdFZhbHVlcyxcbiAgICBmZXRjaERpc3RpbmN0VmFsdWVzLFxuICAgIGdldERpc3RpbmN0VmFsdWVzRm9yRmllbGQsXG4gICAgZ2V0UmFuZ2VGaWVsZFZhbHVlLFxuICAgIGdldFJhbmdlTWF0Y2hNb2RlLFxuICAgIGdldEVuYWJsZUVtcHR5RmlsdGVyLFxuICAgIGdldEVtcHR5TWF0Y2hNb2RlLFxuICAgIGNyZWF0ZUFycmF5RnJvbSxcbiAgICBhcHBseUZpbHRlck9uRmllbGQsXG4gICAgdHJhbnNmb3JtRGF0YVxufSBmcm9tICcuL3V0aWxzL2RhdGEtdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBnZXRPcmRlcmVkRGF0YXNldCxcbiAgICB0cmFuc2Zvcm1EYXRhV2l0aEtleXMsXG4gICAgZXh0cmFjdERhdGFBc0FycmF5LFxuICAgIGNvbnZlcnREYXRhVG9PYmplY3QsXG4gICAgdHJhbnNmb3JtRm9ybURhdGEsXG4gICAgZ2V0VW5pcU9ianNCeURhdGFGaWVsZCxcbiAgICBzZXRJdGVtQnlDb21wYXJlLFxuICAgIGdyb3VwRGF0YSxcbiAgICBmaWx0ZXJEYXRlLFxuICAgIHRvZ2dsZUFsbEhlYWRlcnMsXG4gICAgaGFuZGxlSGVhZGVyQ2xpY2ssXG4gICAgY29uZmlndXJlRG5ELFxuICAgIERhdGFTZXRJdGVtXG59IGZyb20gJy4vdXRpbHMvZm9ybS11dGlscyc7XG5leHBvcnQge1xuICAgIEVESVRfTU9ERSxcbiAgICBzZXRIZWFkZXJDb25maWcsXG4gICAgc2V0SGVhZGVyQ29uZmlnRm9yVGFibGUsXG4gICAgZ2V0Um93T3BlcmF0aW9uc0NvbHVtbixcbiAgICBnZXRGaWVsZExheW91dENvbmZpZyxcbiAgICBnZXREZWZhdWx0Vmlld01vZGVXaWRnZXQsXG4gICAgcGFyc2VWYWx1ZUJ5VHlwZSxcbiAgICBnZXRGaWVsZFR5cGVXaWRnZXRUeXBlc01hcCxcbiAgICBnZXREYXRhVGFibGVGaWx0ZXJXaWRnZXQsXG4gICAgZ2V0RWRpdE1vZGVXaWRnZXQsXG4gICAgZ2V0RGVmYXVsdFZhbHVlXG59IGZyb20gJy4vdXRpbHMvbGl2ZS11dGlscyc7XG5leHBvcnQge1xuICAgIGdldE9ialZhbHVlQnlLZXksXG4gICAgZ2V0RXZhbHVhdGVkRGF0YSxcbiAgICBpc0FjdGl2ZU5hdkl0ZW0sXG4gICAgaGFzTGlua1RvQ3VycmVudFBhZ2UsXG4gICAgZ2V0T3JkZXJCeUV4cHIsXG4gICAgaXNEYXRhU2V0V2lkZ2V0LFxuICAgIGdldEltYWdlVXJsLFxuICAgIGdldEJhY2tHcm91bmRJbWFnZVVybCxcbiAgICBwcm92aWRlQXMsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIHByb3ZpZGVBc0RpYWxvZ1JlZixcbiAgICB1bnN1cHBvcnRlZFN0YXRlUGVyc2lzdGVuY2VUeXBlcyxcbiAgICBOQVZJR0FUSU9OX1RZUEUsXG4gICAgSU5QVVRNT0RFLFxuICAgIEFVVE9DTE9TRV9UWVBFLFxuICAgIGdldFdhdGNoSWRlbnRpZmllcixcbiAgICBnZXRNYXRjaE1vZGVUeXBlc01hcCxcbiAgICBnZXRNYXRjaE1vZGVNc2dzLFxuICAgIGdldENvbmRpdGlvbmFsQ2xhc3NlcyxcbiAgICBwcmVwYXJlRmllbGREZWZzICxcbiAgICBnZXRDb250YWluZXJUYXJnZXRDbGFzcyxcbiAgICBleHRyYWN0RGF0YVNvdXJjZU5hbWUsXG4gICAgc2V0Rm9jdXNUcmFwLFxuICAgIGdldEtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHNcbn0gZnJvbSAnLi91dGlscy93aWRnZXQtdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50XG59IGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9iYXNlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvYmFzZS1jb250YWluZXIuY29tcG9uZW50JztcbmV4cG9ydCB7XG4gICAgRGF0YXNldEF3YXJlTmF2Q29tcG9uZW50LFxuICAgIE5hdk5vZGVcbn0gZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2RhdGFzZXQtYXdhcmUtbmF2LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvcGFydGlhbC1jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9jdXN0b20td2lkZ2V0LWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2Jhc2UtZmllbGQtdmFsaWRhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9pdGVtLXRlbXBsYXRlL2l0ZW0tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcmVwZWF0LXRlbXBsYXRlL3JlcGVhdC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL3N0eWxhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL21lc3NhZ2UvbWVzc2FnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9wdWxsLXRvLXJlZnJlc2gvcHVsbC10by1yZWZyZXNoJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcGFydGlhbC9wYXJ0aWFsLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL3JlZHJhdy9yZWRyYXdhYmxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL2NvbnN0YW50cyc7XG5leHBvcnQge1xuICAgIHVwZGF0ZURldmljZVZpZXdcbn0gZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay9kZXZpY2V2aWV3JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvc3R5bGVyJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay93aWRnZXQtaWQtZ2VuZXJhdG9yJztcbmV4cG9ydCB7XG4gICAgZ2V0V2lkZ2V0UHJvcHNCeVR5cGUsXG4gICAgcmVnaXN0ZXIsXG4gICAgcmVnaXN0ZXJGb3JtV2lkZ2V0LFxuICAgIFBST1BfVFlQRSxcbiAgICBQUk9QX1NUUklORyxcbiAgICBQUk9QX05VTUJFUixcbiAgICBQUk9QX0JPT0xFQU4sXG4gICAgUFJPUF9BTllcbn0gZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay93aWRnZXQtcHJvcHMnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xuZXhwb3J0IHtcbiAgICBUb0RhdGVQaXBlLFxuICAgIFRvTnVtYmVyUGlwZSxcbiAgICBUb0N1cnJlbmN5UGlwZSxcbiAgICBQcmVmaXhQaXBlLFxuICAgIFN1ZmZpeFBpcGUsXG4gICAgQ3VzdG9tUGlwZSxcbiAgICBUaW1lRnJvbU5vd1BpcGUsXG4gICAgTnVtYmVyVG9TdHJpbmdQaXBlLFxuICAgIFN0cmluZ1RvTnVtYmVyUGlwZSxcbiAgICBGaWx0ZXJQaXBlLFxuICAgIEZpbGVTaXplUGlwZSxcbiAgICBGaWxlSWNvbkNsYXNzUGlwZSxcbiAgICBTdGF0ZUNsYXNzUGlwZSxcbiAgICBGaWxlRXh0ZW5zaW9uRnJvbU1pbWVQaXBlLFxuICAgIFRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlXG59IGZyb20gJy4vcGlwZXMvY3VzdG9tLXBpcGVzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvdHJ1c3QtYXMucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3Nhbml0aXplLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9pbWFnZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vY29udGFpbmVyL2NvbnRhaW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9sYXp5LWxvYWQvbGF6eS1sb2FkLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL3BhcnRpYWwtcGFyYW0vcGFydGlhbC1wYXJhbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9zbW9vdGgtc2Nyb2xsL3Ntb290aC1zY3JvbGwuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS90ZXh0LWNvbnRlbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9zaG93LWluLWRldmljZS5kaXJlY3RpdmUnO1xuIl19
@@ -1,6 +1,7 @@
1
1
  import { DataSource, debounce, processFilterExpBindNode } from '@wm/core';
2
2
  import { FormWidgetType, isDefined, MatchMode } from '@wm/core';
3
3
  import { isDataSetWidget } from './widget-utils';
4
+ import { each, filter, forEach, get, head, includes, intersection, isArray, isEmpty, isFunction, isNull, isObject, isString, isUndefined, keys, replace, split } from "lodash-es";
4
5
  const noop = () => { };
5
6
  export var Live_Operations;
6
7
  (function (Live_Operations) {
@@ -20,8 +21,8 @@ export const LIVE_CONSTANTS = {
20
21
  'EMPTY': 'empty'
21
22
  };
22
23
  // Returns true if widget is autocomplete or chips
23
- function isSearchWidgetType(widget) {
24
- return _.includes([FormWidgetType.AUTOCOMPLETE, FormWidgetType.TYPEAHEAD, FormWidgetType.CHIPS], widget);
24
+ export function isSearchWidgetType(widget) {
25
+ return includes([FormWidgetType.AUTOCOMPLETE, FormWidgetType.TYPEAHEAD, FormWidgetType.CHIPS], widget);
25
26
  }
26
27
  function onSuccess(response, res, rej) {
27
28
  if (response.error) {
@@ -110,7 +111,7 @@ export function fetchRelatedFieldData(dataSource, formField, options) {
110
111
  }
111
112
  primaryKeys = dataSource.execute(DataSource.Operation.GET_RELATED_PRIMARY_KEYS, relatedField);
112
113
  formField.datafield = datafield;
113
- formField._primaryKey = _.isEmpty(primaryKeys) ? undefined : primaryKeys[0];
114
+ formField._primaryKey = isEmpty(primaryKeys) ? undefined : primaryKeys[0];
114
115
  formField.compareby = primaryKeys && primaryKeys.join(',');
115
116
  displayField = datafield === ALLFIELDS ? undefined : datafield;
116
117
  formField.displayfield = displayField = (formField.displayfield || displayField || formField._primaryKey);
@@ -129,12 +130,12 @@ export function fetchRelatedFieldData(dataSource, formField, options) {
129
130
  dataSource.execute(DataSource.Operation.GET_RELATED_TABLE_DATA, {
130
131
  relatedField,
131
132
  pagesize: formField.limit,
132
- orderBy: formField.orderby ? _.replace(formField.orderby, /:/g, ' ') : '',
133
+ orderBy: formField.orderby ? replace(formField.orderby, /:/g, ' ') : '',
133
134
  filterFields: {},
134
135
  filterExpr: formField.filterexpressions ? formField.filterexpressions : {}
135
136
  }).then(response => {
136
137
  formField.dataset = response.data;
137
- formField.displayfield = formField.displayfield || _.head(_.keys(_.get(response, '[0]')));
138
+ formField.displayfield = formField.displayfield || head(keys(get(response, '[0]')));
138
139
  if (formField.showPendingSpinner) {
139
140
  formField.showPendingSpinner = false;
140
141
  }
@@ -150,7 +151,7 @@ export function fetchRelatedFieldData(dataSource, formField, options) {
150
151
  */
151
152
  export const interpolateBindExpressions = (context, filterexpressions, callbackFn) => {
152
153
  const debouncedFn = debounce(() => {
153
- if (_.isFunction(callbackFn)) {
154
+ if (isFunction(callbackFn)) {
154
155
  callbackFn(filterexpressions);
155
156
  }
156
157
  }, 300);
@@ -159,8 +160,8 @@ export const interpolateBindExpressions = (context, filterexpressions, callbackF
159
160
  * without this it will never be called. processFilterExpBindNode will be called only for the binded variable expressions.
160
161
  */
161
162
  debouncedFn();
162
- const filterExpressions = filterexpressions ? (_.isObject(filterexpressions) ? filterexpressions : JSON.parse(filterexpressions)) : {};
163
- const destroyFn = context.registerDestroyListener ? context.registerDestroyListener.bind(context) : _.noop;
163
+ const filterExpressions = filterexpressions ? (isObject(filterexpressions) ? filterexpressions : JSON.parse(filterexpressions)) : {};
164
+ const destroyFn = context.registerDestroyListener ? context.registerDestroyListener.bind(context) : noop;
164
165
  const filterSubscription = processFilterExpBindNode(context, filterExpressions).subscribe((response) => {
165
166
  filterexpressions = JSON.stringify(response.filterExpressions);
166
167
  debouncedFn();
@@ -188,7 +189,7 @@ export const getDistinctFieldProperties = (dataSource, formField) => {
188
189
  fieldColumn = formField['lookup-field'];
189
190
  props.distinctField = fieldColumn;
190
191
  props.aliasColumn = fieldColumn.replace('.', '$'); // For related fields, In response . is replaced by $
191
- props.filterExpr = formField.filterexpressions ? (_.isObject(formField.filterexpressions) ? formField.filterexpressions : JSON.parse(formField.filterexpressions)) : {};
192
+ props.filterExpr = formField.filterexpressions ? (isObject(formField.filterexpressions) ? formField.filterexpressions : JSON.parse(formField.filterexpressions)) : {};
192
193
  }
193
194
  else {
194
195
  props.tableName = dataSource.execute(DataSource.Operation.GET_ENTITY_NAME);
@@ -261,14 +262,14 @@ function setFieldDataSet(formField, data, options) {
261
262
  const emptySupportWidgets = [FormWidgetType.SELECT, FormWidgetType.RADIOSET];
262
263
  const emptyOption = {};
263
264
  const dataSet = [];
264
- if (options.isEnableEmptyFilter && _.includes(emptySupportWidgets, formField[options.widget]) &&
265
+ if (options.isEnableEmptyFilter && includes(emptySupportWidgets, formField[options.widget]) &&
265
266
  !formField['is-range'] && !formField.multiple) {
266
267
  // If empty option is selected, push an empty object in to dataSet
267
268
  emptyOption[LIVE_CONSTANTS.LABEL_KEY] = LIVE_CONSTANTS.EMPTY_KEY;
268
269
  emptyOption[LIVE_CONSTANTS.LABEL_VALUE] = options.EMPTY_VALUE || LIVE_CONSTANTS.EMPTY_VALUE;
269
270
  dataSet.push(emptyOption);
270
271
  }
271
- _.each(data, key => {
272
+ each(data, key => {
272
273
  const value = key[options.aliasColumn];
273
274
  const option = {};
274
275
  if (value !== null && value !== '') {
@@ -296,7 +297,7 @@ function setFieldDataSet(formField, data, options) {
296
297
  *
297
298
  */
298
299
  export function fetchDistinctValues(dataSource, formFields, options) {
299
- if (_.isEmpty(formFields)) {
300
+ if (isEmpty(formFields)) {
300
301
  return;
301
302
  }
302
303
  formFields.forEach(formField => {
@@ -408,7 +409,7 @@ export function getRangeMatchMode(minValue, maxValue) {
408
409
  * @param {object} enableemptyfilter empty filter options
409
410
  */
410
411
  export function getEnableEmptyFilter(enableemptyfilter) {
411
- return enableemptyfilter && _.intersection(enableemptyfilter.split(','), LIVE_CONSTANTS.NULL_EMPTY).length > 0;
412
+ return enableemptyfilter && intersection(enableemptyfilter.split(','), LIVE_CONSTANTS.NULL_EMPTY).length > 0;
412
413
  }
413
414
  /**
414
415
  * @ngdoc function
@@ -423,14 +424,14 @@ export function getEnableEmptyFilter(enableemptyfilter) {
423
424
  */
424
425
  export function getEmptyMatchMode(enableemptyfilter) {
425
426
  let matchMode;
426
- const emptyFilterOptions = _.split(enableemptyfilter, ',');
427
- if (_.intersection(emptyFilterOptions, LIVE_CONSTANTS.NULL_EMPTY).length === 2) {
427
+ const emptyFilterOptions = split(enableemptyfilter, ',');
428
+ if (intersection(emptyFilterOptions, LIVE_CONSTANTS.NULL_EMPTY).length === 2) {
428
429
  matchMode = MatchMode.NULLOREMPTY;
429
430
  }
430
- else if (_.includes(emptyFilterOptions, LIVE_CONSTANTS.NULL)) {
431
+ else if (includes(emptyFilterOptions, LIVE_CONSTANTS.NULL)) {
431
432
  matchMode = MatchMode.NULL;
432
433
  }
433
- else if (_.includes(emptyFilterOptions, LIVE_CONSTANTS.EMPTY)) {
434
+ else if (includes(emptyFilterOptions, LIVE_CONSTANTS.EMPTY)) {
434
435
  matchMode = MatchMode.EMPTY;
435
436
  }
436
437
  return matchMode;
@@ -446,13 +447,13 @@ export function getEmptyMatchMode(enableemptyfilter) {
446
447
  * @returns {Array<any>}
447
448
  */
448
449
  export const createArrayFrom = (data) => {
449
- if (_.isUndefined(data) || _.isNull(data)) {
450
+ if (isUndefined(data) || isNull(data)) {
450
451
  return [];
451
452
  }
452
- if (_.isString(data)) {
453
+ if (isString(data)) {
453
454
  data = data.split(',').map(Function.prototype.call, String.prototype.trim);
454
455
  }
455
- if (!_.isArray(data)) {
456
+ if (!isArray(data)) {
456
457
  data = [data];
457
458
  }
458
459
  return data;
@@ -472,13 +473,13 @@ export const createArrayFrom = (data) => {
472
473
  */
473
474
  export function applyFilterOnField(dataSource, filterDef, formFields, newVal, options = {}) {
474
475
  const fieldName = filterDef.field || filterDef.key;
475
- const filterOnFields = _.filter(formFields, { 'filter-on': fieldName });
476
+ const filterOnFields = filter(formFields, { 'filter-on': fieldName });
476
477
  newVal = filterDef['is-range'] ? getRangeFieldValue(filterDef.minValue, filterDef.maxValue) : (isDefined(newVal) ? newVal : filterDef.value);
477
- if (!dataSource || (options.isFirst && (_.isUndefined(newVal) || newVal === ''))) {
478
+ if (!dataSource || (options.isFirst && (isUndefined(newVal) || newVal === ''))) {
478
479
  return;
479
480
  }
480
481
  // Loop over the fields for which the current field is filter on field
481
- _.forEach(filterOnFields, filterField => {
482
+ forEach(filterOnFields, filterField => {
482
483
  const filterKey = filterField.field || filterField.key;
483
484
  const lookUpField = filterDef['lookup-field'] || filterDef._primaryKey;
484
485
  const filterWidget = filterField['edit-widget-type'] || filterField.widgettype;
@@ -504,7 +505,7 @@ export function applyFilterOnField(dataSource, filterDef, formFields, newVal, op
504
505
  else {
505
506
  matchMode = MatchMode.EQUALS;
506
507
  }
507
- filterVal = (_.isObject(newVal) && !_.isArray(newVal)) ? newVal[lookUpField] : newVal;
508
+ filterVal = (isObject(newVal) && !isArray(newVal)) ? newVal[lookUpField] : newVal;
508
509
  filterFields[filterOn] = {
509
510
  'value': filterVal,
510
511
  'matchMode': matchMode
@@ -539,9 +540,9 @@ export function transformData(dataObject, variableName) {
539
540
  // data sanity testing
540
541
  dataObject = dataObject || [];
541
542
  // if the dataObject is not an array make it an array
542
- if (!_.isArray(dataObject)) {
543
+ if (!isArray(dataObject)) {
543
544
  // if the data returned is of type string, make it an object inside an array
544
- if (_.isString(dataObject)) {
545
+ if (isString(dataObject)) {
545
546
  keys = variableName.substring(variableName.indexOf('.') + 1, variableName.length).split('.');
546
547
  oldKeys = [];
547
548
  numKeys = keys.length;
@@ -565,9 +566,9 @@ export function transformData(dataObject, variableName) {
565
566
  /*if the dataObject is an array and each value is a string, then lite-transform the string to an object
566
567
  * lite-transform: just checking if the first value is string and then transforming the object, instead of traversing through the whole array
567
568
  * */
568
- if (_.isString(dataObject[0])) {
569
+ if (isString(dataObject[0])) {
569
570
  tempArr = [];
570
- _.forEach(dataObject, str => {
571
+ forEach(dataObject, str => {
571
572
  newObj = {};
572
573
  newObj[variableName.split('.').join('-')] = str;
573
574
  tempArr.push(newObj);
@@ -577,4 +578,4 @@ export function transformData(dataObject, variableName) {
577
578
  }
578
579
  return dataObject;
579
580
  }
580
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvdXRpbHMvZGF0YS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWpELE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUV2QixNQUFNLENBQU4sSUFBWSxlQUtYO0FBTEQsV0FBWSxlQUFlO0lBQ3ZCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0lBQ2pCLGdDQUFhLENBQUE7QUFDakIsQ0FBQyxFQUxXLGVBQWUsS0FBZixlQUFlLFFBSzFCO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIsV0FBVyxFQUFFLG1CQUFtQjtJQUNoQyxhQUFhLEVBQUUsVUFBVTtJQUN6QixXQUFXLEVBQUUsS0FBSztJQUNsQixhQUFhLEVBQUUsT0FBTztJQUN0QixZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO0lBQy9CLE1BQU0sRUFBRSxNQUFNO0lBQ2QsT0FBTyxFQUFFLE9BQU87Q0FDbkIsQ0FBQztBQUVGLGtEQUFrRDtBQUNsRCxTQUFTLGtCQUFrQixDQUFDLE1BQU07SUFDOUIsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMs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ckIsT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssS0FBSyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdkQsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsQ0FBQztZQUVILHNEQUFzRDtZQUN0RCxVQUFVLEdBQUcsU0FBUyxDQUFDO1NBQzFCO1FBQ0QsVUFBVSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDN0I7U0FBTTtRQUNIOzthQUVLO1FBQ0wsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNCLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDeEIsTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDWixNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQ2hELE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7WUFDSCxVQUFVLEdBQUcsT0FBTyxDQUFDO1NBQ3hCO0tBQ0o7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSwgZGVib3VuY2UsIHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZSB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IEZvcm1XaWRnZXRUeXBlLCBpc0RlZmluZWQsIE1hdGNoTW9kZSB9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHsgaXNEYXRhU2V0V2lkZ2V0IH0gZnJvbSAnLi93aWRnZXQtdXRpbHMnO1xuXG5kZWNsYXJlIGNvbnN0IF87XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7IH07XG5cbmV4cG9ydCBlbnVtIExpdmVfT3BlcmF0aW9ucyB7XG4gICAgSU5TRVJUID0gJ2luc2VydCcsXG4gICAgVVBEQVRFID0gJ3VwZGF0ZScsXG4gICAgREVMRVRFID0gJ2RlbGV0ZScsXG4gICAgUkVBRCA9ICdyZWFkJ1xufVxuXG5leHBvcnQgY29uc3QgQUxMRklFTERTID0gJ0FsbCBGaWVsZHMnO1xuXG5leHBvcnQgY29uc3QgTElWRV9DT05TVEFOVFMgPSB7XG4gICAgJ0VNUFRZX0tFWSc6ICdFTVBUWV9OVUxMX0ZJTFRFUicsXG4gICAgJ0VNUFRZX1ZBTFVFJzogJ05vIFZhbHVlJyxcbiAgICAnTEFCRUxfS0VZJzogJ2tleScsXG4gICAgJ0xBQkVMX1ZBTFVFJzogJ3ZhbHVlJyxcbiAgICAnTlVMTF9FTVBUWSc6IFsnbnVsbCcsICdlbXB0eSddLFxuICAgICdOVUxMJzogJ251bGwnLFxuICAgICdFTVBUWSc6ICdlbXB0eSdcbn07XG5cbi8vIFJldHVybnMgdHJ1ZSBpZiB3aWRnZXQgaXMgYXV0b2NvbXBsZXRlIG9yIGNoaXBzXG5mdW5jdGlvbiBpc1NlYXJjaFdpZGdldFR5cGUod2lkZ2V0KSB7XG4gICAgcmV0dXJuIF8uaW5jbHVkZXMoW0Zvcm1XaWRnZXRUeXBlLkFVVE9DT01QTEVURSwgRm9ybVdpZGdldFR5cGUuVFlQRUFIRUFELCBGb3JtV2lkZ2V0VHlwZS5DSElQU10sIHdpZGdldCk7XG59XG5cbmZ1bmN0aW9uIG9uU3VjY2VzcyhyZXNwb25zZSwgcmVzLCByZWopIHtcbiAgICBpZiAocmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgcmVqKHJlc3BvbnNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXMocmVzcG9uc2UpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBlcmZvcm1EYXRhT3BlcmF0aW9uKGRhdGFTb3VyY2UsIHJlcXVlc3REYXRhLCBvcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgICAgIGlmIChkYXRhU291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uU1VQUE9SVFNfQ1JVRCkpIHtcbiAgICAgICAgICAgIGxldCBmbjtcbiAgICAgICAgICAgIGNvbnN0IG9wZXJhdGlvblR5cGUgPSBvcHRpb25zLm9wZXJhdGlvblR5cGU7XG4gICAgICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvblR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIExpdmVfT3BlcmF0aW9ucy5VUERBVEU6XG4gICAgICAgICAgICAgICAgICAgIGZuID0gRGF0YVNvdXJjZS5PcGVyYXRpb24uVVBEQVRFX1JFQ09SRDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMaXZlX09wZXJhdGlvbnMuSU5TRVJUOlxuICAgICAgICAgICAgICAgICAgICBmbiA9IERhdGFTb3VyY2UuT3BlcmF0aW9uLklOU0VSVF9SRUNPUkQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTGl2ZV9PcGVyYXRpb25zLkRFTEVURTpcbiAgICAgICAgICAgICAgICAgICAgZm4gPSBEYXRhU291cmNlLk9wZXJhdGlvbi5ERUxFVEVfUkVDT1JEO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRhdGFTb3VyY2UuZXhlY3V0ZShmbiwgcmVxdWVzdERhdGEpLnRoZW4ocmVzcG9uc2UgPT4gb25TdWNjZXNzKHJlc3BvbnNlLCByZXMsIHJlaiksIHJlaik7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YVNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX0FQSV9BV0FSRSkpIHtcbiAgICAgICAgICAgIGlmKGRhdGFTb3VyY2UuY2F0ZWdvcnkgPT09IFwid20uQ3J1ZFZhcmlhYmxlXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcGVyYXRpb24gPSBvcHRpb25zLm9wZXJhdGlvblR5cGUgPT09ICdpbnNlcnQnID8gJ2NyZWF0ZScgOiAob3B0aW9ucy5vcGVyYXRpb25UeXBlID09PSAnZGVsZXRlJyA/ICdkZWxldGUnIDogJ3VwZGF0ZScpO1xuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5JTlZPS0UsIHtcbiAgICAgICAgICAgICAgICAgICAgJ3NraXBOb3RpZmljYXRpb24nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uJzogb3BlcmF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAnaW5wdXRGaWVsZHMnOiByZXF1ZXN0RGF0YVxuICAgICAgICAgICAgICAgIH0pLnRoZW4ocmVzLCByZWopO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uU0VUX0lOUFVULCByZXF1ZXN0RGF0YSk7XG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLklOVk9LRSwge1xuICAgICAgICAgICAgICAgICAgICAnc2tpcE5vdGlmaWNhdGlvbic6IHRydWVcbiAgICAgICAgICAgICAgICB9KS50aGVuKHJlcywgcmVqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyhyZXF1ZXN0RGF0YSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZnJlc2hEYXRhU291cmNlKGRhdGFTb3VyY2UsIG9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHtcbiAgICAgICAgaWYgKCFkYXRhU291cmNlKSB7XG4gICAgICAgICAgICByZWooKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBkYXRhU291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uTElTVF9SRUNPUkRTLCB7XG4gICAgICAgICAgICAnZmlsdGVyRmllbGRzJzogb3B0aW9ucy5maWx0ZXJGaWVsZHMgfHwge30sXG4gICAgICAgICAgICAnb3JkZXJCeSc6IG9wdGlvbnMub3JkZXJCeSxcbiAgICAgICAgICAgICdwYWdlJzogb3B0aW9ucy5wYWdlIHx8IDEsXG4gICAgICAgICAgICAnbG9naWNhbE9wJyA6IG9wdGlvbnMuY29uZGl0aW9uIHx8ICcnXG4gICAgICAgIH0pLnRoZW4ocmVzLCByZWopO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIEBuZ2RvYyBmdW5jdGlvblxuICogQG5hbWUgd20ud2lkZ2V0cy5saXZlLmZldGNoUmVsYXRlZEZpZWxkRGF0YVxuICogQG1ldGhvZE9mIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHNcbiAqIEBmdW5jdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhpcyBmdW5jdGlvbiBmZXRjaGVzIHRoZSBkYXRhIGZvciB0aGUgcmVsYXRlZCBmaWVsZCBpbiBsaXZlIGZvcm0vIGdyaWRcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29sdW1uRGVmIGZpZWxkIGRlZmluaXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGVkRmllbGQgcmVsYXRlZCBmaWVsZCBuYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0YWZpZWxkIERhdGFmaWVsZCB0byBiZSBzZXQgb24gd2lkZ2V0XG4gKiBAcGFyYW0ge3N0cmluZ30gd2lkZ2V0IFR5cGUgb2YgdGhlIHdpZGdldFxuICogQHBhcmFtIHtvYmplY3R9IGVsU2NvcGUgZWxlbWVudCBzY29wZVxuICogQHBhcmFtIHtvYmplY3R9IHBhcmVudFNjb3BlIGxpdmUgZm9ybS8vIGdyaWQgc2NvcGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZldGNoUmVsYXRlZEZpZWxkRGF0YShkYXRhU291cmNlLCBmb3JtRmllbGQsIG9wdGlvbnMpIHtcbiAgICBsZXQgcHJpbWFyeUtleXM7XG4gICAgbGV0IGRpc3BsYXlGaWVsZDtcbiAgICBjb25zdCByZWxhdGVkRmllbGQgPSBvcHRpb25zLnJlbGF0ZWRGaWVsZDtcbiAgICBjb25zdCBkYXRhZmllbGQgPSBvcHRpb25zLmRhdGFmaWVsZDtcblxuICAgIGlmICghZGF0YVNvdXJjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHByaW1hcnlLZXlzID0gZGF0YVNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9SRUxBVEVEX1BSSU1BUllfS0VZUywgcmVsYXRlZEZpZWxkKTtcbiAgICBmb3JtRmllbGQuZGF0YWZpZWxkID0gZGF0YWZpZWxkO1xuICAgIGZvcm1GaWVsZC5fcHJpbWFyeUtleSA9IF8uaXNFbXB0eShwcmltYXJ5S2V5cykgPyB1bmRlZmluZWQgOiBwcmltYXJ5S2V5c1swXTtcbiAgICBmb3JtRmllbGQuY29tcGFyZWJ5ID0gcHJpbWFyeUtleXMgJiYgcHJpbWFyeUtleXMuam9pbignLCcpO1xuXG4gICAgZGlzcGxheUZpZWxkID0gZGF0YWZpZWxkID09PSBBTExGSUVMRFMgPyB1bmRlZmluZWQgOiBkYXRhZmllbGQ7XG4gICAgZm9ybUZpZWxkLmRpc3BsYXlmaWVsZCA9IGRpc3BsYXlGaWVsZCA9IChmb3JtRmllbGQuZGlzcGxheWZpZWxkIHx8IGRpc3BsYXlGaWVsZCB8fCBmb3JtRmllbGQuX3ByaW1hcnlLZXkpO1xuXG4gICAgaWYgKGlzU2VhcmNoV2lkZ2V0VHlwZShmb3JtRmllbGRbb3B0aW9ucy53aWRnZXRdKSkge1xuICAgICAgICBmb3JtRmllbGQuZGF0YW9wdGlvbnMgPSB7ICdyZWxhdGVkRmllbGQnOiByZWxhdGVkRmllbGQsICdmaWx0ZXJFeHByJzogZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zID8gZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zIDoge30gfTtcbiAgICAgICAgZm9ybUZpZWxkLmRhdGFzb3VyY2UgPSBkYXRhU291cmNlO1xuICAgICAgICBmb3JtRmllbGQuc2VhcmNoa2V5ID0gZm9ybUZpZWxkLnNlYXJjaGtleSB8fCBkaXNwbGF5RmllbGQ7XG4gICAgICAgIGZvcm1GaWVsZC5kaXNwbGF5bGFiZWwgPSBmb3JtRmllbGQuZGlzcGxheWZpZWxkID0gKGZvcm1GaWVsZC5kaXNwbGF5bGFiZWwgfHwgZGlzcGxheUZpZWxkKTtcbiAgICAgICAgaWYgKGZvcm1GaWVsZC5zaG93UGVuZGluZ1NwaW5uZXIpIHtcbiAgICAgICAgICAgIGZvcm1GaWVsZC5zaG93UGVuZGluZ1NwaW5uZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGludGVycG9sYXRlQmluZEV4cHJlc3Npb25zKGZvcm1GaWVsZC52aWV3UGFyZW50LCBmb3JtRmllbGQuZmlsdGVyZXhwcmVzc2lvbnMsIChmaWx0ZXJleHByZXNzaW9ucykgPT4ge1xuICAgICAgICAgICAgZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zID0gZmlsdGVyZXhwcmVzc2lvbnM7XG4gICAgICAgICAgICBkYXRhU291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX1JFTEFURURfVEFCTEVfREFUQSwge1xuICAgICAgICAgICAgICAgIHJlbGF0ZWRGaWVsZCxcbiAgICAgICAgICAgICAgICBwYWdlc2l6ZTogZm9ybUZpZWxkLmxpbWl0LFxuICAgICAgICAgICAgICAgIG9yZGVyQnk6IGZvcm1GaWVsZC5vcmRlcmJ5ID8gXy5yZXBsYWNlKGZvcm1GaWVsZC5vcmRlcmJ5LCAvOi9nLCAnICcpIDogJycsXG4gICAgICAgICAgICAgICAgZmlsdGVyRmllbGRzOiB7fSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJFeHByOiBmb3JtRmllbGQuZmlsdGVyZXhwcmVzc2lvbnMgPyBmb3JtRmllbGQuZmlsdGVyZXhwcmVzc2lvbnMgOiB7fVxuICAgICAgICAgICAgfSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLmRhdGFzZXQgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5kaXNwbGF5ZmllbGQgPSBmb3JtRmllbGQuZGlzcGxheWZpZWxkIHx8IF8uaGVhZChfLmtleXMoXy5nZXQocmVzcG9uc2UsICdbMF0nKSkpO1xuICAgICAgICAgICAgICAgIGlmIChmb3JtRmllbGQuc2hvd1BlbmRpbmdTcGlubmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5zaG93UGVuZGluZ1NwaW5uZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBub29wKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIHVzZWQgdG8gaW50ZXJwb2xhdGUgdGhlIGJpbmQgZXhwcmVzc2lvbiBmb3Iga2V5cyBpbiB0aGUgcXVlcnkgYnVpbGRlclxuICogQHBhcmFtIGNvbnRleHQgd2hlcmUgd2UgZmluZCB0aGUgdmFyaWFibGUgb2JqXG4gKiBAcGFyYW0gZmlsdGVyZXhwcmVzc2lvbnMgLSBvYmogY29udGFpbmluZyBhbGwgdGhlIHJ1bGUgb2Jqc1xuICogQHBhcmFtIGNhbGxiYWNrRm4gLSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2l0aCB0aGUgbmV3IHJlcGxhY2VkIHZhbHVlcyBpZiBhbnkgaW4gdGhlIGZpbHRlcmV4cHJlc3Npb25zIG9iamVjdFxuICovXG5leHBvcnQgY29uc3QgaW50ZXJwb2xhdGVCaW5kRXhwcmVzc2lvbnMgPSAoY29udGV4dCwgZmlsdGVyZXhwcmVzc2lvbnMsIGNhbGxiYWNrRm4pID0+IHtcbiAgICBjb25zdCBkZWJvdW5jZWRGbiA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgaWYgKF8uaXNGdW5jdGlvbihjYWxsYmFja0ZuKSkge1xuICAgICAgICAgICAgY2FsbGJhY2tGbihmaWx0ZXJleHByZXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICB9LCAzMDApO1xuXG4gICAgLyoqXG4gICAgICogY2FsbGluZyB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIGZpcnN0IGZvciB0aGUgY2FzZSB3aGVyZSBpZiB0aGVyZSBpcyBhbnkgZmlsdGVyZXhwcmVzc2lvbiB3aXRob3V0IHRoZSBiaW5kZWR2YXJpYWJsZXMuXG4gICAgICogd2l0aG91dCB0aGlzIGl0IHdpbGwgbmV2ZXIgYmUgY2FsbGVkLiBwcm9jZXNzRmlsdGVyRXhwQmluZE5vZGUgd2lsbCBiZSBjYWxsZWQgb25seSBmb3IgdGhlIGJpbmRlZCB2YXJpYWJsZSBleHByZXNzaW9ucy5cbiAgICAgKi9cbiAgICBkZWJvdW5jZWRGbigpO1xuICAgIGNvbnN0IGZpbHRlckV4cHJlc3Npb25zID0gZmlsdGVyZXhwcmVzc2lvbnMgPyAoXy5pc09iamVjdChmaWx0ZXJleHByZXNzaW9ucykgPyBmaWx0ZXJleHByZXNzaW9ucyA6IEpTT04ucGFyc2UoZmlsdGVyZXhwcmVzc2lvbnMpKSA6IHt9O1xuICAgIGNvbnN0IGRlc3Ryb3lGbiA9IGNvbnRleHQucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIgPyBjb250ZXh0LnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyLmJpbmQoY29udGV4dCkgOiBfLm5vb3A7XG4gICAgY29uc3QgZmlsdGVyU3Vic2NyaXB0aW9uID0gcHJvY2Vzc0ZpbHRlckV4cEJpbmROb2RlKGNvbnRleHQsIGZpbHRlckV4cHJlc3Npb25zKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgZmlsdGVyZXhwcmVzc2lvbnMgPSBKU09OLnN0cmluZ2lmeShyZXNwb25zZS5maWx0ZXJFeHByZXNzaW9ucyk7XG4gICAgICAgIGRlYm91bmNlZEZuKCk7XG4gICAgfSk7XG4gICAgZGVzdHJveUZuKCgpID0+IGZpbHRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbn07XG4vKipcbiAqIEBuZ2RvYyBmdW5jdGlvblxuICogQG5hbWUgd20ud2lkZ2V0cy5saXZlLkxpdmVXaWRnZXRVdGlscyNnZXREaXN0aW5jdEZpZWxkUHJvcGVydGllc1xuICogQG1ldGhvZE9mIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHNcbiAqIEBmdW5jdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyB0aGUgcHJvcGVydGllcyByZXF1aXJlZCBmb3IgZGF0YXNldCB3aWRnZXRzXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRhdGFTb3VyY2UgdmFyaWFibGUgc291cmNlIGZvciB0aGUgd2lkZ2V0XG4gKiBAcGFyYW0ge29iamVjdH0gZm9ybUZpZWxkIGRlZmluaXRpb24gb2YgdGhlIGNvbHVtbi8gZmllbGRcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREaXN0aW5jdEZpZWxkUHJvcGVydGllcyA9IChkYXRhU291cmNlLCBmb3JtRmllbGQpID0+IHtcbiAgICBjb25zdCBwcm9wczogYW55ID0ge307XG4gICAgbGV0IGZpZWxkQ29sdW1uO1xuICAgIGlmIChmb3JtRmllbGRbJ2lzLXJlbGF0ZWQnXSkge1xuICAgICAgICBwcm9wcy50YWJsZU5hbWUgPSBmb3JtRmllbGRbJ2xvb2t1cC10eXBlJ107XG4gICAgICAgIGZpZWxkQ29sdW1uID0gZm9ybUZpZWxkWydsb29rdXAtZmllbGQnXTtcbiAgICAgICAgcHJvcHMuZGlzdGluY3RGaWVsZCA9IGZpZWxkQ29sdW1uO1xuICAgICAgICBwcm9wcy5hbGlhc0NvbHVtbiA9IGZpZWxkQ29sdW1uLnJlcGxhY2UoJy4nLCAnJCcpOyAvLyBGb3IgcmVsYXRlZCBmaWVsZHMsIEluIHJlc3BvbnNlIC4gaXMgcmVwbGFjZWQgYnkgJFxuICAgICAgICBwcm9wcy5maWx0ZXJFeHByID0gZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zID8gKF8uaXNPYmplY3QoZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zKSA/IGZvcm1GaWVsZC5maWx0ZXJleHByZXNzaW9ucyA6IEpTT04ucGFyc2UoZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zKSkgOiB7fTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wcy50YWJsZU5hbWUgPSBkYXRhU291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX0VOVElUWV9OQU1FKTtcbiAgICAgICAgZmllbGRDb2x1bW4gPSBmb3JtRmllbGQuZmllbGQgfHwgZm9ybUZpZWxkLmtleTtcbiAgICAgICAgcHJvcHMuZGlzdGluY3RGaWVsZCA9IGZpZWxkQ29sdW1uO1xuICAgICAgICBwcm9wcy5hbGlhc0NvbHVtbiA9IGZpZWxkQ29sdW1uO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcHM7XG59O1xuXG4vKipcbiAqIEBuZ2RvYyBmdW5jdGlvblxuICogQG5hbWUgd20ud2lkZ2V0cy5saXZlLkxpdmVXaWRnZXRVdGlscyNnZXREaXN0aW5jdFZhbHVlc1xuICogQG1ldGhvZE9mIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHNcbiAqIEBmdW5jdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyB0aGUgZGlzdGluY3QgdmFsdWVzIGZvciBhIGZpZWxkXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGZvcm1GaWVsZCBkZWZpbml0aW9uIG9mIHRoZSBjb2x1bW4vIGZpZWxkXG4gKiBAcGFyYW0ge3N0cmluZ30gd2lkZ2V0IHdpZGdldCBwcm9wZXJ0eSBvbiB0aGUgZmllbGRcbiAqIEBwYXJhbSB7b2JqZWN0fSB2YXJpYWJsZSB2YXJpYWJsZSBmb3IgdGhlIHdpZGdldFxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbEJhY2sgRnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgZmV0Y2hpbmcgcmVzdWx0c1xuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RpbmN0VmFsdWVzKGRhdGFTb3VyY2UsIGZvcm1GaWVsZCwgd2lkZ2V0KSB7XG4gICAgbGV0IHByb3BzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgICAgICBpZiAoaXNEYXRhU2V0V2lkZ2V0KGZvcm1GaWVsZFt3aWRnZXRdKSAmJiAoIWZvcm1GaWVsZC5pc0RhdGFTZXRCb3VuZCB8fCB3aWRnZXQgPT09ICdmaWx0ZXJ3aWRnZXQnKSkge1xuICAgICAgICAgICAgcHJvcHMgPSBnZXREaXN0aW5jdEZpZWxkUHJvcGVydGllcyhkYXRhU291cmNlLCBmb3JtRmllbGQpO1xuICAgICAgICAgICAgZGF0YVNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9ESVNUSU5DVF9EQVRBX0JZX0ZJRUxEUywge1xuICAgICAgICAgICAgICAgIGZpZWxkczogcHJvcHMuZGlzdGluY3RGaWVsZCxcbiAgICAgICAgICAgICAgICBlbnRpdHlOYW1lOiBwcm9wcy50YWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgcGFnZXNpemU6IGZvcm1GaWVsZC5saW1pdCxcbiAgICAgICAgICAgICAgICBmaWx0ZXJFeHByOiBmb3JtRmllbGQuZmlsdGVyZXhwcmVzc2lvbnMgPyBKU09OLnBhcnNlKGZvcm1GaWVsZC5maWx0ZXJleHByZXNzaW9ucykgOiB7fVxuICAgICAgICAgICAgfSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzKHsgJ2ZpZWxkJzogZm9ybUZpZWxkLCAnZGF0YSc6IHJlc3BvbnNlLmRhdGEsICdhbGlhc0NvbHVtbic6IHByb3BzLmFsaWFzQ29sdW1uIH0pO1xuICAgICAgICAgICAgfSwgcmVqKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vLyBTZXQgdGhlIGRhdGEgZmllbGQgcHJvcGVydGllcyBvbiBkYXRhc2V0IHdpZGdldHNcbmZ1bmN0aW9uIHNldERhdGFGaWVsZHMoZm9ybUZpZWxkLCBvcHRpb25zPykge1xuICAgIC8vIEZvciBzZWFyY2ggd2lkZ2V0LCBzZXQgc2VhcmNoIGtleSBhbmQgZGlzcGxheSBsYWJlbFxuICAgIGlmIChpc1NlYXJjaFdpZGdldFR5cGUoZm9ybUZpZWxkW29wdGlvbnMud2lkZ2V0XSkpIHtcbiAgICAgICAgZm9ybUZpZWxkLmRhdGFmaWVsZCA9IG9wdGlvbnMuYWxpYXNDb2x1bW4gfHwgTElWRV9DT05TVEFOVFMuTEFCRUxfS0VZO1xuICAgICAgICBmb3JtRmllbGQuc2VhcmNoa2V5ID0gb3B0aW9ucy5kaXN0aW5jdEZpZWxkIHx8IExJVkVfQ09OU1RBTlRTLkxBQkVMX0tFWTtcbiAgICAgICAgZm9ybUZpZWxkLmRpc3BsYXlsYWJlbCA9IGZvcm1GaWVsZC5kaXNwbGF5ZmllbGQgPSAob3B0aW9ucy5hbGlhc0NvbHVtbiB8fCBMSVZFX0NPTlNUQU5UUy5MQUJFTF9WQUxVRSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9ybUZpZWxkLmRhdGFmaWVsZCA9IExJVkVfQ09OU1RBTlRTLkxBQkVMX0tFWTtcbiAgICBmb3JtRmllbGQuZGlzcGxheWZpZWxkID0gTElWRV9DT05TVEFOVFMuTEFCRUxfVkFMVUU7XG59XG5cbi8qKlxuICogQG5nZG9jIGZ1bmN0aW9uXG4gKiBAbmFtZSB3bS53aWRnZXRzLmxpdmUuTGl2ZVdpZGdldFV0aWxzI3NldEZpZWxkRGF0YVNldFxuICogQG1ldGhvZE9mIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHNcbiAqIEBmdW5jdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogRnVuY3Rpb24gdG8gc2V0IHRoZSBkYXRhU2V0IG9uIHRoZSBmaWVsZHNcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZm9ybUZpZWxkIGRlZmluaXRpb24gb2YgdGhlIGNvbHVtbi8gZmllbGRcbiAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgc2VydmVyXG4gKiBAcGFyYW0ge3N0cmluZ30gYWxpYXNDb2x1bW4gY29sdW1uIGZpZWxkIG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSB3aWRnZXQgd2lkZ2V0IHByb3BlcnR5IG9uIHRoZSBmaWVsZFxuICogQHBhcmFtIHtib29sZWFufSBpc0VuYWJsZUVtcHR5RmlsdGVyIGlzIG51bGwgb3IgZW1wdHkgdmFsdWVzIGFsbG93ZWQgb24gZmlsdGVyXG4gKlxuICovXG5mdW5jdGlvbiBzZXRGaWVsZERhdGFTZXQoZm9ybUZpZWxkLCBkYXRhLCBvcHRpb25zPykge1xuICAgIGNvbnN0IGVtcHR5U3VwcG9ydFdpZGdldHMgPSBbRm9ybVdpZGdldFR5cGUuU0VMRUNULCBGb3JtV2lkZ2V0VHlwZS5SQURJT1NFVF07XG4gICAgY29uc3QgZW1wdHlPcHRpb24gPSB7fTtcbiAgICBjb25zdCBkYXRhU2V0ID0gW107XG4gICAgaWYgKG9wdGlvbnMuaXNFbmFibGVFbXB0eUZpbHRlciAmJiBfLmluY2x1ZGVzKGVtcHR5U3VwcG9ydFdpZGdldHMsIGZvcm1GaWVsZFtvcHRpb25zLndpZGdldF0pICYmXG4gICAgICAgICFmb3JtRmllbGRbJ2lzLXJhbmdlJ10gJiYgIWZvcm1GaWVsZC5tdWx0aXBsZSkge1xuICAgICAgICAvLyBJZiBlbXB0eSBvcHRpb24gaXMgc2VsZWN0ZWQsIHB1c2ggYW4gZW1wdHkgb2JqZWN0IGluIHRvIGRhdGFTZXRcbiAgICAgICAgZW1wdHlPcHRpb25bTElWRV9DT05TVEFOVFMuTEFCRUxfS0VZXSA9IExJVkVfQ09OU1RBTlRTLkVNUFRZX0tFWTtcbiAgICAgICAgZW1wdHlPcHRpb25bTElWRV9DT05TVEFOVFMuTEFCRUxfVkFMVUVdID0gb3B0aW9ucy5FTVBUWV9WQUxVRSB8fCBMSVZFX0NPTlNUQU5UUy5FTVBUWV9WQUxVRTtcbiAgICAgICAgZGF0YVNldC5wdXNoKGVtcHR5T3B0aW9uKTtcbiAgICB9XG4gICAgXy5lYWNoKGRhdGEsIGtleSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0ga2V5W29wdGlvbnMuYWxpYXNDb2x1bW5dO1xuICAgICAgICBjb25zdCBvcHRpb24gPSB7fTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgb3B0aW9uW0xJVkVfQ09OU1RBTlRTLkxBQkVMX0tFWV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIG9wdGlvbltMSVZFX0NPTlNUQU5UUy5MQUJFTF9WQUxVRV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGRhdGFTZXQucHVzaChvcHRpb24pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgc2V0RGF0YUZpZWxkcyhmb3JtRmllbGQsIG9wdGlvbnMpO1xuICAgIGZvcm1GaWVsZC5kYXRhc2V0ID0gZGF0YVNldDtcbn1cblxuLyoqXG4gKiBAbmdkb2MgZnVuY3Rpb25cbiAqIEBuYW1lIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHMjZmV0Y2hEaXN0aW5jdFZhbHVlc1xuICogQG1ldGhvZE9mIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHNcbiAqIEBmdW5jdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogRnVuY3Rpb24gdG8gZmV0Y2ggdGhlIGRpc3RpbmN0IHZhbHVlcyBmb3IgYSBmaWVsZFxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY29wZSBzY29wZSBvZiB0aGUgd2lkZ2V0XG4gKiBAcGFyYW0ge29iamVjdH0gZm9ybUZpZWxkcyBkZWZpbml0aW9ucyBvZiB0aGUgY29sdW1uLyBmaWVsZFxuICogQHBhcmFtIHtzdHJpbmd9IHdpZGdldCB3aWRnZXQgcHJvcGVydHkgb24gdGhlIGZpZWxkXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzRW5hYmxlRW1wdHlGaWx0ZXIgaXMgbnVsbCBvciBlbXB0eSB2YWx1ZXMgYWxsb3dlZCBvbiBmaWx0ZXJcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaERpc3RpbmN0VmFsdWVzKGRhdGFTb3VyY2UsIGZvcm1GaWVsZHMsIG9wdGlvbnMpIHtcbiAgICBpZiAoXy5pc0VtcHR5KGZvcm1GaWVsZHMpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9ybUZpZWxkcy5mb3JFYWNoKGZvcm1GaWVsZCA9PiB7XG4gICAgICAgIGdldERpc3RpbmN0VmFsdWVzRm9yRmllbGQoZGF0YVNvdXJjZSwgZm9ybUZpZWxkLCBvcHRpb25zKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBAbmdkb2MgZnVuY3Rpb25cbiAqIEBuYW1lIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHMjZ2V0RGlzdGluY3RWYWx1ZXNGb3JGaWVsZFxuICogQG1ldGhvZE9mIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHNcbiAqIEBmdW5jdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogRnVuY3Rpb24gdG8gZmV0Y2ggdGhlIGRpc3RpbmN0IHZhbHVlcyBmb3IgYSBmaWVsZFxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY29wZSBzY29wZSBvZiB0aGUgd2lkZ2V0XG4gKiBAcGFyYW0ge29iamVjdH0gZm9ybUZpZWxkcyBkZWZpbml0aW9ucyBvZiB0aGUgY29sdW1uLyBmaWVsZFxuICogQHBhcmFtIHtzdHJpbmd9IHdpZGdldCB3aWRnZXQgcHJvcGVydHkgb24gdGhlIGZpZWxkXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzRW5hYmxlRW1wdHlGaWx0ZXIgaXMgbnVsbCBvciBlbXB0eSB2YWx1ZXMgYWxsb3dlZCBvbiBmaWx0ZXJcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXN0aW5jdFZhbHVlc0ZvckZpZWxkKGRhdGFTb3VyY2UsIGZvcm1GaWVsZCwgb3B0aW9ucz8pIHtcbiAgICBpZiAoIWRhdGFTb3VyY2UgfHwgIWZvcm1GaWVsZCB8fCBmb3JtRmllbGQuaXNEYXRhU2V0Qm91bmQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNTZWFyY2hXaWRnZXRUeXBlKGZvcm1GaWVsZFtvcHRpb25zLndpZGdldF0pKSB7XG4gICAgICAgIGNvbnN0IGRhdGFvcHRpb25zID0gZ2V0RGlzdGluY3RGaWVsZFByb3BlcnRpZXMoZGF0YVNvdXJjZSwgZm9ybUZpZWxkKTtcbiAgICAgICAgZm9ybUZpZWxkLmRhdGFvcHRpb25zID0gZGF0YW9wdGlvbnM7XG4gICAgICAgIHNldERhdGFGaWVsZHMoZm9ybUZpZWxkLCBPYmplY3QuYXNzaWduKG9wdGlvbnMgfHwge30sIGRhdGFvcHRpb25zKSk7XG4gICAgICAgIGZvcm1GaWVsZC5kYXRhc291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpbnRlcnBvbGF0ZUJpbmRFeHByZXNzaW9ucyhmb3JtRmllbGQudmlld1BhcmVudCwgZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zLCAoZmlsdGVyZXhwcmVzc2lvbnMpID0+IHtcbiAgICAgICAgICAgIGZvcm1GaWVsZC5maWx0ZXJleHByZXNzaW9ucyA9IGZpbHRlcmV4cHJlc3Npb25zO1xuICAgICAgICAgICAgZ2V0RGlzdGluY3RWYWx1ZXMoZGF0YVNvdXJjZSwgZm9ybUZpZWxkLCBvcHRpb25zLndpZGdldCkudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRGaWVsZERhdGFTZXQocmVzLmZpZWxkLCByZXMuZGF0YSwge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc0NvbHVtbjogcmVzLmFsaWFzQ29sdW1uLFxuICAgICAgICAgICAgICAgICAgICB3aWRnZXQ6IG9wdGlvbnMud2lkZ2V0LFxuICAgICAgICAgICAgICAgICAgICBpc0VuYWJsZUVtcHR5RmlsdGVyOiBnZXRFbmFibGVFbXB0eUZpbHRlcihvcHRpb25zLmVuYWJsZWVtcHR5ZmlsdGVyKSxcbiAgICAgICAgICAgICAgICAgICAgRU1QVFlfVkFMVUU6IG9wdGlvbnMuRU1QVFlfVkFMVUVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzRGVmaW5lZEFuZE5vdEVtcHR5KHZhbCkge1xuICAgIHJldHVybiBpc0RlZmluZWQodmFsKSAmJiB2YWwgIT09ICcnICYmIHZhbCAhPT0gbnVsbDtcbn1cblxuLyoqXG4gKiBAbmdkb2MgZnVuY3Rpb25cbiAqIEBuYW1lIHdtLndpZGdldHMubGl2ZS5nZXRSYW5nZUZpZWxkVmFsdWVcbiAqIEBtZXRob2RPZiB3bS53aWRnZXRzLmxpdmUuTGl2ZVdpZGdldFV0aWxzXG4gKiBAZnVuY3Rpb25cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgZmllbGQgdmFsdWUgZm9yIHJhbmdlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1pblZhbHVlIG1pbiB2YWx1ZSBzZWxlY3RlZFxuICogQHBhcmFtIHtzdHJpbmd9IG1heFZhbHVlIG1heCB2YWx1ZSBzZWxlY3RlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmFuZ2VGaWVsZFZhbHVlKG1pblZhbHVlLCBtYXhWYWx1ZSkge1xuICAgIGxldCBmaWVsZFZhbHVlO1xuICAgIGlmIChpc0RlZmluZWRBbmROb3RFbXB0eShtaW5WYWx1ZSkgJiYgaXNEZWZpbmVkQW5kTm90RW1wdHkobWF4VmFsdWUpKSB7XG4gICAgICAgIGZpZWxkVmFsdWUgPSBbbWluVmFsdWUsIG1heFZhbHVlXTtcbiAgICB9IGVsc2UgaWYgKGlzRGVmaW5lZEFuZE5vdEVtcHR5KG1pblZhbHVlKSkge1xuICAgICAgICBmaWVsZFZhbHVlID0gbWluVmFsdWU7XG4gICAgfSBlbHNlIGlmIChpc0RlZmluZWRBbmROb3RFbXB0eShtYXhWYWx1ZSkpIHtcbiAgICAgICAgZmllbGRWYWx1ZSA9IG1heFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZmllbGRWYWx1ZTtcbn1cbi8qKlxuICogQG5nZG9jIGZ1bmN0aW9uXG4gKiBAbmFtZSB3bS53aWRnZXRzLmxpdmUuZ2V0UmFuZ2VNYXRjaE1vZGVcbiAqIEBtZXRob2RPZiB3bS53aWRnZXRzLmxpdmUuTGl2ZVdpZGdldFV0aWxzXG4gKiBAZnVuY3Rpb25cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgbWF0Y2ggbW9kZSBmb3IgcmFuZ2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWluVmFsdWUgbWluIHZhbHVlIHNlbGVjdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gbWF4VmFsdWUgbWF4IHZhbHVlIHNlbGVjdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5nZU1hdGNoTW9kZShtaW5WYWx1ZSwgbWF4VmFsdWUpIHtcbiAgICBsZXQgbWF0Y2hNb2RlO1xuICAgIC8vIElmIHR3byB2YWx1ZXMgZXhpc3RzLCB0aGVuIGl0IGlzIGJldHdlZW4uIE90aGVyd2lzZSwgZ3JlYXRlciBvciBsZXNzZXJcbiAgICBpZiAoaXNEZWZpbmVkQW5kTm90RW1wdHkobWluVmFsdWUpICYmIGlzRGVmaW5lZEFuZE5vdEVtcHR5KG1heFZhbHVlKSkge1xuICAgICAgICBtYXRjaE1vZGUgPSBNYXRjaE1vZGUuQkVUV0VFTjtcbiAgICB9IGVsc2UgaWYgKGlzRGVmaW5lZEFuZE5vdEVtcHR5KG1pblZhbHVlKSkge1xuICAgICAgICBtYXRjaE1vZGUgPSBNYXRjaE1vZGUuR1JFQVRFUjtcbiAgICB9IGVsc2UgaWYgKGlzRGVmaW5lZEFuZE5vdEVtcHR5KG1heFZhbHVlKSkge1xuICAgICAgICBtYXRjaE1vZGUgPSBNYXRjaE1vZGUuTEVTU0VSO1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hNb2RlO1xufVxuLyoqXG4gKiBAbmdkb2MgZnVuY3Rpb25cbiAqIEBuYW1lIHdtLndpZGdldHMubGl2ZS5nZXRFbmFibGVFbXB0eUZpbHRlclxuICogQG1ldGhvZE9mIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHNcbiAqIEBmdW5jdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgZW5hYmxlIGZpbHRlciBvcHRpb25zIGlzIHNldCBvbiBsaXZlIGZpbHRlclxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbmFibGVlbXB0eWZpbHRlciBlbXB0eSBmaWx0ZXIgb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5hYmxlRW1wdHlGaWx0ZXIoZW5hYmxlZW1wdHlmaWx0ZXIpIHtcbiAgICByZXR1cm4gZW5hYmxlZW1wdHlmaWx0ZXIgJiYgXy5pbnRlcnNlY3Rpb24oZW5hYmxlZW1wdHlmaWx0ZXIuc3BsaXQoJywnKSwgTElWRV9DT05TVEFOVFMuTlVMTF9FTVBUWSkubGVuZ3RoID4gMDtcbn1cbi8qKlxuICogQG5nZG9jIGZ1bmN0aW9uXG4gKiBAbmFtZSB3bS53aWRnZXRzLmxpdmUuZ2V0RW1wdHlNYXRjaE1vZGVcbiAqIEBtZXRob2RPZiB3bS53aWRnZXRzLmxpdmUuTGl2ZVdpZGdldFV0aWxzXG4gKiBAZnVuY3Rpb25cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgbWF0Y2ggbW9kZSBiYXNlZCBvbiB0aGUgZmlsdGVyIHNlbGVjdGVkXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGVuYWJsZWVtcHR5ZmlsdGVyIGVtcHR5IGZpbHRlciBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbXB0eU1hdGNoTW9kZShlbmFibGVlbXB0eWZpbHRlcikge1xuICAgIGxldCBtYXRjaE1vZGU7XG4gICAgY29uc3QgZW1wdHlGaWx0ZXJPcHRpb25zID0gXy5zcGxpdChlbmFibGVlbXB0eWZpbHRlciwgJywnKTtcbiAgICBpZiAoXy5pbnRlcnNlY3Rpb24oZW1wdHlGaWx0ZXJPcHRpb25zLCBMSVZFX0NPTlNUQU5UUy5OVUxMX0VNUFRZKS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgbWF0Y2hNb2RlID0gTWF0Y2hNb2RlLk5VTExPUkVNUFRZO1xuICAgIH0gZWxzZSBpZiAoXy5pbmNsdWRlcyhlbXB0eUZpbHRlck9wdGlvbnMsIExJVkVfQ09OU1RBTlRTLk5VTEwpKSB7XG4gICAgICAgIG1hdGNoTW9kZSA9IE1hdGNoTW9kZS5OVUxMO1xuICAgIH0gZWxzZSBpZiAoXy5pbmNsdWRlcyhlbXB0eUZpbHRlck9wdGlvbnMsIExJVkVfQ09OU1RBTlRTLkVNUFRZKSkge1xuICAgICAgICBtYXRjaE1vZGUgPSBNYXRjaE1vZGUuRU1QVFk7XG4gICAgfVxuICAgIHJldHVybiBtYXRjaE1vZGU7XG59XG5cbi8qKlxuICogY29udmVydHMgdGhlIGRhdGEgcGFzc2VkIHRvIGFycmF5LlxuICogIC0+IEFycmF5OiBbMSwyLDNdIC0gWzEsMiwzXVxuICogIC0+IFN0cmluZzogYSxiLGMgLSBbJ2EnLCdiJywnYyddXG4gKiAgLT4gb2JqZWN0OiB7YToxfSAtIFt7YToxfV1cbiAqICAtPiBudWxsIC0gW11cbiAqICAtPiB1bmRlZmluZWQgLSBbXVxuICogQHBhcmFtIGRhdGFcbiAqIEByZXR1cm5zIHtBcnJheTxhbnk+fVxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQXJyYXlGcm9tID0gKGRhdGEpOiBBcnJheTxhbnk+ID0+IHtcblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKGRhdGEpIHx8IF8uaXNOdWxsKGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1N0cmluZyhkYXRhKSkge1xuICAgICAgICBkYXRhID0gZGF0YS5zcGxpdCgnLCcpLm1hcChGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCwgU3RyaW5nLnByb3RvdHlwZS50cmltKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNBcnJheShkYXRhKSkge1xuICAgICAgICBkYXRhID0gW2RhdGFdO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xufTtcblxuLyoqXG4gKiBAbmdkb2MgZnVuY3Rpb25cbiAqIEBuYW1lIHdtLndpZGdldHMubGl2ZS5hcHBseUZpbHRlck9uRmllbGRcbiAqIEBtZXRob2RPZiB3bS53aWRnZXRzLmxpdmUuTGl2ZVdpZGdldFV0aWxzXG4gKiBAZnVuY3Rpb25cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgdXBkYXRlZCB2YWx1ZXMgd2hlbiBmaWx0ZXIgb24gZmllbGQgaXMgY2hhbmdlZFxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSAkc2NvcGUgc2NvcGUgb2YgdGhlIGZpbHRlciBmaWVsZC9mb3JtIGZpZWxkXG4gKiBAcGFyYW0ge29iamVjdH0gZmlsdGVyRGVmIGZpbHRlci9mb3JtIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzRmlyc3QgYm9vbGVhbiB2YWx1ZSB0byBjaGVjayBpZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gbG9hZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlGaWx0ZXJPbkZpZWxkKGRhdGFTb3VyY2UsIGZpbHRlckRlZiwgZm9ybUZpZWxkcywgbmV3VmFsLCBvcHRpb25zOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZpbHRlckRlZi5maWVsZCB8fCBmaWx0ZXJEZWYua2V5O1xuICAgIGNvbnN0IGZpbHRlck9uRmllbGRzID0gXy5maWx0ZXIoZm9ybUZpZWxkcywgeyAnZmlsdGVyLW9uJzogZmllbGROYW1lIH0pO1xuXG4gICAgbmV3VmFsID0gZmlsdGVyRGVmWydpcy1yYW5nZSddID8gZ2V0UmFuZ2VGaWVsZFZhbHVlKGZpbHRlckRlZi5taW5WYWx1ZSwgZmlsdGVyRGVmLm1heFZhbHVlKSA6IChpc0RlZmluZWQobmV3VmFsKSA/IG5ld1ZhbCA6IGZpbHRlckRlZi52YWx1ZSk7XG4gICAgaWYgKCFkYXRhU291cmNlIHx8IChvcHRpb25zLmlzRmlyc3QgJiYgKF8uaXNVbmRlZmluZWQobmV3VmFsKSB8fCBuZXdWYWwgPT09ICcnKSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBMb29wIG92ZXIgdGhlIGZpZWxkcyBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgZmllbGQgaXMgZmlsdGVyIG9uIGZpZWxkXG4gICAgXy5mb3JFYWNoKGZpbHRlck9uRmllbGRzLCBmaWx0ZXJGaWVsZCA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlcktleSA9IGZpbHRlckZpZWxkLmZpZWxkIHx8IGZpbHRlckZpZWxkLmtleTtcbiAgICAgICAgY29uc3QgbG9va1VwRmllbGQgPSBmaWx0ZXJEZWZbJ2xvb2t1cC1maWVsZCddIHx8IGZpbHRlckRlZi5fcHJpbWFyeUtleTtcbiAgICAgICAgY29uc3QgZmlsdGVyV2lkZ2V0ID0gZmlsdGVyRmllbGRbJ2VkaXQtd2lkZ2V0LXR5cGUnXSB8fCBmaWx0ZXJGaWVsZC53aWRnZXR0eXBlO1xuICAgICAgICBsZXQgZmlsdGVyRmllbGRzID0ge307XG4gICAgICAgIGxldCBmaWx0ZXJPbiA9IGZpbHRlckZpZWxkWydmaWx0ZXItb24nXTtcbiAgICAgICAgbGV0IGZpbHRlclZhbDtcbiAgICAgICAgbGV0IGZpZWxkQ29sdW1uO1xuICAgICAgICBsZXQgbWF0Y2hNb2RlO1xuICAgICAgICBpZiAoIWlzRGF0YVNldFdpZGdldChmaWx0ZXJXaWRnZXQpIHx8IGZpbHRlckZpZWxkLmlzRGF0YVNldEJvdW5kIHx8IGZpbHRlck9uID09PSBmaWx0ZXJLZXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGb3IgcmVsYXRlZCBmaWVsZHMsIGFkZCBsb29rdXBmaWVsZCBmb3IgcXVlcnkgZ2VuZXJhdGlvblxuICAgICAgICBpZiAoZmlsdGVyRGVmICYmIGZpbHRlckRlZlsnaXMtcmVsYXRlZCddKSB7XG4gICAgICAgICAgICBmaWx0ZXJPbiArPSAnLicgKyBsb29rVXBGaWVsZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNEZWZpbmVkKG5ld1ZhbCkpIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJEZWZbJ2lzLXJhbmdlJ10pIHtcbiAgICAgICAgICAgICAgICBtYXRjaE1vZGUgPSBnZXRSYW5nZU1hdGNoTW9kZShmaWx0ZXJEZWYubWluVmFsdWUsIGZpbHRlckRlZi5tYXhWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGdldEVuYWJsZUVtcHR5RmlsdGVyKG9wdGlvbnMuZW5hYmxlZW1wdHlmaWx0ZXIpICYmIG5ld1ZhbCA9PT0gTElWRV9DT05TVEFOVFMuRU1QVFlfS0VZKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hNb2RlID0gZ2V0RW1wdHlNYXRjaE1vZGUob3B0aW9ucy5lbmFibGVlbXB0eWZpbHRlcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1hdGNoTW9kZSA9IE1hdGNoTW9kZS5FUVVBTFM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWx0ZXJWYWwgPSAoXy5pc09iamVjdChuZXdWYWwpICYmICFfLmlzQXJyYXkobmV3VmFsKSkgPyBuZXdWYWxbbG9va1VwRmllbGRdIDogbmV3VmFsO1xuICAgICAgICAgICAgZmlsdGVyRmllbGRzW2ZpbHRlck9uXSA9IHtcbiAgICAgICAgICAgICAgICAndmFsdWUnOiBmaWx0ZXJWYWwsXG4gICAgICAgICAgICAgICAgJ21hdGNoTW9kZSc6IG1hdGNoTW9kZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbHRlckZpZWxkcyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkQ29sdW1uID0gZmlsdGVyS2V5O1xuXG4gICAgICAgIGlmIChpc1NlYXJjaFdpZGdldFR5cGUoZmlsdGVyV2lkZ2V0KSAmJiBmaWx0ZXJGaWVsZC5kYXRhb3B0aW9ucykge1xuICAgICAgICAgICAgZmlsdGVyRmllbGQuZGF0YW9wdGlvbnMuZmlsdGVyRmllbGRzID0gZmlsdGVyRmllbGRzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0YVNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9ESVNUSU5DVF9EQVRBX0JZX0ZJRUxEUywge1xuICAgICAgICAgICAgICAgICdmaWVsZHMnOiBmaWVsZENvbHVtbixcbiAgICAgICAgICAgICAgICAnZmlsdGVyRmllbGRzJzogZmlsdGVyRmllbGRzLFxuICAgICAgICAgICAgICAgICdwYWdlc2l6ZSc6IGZpbHRlckZpZWxkLmxpbWl0XG4gICAgICAgICAgICB9KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBzZXRGaWVsZERhdGFTZXQoZmlsdGVyRmllbGQsIHJlc3BvbnNlLmRhdGEsIHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNDb2x1bW46IGZpZWxkQ29sdW1uLFxuICAgICAgICAgICAgICAgICAgICB3aWRnZXQ6IG9wdGlvbnMud2lkZ2V0IHx8ICd3aWRnZXR0eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgaXNFbmFibGVFbXB0eUZpbHRlcjogZ2V0RW5hYmxlRW1wdHlGaWx0ZXIob3B0aW9ucy5lbmFibGVlbXB0eWZpbHRlciksXG4gICAgICAgICAgICAgICAgICAgIEVNUFRZX1ZBTFVFOiBvcHRpb25zLkVNUFRZX1ZBTFVFXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBub29wKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vLyBUcmFuc2Zvcm0gZGF0YSBhcyByZXF1aXJlZCBieSBkYXRhIHRhYmxlXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShkYXRhT2JqZWN0LCB2YXJpYWJsZU5hbWUpIHtcbiAgICBsZXQgbmV3T2JqLFxuICAgICAgICB0ZW1wQXJyLFxuICAgICAgICBrZXlzLFxuICAgICAgICBvbGRLZXlzLFxuICAgICAgICBudW1LZXlzLFxuICAgICAgICBuZXdPYmplY3QsXG4gICAgICAgIHRlbXBPYmo7XG5cbiAgICAvLyBkYXRhIHNhbml0eSB0ZXN0aW5nXG4gICAgZGF0YU9iamVjdCA9IGRhdGFPYmplY3QgfHwgW107XG4gICAgLy8gaWYgdGhlIGRhdGFPYmplY3QgaXMgbm90IGFuIGFycmF5IG1ha2UgaXQgYW4gYXJyYXlcbiAgICBpZiAoIV8uaXNBcnJheShkYXRhT2JqZWN0KSkge1xuICAgICAgICAvLyBpZiB0aGUgZGF0YSByZXR1cm5lZCBpcyBvZiB0eXBlIHN0cmluZywgbWFrZSBpdCBhbiBvYmplY3QgaW5zaWRlIGFuIGFycmF5XG4gICAgICAgIGlmIChfLmlzU3RyaW5nKGRhdGFPYmplY3QpKSB7XG4gICAgICAgICAgICBrZXlzID0gdmFyaWFibGVOYW1lLnN1YnN0cmluZyh2YXJpYWJsZU5hbWUuaW5kZXhPZignLicpICsgMSwgdmFyaWFibGVOYW1lLmxlbmd0aCkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIG9sZEtleXMgPSBbXTtcbiAgICAgICAgICAgIG51bUtleXMgPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgICAgIG5ld09iamVjdCA9IHt9O1xuICAgICAgICAgICAgdGVtcE9iaiA9IG5ld09iamVjdDtcblxuICAgICAgICAgICAgLy8gbG9vcCBvdmVyIHRoZSBrZXlzIHRvIGZvcm0gYXBwcm9wcmlhdGUgZGF0YSBvYmplY3QgcmVxdWlyZWQgZm9yIGdyaWRcbiAgICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGxvb3Agb3ZlciBvbGQga2V5cyB0byBjcmVhdGUgbmV3IG9iamVjdCBhdCB0aGUgaXRlcmF0aXZlIGxldmVsXG4gICAgICAgICAgICAgICAgb2xkS2V5cy5mb3JFYWNoKG9sZEtleSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRlbXBPYmogPSBuZXdPYmplY3Rbb2xkS2V5XTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0ZW1wT2JqW2tleV0gPSBpbmRleCA9PT0gbnVtS2V5cyAtIDEgPyBkYXRhT2JqZWN0IDoge307XG4gICAgICAgICAgICAgICAgb2xkS2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBzdHJpbmcgZGF0YSB0byB0aGUgbmV3IGRhdGFPYmplY3QgZm9ybWVkXG4gICAgICAgICAgICBkYXRhT2JqZWN0ID0gbmV3T2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIGRhdGFPYmplY3QgPSBbZGF0YU9iamVjdF07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLyppZiB0aGUgZGF0YU9iamVjdCBpcyBhbiBhcnJheSBhbmQgZWFjaCB2YWx1ZSBpcyBhIHN0cmluZywgdGhlbiBsaXRlLXRyYW5zZm9ybSB0aGUgc3RyaW5nIHRvIGFuIG9iamVjdFxuICAgICAgICAgKiBsaXRlLXRyYW5zZm9ybToganVzdCBjaGVja2luZyBpZiB0aGUgZmlyc3QgdmFsdWUgaXMgc3RyaW5nIGFuZCB0aGVuIHRyYW5zZm9ybWluZyB0aGUgb2JqZWN0LCBpbnN0ZWFkIG9mIHRyYXZlcnNpbmcgdGhyb3VnaCB0aGUgd2hvbGUgYXJyYXlcbiAgICAgICAgICogKi9cbiAgICAgICAgaWYgKF8uaXNTdHJpbmcoZGF0YU9iamVjdFswXSkpIHtcbiAgICAgICAgICAgIHRlbXBBcnIgPSBbXTtcbiAgICAgICAgICAgIF8uZm9yRWFjaChkYXRhT2JqZWN0LCBzdHIgPT4ge1xuICAgICAgICAgICAgICAgIG5ld09iaiA9IHt9O1xuICAgICAgICAgICAgICAgIG5ld09ialt2YXJpYWJsZU5hbWUuc3BsaXQoJy4nKS5qb2luKCctJyldID0gc3RyO1xuICAgICAgICAgICAgICAgIHRlbXBBcnIucHVzaChuZXdPYmopO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkYXRhT2JqZWN0ID0gdGVtcEFycjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YU9iamVjdDtcbn1cbiJdfQ==
581
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvdXRpbHMvZGF0YS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFDSCxJQUFJLEVBQ0osTUFBTSxFQUNOLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUNsQixRQUFRLEVBQ1IsWUFBWSxFQUNaLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUM1QixNQUFNLEVBQ04sUUFBUSxFQUNSLFFBQVEsRUFDUixXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFDMUIsS0FBSyxFQUNSLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUV2QixNQUFNLENBQU4sSUFBWSxlQUtYO0FBTEQsV0FBWSxlQUFlO0lBQ3ZCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0lBQ2pCLGdDQUFhLENBQUE7QUFDakIsQ0FBQyxFQUxXLGVBQWUsS0FBZixlQUFlLFFBSzFCO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIsV0FBVyxFQUFFLG1CQUFtQjtJQUNoQyxhQUFhLEVBQUUsVUFBVTtJQUN6QixXQUFXLEVBQUUsS0FBSztJQUNsQixhQUFhLEVBQUUsT0FBTztJQUN0QixZQUFZLEVBQUUsQ0FBQyxNQUFN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QUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQ2hELE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7WUFDSCxVQUFVLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UsIGRlYm91bmNlLCBwcm9jZXNzRmlsdGVyRXhwQmluZE5vZGUgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBGb3JtV2lkZ2V0VHlwZSwgaXNEZWZpbmVkLCBNYXRjaE1vZGUgfSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7IGlzRGF0YVNldFdpZGdldCB9IGZyb20gJy4vd2lkZ2V0LXV0aWxzJztcbmltcG9ydCB7XG4gICAgZWFjaCxcbiAgICBmaWx0ZXIsXG4gICAgZm9yRWFjaCwgZ2V0LCBoZWFkLFxuICAgIGluY2x1ZGVzLFxuICAgIGludGVyc2VjdGlvbixcbiAgICBpc0FycmF5LCBpc0VtcHR5LCBpc0Z1bmN0aW9uLFxuICAgIGlzTnVsbCxcbiAgICBpc09iamVjdCxcbiAgICBpc1N0cmluZyxcbiAgICBpc1VuZGVmaW5lZCwga2V5cywgcmVwbGFjZSxcbiAgICBzcGxpdFxufSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7IH07XG5cbmV4cG9ydCBlbnVtIExpdmVfT3BlcmF0aW9ucyB7XG4gICAgSU5TRVJUID0gJ2luc2VydCcsXG4gICAgVVBEQVRFID0gJ3VwZGF0ZScsXG4gICAgREVMRVRFID0gJ2RlbGV0ZScsXG4gICAgUkVBRCA9ICdyZWFkJ1xufVxuXG5leHBvcnQgY29uc3QgQUxMRklFTERTID0gJ0FsbCBGaWVsZHMnO1xuXG5leHBvcnQgY29uc3QgTElWRV9DT05TVEFOVFMgPSB7XG4gICAgJ0VNUFRZX0tFWSc6ICdFTVBUWV9OVUxMX0ZJTFRFUicsXG4gICAgJ0VNUFRZX1ZBTFVFJzogJ05vIFZhbHVlJyxcbiAgICAnTEFCRUxfS0VZJzogJ2tleScsXG4gICAgJ0xBQkVMX1ZBTFVFJzogJ3ZhbHVlJyxcbiAgICAnTlVMTF9FTVBUWSc6IFsnbnVsbCcsICdlbXB0eSddLFxuICAgICdOVUxMJzogJ251bGwnLFxuICAgICdFTVBUWSc6ICdlbXB0eSdcbn07XG5cbi8vIFJldHVybnMgdHJ1ZSBpZiB3aWRnZXQgaXMgYXV0b2NvbXBsZXRlIG9yIGNoaXBzXG5leHBvcnQgZnVuY3Rpb24gaXNTZWFyY2hXaWRnZXRUeXBlKHdpZGdldCkge1xuICAgIHJldHVybiBpbmNsdWRlcyhbRm9ybVdpZGdldFR5cGUuQVVUT0NPTVBMRVRFLCBGb3JtV2lkZ2V0VHlwZS5UWVBFQUhFQUQsIEZvcm1XaWRnZXRUeXBlLkNISVBTXSwgd2lkZ2V0KTtcbn1cblxuZnVuY3Rpb24gb25TdWNjZXNzKHJlc3BvbnNlLCByZXMsIHJlaikge1xuICAgIGlmIChyZXNwb25zZS5lcnJvcikge1xuICAgICAgICByZWoocmVzcG9uc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcyhyZXNwb25zZSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGVyZm9ybURhdGFPcGVyYXRpb24oZGF0YVNvdXJjZSwgcmVxdWVzdERhdGEsIG9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHtcbiAgICAgICAgaWYgKGRhdGFTb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5TVVBQT1JUU19DUlVEKSkge1xuICAgICAgICAgICAgbGV0IGZuO1xuICAgICAgICAgICAgY29uc3Qgb3BlcmF0aW9uVHlwZSA9IG9wdGlvbnMub3BlcmF0aW9uVHlwZTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BlcmF0aW9uVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgTGl2ZV9PcGVyYXRpb25zLlVQREFURTpcbiAgICAgICAgICAgICAgICAgICAgZm4gPSBEYXRhU291cmNlLk9wZXJhdGlvbi5VUERBVEVfUkVDT1JEO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIExpdmVfT3BlcmF0aW9ucy5JTlNFUlQ6XG4gICAgICAgICAgICAgICAgICAgIGZuID0gRGF0YVNvdXJjZS5PcGVyYXRpb24uSU5TRVJUX1JFQ09SRDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMaXZlX09wZXJhdGlvbnMuREVMRVRFOlxuICAgICAgICAgICAgICAgICAgICBmbiA9IERhdGFTb3VyY2UuT3BlcmF0aW9uLkRFTEVURV9SRUNPUkQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0YVNvdXJjZS5leGVjdXRlKGZuLCByZXF1ZXN0RGF0YSkudGhlbihyZXNwb25zZSA9PiBvblN1Y2Nlc3MocmVzcG9uc2UsIHJlcywgcmVqKSwgcmVqKTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhU291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uSVNfQVBJX0FXQVJFKSkge1xuICAgICAgICAgICAgaWYoZGF0YVNvdXJjZS5jYXRlZ29yeSA9PT0gXCJ3bS5DcnVkVmFyaWFibGVcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IG9wdGlvbnMub3BlcmF0aW9uVHlwZSA9PT0gJ2luc2VydCcgPyAnY3JlYXRlJyA6IChvcHRpb25zLm9wZXJhdGlvblR5cGUgPT09ICdkZWxldGUnID8gJ2RlbGV0ZScgOiAndXBkYXRlJyk7XG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLklOVk9LRSwge1xuICAgICAgICAgICAgICAgICAgICAnc2tpcE5vdGlmaWNhdGlvbic6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24nOiBvcGVyYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICdpbnB1dEZpZWxkcyc6IHJlcXVlc3REYXRhXG4gICAgICAgICAgICAgICAgfSkudGhlbihyZXMsIHJlaik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5TRVRfSU5QVVQsIHJlcXVlc3REYXRhKTtcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uSU5WT0tFLCB7XG4gICAgICAgICAgICAgICAgICAgICdza2lwTm90aWZpY2F0aW9uJzogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pLnRoZW4ocmVzLCByZWopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzKHJlcXVlc3REYXRhKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmcmVzaERhdGFTb3VyY2UoZGF0YVNvdXJjZSwgb3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgICAgICBpZiAoIWRhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIHJlaigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRhdGFTb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5MSVNUX1JFQ09SRFMsIHtcbiAgICAgICAgICAgICdmaWx0ZXJGaWVsZHMnOiBvcHRpb25zLmZpbHRlckZpZWxkcyB8fCB7fSxcbiAgICAgICAgICAgICdvcmRlckJ5Jzogb3B0aW9ucy5vcmRlckJ5LFxuICAgICAgICAgICAgJ3BhZ2UnOiBvcHRpb25zLnBhZ2UgfHwgMSxcbiAgICAgICAgICAgICdsb2dpY2FsT3AnIDogb3B0aW9ucy5jb25kaXRpb24gfHwgJydcbiAgICAgICAgfSkudGhlbihyZXMsIHJlaik7XG4gICAgfSk7XG59XG5cbi8qKlxuICogQG5nZG9jIGZ1bmN0aW9uXG4gKiBAbmFtZSB3bS53aWRnZXRzLmxpdmUuZmV0Y2hSZWxhdGVkRmllbGREYXRhXG4gKiBAbWV0aG9kT2Ygd20ud2lkZ2V0cy5saXZlLkxpdmVXaWRnZXRVdGlsc1xuICogQGZ1bmN0aW9uXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIGZ1bmN0aW9uIGZldGNoZXMgdGhlIGRhdGEgZm9yIHRoZSByZWxhdGVkIGZpZWxkIGluIGxpdmUgZm9ybS8gZ3JpZFxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb2x1bW5EZWYgZmllbGQgZGVmaW5pdGlvblxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0ZWRGaWVsZCByZWxhdGVkIGZpZWxkIG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhZmllbGQgRGF0YWZpZWxkIHRvIGJlIHNldCBvbiB3aWRnZXRcbiAqIEBwYXJhbSB7c3RyaW5nfSB3aWRnZXQgVHlwZSBvZiB0aGUgd2lkZ2V0XG4gKiBAcGFyYW0ge29iamVjdH0gZWxTY29wZSBlbGVtZW50IHNjb3BlXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyZW50U2NvcGUgbGl2ZSBmb3JtLy8gZ3JpZCBzY29wZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2hSZWxhdGVkRmllbGREYXRhKGRhdGFTb3VyY2UsIGZvcm1GaWVsZCwgb3B0aW9ucykge1xuICAgIGxldCBwcmltYXJ5S2V5cztcbiAgICBsZXQgZGlzcGxheUZpZWxkO1xuICAgIGNvbnN0IHJlbGF0ZWRGaWVsZCA9IG9wdGlvbnMucmVsYXRlZEZpZWxkO1xuICAgIGNvbnN0IGRhdGFmaWVsZCA9IG9wdGlvbnMuZGF0YWZpZWxkO1xuXG4gICAgaWYgKCFkYXRhU291cmNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcHJpbWFyeUtleXMgPSBkYXRhU291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX1JFTEFURURfUFJJTUFSWV9LRVlTLCByZWxhdGVkRmllbGQpO1xuICAgIGZvcm1GaWVsZC5kYXRhZmllbGQgPSBkYXRhZmllbGQ7XG4gICAgZm9ybUZpZWxkLl9wcmltYXJ5S2V5ID0gaXNFbXB0eShwcmltYXJ5S2V5cykgPyB1bmRlZmluZWQgOiBwcmltYXJ5S2V5c1swXTtcbiAgICBmb3JtRmllbGQuY29tcGFyZWJ5ID0gcHJpbWFyeUtleXMgJiYgcHJpbWFyeUtleXMuam9pbignLCcpO1xuXG4gICAgZGlzcGxheUZpZWxkID0gZGF0YWZpZWxkID09PSBBTExGSUVMRFMgPyB1bmRlZmluZWQgOiBkYXRhZmllbGQ7XG4gICAgZm9ybUZpZWxkLmRpc3BsYXlmaWVsZCA9IGRpc3BsYXlGaWVsZCA9IChmb3JtRmllbGQuZGlzcGxheWZpZWxkIHx8IGRpc3BsYXlGaWVsZCB8fCBmb3JtRmllbGQuX3ByaW1hcnlLZXkpO1xuXG4gICAgaWYgKGlzU2VhcmNoV2lkZ2V0VHlwZShmb3JtRmllbGRbb3B0aW9ucy53aWRnZXRdKSkge1xuICAgICAgICBmb3JtRmllbGQuZGF0YW9wdGlvbnMgPSB7ICdyZWxhdGVkRmllbGQnOiByZWxhdGVkRmllbGQsICdmaWx0ZXJFeHByJzogZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zID8gZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zIDoge30gfTtcbiAgICAgICAgZm9ybUZpZWxkLmRhdGFzb3VyY2UgPSBkYXRhU291cmNlO1xuICAgICAgICBmb3JtRmllbGQuc2VhcmNoa2V5ID0gZm9ybUZpZWxkLnNlYXJjaGtleSB8fCBkaXNwbGF5RmllbGQ7XG4gICAgICAgIGZvcm1GaWVsZC5kaXNwbGF5bGFiZWwgPSBmb3JtRmllbGQuZGlzcGxheWZpZWxkID0gKGZvcm1GaWVsZC5kaXNwbGF5bGFiZWwgfHwgZGlzcGxheUZpZWxkKTtcbiAgICAgICAgaWYgKGZvcm1GaWVsZC5zaG93UGVuZGluZ1NwaW5uZXIpIHtcbiAgICAgICAgICAgIGZvcm1GaWVsZC5zaG93UGVuZGluZ1NwaW5uZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGludGVycG9sYXRlQmluZEV4cHJlc3Npb25zKGZvcm1GaWVsZC52aWV3UGFyZW50LCBmb3JtRmllbGQuZmlsdGVyZXhwcmVzc2lvbnMsIChmaWx0ZXJleHByZXNzaW9ucykgPT4ge1xuICAgICAgICAgICAgZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zID0gZmlsdGVyZXhwcmVzc2lvbnM7XG4gICAgICAgICAgICBkYXRhU291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX1JFTEFURURfVEFCTEVfREFUQSwge1xuICAgICAgICAgICAgICAgIHJlbGF0ZWRGaWVsZCxcbiAgICAgICAgICAgICAgICBwYWdlc2l6ZTogZm9ybUZpZWxkLmxpbWl0LFxuICAgICAgICAgICAgICAgIG9yZGVyQnk6IGZvcm1GaWVsZC5vcmRlcmJ5ID8gcmVwbGFjZShmb3JtRmllbGQub3JkZXJieSwgLzovZywgJyAnKSA6ICcnLFxuICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkczoge30sXG4gICAgICAgICAgICAgICAgZmlsdGVyRXhwcjogZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zID8gZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zIDoge31cbiAgICAgICAgICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5kYXRhc2V0ID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICBmb3JtRmllbGQuZGlzcGxheWZpZWxkID0gZm9ybUZpZWxkLmRpc3BsYXlmaWVsZCB8fCBoZWFkKGtleXMoZ2V0KHJlc3BvbnNlLCAnWzBdJykpKTtcbiAgICAgICAgICAgICAgICBpZiAoZm9ybUZpZWxkLnNob3dQZW5kaW5nU3Bpbm5lcikge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQuc2hvd1BlbmRpbmdTcGlubmVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgbm9vcCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiB1c2VkIHRvIGludGVycG9sYXRlIHRoZSBiaW5kIGV4cHJlc3Npb24gZm9yIGtleXMgaW4gdGhlIHF1ZXJ5IGJ1aWxkZXJcbiAqIEBwYXJhbSBjb250ZXh0IHdoZXJlIHdlIGZpbmQgdGhlIHZhcmlhYmxlIG9ialxuICogQHBhcmFtIGZpbHRlcmV4cHJlc3Npb25zIC0gb2JqIGNvbnRhaW5pbmcgYWxsIHRoZSBydWxlIG9ianNcbiAqIEBwYXJhbSBjYWxsYmFja0ZuIC0gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdpdGggdGhlIG5ldyByZXBsYWNlZCB2YWx1ZXMgaWYgYW55IGluIHRoZSBmaWx0ZXJleHByZXNzaW9ucyBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGludGVycG9sYXRlQmluZEV4cHJlc3Npb25zID0gKGNvbnRleHQsIGZpbHRlcmV4cHJlc3Npb25zLCBjYWxsYmFja0ZuKSA9PiB7XG4gICAgY29uc3QgZGVib3VuY2VkRm4gPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGxiYWNrRm4pKSB7XG4gICAgICAgICAgICBjYWxsYmFja0ZuKGZpbHRlcmV4cHJlc3Npb25zKTtcbiAgICAgICAgfVxuICAgIH0sIDMwMCk7XG5cbiAgICAvKipcbiAgICAgKiBjYWxsaW5nIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gZmlyc3QgZm9yIHRoZSBjYXNlIHdoZXJlIGlmIHRoZXJlIGlzIGFueSBmaWx0ZXJleHByZXNzaW9uIHdpdGhvdXQgdGhlIGJpbmRlZHZhcmlhYmxlcy5cbiAgICAgKiB3aXRob3V0IHRoaXMgaXQgd2lsbCBuZXZlciBiZSBjYWxsZWQuIHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZSB3aWxsIGJlIGNhbGxlZCBvbmx5IGZvciB0aGUgYmluZGVkIHZhcmlhYmxlIGV4cHJlc3Npb25zLlxuICAgICAqL1xuICAgIGRlYm91bmNlZEZuKCk7XG4gICAgY29uc3QgZmlsdGVyRXhwcmVzc2lvbnMgPSBmaWx0ZXJleHByZXNzaW9ucyA/IChpc09iamVjdChmaWx0ZXJleHByZXNzaW9ucykgPyBmaWx0ZXJleHByZXNzaW9ucyA6IEpTT04ucGFyc2UoZmlsdGVyZXhwcmVzc2lvbnMpKSA6IHt9O1xuICAgIGNvbnN0IGRlc3Ryb3lGbiA9IGNvbnRleHQucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIgPyBjb250ZXh0LnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyLmJpbmQoY29udGV4dCkgOiBub29wO1xuICAgIGNvbnN0IGZpbHRlclN1YnNjcmlwdGlvbiA9IHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZShjb250ZXh0LCBmaWx0ZXJFeHByZXNzaW9ucykuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGZpbHRlcmV4cHJlc3Npb25zID0gSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZmlsdGVyRXhwcmVzc2lvbnMpO1xuICAgICAgICBkZWJvdW5jZWRGbigpO1xuICAgIH0pO1xuICAgIGRlc3Ryb3lGbigoKSA9PiBmaWx0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG59O1xuLyoqXG4gKiBAbmdkb2MgZnVuY3Rpb25cbiAqIEBuYW1lIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHMjZ2V0RGlzdGluY3RGaWVsZFByb3BlcnRpZXNcbiAqIEBtZXRob2RPZiB3bS53aWRnZXRzLmxpdmUuTGl2ZVdpZGdldFV0aWxzXG4gKiBAZnVuY3Rpb25cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgdGhlIHByb3BlcnRpZXMgcmVxdWlyZWQgZm9yIGRhdGFzZXQgd2lkZ2V0c1xuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhU291cmNlIHZhcmlhYmxlIHNvdXJjZSBmb3IgdGhlIHdpZGdldFxuICogQHBhcmFtIHtvYmplY3R9IGZvcm1GaWVsZCBkZWZpbml0aW9uIG9mIHRoZSBjb2x1bW4vIGZpZWxkXG4gKlxuICovXG5leHBvcnQgY29uc3QgZ2V0RGlzdGluY3RGaWVsZFByb3BlcnRpZXMgPSAoZGF0YVNvdXJjZSwgZm9ybUZpZWxkKSA9PiB7XG4gICAgY29uc3QgcHJvcHM6IGFueSA9IHt9O1xuICAgIGxldCBmaWVsZENvbHVtbjtcbiAgICBpZiAoZm9ybUZpZWxkWydpcy1yZWxhdGVkJ10pIHtcbiAgICAgICAgcHJvcHMudGFibGVOYW1lID0gZm9ybUZpZWxkWydsb29rdXAtdHlwZSddO1xuICAgICAgICBmaWVsZENvbHVtbiA9IGZvcm1GaWVsZFsnbG9va3VwLWZpZWxkJ107XG4gICAgICAgIHByb3BzLmRpc3RpbmN0RmllbGQgPSBmaWVsZENvbHVtbjtcbiAgICAgICAgcHJvcHMuYWxpYXNDb2x1bW4gPSBmaWVsZENvbHVtbi5yZXBsYWNlKCcuJywgJyQnKTsgLy8gRm9yIHJlbGF0ZWQgZmllbGRzLCBJbiByZXNwb25zZSAuIGlzIHJlcGxhY2VkIGJ5ICRcbiAgICAgICAgcHJvcHMuZmlsdGVyRXhwciA9IGZvcm1GaWVsZC5maWx0ZXJleHByZXNzaW9ucyA/IChpc09iamVjdChmb3JtRmllbGQuZmlsdGVyZXhwcmVzc2lvbnMpID8gZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zIDogSlNPTi5wYXJzZShmb3JtRmllbGQuZmlsdGVyZXhwcmVzc2lvbnMpKSA6IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3BzLnRhYmxlTmFtZSA9IGRhdGFTb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5HRVRfRU5USVRZX05BTUUpO1xuICAgICAgICBmaWVsZENvbHVtbiA9IGZvcm1GaWVsZC5maWVsZCB8fCBmb3JtRmllbGQua2V5O1xuICAgICAgICBwcm9wcy5kaXN0aW5jdEZpZWxkID0gZmllbGRDb2x1bW47XG4gICAgICAgIHByb3BzLmFsaWFzQ29sdW1uID0gZmllbGRDb2x1bW47XG4gICAgfVxuICAgIHJldHVybiBwcm9wcztcbn07XG5cbi8qKlxuICogQG5nZG9jIGZ1bmN0aW9uXG4gKiBAbmFtZSB3bS53aWRnZXRzLmxpdmUuTGl2ZVdpZGdldFV0aWxzI2dldERpc3RpbmN0VmFsdWVzXG4gKiBAbWV0aG9kT2Ygd20ud2lkZ2V0cy5saXZlLkxpdmVXaWRnZXRVdGlsc1xuICogQGZ1bmN0aW9uXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIHRoZSBkaXN0aW5jdCB2YWx1ZXMgZm9yIGEgZmllbGRcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZm9ybUZpZWxkIGRlZmluaXRpb24gb2YgdGhlIGNvbHVtbi8gZmllbGRcbiAqIEBwYXJhbSB7c3RyaW5nfSB3aWRnZXQgd2lkZ2V0IHByb3BlcnR5IG9uIHRoZSBmaWVsZFxuICogQHBhcmFtIHtvYmplY3R9IHZhcmlhYmxlIHZhcmlhYmxlIGZvciB0aGUgd2lkZ2V0XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsQmFjayBGdW5jdGlvbiB0byBiZSBleGVjdXRlZCBhZnRlciBmZXRjaGluZyByZXN1bHRzXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlzdGluY3RWYWx1ZXMoZGF0YVNvdXJjZSwgZm9ybUZpZWxkLCB3aWRnZXQpIHtcbiAgICBsZXQgcHJvcHM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgICAgIGlmIChpc0RhdGFTZXRXaWRnZXQoZm9ybUZpZWxkW3dpZGdldF0pICYmICghZm9ybUZpZWxkLmlzRGF0YVNldEJvdW5kIHx8IHdpZGdldCA9PT0gJ2ZpbHRlcndpZGdldCcpKSB7XG4gICAgICAgICAgICBwcm9wcyA9IGdldERpc3RpbmN0RmllbGRQcm9wZXJ0aWVzKGRhdGFTb3VyY2UsIGZvcm1GaWVsZCk7XG4gICAgICAgICAgICBkYXRhU291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX0RJU1RJTkNUX0RBVEFfQllfRklFTERTLCB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBwcm9wcy5kaXN0aW5jdEZpZWxkLFxuICAgICAgICAgICAgICAgIGVudGl0eU5hbWU6IHByb3BzLnRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgICBwYWdlc2l6ZTogZm9ybUZpZWxkLmxpbWl0LFxuICAgICAgICAgICAgICAgIGZpbHRlckV4cHI6IGZvcm1GaWVsZC5maWx0ZXJleHByZXNzaW9ucyA/IEpTT04ucGFyc2UoZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zKSA6IHt9XG4gICAgICAgICAgICB9KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICByZXMoeyAnZmllbGQnOiBmb3JtRmllbGQsICdkYXRhJzogcmVzcG9uc2UuZGF0YSwgJ2FsaWFzQ29sdW1uJzogcHJvcHMuYWxpYXNDb2x1bW4gfSk7XG4gICAgICAgICAgICB9LCByZWopO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbi8vIFNldCB0aGUgZGF0YSBmaWVsZCBwcm9wZXJ0aWVzIG9uIGRhdGFzZXQgd2lkZ2V0c1xuZnVuY3Rpb24gc2V0RGF0YUZpZWxkcyhmb3JtRmllbGQsIG9wdGlvbnM/KSB7XG4gICAgLy8gRm9yIHNlYXJjaCB3aWRnZXQsIHNldCBzZWFyY2gga2V5IGFuZCBkaXNwbGF5IGxhYmVsXG4gICAgaWYgKGlzU2VhcmNoV2lkZ2V0VHlwZShmb3JtRmllbGRbb3B0aW9ucy53aWRnZXRdKSkge1xuICAgICAgICBmb3JtRmllbGQuZGF0YWZpZWxkID0gb3B0aW9ucy5hbGlhc0NvbHVtbiB8fCBMSVZFX0NPTlNUQU5UUy5MQUJFTF9LRVk7XG4gICAgICAgIGZvcm1GaWVsZC5zZWFyY2hrZXkgPSBvcHRpb25zLmRpc3RpbmN0RmllbGQgfHwgTElWRV9DT05TVEFOVFMuTEFCRUxfS0VZO1xuICAgICAgICBmb3JtRmllbGQuZGlzcGxheWxhYmVsID0gZm9ybUZpZWxkLmRpc3BsYXlmaWVsZCA9IChvcHRpb25zLmFsaWFzQ29sdW1uIHx8IExJVkVfQ09OU1RBTlRTLkxBQkVMX1ZBTFVFKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3JtRmllbGQuZGF0YWZpZWxkID0gTElWRV9DT05TVEFOVFMuTEFCRUxfS0VZO1xuICAgIGZvcm1GaWVsZC5kaXNwbGF5ZmllbGQgPSBMSVZFX0NPTlNUQU5UUy5MQUJFTF9WQUxVRTtcbn1cblxuLyoqXG4gKiBAbmdkb2MgZnVuY3Rpb25cbiAqIEBuYW1lIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHMjc2V0RmllbGREYXRhU2V0XG4gKiBAbWV0aG9kT2Ygd20ud2lkZ2V0cy5saXZlLkxpdmVXaWRnZXRVdGlsc1xuICogQGZ1bmN0aW9uXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBGdW5jdGlvbiB0byBzZXQgdGhlIGRhdGFTZXQgb24gdGhlIGZpZWxkc1xuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBmb3JtRmllbGQgZGVmaW5pdGlvbiBvZiB0aGUgY29sdW1uLyBmaWVsZFxuICogQHBhcmFtIHtvYmplY3R9IGRhdGEgZGF0YSByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbGlhc0NvbHVtbiBjb2x1bW4gZmllbGQgbmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IHdpZGdldCB3aWRnZXQgcHJvcGVydHkgb24gdGhlIGZpZWxkXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzRW5hYmxlRW1wdHlGaWx0ZXIgaXMgbnVsbCBvciBlbXB0eSB2YWx1ZXMgYWxsb3dlZCBvbiBmaWx0ZXJcbiAqXG4gKi9cbmZ1bmN0aW9uIHNldEZpZWxkRGF0YVNldChmb3JtRmllbGQsIGRhdGEsIG9wdGlvbnM/KSB7XG4gICAgY29uc3QgZW1wdHlTdXBwb3J0V2lkZ2V0cyA9IFtGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QsIEZvcm1XaWRnZXRUeXBlLlJBRElPU0VUXTtcbiAgICBjb25zdCBlbXB0eU9wdGlvbiA9IHt9O1xuICAgIGNvbnN0IGRhdGFTZXQgPSBbXTtcbiAgICBpZiAob3B0aW9ucy5pc0VuYWJsZUVtcHR5RmlsdGVyICYmIGluY2x1ZGVzKGVtcHR5U3VwcG9ydFdpZGdldHMsIGZvcm1GaWVsZFtvcHRpb25zLndpZGdldF0pICYmXG4gICAgICAgICFmb3JtRmllbGRbJ2lzLXJhbmdlJ10gJiYgIWZvcm1GaWVsZC5tdWx0aXBsZSkge1xuICAgICAgICAvLyBJZiBlbXB0eSBvcHRpb24gaXMgc2VsZWN0ZWQsIHB1c2ggYW4gZW1wdHkgb2JqZWN0IGluIHRvIGRhdGFTZXRcbiAgICAgICAgZW1wdHlPcHRpb25bTElWRV9DT05TVEFOVFMuTEFCRUxfS0VZXSA9IExJVkVfQ09OU1RBTlRTLkVNUFRZX0tFWTtcbiAgICAgICAgZW1wdHlPcHRpb25bTElWRV9DT05TVEFOVFMuTEFCRUxfVkFMVUVdID0gb3B0aW9ucy5FTVBUWV9WQUxVRSB8fCBMSVZFX0NPTlNUQU5UUy5FTVBUWV9WQUxVRTtcbiAgICAgICAgZGF0YVNldC5wdXNoKGVtcHR5T3B0aW9uKTtcbiAgICB9XG4gICAgZWFjaChkYXRhLCBrZXkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGtleVtvcHRpb25zLmFsaWFzQ29sdW1uXTtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0ge307XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICAgIG9wdGlvbltMSVZFX0NPTlNUQU5UUy5MQUJFTF9LRVldID0gdmFsdWU7XG4gICAgICAgICAgICBvcHRpb25bTElWRV9DT05TVEFOVFMuTEFCRUxfVkFMVUVdID0gdmFsdWU7XG4gICAgICAgICAgICBkYXRhU2V0LnB1c2gob3B0aW9uKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHNldERhdGFGaWVsZHMoZm9ybUZpZWxkLCBvcHRpb25zKTtcbiAgICBmb3JtRmllbGQuZGF0YXNldCA9IGRhdGFTZXQ7XG59XG5cbi8qKlxuICogQG5nZG9jIGZ1bmN0aW9uXG4gKiBAbmFtZSB3bS53aWRnZXRzLmxpdmUuTGl2ZVdpZGdldFV0aWxzI2ZldGNoRGlzdGluY3RWYWx1ZXNcbiAqIEBtZXRob2RPZiB3bS53aWRnZXRzLmxpdmUuTGl2ZVdpZGdldFV0aWxzXG4gKiBAZnVuY3Rpb25cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEZ1bmN0aW9uIHRvIGZldGNoIHRoZSBkaXN0aW5jdCB2YWx1ZXMgZm9yIGEgZmllbGRcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gc2NvcGUgc2NvcGUgb2YgdGhlIHdpZGdldFxuICogQHBhcmFtIHtvYmplY3R9IGZvcm1GaWVsZHMgZGVmaW5pdGlvbnMgb2YgdGhlIGNvbHVtbi8gZmllbGRcbiAqIEBwYXJhbSB7c3RyaW5nfSB3aWRnZXQgd2lkZ2V0IHByb3BlcnR5IG9uIHRoZSBmaWVsZFxuICogQHBhcmFtIHtib29sZWFufSBpc0VuYWJsZUVtcHR5RmlsdGVyIGlzIG51bGwgb3IgZW1wdHkgdmFsdWVzIGFsbG93ZWQgb24gZmlsdGVyXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2hEaXN0aW5jdFZhbHVlcyhkYXRhU291cmNlLCBmb3JtRmllbGRzLCBvcHRpb25zKSB7XG4gICAgaWYgKGlzRW1wdHkoZm9ybUZpZWxkcykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3JtRmllbGRzLmZvckVhY2goZm9ybUZpZWxkID0+IHtcbiAgICAgICAgZ2V0RGlzdGluY3RWYWx1ZXNGb3JGaWVsZChkYXRhU291cmNlLCBmb3JtRmllbGQsIG9wdGlvbnMpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIEBuZ2RvYyBmdW5jdGlvblxuICogQG5hbWUgd20ud2lkZ2V0cy5saXZlLkxpdmVXaWRnZXRVdGlscyNnZXREaXN0aW5jdFZhbHVlc0ZvckZpZWxkXG4gKiBAbWV0aG9kT2Ygd20ud2lkZ2V0cy5saXZlLkxpdmVXaWRnZXRVdGlsc1xuICogQGZ1bmN0aW9uXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBGdW5jdGlvbiB0byBmZXRjaCB0aGUgZGlzdGluY3QgdmFsdWVzIGZvciBhIGZpZWxkXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHNjb3BlIHNjb3BlIG9mIHRoZSB3aWRnZXRcbiAqIEBwYXJhbSB7b2JqZWN0fSBmb3JtRmllbGRzIGRlZmluaXRpb25zIG9mIHRoZSBjb2x1bW4vIGZpZWxkXG4gKiBAcGFyYW0ge3N0cmluZ30gd2lkZ2V0IHdpZGdldCBwcm9wZXJ0eSBvbiB0aGUgZmllbGRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNFbmFibGVFbXB0eUZpbHRlciBpcyBudWxsIG9yIGVtcHR5IHZhbHVlcyBhbGxvd2VkIG9uIGZpbHRlclxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RpbmN0VmFsdWVzRm9yRmllbGQoZGF0YVNvdXJjZSwgZm9ybUZpZWxkLCBvcHRpb25zPykge1xuICAgIGlmICghZGF0YVNvdXJjZSB8fCAhZm9ybUZpZWxkIHx8IGZvcm1GaWVsZC5pc0RhdGFTZXRCb3VuZCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc1NlYXJjaFdpZGdldFR5cGUoZm9ybUZpZWxkW29wdGlvbnMud2lkZ2V0XSkpIHtcbiAgICAgICAgY29uc3QgZGF0YW9wdGlvbnMgPSBnZXREaXN0aW5jdEZpZWxkUHJvcGVydGllcyhkYXRhU291cmNlLCBmb3JtRmllbGQpO1xuICAgICAgICBmb3JtRmllbGQuZGF0YW9wdGlvbnMgPSBkYXRhb3B0aW9ucztcbiAgICAgICAgc2V0RGF0YUZpZWxkcyhmb3JtRmllbGQsIE9iamVjdC5hc3NpZ24ob3B0aW9ucyB8fCB7fSwgZGF0YW9wdGlvbnMpKTtcbiAgICAgICAgZm9ybUZpZWxkLmRhdGFzb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGludGVycG9sYXRlQmluZEV4cHJlc3Npb25zKGZvcm1GaWVsZC52aWV3UGFyZW50LCBmb3JtRmllbGQuZmlsdGVyZXhwcmVzc2lvbnMsIChmaWx0ZXJleHByZXNzaW9ucykgPT4ge1xuICAgICAgICAgICAgZm9ybUZpZWxkLmZpbHRlcmV4cHJlc3Npb25zID0gZmlsdGVyZXhwcmVzc2lvbnM7XG4gICAgICAgICAgICBnZXREaXN0aW5jdFZhbHVlcyhkYXRhU291cmNlLCBmb3JtRmllbGQsIG9wdGlvbnMud2lkZ2V0KS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHNldEZpZWxkRGF0YVNldChyZXMuZmllbGQsIHJlcy5kYXRhLCB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWFzQ29sdW1uOiByZXMuYWxpYXNDb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIHdpZGdldDogb3B0aW9ucy53aWRnZXQsXG4gICAgICAgICAgICAgICAgICAgIGlzRW5hYmxlRW1wdHlGaWx0ZXI6IGdldEVuYWJsZUVtcHR5RmlsdGVyKG9wdGlvbnMuZW5hYmxlZW1wdHlmaWx0ZXIpLFxuICAgICAgICAgICAgICAgICAgICBFTVBUWV9WQUxVRTogb3B0aW9ucy5FTVBUWV9WQUxVRVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gaXNEZWZpbmVkQW5kTm90RW1wdHkodmFsKSB7XG4gICAgcmV0dXJuIGlzRGVmaW5lZCh2YWwpICYmIHZhbCAhPT0gJycgJiYgdmFsICE9PSBudWxsO1xufVxuXG4vKipcbiAqIEBuZ2RvYyBmdW5jdGlvblxuICogQG5hbWUgd20ud2lkZ2V0cy5saXZlLmdldFJhbmdlRmllbGRWYWx1ZVxuICogQG1ldGhvZE9mIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHNcbiAqIEBmdW5jdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogRnVuY3Rpb24gdG8gZ2V0IHRoZSBmaWVsZCB2YWx1ZSBmb3IgcmFuZ2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWluVmFsdWUgbWluIHZhbHVlIHNlbGVjdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gbWF4VmFsdWUgbWF4IHZhbHVlIHNlbGVjdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5nZUZpZWxkVmFsdWUobWluVmFsdWUsIG1heFZhbHVlKSB7XG4gICAgbGV0IGZpZWxkVmFsdWU7XG4gICAgaWYgKGlzRGVmaW5lZEFuZE5vdEVtcHR5KG1pblZhbHVlKSAmJiBpc0RlZmluZWRBbmROb3RFbXB0eShtYXhWYWx1ZSkpIHtcbiAgICAgICAgZmllbGRWYWx1ZSA9IFttaW5WYWx1ZSwgbWF4VmFsdWVdO1xuICAgIH0gZWxzZSBpZiAoaXNEZWZpbmVkQW5kTm90RW1wdHkobWluVmFsdWUpKSB7XG4gICAgICAgIGZpZWxkVmFsdWUgPSBtaW5WYWx1ZTtcbiAgICB9IGVsc2UgaWYgKGlzRGVmaW5lZEFuZE5vdEVtcHR5KG1heFZhbHVlKSkge1xuICAgICAgICBmaWVsZFZhbHVlID0gbWF4VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBmaWVsZFZhbHVlO1xufVxuLyoqXG4gKiBAbmdkb2MgZnVuY3Rpb25cbiAqIEBuYW1lIHdtLndpZGdldHMubGl2ZS5nZXRSYW5nZU1hdGNoTW9kZVxuICogQG1ldGhvZE9mIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHNcbiAqIEBmdW5jdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogRnVuY3Rpb24gdG8gZ2V0IHRoZSBtYXRjaCBtb2RlIGZvciByYW5nZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtaW5WYWx1ZSBtaW4gdmFsdWUgc2VsZWN0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXhWYWx1ZSBtYXggdmFsdWUgc2VsZWN0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJhbmdlTWF0Y2hNb2RlKG1pblZhbHVlLCBtYXhWYWx1ZSkge1xuICAgIGxldCBtYXRjaE1vZGU7XG4gICAgLy8gSWYgdHdvIHZhbHVlcyBleGlzdHMsIHRoZW4gaXQgaXMgYmV0d2Vlbi4gT3RoZXJ3aXNlLCBncmVhdGVyIG9yIGxlc3NlclxuICAgIGlmIChpc0RlZmluZWRBbmROb3RFbXB0eShtaW5WYWx1ZSkgJiYgaXNEZWZpbmVkQW5kTm90RW1wdHkobWF4VmFsdWUpKSB7XG4gICAgICAgIG1hdGNoTW9kZSA9IE1hdGNoTW9kZS5CRVRXRUVOO1xuICAgIH0gZWxzZSBpZiAoaXNEZWZpbmVkQW5kTm90RW1wdHkobWluVmFsdWUpKSB7XG4gICAgICAgIG1hdGNoTW9kZSA9IE1hdGNoTW9kZS5HUkVBVEVSO1xuICAgIH0gZWxzZSBpZiAoaXNEZWZpbmVkQW5kTm90RW1wdHkobWF4VmFsdWUpKSB7XG4gICAgICAgIG1hdGNoTW9kZSA9IE1hdGNoTW9kZS5MRVNTRVI7XG4gICAgfVxuICAgIHJldHVybiBtYXRjaE1vZGU7XG59XG4vKipcbiAqIEBuZ2RvYyBmdW5jdGlvblxuICogQG5hbWUgd20ud2lkZ2V0cy5saXZlLmdldEVuYWJsZUVtcHR5RmlsdGVyXG4gKiBAbWV0aG9kT2Ygd20ud2lkZ2V0cy5saXZlLkxpdmVXaWRnZXRVdGlsc1xuICogQGZ1bmN0aW9uXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiBlbmFibGUgZmlsdGVyIG9wdGlvbnMgaXMgc2V0IG9uIGxpdmUgZmlsdGVyXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGVuYWJsZWVtcHR5ZmlsdGVyIGVtcHR5IGZpbHRlciBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbmFibGVFbXB0eUZpbHRlcihlbmFibGVlbXB0eWZpbHRlcikge1xuICAgIHJldHVybiBlbmFibGVlbXB0eWZpbHRlciAmJiBpbnRlcnNlY3Rpb24oZW5hYmxlZW1wdHlmaWx0ZXIuc3BsaXQoJywnKSwgTElWRV9DT05TVEFOVFMuTlVMTF9FTVBUWSkubGVuZ3RoID4gMDtcbn1cbi8qKlxuICogQG5nZG9jIGZ1bmN0aW9uXG4gKiBAbmFtZSB3bS53aWRnZXRzLmxpdmUuZ2V0RW1wdHlNYXRjaE1vZGVcbiAqIEBtZXRob2RPZiB3bS53aWRnZXRzLmxpdmUuTGl2ZVdpZGdldFV0aWxzXG4gKiBAZnVuY3Rpb25cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgbWF0Y2ggbW9kZSBiYXNlZCBvbiB0aGUgZmlsdGVyIHNlbGVjdGVkXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGVuYWJsZWVtcHR5ZmlsdGVyIGVtcHR5IGZpbHRlciBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbXB0eU1hdGNoTW9kZShlbmFibGVlbXB0eWZpbHRlcikge1xuICAgIGxldCBtYXRjaE1vZGU7XG4gICAgY29uc3QgZW1wdHlGaWx0ZXJPcHRpb25zID0gc3BsaXQoZW5hYmxlZW1wdHlmaWx0ZXIsICcsJyk7XG4gICAgaWYgKGludGVyc2VjdGlvbihlbXB0eUZpbHRlck9wdGlvbnMsIExJVkVfQ09OU1RBTlRTLk5VTExfRU1QVFkpLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBtYXRjaE1vZGUgPSBNYXRjaE1vZGUuTlVMTE9SRU1QVFk7XG4gICAgfSBlbHNlIGlmIChpbmNsdWRlcyhlbXB0eUZpbHRlck9wdGlvbnMsIExJVkVfQ09OU1RBTlRTLk5VTEwpKSB7XG4gICAgICAgIG1hdGNoTW9kZSA9IE1hdGNoTW9kZS5OVUxMO1xuICAgIH0gZWxzZSBpZiAoaW5jbHVkZXMoZW1wdHlGaWx0ZXJPcHRpb25zLCBMSVZFX0NPTlNUQU5UUy5FTVBUWSkpIHtcbiAgICAgICAgbWF0Y2hNb2RlID0gTWF0Y2hNb2RlLkVNUFRZO1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hNb2RlO1xufVxuXG4vKipcbiAqIGNvbnZlcnRzIHRoZSBkYXRhIHBhc3NlZCB0byBhcnJheS5cbiAqICAtPiBBcnJheTogWzEsMiwzXSAtIFsxLDIsM11cbiAqICAtPiBTdHJpbmc6IGEsYixjIC0gWydhJywnYicsJ2MnXVxuICogIC0+IG9iamVjdDoge2E6MX0gLSBbe2E6MX1dXG4gKiAgLT4gbnVsbCAtIFtdXG4gKiAgLT4gdW5kZWZpbmVkIC0gW11cbiAqIEBwYXJhbSBkYXRhXG4gKiBAcmV0dXJucyB7QXJyYXk8YW55Pn1cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUFycmF5RnJvbSA9IChkYXRhKTogQXJyYXk8YW55PiA9PiB7XG5cbiAgICBpZiAoaXNVbmRlZmluZWQoZGF0YSkgfHwgaXNOdWxsKGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoaXNTdHJpbmcoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IGRhdGEuc3BsaXQoJywnKS5tYXAoRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsIFN0cmluZy5wcm90b3R5cGUudHJpbSk7XG4gICAgfVxuXG4gICAgaWYgKCFpc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIGRhdGEgPSBbZGF0YV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG59O1xuXG4vKipcbiAqIEBuZ2RvYyBmdW5jdGlvblxuICogQG5hbWUgd20ud2lkZ2V0cy5saXZlLmFwcGx5RmlsdGVyT25GaWVsZFxuICogQG1ldGhvZE9mIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHNcbiAqIEBmdW5jdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogRnVuY3Rpb24gdG8gZ2V0IHRoZSB1cGRhdGVkIHZhbHVlcyB3aGVuIGZpbHRlciBvbiBmaWVsZCBpcyBjaGFuZ2VkXG4gKlxuICogQHBhcmFtIHtvYmplY3R9ICRzY29wZSBzY29wZSBvZiB0aGUgZmlsdGVyIGZpZWxkL2Zvcm0gZmllbGRcbiAqIEBwYXJhbSB7b2JqZWN0fSBmaWx0ZXJEZWYgZmlsdGVyL2Zvcm0gZGVmaW5pdGlvbiBvZiB0aGUgZmllbGRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNGaXJzdCBib29sZWFuIHZhbHVlIHRvIGNoZWNrIGlmIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiBsb2FkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZpbHRlck9uRmllbGQoZGF0YVNvdXJjZSwgZmlsdGVyRGVmLCBmb3JtRmllbGRzLCBuZXdWYWwsIG9wdGlvbnM6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgZmllbGROYW1lID0gZmlsdGVyRGVmLmZpZWxkIHx8IGZpbHRlckRlZi5rZXk7XG4gICAgY29uc3QgZmlsdGVyT25GaWVsZHMgPSBmaWx0ZXIoZm9ybUZpZWxkcywgeydmaWx0ZXItb24nOiBmaWVsZE5hbWV9KTtcblxuICAgIG5ld1ZhbCA9IGZpbHRlckRlZlsnaXMtcmFuZ2UnXSA/IGdldFJhbmdlRmllbGRWYWx1ZShmaWx0ZXJEZWYubWluVmFsdWUsIGZpbHRlckRlZi5tYXhWYWx1ZSkgOiAoaXNEZWZpbmVkKG5ld1ZhbCkgPyBuZXdWYWwgOiBmaWx0ZXJEZWYudmFsdWUpO1xuICAgIGlmICghZGF0YVNvdXJjZSB8fCAob3B0aW9ucy5pc0ZpcnN0ICYmIChpc1VuZGVmaW5lZChuZXdWYWwpIHx8IG5ld1ZhbCA9PT0gJycpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIExvb3Agb3ZlciB0aGUgZmllbGRzIGZvciB3aGljaCB0aGUgY3VycmVudCBmaWVsZCBpcyBmaWx0ZXIgb24gZmllbGRcbiAgICBmb3JFYWNoKGZpbHRlck9uRmllbGRzLCBmaWx0ZXJGaWVsZCA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlcktleSA9IGZpbHRlckZpZWxkLmZpZWxkIHx8IGZpbHRlckZpZWxkLmtleTtcbiAgICAgICAgY29uc3QgbG9va1VwRmllbGQgPSBmaWx0ZXJEZWZbJ2xvb2t1cC1maWVsZCddIHx8IGZpbHRlckRlZi5fcHJpbWFyeUtleTtcbiAgICAgICAgY29uc3QgZmlsdGVyV2lkZ2V0ID0gZmlsdGVyRmllbGRbJ2VkaXQtd2lkZ2V0LXR5cGUnXSB8fCBmaWx0ZXJGaWVsZC53aWRnZXR0eXBlO1xuICAgICAgICBsZXQgZmlsdGVyRmllbGRzID0ge307XG4gICAgICAgIGxldCBmaWx0ZXJPbiA9IGZpbHRlckZpZWxkWydmaWx0ZXItb24nXTtcbiAgICAgICAgbGV0IGZpbHRlclZhbDtcbiAgICAgICAgbGV0IGZpZWxkQ29sdW1uO1xuICAgICAgICBsZXQgbWF0Y2hNb2RlO1xuICAgICAgICBpZiAoIWlzRGF0YVNldFdpZGdldChmaWx0ZXJXaWRnZXQpIHx8IGZpbHRlckZpZWxkLmlzRGF0YVNldEJvdW5kIHx8IGZpbHRlck9uID09PSBmaWx0ZXJLZXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGb3IgcmVsYXRlZCBmaWVsZHMsIGFkZCBsb29rdXBmaWVsZCBmb3IgcXVlcnkgZ2VuZXJhdGlvblxuICAgICAgICBpZiAoZmlsdGVyRGVmICYmIGZpbHRlckRlZlsnaXMtcmVsYXRlZCddKSB7XG4gICAgICAgICAgICBmaWx0ZXJPbiArPSAnLicgKyBsb29rVXBGaWVsZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNEZWZpbmVkKG5ld1ZhbCkpIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJEZWZbJ2lzLXJhbmdlJ10pIHtcbiAgICAgICAgICAgICAgICBtYXRjaE1vZGUgPSBnZXRSYW5nZU1hdGNoTW9kZShmaWx0ZXJEZWYubWluVmFsdWUsIGZpbHRlckRlZi5tYXhWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGdldEVuYWJsZUVtcHR5RmlsdGVyKG9wdGlvbnMuZW5hYmxlZW1wdHlmaWx0ZXIpICYmIG5ld1ZhbCA9PT0gTElWRV9DT05TVEFOVFMuRU1QVFlfS0VZKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hNb2RlID0gZ2V0RW1wdHlNYXRjaE1vZGUob3B0aW9ucy5lbmFibGVlbXB0eWZpbHRlcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1hdGNoTW9kZSA9IE1hdGNoTW9kZS5FUVVBTFM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWx0ZXJWYWwgPSAoaXNPYmplY3QobmV3VmFsKSAmJiAhaXNBcnJheShuZXdWYWwpKSA/IG5ld1ZhbFtsb29rVXBGaWVsZF0gOiBuZXdWYWw7XG4gICAgICAgICAgICBmaWx0ZXJGaWVsZHNbZmlsdGVyT25dID0ge1xuICAgICAgICAgICAgICAgICd2YWx1ZSc6IGZpbHRlclZhbCxcbiAgICAgICAgICAgICAgICAnbWF0Y2hNb2RlJzogbWF0Y2hNb2RlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsdGVyRmllbGRzID0ge307XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRDb2x1bW4gPSBmaWx0ZXJLZXk7XG5cbiAgICAgICAgaWYgKGlzU2VhcmNoV2lkZ2V0VHlwZShmaWx0ZXJXaWRnZXQpICYmIGZpbHRlckZpZWxkLmRhdGFvcHRpb25zKSB7XG4gICAgICAgICAgICBmaWx0ZXJGaWVsZC5kYXRhb3B0aW9ucy5maWx0ZXJGaWVsZHMgPSBmaWx0ZXJGaWVsZHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRhU291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX0RJU1RJTkNUX0RBVEFfQllfRklFTERTLCB7XG4gICAgICAgICAgICAgICAgJ2ZpZWxkcyc6IGZpZWxkQ29sdW1uLFxuICAgICAgICAgICAgICAgICdmaWx0ZXJGaWVsZHMnOiBmaWx0ZXJGaWVsZHMsXG4gICAgICAgICAgICAgICAgJ3BhZ2VzaXplJzogZmlsdGVyRmllbGQubGltaXRcbiAgICAgICAgICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHNldEZpZWxkRGF0YVNldChmaWx0ZXJGaWVsZCwgcmVzcG9uc2UuZGF0YSwge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc0NvbHVtbjogZmllbGRDb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIHdpZGdldDogb3B0aW9ucy53aWRnZXQgfHwgJ3dpZGdldHR5cGUnLFxuICAgICAgICAgICAgICAgICAgICBpc0VuYWJsZUVtcHR5RmlsdGVyOiBnZXRFbmFibGVFbXB0eUZpbHRlcihvcHRpb25zLmVuYWJsZWVtcHR5ZmlsdGVyKSxcbiAgICAgICAgICAgICAgICAgICAgRU1QVFlfVkFMVUU6IG9wdGlvbnMuRU1QVFlfVkFMVUVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIG5vb3ApO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbi8vIFRyYW5zZm9ybSBkYXRhIGFzIHJlcXVpcmVkIGJ5IGRhdGEgdGFibGVcbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGRhdGFPYmplY3QsIHZhcmlhYmxlTmFtZSkge1xuICAgIGxldCBuZXdPYmosXG4gICAgICAgIHRlbXBBcnIsXG4gICAgICAgIGtleXMsXG4gICAgICAgIG9sZEtleXMsXG4gICAgICAgIG51bUtleXMsXG4gICAgICAgIG5ld09iamVjdCxcbiAgICAgICAgdGVtcE9iajtcblxuICAgIC8vIGRhdGEgc2FuaXR5IHRlc3RpbmdcbiAgICBkYXRhT2JqZWN0ID0gZGF0YU9iamVjdCB8fCBbXTtcbiAgICAvLyBpZiB0aGUgZGF0YU9iamVjdCBpcyBub3QgYW4gYXJyYXkgbWFrZSBpdCBhbiBhcnJheVxuICAgIGlmICghaXNBcnJheShkYXRhT2JqZWN0KSkge1xuICAgICAgICAvLyBpZiB0aGUgZGF0YSByZXR1cm5lZCBpcyBvZiB0eXBlIHN0cmluZywgbWFrZSBpdCBhbiBvYmplY3QgaW5zaWRlIGFuIGFycmF5XG4gICAgICAgIGlmIChpc1N0cmluZyhkYXRhT2JqZWN0KSkge1xuICAgICAgICAgICAga2V5cyA9IHZhcmlhYmxlTmFtZS5zdWJzdHJpbmcodmFyaWFibGVOYW1lLmluZGV4T2YoJy4nKSArIDEsIHZhcmlhYmxlTmFtZS5sZW5ndGgpLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBvbGRLZXlzID0gW107XG4gICAgICAgICAgICBudW1LZXlzID0ga2V5cy5sZW5ndGg7XG4gICAgICAgICAgICBuZXdPYmplY3QgPSB7fTtcbiAgICAgICAgICAgIHRlbXBPYmogPSBuZXdPYmplY3Q7XG5cbiAgICAgICAgICAgIC8vIGxvb3Agb3ZlciB0aGUga2V5cyB0byBmb3JtIGFwcHJvcHJpYXRlIGRhdGEgb2JqZWN0IHJlcXVpcmVkIGZvciBncmlkXG4gICAgICAgICAgICBrZXlzLmZvckVhY2goKGtleSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBsb29wIG92ZXIgb2xkIGtleXMgdG8gY3JlYXRlIG5ldyBvYmplY3QgYXQgdGhlIGl0ZXJhdGl2ZSBsZXZlbFxuICAgICAgICAgICAgICAgIG9sZEtleXMuZm9yRWFjaChvbGRLZXkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0ZW1wT2JqID0gbmV3T2JqZWN0W29sZEtleV07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGVtcE9ialtrZXldID0gaW5kZXggPT09IG51bUtleXMgLSAxID8gZGF0YU9iamVjdCA6IHt9O1xuICAgICAgICAgICAgICAgIG9sZEtleXMucHVzaChrZXkpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIGNoYW5nZSB0aGUgc3RyaW5nIGRhdGEgdG8gdGhlIG5ldyBkYXRhT2JqZWN0IGZvcm1lZFxuICAgICAgICAgICAgZGF0YU9iamVjdCA9IG5ld09iamVjdDtcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0ID0gW2RhdGFPYmplY3RdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8qaWYgdGhlIGRhdGFPYmplY3QgaXMgYW4gYXJyYXkgYW5kIGVhY2ggdmFsdWUgaXMgYSBzdHJpbmcsIHRoZW4gbGl0ZS10cmFuc2Zvcm0gdGhlIHN0cmluZyB0byBhbiBvYmplY3RcbiAgICAgICAgICogbGl0ZS10cmFuc2Zvcm06IGp1c3QgY2hlY2tpbmcgaWYgdGhlIGZpcnN0IHZhbHVlIGlzIHN0cmluZyBhbmQgdGhlbiB0cmFuc2Zvcm1pbmcgdGhlIG9iamVjdCwgaW5zdGVhZCBvZiB0cmF2ZXJzaW5nIHRocm91Z2ggdGhlIHdob2xlIGFycmF5XG4gICAgICAgICAqICovXG4gICAgICAgIGlmIChpc1N0cmluZyhkYXRhT2JqZWN0WzBdKSkge1xuICAgICAgICAgICAgdGVtcEFyciA9IFtdO1xuICAgICAgICAgICAgZm9yRWFjaChkYXRhT2JqZWN0LCBzdHIgPT4ge1xuICAgICAgICAgICAgICAgIG5ld09iaiA9IHt9O1xuICAgICAgICAgICAgICAgIG5ld09ialt2YXJpYWJsZU5hbWUuc3BsaXQoJy4nKS5qb2luKCctJyldID0gc3RyO1xuICAgICAgICAgICAgICAgIHRlbXBBcnIucHVzaChuZXdPYmopO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkYXRhT2JqZWN0ID0gdGVtcEFycjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YU9iamVjdDtcbn1cbiJdfQ==