@wavemaker/app-ng-runtime 11.13.0-rc.6255 → 11.14.0-rc.226

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 (1024) hide show
  1. package/build-task/bundles/index.umd.js +34 -5
  2. package/build-task/esm2022/basic/anchor/anchor.build.mjs +15 -0
  3. package/build-task/esm2022/basic/audio/audio.build.mjs +10 -0
  4. package/build-task/esm2022/basic/html/html.build.mjs +15 -0
  5. package/build-task/esm2022/basic/icon/icon.build.mjs +10 -0
  6. package/build-task/esm2022/basic/iframe/iframe.build.mjs +10 -0
  7. package/build-task/esm2022/basic/label/label.build.mjs +25 -0
  8. package/build-task/esm2022/basic/picture/picture.build.mjs +14 -0
  9. package/build-task/esm2022/basic/spinner/spinner.build.mjs +15 -0
  10. package/build-task/esm2022/basic/video/video.build.mjs +10 -0
  11. package/build-task/esm2022/data/form/form-field/form-field.build.mjs +8 -3
  12. package/build-task/esm2022/data/form/form.build.mjs +8 -1
  13. package/build-task/esm2022/data/table/table-column/table-column.build.mjs +14 -3
  14. package/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +2 -2
  15. package/build-task/esm2022/page/page-content/page-content.build.mjs +8 -2
  16. package/build-task/esm2022/public_api.mjs +10 -10
  17. package/build-task/fesm2022/index.mjs +36 -7
  18. package/build-task/fesm2022/index.mjs.map +1 -1
  19. package/build-task/package.json +3 -6
  20. package/build-task/public_api.d.ts +9 -9
  21. package/components/advanced/carousel/bundles/index.umd.js +33 -38
  22. package/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +16 -16
  23. package/components/advanced/carousel/esm2022/carousel.directive.mjs +19 -24
  24. package/components/advanced/carousel/fesm2022/index.mjs +34 -39
  25. package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  26. package/components/advanced/carousel/package.json +0 -3
  27. package/components/advanced/custom/bundles/index.umd.js +48 -48
  28. package/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +1 -1
  29. package/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +31 -31
  30. package/components/advanced/custom/esm2022/custom-widget.directive.mjs +15 -15
  31. package/components/advanced/custom/fesm2022/index.mjs +45 -45
  32. package/components/advanced/custom/fesm2022/index.mjs.map +1 -1
  33. package/components/advanced/custom/package.json +0 -3
  34. package/components/advanced/login/bundles/index.umd.js +33 -53
  35. package/components/advanced/login/esm2022/login.component.mjs +26 -47
  36. package/components/advanced/login/fesm2022/index.mjs +27 -47
  37. package/components/advanced/login/fesm2022/index.mjs.map +1 -1
  38. package/components/advanced/login/login.component.d.ts +1 -1
  39. package/components/advanced/login/package.json +0 -3
  40. package/components/advanced/marquee/bundles/index.umd.js +19 -19
  41. package/components/advanced/marquee/esm2022/marquee.directive.mjs +20 -20
  42. package/components/advanced/marquee/fesm2022/index.mjs +20 -20
  43. package/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
  44. package/components/advanced/marquee/package.json +0 -3
  45. package/components/base/bundles/index.umd.js +4272 -4243
  46. package/components/base/esm2022/pipes/custom-pipes.mjs +14 -12
  47. package/components/base/esm2022/pipes/wm-pipe.mjs +3 -3
  48. package/components/base/esm2022/public_api.mjs +1 -2
  49. package/components/base/esm2022/widgets/common/container/container.directive.mjs +154 -1
  50. package/components/base/esm2022/widgets/common/container/container.props.mjs +7 -2
  51. package/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +1 -1
  52. package/components/base/fesm2022/index.mjs +4280 -4251
  53. package/components/base/fesm2022/index.mjs.map +1 -1
  54. package/components/base/package.json +2 -2
  55. package/components/base/pipes/custom-pipes.d.ts +4 -2
  56. package/components/base/pipes/wm-pipe.d.ts +1 -1
  57. package/components/base/public_api.d.ts +0 -1
  58. package/components/base/widgets/common/container/container.directive.d.ts +9 -0
  59. package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +0 -2
  60. package/components/basic/anchor/bundles/index.umd.js +192 -0
  61. package/components/basic/anchor/esm2022/anchor.component.mjs +143 -0
  62. package/components/basic/anchor/esm2022/anchor.props.mjs +27 -0
  63. package/components/basic/anchor/esm2022/index.mjs +5 -0
  64. package/components/basic/anchor/esm2022/public_api.mjs +2 -0
  65. package/components/basic/anchor/fesm2022/index.mjs +175 -0
  66. package/components/basic/anchor/fesm2022/index.mjs.map +1 -0
  67. package/components/basic/{progress → anchor}/index.d.ts +1 -1
  68. package/components/basic/{default → anchor}/package.json +1 -4
  69. package/components/basic/anchor/public_api.d.ts +1 -0
  70. package/components/basic/audio/bundles/index.umd.js +83 -0
  71. package/components/basic/audio/esm2022/audio.component.mjs +41 -0
  72. package/components/basic/audio/esm2022/audio.props.mjs +19 -0
  73. package/components/{input/epoch → basic/audio}/esm2022/index.mjs +1 -1
  74. package/components/basic/audio/esm2022/public_api.mjs +2 -0
  75. package/components/basic/audio/fesm2022/index.mjs +65 -0
  76. package/components/basic/audio/fesm2022/index.mjs.map +1 -0
  77. package/components/{input/epoch → basic/audio}/index.d.ts +1 -1
  78. package/components/{input/default → basic/audio}/package.json +2 -5
  79. package/components/basic/audio/public_api.d.ts +1 -0
  80. package/components/basic/html/bundles/index.umd.js +110 -0
  81. package/components/basic/html/esm2022/html.directive.mjs +76 -0
  82. package/components/basic/html/esm2022/html.props.mjs +12 -0
  83. package/components/basic/html/esm2022/index.mjs +5 -0
  84. package/components/basic/html/esm2022/public_api.mjs +2 -0
  85. package/components/basic/html/fesm2022/index.mjs +93 -0
  86. package/components/basic/html/fesm2022/index.mjs.map +1 -0
  87. package/components/basic/{default → html}/index.d.ts +1 -1
  88. package/components/{input/epoch → basic/html}/package.json +1 -4
  89. package/components/basic/html/public_api.d.ts +1 -0
  90. package/components/basic/icon/bundles/index.umd.js +80 -0
  91. package/components/basic/icon/esm2022/icon.component.mjs +38 -0
  92. package/components/basic/icon/esm2022/icon.props.mjs +19 -0
  93. package/components/basic/icon/esm2022/index.mjs +5 -0
  94. package/components/basic/icon/esm2022/public_api.mjs +2 -0
  95. package/components/basic/icon/fesm2022/index.mjs +62 -0
  96. package/components/basic/icon/fesm2022/index.mjs.map +1 -0
  97. package/components/{input/default → basic/icon}/index.d.ts +1 -1
  98. package/components/basic/{progress → icon}/package.json +1 -4
  99. package/components/basic/icon/public_api.d.ts +1 -0
  100. package/components/basic/iframe/.npmignore +2 -0
  101. package/components/basic/iframe/bundles/index.umd.js +101 -0
  102. package/components/basic/iframe/esm2022/iframe.component.mjs +65 -0
  103. package/components/basic/iframe/esm2022/iframe.props.mjs +15 -0
  104. package/components/basic/iframe/esm2022/index.mjs +5 -0
  105. package/components/basic/iframe/esm2022/public_api.mjs +2 -0
  106. package/components/basic/iframe/fesm2022/index.mjs +84 -0
  107. package/components/basic/iframe/fesm2022/index.mjs.map +1 -0
  108. package/components/basic/iframe/index.d.ts +5 -0
  109. package/components/basic/iframe/package.json +20 -0
  110. package/components/basic/iframe/public_api.d.ts +1 -0
  111. package/components/basic/label/.npmignore +2 -0
  112. package/components/basic/label/bundles/index.umd.js +109 -0
  113. package/components/basic/label/esm2022/index.mjs +5 -0
  114. package/components/basic/label/esm2022/label.directive.mjs +71 -0
  115. package/components/basic/label/esm2022/label.props.mjs +17 -0
  116. package/components/basic/label/esm2022/public_api.mjs +2 -0
  117. package/components/basic/label/fesm2022/index.mjs +93 -0
  118. package/components/basic/label/fesm2022/index.mjs.map +1 -0
  119. package/components/basic/label/index.d.ts +5 -0
  120. package/components/basic/{default/label → label}/label.directive.d.ts +1 -1
  121. package/components/basic/label/package.json +20 -0
  122. package/components/basic/label/public_api.d.ts +1 -0
  123. package/components/basic/picture/.npmignore +2 -0
  124. package/components/basic/picture/bundles/index.umd.js +138 -0
  125. package/components/basic/{default → picture}/esm2022/index.mjs +1 -1
  126. package/components/basic/picture/esm2022/picture.directive.mjs +93 -0
  127. package/components/basic/picture/esm2022/picture.props.mjs +23 -0
  128. package/components/basic/picture/esm2022/public_api.mjs +2 -0
  129. package/components/basic/picture/fesm2022/index.mjs +121 -0
  130. package/components/basic/picture/fesm2022/index.mjs.map +1 -0
  131. package/components/basic/picture/index.d.ts +5 -0
  132. package/components/basic/picture/package.json +20 -0
  133. package/components/basic/picture/public_api.d.ts +1 -0
  134. package/components/basic/progress/progress-bar/.npmignore +2 -0
  135. package/components/basic/progress/progress-bar/bundles/index.umd.js +170 -0
  136. package/components/basic/progress/progress-bar/esm2022/index.mjs +5 -0
  137. package/components/basic/progress/progress-bar/esm2022/progress-bar.component.mjs +130 -0
  138. package/components/basic/progress/{esm2022/progress-bar → progress-bar/esm2022}/progress-bar.props.mjs +1 -1
  139. package/components/basic/progress/progress-bar/esm2022/public_api.mjs +2 -0
  140. package/components/basic/progress/progress-bar/fesm2022/index.mjs +154 -0
  141. package/components/basic/progress/progress-bar/fesm2022/index.mjs.map +1 -0
  142. package/components/basic/progress/progress-bar/index.d.ts +5 -0
  143. package/components/basic/progress/progress-bar/package.json +20 -0
  144. package/components/basic/progress/progress-bar/public_api.d.ts +1 -0
  145. package/components/basic/progress/progress-circle/.npmignore +2 -0
  146. package/components/basic/progress/progress-circle/bundles/index.umd.js +161 -0
  147. package/components/basic/progress/progress-circle/esm2022/index.mjs +5 -0
  148. package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +120 -0
  149. package/components/basic/progress/{esm2022/progress-circle → progress-circle/esm2022}/progress-circle.props.mjs +1 -1
  150. package/components/basic/progress/progress-circle/esm2022/public_api.mjs +2 -0
  151. package/components/basic/progress/progress-circle/fesm2022/index.mjs +145 -0
  152. package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -0
  153. package/components/basic/progress/progress-circle/index.d.ts +5 -0
  154. package/components/basic/progress/progress-circle/package.json +20 -0
  155. package/components/basic/progress/progress-circle/public_api.d.ts +1 -0
  156. package/components/basic/progress/progress-utils/.npmignore +2 -0
  157. package/components/basic/progress/progress-utils/bundles/index.umd.js +35 -0
  158. package/components/basic/progress/progress-utils/esm2022/index.mjs +5 -0
  159. package/components/basic/progress/progress-utils/esm2022/progress-utils.mjs +25 -0
  160. package/components/basic/progress/progress-utils/esm2022/public_api.mjs +2 -0
  161. package/components/basic/progress/progress-utils/fesm2022/index.mjs +32 -0
  162. package/components/basic/progress/progress-utils/fesm2022/index.mjs.map +1 -0
  163. package/components/basic/progress/progress-utils/index.d.ts +5 -0
  164. package/components/basic/progress/progress-utils/package.json +20 -0
  165. package/components/basic/progress/progress-utils/public_api.d.ts +1 -0
  166. package/components/basic/rich-text-editor/bundles/index.umd.js +23 -40
  167. package/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +19 -38
  168. package/components/basic/rich-text-editor/fesm2022/index.mjs +21 -39
  169. package/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  170. package/components/basic/rich-text-editor/package.json +0 -3
  171. package/components/basic/rich-text-editor/rich-text-editor.component.d.ts +1 -1
  172. package/components/basic/search/bundles/index.umd.js +109 -313
  173. package/components/basic/search/esm2022/scrollable.directive.mjs +13 -14
  174. package/components/basic/search/esm2022/search.component.mjs +40 -246
  175. package/components/basic/search/fesm2022/index.mjs +52 -256
  176. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  177. package/components/basic/search/package.json +0 -3
  178. package/components/basic/search/scrollable.directive.d.ts +2 -3
  179. package/components/basic/search/search.component.d.ts +1 -1
  180. package/components/basic/spinner/.npmignore +2 -0
  181. package/components/basic/spinner/bundles/index.umd.js +118 -0
  182. package/components/{input/default → basic/spinner}/esm2022/index.mjs +1 -1
  183. package/components/basic/spinner/esm2022/public_api.mjs +2 -0
  184. package/components/basic/spinner/esm2022/spinner.component.mjs +79 -0
  185. package/components/basic/spinner/esm2022/spinner.props.mjs +20 -0
  186. package/components/basic/spinner/fesm2022/index.mjs +103 -0
  187. package/components/basic/spinner/fesm2022/index.mjs.map +1 -0
  188. package/components/basic/spinner/index.d.ts +5 -0
  189. package/components/basic/spinner/package.json +20 -0
  190. package/components/basic/spinner/public_api.d.ts +1 -0
  191. package/components/basic/tree/bundles/index.umd.js +34 -38
  192. package/components/basic/tree/esm2022/tree.component.mjs +31 -36
  193. package/components/basic/tree/fesm2022/index.mjs +32 -36
  194. package/components/basic/tree/fesm2022/index.mjs.map +1 -1
  195. package/components/basic/tree/package.json +0 -3
  196. package/components/basic/video/.npmignore +2 -0
  197. package/components/basic/video/bundles/index.umd.js +116 -0
  198. package/components/basic/video/esm2022/index.mjs +5 -0
  199. package/components/basic/video/esm2022/public_api.mjs +2 -0
  200. package/components/basic/video/esm2022/video.component.mjs +70 -0
  201. package/components/basic/video/esm2022/video.props.mjs +24 -0
  202. package/components/basic/video/fesm2022/index.mjs +99 -0
  203. package/components/basic/video/fesm2022/index.mjs.map +1 -0
  204. package/components/basic/video/index.d.ts +5 -0
  205. package/components/basic/video/package.json +20 -0
  206. package/components/basic/video/public_api.d.ts +1 -0
  207. package/components/chart/bundles/index.umd.js +22 -75
  208. package/components/chart/esm2022/chart.component.mjs +20 -74
  209. package/components/chart/fesm2022/index.mjs +21 -74
  210. package/components/chart/fesm2022/index.mjs.map +1 -1
  211. package/components/chart/package.json +0 -3
  212. package/components/containers/accordion/bundles/index.umd.js +45 -100
  213. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +19 -70
  214. package/components/containers/accordion/esm2022/accordion.directive.mjs +24 -29
  215. package/components/containers/accordion/fesm2022/index.mjs +43 -98
  216. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  217. package/components/containers/accordion/package.json +0 -3
  218. package/components/containers/layout-grid/bundles/index.umd.js +60 -60
  219. package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +23 -23
  220. package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +20 -20
  221. package/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +20 -20
  222. package/components/containers/layout-grid/fesm2022/index.mjs +61 -61
  223. package/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
  224. package/components/containers/layout-grid/package.json +0 -3
  225. package/components/containers/linear-layout/bundles/index.umd.js +38 -38
  226. package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +20 -20
  227. package/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +20 -20
  228. package/components/containers/linear-layout/fesm2022/index.mjs +39 -39
  229. package/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
  230. package/components/containers/linear-layout/package.json +0 -3
  231. package/components/containers/panel/bundles/index.umd.js +62 -223
  232. package/components/containers/panel/esm2022/panel.component.mjs +29 -190
  233. package/components/containers/panel/fesm2022/index.mjs +29 -190
  234. package/components/containers/panel/fesm2022/index.mjs.map +1 -1
  235. package/components/containers/panel/package.json +0 -3
  236. package/components/containers/tabs/bundles/index.umd.js +95 -204
  237. package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +34 -51
  238. package/components/containers/tabs/esm2022/tabs.component.mjs +29 -123
  239. package/components/containers/tabs/fesm2022/index.mjs +61 -170
  240. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  241. package/components/containers/tabs/package.json +0 -3
  242. package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +3 -4
  243. package/components/containers/tile/bundles/index.umd.js +19 -19
  244. package/components/containers/tile/esm2022/tile.directive.mjs +20 -20
  245. package/components/containers/tile/fesm2022/index.mjs +20 -20
  246. package/components/containers/tile/fesm2022/index.mjs.map +1 -1
  247. package/components/containers/tile/package.json +0 -3
  248. package/components/containers/wizard/bundles/index.umd.js +119 -302
  249. package/components/containers/wizard/esm2022/wizard-action/wizard-action.directive.mjs +21 -21
  250. package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +32 -45
  251. package/components/containers/wizard/esm2022/wizard.component.mjs +30 -201
  252. package/components/containers/wizard/fesm2022/index.mjs +81 -264
  253. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  254. package/components/containers/wizard/package.json +0 -3
  255. package/components/containers/wizard/wizard.component.d.ts +1 -1
  256. package/components/data/card/bundles/index.umd.js +108 -208
  257. package/components/data/card/esm2022/card-actions/card-actions.directive.mjs +15 -15
  258. package/components/data/card/esm2022/card-content/card-content.component.mjs +19 -34
  259. package/components/data/card/esm2022/card-footer/card-footer.directive.mjs +15 -15
  260. package/components/data/card/esm2022/card.component.mjs +21 -107
  261. package/components/data/card/fesm2022/index.mjs +67 -167
  262. package/components/data/card/fesm2022/index.mjs.map +1 -1
  263. package/components/data/card/package.json +0 -3
  264. package/components/data/form/bundles/index.umd.js +287 -467
  265. package/components/data/form/esm2022/form-action/form-action.directive.mjs +22 -22
  266. package/components/data/form/esm2022/form-field/form-field.directive.mjs +80 -91
  267. package/components/data/form/esm2022/form-widget.directive.mjs +31 -31
  268. package/components/data/form/esm2022/form.component.mjs +88 -251
  269. package/components/data/form/esm2022/form.props.mjs +1 -1
  270. package/components/data/form/esm2022/live-actions/dependson.directive.mjs +19 -24
  271. package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +15 -15
  272. package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +15 -15
  273. package/components/data/form/esm2022/live-form/live-form.directive.mjs +23 -25
  274. package/components/data/form/fesm2022/index.mjs +288 -468
  275. package/components/data/form/fesm2022/index.mjs.map +1 -1
  276. package/components/data/form/package.json +0 -3
  277. package/components/data/list/bundles/index.umd.js +80 -360
  278. package/components/data/list/esm2022/list-item.directive.mjs +27 -34
  279. package/components/data/list/esm2022/list.animator.mjs +1 -1
  280. package/components/data/list/esm2022/list.component.mjs +55 -330
  281. package/components/data/list/esm2022/list.props.mjs +1 -1
  282. package/components/data/list/fesm2022/index.mjs +79 -358
  283. package/components/data/list/fesm2022/index.mjs.map +1 -1
  284. package/components/data/list/list-item.directive.d.ts +3 -3
  285. package/components/data/list/list.component.d.ts +2 -4
  286. package/components/data/list/package.json +0 -3
  287. package/components/data/live-table/bundles/index.umd.js +28 -39
  288. package/components/data/live-table/esm2022/live-table.component.mjs +25 -37
  289. package/components/data/live-table/fesm2022/index.mjs +26 -37
  290. package/components/data/live-table/fesm2022/index.mjs.map +1 -1
  291. package/components/data/live-table/package.json +0 -3
  292. package/components/data/pagination/bundles/index.umd.js +33 -505
  293. package/components/data/pagination/esm2022/pagination.component.mjs +33 -507
  294. package/components/data/pagination/esm2022/pagination.props.mjs +1 -1
  295. package/components/data/pagination/fesm2022/index.mjs +32 -505
  296. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  297. package/components/data/pagination/package.json +0 -3
  298. package/components/data/pagination/pagination.component.d.ts +1 -1
  299. package/components/data/table/bundles/index.umd.js +310 -457
  300. package/components/data/table/esm2022/table-action/table-action.directive.mjs +22 -22
  301. package/components/data/table/esm2022/table-column/table-column.directive.mjs +50 -71
  302. package/components/data/table/esm2022/table-column/table-column.props.mjs +1 -1
  303. package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +26 -26
  304. package/components/data/table/esm2022/table-cud.directive.mjs +15 -15
  305. package/components/data/table/esm2022/table-filter.directive.mjs +16 -16
  306. package/components/data/table/esm2022/table-row/table-row.directive.mjs +24 -24
  307. package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +29 -29
  308. package/components/data/table/esm2022/table.component.mjs +135 -263
  309. package/components/data/table/esm2022/table.props.mjs +2 -1
  310. package/components/data/table/fesm2022/index.mjs +312 -459
  311. package/components/data/table/fesm2022/index.mjs.map +1 -1
  312. package/components/data/table/package.json +0 -3
  313. package/components/data/table/table-column/table-column.directive.d.ts +1 -1
  314. package/components/data/table/table.component.d.ts +3 -0
  315. package/components/dialogs/alert-dialog/bundles/index.umd.js +50 -79
  316. package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +32 -62
  317. package/components/dialogs/alert-dialog/fesm2022/index.mjs +32 -61
  318. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  319. package/components/dialogs/alert-dialog/package.json +0 -3
  320. package/components/dialogs/confirm-dialog/bundles/index.umd.js +36 -72
  321. package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +34 -71
  322. package/components/dialogs/confirm-dialog/fesm2022/index.mjs +35 -71
  323. package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  324. package/components/dialogs/confirm-dialog/package.json +0 -3
  325. package/components/dialogs/default/bundles/index.umd.js +85 -232
  326. package/components/dialogs/default/esm2022/base-dialog.mjs +14 -14
  327. package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +16 -18
  328. package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +20 -20
  329. package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +34 -179
  330. package/components/dialogs/default/fesm2022/index.mjs +80 -227
  331. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  332. package/components/dialogs/default/package.json +0 -3
  333. package/components/dialogs/design-dialog/bundles/index.umd.js +52 -108
  334. package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +50 -107
  335. package/components/dialogs/design-dialog/fesm2022/index.mjs +51 -107
  336. package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  337. package/components/dialogs/design-dialog/package.json +0 -3
  338. package/components/dialogs/iframe-dialog/bundles/index.umd.js +33 -81
  339. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +32 -82
  340. package/components/dialogs/iframe-dialog/fesm2022/index.mjs +33 -82
  341. package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  342. package/components/dialogs/iframe-dialog/package.json +0 -3
  343. package/components/dialogs/login-dialog/bundles/index.umd.js +22 -29
  344. package/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +23 -30
  345. package/components/dialogs/login-dialog/fesm2022/index.mjs +23 -30
  346. package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
  347. package/components/dialogs/login-dialog/package.json +0 -3
  348. package/components/dialogs/partial-dialog/bundles/index.umd.js +39 -85
  349. package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +38 -85
  350. package/components/dialogs/partial-dialog/fesm2022/index.mjs +39 -85
  351. package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  352. package/components/dialogs/partial-dialog/package.json +0 -3
  353. package/components/input/base-form/.npmignore +2 -0
  354. package/components/input/base-form/bundles/index.umd.js +133 -0
  355. package/components/input/base-form/esm2022/base-form.component.mjs +110 -0
  356. package/components/input/base-form/esm2022/index.mjs +5 -0
  357. package/components/input/base-form/esm2022/public_api.mjs +2 -0
  358. package/components/input/base-form/fesm2022/index.mjs +117 -0
  359. package/components/input/base-form/fesm2022/index.mjs.map +1 -0
  360. package/components/input/base-form/index.d.ts +5 -0
  361. package/components/input/base-form/package.json +20 -0
  362. package/components/input/base-form/public_api.d.ts +1 -0
  363. package/components/input/base-form-custom/.npmignore +2 -0
  364. package/components/input/{default → base-form-custom}/base-form-custom.component.d.ts +1 -1
  365. package/components/input/base-form-custom/bundles/index.umd.js +118 -0
  366. package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +94 -0
  367. package/components/input/base-form-custom/esm2022/index.mjs +5 -0
  368. package/components/input/base-form-custom/esm2022/public_api.mjs +2 -0
  369. package/components/input/base-form-custom/fesm2022/index.mjs +101 -0
  370. package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -0
  371. package/components/input/base-form-custom/index.d.ts +5 -0
  372. package/components/input/base-form-custom/package.json +20 -0
  373. package/components/input/base-form-custom/public_api.d.ts +1 -0
  374. package/components/input/button/.npmignore +2 -0
  375. package/components/input/button/bundles/index.umd.js +98 -0
  376. package/components/input/button/esm2022/button.component.mjs +50 -0
  377. package/components/input/button/esm2022/button.props.mjs +26 -0
  378. package/components/input/button/esm2022/index.mjs +5 -0
  379. package/components/input/button/esm2022/public_api.mjs +2 -0
  380. package/components/input/button/fesm2022/index.mjs +81 -0
  381. package/components/input/button/fesm2022/index.mjs.map +1 -0
  382. package/components/input/button/index.d.ts +5 -0
  383. package/components/input/button/package.json +20 -0
  384. package/components/input/button/public_api.d.ts +1 -0
  385. package/components/input/button-group/.npmignore +2 -0
  386. package/components/input/button-group/bundles/index.umd.js +80 -0
  387. package/components/input/button-group/esm2022/button-group.directive.mjs +47 -0
  388. package/components/input/button-group/esm2022/button-group.props.mjs +10 -0
  389. package/components/input/button-group/esm2022/index.mjs +5 -0
  390. package/components/input/button-group/esm2022/public_api.mjs +2 -0
  391. package/components/input/button-group/fesm2022/index.mjs +62 -0
  392. package/components/input/button-group/fesm2022/index.mjs.map +1 -0
  393. package/components/input/button-group/index.d.ts +5 -0
  394. package/components/input/button-group/package.json +20 -0
  395. package/components/input/button-group/public_api.d.ts +1 -0
  396. package/components/input/calendar/bundles/index.umd.js +25 -38
  397. package/components/input/calendar/esm2022/calendar.component.mjs +22 -36
  398. package/components/input/calendar/fesm2022/index.mjs +23 -36
  399. package/components/input/calendar/fesm2022/index.mjs.map +1 -1
  400. package/components/input/calendar/package.json +0 -3
  401. package/components/input/caption-position/.npmignore +2 -0
  402. package/components/input/caption-position/bundles/index.umd.js +196 -0
  403. package/components/input/caption-position/esm2022/caption-position.directive.mjs +172 -0
  404. package/components/input/caption-position/esm2022/index.mjs +5 -0
  405. package/components/input/caption-position/esm2022/public_api.mjs +2 -0
  406. package/components/input/caption-position/fesm2022/index.mjs +178 -0
  407. package/components/input/caption-position/fesm2022/index.mjs.map +1 -0
  408. package/components/input/caption-position/index.d.ts +5 -0
  409. package/components/input/caption-position/package.json +20 -0
  410. package/components/input/caption-position/public_api.d.ts +1 -0
  411. package/components/input/checkbox/.npmignore +2 -0
  412. package/components/input/checkbox/bundles/index.umd.js +190 -0
  413. package/components/input/{default/checkbox → checkbox}/checkbox.component.d.ts +1 -1
  414. package/components/input/checkbox/esm2022/checkbox.component.mjs +145 -0
  415. package/components/input/checkbox/esm2022/checkbox.props.mjs +27 -0
  416. package/components/{basic/progress → input/checkbox}/esm2022/index.mjs +1 -1
  417. package/components/input/checkbox/esm2022/public_api.mjs +2 -0
  418. package/components/input/checkbox/fesm2022/index.mjs +175 -0
  419. package/components/input/checkbox/fesm2022/index.mjs.map +1 -0
  420. package/components/input/checkbox/index.d.ts +5 -0
  421. package/components/input/checkbox/package.json +20 -0
  422. package/components/input/checkbox/public_api.d.ts +1 -0
  423. package/components/input/checkboxset/.npmignore +2 -0
  424. package/components/input/checkboxset/bundles/index.umd.js +151 -0
  425. package/components/input/{default/checkboxset → checkboxset}/checkboxset.component.d.ts +1 -1
  426. package/components/input/checkboxset/esm2022/checkboxset.component.mjs +99 -0
  427. package/components/input/checkboxset/esm2022/checkboxset.props.mjs +35 -0
  428. package/components/input/checkboxset/esm2022/index.mjs +5 -0
  429. package/components/input/checkboxset/esm2022/public_api.mjs +2 -0
  430. package/components/input/checkboxset/fesm2022/index.mjs +138 -0
  431. package/components/input/checkboxset/fesm2022/index.mjs.map +1 -0
  432. package/components/input/checkboxset/index.d.ts +5 -0
  433. package/components/input/checkboxset/package.json +20 -0
  434. package/components/input/checkboxset/public_api.d.ts +1 -0
  435. package/components/input/chips/bundles/index.umd.js +94 -153
  436. package/components/input/chips/chips.component.d.ts +1 -1
  437. package/components/input/chips/esm2022/chips.component.mjs +41 -101
  438. package/components/input/chips/fesm2022/index.mjs +42 -101
  439. package/components/input/chips/fesm2022/index.mjs.map +1 -1
  440. package/components/input/chips/package.json +0 -3
  441. package/components/input/color-picker/bundles/index.umd.js +35 -74
  442. package/components/input/color-picker/color-picker.component.d.ts +2 -2
  443. package/components/input/color-picker/esm2022/color-picker.component.mjs +34 -75
  444. package/components/input/color-picker/fesm2022/index.mjs +36 -75
  445. package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  446. package/components/input/color-picker/package.json +0 -3
  447. package/components/input/composite/.npmignore +2 -0
  448. package/components/input/composite/bundles/index.umd.js +111 -0
  449. package/components/input/composite/esm2022/composite.directive.mjs +79 -0
  450. package/components/input/composite/esm2022/composite.props.mjs +10 -0
  451. package/components/input/composite/esm2022/index.mjs +5 -0
  452. package/components/input/composite/esm2022/public_api.mjs +2 -0
  453. package/components/input/composite/fesm2022/index.mjs +94 -0
  454. package/components/input/composite/fesm2022/index.mjs.map +1 -0
  455. package/components/input/composite/index.d.ts +5 -0
  456. package/components/input/composite/package.json +20 -0
  457. package/components/input/composite/public_api.d.ts +1 -0
  458. package/components/input/currency/bundles/index.umd.js +31 -52
  459. package/components/input/currency/currency.component.d.ts +1 -1
  460. package/components/input/currency/esm2022/currency.component.mjs +28 -50
  461. package/components/input/currency/fesm2022/index.mjs +30 -51
  462. package/components/input/currency/fesm2022/index.mjs.map +1 -1
  463. package/components/input/currency/package.json +0 -3
  464. package/components/input/dataset-aware-form/.npmignore +2 -0
  465. package/components/input/dataset-aware-form/bundles/index.umd.js +328 -0
  466. package/components/input/{default → dataset-aware-form}/dataset-aware-form.component.d.ts +1 -1
  467. package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +307 -0
  468. package/components/input/dataset-aware-form/esm2022/index.mjs +5 -0
  469. package/components/input/dataset-aware-form/esm2022/public_api.mjs +2 -0
  470. package/components/input/dataset-aware-form/fesm2022/index.mjs +314 -0
  471. package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -0
  472. package/components/input/dataset-aware-form/index.d.ts +5 -0
  473. package/components/input/dataset-aware-form/package.json +20 -0
  474. package/components/input/dataset-aware-form/public_api.d.ts +1 -0
  475. package/components/input/epoch/base-date-time/.npmignore +2 -0
  476. package/components/input/epoch/{base-date-time.component.d.ts → base-date-time/base-date-time.component.d.ts} +1 -1
  477. package/components/input/epoch/base-date-time/bundles/index.umd.js +1086 -0
  478. package/components/input/epoch/{esm2022 → base-date-time/esm2022}/base-date-time.component.mjs +22 -31
  479. package/components/input/epoch/base-date-time/esm2022/index.mjs +5 -0
  480. package/components/input/epoch/base-date-time/esm2022/public_api.mjs +2 -0
  481. package/components/input/epoch/base-date-time/fesm2022/index.mjs +1077 -0
  482. package/components/input/epoch/base-date-time/fesm2022/index.mjs.map +1 -0
  483. package/components/input/epoch/base-date-time/index.d.ts +5 -0
  484. package/components/input/epoch/base-date-time/package.json +20 -0
  485. package/components/input/epoch/base-date-time/public_api.d.ts +1 -0
  486. package/components/input/epoch/date/.npmignore +2 -0
  487. package/components/input/epoch/date/bundles/index.umd.js +492 -0
  488. package/components/input/epoch/date/date.component.d.ts +2 -2
  489. package/components/input/epoch/date/esm2022/date.component.mjs +322 -0
  490. package/components/input/epoch/{esm2022/date → date/esm2022}/date.props.mjs +1 -1
  491. package/components/input/epoch/{esm2022/date → date/esm2022}/imaskUtil.mjs +1 -1
  492. package/components/input/epoch/date/esm2022/index.mjs +5 -0
  493. package/components/input/epoch/date/esm2022/public_api.mjs +2 -0
  494. package/components/input/epoch/date/fesm2022/index.mjs +482 -0
  495. package/components/input/epoch/date/fesm2022/index.mjs.map +1 -0
  496. package/components/input/epoch/date/index.d.ts +5 -0
  497. package/components/input/epoch/date/package.json +20 -0
  498. package/components/input/epoch/date/public_api.d.ts +1 -0
  499. package/components/input/epoch/date-time/.npmignore +2 -0
  500. package/components/input/epoch/date-time/bundles/index.umd.js +518 -0
  501. package/components/input/epoch/date-time/date-time.component.d.ts +1 -1
  502. package/components/input/epoch/date-time/esm2022/date-time.component.mjs +458 -0
  503. package/components/input/epoch/{esm2022/date-time → date-time/esm2022}/date-time.props.mjs +1 -1
  504. package/components/input/epoch/date-time/esm2022/index.mjs +5 -0
  505. package/components/input/epoch/date-time/esm2022/public_api.mjs +2 -0
  506. package/components/input/epoch/date-time/fesm2022/index.mjs +509 -0
  507. package/components/input/epoch/date-time/fesm2022/index.mjs.map +1 -0
  508. package/components/input/epoch/date-time/index.d.ts +5 -0
  509. package/components/input/epoch/date-time/package.json +20 -0
  510. package/components/input/epoch/date-time/public_api.d.ts +1 -0
  511. package/components/input/epoch/date-time-picker/.npmignore +2 -0
  512. package/components/input/epoch/date-time-picker/bundles/index.umd.js +453 -0
  513. package/components/input/epoch/date-time-picker/esm2022/date-time-picker.component.mjs +433 -0
  514. package/components/input/epoch/date-time-picker/esm2022/index.mjs +5 -0
  515. package/components/input/epoch/date-time-picker/esm2022/public_api.mjs +2 -0
  516. package/components/input/epoch/date-time-picker/fesm2022/index.mjs +439 -0
  517. package/components/input/epoch/date-time-picker/fesm2022/index.mjs.map +1 -0
  518. package/components/input/epoch/date-time-picker/index.d.ts +5 -0
  519. package/components/input/epoch/date-time-picker/package.json +20 -0
  520. package/components/input/epoch/date-time-picker/public_api.d.ts +1 -0
  521. package/components/input/epoch/picker/.npmignore +2 -0
  522. package/components/input/epoch/picker/bundles/index.umd.js +192 -0
  523. package/components/input/epoch/picker/esm2022/index.mjs +5 -0
  524. package/components/input/epoch/picker/esm2022/picker.component.mjs +165 -0
  525. package/components/input/epoch/picker/esm2022/public_api.mjs +3 -0
  526. package/components/input/epoch/picker/fesm2022/index.mjs +172 -0
  527. package/components/input/epoch/picker/fesm2022/index.mjs.map +1 -0
  528. package/components/input/epoch/picker/index.d.ts +5 -0
  529. package/components/input/epoch/picker/package.json +20 -0
  530. package/components/input/epoch/picker/public_api.d.ts +2 -0
  531. package/components/input/epoch/time/.npmignore +2 -0
  532. package/components/input/epoch/time/bundles/index.umd.js +397 -0
  533. package/components/input/epoch/time/esm2022/index.mjs +5 -0
  534. package/components/input/epoch/time/esm2022/public_api.mjs +2 -0
  535. package/components/input/epoch/time/esm2022/time.component.mjs +348 -0
  536. package/components/input/epoch/{esm2022/time → time/esm2022}/time.props.mjs +1 -1
  537. package/components/input/epoch/time/fesm2022/index.mjs +387 -0
  538. package/components/input/epoch/time/fesm2022/index.mjs.map +1 -0
  539. package/components/input/epoch/time/index.d.ts +5 -0
  540. package/components/input/epoch/time/package.json +20 -0
  541. package/components/input/epoch/time/public_api.d.ts +1 -0
  542. package/components/input/epoch/time/time.component.d.ts +1 -1
  543. package/components/input/file-upload/bundles/index.umd.js +56 -348
  544. package/components/input/file-upload/esm2022/file-upload.component.mjs +20 -313
  545. package/components/input/file-upload/fesm2022/index.mjs +20 -312
  546. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  547. package/components/input/file-upload/package.json +0 -3
  548. package/components/input/number/.npmignore +2 -0
  549. package/components/input/number/bundles/index.umd.js +101 -0
  550. package/components/input/number/esm2022/index.mjs +5 -0
  551. package/components/input/number/esm2022/number.component.mjs +49 -0
  552. package/components/input/number/esm2022/number.props.mjs +35 -0
  553. package/components/input/number/esm2022/public_api.mjs +2 -0
  554. package/components/input/number/fesm2022/index.mjs +87 -0
  555. package/components/input/number/fesm2022/index.mjs.map +1 -0
  556. package/components/input/number/index.d.ts +5 -0
  557. package/components/input/{default/number → number}/number.component.d.ts +1 -1
  558. package/components/input/number/package.json +20 -0
  559. package/components/input/number/public_api.d.ts +1 -0
  560. package/components/input/radioset/.npmignore +2 -0
  561. package/components/input/radioset/bundles/index.umd.js +136 -0
  562. package/components/input/radioset/esm2022/index.mjs +5 -0
  563. package/components/input/radioset/esm2022/public_api.mjs +2 -0
  564. package/components/input/radioset/esm2022/radioset.component.mjs +84 -0
  565. package/components/input/radioset/esm2022/radioset.props.mjs +35 -0
  566. package/components/input/radioset/fesm2022/index.mjs +123 -0
  567. package/components/input/radioset/fesm2022/index.mjs.map +1 -0
  568. package/components/input/radioset/index.d.ts +5 -0
  569. package/components/input/radioset/package.json +20 -0
  570. package/components/input/radioset/public_api.d.ts +1 -0
  571. package/components/input/{default/radioset → radioset}/radioset.component.d.ts +1 -1
  572. package/components/input/rating/bundles/index.umd.js +49 -103
  573. package/components/input/rating/esm2022/rating.component.mjs +24 -79
  574. package/components/input/rating/fesm2022/index.mjs +25 -79
  575. package/components/input/rating/fesm2022/index.mjs.map +1 -1
  576. package/components/input/rating/package.json +0 -3
  577. package/components/input/rating/rating.component.d.ts +1 -1
  578. package/components/input/select/.npmignore +2 -0
  579. package/components/input/select/bundles/index.umd.js +219 -0
  580. package/components/input/select/esm2022/index.mjs +5 -0
  581. package/components/input/select/esm2022/public_api.mjs +2 -0
  582. package/components/input/select/esm2022/select.component.mjs +166 -0
  583. package/components/input/select/esm2022/select.props.mjs +36 -0
  584. package/components/input/select/fesm2022/index.mjs +205 -0
  585. package/components/input/select/fesm2022/index.mjs.map +1 -0
  586. package/components/input/select/index.d.ts +5 -0
  587. package/components/input/select/package.json +20 -0
  588. package/components/input/select/public_api.d.ts +1 -0
  589. package/components/input/{default/select → select}/select.component.d.ts +1 -1
  590. package/components/input/slider/bundles/index.umd.js +44 -111
  591. package/components/input/slider/esm2022/slider.component.mjs +25 -95
  592. package/components/input/slider/esm2022/slider.props.mjs +1 -1
  593. package/components/input/slider/fesm2022/index.mjs +25 -93
  594. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  595. package/components/input/slider/package.json +0 -3
  596. package/components/input/slider/slider.component.d.ts +2 -2
  597. package/components/input/switch/.npmignore +2 -0
  598. package/components/input/switch/bundles/index.umd.js +204 -0
  599. package/components/input/switch/esm2022/index.mjs +5 -0
  600. package/components/input/switch/esm2022/public_api.mjs +2 -0
  601. package/components/input/switch/esm2022/switch.component.mjs +159 -0
  602. package/components/input/switch/esm2022/switch.props.mjs +28 -0
  603. package/components/input/switch/fesm2022/index.mjs +191 -0
  604. package/components/input/switch/fesm2022/index.mjs.map +1 -0
  605. package/components/input/switch/index.d.ts +5 -0
  606. package/components/input/switch/package.json +20 -0
  607. package/components/input/switch/public_api.d.ts +1 -0
  608. package/components/input/{default/switch → switch}/switch.component.d.ts +1 -1
  609. package/components/input/text/.npmignore +2 -0
  610. package/components/input/{default/text/base → text/base-input}/base-input.d.ts +1 -1
  611. package/components/input/text/bundles/index.umd.js +1070 -0
  612. package/components/input/text/esm2022/base-input/base-input.mjs +93 -0
  613. package/components/input/text/esm2022/index.mjs +5 -0
  614. package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +46 -0
  615. package/components/input/text/esm2022/input-calendar/input-calendar.props.mjs +30 -0
  616. package/components/input/text/esm2022/input-color/input-color.component.mjs +46 -0
  617. package/components/input/text/esm2022/input-color/input-color.props.mjs +27 -0
  618. package/components/input/text/esm2022/input-email/input-email.component.mjs +46 -0
  619. package/components/input/text/esm2022/input-email/input-email.props.mjs +29 -0
  620. package/components/input/text/esm2022/input-number/input-number.component.mjs +56 -0
  621. package/components/input/text/esm2022/input-number/input-number.props.mjs +32 -0
  622. package/components/input/text/esm2022/input-text/input-text.component.mjs +121 -0
  623. package/components/input/text/esm2022/input-text/input-text.props.mjs +46 -0
  624. package/components/input/text/esm2022/number-locale/number-locale.mjs +539 -0
  625. package/components/input/text/esm2022/public_api.mjs +8 -0
  626. package/components/input/text/fesm2022/index.mjs +1054 -0
  627. package/components/input/text/fesm2022/index.mjs.map +1 -0
  628. package/components/input/text/index.d.ts +5 -0
  629. package/components/input/{default/text/calendar → text/input-calendar}/input-calendar.component.d.ts +1 -1
  630. package/components/input/{default/text/color → text/input-color}/input-color.component.d.ts +1 -1
  631. package/components/input/{default/text/email → text/input-email}/input-email.component.d.ts +1 -1
  632. package/components/input/{default/text/number → text/input-number}/input-number.component.d.ts +1 -1
  633. package/components/input/{default/text/text → text/input-text}/input-text.component.d.ts +1 -1
  634. package/components/input/{default/text/locale → text/number-locale}/number-locale.d.ts +1 -1
  635. package/components/input/text/package.json +20 -0
  636. package/components/input/text/public_api.d.ts +7 -0
  637. package/components/input/textarea/.npmignore +2 -0
  638. package/components/input/textarea/bundles/index.umd.js +101 -0
  639. package/components/input/textarea/esm2022/index.mjs +5 -0
  640. package/components/input/textarea/esm2022/public_api.mjs +2 -0
  641. package/components/input/textarea/esm2022/textarea.component.mjs +53 -0
  642. package/components/input/textarea/esm2022/textarea.props.mjs +30 -0
  643. package/components/input/textarea/fesm2022/index.mjs +87 -0
  644. package/components/input/textarea/fesm2022/index.mjs.map +1 -0
  645. package/components/input/textarea/index.d.ts +5 -0
  646. package/components/input/textarea/package.json +20 -0
  647. package/components/input/textarea/public_api.d.ts +1 -0
  648. package/components/input/{default/textarea → textarea}/textarea.component.d.ts +1 -1
  649. package/components/navigation/breadcrumb/bundles/index.umd.js +37 -79
  650. package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +20 -64
  651. package/components/navigation/breadcrumb/fesm2022/index.mjs +21 -64
  652. package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  653. package/components/navigation/breadcrumb/package.json +0 -3
  654. package/components/navigation/menu/bundles/index.umd.js +247 -442
  655. package/components/navigation/menu/esm2022/menu-adapator.component.mjs +14 -19
  656. package/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +13 -29
  657. package/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +43 -100
  658. package/components/navigation/menu/esm2022/menu.component.mjs +53 -104
  659. package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +30 -37
  660. package/components/navigation/menu/esm2022/nav/nav.component.mjs +20 -88
  661. package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +14 -14
  662. package/components/navigation/menu/fesm2022/index.mjs +174 -369
  663. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  664. package/components/navigation/menu/menu-dropdown/menu-dropdown.component.d.ts +2 -3
  665. package/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +3 -3
  666. package/components/navigation/menu/package.json +0 -3
  667. package/components/navigation/navbar/bundles/index.umd.js +32 -83
  668. package/components/navigation/navbar/esm2022/navbar.component.mjs +20 -72
  669. package/components/navigation/navbar/fesm2022/index.mjs +20 -71
  670. package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
  671. package/components/navigation/navbar/package.json +0 -3
  672. package/components/navigation/popover/bundles/index.umd.js +31 -59
  673. package/components/navigation/popover/esm2022/popover.component.mjs +29 -58
  674. package/components/navigation/popover/fesm2022/index.mjs +31 -59
  675. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  676. package/components/navigation/popover/package.json +0 -3
  677. package/components/page/default/bundles/index.umd.js +109 -123
  678. package/components/page/default/esm2022/content/content.component.mjs +16 -25
  679. package/components/page/default/esm2022/layout.directive.mjs +21 -21
  680. package/components/page/default/esm2022/page-content/page-content.component.mjs +16 -23
  681. package/components/page/default/esm2022/page.directive.mjs +21 -21
  682. package/components/page/default/esm2022/router-outlet.directive.mjs +20 -20
  683. package/components/page/default/esm2022/spa-page.directive.mjs +21 -21
  684. package/components/page/default/fesm2022/index.mjs +111 -125
  685. package/components/page/default/fesm2022/index.mjs.map +1 -1
  686. package/components/page/default/package.json +0 -3
  687. package/components/page/footer/bundles/index.umd.js +20 -20
  688. package/components/page/footer/esm2022/footer.directive.mjs +21 -21
  689. package/components/page/footer/fesm2022/index.mjs +21 -21
  690. package/components/page/footer/fesm2022/index.mjs.map +1 -1
  691. package/components/page/footer/package.json +0 -3
  692. package/components/page/header/bundles/index.umd.js +19 -26
  693. package/components/page/header/esm2022/header.component.mjs +16 -24
  694. package/components/page/header/fesm2022/index.mjs +17 -24
  695. package/components/page/header/fesm2022/index.mjs.map +1 -1
  696. package/components/page/header/package.json +0 -3
  697. package/components/page/left-panel/bundles/index.umd.js +30 -30
  698. package/components/page/left-panel/esm2022/left-panel.directive.mjs +31 -31
  699. package/components/page/left-panel/fesm2022/index.mjs +31 -31
  700. package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  701. package/components/page/left-panel/package.json +0 -3
  702. package/components/page/right-panel/bundles/index.umd.js +23 -23
  703. package/components/page/right-panel/esm2022/right-panel.directive.mjs +24 -24
  704. package/components/page/right-panel/fesm2022/index.mjs +24 -24
  705. package/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  706. package/components/page/right-panel/package.json +0 -3
  707. package/components/page/top-nav/bundles/index.umd.js +20 -20
  708. package/components/page/top-nav/esm2022/top-nav.directive.mjs +21 -21
  709. package/components/page/top-nav/fesm2022/index.mjs +21 -21
  710. package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  711. package/components/page/top-nav/package.json +0 -3
  712. package/components/prefab/bundles/index.umd.js +41 -41
  713. package/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +20 -20
  714. package/components/prefab/esm2022/prefab.directive.mjs +23 -23
  715. package/components/prefab/fesm2022/index.mjs +42 -42
  716. package/components/prefab/fesm2022/index.mjs.map +1 -1
  717. package/components/prefab/package.json +0 -3
  718. package/core/bundles/index.umd.js +80 -61
  719. package/core/esm2022/services/constant.service.mjs +7 -7
  720. package/core/esm2022/services/custom-icons-loader.service.mjs +7 -7
  721. package/core/esm2022/services/field-type.service.mjs +7 -7
  722. package/core/esm2022/services/field-widget.service.mjs +7 -7
  723. package/core/esm2022/services/pagination.service.mjs +7 -7
  724. package/core/esm2022/services/script-loader.service.mjs +7 -7
  725. package/core/esm2022/services/state-persistence.service.mjs +7 -7
  726. package/core/esm2022/services/user-custom-pipe-manager.service.mjs +7 -7
  727. package/core/esm2022/services/utils.service.mjs +7 -7
  728. package/core/esm2022/services/viewport.service.mjs +7 -7
  729. package/core/esm2022/types/types.mjs +1 -1
  730. package/core/esm2022/utils/build-utils.mjs +21 -2
  731. package/core/fesm2022/index.mjs +80 -61
  732. package/core/fesm2022/index.mjs.map +1 -1
  733. package/core/package.json +3 -6
  734. package/core/types/types.d.ts +2 -1
  735. package/http/bundles/index.umd.js +8 -8
  736. package/http/esm2022/http.service.mjs +9 -9
  737. package/http/fesm2022/index.mjs +8 -8
  738. package/http/fesm2022/index.mjs.map +1 -1
  739. package/http/package.json +2 -5
  740. package/locales/moment/ar-dz.js +8 -8
  741. package/locales/moment/ar-ly.js +8 -8
  742. package/locales/moment/ar-ps.js +123 -0
  743. package/locales/moment/ar.js +8 -8
  744. package/locales/moment/be.js +2 -2
  745. package/locales/moment/bs.js +14 -4
  746. package/locales/moment/ca.js +6 -6
  747. package/locales/moment/cs.js +5 -4
  748. package/locales/moment/cv.js +2 -2
  749. package/locales/moment/en-au.js +6 -6
  750. package/locales/moment/en-ca.js +6 -6
  751. package/locales/moment/en-gb.js +6 -6
  752. package/locales/moment/en-ie.js +6 -6
  753. package/locales/moment/en-il.js +6 -6
  754. package/locales/moment/en-in.js +6 -6
  755. package/locales/moment/en-nz.js +6 -6
  756. package/locales/moment/en-sg.js +6 -6
  757. package/locales/moment/it.js +4 -4
  758. package/locales/moment/ku-kmr.js +125 -0
  759. package/locales/moment/lt.js +2 -2
  760. package/locales/moment/me.js +2 -2
  761. package/locales/moment/nb.js +4 -4
  762. package/locales/moment/nl-be.js +1 -1
  763. package/locales/moment/nl.js +1 -1
  764. package/locales/moment/oc-lnc.js +6 -6
  765. package/locales/moment/ru.js +2 -2
  766. package/locales/moment/sv.js +6 -6
  767. package/locales/moment/tet.js +6 -6
  768. package/locales/moment/tlh.js +8 -8
  769. package/locales/moment/tzl.js +2 -2
  770. package/locales/moment/uk.js +4 -4
  771. package/locales/moment/x-pseudo.js +6 -6
  772. package/locales/moment-timezone/moment-timezone-with-data.js +2 -2
  773. package/npm-shrinkwrap.json +2 -2
  774. package/oAuth/bundles/index.umd.js +5 -5
  775. package/oAuth/esm2022/oAuth.service.mjs +6 -6
  776. package/oAuth/fesm2022/index.mjs +5 -5
  777. package/oAuth/fesm2022/index.mjs.map +1 -1
  778. package/oAuth/package.json +2 -5
  779. package/package-lock.json +2 -2
  780. package/package.json +1 -1
  781. package/runtime/base/bundles/index.umd.js +3162 -3100
  782. package/runtime/base/components/empty-component/empty-page.component.d.ts +1 -0
  783. package/runtime/base/esm2022/components/app-component/app.component.mjs +14 -95
  784. package/runtime/base/esm2022/components/app-spinner.component.mjs +34 -45
  785. package/runtime/base/esm2022/components/base-custom-widget.component.mjs +8 -7
  786. package/runtime/base/esm2022/components/base-layout.component.mjs +14 -21
  787. package/runtime/base/esm2022/components/base-page.component.mjs +12 -19
  788. package/runtime/base/esm2022/components/base-partial.component.mjs +9 -14
  789. package/runtime/base/esm2022/components/base-prefab.component.mjs +9 -14
  790. package/runtime/base/esm2022/components/base-spa-page.component.mjs +12 -19
  791. package/runtime/base/esm2022/components/custom-toaster.component.mjs +30 -52
  792. package/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +33 -15
  793. package/runtime/base/esm2022/components/prefab-preview.component.mjs +19 -26
  794. package/runtime/base/esm2022/directives/accessroles.directive.mjs +17 -17
  795. package/runtime/base/esm2022/directives/prefab.directive.mjs +15 -15
  796. package/runtime/base/esm2022/guards/auth.guard.mjs +6 -6
  797. package/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +11 -11
  798. package/runtime/base/esm2022/guards/page-not-found.guard.mjs +6 -6
  799. package/runtime/base/esm2022/guards/role.guard.mjs +6 -6
  800. package/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +12 -12
  801. package/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +14 -14
  802. package/runtime/base/esm2022/public_api.mjs +5 -2
  803. package/runtime/base/esm2022/resolves/app-before-load.resolve.mjs +22 -0
  804. package/runtime/base/esm2022/resolves/app-extension.resolve.mjs +6 -6
  805. package/runtime/base/esm2022/resolves/app-js.resolve.mjs +6 -6
  806. package/runtime/base/esm2022/resolves/app-variables.resolve.mjs +9 -9
  807. package/runtime/base/esm2022/resolves/i18n.resolve.mjs +6 -6
  808. package/runtime/base/esm2022/resolves/metadata.resolve.mjs +9 -9
  809. package/runtime/base/esm2022/resolves/security-config.resolve.mjs +9 -9
  810. package/runtime/base/esm2022/runtime-base.module.mjs +457 -316
  811. package/runtime/base/esm2022/services/app-defaults.service.mjs +6 -6
  812. package/runtime/base/esm2022/services/app.manager.service.mjs +25 -9
  813. package/runtime/base/esm2022/services/app.service.mjs +39 -18
  814. package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +6 -6
  815. package/runtime/base/esm2022/services/http-interceptor.services.mjs +6 -6
  816. package/runtime/base/esm2022/services/i18n.service.mjs +37 -34
  817. package/runtime/base/esm2022/services/navigation.service.mjs +6 -6
  818. package/runtime/base/esm2022/services/pipe-provider.service.mjs +13 -13
  819. package/runtime/base/esm2022/services/pipe.service.mjs +10 -8
  820. package/runtime/base/esm2022/services/prefab-manager.service.mjs +6 -6
  821. package/runtime/base/esm2022/services/spinner.service.mjs +6 -6
  822. package/runtime/base/esm2022/services/toaster.service.mjs +6 -6
  823. package/runtime/base/esm2022/util/fragment-monitor.mjs +6 -6
  824. package/runtime/base/esm2022/util/utils.mjs +15 -1
  825. package/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +1 -1
  826. package/runtime/base/fesm2022/index.mjs +3145 -3071
  827. package/runtime/base/fesm2022/index.mjs.map +1 -1
  828. package/runtime/base/package.json +2 -5
  829. package/runtime/base/public_api.d.ts +4 -1
  830. package/runtime/base/resolves/app-before-load.resolve.d.ts +11 -0
  831. package/runtime/base/runtime-base.module.d.ts +96 -59
  832. package/runtime/base/services/app.manager.service.d.ts +2 -1
  833. package/runtime/base/services/app.service.d.ts +3 -2
  834. package/runtime/base/services/i18n.service.d.ts +2 -1
  835. package/runtime/base/util/utils.d.ts +2 -1
  836. package/runtime/dynamic/app/app.config.d.ts +1 -1
  837. package/runtime/dynamic/app/services/app-variables-provider.service.d.ts +3 -1
  838. package/runtime/dynamic/bundles/index.umd.js +145 -114
  839. package/runtime/dynamic/esm2022/app/app.config.mjs +11 -10
  840. package/runtime/dynamic/esm2022/app/app.module.mjs +35 -5
  841. package/runtime/dynamic/esm2022/app/app.routes.mjs +2 -11
  842. package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +11 -16
  843. package/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +9 -9
  844. package/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +9 -9
  845. package/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +6 -6
  846. package/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +15 -11
  847. package/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +57 -8
  848. package/runtime/dynamic/esm2022/app/services/customwidget-config-provider.service.mjs +6 -6
  849. package/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +6 -6
  850. package/runtime/dynamic/fesm2022/index.mjs +143 -88
  851. package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  852. package/runtime/dynamic/package.json +2 -5
  853. package/scripts/datatable/datatable.js +26 -5
  854. package/scripts/jquery-ui/ui/widgets/droppable.js +3 -3
  855. package/scripts/jquery-ui/ui/widgets/resizable.js +72 -19
  856. package/scripts/jquery-ui/ui/widgets/sortable.js +9 -16
  857. package/security/bundles/index.umd.js +5 -5
  858. package/security/esm2022/security.service.mjs +6 -6
  859. package/security/fesm2022/index.mjs +5 -5
  860. package/security/fesm2022/index.mjs.map +1 -1
  861. package/security/package.json +2 -5
  862. package/swipey/fesm2022/index.mjs.map +1 -1
  863. package/swipey/package.json +2 -5
  864. package/transpiler/build.d.ts +1 -1
  865. package/transpiler/bundles/index.umd.js +94 -56
  866. package/transpiler/esm2022/build.mjs +5 -2
  867. package/transpiler/esm2022/imports.mjs +92 -57
  868. package/transpiler/fesm2022/index.mjs +94 -56
  869. package/transpiler/fesm2022/index.mjs.map +1 -1
  870. package/transpiler/package.json +3 -6
  871. package/variables/bundles/index.umd.js +20 -10
  872. package/variables/constants/variables.constants.d.ts +9 -0
  873. package/variables/esm2022/constants/variables.constants.mjs +10 -1
  874. package/variables/esm2022/service/metadata-service/metadata.service.mjs +6 -6
  875. package/variables/esm2022/service/variables.service.mjs +6 -6
  876. package/variables/fesm2022/index.mjs +20 -11
  877. package/variables/fesm2022/index.mjs.map +1 -1
  878. package/variables/package.json +2 -5
  879. package/variables/service/variables.service.d.ts +1 -1
  880. package/build-task/esm2022/basic/default/anchor/anchor.build.mjs +0 -15
  881. package/build-task/esm2022/basic/default/audio/audio.build.mjs +0 -10
  882. package/build-task/esm2022/basic/default/html/html.build.mjs +0 -15
  883. package/build-task/esm2022/basic/default/icon/icon.build.mjs +0 -10
  884. package/build-task/esm2022/basic/default/iframe/iframe.build.mjs +0 -10
  885. package/build-task/esm2022/basic/default/label/label.build.mjs +0 -25
  886. package/build-task/esm2022/basic/default/picture/picture.build.mjs +0 -14
  887. package/build-task/esm2022/basic/default/spinner/spinner.build.mjs +0 -15
  888. package/build-task/esm2022/basic/default/video/video.build.mjs +0 -10
  889. package/components/base/components.module.d.ts +0 -25
  890. package/components/base/esm2022/components.module.mjs +0 -152
  891. package/components/basic/default/bundles/index.umd.js +0 -1036
  892. package/components/basic/default/esm2022/anchor/anchor.component.mjs +0 -198
  893. package/components/basic/default/esm2022/anchor/anchor.props.mjs +0 -27
  894. package/components/basic/default/esm2022/audio/audio.component.mjs +0 -59
  895. package/components/basic/default/esm2022/audio/audio.props.mjs +0 -19
  896. package/components/basic/default/esm2022/html/html.directive.mjs +0 -76
  897. package/components/basic/default/esm2022/html/html.props.mjs +0 -12
  898. package/components/basic/default/esm2022/icon/icon.component.mjs +0 -70
  899. package/components/basic/default/esm2022/icon/icon.props.mjs +0 -19
  900. package/components/basic/default/esm2022/iframe/iframe.component.mjs +0 -85
  901. package/components/basic/default/esm2022/iframe/iframe.props.mjs +0 -15
  902. package/components/basic/default/esm2022/label/label.directive.mjs +0 -71
  903. package/components/basic/default/esm2022/label/label.props.mjs +0 -17
  904. package/components/basic/default/esm2022/picture/picture.directive.mjs +0 -95
  905. package/components/basic/default/esm2022/picture/picture.props.mjs +0 -23
  906. package/components/basic/default/esm2022/public_api.mjs +0 -10
  907. package/components/basic/default/esm2022/spinner/spinner.component.mjs +0 -130
  908. package/components/basic/default/esm2022/spinner/spinner.props.mjs +0 -20
  909. package/components/basic/default/esm2022/video/video.component.mjs +0 -113
  910. package/components/basic/default/esm2022/video/video.props.mjs +0 -24
  911. package/components/basic/default/fesm2022/index.mjs +0 -1012
  912. package/components/basic/default/fesm2022/index.mjs.map +0 -1
  913. package/components/basic/default/public_api.d.ts +0 -9
  914. package/components/basic/progress/bundles/index.umd.js +0 -361
  915. package/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +0 -154
  916. package/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +0 -132
  917. package/components/basic/progress/esm2022/public_api.mjs +0 -3
  918. package/components/basic/progress/esm2022/utils.mjs +0 -25
  919. package/components/basic/progress/fesm2022/index.mjs +0 -344
  920. package/components/basic/progress/fesm2022/index.mjs.map +0 -1
  921. package/components/basic/progress/public_api.d.ts +0 -2
  922. package/components/input/default/bundles/index.umd.js +0 -3559
  923. package/components/input/default/esm2022/base-form-custom.component.mjs +0 -94
  924. package/components/input/default/esm2022/base-form.component.mjs +0 -110
  925. package/components/input/default/esm2022/button/button.component.mjs +0 -106
  926. package/components/input/default/esm2022/button/button.props.mjs +0 -26
  927. package/components/input/default/esm2022/button-group/button-group.directive.mjs +0 -51
  928. package/components/input/default/esm2022/button-group/button-group.props.mjs +0 -10
  929. package/components/input/default/esm2022/caption-position.directive.mjs +0 -172
  930. package/components/input/default/esm2022/checkbox/checkbox.component.mjs +0 -179
  931. package/components/input/default/esm2022/checkbox/checkbox.props.mjs +0 -27
  932. package/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +0 -268
  933. package/components/input/default/esm2022/checkboxset/checkboxset.props.mjs +0 -35
  934. package/components/input/default/esm2022/composite/composite.directive.mjs +0 -84
  935. package/components/input/default/esm2022/composite/composite.props.mjs +0 -10
  936. package/components/input/default/esm2022/dataset-aware-form.component.mjs +0 -307
  937. package/components/input/default/esm2022/number/number.component.mjs +0 -68
  938. package/components/input/default/esm2022/number/number.props.mjs +0 -35
  939. package/components/input/default/esm2022/public_api.mjs +0 -21
  940. package/components/input/default/esm2022/radioset/radioset.component.mjs +0 -251
  941. package/components/input/default/esm2022/radioset/radioset.props.mjs +0 -35
  942. package/components/input/default/esm2022/select/select.component.mjs +0 -230
  943. package/components/input/default/esm2022/select/select.props.mjs +0 -36
  944. package/components/input/default/esm2022/switch/switch.component.mjs +0 -227
  945. package/components/input/default/esm2022/switch/switch.props.mjs +0 -28
  946. package/components/input/default/esm2022/text/base/base-input.mjs +0 -93
  947. package/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +0 -69
  948. package/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +0 -30
  949. package/components/input/default/esm2022/text/color/input-color.component.mjs +0 -69
  950. package/components/input/default/esm2022/text/color/input-color.props.mjs +0 -27
  951. package/components/input/default/esm2022/text/email/input-email.component.mjs +0 -68
  952. package/components/input/default/esm2022/text/email/input-email.props.mjs +0 -29
  953. package/components/input/default/esm2022/text/locale/number-locale.mjs +0 -539
  954. package/components/input/default/esm2022/text/number/input-number.component.mjs +0 -79
  955. package/components/input/default/esm2022/text/number/input-number.props.mjs +0 -32
  956. package/components/input/default/esm2022/text/text/input-text.component.mjs +0 -145
  957. package/components/input/default/esm2022/text/text/input-text.props.mjs +0 -46
  958. package/components/input/default/esm2022/textarea/textarea.component.mjs +0 -85
  959. package/components/input/default/esm2022/textarea/textarea.props.mjs +0 -30
  960. package/components/input/default/fesm2022/index.mjs +0 -3529
  961. package/components/input/default/fesm2022/index.mjs.map +0 -1
  962. package/components/input/default/public_api.d.ts +0 -20
  963. package/components/input/epoch/bundles/index.umd.js +0 -3292
  964. package/components/input/epoch/esm2022/date/date.component.mjs +0 -376
  965. package/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +0 -473
  966. package/components/input/epoch/esm2022/date-time/date-time.component.mjs +0 -563
  967. package/components/input/epoch/esm2022/picker/picker.component.mjs +0 -184
  968. package/components/input/epoch/esm2022/public_api.mjs +0 -6
  969. package/components/input/epoch/esm2022/time/time.component.mjs +0 -432
  970. package/components/input/epoch/fesm2022/index.mjs +0 -3280
  971. package/components/input/epoch/fesm2022/index.mjs.map +0 -1
  972. package/components/input/epoch/public_api.d.ts +0 -5
  973. /package/build-task/basic/{default/anchor → anchor}/anchor.build.d.ts +0 -0
  974. /package/build-task/basic/{default/audio → audio}/audio.build.d.ts +0 -0
  975. /package/build-task/basic/{default/html → html}/html.build.d.ts +0 -0
  976. /package/build-task/basic/{default/icon → icon}/icon.build.d.ts +0 -0
  977. /package/build-task/basic/{default/iframe → iframe}/iframe.build.d.ts +0 -0
  978. /package/build-task/basic/{default/label → label}/label.build.d.ts +0 -0
  979. /package/build-task/basic/{default/picture → picture}/picture.build.d.ts +0 -0
  980. /package/build-task/basic/{default/spinner → spinner}/spinner.build.d.ts +0 -0
  981. /package/build-task/basic/{default/video → video}/video.build.d.ts +0 -0
  982. /package/components/basic/{default → anchor}/.npmignore +0 -0
  983. /package/components/basic/{default/anchor → anchor}/anchor.component.d.ts +0 -0
  984. /package/components/basic/{default/anchor → anchor}/anchor.props.d.ts +0 -0
  985. /package/components/basic/{progress → audio}/.npmignore +0 -0
  986. /package/components/basic/{default/audio → audio}/audio.component.d.ts +0 -0
  987. /package/components/basic/{default/audio → audio}/audio.props.d.ts +0 -0
  988. /package/components/{input/default → basic/html}/.npmignore +0 -0
  989. /package/components/basic/{default/html → html}/html.directive.d.ts +0 -0
  990. /package/components/basic/{default/html → html}/html.props.d.ts +0 -0
  991. /package/components/{input/epoch → basic/icon}/.npmignore +0 -0
  992. /package/components/basic/{default/icon → icon}/icon.component.d.ts +0 -0
  993. /package/components/basic/{default/icon → icon}/icon.props.d.ts +0 -0
  994. /package/components/basic/{default/iframe → iframe}/iframe.component.d.ts +0 -0
  995. /package/components/basic/{default/iframe → iframe}/iframe.props.d.ts +0 -0
  996. /package/components/basic/{default/label → label}/label.props.d.ts +0 -0
  997. /package/components/basic/{default/picture → picture}/picture.directive.d.ts +0 -0
  998. /package/components/basic/{default/picture → picture}/picture.props.d.ts +0 -0
  999. /package/components/basic/progress/{utils.d.ts → progress-utils/progress-utils.d.ts} +0 -0
  1000. /package/components/basic/{default/spinner → spinner}/spinner.component.d.ts +0 -0
  1001. /package/components/basic/{default/spinner → spinner}/spinner.props.d.ts +0 -0
  1002. /package/components/basic/{default/video → video}/video.component.d.ts +0 -0
  1003. /package/components/basic/{default/video → video}/video.props.d.ts +0 -0
  1004. /package/components/input/{default → base-form}/base-form.component.d.ts +0 -0
  1005. /package/components/input/{default/button → button}/button.component.d.ts +0 -0
  1006. /package/components/input/{default/button → button}/button.props.d.ts +0 -0
  1007. /package/components/input/{default/button-group → button-group}/button-group.directive.d.ts +0 -0
  1008. /package/components/input/{default/button-group → button-group}/button-group.props.d.ts +0 -0
  1009. /package/components/input/{default → caption-position}/caption-position.directive.d.ts +0 -0
  1010. /package/components/input/{default/checkbox → checkbox}/checkbox.props.d.ts +0 -0
  1011. /package/components/input/{default/checkboxset → checkboxset}/checkboxset.props.d.ts +0 -0
  1012. /package/components/input/{default/composite → composite}/composite.directive.d.ts +0 -0
  1013. /package/components/input/{default/composite → composite}/composite.props.d.ts +0 -0
  1014. /package/components/input/epoch/{date-time → date-time-picker}/date-time-picker.component.d.ts +0 -0
  1015. /package/components/input/{default/number → number}/number.props.d.ts +0 -0
  1016. /package/components/input/{default/radioset → radioset}/radioset.props.d.ts +0 -0
  1017. /package/components/input/{default/select → select}/select.props.d.ts +0 -0
  1018. /package/components/input/{default/switch → switch}/switch.props.d.ts +0 -0
  1019. /package/components/input/{default/text/calendar → text/input-calendar}/input-calendar.props.d.ts +0 -0
  1020. /package/components/input/{default/text/color → text/input-color}/input-color.props.d.ts +0 -0
  1021. /package/components/input/{default/text/email → text/input-email}/input-email.props.d.ts +0 -0
  1022. /package/components/input/{default/text/number → text/input-number}/input-number.props.d.ts +0 -0
  1023. /package/components/input/{default/text/text → text/input-text}/input-text.props.d.ts +0 -0
  1024. /package/components/input/{default/textarea → textarea}/textarea.props.d.ts +0 -0
@@ -1,539 +0,0 @@
1
- import { __decorate, __metadata, __param } from "tslib";
2
- import { Inject, Injector, Optional } from '@angular/core';
3
- import { getLocaleNumberSymbol, NumberSymbol } from '@angular/common';
4
- import { AbstractI18nService, isDefined } from '@wm/core';
5
- import { TrailingZeroDecimalPipe, INPUTMODE } from '@wm/components/base';
6
- import { BaseInput } from '../base/base-input';
7
- import { includes, intersection, isNull, isString, isUndefined, round, toArray } from "lodash-es";
8
- let NumberLocale = class NumberLocale extends BaseInput {
9
- constructor(inj, config, i18nService, trailingZeroDecimalPipe, explicitContext) {
10
- super(inj, config, explicitContext);
11
- this.i18nService = i18nService;
12
- this.trailingZeroDecimalPipe = trailingZeroDecimalPipe;
13
- this.isDefaultQuery = true;
14
- this.decimalValue = '';
15
- this.selectedLocale = i18nService.getSelectedLocale();
16
- this.DECIMAL = getLocaleNumberSymbol(this.localefilter || this.selectedLocale, NumberSymbol.Decimal);
17
- this.GROUP = getLocaleNumberSymbol(this.localefilter || this.selectedLocale, NumberSymbol.Group);
18
- this.numberfilter = '1.0-16';
19
- this.resetValidations();
20
- }
21
- // Setter for the datavalue.
22
- // @ts-ignore
23
- set datavalue(value) {
24
- this.lastValIsDecimal = false;
25
- // set text value to null if data value is empty.
26
- // @ts-ignore
27
- if (includes([null, undefined, ''], value)) {
28
- const input = this.inputEl.nativeElement;
29
- const prevDataValue = this.prevDatavalue;
30
- this.displayValue = input.value = this.proxyModel = null;
31
- this.resetValidations();
32
- // Fix for [WMS-27648]: When a decimal value is entered (e.g., "3."), datavalue and prevDatavalue become null as it is an invalid number.
33
- // handleChange() should be called when the invalid datavalue (e.g., "3.") is removed, and the value becomes an empty string ("").
34
- if ((prevDataValue || prevDataValue == 0 || prevDataValue == null) && !this.isDefaultQuery) {
35
- this.handleChange(value);
36
- this._onChange();
37
- }
38
- return;
39
- }
40
- // if the widget has default value and if we change the locale, the value should be in selected locale format.
41
- if (this.isDefaultQuery) {
42
- const isLocalizedNumber = isString(value) && includes(value, this.DECIMAL);
43
- const parts = isLocalizedNumber ? value.split(this.DECIMAL) : isString(value) && value.split('.');
44
- let decimalPlacesAttrVal = this.getAttr('decimalplaces');
45
- const decimalplaces = decimalPlacesAttrVal !== '' && decimalPlacesAttrVal !== undefined ? Number(decimalPlacesAttrVal) : NaN;
46
- if (this.inputmode === INPUTMODE.NATURAL && !isNaN(decimalplaces)) {
47
- if (decimalplaces === 0) {
48
- this.decimalValue = '';
49
- value = isLocalizedNumber ? parts[0] : this.transformNumber(parts[0]);
50
- }
51
- if (decimalplaces > 0) {
52
- this.decimalValue = parts[1] && parts[1].substring(0, decimalplaces) || '';
53
- if (isLocalizedNumber) {
54
- value = this.decimalValue.length ? `${parts[0]}${this.DECIMAL}${this.decimalValue}` : parts[0];
55
- }
56
- else {
57
- value = Number.parseFloat(String(value)).toFixed(decimalplaces);
58
- }
59
- }
60
- }
61
- else {
62
- this.decimalValue = parts[1] || '';
63
- value = isLocalizedNumber ? value : this.transformNumber(value);
64
- }
65
- }
66
- const numberReg = /\d/;
67
- const strVal = value.toString();
68
- let model;
69
- // When the input value only contains seperator, do not convert the sepertaor into 0
70
- if (numberReg.test(strVal)) {
71
- model = this.parseNumber(strVal);
72
- }
73
- else {
74
- model = NaN;
75
- }
76
- // On keypress, if the user types a decimal and is still active on the input do not throw error.
77
- if (isNaN(model) && strVal[strVal.length - 1] === this.DECIMAL && this.ngModelOptions.updateOn === 'change' && this.$element.find('input:focus').length) {
78
- this.lastValIsDecimal = true;
79
- }
80
- // get a valid number form the text.
81
- // if the number is valid or if number is not in range update the model value.
82
- if (!this.lastValIsDecimal && this.isValid(model)) {
83
- this.proxyModel = model;
84
- // update the display value in the text box.
85
- this.updateDisplayText();
86
- // Do not trigger onchange event for default value
87
- if (!this.isDefaultQuery) {
88
- this.handleChange(model);
89
- }
90
- }
91
- else {
92
- this.displayValue = value.toString();
93
- this.proxyModel = null;
94
- this.handleChange(null);
95
- }
96
- }
97
- // returns the actual model value of the widget.
98
- get datavalue() {
99
- return this.proxyModel;
100
- }
101
- // resets all the flags related to the widget's validation.
102
- resetValidations() {
103
- this.isInvalidNumber = false;
104
- this.numberNotInRange = false;
105
- }
106
- /**
107
- * Adds validations for the number before updating the widget model. like validating min and max value for the widget.
108
- * @param {number} val number to be validated
109
- * @returns {number}
110
- */
111
- isValid(val) {
112
- // id number is infinite then consider it as invalid value
113
- let invalidDecimalPlaces = false;
114
- if (this.inputmode === INPUTMODE.NATURAL && !isNaN(this.decimalplaces) && this.decimalplaces >= 0) {
115
- invalidDecimalPlaces = this.countDecimals(val) > this.decimalplaces;
116
- }
117
- else if (!Number.isInteger(this.step) && this.countDecimals(val) > this.countDecimals(this.step)) {
118
- invalidDecimalPlaces = true;
119
- }
120
- if (isNaN(val) || !isFinite(val) || invalidDecimalPlaces) {
121
- this.isInvalidNumber = true;
122
- return false;
123
- }
124
- if (val !== this.getValueInRange(val)) {
125
- this.numberNotInRange = true;
126
- return true;
127
- }
128
- this.resetValidations();
129
- return true;
130
- }
131
- /**
132
- * returns a valid number by validating the minimum and maximum values.
133
- * @param {number} value
134
- * @returns {number}
135
- */
136
- getValueInRange(value) {
137
- if (!isNaN(this.minvalue) && value < this.minvalue) {
138
- this.validateType = 'minvalue';
139
- return this.minvalue;
140
- }
141
- if (!isNaN(this.maxvalue) && value > this.maxvalue) {
142
- this.validateType = 'maxvalue';
143
- return this.maxvalue;
144
- }
145
- return value;
146
- }
147
- /**
148
- * convert number to localized number using angular decimal pipe. eg 10,00,000 or 1,000,000
149
- * @param number
150
- * @returns {string}
151
- */
152
- transformNumber(number, numberfilter) {
153
- const filterVal = numberfilter ? numberfilter : this.numberfilter;
154
- return this.trailingZeroDecimalPipe.transform(number, this.selectedLocale, filterVal, this.localefilter, this.trailingzero, this.decimalValue, !!numberfilter, this.i18nService?.getwidgetLocale());
155
- }
156
- /**
157
- * resets the cursor position in the text box.
158
- * @param {number} value cursor position index form left to right.
159
- */
160
- resetCursorPosition(value) {
161
- const input = this.inputEl.nativeElement;
162
- // position of the cursor should be given form right to left.
163
- let position = input.value.length - value;
164
- position = position < 0 ? 0 : position;
165
- // set the cursor position in the text box.
166
- input.setSelectionRange(position, position);
167
- }
168
- /**
169
- * Method parses the Localized number(string) to a valid number.
170
- * if the string dose not result to a valid number then returns NaN.
171
- * @param {string} val Localized number.
172
- * @returns {number}
173
- */
174
- parseNumber(val) {
175
- // WMS-22179: split number based on the decimal separator in the val
176
- // splits string into two parts. decimal and number.
177
- const parts = val.split(this.inputmode === INPUTMODE.FINANCIAL ? (val.indexOf(this.DECIMAL) > -1 ? this.DECIMAL : '.') : this.DECIMAL);
178
- if (!parts.length) {
179
- return null;
180
- }
181
- if (parts.length > 2) {
182
- return NaN;
183
- }
184
- // If number have decimal point and not have a decimal value then return.
185
- if (parts[1] === '') {
186
- return NaN;
187
- }
188
- // replaces all group separators form the number.
189
- const number = Number(parts[0].split(this.GROUP).join(''));
190
- const decimal = Number(`0.${parts[1] || 0}`);
191
- if (Number.isNaN(number) || Number.isNaN(decimal)) {
192
- return NaN;
193
- }
194
- const sum = parts.length > 1 ? parseFloat((number + decimal).toFixed(parts[1].length)) : number + decimal;
195
- // if the number is negative then calculate the number as number - decimal
196
- // Ex: number = -123 and decimal = 0.45 then number - decimal = -123-045 = -123.45
197
- // If entered number is -0.1 to -0.9 then the number is -0 and decimal is 0.1 to 0.9. Now calaculate the number as number-decimal
198
- // Ex: number = -0 and decimal = 0.1 then number-decimal = -0-0.1 = -0.1
199
- if (number === 0) {
200
- return Object.is(0, number) ? sum : number - decimal;
201
- }
202
- return number > 0 ? sum : number - decimal;
203
- }
204
- // updates the widgets text value.
205
- updateDisplayText() {
206
- const input = this.inputEl.nativeElement;
207
- const position = input.selectionStart;
208
- const preValue = input.value;
209
- if (!this.isDefaultQuery) {
210
- const parts = preValue.split(this.DECIMAL);
211
- this.decimalValue = parts[1] || '';
212
- }
213
- const stepVal = this.stepLength();
214
- if (this.inputmode === INPUTMODE.FINANCIAL && stepVal) {
215
- this.displayValue = input.value = this.transformNumber(this.proxyModel, `1.${stepVal}-${stepVal}`);
216
- this.decimalValue = this.decimalValue.replace(/\D/g, '');
217
- }
218
- else {
219
- this.displayValue = input.value = this.transformNumber(this.proxyModel);
220
- }
221
- // in safari browser, setSelectionRange will focus the input by default, which may invoke the focus event on widget.
222
- // Hence preventing the setSelectionRange when default value is set i.e. widget is not focused.
223
- if (this.updateon === 'default' && !this.isDefaultQuery) {
224
- this.resetCursorPosition(preValue.length - position);
225
- }
226
- }
227
- // This function returns the step length set in the studio
228
- stepLength() {
229
- if (this.inputmode === 'INPUTMODE.NATURAL' && !isNaN(this.decimalplaces) && this.decimalplaces >= 0) {
230
- return this.decimalplaces;
231
- }
232
- const stepLen = this.step.toString().split('.');
233
- if (stepLen.length === 1) {
234
- return;
235
- }
236
- else {
237
- return stepLen[1].length;
238
- }
239
- }
240
- // This function checks if the currency widget has input mode as natural and trailing zero is defined or not
241
- isNaturalCurrency() {
242
- return this.inputmode === INPUTMODE.NATURAL && this.widgetType === 'wm-currency' && !!this.trailingzero;
243
- }
244
- /**
245
- * @param value contains the value entered in the input box
246
- * This function modifies the user input value, into financial mode.
247
- * Number starts from highest precesion decimal, on typing number shifts to the left
248
- */
249
- onInputChange(value) {
250
- const stepVal = this.stepLength();
251
- const prevDataValue = this.getPrevDataValue();
252
- // WMS-22355, Trigger change cb if value exists or value is empty but datavalue exists (when value is selected and deleted).
253
- // Fix for [WMS-27041]: Ensure the change callback for the number widget triggers only on focus out (when updateon is set to blur),
254
- // not during initial input when the previous value is undefined and the current value is null.
255
- if (isDefined(value) && (value !== '' || this.datavalue || this.datavalue == 0)) {
256
- if (this.widgetType === "wm-number") {
257
- if (this.inputmode == INPUTMODE.FINANCIAL) {
258
- // Case 1: when there is no default value, prevDataValue is undefined && this.datavalue is null
259
- // Case 2: when there default value, prevDataValue is equal to this.datavalue
260
- if (!((prevDataValue == undefined && this.datavalue == null) || (prevDataValue == this.datavalue))) {
261
- this.handleChange(value);
262
- }
263
- }
264
- else {
265
- if (!(prevDataValue == undefined && this.datavalue == null)) {
266
- this.handleChange(value);
267
- }
268
- }
269
- }
270
- else { // currency widget
271
- this.handleChange(value);
272
- }
273
- }
274
- else {
275
- return;
276
- }
277
- if (!stepVal || this.inputmode !== INPUTMODE.FINANCIAL) {
278
- return;
279
- }
280
- let financialVal;
281
- /**
282
- * If the value is entered by the user, format the input
283
- * If the value is provided as default value, skip formatting
284
- */
285
- if (this.isDefaultQuery) {
286
- financialVal = parseFloat(value);
287
- }
288
- else {
289
- const valInWholeNum = parseInt(value.toString().replace(/\D/g, ''));
290
- financialVal = valInWholeNum * this.step;
291
- }
292
- if (!isNaN(financialVal)) {
293
- // When update on key is set keypress, update the datavalue else update only the display value
294
- if (this.ngModelOptions.updateOn === 'change') {
295
- this.datavalue = parseFloat(financialVal.toFixed(stepVal));
296
- this.handleChange(this.datavalue);
297
- }
298
- else {
299
- this.displayValue = financialVal.toFixed(stepVal);
300
- }
301
- }
302
- else if (this.ngModelOptions.updateOn !== 'blur') {
303
- this.datavalue = undefined;
304
- this.handleChange(null);
305
- }
306
- }
307
- // Input mode is financial and trailing zero is set to false, On focus set display val to fixed point notation and On blur strip trailing zeros
308
- // In currency, inputmode is natural and trailing zero and step are defined, on blur display val to fixed point notation and on focus strip the zeros
309
- checkForTrailingZeros($event) {
310
- const stepVal = this.stepLength();
311
- const financialMode = !this.trailingzero && this.inputmode === INPUTMODE.FINANCIAL;
312
- // If the user's last input is a decimal and not active on input field, throw error
313
- if (this.lastValIsDecimal) {
314
- this.onModelChange(this.displayValue);
315
- }
316
- if (!financialMode && !this.isNaturalCurrency()) {
317
- return;
318
- }
319
- if (stepVal && this.datavalue) {
320
- let numberfilter;
321
- if ((financialMode && $event.type === 'focus') || (this.isNaturalCurrency() && $event.type === 'blur')) {
322
- numberfilter = `1.${stepVal}-${stepVal}`;
323
- }
324
- this.displayValue = this.transformNumber(this.datavalue, numberfilter);
325
- }
326
- }
327
- /**
328
- * returns the number of decimal places a number have.
329
- * @param value: number
330
- * @returns {number}
331
- */
332
- countDecimals(value) {
333
- const num = Number(value);
334
- if (num === 0) {
335
- return 0;
336
- }
337
- // Convert to number and handle scientific notation
338
- if (Number.isNaN(num))
339
- return 0;
340
- // Get the exponential form to handle scientific notation properly
341
- const exponentialStr = num.toExponential();
342
- const match = exponentialStr.match(/^-?\d*\.?(\d+)?e([+-]\d+)$/);
343
- if (match) {
344
- const decimals = match[1] ? match[1].length : 0;
345
- const exponent = parseInt(match[2]);
346
- return Math.max(0, decimals - exponent);
347
- }
348
- // Fallback to regular decimal counting
349
- const decimalStr = num.toString();
350
- const isLocalizedNumber = includes(decimalStr, this.DECIMAL);
351
- const parts = isLocalizedNumber ? decimalStr.split(this.DECIMAL) : decimalStr.split('.');
352
- return parts[1] ? parts[1].length : 0;
353
- }
354
- /**
355
- * handles the arrow press event. Increases or decreases the number. triggered fom the template
356
- * @param $event keyboard event.
357
- * @param key identifier to increase or decrease the number.
358
- */
359
- onArrowPress($event, key) {
360
- $event.preventDefault();
361
- if (this.readonly || this.step === 0) {
362
- return;
363
- }
364
- const targetVal = $event.target.value.replace(/,/g, '');
365
- // proxyModel to be updated from $event.target.value if present to support arrow keys when input changes else pick up from this.proxymodel
366
- let proxyModel;
367
- if (targetVal && !isNaN(parseFloat(targetVal))) {
368
- proxyModel = parseFloat(targetVal);
369
- }
370
- else {
371
- proxyModel = this.proxyModel;
372
- }
373
- let value;
374
- // if the number is not in range and when arrow buttons are pressed need to get appropriate number value.
375
- if (this.numberNotInRange) {
376
- const inputValue = this.parseNumber(this.inputEl.nativeElement.value);
377
- // take the textbox value as current model if the value is valid.
378
- if (!isNaN(inputValue)) {
379
- value = this.getValueInRange(inputValue);
380
- proxyModel = inputValue;
381
- this.resetValidations();
382
- }
383
- }
384
- else {
385
- if (isUndefined(proxyModel) || isNull(proxyModel)) {
386
- proxyModel = value = this.getValueInRange((this.minvalue || 0));
387
- this.resetValidations();
388
- }
389
- else {
390
- value = this.getValueInRange(proxyModel + (key === 'UP' ? this.step : -this.step));
391
- }
392
- }
393
- if ((key === 'UP' && proxyModel <= value) || (key === 'DOWN' && proxyModel >= value)) {
394
- const decimalRoundValue = Math.max(this.countDecimals(proxyModel), this.countDecimals(this.step));
395
- // update the modelProxy.
396
- this.proxyModel = round(value, decimalRoundValue);
397
- this.updateDisplayText();
398
- this.handleChange(this.proxyModel);
399
- }
400
- }
401
- /**
402
- * method is called from the from widget. to check whether the value entered is valid or not.
403
- * @returns {object}
404
- */
405
- validate(c) {
406
- if (this.isInvalidNumber) {
407
- this.validateType = '';
408
- return {
409
- invalidNumber: {
410
- valid: false
411
- },
412
- };
413
- }
414
- if (this.numberNotInRange) {
415
- return {
416
- numberNotInRange: {
417
- valid: false
418
- },
419
- };
420
- }
421
- this.validateType = '';
422
- /* WMS-18269 | Extending the existing validation for 'required' */
423
- if (this['show'] && this['required']) {
424
- return (!!c.value || c.value === 0) ? null : { required: true };
425
- }
426
- return null;
427
- }
428
- validateInputEntry($event) {
429
- this.isDefaultQuery = false;
430
- // allow actions if control key is pressed or if backspace is pressed. (for Mozilla).
431
- if ($event.ctrlKey || includes(['Backspace', 'ArrowRight', 'ArrowLeft', 'Tab', 'Enter', 'Delete'], $event.key)) {
432
- return;
433
- }
434
- const validity = new RegExp(`^[\\d\\s-,.e+${this.GROUP}${this.DECIMAL}]$`, 'i');
435
- const inputValue = $event.target?.value || "";
436
- // when input mode is financial, do not restrict user on entering the value when step value limit is reached.
437
- const skipStepValidation = this.inputmode === INPUTMODE.FINANCIAL;
438
- // Validates if user eneters more than 16 digits
439
- if (inputValue) {
440
- const parsedVal = parseInt(inputValue.toString().replace(/\D/g, ''));
441
- if (parsedVal.toString().length > 15) {
442
- // WMS-22321: If the number is greater than MAX_SAFE_INTEGER (more than 15 numbers).
443
- // user selects a range of digits and presses a key.
444
- // Do not throw validation of exceeded number as selected range value will be deleted.
445
- const selectedVal = window.getSelection();
446
- if (selectedVal && selectedVal.toString() && selectedVal.focusNode === this.nativeElement) {
447
- return true;
448
- }
449
- return false;
450
- }
451
- }
452
- // validates entering of decimal values only when user provides decimal limit(i.e step contains decimal values).
453
- // Restrict user from entering only if the decimal limit is reached and the new digit is entered in decimal place
454
- // if (!skipStepValidation && inputValue && this.countDecimals(this.step) && (this.countDecimals(inputValue) >= this.countDecimals(this.step)) && $event.target.selectionStart >= inputValue.length - 1) {
455
- // return false;
456
- // }
457
- // validates if user entered an invalid character.
458
- if (!validity.test($event.key)) {
459
- return false;
460
- }
461
- if (this.inputmode === INPUTMODE.NATURAL && !isNaN(this.decimalplaces)) {
462
- if (this.decimalplaces === 0 && this.DECIMAL === $event.key) {
463
- return false;
464
- }
465
- const parts = includes(inputValue, this.DECIMAL) ? inputValue.split(this.DECIMAL) : inputValue.split('.');
466
- const isCursorPositionAtDecimalPlace = $event.target.selectionStart > parts[0].length;
467
- if (this.decimalplaces > 0 && this.countDecimals(inputValue) >= this.decimalplaces && isCursorPositionAtDecimalPlace) {
468
- return false;
469
- }
470
- }
471
- // comma cannot be entered consecutively
472
- if (includes(inputValue, ',') && inputValue[inputValue.length - 1] === ',' && $event.key === ',') {
473
- return false;
474
- }
475
- // a decimal value can be entered only once in the input.
476
- if (includes(inputValue, this.DECIMAL) && $event.key === this.DECIMAL) {
477
- return false;
478
- }
479
- // 'e' can be entered only once in the input.
480
- if (intersection(toArray(inputValue), ['e', 'E']).length && includes('eE', $event.key)) {
481
- return false;
482
- }
483
- if ((includes(inputValue, '+') || includes(inputValue, '-')) && ($event.key === '+' || $event.key === '-')) {
484
- return false;
485
- }
486
- // Do not allow user to enter only space without any input value
487
- if (!inputValue && $event.code === 'Space') {
488
- return false;
489
- }
490
- }
491
- onBackspace($event) {
492
- this.isDefaultQuery = false;
493
- }
494
- onDelete($event) {
495
- this.isDefaultQuery = false;
496
- }
497
- onEnter($event) {
498
- this.datavalue = $event.target.value;
499
- }
500
- onModelChange($event) {
501
- if (this.inputmode === INPUTMODE.NATURAL || (this.inputmode === INPUTMODE.FINANCIAL && this.ngModelOptions.updateOn === 'blur')) {
502
- this.datavalue = $event;
503
- }
504
- }
505
- onPropertyChange(key, nv, ov) {
506
- if (key === 'minvalue' || key === 'maxvalue') {
507
- this.isValid(nv);
508
- }
509
- else if (key === 'datavalue' && !ov) {
510
- if (this.isNaturalCurrency()) {
511
- this.checkForTrailingZeros({ type: 'blur' });
512
- }
513
- else {
514
- this.onInputChange(nv);
515
- }
516
- }
517
- else {
518
- super.onPropertyChange(key, nv, ov);
519
- }
520
- }
521
- onPaste($event) {
522
- const pastedData = $event.clipboardData.getData('text');
523
- for (const char of pastedData) {
524
- const mockEvent = new KeyboardEvent('keypress', { key: char });
525
- if (this.validateInputEntry(mockEvent) === false) {
526
- $event.preventDefault();
527
- return;
528
- }
529
- }
530
- }
531
- };
532
- NumberLocale = __decorate([
533
- __param(4, Inject('EXPLICIT_CONTEXT')),
534
- __param(4, Optional()),
535
- __metadata("design:paramtypes", [Injector, Object, AbstractI18nService,
536
- TrailingZeroDecimalPipe, Object])
537
- ], NumberLocale);
538
- export { NumberLocale };
539
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWxvY2FsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy90ZXh0L2xvY2FsZS9udW1iZXItbG9jYWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRFLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDeEQsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUVoRyxJQUFzQixZQUFZLEdBQWxDLE1BQXNCLFlBQWEsU0FBUSxTQUFTO0lBeUJoRCxZQUNJLEdBQWEsRUFDYixNQUFxQixFQUNiLFdBQWdDLEVBQ2hDLHVCQUFnRCxFQUNoQixlQUFvQjtRQUU1RCxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQztRQUo1QixnQkFBVyxHQUFYLFdBQVcsQ0FBcUI7UUFDaEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQXRCcEQsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDL0IsaUJBQVksR0FBVyxFQUFFLENBQUM7UUF5QjlCLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFD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LElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBQ00sT0FBTyxDQUFDLE1BQXNCO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXhELEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7WUFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDL0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEtBQUcsS0FBSyxFQUFFLENBQUM7Z0JBQzdDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDeEIsT0FBTztZQUNYLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztDQUVKLENBQUE7QUFqa0JxQixZQUFZO0lBOEJ6QixXQUFBLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0lBQUUsV0FBQSxRQUFRLEVBQUUsQ0FBQTtxQ0FKbEMsUUFBUSxVQUVRLG1CQUFtQjtRQUNQLHVCQUF1QjtHQTdCMUMsWUFBWSxDQWlrQmpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdG9yLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldExvY2FsZU51bWJlclN5bWJvbCwgTnVtYmVyU3ltYm9sIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtBYnN0cmFjdEkxOG5TZXJ2aWNlLCBpc0RlZmluZWR9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IElXaWRnZXRDb25maWcsIFRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlLCBJTlBVVE1PREUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuaW1wb3J0IHsgQmFzZUlucHV0IH0gZnJvbSAnLi4vYmFzZS9iYXNlLWlucHV0JztcbmltcG9ydCB7aW5jbHVkZXMsIGludGVyc2VjdGlvbiwgaXNOdWxsLCBpc1N0cmluZywgaXNVbmRlZmluZWQsIHJvdW5kLCB0b0FycmF5fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOdW1iZXJMb2NhbGUgZXh0ZW5kcyBCYXNlSW5wdXQgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xuICAgIHByaXZhdGUgREVDSU1BTDogc3RyaW5nO1xuICAgIHByaXZhdGUgR1JPVVA6IHN0cmluZztcbiAgICBwcml2YXRlIHNlbGVjdGVkTG9jYWxlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBwcm94eU1vZGVsOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBudW1iZXJOb3RJblJhbmdlOiBib29sZWFuO1xuICAgIHByaXZhdGUgaXNJbnZhbGlkTnVtYmVyOiBib29sZWFuO1xuICAgIHByaXZhdGUgaXNEZWZhdWx0UXVlcnk6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHByaXZhdGUgZGVjaW1hbFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgZGlzcGxheVZhbHVlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBudW1iZXJmaWx0ZXI6IHN0cmluZztcbiAgICBwcml2YXRlIGxvY2FsZWZpbHRlcjogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIHB1YmxpYyBtaW52YWx1ZTogbnVtYmVyO1xuICAgIHB1YmxpYyBtYXh2YWx1ZTogbnVtYmVyO1xuICAgIHB1YmxpYyB1cGRhdGVvbjogc3RyaW5nO1xuICAgIHB1YmxpYyBzdGVwOiBudW1iZXI7XG4gICAgcHVibGljIHRyYWlsaW5nemVybzogYm9vbGVhbjtcbiAgICBwcml2YXRlIHZhbGlkYXRlVHlwZTogc3RyaW5nO1xuICAgIHB1YmxpYyBpbnB1dG1vZGU6IHN0cmluZztcbiAgICBwdWJsaWMgZGVjaW1hbHBsYWNlczogbnVtYmVyO1xuICAgIHByaXZhdGUgbGFzdFZhbElzRGVjaW1hbDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBjb25maWc6IElXaWRnZXRDb25maWcsXG4gICAgICAgIHByaXZhdGUgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhaWxpbmdaZXJvRGVjaW1hbFBpcGU6IFRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBjb25maWcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbGUgPSBpMThuU2VydmljZS5nZXRTZWxlY3RlZExvY2FsZSgpO1xuICAgICAgICB0aGlzLkRFQ0lNQUwgPSBnZXRMb2NhbGVOdW1iZXJTeW1ib2wodGhpcy5sb2NhbGVmaWx0ZXIgfHwgdGhpcy5zZWxlY3RlZExvY2FsZSwgTnVtYmVyU3ltYm9sLkRlY2ltYWwpO1xuICAgICAgICB0aGlzLkdST1VQID0gZ2V0TG9jYWxlTnVtYmVyU3ltYm9sKHRoaXMubG9jYWxlZmlsdGVyIHx8IHRoaXMuc2VsZWN0ZWRMb2NhbGUsIE51bWJlclN5bWJvbC5Hcm91cCk7XG4gICAgICAgIHRoaXMubnVtYmVyZmlsdGVyID0gJzEuMC0xNic7XG4gICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9ucygpO1xuICAgIH1cblxuICAgIC8vIFNldHRlciBmb3IgdGhlIGRhdGF2YWx1ZS5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2V0IGRhdGF2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubGFzdFZhbElzRGVjaW1hbCA9IGZhbHNlO1xuXG4gICAgICAgIC8vIHNldCB0ZXh0IHZhbHVlIHRvIG51bGwgaWYgZGF0YSB2YWx1ZSBpcyBlbXB0eS5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoaW5jbHVkZXMoW251bGwsIHVuZGVmaW5lZCwgJyddLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBwcmV2RGF0YVZhbHVlID0gICh0aGlzIGFzIGFueSkucHJldkRhdGF2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gaW5wdXQudmFsdWUgPSB0aGlzLnByb3h5TW9kZWwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5yZXNldFZhbGlkYXRpb25zKCk7XG4gICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjc2NDhdOiBXaGVuIGEgZGVjaW1hbCB2YWx1ZSBpcyBlbnRlcmVkIChlLmcuLCBcIjMuXCIpLCBkYXRhdmFsdWUgYW5kIHByZXZEYXRhdmFsdWUgYmVjb21lIG51bGwgYXMgaXQgaXMgYW4gaW52YWxpZCBudW1iZXIuXG4gICAgICAgICAgICAvLyBoYW5kbGVDaGFuZ2UoKSBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGludmFsaWQgZGF0YXZhbHVlIChlLmcuLCBcIjMuXCIpIGlzIHJlbW92ZWQsIGFuZCB0aGUgdmFsdWUgYmVjb21lcyBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpLlxuICAgICAgICAgICAgaWYgKChwcmV2RGF0YVZhbHVlIHx8IHByZXZEYXRhVmFsdWUgPT0gMCB8fCBwcmV2RGF0YVZhbHVlID09IG51bGwpICYmICF0aGlzLmlzRGVmYXVsdFF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgdGhlIHdpZGdldCBoYXMgZGVmYXVsdCB2YWx1ZSBhbmQgaWYgd2UgY2hhbmdlIHRoZSBsb2NhbGUsIHRoZSB2YWx1ZSBzaG91bGQgYmUgaW4gc2VsZWN0ZWQgbG9jYWxlIGZvcm1hdC5cbiAgICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0UXVlcnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTG9jYWxpemVkTnVtYmVyID0gaXNTdHJpbmcodmFsdWUpICYmIGluY2x1ZGVzKHZhbHVlLCB0aGlzLkRFQ0lNQUwpO1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBpc0xvY2FsaXplZE51bWJlciA/ICh2YWx1ZSBhcyBhbnkpLnNwbGl0KHRoaXMuREVDSU1BTCkgOiBpc1N0cmluZyh2YWx1ZSkgJiYgKHZhbHVlIGFzIGFueSkuc3BsaXQoJy4nKTtcblxuICAgICAgICAgICAgbGV0IGRlY2ltYWxQbGFjZXNBdHRyVmFsID0gdGhpcy5nZXRBdHRyKCdkZWNpbWFscGxhY2VzJyk7XG4gICAgICAgICAgICBjb25zdCBkZWNpbWFscGxhY2VzID0gZGVjaW1hbFBsYWNlc0F0dHJWYWwgIT09ICcnICYmIGRlY2ltYWxQbGFjZXNBdHRyVmFsICE9PSB1bmRlZmluZWQgPyBOdW1iZXIoZGVjaW1hbFBsYWNlc0F0dHJWYWwpIDogTmFOO1xuICAgICAgICAgICAgaWYodGhpcy5pbnB1dG1vZGUgPT09IElOUFVUTU9ERS5OQVRVUkFMICYmICFpc05hTihkZWNpbWFscGxhY2VzKSkge1xuICAgICAgICAgICAgICAgIGlmKGRlY2ltYWxwbGFjZXMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWNpbWFsVmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlIGFzIGFueSkgPSBpc0xvY2FsaXplZE51bWJlciA/IHBhcnRzWzBdIDogdGhpcy50cmFuc2Zvcm1OdW1iZXIocGFydHNbMF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZihkZWNpbWFscGxhY2VzID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY2ltYWxWYWx1ZSA9IHBhcnRzWzFdICYmIHBhcnRzWzFdLnN1YnN0cmluZygwLCBkZWNpbWFscGxhY2VzKSB8fCAnJztcbiAgICAgICAgICAgICAgICAgICAgaWYoaXNMb2NhbGl6ZWROdW1iZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSBhcyBhbnkpID0gdGhpcy5kZWNpbWFsVmFsdWUubGVuZ3RoID8gYCR7cGFydHNbMF19JHt0aGlzLkRFQ0lNQUx9JHt0aGlzLmRlY2ltYWxWYWx1ZX1gIDogcGFydHNbMF07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgYXMgYW55KSA9IE51bWJlci5wYXJzZUZsb2F0KFN0cmluZyh2YWx1ZSkpLnRvRml4ZWQoZGVjaW1hbHBsYWNlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVjaW1hbFZhbHVlID0gcGFydHNbMV0gfHwgJyc7XG4gICAgICAgICAgICAgICAgKHZhbHVlIGFzIGFueSkgPSBpc0xvY2FsaXplZE51bWJlciA/IHZhbHVlIDogdGhpcy50cmFuc2Zvcm1OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbnVtYmVyUmVnID0gL1xcZC87XG4gICAgICAgIGNvbnN0IHN0clZhbCA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIGxldCBtb2RlbDtcbiAgICAgICAgLy8gV2hlbiB0aGUgaW5wdXQgdmFsdWUgb25seSBjb250YWlucyBzZXBlcmF0b3IsIGRvIG5vdCBjb252ZXJ0IHRoZSBzZXBlcnRhb3IgaW50byAwXG4gICAgICAgIGlmIChudW1iZXJSZWcudGVzdChzdHJWYWwpKSB7XG4gICAgICAgICAgICBtb2RlbCA9IHRoaXMucGFyc2VOdW1iZXIoc3RyVmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1vZGVsID0gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT24ga2V5cHJlc3MsIGlmIHRoZSB1c2VyIHR5cGVzIGEgZGVjaW1hbCBhbmQgaXMgc3RpbGwgYWN0aXZlIG9uIHRoZSBpbnB1dCBkbyBub3QgdGhyb3cgZXJyb3IuXG4gICAgICAgIGlmIChpc05hTihtb2RlbCkgJiYgc3RyVmFsW3N0clZhbC5sZW5ndGggLSAxXSA9PT0gdGhpcy5ERUNJTUFMICYmIHRoaXMubmdNb2RlbE9wdGlvbnMudXBkYXRlT24gPT09ICdjaGFuZ2UnICYmIHRoaXMuJGVsZW1lbnQuZmluZCgnaW5wdXQ6Zm9jdXMnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdFZhbElzRGVjaW1hbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZ2V0IGEgdmFsaWQgbnVtYmVyIGZvcm0gdGhlIHRleHQuXG4gICAgICAgIC8vIGlmIHRoZSBudW1iZXIgaXMgdmFsaWQgb3IgaWYgbnVtYmVyIGlzIG5vdCBpbiByYW5nZSB1cGRhdGUgdGhlIG1vZGVsIHZhbHVlLlxuICAgICAgICBpZiAoIXRoaXMubGFzdFZhbElzRGVjaW1hbCAmJiB0aGlzLmlzVmFsaWQobW9kZWwpKSB7XG4gICAgICAgICAgICB0aGlzLnByb3h5TW9kZWwgPSBtb2RlbDtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgZGlzcGxheSB2YWx1ZSBpbiB0aGUgdGV4dCBib3guXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURpc3BsYXlUZXh0KCk7XG4gICAgICAgICAgICAvLyBEbyBub3QgdHJpZ2dlciBvbmNoYW5nZSBldmVudCBmb3IgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzRGVmYXVsdFF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UobW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgdGhpcy5wcm94eU1vZGVsID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyB0aGUgYWN0dWFsIG1vZGVsIHZhbHVlIG9mIHRoZSB3aWRnZXQuXG4gICAgZ2V0IGRhdGF2YWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm94eU1vZGVsO1xuICAgIH1cblxuICAgIC8vIHJlc2V0cyBhbGwgdGhlIGZsYWdzIHJlbGF0ZWQgdG8gdGhlIHdpZGdldCdzIHZhbGlkYXRpb24uXG4gICAgcHJvdGVjdGVkIHJlc2V0VmFsaWRhdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkTnVtYmVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMubnVtYmVyTm90SW5SYW5nZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdmFsaWRhdGlvbnMgZm9yIHRoZSBudW1iZXIgYmVmb3JlIHVwZGF0aW5nIHRoZSB3aWRnZXQgbW9kZWwuIGxpa2UgdmFsaWRhdGluZyBtaW4gYW5kIG1heCB2YWx1ZSBmb3IgdGhlIHdpZGdldC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsIG51bWJlciB0byBiZSB2YWxpZGF0ZWRcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByaXZhdGUgaXNWYWxpZCh2YWw6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICAvLyBpZCBudW1iZXIgaXMgaW5maW5pdGUgdGhlbiBjb25zaWRlciBpdCBhcyBpbnZhbGlkIHZhbHVlXG4gICAgICAgIGxldCBpbnZhbGlkRGVjaW1hbFBsYWNlcyA9IGZhbHNlO1xuICAgICAgICBpZih0aGlzLmlucHV0bW9kZSA9PT0gSU5QVVRNT0RFLk5BVFVSQUwgJiYgIWlzTmFOKHRoaXMuZGVjaW1hbHBsYWNlcykgJiYgdGhpcy5kZWNpbWFscGxhY2VzID49IDApIHtcbiAgICAgICAgICAgIGludmFsaWREZWNpbWFsUGxhY2VzID0gdGhpcy5jb3VudERlY2ltYWxzKHZhbCkgPiB0aGlzLmRlY2ltYWxwbGFjZXM7XG4gICAgICAgIH0gZWxzZSBpZighTnVtYmVyLmlzSW50ZWdlcih0aGlzLnN0ZXApICYmIHRoaXMuY291bnREZWNpbWFscyh2YWwpID4gdGhpcy5jb3VudERlY2ltYWxzKHRoaXMuc3RlcCkpIHtcbiAgICAgICAgICAgIGludmFsaWREZWNpbWFsUGxhY2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOYU4odmFsKSB8fCAhaXNGaW5pdGUodmFsKSB8fCBpbnZhbGlkRGVjaW1hbFBsYWNlcykge1xuICAgICAgICAgICAgdGhpcy5pc0ludmFsaWROdW1iZXIgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgIT09IHRoaXMuZ2V0VmFsdWVJblJhbmdlKHZhbCkpIHtcbiAgICAgICAgICAgIHRoaXMubnVtYmVyTm90SW5SYW5nZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbnMoKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyBhIHZhbGlkIG51bWJlciBieSB2YWxpZGF0aW5nIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VmFsdWVJblJhbmdlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAoIWlzTmFOKHRoaXMubWludmFsdWUpICYmIHZhbHVlIDwgdGhpcy5taW52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVR5cGUgPSAnbWludmFsdWUnO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWludmFsdWU7XG5cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzTmFOKHRoaXMubWF4dmFsdWUpICYmIHZhbHVlID4gdGhpcy5tYXh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVR5cGUgPSAnbWF4dmFsdWUnO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWF4dmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbnZlcnQgbnVtYmVyIHRvIGxvY2FsaXplZCBudW1iZXIgdXNpbmcgYW5ndWxhciBkZWNpbWFsIHBpcGUuIGVnIDEwLDAwLDAwMCBvciAxLDAwMCwwMDBcbiAgICAgKiBAcGFyYW0gbnVtYmVyXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKi9cbiAgICBwcml2YXRlIHRyYW5zZm9ybU51bWJlcihudW1iZXIsIG51bWJlcmZpbHRlcj8pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWwgPSBudW1iZXJmaWx0ZXIgPyBudW1iZXJmaWx0ZXIgOiB0aGlzLm51bWJlcmZpbHRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhaWxpbmdaZXJvRGVjaW1hbFBpcGUudHJhbnNmb3JtKG51bWJlciwgdGhpcy5zZWxlY3RlZExvY2FsZSwgZmlsdGVyVmFsLCB0aGlzLmxvY2FsZWZpbHRlciwgdGhpcy50cmFpbGluZ3plcm8sIHRoaXMuZGVjaW1hbFZhbHVlLCAhIW51bWJlcmZpbHRlciwgdGhpcy5pMThuU2VydmljZT8uZ2V0d2lkZ2V0TG9jYWxlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJlc2V0cyB0aGUgY3Vyc29yIHBvc2l0aW9uIGluIHRoZSB0ZXh0IGJveC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgY3Vyc29yIHBvc2l0aW9uIGluZGV4IGZvcm0gbGVmdCB0byByaWdodC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc2V0Q3Vyc29yUG9zaXRpb24odmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAvLyBwb3NpdGlvbiBvZiB0aGUgY3Vyc29yIHNob3VsZCBiZSBnaXZlbiBmb3JtIHJpZ2h0IHRvIGxlZnQuXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IGlucHV0LnZhbHVlLmxlbmd0aCAtIHZhbHVlO1xuICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uIDwgMCA/IDAgOiBwb3NpdGlvbjtcbiAgICAgICAgLy8gc2V0IHRoZSBjdXJzb3IgcG9zaXRpb24gaW4gdGhlIHRleHQgYm94LlxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlvbiwgcG9zaXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBwYXJzZXMgdGhlIExvY2FsaXplZCBudW1iZXIoc3RyaW5nKSB0byBhIHZhbGlkIG51bWJlci5cbiAgICAgKiBpZiB0aGUgc3RyaW5nIGRvc2Ugbm90IHJlc3VsdCB0byBhIHZhbGlkIG51bWJlciB0aGVuIHJldHVybnMgTmFOLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWwgTG9jYWxpemVkIG51bWJlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByaXZhdGUgcGFyc2VOdW1iZXIodmFsOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICAvLyBXTVMtMjIxNzk6IHNwbGl0IG51bWJlciBiYXNlZCBvbiB0aGUgZGVjaW1hbCBzZXBhcmF0b3IgaW4gdGhlIHZhbFxuICAgICAgICAvLyBzcGxpdHMgc3RyaW5nIGludG8gdHdvIHBhcnRzLiBkZWNpbWFsIGFuZCBudW1iZXIuXG4gICAgICAgIGNvbnN0IHBhcnRzID0gdmFsLnNwbGl0KHRoaXMuaW5wdXRtb2RlID09PSBJTlBVVE1PREUuRklOQU5DSUFMID8gKHZhbC5pbmRleE9mKHRoaXMuREVDSU1BTCkgPiAtMSA/IHRoaXMuREVDSU1BTCA6ICcuJykgOiB0aGlzLkRFQ0lNQUwpO1xuICAgICAgICBpZiAoIXBhcnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgbnVtYmVyIGhhdmUgZGVjaW1hbCBwb2ludCBhbmQgbm90IGhhdmUgYSBkZWNpbWFsIHZhbHVlIHRoZW4gcmV0dXJuLlxuICAgICAgICBpZiAocGFydHNbMV0gPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlcGxhY2VzIGFsbCBncm91cCBzZXBhcmF0b3JzIGZvcm0gdGhlIG51bWJlci5cbiAgICAgICAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHBhcnRzWzBdLnNwbGl0KHRoaXMuR1JPVVApLmpvaW4oJycpKTtcbiAgICAgICAgY29uc3QgZGVjaW1hbCA9IE51bWJlcihgMC4ke3BhcnRzWzFdIHx8IDB9YCk7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4obnVtYmVyKSB8fCBOdW1iZXIuaXNOYU4oZGVjaW1hbCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3VtID0gcGFydHMubGVuZ3RoID4gMSA/IHBhcnNlRmxvYXQoKG51bWJlciArIGRlY2ltYWwpLnRvRml4ZWQocGFydHNbMV0ubGVuZ3RoKSkgOiBudW1iZXIgKyBkZWNpbWFsO1xuICAgICAgICAvLyBpZiB0aGUgbnVtYmVyIGlzIG5lZ2F0aXZlIHRoZW4gY2FsY3VsYXRlIHRoZSBudW1iZXIgYXMgbnVtYmVyIC0gZGVjaW1hbFxuICAgICAgICAvLyBFeDogbnVtYmVyID0gLTEyMyBhbmQgZGVjaW1hbCA9IDAuNDUgdGhlbiBudW1iZXIgLSBkZWNpbWFsID0gLTEyMy0wNDUgPSAtMTIzLjQ1XG4gICAgICAgIC8vIElmIGVudGVyZWQgbnVtYmVyIGlzIC0wLjEgdG8gLTAuOSB0aGVuIHRoZSBudW1iZXIgaXMgLTAgYW5kIGRlY2ltYWwgaXMgMC4xIHRvIDAuOS4gTm93IGNhbGFjdWxhdGUgdGhlIG51bWJlciBhcyBudW1iZXItZGVjaW1hbFxuICAgICAgICAvLyBFeDogbnVtYmVyID0gLTAgYW5kIGRlY2ltYWwgPSAwLjEgdGhlbiBudW1iZXItZGVjaW1hbCA9IC0wLTAuMSA9IC0wLjFcbiAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5pcygwLCBudW1iZXIpID8gc3VtIDogbnVtYmVyIC0gZGVjaW1hbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVtYmVyID4gMCA/IHN1bSA6IG51bWJlciAtIGRlY2ltYWw7XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlcyB0aGUgd2lkZ2V0cyB0ZXh0IHZhbHVlLlxuICAgIHByaXZhdGUgdXBkYXRlRGlzcGxheVRleHQoKSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uOiBudW1iZXIgPSBpbnB1dC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgY29uc3QgcHJlVmFsdWU6IHN0cmluZyA9IGlucHV0LnZhbHVlO1xuICAgICAgICBpZiAoIXRoaXMuaXNEZWZhdWx0UXVlcnkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gcHJlVmFsdWUuc3BsaXQodGhpcy5ERUNJTUFMKTtcbiAgICAgICAgICAgIHRoaXMuZGVjaW1hbFZhbHVlID0gcGFydHNbMV0gfHwgJyc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RlcFZhbCA9IHRoaXMuc3RlcExlbmd0aCgpO1xuICAgICAgICBpZiAodGhpcy5pbnB1dG1vZGUgPT09IElOUFVUTU9ERS5GSU5BTkNJQUwgJiYgc3RlcFZhbCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBpbnB1dC52YWx1ZSA9IHRoaXMudHJhbnNmb3JtTnVtYmVyKHRoaXMucHJveHlNb2RlbCwgYDEuJHtzdGVwVmFsfS0ke3N0ZXBWYWx9YCk7XG4gICAgICAgICAgICB0aGlzLmRlY2ltYWxWYWx1ZSA9IHRoaXMuZGVjaW1hbFZhbHVlLnJlcGxhY2UoL1xcRC9nLCcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gaW5wdXQudmFsdWUgPSB0aGlzLnRyYW5zZm9ybU51bWJlcih0aGlzLnByb3h5TW9kZWwpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGluIHNhZmFyaSBicm93c2VyLCBzZXRTZWxlY3Rpb25SYW5nZSB3aWxsIGZvY3VzIHRoZSBpbnB1dCBieSBkZWZhdWx0LCB3aGljaCBtYXkgaW52b2tlIHRoZSBmb2N1cyBldmVudCBvbiB3aWRnZXQuXG4gICAgICAgIC8vIEhlbmNlIHByZXZlbnRpbmcgdGhlIHNldFNlbGVjdGlvblJhbmdlIHdoZW4gZGVmYXVsdCB2YWx1ZSBpcyBzZXQgaS5lLiB3aWRnZXQgaXMgbm90IGZvY3VzZWQuXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZW9uID09PSAnZGVmYXVsdCcgJiYgIXRoaXMuaXNEZWZhdWx0UXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRDdXJzb3JQb3NpdGlvbihwcmVWYWx1ZS5sZW5ndGggLSBwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHN0ZXAgbGVuZ3RoIHNldCBpbiB0aGUgc3R1ZGlvXG4gICAgcHJpdmF0ZSBzdGVwTGVuZ3RoKCkge1xuICAgICAgICBpZih0aGlzLmlucHV0bW9kZSA9PT0gJ0lOUFVUTU9ERS5OQVRVUkFMJyAmJiAhaXNOYU4odGhpcy5kZWNpbWFscGxhY2VzKSAmJiB0aGlzLmRlY2ltYWxwbGFjZXMgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVjaW1hbHBsYWNlcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGVwTGVuID0gdGhpcy5zdGVwLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcbiAgICAgICAgaWYgKHN0ZXBMZW4ubGVuZ3RoID09PSAxICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHN0ZXBMZW5bMV0ubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGN1cnJlbmN5IHdpZGdldCBoYXMgaW5wdXQgbW9kZSBhcyBuYXR1cmFsIGFuZCB0cmFpbGluZyB6ZXJvIGlzIGRlZmluZWQgb3Igbm90XG4gICAgcHVibGljIGlzTmF0dXJhbEN1cnJlbmN5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dG1vZGUgPT09IElOUFVUTU9ERS5OQVRVUkFMICYmIHRoaXMud2lkZ2V0VHlwZSA9PT0gJ3dtLWN1cnJlbmN5JyAmJiAhIXRoaXMudHJhaWxpbmd6ZXJvO1xuICAgIH1cblxuICAgICAgIC8qKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBjb250YWlucyB0aGUgdmFsdWUgZW50ZXJlZCBpbiB0aGUgaW5wdXQgYm94XG4gICAgICogVGhpcyBmdW5jdGlvbiBtb2RpZmllcyB0aGUgdXNlciBpbnB1dCB2YWx1ZSwgaW50byBmaW5hbmNpYWwgbW9kZS5cbiAgICAgKiBOdW1iZXIgc3RhcnRzIGZyb20gaGlnaGVzdCBwcmVjZXNpb24gZGVjaW1hbCwgb24gdHlwaW5nIG51bWJlciBzaGlmdHMgdG8gdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25JbnB1dENoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHN0ZXBWYWwgPSB0aGlzLnN0ZXBMZW5ndGgoKTtcbiAgICAgICAgY29uc3QgcHJldkRhdGFWYWx1ZSA9ICB0aGlzLmdldFByZXZEYXRhVmFsdWUoKTtcbiAgICAgICAgLy8gV01TLTIyMzU1LCBUcmlnZ2VyIGNoYW5nZSBjYiBpZiB2YWx1ZSBleGlzdHMgb3IgdmFsdWUgaXMgZW1wdHkgYnV0IGRhdGF2YWx1ZSBleGlzdHMgKHdoZW4gdmFsdWUgaXMgc2VsZWN0ZWQgYW5kIGRlbGV0ZWQpLlxuICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjcwNDFdOiBFbnN1cmUgdGhlIGNoYW5nZSBjYWxsYmFjayBmb3IgdGhlIG51bWJlciB3aWRnZXQgdHJpZ2dlcnMgb25seSBvbiBmb2N1cyBvdXQgKHdoZW4gdXBkYXRlb24gaXMgc2V0IHRvIGJsdXIpLFxuICAgICAgICAgICAvLyBub3QgZHVyaW5nIGluaXRpYWwgaW5wdXQgd2hlbiB0aGUgcHJldmlvdXMgdmFsdWUgaXMgdW5kZWZpbmVkIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBpcyBudWxsLlxuICAgICAgICBpZiAoaXNEZWZpbmVkKHZhbHVlKSAmJiAodmFsdWUgIT09ICcnIHx8IHRoaXMuZGF0YXZhbHVlIHx8IHRoaXMuZGF0YXZhbHVlID09IDApKSB7XG4gICAgICAgICAgICBpZiAodGhpcy53aWRnZXRUeXBlID09PSBcIndtLW51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRtb2RlID09IElOUFVUTU9ERS5GSU5BTkNJQUwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FzZSAxOiB3aGVuIHRoZXJlIGlzIG5vIGRlZmF1bHQgdmFsdWUsIHByZXZEYXRhVmFsdWUgaXMgdW5kZWZpbmVkICYmIHRoaXMuZGF0YXZhbHVlIGlzIG51bGxcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FzZSAyOiB3aGVuIHRoZXJlIGRlZmF1bHQgdmFsdWUsIHByZXZEYXRhVmFsdWUgaXMgZXF1YWwgdG8gdGhpcy5kYXRhdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoKHByZXZEYXRhVmFsdWUgPT0gdW5kZWZpbmVkICYmIHRoaXMuZGF0YXZhbHVlID09IG51bGwpIHx8IChwcmV2RGF0YVZhbHVlID09IHRoaXMuZGF0YXZhbHVlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHByZXZEYXRhVmFsdWUgPT0gdW5kZWZpbmVkICYmIHRoaXMuZGF0YXZhbHVlID09IG51bGwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgeyAvLyBjdXJyZW5jeSB3aWRnZXRcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXN0ZXBWYWwgfHwgdGhpcy5pbnB1dG1vZGUgIT09IElOUFVUTU9ERS5GSU5BTkNJQUwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaW5hbmNpYWxWYWw7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHRoZSB2YWx1ZSBpcyBlbnRlcmVkIGJ5IHRoZSB1c2VyLCBmb3JtYXQgdGhlIGlucHV0XG4gICAgICAgICAqIElmIHRoZSB2YWx1ZSBpcyBwcm92aWRlZCBhcyBkZWZhdWx0IHZhbHVlLCBza2lwIGZvcm1hdHRpbmdcbiAgICAgICAgICovXG4gICAgICAgIGlmICh0aGlzLmlzRGVmYXVsdFF1ZXJ5KSB7XG4gICAgICAgICAgICBmaW5hbmNpYWxWYWwgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbEluV2hvbGVOdW0gPSBwYXJzZUludCh2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoL1xcRC9nLCcnKSk7XG4gICAgICAgICAgICBmaW5hbmNpYWxWYWwgPSB2YWxJbldob2xlTnVtICogIHRoaXMuc3RlcDtcbiAgICAgICAgfVxuXG4gICAgICAgICAgIGlmICghaXNOYU4oZmluYW5jaWFsVmFsKSkge1xuICAgICAgICAgICAgLy8gV2hlbiB1cGRhdGUgb24ga2V5IGlzIHNldCBrZXlwcmVzcywgdXBkYXRlIHRoZSBkYXRhdmFsdWUgZWxzZSB1cGRhdGUgb25seSB0aGUgZGlzcGxheSB2YWx1ZVxuICAgICAgICAgICAgaWYgKHRoaXMubmdNb2RlbE9wdGlvbnMudXBkYXRlT24gPT09ICdjaGFuZ2UnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhdmFsdWUgPSBwYXJzZUZsb2F0KGZpbmFuY2lhbFZhbC50b0ZpeGVkKHN0ZXBWYWwpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gZmluYW5jaWFsVmFsLnRvRml4ZWQoc3RlcFZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5uZ01vZGVsT3B0aW9ucy51cGRhdGVPbiAhPT0gJ2JsdXInKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5wdXQgbW9kZSBpcyBmaW5hbmNpYWwgYW5kIHRyYWlsaW5nIHplcm8gaXMgc2V0IHRvIGZhbHNlLCBPbiBmb2N1cyBzZXQgZGlzcGxheSB2YWwgdG8gZml4ZWQgcG9pbnQgbm90YXRpb24gYW5kIE9uIGJsdXIgc3RyaXAgdHJhaWxpbmcgemVyb3NcbiAgICAvLyBJbiBjdXJyZW5jeSwgaW5wdXRtb2RlIGlzIG5hdHVyYWwgYW5kIHRyYWlsaW5nIHplcm8gYW5kIHN0ZXAgYXJlIGRlZmluZWQsIG9uIGJsdXIgZGlzcGxheSB2YWwgdG8gZml4ZWQgcG9pbnQgbm90YXRpb24gYW5kIG9uIGZvY3VzIHN0cmlwIHRoZSB6ZXJvc1xuICAgIHB1YmxpYyBjaGVja0ZvclRyYWlsaW5nWmVyb3MoJGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHN0ZXBWYWwgPSB0aGlzLnN0ZXBMZW5ndGgoKTtcbiAgICAgICAgY29uc3QgZmluYW5jaWFsTW9kZSA9ICF0aGlzLnRyYWlsaW5nemVybyAmJiB0aGlzLmlucHV0bW9kZSA9PT0gSU5QVVRNT0RFLkZJTkFOQ0lBTDtcblxuICAgICAgICAvLyBJZiB0aGUgdXNlcidzIGxhc3QgaW5wdXQgaXMgYSBkZWNpbWFsIGFuZCBub3QgYWN0aXZlIG9uIGlucHV0IGZpZWxkLCB0aHJvdyBlcnJvclxuICAgICAgICBpZiAodGhpcy5sYXN0VmFsSXNEZWNpbWFsKSB7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5kaXNwbGF5VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZmluYW5jaWFsTW9kZSAmJiAhdGhpcy5pc05hdHVyYWxDdXJyZW5jeSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0ZXBWYWwgJiYgdGhpcy5kYXRhdmFsdWUpIHtcbiAgICAgICAgICAgIGxldCBudW1iZXJmaWx0ZXI7XG4gICAgICAgICAgICBpZiAoKGZpbmFuY2lhbE1vZGUgJiYgJGV2ZW50LnR5cGUgPT09ICdmb2N1cycpIHx8ICh0aGlzLmlzTmF0dXJhbEN1cnJlbmN5KCkgJiYgJGV2ZW50LnR5cGUgPT09ICdibHVyJykpIHtcbiAgICAgICAgICAgICAgICBudW1iZXJmaWx0ZXIgPSBgMS4ke3N0ZXBWYWx9LSR7c3RlcFZhbH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLnRyYW5zZm9ybU51bWJlcih0aGlzLmRhdGF2YWx1ZSwgbnVtYmVyZmlsdGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgdGhlIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBhIG51bWJlciBoYXZlLlxuICAgICAqIEBwYXJhbSB2YWx1ZTogbnVtYmVyXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKi9cbiAgICBwcml2YXRlIGNvdW50RGVjaW1hbHModmFsdWUpIHtcbiAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgaWYgKG51bSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb252ZXJ0IHRvIG51bWJlciBhbmQgaGFuZGxlIHNjaWVudGlmaWMgbm90YXRpb25cbiAgICAgICAgaWYgKE51bWJlci5pc05hTihudW0pKSByZXR1cm4gMDtcblxuICAgICAgICAvLyBHZXQgdGhlIGV4cG9uZW50aWFsIGZvcm0gdG8gaGFuZGxlIHNjaWVudGlmaWMgbm90YXRpb24gcHJvcGVybHlcbiAgICAgICAgY29uc3QgZXhwb25lbnRpYWxTdHIgPSBudW0udG9FeHBvbmVudGlhbCgpO1xuICAgICAgICBjb25zdCBtYXRjaCA9IGV4cG9uZW50aWFsU3RyLm1hdGNoKC9eLT9cXGQqXFwuPyhcXGQrKT9lKFsrLV1cXGQrKSQvKTtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxzID0gbWF0Y2hbMV0gPyBtYXRjaFsxXS5sZW5ndGggOiAwO1xuICAgICAgICAgICAgY29uc3QgZXhwb25lbnQgPSBwYXJzZUludChtYXRjaFsyXSk7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgZGVjaW1hbHMgLSBleHBvbmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGYWxsYmFjayB0byByZWd1bGFyIGRlY2ltYWwgY291bnRpbmdcbiAgICAgICAgY29uc3QgZGVjaW1hbFN0ciA9IG51bS50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBpc0xvY2FsaXplZE51bWJlciA9IGluY2x1ZGVzKGRlY2ltYWxTdHIsIHRoaXMuREVDSU1BTCk7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gaXNMb2NhbGl6ZWROdW1iZXIgPyBkZWNpbWFsU3RyLnNwbGl0KHRoaXMuREVDSU1BTCkgOiBkZWNpbWFsU3RyLnNwbGl0KCcuJyk7XG4gICAgICAgIHJldHVybiBwYXJ0c1sxXSA/IHBhcnRzWzFdLmxlbmd0aCA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaGFuZGxlcyB0aGUgYXJyb3cgcHJlc3MgZXZlbnQuIEluY3JlYXNlcyBvciBkZWNyZWFzZXMgdGhlIG51bWJlci4gdHJpZ2dlcmVkIGZvbSB0aGUgdGVtcGxhdGVcbiAgICAgKiBAcGFyYW0gJGV2ZW50IGtleWJvYXJkIGV2ZW50LlxuICAgICAqIEBwYXJhbSBrZXkgaWRlbnRpZmllciB0byBpbmNyZWFzZSBvciBkZWNyZWFzZSB0aGUgbnVtYmVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBvbkFycm93UHJlc3MoJGV2ZW50LCBrZXkpIHtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuc3RlcCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldFZhbCA9ICRldmVudC50YXJnZXQudmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG5cbiAgICAgICAgLy8gcHJveHlNb2RlbCB0byBiZSB1cGRhdGVkIGZyb20gJGV2ZW50LnRhcmdldC52YWx1ZSBpZiBwcmVzZW50IHRvIHN1cHBvcnQgYXJyb3cga2V5cyB3aGVuIGlucHV0IGNoYW5nZXMgZWxzZSBwaWNrIHVwIGZyb20gdGhpcy5wcm94eW1vZGVsXG4gICAgICAgIGxldCBwcm94eU1vZGVsO1xuICAgICAgICBpZiAodGFyZ2V0VmFsICYmICFpc05hTihwYXJzZUZsb2F0KHRhcmdldFZhbCkpKSB7XG4gICAgICAgICAgICBwcm94eU1vZGVsID0gcGFyc2VGbG9hdCh0YXJnZXRWYWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJveHlNb2RlbCA9IHRoaXMucHJveHlNb2RlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2YWx1ZTtcblxuICAgICAgICAvLyBpZiB0aGUgbnVtYmVyIGlzIG5vdCBpbiByYW5nZSBhbmQgd2hlbiBhcnJvdyBidXR0b25zIGFyZSBwcmVzc2VkIG5lZWQgdG8gZ2V0IGFwcHJvcHJpYXRlIG51bWJlciB2YWx1ZS5cbiAgICAgICAgaWYgKHRoaXMubnVtYmVyTm90SW5SYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMucGFyc2VOdW1iZXIodGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgICAgICAgICAgLy8gdGFrZSB0aGUgdGV4dGJveCB2YWx1ZSBhcyBjdXJyZW50IG1vZGVsIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZC5cbiAgICAgICAgICAgIGlmICghaXNOYU4oaW5wdXRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVJblJhbmdlKGlucHV0VmFsdWUpO1xuICAgICAgICAgICAgICAgIHByb3h5TW9kZWwgPSBpbnB1dFZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9ucygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHByb3h5TW9kZWwpIHx8IGlzTnVsbChwcm94eU1vZGVsKSkge1xuICAgICAgICAgICAgICAgIHByb3h5TW9kZWwgPSB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVJblJhbmdlKCh0aGlzLm1pbnZhbHVlIHx8IDApKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbnMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldFZhbHVlSW5SYW5nZShwcm94eU1vZGVsICsgKGtleSA9PT0gJ1VQJyA/IHRoaXMuc3RlcCA6IC10aGlzLnN0ZXApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKGtleSA9PT0gJ1VQJyAmJiBwcm94eU1vZGVsIDw9IHZhbHVlKSB8fCAoa2V5ID09PSAnRE9XTicgJiYgcHJveHlNb2RlbCA+PSB2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxSb3VuZFZhbHVlID0gTWF0aC5tYXgodGhpcy5jb3VudERlY2ltYWxzKHByb3h5TW9kZWwpLCB0aGlzLmNvdW50RGVjaW1hbHModGhpcy5zdGVwKSk7XG5cbiAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgbW9kZWxQcm94eS5cbiAgICAgICAgICAgIHRoaXMucHJveHlNb2RlbCA9IHJvdW5kKHZhbHVlLCBkZWNpbWFsUm91bmRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURpc3BsYXlUZXh0KCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh0aGlzLnByb3h5TW9kZWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbWV0aG9kIGlzIGNhbGxlZCBmcm9tIHRoZSBmcm9tIHdpZGdldC4gdG8gY2hlY2sgd2hldGhlciB0aGUgdmFsdWUgZW50ZXJlZCBpcyB2YWxpZCBvciBub3QuXG4gICAgICogQHJldHVybnMge29iamVjdH1cbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgICAgIGlmICh0aGlzLmlzSW52YWxpZE51bWJlcikge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVR5cGUgPSAnJztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW52YWxpZE51bWJlcjoge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5udW1iZXJOb3RJblJhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG51bWJlck5vdEluUmFuZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWxpZGF0ZVR5cGUgPSAnJztcbiAgICAgICAgLyogV01TLTE4MjY5IHwgRXh0ZW5kaW5nIHRoZSBleGlzdGluZyB2YWxpZGF0aW9uIGZvciAncmVxdWlyZWQnICovXG4gICAgICAgIGlmICh0aGlzWydzaG93J10gJiYgdGhpc1sncmVxdWlyZWQnXSkge1xuICAgICAgICAgICAgcmV0dXJuICghIWMudmFsdWUgfHwgYy52YWx1ZSA9PT0gMCkgPyBudWxsIDogeyByZXF1aXJlZDogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZUlucHV0RW50cnkoJGV2ZW50KSB7XG5cbiAgICAgICAgdGhpcy5pc0RlZmF1bHRRdWVyeSA9IGZhbHNlO1xuXG4gICAgICAgIC8vIGFsbG93IGFjdGlvbnMgaWYgY29udHJvbCBrZXkgaXMgcHJlc3NlZCBvciBpZiBiYWNrc3BhY2UgaXMgcHJlc3NlZC4gKGZvciBNb3ppbGxhKS5cbiAgICAgICAgaWYgKCRldmVudC5jdHJsS2V5IHx8IGluY2x1ZGVzKFsnQmFja3NwYWNlJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ1RhYicsICdFbnRlcicsICdEZWxldGUnXSwgJGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbGlkaXR5ID0gbmV3IFJlZ0V4cChgXltcXFxcZFxcXFxzLSwuZSske3RoaXMuR1JPVVB9JHt0aGlzLkRFQ0lNQUx9XSRgLCAnaScpO1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gJGV2ZW50LnRhcmdldD8udmFsdWV8fFwiXCI7XG5cbiAgICAgICAgLy8gd2hlbiBpbnB1dCBtb2RlIGlzIGZpbmFuY2lhbCwgZG8gbm90IHJlc3RyaWN0IHVzZXIgb24gZW50ZXJpbmcgdGhlIHZhbHVlIHdoZW4gc3RlcCB2YWx1ZSBsaW1pdCBpcyByZWFjaGVkLlxuICAgICAgICBjb25zdCBza2lwU3RlcFZhbGlkYXRpb24gPSB0aGlzLmlucHV0bW9kZSA9PT0gSU5QVVRNT0RFLkZJTkFOQ0lBTDtcblxuICAgICAgICAvLyBWYWxpZGF0ZXMgaWYgdXNlciBlbmV0ZXJzIG1vcmUgdGhhbiAxNiBkaWdpdHNcbiAgICAgICAgaWYgKGlucHV0VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFZhbCA9ICBwYXJzZUludChpbnB1dFZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxEL2csJycpKTtcbiAgICAgICAgICAgIGlmIChwYXJzZWRWYWwudG9TdHJpbmcoKS5sZW5ndGggPiAxNSkge1xuICAgICAgICAgICAgICAgIC8vIFdNUy0yMjMyMTogSWYgdGhlIG51bWJlciBpcyBncmVhdGVyIHRoYW4gTUFYX1NBRkVfSU5URUdFUiAobW9yZSB0aGFuIDE1IG51bWJlcnMpLlxuICAgICAgICAgICAgICAgIC8vIHVzZXIgc2VsZWN0cyBhIHJhbmdlIG9mIGRpZ2l0cyBhbmQgcHJlc3NlcyBhIGtleS5cbiAgICAgICAgICAgICAgICAvLyBEbyBub3QgdGhyb3cgdmFsaWRhdGlvbiBvZiBleGNlZWRlZCBudW1iZXIgYXMgc2VsZWN0ZWQgcmFuZ2UgdmFsdWUgd2lsbCBiZSBkZWxldGVkLlxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFZhbCAmJiBzZWxlY3RlZFZhbC50b1N0cmluZygpICYmIHNlbGVjdGVkVmFsLmZvY3VzTm9kZSA9PT0gdGhpcy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YWxpZGF0ZXMgZW50ZXJpbmcgb2YgZGVjaW1hbCB2YWx1ZXMgb25seSB3aGVuIHVzZXIgcHJvdmlkZXMgZGVjaW1hbCBsaW1pdChpLmUgc3RlcCBjb250YWlucyBkZWNpbWFsIHZhbHVlcykuXG4gICAgICAgIC8vIFJlc3RyaWN0IHVzZXIgZnJvbSBlbnRlcmluZyBvbmx5IGlmIHRoZSBkZWNpbWFsIGxpbWl0IGlzIHJlYWNoZWQgYW5kIHRoZSBuZXcgZGlnaXQgaXMgZW50ZXJlZCBpbiBkZWNpbWFsIHBsYWNlXG4gICAgICAgIC8vIGlmICghc2tpcFN0ZXBWYWxpZGF0aW9uICYmIGlucHV0VmFsdWUgJiYgdGhpcy5jb3VudERlY2ltYWxzKHRoaXMuc3RlcCkgJiYgKHRoaXMuY291bnREZWNpbWFscyhpbnB1dFZhbHVlKSA+PSB0aGlzLmNvdW50RGVjaW1hbHModGhpcy5zdGVwKSkgJiYgJGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA+PSBpbnB1dFZhbHVlLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyB2YWxpZGF0ZXMgaWYgdXNlciBlbnRlcmVkIGFuIGludmFsaWQgY2hhcmFjdGVyLlxuICAgICAgICBpZiAoIXZhbGlkaXR5LnRlc3QoJGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHRoaXMuaW5wdXRtb2RlID09PSBJTlBVVE1PREUuTkFUVVJBTCAmJiAhaXNOYU4odGhpcy5kZWNpbWFscGxhY2VzKSkge1xuICAgICAgICAgICAgaWYodGhpcy5kZWNpbWFscGxhY2VzID09PSAwICYmIHRoaXMuREVDSU1BTCA9PT0gJGV2ZW50LmtleSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gaW5jbHVkZXMoaW5wdXRWYWx1ZSwgdGhpcy5ERUNJTUFMKSA/IChpbnB1dFZhbHVlIGFzIGFueSkuc3BsaXQodGhpcy5ERUNJTUFMKSA6IGlucHV0VmFsdWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQ3Vyc29yUG9zaXRpb25BdERlY2ltYWxQbGFjZSA9ICRldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgPiBwYXJ0c1swXS5sZW5ndGg7XG4gICAgICAgICAgICBpZih0aGlzLmRlY2ltYWxwbGFjZXMgPiAwICYmIHRoaXMuY291bnREZWNpbWFscyhpbnB1dFZhbHVlKSA+PSB0aGlzLmRlY2ltYWxwbGFjZXMgJiYgaXNDdXJzb3JQb3NpdGlvbkF0RGVjaW1hbFBsYWNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY29tbWEgY2Fubm90IGJlIGVudGVyZWQgY29uc2VjdXRpdmVseVxuICAgICAgICBpZiAoaW5jbHVkZXMoaW5wdXRWYWx1ZSwgJywnKSAmJiBpbnB1dFZhbHVlW2lucHV0VmFsdWUubGVuZ3RoIC0gMV0gPT09ICcsJyAmJiAkZXZlbnQua2V5ID09PSAnLCcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGEgZGVjaW1hbCB2YWx1ZSBjYW4gYmUgZW50ZXJlZCBvbmx5IG9uY2UgaW4gdGhlIGlucHV0LlxuICAgICAgICBpZiAoaW5jbHVkZXMoaW5wdXRWYWx1ZSwgdGhpcy5ERUNJTUFMKSAmJiAkZXZlbnQua2V5ID09PSB0aGlzLkRFQ0lNQUwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyAnZScgY2FuIGJlIGVudGVyZWQgb25seSBvbmNlIGluIHRoZSBpbnB1dC5cbiAgICAgICAgaWYgKGludGVyc2VjdGlvbih0b0FycmF5KGlucHV0VmFsdWUpLCBbJ2UnLCAnRSddKS5sZW5ndGggJiYgaW5jbHVkZXMoJ2VFJywgJGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGluY2x1ZGVzKGlucHV0VmFsdWUsICcrJykgfHwgaW5jbHVkZXMoaW5wdXRWYWx1ZSwgJy0nKSkgJiYgKCRldmVudC5rZXkgPT09ICcrJyB8fCAkZXZlbnQua2V5ID09PSAnLScpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRG8gbm90IGFsbG93IHVzZXIgdG8gZW50ZXIgb25seSBzcGFjZSB3aXRob3V0IGFueSBpbnB1dCB2YWx1ZVxuICAgICAgICBpZiAoIWlucHV0VmFsdWUgJiYgJGV2ZW50LmNvZGUgPT09ICdTcGFjZScpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkJhY2tzcGFjZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0RlZmF1bHRRdWVyeSA9IGZhbHNlO1xuICAgIH1cbiAgICBvbkRlbGV0ZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0RlZmF1bHRRdWVyeSA9IGZhbHNlO1xuICAgIH1cbiAgICBvbkVudGVyKCRldmVudCkge1xuICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9ICRldmVudC50YXJnZXQudmFsdWU7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRtb2RlID09PSBJTlBVVE1PREUuTkFUVVJBTCB8fCAodGhpcy5pbnB1dG1vZGUgPT09IElOUFVUTU9ERS5GSU5BTkNJQUwgJiYgdGhpcy5uZ01vZGVsT3B0aW9ucy51cGRhdGVPbiA9PT0gJ2JsdXInKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhdmFsdWUgPSAkZXZlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92Pykge1xuICAgICAgICBpZiAoa2V5ID09PSAnbWludmFsdWUnIHx8IGtleSA9PT0gJ21heHZhbHVlJykge1xuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkKG52KTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRhdmFsdWUnICYmICFvdikge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNOYXR1cmFsQ3VycmVuY3koKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tGb3JUcmFpbGluZ1plcm9zKHt0eXBlOiAnYmx1cid9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKG52KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBvblBhc3RlKCRldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGFzdGVkRGF0YSA9ICRldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQnKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgcGFzdGVkRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgbW9ja0V2ZW50ID0gbmV3IEtleWJvYXJkRXZlbnQoJ2tleXByZXNzJywgeyBrZXk6IGNoYXIgfSk7XG4gICAgICAgICAgICBpZiAodGhpcy52YWxpZGF0ZUlucHV0RW50cnkobW9ja0V2ZW50KT09PWZhbHNlKSB7XG4gICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=