@acorex/components 18.16.0-next.9 → 18.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (694) hide show
  1. package/color-palette/lib/color-palette-picker.component.d.ts +1 -5
  2. package/fesm2022/acorex-components-action-sheet.mjs +11 -11
  3. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  4. package/fesm2022/acorex-components-alert.mjs +8 -8
  5. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  6. package/fesm2022/acorex-components-audio-wave.mjs +8 -8
  7. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  8. package/fesm2022/acorex-components-avatar.mjs +12 -11
  9. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  10. package/fesm2022/acorex-components-badge.mjs +8 -8
  11. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  12. package/fesm2022/acorex-components-bottom-navigation.mjs +12 -12
  13. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  14. package/fesm2022/acorex-components-breadcrumbs.mjs +12 -12
  15. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  16. package/fesm2022/acorex-components-button-group.mjs +12 -11
  17. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  18. package/fesm2022/acorex-components-button.mjs +16 -15
  19. package/fesm2022/acorex-components-button.mjs.map +1 -1
  20. package/fesm2022/acorex-components-calendar.mjs +15 -15
  21. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  22. package/fesm2022/acorex-components-check-box.mjs +8 -8
  23. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  24. package/fesm2022/acorex-components-chips.mjs +8 -8
  25. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  26. package/fesm2022/acorex-components-circular-progress.mjs +8 -8
  27. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  28. package/fesm2022/acorex-components-collapse.mjs +12 -11
  29. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  30. package/fesm2022/acorex-components-color-box.mjs +8 -8
  31. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  32. package/fesm2022/acorex-components-color-palette.mjs +53 -63
  33. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  34. package/fesm2022/acorex-components-comment.mjs +36 -36
  35. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  36. package/fesm2022/acorex-components-common.mjs +100 -89
  37. package/fesm2022/acorex-components-common.mjs.map +1 -1
  38. package/fesm2022/acorex-components-conversation.mjs +60 -60
  39. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  40. package/fesm2022/acorex-components-cron-job.mjs +53 -53
  41. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  42. package/fesm2022/acorex-components-data-pager.mjs +38 -32
  43. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  44. package/fesm2022/acorex-components-data-table.mjs +42 -36
  45. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  46. package/fesm2022/acorex-components-datetime-box.mjs +8 -8
  47. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  48. package/fesm2022/acorex-components-datetime-input.mjs +8 -8
  49. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  50. package/fesm2022/acorex-components-datetime-picker.mjs +8 -8
  51. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  52. package/fesm2022/acorex-components-decorators.mjs +20 -19
  53. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  54. package/fesm2022/acorex-components-dialog.mjs +11 -11
  55. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  56. package/fesm2022/acorex-components-drawer.mjs +16 -16
  57. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  58. package/fesm2022/acorex-components-dropdown-button.mjs +8 -8
  59. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  60. package/fesm2022/acorex-components-dropdown.mjs +15 -15
  61. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  62. package/fesm2022/acorex-components-form.mjs +21 -18
  63. package/fesm2022/acorex-components-form.mjs.map +1 -1
  64. package/fesm2022/acorex-components-image-editor.mjs +46 -43
  65. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  66. package/fesm2022/acorex-components-image.mjs +8 -8
  67. package/fesm2022/acorex-components-image.mjs.map +1 -1
  68. package/fesm2022/acorex-components-json-viewer.mjs +9 -9
  69. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  70. package/fesm2022/acorex-components-label.mjs +8 -8
  71. package/fesm2022/acorex-components-label.mjs.map +1 -1
  72. package/fesm2022/acorex-components-list.mjs +8 -8
  73. package/fesm2022/acorex-components-list.mjs.map +1 -1
  74. package/fesm2022/acorex-components-loading-dialog.mjs +11 -11
  75. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  76. package/fesm2022/acorex-components-loading.mjs +19 -18
  77. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  78. package/fesm2022/acorex-components-map.mjs +268 -11
  79. package/fesm2022/acorex-components-map.mjs.map +1 -1
  80. package/fesm2022/acorex-components-media-viewer.mjs +51 -51
  81. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  82. package/fesm2022/acorex-components-menu.mjs +19 -19
  83. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  84. package/fesm2022/acorex-components-nav.mjs +12 -12
  85. package/fesm2022/acorex-components-nav.mjs.map +1 -1
  86. package/fesm2022/acorex-components-navbar.mjs +8 -8
  87. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  88. package/fesm2022/acorex-components-notification.mjs +11 -11
  89. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  90. package/fesm2022/acorex-components-number-box.mjs +8 -8
  91. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  92. package/fesm2022/acorex-components-otp.mjs +9 -9
  93. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  94. package/fesm2022/acorex-components-page.mjs +10 -10
  95. package/fesm2022/acorex-components-paint.mjs +38 -30
  96. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  97. package/fesm2022/acorex-components-password-box.mjs +12 -12
  98. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  99. package/fesm2022/acorex-components-phone-box.mjs +8 -8
  100. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  101. package/fesm2022/acorex-components-picker.mjs +12 -11
  102. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  103. package/fesm2022/acorex-components-popover.mjs +8 -8
  104. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  105. package/fesm2022/acorex-components-popup.mjs +11 -11
  106. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  107. package/fesm2022/acorex-components-progress-bar.mjs +8 -8
  108. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  109. package/fesm2022/acorex-components-qrcode.mjs +8 -8
  110. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  111. package/fesm2022/acorex-components-radio.mjs +8 -8
  112. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  113. package/fesm2022/acorex-components-range-slider.mjs +18 -11
  114. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  115. package/fesm2022/acorex-components-rate-picker.mjs +8 -8
  116. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  117. package/fesm2022/acorex-components-result.mjs +8 -8
  118. package/fesm2022/acorex-components-result.mjs.map +1 -1
  119. package/fesm2022/acorex-components-routing-progress.mjs +8 -8
  120. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  121. package/fesm2022/acorex-components-scheduler.mjs +16 -16
  122. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  123. package/fesm2022/acorex-components-scss.mjs +4 -4
  124. package/fesm2022/acorex-components-search-box.mjs +8 -8
  125. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  126. package/fesm2022/acorex-components-select-box.mjs +8 -8
  127. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  128. package/fesm2022/acorex-components-selection-list.mjs +8 -8
  129. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  130. package/fesm2022/acorex-components-side-menu.mjs +12 -12
  131. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  132. package/fesm2022/acorex-components-skeleton.mjs +8 -8
  133. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  134. package/fesm2022/acorex-components-slider.mjs +8 -8
  135. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  136. package/fesm2022/acorex-components-step-wizard.mjs +16 -15
  137. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  138. package/fesm2022/acorex-components-switch.mjs +12 -11
  139. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  140. package/fesm2022/acorex-components-tabs.mjs +44 -46
  141. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  142. package/fesm2022/acorex-components-tag.mjs +8 -8
  143. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  144. package/fesm2022/acorex-components-text-area.mjs +8 -8
  145. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  146. package/fesm2022/acorex-components-text-box.mjs +12 -11
  147. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  148. package/fesm2022/acorex-components-time-line.mjs +14 -14
  149. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  150. package/fesm2022/acorex-components-toast.mjs +11 -11
  151. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  152. package/fesm2022/acorex-components-tooltip.mjs +12 -11
  153. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  154. package/fesm2022/acorex-components-tree-view.mjs +13 -13
  155. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  156. package/fesm2022/acorex-components-uploader.mjs +27 -25
  157. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  158. package/fesm2022/acorex-components-wysiwyg.mjs +47 -47
  159. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  160. package/image-editor/lib/image-editor-view/image-editor-view.component.d.ts +1 -0
  161. package/map/index.d.ts +2 -1
  162. package/map/lib/map.component.d.ts +1 -1
  163. package/map/lib/map.config.d.ts +13 -0
  164. package/map/lib/map.service.d.ts +37 -0
  165. package/package.json +4 -166
  166. package/paint/lib/paint/paint-tools/paint-pen-mode-changer/paint-pen-mode-changer.component.d.ts +5 -2
  167. package/range-slider/lib/range-slider.component.d.ts +1 -0
  168. package/esm2022/acorex-components.mjs +0 -5
  169. package/esm2022/action-sheet/acorex-components-action-sheet.mjs +0 -5
  170. package/esm2022/action-sheet/index.mjs +0 -5
  171. package/esm2022/action-sheet/lib/action-sheet.class.mjs +0 -2
  172. package/esm2022/action-sheet/lib/action-sheet.component.mjs +0 -109
  173. package/esm2022/action-sheet/lib/action-sheet.module.mjs +0 -54
  174. package/esm2022/action-sheet/lib/action-sheet.service.mjs +0 -60
  175. package/esm2022/alert/acorex-components-alert.mjs +0 -5
  176. package/esm2022/alert/index.mjs +0 -3
  177. package/esm2022/alert/lib/alert.component.mjs +0 -142
  178. package/esm2022/alert/lib/alert.module.mjs +0 -22
  179. package/esm2022/audio-wave/acorex-components-audio-wave.mjs +0 -5
  180. package/esm2022/audio-wave/index.mjs +0 -4
  181. package/esm2022/audio-wave/lib/audio-wave.component.mjs +0 -347
  182. package/esm2022/audio-wave/lib/audio-wave.module.mjs +0 -22
  183. package/esm2022/audio-wave/lib/interfaces/audio-wave.interface.mjs +0 -2
  184. package/esm2022/avatar/acorex-components-avatar.mjs +0 -5
  185. package/esm2022/avatar/index.mjs +0 -4
  186. package/esm2022/avatar/lib/avatar-group.component.mjs +0 -14
  187. package/esm2022/avatar/lib/avatar.component.mjs +0 -54
  188. package/esm2022/avatar/lib/avatar.module.mjs +0 -22
  189. package/esm2022/badge/acorex-components-badge.mjs +0 -5
  190. package/esm2022/badge/index.mjs +0 -3
  191. package/esm2022/badge/lib/badge.component.mjs +0 -30
  192. package/esm2022/badge/lib/badge.module.mjs +0 -19
  193. package/esm2022/bottom-navigation/acorex-components-bottom-navigation.mjs +0 -5
  194. package/esm2022/bottom-navigation/index.mjs +0 -4
  195. package/esm2022/bottom-navigation/lib/bottom-navigation-item/bottom-navigation-item.component.mjs +0 -46
  196. package/esm2022/bottom-navigation/lib/bottom-navigation.component.mjs +0 -67
  197. package/esm2022/bottom-navigation/lib/bottom-navigation.module.mjs +0 -22
  198. package/esm2022/breadcrumbs/acorex-components-breadcrumbs.mjs +0 -5
  199. package/esm2022/breadcrumbs/index.mjs +0 -5
  200. package/esm2022/breadcrumbs/lib/breadcrumbs-item.class.mjs +0 -2
  201. package/esm2022/breadcrumbs/lib/breadcrumbs-item.component.mjs +0 -41
  202. package/esm2022/breadcrumbs/lib/breadcrumbs.component.mjs +0 -31
  203. package/esm2022/breadcrumbs/lib/breadcrumbs.module.mjs +0 -21
  204. package/esm2022/button/acorex-components-button.mjs +0 -5
  205. package/esm2022/button/index.mjs +0 -7
  206. package/esm2022/button/lib/button-item-list.component.mjs +0 -153
  207. package/esm2022/button/lib/button-item.class.mjs +0 -2
  208. package/esm2022/button/lib/button-item.component.mjs +0 -152
  209. package/esm2022/button/lib/button.class.mjs +0 -2
  210. package/esm2022/button/lib/button.component.mjs +0 -116
  211. package/esm2022/button/lib/button.module.mjs +0 -26
  212. package/esm2022/button-group/acorex-components-button-group.mjs +0 -5
  213. package/esm2022/button-group/index.mjs +0 -4
  214. package/esm2022/button-group/lib/button-group-item.component.mjs +0 -141
  215. package/esm2022/button-group/lib/button-group.component.mjs +0 -170
  216. package/esm2022/button-group/lib/button-group.module.mjs +0 -23
  217. package/esm2022/calendar/acorex-components-calendar.mjs +0 -5
  218. package/esm2022/calendar/index.mjs +0 -5
  219. package/esm2022/calendar/lib/calendar-range.component.mjs +0 -248
  220. package/esm2022/calendar/lib/calendar.class.mjs +0 -163
  221. package/esm2022/calendar/lib/calendar.component.mjs +0 -631
  222. package/esm2022/calendar/lib/calendar.module.mjs +0 -26
  223. package/esm2022/check-box/acorex-components-check-box.mjs +0 -5
  224. package/esm2022/check-box/index.mjs +0 -3
  225. package/esm2022/check-box/lib/check-box.component.mjs +0 -138
  226. package/esm2022/check-box/lib/check-box.module.mjs +0 -21
  227. package/esm2022/chips/acorex-components-chips.mjs +0 -5
  228. package/esm2022/chips/index.mjs +0 -3
  229. package/esm2022/chips/lib/chips.component.mjs +0 -36
  230. package/esm2022/chips/lib/chips.module.mjs +0 -19
  231. package/esm2022/circular-progress/acorex-components-circular-progress.mjs +0 -5
  232. package/esm2022/circular-progress/index.mjs +0 -3
  233. package/esm2022/circular-progress/lib/circular-progress.component.mjs +0 -95
  234. package/esm2022/circular-progress/lib/circular-progress.module.mjs +0 -17
  235. package/esm2022/collapse/acorex-components-collapse.mjs +0 -5
  236. package/esm2022/collapse/index.mjs +0 -4
  237. package/esm2022/collapse/lib/collapse-group.component.mjs +0 -171
  238. package/esm2022/collapse/lib/collapse.component.mjs +0 -198
  239. package/esm2022/collapse/lib/collapse.module.mjs +0 -21
  240. package/esm2022/color-box/acorex-components-color-box.mjs +0 -5
  241. package/esm2022/color-box/index.mjs +0 -3
  242. package/esm2022/color-box/lib/color-box.component.mjs +0 -92
  243. package/esm2022/color-box/lib/color-box.module.mjs +0 -24
  244. package/esm2022/color-palette/acorex-components-color-palette.mjs +0 -5
  245. package/esm2022/color-palette/index.mjs +0 -8
  246. package/esm2022/color-palette/lib/color-palette-input.component.mjs +0 -157
  247. package/esm2022/color-palette/lib/color-palette-picker.component.mjs +0 -277
  248. package/esm2022/color-palette/lib/color-palette-preview.component.mjs +0 -80
  249. package/esm2022/color-palette/lib/color-palette-swatches.component.mjs +0 -121
  250. package/esm2022/color-palette/lib/color-palette.class.mjs +0 -238
  251. package/esm2022/color-palette/lib/color-palette.component.mjs +0 -58
  252. package/esm2022/color-palette/lib/color-palette.module.mjs +0 -66
  253. package/esm2022/comment/acorex-components-comment.mjs +0 -5
  254. package/esm2022/comment/index.mjs +0 -10
  255. package/esm2022/comment/lib/comment-container/comment-container.component.mjs +0 -37
  256. package/esm2022/comment/lib/comment-item/comment-item.component.mjs +0 -37
  257. package/esm2022/comment/lib/comment-tools/comment-date/comment-date.component.mjs +0 -16
  258. package/esm2022/comment/lib/comment-tools/comment-like/comment-like.component.mjs +0 -28
  259. package/esm2022/comment/lib/comment-tools/comment-menu-options/comment-menu-options.component.mjs +0 -16
  260. package/esm2022/comment/lib/comment-tools/comment-reply-more/comment-reply-more.component.mjs +0 -12
  261. package/esm2022/comment/lib/comment-tools/comment-reply-text/comment-reply-text.component.mjs +0 -12
  262. package/esm2022/comment/lib/comment-view/comment-view.component.mjs +0 -15
  263. package/esm2022/comment/lib/comment.module.mjs +0 -71
  264. package/esm2022/common/acorex-components-common.mjs +0 -5
  265. package/esm2022/common/index.mjs +0 -31
  266. package/esm2022/common/lib/classes/components.class.mjs +0 -76
  267. package/esm2022/common/lib/classes/datalist.class.mjs +0 -50
  268. package/esm2022/common/lib/classes/datasource.class.mjs +0 -134
  269. package/esm2022/common/lib/classes/events.class.mjs +0 -79
  270. package/esm2022/common/lib/classes/styles.class.mjs +0 -13
  271. package/esm2022/common/lib/common.module.mjs +0 -22
  272. package/esm2022/common/lib/components/base-component.class.mjs +0 -74
  273. package/esm2022/common/lib/components/button-base-component.class.mjs +0 -88
  274. package/esm2022/common/lib/components/color-component.class.mjs +0 -25
  275. package/esm2022/common/lib/components/colorlook-component.class.mjs +0 -6
  276. package/esm2022/common/lib/components/input-base-value-component.class.mjs +0 -54
  277. package/esm2022/common/lib/components/interactive-component.class.mjs +0 -129
  278. package/esm2022/common/lib/components/look-component.class.mjs +0 -33
  279. package/esm2022/common/lib/components/selection-base.component.class.mjs +0 -233
  280. package/esm2022/common/lib/components/value-component.class.mjs +0 -232
  281. package/esm2022/common/lib/directives/auto-focus.directive.mjs +0 -63
  282. package/esm2022/common/lib/directives/delayed-value-changed.directive.mjs +0 -51
  283. package/esm2022/common/lib/directives/hotkey.directive.mjs +0 -80
  284. package/esm2022/common/lib/directives/infinite-scroll.directive.mjs +0 -60
  285. package/esm2022/common/lib/directives/inverted-color.directive.mjs +0 -52
  286. package/esm2022/common/lib/directives/responsive.directive.mjs +0 -37
  287. package/esm2022/common/lib/directives/ripple.directive.mjs +0 -65
  288. package/esm2022/common/lib/services/dom.service.mjs +0 -16
  289. package/esm2022/common/lib/services/hotkey.service.mjs +0 -52
  290. package/esm2022/common/lib/types/base/button.type.mjs +0 -18
  291. package/esm2022/common/lib/types/base/color.type.mjs +0 -16
  292. package/esm2022/common/lib/types/base/component.types.mjs +0 -27
  293. package/esm2022/common/lib/types/base/events.types.mjs +0 -19
  294. package/esm2022/common/lib/types/base/index.mjs +0 -8
  295. package/esm2022/common/lib/types/base/interactive.type.mjs +0 -31
  296. package/esm2022/common/lib/types/base/look.type.mjs +0 -16
  297. package/esm2022/common/lib/types/base/value.type.mjs +0 -19
  298. package/esm2022/common/lib/types/direction.mjs +0 -2
  299. package/esm2022/common/lib/types/orientation.mjs +0 -2
  300. package/esm2022/common/lib/types/placement.mjs +0 -166
  301. package/esm2022/common/lib/types/range.mjs +0 -2
  302. package/esm2022/common/lib/types/selection-mode.mjs +0 -5
  303. package/esm2022/conversation/acorex-components-conversation.mjs +0 -5
  304. package/esm2022/conversation/index.mjs +0 -19
  305. package/esm2022/conversation/lib/classes/events.interface.mjs +0 -4
  306. package/esm2022/conversation/lib/conversation-container/conversation-container.component.mjs +0 -15
  307. package/esm2022/conversation/lib/conversation-input/conversation-input.component.mjs +0 -193
  308. package/esm2022/conversation/lib/conversation-input/conversation-input.interface.mjs +0 -2
  309. package/esm2022/conversation/lib/conversation-message/conversation-message.component.mjs +0 -110
  310. package/esm2022/conversation/lib/conversation-messages/conversation-message-audio/conversation-message-audio.component.mjs +0 -147
  311. package/esm2022/conversation/lib/conversation-messages/conversation-message-file/conversation-message-file.component.mjs +0 -79
  312. package/esm2022/conversation/lib/conversation-messages/conversation-message-image/conversation-message-image.component.mjs +0 -69
  313. package/esm2022/conversation/lib/conversation-messages/conversation-message-image-popup/conversation-message-image-popup.component.mjs +0 -24
  314. package/esm2022/conversation/lib/conversation-messages/conversation-message-text/conversation-message-text.component.mjs +0 -130
  315. package/esm2022/conversation/lib/conversation-messages/conversation-message-video/conversation-message-video.component.mjs +0 -31
  316. package/esm2022/conversation/lib/conversation-messages/conversation-message-voice/conversation-message-voice.component.mjs +0 -190
  317. package/esm2022/conversation/lib/conversation-view/conversation-view.component.mjs +0 -52
  318. package/esm2022/conversation/lib/conversation.module.mjs +0 -200
  319. package/esm2022/conversation/lib/conversation.types.mjs +0 -10
  320. package/esm2022/conversation/lib/services/conversation-message-type-registry.service.mjs +0 -20
  321. package/esm2022/conversation/lib/services/conversation.service.mjs +0 -14
  322. package/esm2022/conversation/lib/services/recording.service.mjs +0 -76
  323. package/esm2022/cron-job/acorex-components-cron-job.mjs +0 -5
  324. package/esm2022/cron-job/index.mjs +0 -9
  325. package/esm2022/cron-job/lib/cron-job-container/cron-job-container.component.mjs +0 -107
  326. package/esm2022/cron-job/lib/cron-job.module.mjs +0 -80
  327. package/esm2022/cron-job/lib/cron-job.service.mjs +0 -60
  328. package/esm2022/cron-job/lib/day/day.component.mjs +0 -66
  329. package/esm2022/cron-job/lib/day/day.model.mjs +0 -88
  330. package/esm2022/cron-job/lib/day/day.service.mjs +0 -196
  331. package/esm2022/cron-job/lib/hours/hours.component.mjs +0 -43
  332. package/esm2022/cron-job/lib/hours/hours.model.mjs +0 -8
  333. package/esm2022/cron-job/lib/hours/hours.service.mjs +0 -82
  334. package/esm2022/cron-job/lib/minutes/minutes.component.mjs +0 -43
  335. package/esm2022/cron-job/lib/minutes/minutes.model.mjs +0 -8
  336. package/esm2022/cron-job/lib/minutes/minutes.service.mjs +0 -82
  337. package/esm2022/cron-job/lib/month/month.component.mjs +0 -52
  338. package/esm2022/cron-job/lib/month/month.model.mjs +0 -8
  339. package/esm2022/cron-job/lib/month/month.service.mjs +0 -96
  340. package/esm2022/cron-job/lib/seconds/seconds.component.mjs +0 -43
  341. package/esm2022/cron-job/lib/seconds/seconds.model.mjs +0 -8
  342. package/esm2022/cron-job/lib/seconds/seconds.service.mjs +0 -82
  343. package/esm2022/cron-job/lib/types/iexpression.mjs +0 -2
  344. package/esm2022/cron-job/lib/types/shared.model.mjs +0 -49
  345. package/esm2022/cron-job/lib/year/year.component.mjs +0 -50
  346. package/esm2022/cron-job/lib/year/year.model.mjs +0 -28
  347. package/esm2022/cron-job/lib/year/year.service.mjs +0 -82
  348. package/esm2022/data-pager/acorex-components-data-pager.mjs +0 -5
  349. package/esm2022/data-pager/index.mjs +0 -10
  350. package/esm2022/data-pager/lib/data-pager-base.component.mjs +0 -52
  351. package/esm2022/data-pager/lib/data-pager-info.component.mjs +0 -50
  352. package/esm2022/data-pager/lib/data-pager-input-selector.component.mjs +0 -90
  353. package/esm2022/data-pager/lib/data-pager-next-buttons.components.mjs +0 -113
  354. package/esm2022/data-pager/lib/data-pager-numeric-selector.component.mjs +0 -166
  355. package/esm2022/data-pager/lib/data-pager-pagesize-dropdown.component.mjs +0 -105
  356. package/esm2022/data-pager/lib/data-pager-prev-buttons.component.mjs +0 -112
  357. package/esm2022/data-pager/lib/data-pager.component.mjs +0 -298
  358. package/esm2022/data-pager/lib/data-pager.module.mjs +0 -73
  359. package/esm2022/data-table/acorex-components-data-table.mjs +0 -5
  360. package/esm2022/data-table/index.mjs +0 -11
  361. package/esm2022/data-table/lib/base-data-table.class.mjs +0 -46
  362. package/esm2022/data-table/lib/columns/data-table-column-resizable.directive.mjs +0 -61
  363. package/esm2022/data-table/lib/columns/data-table-column.mjs +0 -34
  364. package/esm2022/data-table/lib/columns/data-text-column.component.mjs +0 -128
  365. package/esm2022/data-table/lib/columns/row-command-column.component.mjs +0 -343
  366. package/esm2022/data-table/lib/columns/row-index-column.component.mjs +0 -128
  367. package/esm2022/data-table/lib/columns/row-select-column.component.mjs +0 -168
  368. package/esm2022/data-table/lib/data-table/data-table.component.mjs +0 -513
  369. package/esm2022/data-table/lib/data-table.module.mjs +0 -107
  370. package/esm2022/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.mjs +0 -438
  371. package/esm2022/datetime-box/acorex-components-datetime-box.mjs +0 -5
  372. package/esm2022/datetime-box/index.mjs +0 -3
  373. package/esm2022/datetime-box/lib/datetime-box.component.mjs +0 -186
  374. package/esm2022/datetime-box/lib/datetime-box.module.mjs +0 -26
  375. package/esm2022/datetime-input/acorex-components-datetime-input.mjs +0 -5
  376. package/esm2022/datetime-input/index.mjs +0 -3
  377. package/esm2022/datetime-input/lib/datetime-input.component.mjs +0 -673
  378. package/esm2022/datetime-input/lib/datetime-input.module.mjs +0 -23
  379. package/esm2022/datetime-picker/acorex-components-datetime-picker.mjs +0 -5
  380. package/esm2022/datetime-picker/index.mjs +0 -4
  381. package/esm2022/datetime-picker/lib/datetime-picker.component.mjs +0 -389
  382. package/esm2022/datetime-picker/lib/datetime-picker.config.mjs +0 -22
  383. package/esm2022/datetime-picker/lib/datetime-picker.module.mjs +0 -44
  384. package/esm2022/decorators/acorex-components-decorators.mjs +0 -5
  385. package/esm2022/decorators/index.mjs +0 -6
  386. package/esm2022/decorators/lib/components/clear-button.component.mjs +0 -80
  387. package/esm2022/decorators/lib/components/close-button.component.mjs +0 -65
  388. package/esm2022/decorators/lib/components/generic-content.component.mjs +0 -42
  389. package/esm2022/decorators/lib/components/icon.component.mjs +0 -37
  390. package/esm2022/decorators/lib/decorators.module.mjs +0 -24
  391. package/esm2022/dialog/acorex-components-dialog.mjs +0 -5
  392. package/esm2022/dialog/index.mjs +0 -5
  393. package/esm2022/dialog/lib/dialog.class.mjs +0 -2
  394. package/esm2022/dialog/lib/dialog.component.mjs +0 -77
  395. package/esm2022/dialog/lib/dialog.module.mjs +0 -48
  396. package/esm2022/dialog/lib/dialog.service.mjs +0 -168
  397. package/esm2022/drawer/acorex-components-drawer.mjs +0 -5
  398. package/esm2022/drawer/index.mjs +0 -4
  399. package/esm2022/drawer/lib/drawer/drawer-container/drawer-container.component.mjs +0 -32
  400. package/esm2022/drawer/lib/drawer/drawer-item/drawer.component.mjs +0 -157
  401. package/esm2022/drawer/lib/drawer.module.mjs +0 -22
  402. package/esm2022/drawer/lib/drawer.service.mjs +0 -13
  403. package/esm2022/dropdown/acorex-components-dropdown.mjs +0 -5
  404. package/esm2022/dropdown/index.mjs +0 -5
  405. package/esm2022/dropdown/lib/dropdown-box.class.mjs +0 -50
  406. package/esm2022/dropdown/lib/dropdown-box.component.mjs +0 -160
  407. package/esm2022/dropdown/lib/dropdown-panel.component.mjs +0 -221
  408. package/esm2022/dropdown/lib/dropdown.module.mjs +0 -25
  409. package/esm2022/dropdown-button/acorex-components-dropdown-button.mjs +0 -5
  410. package/esm2022/dropdown-button/index.mjs +0 -3
  411. package/esm2022/dropdown-button/lib/dropdown-button.component.mjs +0 -124
  412. package/esm2022/dropdown-button/lib/dropdown-button.module.mjs +0 -26
  413. package/esm2022/form/acorex-components-form.mjs +0 -5
  414. package/esm2022/form/index.mjs +0 -7
  415. package/esm2022/form/lib/form-field.component.mjs +0 -142
  416. package/esm2022/form/lib/form.component.mjs +0 -205
  417. package/esm2022/form/lib/form.config.mjs +0 -16
  418. package/esm2022/form/lib/form.module.mjs +0 -27
  419. package/esm2022/form/lib/validation-rule.directive.mjs +0 -36
  420. package/esm2022/form/lib/validation-summary.component.mjs +0 -157
  421. package/esm2022/image/acorex-components-image.mjs +0 -5
  422. package/esm2022/image/index.mjs +0 -3
  423. package/esm2022/image/lib/image.component.mjs +0 -118
  424. package/esm2022/image/lib/image.module.mjs +0 -19
  425. package/esm2022/image-editor/acorex-components-image-editor.mjs +0 -5
  426. package/esm2022/image-editor/index.mjs +0 -8
  427. package/esm2022/image-editor/lib/image-editor-container/image-editor-container.component.mjs +0 -24
  428. package/esm2022/image-editor/lib/image-editor-toolbar/image-editor-toolbar.component.mjs +0 -69
  429. package/esm2022/image-editor/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.mjs +0 -36
  430. package/esm2022/image-editor/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.mjs +0 -37
  431. package/esm2022/image-editor/lib/image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component.mjs +0 -57
  432. package/esm2022/image-editor/lib/image-editor-view/image-editor-view.component.mjs +0 -359
  433. package/esm2022/image-editor/lib/image-editor.module.mjs +0 -72
  434. package/esm2022/image-editor/lib/image-editor.service.mjs +0 -23
  435. package/esm2022/index.mjs +0 -2
  436. package/esm2022/json-viewer/acorex-components-json-viewer.mjs +0 -5
  437. package/esm2022/json-viewer/index.mjs +0 -3
  438. package/esm2022/json-viewer/lib/json-viewer/json-viewer.component.mjs +0 -43
  439. package/esm2022/json-viewer/lib/json-viewer.module.mjs +0 -23
  440. package/esm2022/label/acorex-components-label.mjs +0 -5
  441. package/esm2022/label/index.mjs +0 -3
  442. package/esm2022/label/lib/label.component.mjs +0 -78
  443. package/esm2022/label/lib/label.module.mjs +0 -21
  444. package/esm2022/list/acorex-components-list.mjs +0 -5
  445. package/esm2022/list/index.mjs +0 -3
  446. package/esm2022/list/lib/list.component.mjs +0 -295
  447. package/esm2022/list/lib/list.module.mjs +0 -23
  448. package/esm2022/loading/acorex-components-loading.mjs +0 -5
  449. package/esm2022/loading/index.mjs +0 -7
  450. package/esm2022/loading/lib/loading-spinner.component.mjs +0 -62
  451. package/esm2022/loading/lib/loading.component.mjs +0 -80
  452. package/esm2022/loading/lib/loading.config.mjs +0 -17
  453. package/esm2022/loading/lib/loading.directive.mjs +0 -39
  454. package/esm2022/loading/lib/loading.module.mjs +0 -27
  455. package/esm2022/loading/lib/loading.service.mjs +0 -123
  456. package/esm2022/loading-dialog/acorex-components-loading-dialog.mjs +0 -5
  457. package/esm2022/loading-dialog/index.mjs +0 -5
  458. package/esm2022/loading-dialog/lib/loading-dialog.class.mjs +0 -2
  459. package/esm2022/loading-dialog/lib/loading-dialog.component.mjs +0 -98
  460. package/esm2022/loading-dialog/lib/loading-dialog.module.mjs +0 -27
  461. package/esm2022/loading-dialog/lib/loading-dialog.service.mjs +0 -37
  462. package/esm2022/map/acorex-components-map.mjs +0 -5
  463. package/esm2022/map/index.mjs +0 -3
  464. package/esm2022/map/lib/map.component.mjs +0 -182
  465. package/esm2022/map/lib/map.module.mjs +0 -18
  466. package/esm2022/media-viewer/acorex-components-media-viewer.mjs +0 -5
  467. package/esm2022/media-viewer/index.mjs +0 -12
  468. package/esm2022/media-viewer/lib/media-viewer-container/media-viewer-container.component.mjs +0 -52
  469. package/esm2022/media-viewer/lib/media-viewer-slider/media-viewer-slider.component.mjs +0 -37
  470. package/esm2022/media-viewer/lib/media-viewer-thumbnail/media-viewer-thumbnail.component.mjs +0 -24
  471. package/esm2022/media-viewer/lib/media-viewer-tools/audio-player/audio-player.component.mjs +0 -19
  472. package/esm2022/media-viewer/lib/media-viewer-tools/file-info/file-info.component.mjs +0 -21
  473. package/esm2022/media-viewer/lib/media-viewer-tools/full-screen/full-screen.component.mjs +0 -20
  474. package/esm2022/media-viewer/lib/media-viewer-tools/image-viewer/image-viewer.component.mjs +0 -15
  475. package/esm2022/media-viewer/lib/media-viewer-tools/pdf-reader/pdf-reader.component.mjs +0 -17
  476. package/esm2022/media-viewer/lib/media-viewer-tools/video-player/video-player.component.mjs +0 -19
  477. package/esm2022/media-viewer/lib/media-viewer-type-registry.service.mjs +0 -20
  478. package/esm2022/media-viewer/lib/media-viewer-types.mjs +0 -10
  479. package/esm2022/media-viewer/lib/media-viewer.module.mjs +0 -140
  480. package/esm2022/media-viewer/lib/media-viewer.service.mjs +0 -15
  481. package/esm2022/menu/acorex-components-menu.mjs +0 -5
  482. package/esm2022/menu/index.mjs +0 -7
  483. package/esm2022/menu/lib/context-menu.component.mjs +0 -251
  484. package/esm2022/menu/lib/menu-item.component.mjs +0 -310
  485. package/esm2022/menu/lib/menu.component.mjs +0 -58
  486. package/esm2022/menu/lib/menu.module.mjs +0 -28
  487. package/esm2022/menu/lib/menu.service.mjs +0 -19
  488. package/esm2022/menu/lib/menu.types.mjs +0 -14
  489. package/esm2022/nav/acorex-components-nav.mjs +0 -5
  490. package/esm2022/nav/index.mjs +0 -4
  491. package/esm2022/nav/lib/nav-item/nav-item.component.mjs +0 -63
  492. package/esm2022/nav/lib/nav.component.mjs +0 -16
  493. package/esm2022/nav/lib/nav.module.mjs +0 -23
  494. package/esm2022/navbar/acorex-components-navbar.mjs +0 -5
  495. package/esm2022/navbar/index.mjs +0 -3
  496. package/esm2022/navbar/lib/navbar.component.mjs +0 -23
  497. package/esm2022/navbar/lib/navbar.module.mjs +0 -18
  498. package/esm2022/notification/acorex-components-notification.mjs +0 -5
  499. package/esm2022/notification/index.mjs +0 -6
  500. package/esm2022/notification/lib/notification.class.mjs +0 -2
  501. package/esm2022/notification/lib/notification.component.mjs +0 -110
  502. package/esm2022/notification/lib/notification.config.mjs +0 -21
  503. package/esm2022/notification/lib/notification.module.mjs +0 -28
  504. package/esm2022/notification/lib/notification.service.mjs +0 -195
  505. package/esm2022/number-box/acorex-components-number-box.mjs +0 -5
  506. package/esm2022/number-box/index.mjs +0 -3
  507. package/esm2022/number-box/lib/number-box.component.mjs +0 -378
  508. package/esm2022/number-box/lib/number-box.module.mjs +0 -25
  509. package/esm2022/otp/acorex-components-otp.mjs +0 -5
  510. package/esm2022/otp/index.mjs +0 -4
  511. package/esm2022/otp/lib/otp.class.mjs +0 -4
  512. package/esm2022/otp/lib/otp.component.mjs +0 -195
  513. package/esm2022/otp/lib/otp.module.mjs +0 -22
  514. package/esm2022/page/acorex-components-page.mjs +0 -5
  515. package/esm2022/page/index.mjs +0 -4
  516. package/esm2022/page/lib/base-page.class.mjs +0 -62
  517. package/esm2022/page/lib/page.component.mjs +0 -58
  518. package/esm2022/page/lib/page.module.mjs +0 -18
  519. package/esm2022/paint/acorex-components-paint.mjs +0 -5
  520. package/esm2022/paint/index.mjs +0 -7
  521. package/esm2022/paint/lib/paint/paint-container/paint-container.component.mjs +0 -41
  522. package/esm2022/paint/lib/paint/paint-toolbar/paint-toolbar.component.mjs +0 -15
  523. package/esm2022/paint/lib/paint/paint-tools/paint-color-picker/paint-color-picker.component.mjs +0 -36
  524. package/esm2022/paint/lib/paint/paint-tools/paint-pen-mode-changer/paint-pen-mode-changer.component.mjs +0 -56
  525. package/esm2022/paint/lib/paint/paint-view/paint-view.component.mjs +0 -161
  526. package/esm2022/paint/lib/paint/paint.service.mjs +0 -16
  527. package/esm2022/paint/lib/paint.module.mjs +0 -62
  528. package/esm2022/password-box/acorex-components-password-box.mjs +0 -5
  529. package/esm2022/password-box/index.mjs +0 -4
  530. package/esm2022/password-box/lib/password-box.component.mjs +0 -93
  531. package/esm2022/password-box/lib/password-box.module.mjs +0 -42
  532. package/esm2022/password-box/lib/password-strength-validation/password-strength-validation.component.mjs +0 -71
  533. package/esm2022/phone-box/acorex-components-phone-box.mjs +0 -5
  534. package/esm2022/phone-box/index.mjs +0 -3
  535. package/esm2022/phone-box/lib/phone-box.component.mjs +0 -207
  536. package/esm2022/phone-box/lib/phone-box.module.mjs +0 -44
  537. package/esm2022/picker/acorex-components-picker.mjs +0 -5
  538. package/esm2022/picker/index.mjs +0 -4
  539. package/esm2022/picker/lib/picker-column.directive.mjs +0 -66
  540. package/esm2022/picker/lib/picker.component.mjs +0 -193
  541. package/esm2022/picker/lib/picker.module.mjs +0 -22
  542. package/esm2022/popover/acorex-components-popover.mjs +0 -5
  543. package/esm2022/popover/index.mjs +0 -3
  544. package/esm2022/popover/lib/popover.component.mjs +0 -525
  545. package/esm2022/popover/lib/popover.module.mjs +0 -19
  546. package/esm2022/popup/acorex-components-popup.mjs +0 -5
  547. package/esm2022/popup/index.mjs +0 -5
  548. package/esm2022/popup/lib/popup.component.mjs +0 -178
  549. package/esm2022/popup/lib/popup.interface.mjs +0 -2
  550. package/esm2022/popup/lib/popup.module.mjs +0 -45
  551. package/esm2022/popup/lib/popup.service.mjs +0 -69
  552. package/esm2022/progress-bar/acorex-components-progress-bar.mjs +0 -5
  553. package/esm2022/progress-bar/index.mjs +0 -3
  554. package/esm2022/progress-bar/lib/progress-bar.component.mjs +0 -86
  555. package/esm2022/progress-bar/lib/progress-bar.module.mjs +0 -19
  556. package/esm2022/qrcode/acorex-components-qrcode.mjs +0 -5
  557. package/esm2022/qrcode/index.mjs +0 -4
  558. package/esm2022/qrcode/lib/qrcode.class.mjs +0 -12
  559. package/esm2022/qrcode/lib/qrcode.component.mjs +0 -93
  560. package/esm2022/qrcode/lib/qrcode.module.mjs +0 -18
  561. package/esm2022/radio/acorex-components-radio.mjs +0 -5
  562. package/esm2022/radio/index.mjs +0 -3
  563. package/esm2022/radio/lib/radio.component.mjs +0 -57
  564. package/esm2022/radio/lib/radio.module.mjs +0 -22
  565. package/esm2022/range-slider/acorex-components-range-slider.mjs +0 -5
  566. package/esm2022/range-slider/index.mjs +0 -4
  567. package/esm2022/range-slider/lib/range-slider.class.mjs +0 -3
  568. package/esm2022/range-slider/lib/range-slider.component.mjs +0 -650
  569. package/esm2022/range-slider/lib/range-slider.module.mjs +0 -18
  570. package/esm2022/rate-picker/acorex-components-rate-picker.mjs +0 -5
  571. package/esm2022/rate-picker/index.mjs +0 -3
  572. package/esm2022/rate-picker/lib/calculatePercentage.mjs +0 -45
  573. package/esm2022/rate-picker/lib/rate-picker.component.mjs +0 -253
  574. package/esm2022/rate-picker/lib/rate-picker.module.mjs +0 -18
  575. package/esm2022/result/acorex-components-result.mjs +0 -5
  576. package/esm2022/result/index.mjs +0 -3
  577. package/esm2022/result/lib/result.component.mjs +0 -41
  578. package/esm2022/result/lib/result.module.mjs +0 -19
  579. package/esm2022/routing-progress/acorex-components-routing-progress.mjs +0 -5
  580. package/esm2022/routing-progress/index.mjs +0 -3
  581. package/esm2022/routing-progress/lib/routing-progress.component.mjs +0 -72
  582. package/esm2022/routing-progress/lib/routing-progress.module.mjs +0 -21
  583. package/esm2022/scheduler/acorex-components-scheduler.mjs +0 -5
  584. package/esm2022/scheduler/index.mjs +0 -5
  585. package/esm2022/scheduler/lib/scheduler-month-view.component.mjs +0 -72
  586. package/esm2022/scheduler/lib/scheduler-week-view.component.mjs +0 -16
  587. package/esm2022/scheduler/lib/scheduler.component.mjs +0 -54
  588. package/esm2022/scheduler/lib/scheduler.module.mjs +0 -27
  589. package/esm2022/scss/acorex-components-scss.mjs +0 -5
  590. package/esm2022/scss/index.mjs +0 -2
  591. package/esm2022/scss/lib/scss.module.mjs +0 -15
  592. package/esm2022/search-box/acorex-components-search-box.mjs +0 -5
  593. package/esm2022/search-box/index.mjs +0 -3
  594. package/esm2022/search-box/lib/search-box.component.mjs +0 -90
  595. package/esm2022/search-box/lib/search-box.module.mjs +0 -46
  596. package/esm2022/select-box/acorex-components-select-box.mjs +0 -5
  597. package/esm2022/select-box/index.mjs +0 -3
  598. package/esm2022/select-box/lib/select-box.component.mjs +0 -368
  599. package/esm2022/select-box/lib/select-box.module.mjs +0 -69
  600. package/esm2022/selection-list/acorex-components-selection-list.mjs +0 -5
  601. package/esm2022/selection-list/index.mjs +0 -3
  602. package/esm2022/selection-list/lib/selection-list.component.mjs +0 -173
  603. package/esm2022/selection-list/lib/selection-list.module.mjs +0 -24
  604. package/esm2022/side-menu/acorex-components-side-menu.mjs +0 -5
  605. package/esm2022/side-menu/index.mjs +0 -4
  606. package/esm2022/side-menu/lib/side-menu-item/side-menu-item.component.mjs +0 -87
  607. package/esm2022/side-menu/lib/side-menu.component.mjs +0 -16
  608. package/esm2022/side-menu/lib/side-menu.module.mjs +0 -43
  609. package/esm2022/skeleton/acorex-components-skeleton.mjs +0 -5
  610. package/esm2022/skeleton/index.mjs +0 -3
  611. package/esm2022/skeleton/lib/skeleton.component.mjs +0 -34
  612. package/esm2022/skeleton/lib/skeleton.module.mjs +0 -18
  613. package/esm2022/slider/acorex-components-slider.mjs +0 -5
  614. package/esm2022/slider/index.mjs +0 -3
  615. package/esm2022/slider/lib/slider.component.mjs +0 -163
  616. package/esm2022/slider/lib/slider.module.mjs +0 -23
  617. package/esm2022/step-wizard/acorex-components-step-wizard.mjs +0 -5
  618. package/esm2022/step-wizard/index.mjs +0 -6
  619. package/esm2022/step-wizard/lib/step-wizard-item/step-wizard-item.component.mjs +0 -70
  620. package/esm2022/step-wizard/lib/step-wizard.class.mjs +0 -2
  621. package/esm2022/step-wizard/lib/step-wizard.component.mjs +0 -151
  622. package/esm2022/step-wizard/lib/step-wizard.directive.mjs +0 -28
  623. package/esm2022/step-wizard/lib/step-wizard.module.mjs +0 -25
  624. package/esm2022/switch/acorex-components-switch.mjs +0 -5
  625. package/esm2022/switch/index.mjs +0 -4
  626. package/esm2022/switch/lib/switch-content.component.mjs +0 -19
  627. package/esm2022/switch/lib/switch.component.mjs +0 -54
  628. package/esm2022/switch/lib/switch.module.mjs +0 -21
  629. package/esm2022/tabs/acorex-components-tabs.mjs +0 -5
  630. package/esm2022/tabs/index.mjs +0 -6
  631. package/esm2022/tabs/lib/tab-content.directive.mjs +0 -28
  632. package/esm2022/tabs/lib/tab-item.component.mjs +0 -149
  633. package/esm2022/tabs/lib/tabs.class.mjs +0 -4
  634. package/esm2022/tabs/lib/tabs.component.mjs +0 -183
  635. package/esm2022/tabs/lib/tabs.module.mjs +0 -25
  636. package/esm2022/tag/acorex-components-tag.mjs +0 -5
  637. package/esm2022/tag/index.mjs +0 -3
  638. package/esm2022/tag/lib/tag.component.mjs +0 -25
  639. package/esm2022/tag/lib/tag.module.mjs +0 -19
  640. package/esm2022/text-area/acorex-components-text-area.mjs +0 -5
  641. package/esm2022/text-area/index.mjs +0 -3
  642. package/esm2022/text-area/lib/text-area.component.mjs +0 -76
  643. package/esm2022/text-area/lib/text-area.module.mjs +0 -19
  644. package/esm2022/text-box/acorex-components-text-box.mjs +0 -5
  645. package/esm2022/text-box/index.mjs +0 -4
  646. package/esm2022/text-box/lib/mask-options.directive.mjs +0 -29
  647. package/esm2022/text-box/lib/text-box.component.mjs +0 -153
  648. package/esm2022/text-box/lib/text-box.module.mjs +0 -24
  649. package/esm2022/time-line/acorex-components-time-line.mjs +0 -5
  650. package/esm2022/time-line/index.mjs +0 -4
  651. package/esm2022/time-line/lib/time-line-item.component.mjs +0 -47
  652. package/esm2022/time-line/lib/time-line.component.mjs +0 -28
  653. package/esm2022/time-line/lib/time-line.module.mjs +0 -19
  654. package/esm2022/toast/acorex-components-toast.mjs +0 -5
  655. package/esm2022/toast/index.mjs +0 -6
  656. package/esm2022/toast/lib/toast.class.mjs +0 -2
  657. package/esm2022/toast/lib/toast.component.mjs +0 -86
  658. package/esm2022/toast/lib/toast.config.mjs +0 -26
  659. package/esm2022/toast/lib/toast.module.mjs +0 -27
  660. package/esm2022/toast/lib/toast.service.mjs +0 -235
  661. package/esm2022/tooltip/acorex-components-tooltip.mjs +0 -5
  662. package/esm2022/tooltip/index.mjs +0 -4
  663. package/esm2022/tooltip/lib/tooltip.component.mjs +0 -20
  664. package/esm2022/tooltip/lib/tooltip.directive.mjs +0 -80
  665. package/esm2022/tooltip/lib/tooltip.module.mjs +0 -22
  666. package/esm2022/tree-view/acorex-components-tree-view.mjs +0 -5
  667. package/esm2022/tree-view/index.mjs +0 -4
  668. package/esm2022/tree-view/lib/tree-view-item.component.mjs +0 -86
  669. package/esm2022/tree-view/lib/tree-view.class.mjs +0 -4
  670. package/esm2022/tree-view/lib/tree-view.component.mjs +0 -338
  671. package/esm2022/tree-view/lib/tree-view.component.module.mjs +0 -50
  672. package/esm2022/uploader/acorex-components-uploader.mjs +0 -5
  673. package/esm2022/uploader/index.mjs +0 -9
  674. package/esm2022/uploader/lib/uploader-browse-handle.directive.mjs +0 -27
  675. package/esm2022/uploader/lib/uploader-dialog-container/uploader-dialog-container.component.mjs +0 -55
  676. package/esm2022/uploader/lib/uploader-drop-zone/uploader-drop-zone.component.mjs +0 -27
  677. package/esm2022/uploader/lib/uploader-list/uploader-list.component.mjs +0 -24
  678. package/esm2022/uploader/lib/uploader-zone.directive.mjs +0 -121
  679. package/esm2022/uploader/lib/uploader.models.mjs +0 -100
  680. package/esm2022/uploader/lib/uploader.module.mjs +0 -76
  681. package/esm2022/uploader/lib/uploader.service.mjs +0 -125
  682. package/esm2022/wysiwyg/acorex-components-wysiwyg.mjs +0 -5
  683. package/esm2022/wysiwyg/index.mjs +0 -11
  684. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.mjs +0 -137
  685. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-toolbar/wysiwyg-toolbar.component.mjs +0 -21
  686. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component.mjs +0 -56
  687. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component.mjs +0 -76
  688. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component.mjs +0 -129
  689. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-history/wysiwyg-history.component.mjs +0 -30
  690. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component.mjs +0 -43
  691. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-tools/wysiwyg-list/wysiwyg-list.component.mjs +0 -64
  692. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-view/wysiwyg-view.component.mjs +0 -49
  693. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg.service.mjs +0 -17
  694. package/esm2022/wysiwyg/lib/wysiwyg.module.mjs +0 -75
@@ -1,673 +0,0 @@
1
- import { AXClearableComponent, AXComponent, AXFocusableComponent, AXValuableComponent, MXInputBaseValueComponent, } from '@acorex/components/common';
2
- import { AXCalendarService, } from '@acorex/core/date-time';
3
- import { AXPlatform } from '@acorex/core/platform';
4
- import { AXStringUtil } from '@acorex/core/utils';
5
- import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, ViewEncapsulation, forwardRef, inject, input, signal, } from '@angular/core';
6
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
7
- import { map } from 'rxjs';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/forms";
10
- /**
11
- * A component for date and time input with various custom features.
12
- *
13
- * @category Components
14
- */
15
- export class AXDateTimeInputComponent extends MXInputBaseValueComponent {
16
- constructor() {
17
- super(...arguments);
18
- this.calendarService = inject(AXCalendarService);
19
- this.platformService = inject(AXPlatform);
20
- /**
21
- * @ignore
22
- */
23
- this._editingParts = {
24
- year: {
25
- key: 'year',
26
- placeholder: 'yyyy',
27
- placeholders: ['YY', 'yy', 'YYYY', 'yyyy'],
28
- enabled: false,
29
- default: 2023,
30
- typedValue: null,
31
- realValue: () => this.editingDateObj.format(this._editingParts.year.placeholder),
32
- },
33
- month: {
34
- key: 'month',
35
- placeholder: 'MM',
36
- placeholders: ['MMM', 'MMMM', 'MM', 'M'],
37
- enabled: false,
38
- default: 1,
39
- typedValue: null,
40
- realValue: () => this.editingDateObj.format(this._editingParts.month.placeholder),
41
- },
42
- day: {
43
- key: 'day',
44
- placeholder: 'dd',
45
- placeholders: ['dd', 'd', 'DDDD', 'DDD'],
46
- enabled: false,
47
- default: 1,
48
- typedValue: null,
49
- realValue: () => this.editingDateObj.format(this._editingParts.day.placeholder),
50
- },
51
- hour: {
52
- key: 'hour',
53
- placeholder: 'HH',
54
- placeholders: ['HH', 'H', 'hh', 'h'],
55
- enabled: false,
56
- default: 0,
57
- typedValue: null,
58
- realValue: () => this.editingDateObj.format(this._editingParts.hour.placeholder),
59
- },
60
- minute: {
61
- key: 'minute',
62
- placeholder: 'mm',
63
- placeholders: ['mm', 'm'],
64
- enabled: false,
65
- default: 0,
66
- typedValue: null,
67
- realValue: () => this.editingDateObj.format(this._editingParts.minute.placeholder),
68
- },
69
- second: {
70
- key: 'second',
71
- placeholder: 'ss',
72
- placeholders: ['ss', 's'],
73
- enabled: false,
74
- default: 0,
75
- typedValue: null,
76
- realValue: () => this.editingDateObj.format(this._editingParts.second.placeholder),
77
- },
78
- };
79
- /**
80
- * @ignore
81
- */
82
- this._inputChars = [];
83
- /**
84
- * @ignore
85
- */
86
- this._type = this.calendarService.calendar.name();
87
- /**
88
- * Indicates whether typing is allowed in the input field.
89
- * @defaultValue false
90
- */
91
- this.allowTyping = input(false);
92
- /**
93
- * @ignore
94
- */
95
- this._activePart = 'hour';
96
- /**
97
- * @ignore
98
- */
99
- this._editingDateObj = this.calendarService.now(this.type);
100
- /**
101
- * Emitted when the format of the datetime input changes.
102
- * @event
103
- */
104
- this.formatChange = new EventEmitter();
105
- /**
106
- * Emitted when a click event occurs on the datetime box.
107
- * @event
108
- */
109
- this.onClick = new EventEmitter();
110
- /**
111
- * @ignore
112
- */
113
- this._format = this.calendarService.calendar.formats.dateTimeInput;
114
- /**
115
- * @description check if page is in rtl or ltr
116
- */
117
- this.isRtl = signal(this.platformService.isRtl());
118
- }
119
- /**
120
- * Gets the type of the datetime input.
121
- */
122
- get type() {
123
- return this._type || this.calendarService.calendar.name();
124
- }
125
- /**
126
- * Sets the type of the datetime input.
127
- *
128
- * @param v The new type to set for the datetime input.
129
- */
130
- set type(v) {
131
- this.setOption({
132
- name: 'type',
133
- value: v,
134
- afterCallback: () => {
135
- this.cdr.markForCheck();
136
- },
137
- });
138
- }
139
- /**
140
- * Gets the currently active part of the datetime input.
141
- */
142
- get activePart() {
143
- return this._activePart;
144
- }
145
- /**
146
- * Sets the currently active part of the datetime input.
147
- *
148
- * @param v The new name or identifier of the active part.
149
- */
150
- set activePart(v) {
151
- this._activePart = v;
152
- this._clearInputBuffer();
153
- }
154
- /**
155
- * @ignore
156
- */
157
- get editingDateObj() {
158
- return this._editingDateObj;
159
- }
160
- /**
161
- * Gets the minimum allowed date value for the datetime input.
162
- */
163
- get minValue() {
164
- return this._minValue;
165
- }
166
- /**
167
- * Sets the minimum allowable date value for the datetime input.
168
- *
169
- * @param v The minimum allowable date value to set.
170
- */
171
- set minValue(v) {
172
- this._minValue = v;
173
- }
174
- /**
175
- * Gets the maximum allowed date value for the datetime input.
176
- */
177
- get maxValue() {
178
- return this._maxValue;
179
- }
180
- /**
181
- * Sets the maximum allowable date value for the datetime input.
182
- *
183
- * @param v - The maximum allowable date value to set.
184
- */
185
- set maxValue(v) {
186
- this._maxValue = v;
187
- }
188
- /**
189
- * Gets or sets the format string for displaying date and time values.
190
- */
191
- get format() {
192
- return this._format;
193
- }
194
- /**
195
- * Sets the format string for displaying date and time values.
196
- * @param v - The new format string. It defines how date and time values should be formatted.
197
- */
198
- set format(v) {
199
- this.setOption({
200
- name: 'format',
201
- value: v,
202
- afterCallback: (o, n) => {
203
- Object.values(this._editingParts).forEach((e) => {
204
- e.enabled = false;
205
- });
206
- const formatParts = n.split(/[^a-zA-Z]+/);
207
- formatParts.forEach((f) => {
208
- const found = Object.values(this._editingParts).find((c) => c.placeholders.some((d) => d == f));
209
- if (found) {
210
- found.enabled = true;
211
- found.placeholder = f;
212
- }
213
- });
214
- },
215
- });
216
- }
217
- /**
218
- * @description listen to direction change to react to it.
219
- */
220
- ngOnInit() {
221
- this.platformService.directionChange
222
- .pipe(map((i) => i.data === 'rtl'))
223
- .subscribe((isRtl) => this.isRtl.set(isRtl));
224
- }
225
- /**
226
- * @ignore
227
- */
228
- _getOrderedParts() {
229
- // TODO: better spliter format
230
- const formatParts = this.format.split(/[^a-zA-Z]+/);
231
- const result = [];
232
- formatParts.forEach((f) => {
233
- const found = Object.values(this._editingParts).find((c) => c.placeholders.some((d) => d == f));
234
- if (found && found.enabled)
235
- result.push(found);
236
- });
237
- return result;
238
- }
239
- /**
240
- * @ignore
241
- */
242
- _clearInputBuffer() {
243
- this._inputChars = [];
244
- }
245
- /**
246
- * @ignore
247
- */
248
- _updateText() {
249
- let text = this.format;
250
- //
251
- Object.values(this._editingParts).forEach((part) => {
252
- if (this.activePart == part.key) {
253
- if (part.typedValue)
254
- text = text.replace(part.placeholder, part.typedValue);
255
- }
256
- else {
257
- if (part.typedValue != part.placeholder && part.typedValue != null) {
258
- text = text.replace(part.placeholder, part.realValue());
259
- }
260
- }
261
- });
262
- this._editingText = text == this.format ? '' : text;
263
- if (this.activePart) {
264
- this._highlightActivePart();
265
- }
266
- }
267
- /**
268
- * Sets the internal date value, adjusting it based on editing parts.
269
- * @param value - The date to set. Returns `undefined` if no value is provided.
270
- * @ignore
271
- */
272
- internalSetValue(value) {
273
- if (value) {
274
- let editingDate = this.calendarService.create(value, this.type);
275
- let applyChanges = false;
276
- Object.values(this._editingParts).forEach((part) => {
277
- if (!part.enabled) {
278
- editingDate = editingDate.set(part.key, part.default);
279
- applyChanges = true;
280
- }
281
- });
282
- if (applyChanges) {
283
- return editingDate.date;
284
- }
285
- }
286
- return value;
287
- }
288
- /**
289
- * Handles changes to the internal date value, updating editing parts and text representation.
290
- *
291
- * @param value - The new date value. If not provided, resets editing parts.
292
- * @ignore
293
- */
294
- internalValueChanged(value) {
295
- if (value) {
296
- this._editingDateObj = this.calendarService.create(value, this.type);
297
- }
298
- Object.values(this._editingParts).forEach((part) => {
299
- if (value) {
300
- if (part.typedValue != part.placeholder)
301
- part.typedValue = part.realValue();
302
- }
303
- else
304
- part.typedValue = null;
305
- });
306
- this._updateText();
307
- }
308
- /**
309
- * @ignore
310
- */
311
- _handleOnKeydownEvent(e) {
312
- const ignore = () => {
313
- e.preventDefault();
314
- e.stopPropagation();
315
- };
316
- if (!this.allowTyping()) {
317
- ignore();
318
- return;
319
- }
320
- const input = e.target;
321
- //
322
- const orderedParts = this._getOrderedParts();
323
- const part = this.activePart ? this._editingParts[this.activePart] : orderedParts[0];
324
- const nextPart = part ? orderedParts[orderedParts.indexOf(part) + 1] : null;
325
- const prevPart = part ? orderedParts[orderedParts.indexOf(part) - 1] : null;
326
- //
327
- const goNext = () => {
328
- this._clearInputBuffer();
329
- if (nextPart) {
330
- this.activePart = nextPart.key;
331
- this._highlightActivePart();
332
- }
333
- };
334
- const goPrev = () => {
335
- this._clearInputBuffer();
336
- if (prevPart) {
337
- this.activePart = prevPart.key;
338
- this._highlightActivePart();
339
- }
340
- };
341
- /*************** Handle Left and Right **************/
342
- if (e.code === 'ArrowRight' || e.code === 'ArrowLeft') {
343
- ignore();
344
- e.code === 'ArrowRight' ? goNext() : goPrev();
345
- }
346
- else if ((e.code === 'ArrowUp' || e.code === 'ArrowDown') && !e.ctrlKey) {
347
- /*************** Handle Up and Down **************/
348
- if (this.disabled || this.readonly) {
349
- ignore();
350
- return;
351
- }
352
- else {
353
- ignore();
354
- const sign = e.code === 'ArrowUp' ? +1 : -1;
355
- this.activePart = part.key;
356
- let newVal = this.editingDateObj.add(part.key, sign);
357
- this._editingParts[part.key].typedValue = newVal.format(this._editingParts[part.key].placeholder);
358
- this._editingDateObj = newVal;
359
- this._detectValueChanges();
360
- }
361
- }
362
- else if (e.code == 'Backspace' || e.code == 'Delete') {
363
- /*************** Handle Backspace **************/
364
- if (this.disabled || this.readonly) {
365
- return;
366
- }
367
- if (input.value) {
368
- ignore();
369
- this._editingParts[part.key].typedValue = this._editingParts[part.key].placeholder;
370
- this._detectValueChanges();
371
- goPrev();
372
- }
373
- }
374
- else if (e.code == 'Tab' || e.code == 'Space') {
375
- /*************** Handle Backspace **************/
376
- if (input.value) {
377
- if (!e.shiftKey && nextPart) {
378
- ignore();
379
- goNext();
380
- }
381
- else if (e.shiftKey && prevPart) {
382
- ignore();
383
- goPrev();
384
- }
385
- }
386
- // TODO: FiX type in input
387
- }
388
- else if (e.key?.trim() && !isNaN(Number(e.key))) {
389
- ignore();
390
- return;
391
- if (this.disabled || this.readonly) {
392
- return;
393
- }
394
- let next = false;
395
- const editing = this._editingParts[part.key];
396
- //
397
- switch (part.key) {
398
- case 'year': {
399
- if (editing.placeholder.length == 2 && this._inputChars.length == 0) {
400
- this._inputChars.push(...this.calendarService.now(this.type).format('yyyy').substring(0, 2).split(''));
401
- }
402
- if (this._inputChars.length < 4) {
403
- editing.typedValue = `${this._inputChars.join('')}${e.key}`;
404
- this._inputChars.push(e.key);
405
- if (this._inputChars.length > 3) {
406
- next = true;
407
- }
408
- }
409
- else {
410
- next = true;
411
- }
412
- editing.typedValue = ('0000' + editing.typedValue).slice(-4);
413
- const nv = parseInt(editing.typedValue);
414
- //if (nv > 0) {
415
- const newVal = this.editingDateObj.set('year', nv);
416
- this._editingDateObj = newVal;
417
- this._detectValueChanges();
418
- //}
419
- break;
420
- }
421
- case 'month': {
422
- if (this._inputChars.length == 0) {
423
- this._inputChars.push(e.key);
424
- editing.typedValue = `0${e.key}`;
425
- if (parseInt(e.key) > 1) {
426
- this._clearInputBuffer();
427
- next = true;
428
- }
429
- }
430
- else if (this._inputChars.length == 1) {
431
- const newStr = parseInt(`${this._inputChars[0]}${e.key}`);
432
- if (newStr > 12) {
433
- editing.typedValue = `0${e.key}`;
434
- }
435
- else {
436
- editing.typedValue = newStr.toString();
437
- }
438
- this._clearInputBuffer();
439
- next = true;
440
- }
441
- editing.typedValue =
442
- editing.typedValue?.length === 1 ? '0' + editing.typedValue : editing.typedValue;
443
- const nv = parseInt(editing.typedValue);
444
- if (nv > 0) {
445
- const newVal = this.editingDateObj.set(part.key, nv);
446
- this._editingDateObj = newVal;
447
- this._detectValueChanges();
448
- }
449
- break;
450
- }
451
- case 'day': {
452
- if (this._inputChars.length == 0) {
453
- this._inputChars.push(e.key);
454
- editing.typedValue = `0${e.key}`;
455
- if (parseInt(e.key) > 3) {
456
- this._clearInputBuffer();
457
- next = true;
458
- }
459
- }
460
- else if (this._inputChars.length == 1) {
461
- const newStr = parseInt(`${this._inputChars[0]}${e.key}`);
462
- if (newStr > this._editingDateObj.month.totalDays) {
463
- editing.typedValue = `0${e.key}`;
464
- }
465
- else {
466
- editing.typedValue = newStr.toString();
467
- }
468
- this._clearInputBuffer();
469
- next = true;
470
- }
471
- editing.typedValue =
472
- editing.typedValue?.length === 1 ? '0' + editing.typedValue : editing.typedValue;
473
- const nv = parseInt(editing.typedValue);
474
- if (nv > 0) {
475
- const newVal = this.editingDateObj.set(part.key, nv);
476
- this._editingDateObj = newVal;
477
- this._detectValueChanges();
478
- }
479
- break;
480
- }
481
- case 'hour': {
482
- if (this._inputChars.length == 0) {
483
- this._inputChars.push(e.key);
484
- editing.typedValue = `0${e.key}`;
485
- if (parseInt(e.key) > 2) {
486
- next = true;
487
- }
488
- }
489
- else if (this._inputChars.length == 1) {
490
- const newStr = parseInt(`${this._inputChars[0]}${e.key}`);
491
- if (newStr > 23) {
492
- editing.typedValue = `0${e.key}`;
493
- }
494
- else {
495
- editing.typedValue = newStr.toString();
496
- }
497
- next = true;
498
- }
499
- editing.typedValue =
500
- editing.typedValue?.length === 1 ? '0' + editing.typedValue : editing.typedValue;
501
- const newVal = this.editingDateObj.set('hour', parseInt(editing.typedValue));
502
- this._editingDateObj = newVal;
503
- this._detectValueChanges();
504
- break;
505
- }
506
- case 'minute':
507
- case 'second':
508
- if (this._inputChars.length == 0) {
509
- this._inputChars.push(e.key);
510
- editing.typedValue = `0${e.key}`;
511
- if (parseInt(e.key) > 5) {
512
- this._clearInputBuffer();
513
- next = true;
514
- }
515
- }
516
- else if (this._inputChars.length == 1) {
517
- const newStr = parseInt(`${this._inputChars[0]}${e.key}`);
518
- if (newStr > 59) {
519
- editing.typedValue = `0${e.key}`;
520
- }
521
- else {
522
- editing.typedValue = newStr.toString();
523
- }
524
- this._clearInputBuffer();
525
- next = true;
526
- }
527
- editing.typedValue =
528
- editing.typedValue?.length === 1 ? '0' + editing.typedValue : editing.typedValue;
529
- const newVal = this.editingDateObj.set(part.key, parseInt(editing.typedValue));
530
- this._editingDateObj = newVal;
531
- this._detectValueChanges();
532
- break;
533
- default:
534
- }
535
- if (next) {
536
- goNext();
537
- return;
538
- }
539
- }
540
- /*************** Emit Event **************/
541
- super.emitOnKeydownEvent(e);
542
- }
543
- /**
544
- * @ignore
545
- */
546
- _handleKeyUpEvent(e) {
547
- if (this.activePart) {
548
- this._highlightActivePart();
549
- }
550
- }
551
- /**
552
- * @ignore
553
- */
554
- _handleFocusEvent(e) {
555
- //this._highlightActivePart();
556
- super.emitOnFocusEvent(e);
557
- }
558
- /**
559
- * @ignore
560
- */
561
- _handleBlurEvent(e) {
562
- super.emitOnBlurEvent(e);
563
- }
564
- /**
565
- * @ignore
566
- */
567
- _handleOnInputClickEvent(e) {
568
- if (this.allowTyping()) {
569
- setTimeout(() => {
570
- this._detectPartAtPosition();
571
- }, 0);
572
- }
573
- this.onClick.emit({
574
- component: this,
575
- htmlElement: this.getHostElement(),
576
- nativeEvent: e,
577
- });
578
- }
579
- /**
580
- * @ignore
581
- */
582
- _detectPartAtPosition() {
583
- const input = this.input.nativeElement;
584
- if (!input.value)
585
- return;
586
- const sStart = input.selectionEnd || 0;
587
- const re = /[a-zA-Z0-9]+/gi;
588
- const valueParts = Array.from(input.value.matchAll(re));
589
- const orderedParts = this._getOrderedParts();
590
- const index = valueParts.findIndex((c) => c.index <= sStart && c.index + c[0].length >= sStart);
591
- this.activePart = orderedParts[index].key;
592
- this._highlightActivePart();
593
- }
594
- /**
595
- * @ignore
596
- */
597
- _highlightActivePart() {
598
- const input = this.input?.nativeElement;
599
- if (!input || !input.value || !this.activePart)
600
- return;
601
- const orderedParts = this._getOrderedParts();
602
- const index = orderedParts.findIndex((c) => c.key == this.activePart);
603
- const re = /[a-zA-Z0-9]+/gi;
604
- const valueParts = Array.from(input.value.matchAll(re));
605
- const { start, end } = AXStringUtil.getWordBoundsAtPosition(input.value, valueParts[index]?.index);
606
- if (input && typeof input.setSelectionRange === 'function') {
607
- input.setSelectionRange(start, end);
608
- }
609
- }
610
- /**
611
- * @ignore
612
- */
613
- _detectValueChanges() {
614
- this.commitValue(this._editingDateObj.date, true);
615
- }
616
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXDateTimeInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
617
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: AXDateTimeInputComponent, selector: "ax-datetime-input", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, allowTyping: { classPropertyName: "allowTyping", publicName: "allowTyping", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, minValue: { classPropertyName: "minValue", publicName: "minValue", isSignal: false, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: "maxValue", publicName: "maxValue", isSignal: false, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", stateChange: "stateChange", onValueChanged: "onValueChanged", onBlur: "onBlur", onFocus: "onFocus", onClick: "onClick", readonlyChange: "readonlyChange", disabledChange: "disabledChange", formatChange: "formatChange" }, host: { listeners: { "keydown": "_handleOnKeydownEvent($event)", "keyup": "_handleKeyUpEvent($event)" }, classAttribute: "ax-editor-input" }, providers: [
618
- { provide: AXComponent, useExisting: AXDateTimeInputComponent },
619
- { provide: AXFocusableComponent, useExisting: AXDateTimeInputComponent },
620
- { provide: AXValuableComponent, useExisting: AXDateTimeInputComponent },
621
- { provide: AXClearableComponent, useExisting: AXDateTimeInputComponent },
622
- {
623
- provide: NG_VALUE_ACCESSOR,
624
- useExisting: forwardRef(() => AXDateTimeInputComponent),
625
- multi: true,
626
- },
627
- ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<input\n #input\n id=\"input\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n class=\"ax-input\"\n type=\"text\"\n [attr.placeholder]=\"placeholder\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-select-none]=\"!allowTyping()\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"true\"\n [ngModel]=\"_editingText\"\n (mouseup)=\"_handleOnInputClickEvent($event)\"\n (blur)=\"_handleBlurEvent($event)\"\n (focus)=\"_handleFocusEvent($event)\"\n style=\"display: flex\"\n [style.justify-items]=\"isRtl() ? 'end' : 'start'\"\n/>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
628
- }
629
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXDateTimeInputComponent, decorators: [{
630
- type: Component,
631
- args: [{ selector: 'ax-datetime-input', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, inputs: ['disabled', 'readonly', 'tabIndex', 'placeholder', 'value', 'state', 'name', 'id'], host: { class: 'ax-editor-input' }, outputs: [
632
- 'valueChange',
633
- 'stateChange',
634
- 'onValueChanged',
635
- 'onBlur',
636
- 'onFocus',
637
- 'onClick',
638
- 'readonlyChange',
639
- 'disabledChange',
640
- ], providers: [
641
- { provide: AXComponent, useExisting: AXDateTimeInputComponent },
642
- { provide: AXFocusableComponent, useExisting: AXDateTimeInputComponent },
643
- { provide: AXValuableComponent, useExisting: AXDateTimeInputComponent },
644
- { provide: AXClearableComponent, useExisting: AXDateTimeInputComponent },
645
- {
646
- provide: NG_VALUE_ACCESSOR,
647
- useExisting: forwardRef(() => AXDateTimeInputComponent),
648
- multi: true,
649
- },
650
- ], template: "<input\n #input\n id=\"input\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n class=\"ax-input\"\n type=\"text\"\n [attr.placeholder]=\"placeholder\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-select-none]=\"!allowTyping()\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"true\"\n [ngModel]=\"_editingText\"\n (mouseup)=\"_handleOnInputClickEvent($event)\"\n (blur)=\"_handleBlurEvent($event)\"\n (focus)=\"_handleFocusEvent($event)\"\n style=\"display: flex\"\n [style.justify-items]=\"isRtl() ? 'end' : 'start'\"\n/>\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n" }]
651
- }], propDecorators: { type: [{
652
- type: Input
653
- }], input: [{
654
- type: ViewChild,
655
- args: ['input']
656
- }], minValue: [{
657
- type: Input
658
- }], maxValue: [{
659
- type: Input
660
- }], formatChange: [{
661
- type: Output
662
- }], onClick: [{
663
- type: Output
664
- }], format: [{
665
- type: Input
666
- }], _handleOnKeydownEvent: [{
667
- type: HostListener,
668
- args: ['keydown', ['$event']]
669
- }], _handleKeyUpEvent: [{
670
- type: HostListener,
671
- args: ['keyup', ['$event']]
672
- }] } });
673
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lLWlucHV0L3NyYy9saWIvZGF0ZXRpbWUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lLWlucHV0L3NyYy9saWIvZGF0ZXRpbWUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUVwQixXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQix5QkFBeUIsR0FDMUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsaUJBQWlCLEdBS2xCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUUzQjs7OztHQUlHO0FBOEJILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx5QkFBK0I7SUE3QjdFOztRQThCVSxvQkFBZSxHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvRCxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FB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QUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUNyRixFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxXQUN6Qjt3QkFDUCxhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxnQkFBZ0I7d0JBQ2hCLGdCQUFnQjtxQkFDakIsYUFDVTt3QkFDVCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVywwQkFBMEIsRUFBRTt3QkFDL0QsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVywwQkFBMEIsRUFBRTt3QkFDeEUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVywwQkFBMEIsRUFBRTt3QkFDdkUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVywwQkFBMEIsRUFBRTt3QkFDeEU7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQTJGVSxJQUFJO3NCQURkLEtBQUs7Z0JBMEROLEtBQUs7c0JBREosU0FBUzt1QkFBQyxPQUFPO2dCQVlQLFFBQVE7c0JBRGxCLEtBQUs7Z0JBdUJLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBa0JOLFlBQVk7c0JBRFgsTUFBTTtnQkFRUCxPQUFPO3NCQUROLE1BQU07Z0JBWUksTUFBTTtzQkFEaEIsS0FBSztnQkErSE4scUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFtT25DLGlCQUFpQjtzQkFEaEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENsZWFyYWJsZUNvbXBvbmVudCxcbiAgQVhDbGlja0V2ZW50LFxuICBBWENvbXBvbmVudCxcbiAgQVhGb2N1c2FibGVDb21wb25lbnQsXG4gIEFYVmFsdWFibGVDb21wb25lbnQsXG4gIE1YSW5wdXRCYXNlVmFsdWVDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHtcbiAgQVhDYWxlbmRhclNlcnZpY2UsXG4gIEFYRGF0ZVRpbWUsXG4gIEFYRGF0ZVRpbWVQYXJ0LFxuICBBWERhdGVUaW1lUGFydHMsXG4gIFRpbWVVbml0LFxufSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQVhTdHJpbmdVdGlsIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCBmb3IgZGF0ZSBhbmQgdGltZSBpbnB1dCB3aXRoIHZhcmlvdXMgY3VzdG9tIGZlYXR1cmVzLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRhdGV0aW1lLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGV0aW1lLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdyZWFkb25seScsICd0YWJJbmRleCcsICdwbGFjZWhvbGRlcicsICd2YWx1ZScsICdzdGF0ZScsICduYW1lJywgJ2lkJ10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdheC1lZGl0b3ItaW5wdXQnIH0sXG4gIG91dHB1dHM6IFtcbiAgICAndmFsdWVDaGFuZ2UnLFxuICAgICdzdGF0ZUNoYW5nZScsXG4gICAgJ29uVmFsdWVDaGFuZ2VkJyxcbiAgICAnb25CbHVyJyxcbiAgICAnb25Gb2N1cycsXG4gICAgJ29uQ2xpY2snLFxuICAgICdyZWFkb25seUNoYW5nZScsXG4gICAgJ2Rpc2FibGVkQ2hhbmdlJyxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYRGF0ZVRpbWVJbnB1dENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhGb2N1c2FibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWERhdGVUaW1lSW5wdXRDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWERhdGVUaW1lSW5wdXRDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYQ2xlYXJhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhEYXRlVGltZUlucHV0Q29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBWERhdGVUaW1lSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZUlucHV0Q29tcG9uZW50IGV4dGVuZHMgTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudDxEYXRlPiB7XG4gIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlOiBBWENhbGVuZGFyU2VydmljZSA9IGluamVjdChBWENhbGVuZGFyU2VydmljZSk7XG4gIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlID0gaW5qZWN0KEFYUGxhdGZvcm0pO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfZWRpdGluZ1BhcnRzOiBBWERhdGVUaW1lUGFydHMgPSB7XG4gICAgeWVhcjoge1xuICAgICAga2V5OiAneWVhcicsXG4gICAgICBwbGFjZWhvbGRlcjogJ3l5eXknLFxuICAgICAgcGxhY2Vob2xkZXJzOiBbJ1lZJywgJ3l5JywgJ1lZWVknLCAneXl5eSddLFxuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiAyMDIzLFxuICAgICAgdHlwZWRWYWx1ZTogbnVsbCxcbiAgICAgIHJlYWxWYWx1ZTogKCkgPT4gdGhpcy5lZGl0aW5nRGF0ZU9iai5mb3JtYXQodGhpcy5fZWRpdGluZ1BhcnRzLnllYXIucGxhY2Vob2xkZXIpLFxuICAgIH0sXG4gICAgbW9udGg6IHtcbiAgICAgIGtleTogJ21vbnRoJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnTU0nLFxuICAgICAgcGxhY2Vob2xkZXJzOiBbJ01NTScsICdNTU1NJywgJ01NJywgJ00nXSxcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMSxcbiAgICAgIHR5cGVkVmFsdWU6IG51bGwsXG4gICAgICByZWFsVmFsdWU6ICgpID0+IHRoaXMuZWRpdGluZ0RhdGVPYmouZm9ybWF0KHRoaXMuX2VkaXRpbmdQYXJ0cy5tb250aC5wbGFjZWhvbGRlciksXG4gICAgfSxcbiAgICBkYXk6IHtcbiAgICAgIGtleTogJ2RheScsXG4gICAgICBwbGFjZWhvbGRlcjogJ2RkJyxcbiAgICAgIHBsYWNlaG9sZGVyczogWydkZCcsICdkJywgJ0REREQnLCAnREREJ10sXG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDEsXG4gICAgICB0eXBlZFZhbHVlOiBudWxsLFxuICAgICAgcmVhbFZhbHVlOiAoKSA9PiB0aGlzLmVkaXRpbmdEYXRlT2JqLmZvcm1hdCh0aGlzLl9lZGl0aW5nUGFydHMuZGF5LnBsYWNlaG9sZGVyKSxcbiAgICB9LFxuICAgIGhvdXI6IHtcbiAgICAgIGtleTogJ2hvdXInLFxuICAgICAgcGxhY2Vob2xkZXI6ICdISCcsXG4gICAgICBwbGFjZWhvbGRlcnM6IFsnSEgnLCAnSCcsICdoaCcsICdoJ10sXG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICB0eXBlZFZhbHVlOiBudWxsLFxuICAgICAgcmVhbFZhbHVlOiAoKSA9PiB0aGlzLmVkaXRpbmdEYXRlT2JqLmZvcm1hdCh0aGlzLl9lZGl0aW5nUGFydHMuaG91ci5wbGFjZWhvbGRlciksXG4gICAgfSxcbiAgICBtaW51dGU6IHtcbiAgICAgIGtleTogJ21pbnV0ZScsXG4gICAgICBwbGFjZWhvbGRlcjogJ21tJyxcbiAgICAgIHBsYWNlaG9sZGVyczogWydtbScsICdtJ10sXG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICB0eXBlZFZhbHVlOiBudWxsLFxuICAgICAgcmVhbFZhbHVlOiAoKSA9PiB0aGlzLmVkaXRpbmdEYXRlT2JqLmZvcm1hdCh0aGlzLl9lZGl0aW5nUGFydHMubWludXRlLnBsYWNlaG9sZGVyKSxcbiAgICB9LFxuICAgIHNlY29uZDoge1xuICAgICAga2V5OiAnc2Vjb25kJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnc3MnLFxuICAgICAgcGxhY2Vob2xkZXJzOiBbJ3NzJywgJ3MnXSxcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMCxcbiAgICAgIHR5cGVkVmFsdWU6IG51bGwsXG4gICAgICByZWFsVmFsdWU6ICgpID0+IHRoaXMuZWRpdGluZ0RhdGVPYmouZm9ybWF0KHRoaXMuX2VkaXRpbmdQYXJ0cy5zZWNvbmQucGxhY2Vob2xkZXIpLFxuICAgIH0sXG4gIH07XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2VkaXRpbmdUZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2lucHV0Q2hhcnM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF90eXBlOiBzdHJpbmcgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCk7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHR5cGluZyBpcyBhbGxvd2VkIGluIHRoZSBpbnB1dCBmaWVsZC5cbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgYWxsb3dUeXBpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHR5cGUgb2YgdGhlIGRhdGV0aW1lIGlucHV0LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGUgfHwgdGhpcy5jYWxlbmRhclNlcnZpY2UuY2FsZW5kYXIubmFtZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHR5cGUgb2YgdGhlIGRhdGV0aW1lIGlucHV0LlxuICAgKlxuICAgKiBAcGFyYW0gdiBUaGUgbmV3IHR5cGUgdG8gc2V0IGZvciB0aGUgZGF0ZXRpbWUgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgc2V0IHR5cGUodjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3R5cGUnLFxuICAgICAgdmFsdWU6IHYsXG4gICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfYWN0aXZlUGFydCA9ICdob3VyJztcblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudGx5IGFjdGl2ZSBwYXJ0IG9mIHRoZSBkYXRldGltZSBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBnZXQgYWN0aXZlUGFydCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVQYXJ0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGN1cnJlbnRseSBhY3RpdmUgcGFydCBvZiB0aGUgZGF0ZXRpbWUgaW5wdXQuXG4gICAqXG4gICAqIEBwYXJhbSB2IFRoZSBuZXcgbmFtZSBvciBpZGVudGlmaWVyIG9mIHRoZSBhY3RpdmUgcGFydC5cbiAgICovXG4gIHB1YmxpYyBzZXQgYWN0aXZlUGFydCh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hY3RpdmVQYXJ0ID0gdjtcbiAgICB0aGlzLl9jbGVhcklucHV0QnVmZmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2VkaXRpbmdEYXRlT2JqOiBBWERhdGVUaW1lID0gdGhpcy5jYWxlbmRhclNlcnZpY2Uubm93KHRoaXMudHlwZSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGdldCBlZGl0aW5nRGF0ZU9iaigpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gdGhpcy5fZWRpdGluZ0RhdGVPYmo7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JylcbiAgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9taW5WYWx1ZTogRGF0ZTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgbWluaW11bSBhbGxvd2VkIGRhdGUgdmFsdWUgZm9yIHRoZSBkYXRldGltZSBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgbWluVmFsdWUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX21pblZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1pbmltdW0gYWxsb3dhYmxlIGRhdGUgdmFsdWUgZm9yIHRoZSBkYXRldGltZSBpbnB1dC5cbiAgICpcbiAgICogQHBhcmFtIHYgVGhlIG1pbmltdW0gYWxsb3dhYmxlIGRhdGUgdmFsdWUgdG8gc2V0LlxuICAgKi9cbiAgcHVibGljIHNldCBtaW5WYWx1ZSh2OiBEYXRlKSB7XG4gICAgdGhpcy5fbWluVmFsdWUgPSB2O1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9tYXhWYWx1ZTogRGF0ZTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgbWF4aW11bSBhbGxvd2VkIGRhdGUgdmFsdWUgZm9yIHRoZSBkYXRldGltZSBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgbWF4VmFsdWUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX21heFZhbHVlO1xuICB9XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtYXhpbXVtIGFsbG93YWJsZSBkYXRlIHZhbHVlIGZvciB0aGUgZGF0ZXRpbWUgaW5wdXQuXG4gICAqXG4gICAqIEBwYXJhbSB2IC0gVGhlIG1heGltdW0gYWxsb3dhYmxlIGRhdGUgdmFsdWUgdG8gc2V0LlxuICAgKi9cbiAgcHVibGljIHNldCBtYXhWYWx1ZSh2OiBEYXRlKSB7XG4gICAgdGhpcy5fbWF4VmFsdWUgPSB2O1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgZm9ybWF0IG9mIHRoZSBkYXRldGltZSBpbnB1dCBjaGFuZ2VzLlxuICAgKiBAZXZlbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBmb3JtYXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgY2xpY2sgZXZlbnQgb2NjdXJzIG9uIHRoZSBkYXRldGltZSBib3guXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWENsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENsaWNrRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9mb3JtYXQgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5mb3JtYXRzLmRhdGVUaW1lSW5wdXQ7XG5cbiAgLyoqXG4gICAqIEdldHMgb3Igc2V0cyB0aGUgZm9ybWF0IHN0cmluZyBmb3IgZGlzcGxheWluZyBkYXRlIGFuZCB0aW1lIHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1hdDtcbiAgfVxuICAvKipcbiAgICogU2V0cyB0aGUgZm9ybWF0IHN0cmluZyBmb3IgZGlzcGxheWluZyBkYXRlIGFuZCB0aW1lIHZhbHVlcy5cbiAgICogQHBhcmFtIHYgLSBUaGUgbmV3IGZvcm1hdCBzdHJpbmcuIEl0IGRlZmluZXMgaG93IGRhdGUgYW5kIHRpbWUgdmFsdWVzIHNob3VsZCBiZSBmb3JtYXR0ZWQuXG4gICAqL1xuICBwdWJsaWMgc2V0IGZvcm1hdCh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAnZm9ybWF0JyxcbiAgICAgIHZhbHVlOiB2LFxuICAgICAgYWZ0ZXJDYWxsYmFjazogKG8sIG4pID0+IHtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLl9lZGl0aW5nUGFydHMpLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICBlLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGZvcm1hdFBhcnRzID0gbi5zcGxpdCgvW15hLXpBLVpdKy8pO1xuICAgICAgICBmb3JtYXRQYXJ0cy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBPYmplY3QudmFsdWVzKHRoaXMuX2VkaXRpbmdQYXJ0cykuZmluZCgoYykgPT4gYy5wbGFjZWhvbGRlcnMuc29tZSgoZCkgPT4gZCA9PSBmKSk7XG4gICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICBmb3VuZC5lbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvdW5kLnBsYWNlaG9sZGVyID0gZjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gY2hlY2sgaWYgcGFnZSBpcyBpbiBydGwgb3IgbHRyXG4gICAqL1xuICBpc1J0bCA9IHNpZ25hbCh0aGlzLnBsYXRmb3JtU2VydmljZS5pc1J0bCgpKTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gbGlzdGVuIHRvIGRpcmVjdGlvbiBjaGFuZ2UgdG8gcmVhY3QgdG8gaXQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wbGF0Zm9ybVNlcnZpY2UuZGlyZWN0aW9uQ2hhbmdlXG4gICAgICAucGlwZShtYXAoKGkpID0+IGkuZGF0YSA9PT0gJ3J0bCcpKVxuICAgICAgLnN1YnNjcmliZSgoaXNSdGwpID0+IHRoaXMuaXNSdGwuc2V0KGlzUnRsKSk7XG4gIH1cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9nZXRPcmRlcmVkUGFydHMoKTogQVhEYXRlVGltZVBhcnRbXSB7XG4gICAgLy8gVE9ETzogYmV0dGVyIHNwbGl0ZXIgZm9ybWF0XG4gICAgY29uc3QgZm9ybWF0UGFydHMgPSB0aGlzLmZvcm1hdC5zcGxpdCgvW15hLXpBLVpdKy8pO1xuICAgIGNvbnN0IHJlc3VsdDogQVhEYXRlVGltZVBhcnRbXSA9IFtdO1xuICAgIGZvcm1hdFBhcnRzLmZvckVhY2goKGYpID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kID0gT2JqZWN0LnZhbHVlcyh0aGlzLl9lZGl0aW5nUGFydHMpLmZpbmQoKGMpID0+IGMucGxhY2Vob2xkZXJzLnNvbWUoKGQpID0+IGQgPT0gZikpO1xuICAgICAgaWYgKGZvdW5kICYmIGZvdW5kLmVuYWJsZWQpIHJlc3VsdC5wdXNoKGZvdW5kKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9jbGVhcklucHV0QnVmZmVyKCkge1xuICAgIHRoaXMuX2lucHV0Q2hhcnMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlVGV4dCgpIHtcbiAgICBsZXQgdGV4dCA9IHRoaXMuZm9ybWF0O1xuICAgIC8vXG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLl9lZGl0aW5nUGFydHMpLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVBhcnQgPT0gcGFydC5rZXkpIHtcbiAgICAgICAgaWYgKHBhcnQudHlwZWRWYWx1ZSkgdGV4dCA9IHRleHQucmVwbGFjZShwYXJ0LnBsYWNlaG9sZGVyLCBwYXJ0LnR5cGVkVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHBhcnQudHlwZWRWYWx1ZSAhPSBwYXJ0LnBsYWNlaG9sZGVyICYmIHBhcnQudHlwZWRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZShwYXJ0LnBsYWNlaG9sZGVyLCBwYXJ0LnJlYWxWYWx1ZSgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX2VkaXRpbmdUZXh0ID0gdGV4dCA9PSB0aGlzLmZvcm1hdCA/ICcnIDogdGV4dDtcbiAgICBpZiAodGhpcy5hY3RpdmVQYXJ0KSB7XG4gICAgICB0aGlzLl9oaWdobGlnaHRBY3RpdmVQYXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGludGVybmFsIGRhdGUgdmFsdWUsIGFkanVzdGluZyBpdCBiYXNlZCBvbiBlZGl0aW5nIHBhcnRzLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgZGF0ZSB0byBzZXQuIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG92ZXJyaWRlIGludGVybmFsU2V0VmFsdWUodmFsdWU/OiBEYXRlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBsZXQgZWRpdGluZ0RhdGUgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUodmFsdWUsIHRoaXMudHlwZSk7XG4gICAgICBsZXQgYXBwbHlDaGFuZ2VzID0gZmFsc2U7XG4gICAgICBPYmplY3QudmFsdWVzKHRoaXMuX2VkaXRpbmdQYXJ0cykuZm9yRWFjaCgocGFydCkgPT4ge1xuICAgICAgICBpZiAoIXBhcnQuZW5hYmxlZCkge1xuICAgICAgICAgIGVkaXRpbmdEYXRlID0gZWRpdGluZ0RhdGUuc2V0KHBhcnQua2V5IGFzIFRpbWVVbml0LCBwYXJ0LmRlZmF1bHQpO1xuICAgICAgICAgIGFwcGx5Q2hhbmdlcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGFwcGx5Q2hhbmdlcykge1xuICAgICAgICByZXR1cm4gZWRpdGluZ0RhdGUuZGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY2hhbmdlcyB0byB0aGUgaW50ZXJuYWwgZGF0ZSB2YWx1ZSwgdXBkYXRpbmcgZWRpdGluZyBwYXJ0cyBhbmQgdGV4dCByZXByZXNlbnRhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIG5ldyBkYXRlIHZhbHVlLiBJZiBub3QgcHJvdmlkZWQsIHJlc2V0cyBlZGl0aW5nIHBhcnRzLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvdmVycmlkZSBpbnRlcm5hbFZhbHVlQ2hhbmdlZCh2YWx1ZT86IERhdGUpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX2VkaXRpbmdEYXRlT2JqID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHZhbHVlLCB0aGlzLnR5cGUpO1xuICAgIH1cbiAgICBPYmplY3QudmFsdWVzKHRoaXMuX2VkaXRpbmdQYXJ0cykuZm9yRWFjaCgocGFydCkgPT4ge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGlmIChwYXJ0LnR5cGVkVmFsdWUgIT0gcGFydC5wbGFjZWhvbGRlcikgcGFydC50eXBlZFZhbHVlID0gcGFydC5yZWFsVmFsdWUoKTtcbiAgICAgIH0gZWxzZSBwYXJ0LnR5cGVkVmFsdWUgPSBudWxsO1xuICAgIH0pO1xuICAgIHRoaXMuX3VwZGF0ZVRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIF9oYW5kbGVPbktleWRvd25FdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgaWdub3JlID0gKCkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLmFsbG93VHlwaW5nKCkpIHtcbiAgICAgIGlnbm9yZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0ID0gZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAvL1xuICAgIGNvbnN0IG9yZGVyZWRQYXJ0cyA9IHRoaXMuX2dldE9yZGVyZWRQYXJ0cygpO1xuICAgIGNvbnN0IHBhcnQgPSB0aGlzLmFjdGl2ZVBhcnQgPyB0aGlzLl9lZGl0aW5nUGFydHNbdGhpcy5hY3RpdmVQYXJ0XSA6IG9yZGVyZWRQYXJ0c1swXTtcbiAgICBjb25zdCBuZXh0UGFydCA9IHBhcnQgPyBvcmRlcmVkUGFydHNbb3JkZXJlZFBhcnRzLmluZGV4T2YocGFydCkgKyAxXSA6IG51bGw7XG4gICAgY29uc3QgcHJldlBhcnQgPSBwYXJ0ID8gb3JkZXJlZFBhcnRzW29yZGVyZWRQYXJ0cy5pbmRleE9mKHBhcnQpIC0gMV0gOiBudWxsO1xuICAgIC8vXG4gICAgY29uc3QgZ29OZXh0ID0gKCkgPT4ge1xuICAgICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAgICAgaWYgKG5leHRQYXJ0KSB7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFydCA9IG5leHRQYXJ0LmtleTtcbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0QWN0aXZlUGFydCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgZ29QcmV2ID0gKCkgPT4ge1xuICAgICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAgICAgaWYgKHByZXZQYXJ0KSB7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFydCA9IHByZXZQYXJ0LmtleTtcbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0QWN0aXZlUGFydCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgLyoqKioqKioqKioqKioqKiAgSGFuZGxlIExlZnQgYW5kIFJpZ2h0ICAqKioqKioqKioqKioqKi9cbiAgICBpZiAoZS5jb2RlID09PSAnQXJyb3dSaWdodCcgfHwgZS5jb2RlID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgaWdub3JlKCk7XG4gICAgICBlLmNvZGUgPT09ICdBcnJvd1JpZ2h0JyA/IGdvTmV4dCgpIDogZ29QcmV2KCk7XG4gICAgfSBlbHNlIGlmICgoZS5jb2RlID09PSAnQXJyb3dVcCcgfHwgZS5jb2RlID09PSAnQXJyb3dEb3duJykgJiYgIWUuY3RybEtleSkge1xuICAgICAgLyoqKioqKioqKioqKioqKiAgSGFuZGxlIFVwIGFuZCBEb3duICAqKioqKioqKioqKioqKi9cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgaWdub3JlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlnbm9yZSgpO1xuICAgICAgICBjb25zdCBzaWduID0gZS5jb2RlID09PSAnQXJyb3dVcCcgPyArMSA6IC0xO1xuICAgICAgICB0aGlzLmFjdGl2ZVBhcnQgPSBwYXJ0LmtleTtcbiAgICAgICAgbGV0IG5ld1ZhbDogQVhEYXRlVGltZSA9IHRoaXMuZWRpdGluZ0RhdGVPYmouYWRkKHBhcnQua2V5LCBzaWduKTtcbiAgICAgICAgdGhpcy5fZWRpdGluZ1BhcnRzW3BhcnQua2V5XS50eXBlZFZhbHVlID0gbmV3VmFsLmZvcm1hdCh0aGlzLl9lZGl0aW5nUGFydHNbcGFydC5rZXldLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgdGhpcy5fZWRpdGluZ0RhdGVPYmogPSBuZXdWYWw7XG4gICAgICAgIHRoaXMuX2RldGVjdFZhbHVlQ2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZS5jb2RlID09ICdCYWNrc3BhY2UnIHx8IGUuY29kZSA9PSAnRGVsZXRlJykge1xuICAgICAgLyoqKioqKioqKioqKioqKiAgSGFuZGxlIEJhY2tzcGFjZSAgKioqKioqKioqKioqKiovXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dC52YWx1ZSkge1xuICAgICAgICBpZ25vcmUoKTtcbiAgICAgICAgdGhpcy5fZWRpdGluZ1BhcnRzW3BhcnQua2V5XS50eXBlZFZhbHVlID0gdGhpcy5fZWRpdGluZ1BhcnRzW3BhcnQua2V5XS5wbGFjZWhvbGRlcjtcbiAgICAgICAgdGhpcy5fZGV0ZWN0VmFsdWVDaGFuZ2VzKCk7XG4gICAgICAgIGdvUHJldigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZS5jb2RlID09ICdUYWInIHx8IGUuY29kZSA9PSAnU3BhY2UnKSB7XG4gICAgICAvKioqKioqKioqKioqKioqICBIYW5kbGUgQmFja3NwYWNlICAqKioqKioqKioqKioqKi9cbiAgICAgIGlmIChpbnB1dC52YWx1ZSkge1xuICAgICAgICBpZiAoIWUuc2hpZnRLZXkgJiYgbmV4dFBhcnQpIHtcbiAgICAgICAgICBpZ25vcmUoKTtcbiAgICAgICAgICBnb05leHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChlLnNoaWZ0S2V5ICYmIHByZXZQYXJ0KSB7XG4gICAgICAgICAgaWdub3JlKCk7XG4gICAgICAgICAgZ29QcmV2KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFRPRE86IEZpWCB0eXBlIGluIGlucHV0XG4gICAgfSBlbHNlIGlmIChlLmtleT8udHJpbSgpICYmICFpc05hTihOdW1iZXIoZS5rZXkpKSkge1xuICAgICAgaWdub3JlKCk7XG4gICAgICByZXR1cm47XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBuZXh0ID0gZmFsc2U7XG4gICAgICBjb25zdCBlZGl0aW5nID0gdGhpcy5fZWRpdGluZ1BhcnRzW3BhcnQua2V5XTtcbiAgICAgIC8vXG4gICAgICBzd2l0Y2ggKHBhcnQua2V5KSB7XG4gICAgICAgIGNhc2UgJ3llYXInOiB7XG4gICAgICAgICAgaWYgKGVkaXRpbmcucGxhY2Vob2xkZXIubGVuZ3RoID09IDIgJiYgdGhpcy5faW5wdXRDaGFycy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5faW5wdXRDaGFycy5wdXNoKFxuICAgICAgICAgICAgICAuLi50aGlzLmNhbGVuZGFyU2VydmljZS5ub3codGhpcy50eXBlKS5mb3JtYXQoJ3l5eXknKS5zdWJzdHJpbmcoMCwgMikuc3BsaXQoJycpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuX2lucHV0Q2hhcnMubGVuZ3RoIDwgNCkge1xuICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gYCR7dGhpcy5faW5wdXRDaGFycy5qb2luKCcnKX0ke2Uua2V5fWA7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dENoYXJzLnB1c2goZS5rZXkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lucHV0Q2hhcnMubGVuZ3RoID4gMykge1xuICAgICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9ICgnMDAwMCcgKyBlZGl0aW5nLnR5cGVkVmFsdWUpLnNsaWNlKC00KTtcbiAgICAgICAgICBjb25zdCBudiA9IHBhcnNlSW50KGVkaXRpbmcudHlwZWRWYWx1ZSk7XG4gICAgICAgICAgLy9pZiAobnYgPiAwKSB7XG4gICAgICAgICAgY29uc3QgbmV3VmFsID0gdGhpcy5lZGl0aW5nRGF0ZU9iai5zZXQoJ3llYXInLCBudik7XG4gICAgICAgICAgdGhpcy5fZWRpdGluZ0RhdGVPYmogPSBuZXdWYWw7XG4gICAgICAgICAgdGhpcy5fZGV0ZWN0VmFsdWVDaGFuZ2VzKCk7XG4gICAgICAgICAgLy99XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbW9udGgnOiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2lucHV0Q2hhcnMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0Q2hhcnMucHVzaChlLmtleSk7XG4gICAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPSBgMCR7ZS5rZXl9YDtcbiAgICAgICAgICAgIGlmIChwYXJzZUludChlLmtleSkgPiAxKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2NsZWFySW5wdXRCdWZmZXIoKTtcbiAgICAgICAgICAgICAgbmV4dCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dENoYXJzLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTdHIgPSBwYXJzZUludChgJHt0aGlzLl9pbnB1dENoYXJzWzBdfSR7ZS5rZXl9YCk7XG4gICAgICAgICAgICBpZiAobmV3U3RyID4gMTIpIHtcbiAgICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gYDAke2Uua2V5fWA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPSBuZXdTdHIudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2NsZWFySW5wdXRCdWZmZXIoKTtcbiAgICAgICAgICAgIG5leHQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPVxuICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlPy5sZW5ndGggPT09IDEgPyAnMCcgKyBlZGl0aW5nLnR5cGVkVmFsdWUgOiBlZGl0aW5nLnR5cGVkVmFsdWU7XG4gICAgICAgICAgY29uc3QgbnYgPSBwYXJzZUludChlZGl0aW5nLnR5cGVkVmFsdWUpO1xuICAgICAgICAgIGlmIChudiA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuZWRpdGluZ0RhdGVPYmouc2V0KHBhcnQua2V5LCBudik7XG4gICAgICAgICAgICB0aGlzLl9lZGl0aW5nRGF0ZU9iaiA9IG5ld1ZhbDtcbiAgICAgICAgICAgIHRoaXMuX2RldGVjdFZhbHVlQ2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdkYXknOiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2lucHV0Q2hhcnMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0Q2hhcnMucHVzaChlLmtleSk7XG4gICAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPSBgMCR7ZS5rZXl9YDtcbiAgICAgICAgICAgIGlmIChwYXJzZUludChlLmtleSkgPiAzKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2NsZWFySW5wdXRCdWZmZXIoKTtcbiAgICAgICAgICAgICAgbmV4dCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dENoYXJzLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTdHIgPSBwYXJzZUludChgJHt0aGlzLl9pbnB1dENoYXJzWzBdfSR7ZS5rZXl9YCk7XG4gICAgICAgICAgICBpZiAobmV3U3RyID4gdGhpcy5fZWRpdGluZ0RhdGVPYmoubW9udGgudG90YWxEYXlzKSB7XG4gICAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGAwJHtlLmtleX1gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gbmV3U3RyLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jbGVhcklucHV0QnVmZmVyKCk7XG4gICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID1cbiAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZT8ubGVuZ3RoID09PSAxID8gJzAnICsgZWRpdGluZy50eXBlZFZhbHVlIDogZWRpdGluZy50eXBlZFZhbHVlO1xuICAgICAgICAgIGNvbnN0IG52ID0gcGFyc2VJbnQoZWRpdGluZy50eXBlZFZhbHVlKTtcbiAgICAgICAgICBpZiAobnYgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWwgPSB0aGlzLmVkaXRpbmdEYXRlT2JqLnNldChwYXJ0LmtleSwgbnYpO1xuICAgICAgICAgICAgdGhpcy5fZWRpdGluZ0RhdGVPYmogPSBuZXdWYWw7XG4gICAgICAgICAgICB0aGlzLl9kZXRlY3RWYWx1ZUNoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnaG91cic6IHtcbiAgICAgICAgICBpZiAodGhpcy5faW5wdXRDaGFycy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5faW5wdXRDaGFycy5wdXNoKGUua2V5KTtcbiAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGAwJHtlLmtleX1gO1xuICAgICAgICAgICAgaWYgKHBhcnNlSW50KGUua2V5KSA+IDIpIHtcbiAgICAgICAgICAgICAgbmV4dCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dENoYXJzLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTdHIgPSBwYXJzZUludChgJHt0aGlzLl9pbnB1dENoYXJzWzBdfSR7ZS5rZXl9YCk7XG4gICAgICAgICAgICBpZiAobmV3U3RyID4gMjMpIHtcbiAgICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gYDAke2Uua2V5fWA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPSBuZXdTdHIudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPVxuICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlPy5sZW5ndGggPT09IDEgPyAnMCcgKyBlZGl0aW5nLnR5cGVkVmFsdWUgOiBlZGl0aW5nLnR5cGVkVmFsdWU7XG4gICAgICAgICAgY29uc3QgbmV3VmFsID0gdGhpcy5lZGl0aW5nRGF0ZU9iai5zZXQoJ2hvdXInLCBwYXJzZUludChlZGl0aW5nLnR5cGVkVmFsdWUpKTtcbiAgICAgICAgICB0aGlzLl9lZGl0aW5nRGF0ZU9iaiA9IG5ld1ZhbDtcbiAgICAgICAgICB0aGlzLl9kZXRlY3RWYWx1ZUNoYW5nZXMoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICAgIGlmICh0aGlzLl9pbnB1dENoYXJzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dENoYXJzLnB1c2goZS5rZXkpO1xuICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gYDAke2Uua2V5fWA7XG4gICAgICAgICAgICBpZiAocGFyc2VJbnQoZS5rZXkpID4gNSkge1xuICAgICAgICAgICAgICB0aGlzLl9jbGVhcklucHV0QnVmZmVyKCk7XG4gICAgICAgICAgICAgIG5leHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXRDaGFycy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgY29uc3QgbmV3U3RyID0gcGFyc2VJbnQoYCR7dGhpcy5faW5wdXRDaGFyc1swXX0ke2Uua2V5fWApO1xuICAgICAgICAgICAgaWYgKG5ld1N0ciA+IDU5KSB7XG4gICAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGAwJHtlLmtleX1gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gbmV3U3RyLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jbGVhcklucHV0QnVmZmVyKCk7XG4gICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID1cbiAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZT8ubGVuZ3RoID09PSAxID8gJzAnICsgZWRpdGluZy50eXBlZFZhbHVlIDogZWRpdGluZy50eXBlZFZhbHVlO1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuZWRpdGluZ0RhdGVPYmouc2V0KHBhcnQua2V5LCBwYXJzZUludChlZGl0aW5nLnR5cGVkVmFsdWUpKTtcbiAgICAgICAgICB0aGlzLl9lZGl0aW5nRGF0ZU9iaiA9IG5ld1ZhbDtcbiAgICAgICAgICB0aGlzLl9kZXRlY3RWYWx1ZUNoYW5nZXMoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIGdvTmV4dCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIC8qKioqKioqKioqKioqKiogIEVtaXQgRXZlbnQgICoqKioqKioqKioqKioqL1xuICAgIHN1cGVyLmVtaXRPbktleWRvd25FdmVudChlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKVxuICBfaGFuZGxlS2V5VXBFdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlUGFydCkge1xuICAgICAgdGhpcy5faGlnaGxpZ2h0QWN0aXZlUGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVGb2N1c0V2ZW50KGU6IEZvY3VzRXZlbnQpIHtcbiAgICAvL3RoaXMuX2hpZ2hsaWdodEFjdGl2ZVBhcnQoKTtcbiAgICBzdXBlci5lbWl0T25Gb2N1c0V2ZW50KGUpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZUJsdXJFdmVudChlOiBGb2N1c0V2ZW50KSB7XG4gICAgc3VwZXIuZW1pdE9uQmx1ckV2ZW50KGUpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU9uSW5wdXRDbGlja0V2ZW50KGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGxvd1R5cGluZygpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5fZGV0ZWN0UGFydEF0UG9zaXRpb24oKTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2RldGVjdFBhcnRBdFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghaW5wdXQudmFsdWUpIHJldHVybjtcbiAgICBjb25zdCBzU3RhcnQgPSBpbnB1dC5zZWxlY3Rpb25FbmQgfHwgMDtcbiAgICBjb25zdCByZSA9IC9bYS16QS1aMC05XSsvZ2k7XG4gICAgY29uc3QgdmFsdWVQYXJ0cyA9IEFycmF5LmZyb20oaW5wdXQudmFsdWUubWF0Y2hBbGwocmUpKTtcbiAgICBjb25zdCBvcmRlcmVkUGFydHMgPSB0aGlzLl9nZXRPcmRlcmVkUGFydHMoKTtcbiAgICBjb25zdCBpbmRleCA9IHZhbHVlUGFydHMuZmluZEluZGV4KChjOiBhbnkpID0+IGMuaW5kZXggPD0gc1N0YXJ0ICYmIGMuaW5kZXggKyBjWzBdLmxlbmd0aCA+PSBzU3RhcnQpO1xuICAgIHRoaXMuYWN0aXZlUGFydCA9IG9yZGVyZWRQYXJ0c1tpbmRleF0ua2V5O1xuICAgIHRoaXMuX2hpZ2hsaWdodEFjdGl2ZVBhcnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0QWN0aXZlUGFydCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFpbnB1dCB8fCAhaW5wdXQudmFsdWUgfHwgIXRoaXMuYWN0aXZlUGFydCkgcmV0dXJuO1xuICAgIGNvbnN0IG9yZGVyZWRQYXJ0cyA9IHRoaXMuX2dldE9yZGVyZWRQYXJ0cygpO1xuICAgIGNvbnN0IGluZGV4ID0gb3JkZXJlZFBhcnRzLmZpbmRJbmRleCgoYykgPT4gYy5rZXkgPT0gdGhpcy5hY3RpdmVQYXJ0KTtcbiAgICBjb25zdCByZSA9IC9bYS16QS1aMC05XSsvZ2k7XG4gICAgY29uc3QgdmFsdWVQYXJ0cyA9IEFycmF5LmZyb20oaW5wdXQudmFsdWUubWF0Y2hBbGwocmUpKTtcbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IEFYU3RyaW5nVXRpbC5nZXRXb3JkQm91bmRzQXRQb3NpdGlvbihpbnB1dC52YWx1ZSwgdmFsdWVQYXJ0c1tpbmRleF0/LmluZGV4KTtcbiAgICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0LnNldFNlbGVjdGlvblJhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2RldGVjdFZhbHVlQ2hhbmdlcygpIHtcbiAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMuX2VkaXRpbmdEYXRlT2JqLmRhdGUsIHRydWUpO1xuICB9XG59XG4iLCI8aW5wdXRcbiAgI2lucHV0XG4gIGlkPVwiaW5wdXRcIlxuICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgY2xhc3M9XCJheC1pbnB1dFwiXG4gIHR5cGU9XCJ0ZXh0XCJcbiAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3MuYXgtc2VsZWN0LW5vbmVdPVwiIWFsbG93VHlwaW5nKClcIlxuICBbY2xhc3MuYXgtc3RhdGUtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbcmVhZG9ubHldPVwidHJ1ZVwiXG4gIFtuZ01vZGVsXT1cIl9lZGl0aW5nVGV4dFwiXG4gIChtb3VzZXVwKT1cIl9oYW5kbGVPbklucHV0Q2xpY2tFdmVudCgkZXZlbnQpXCJcbiAgKGJsdXIpPVwiX2hhbmRsZUJsdXJFdmVudCgkZXZlbnQpXCJcbiAgKGZvY3VzKT1cIl9oYW5kbGVGb2N1c0V2ZW50KCRldmVudClcIlxuICBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIlxuICBbc3R5bGUuanVzdGlmeS1pdGVtc109XCJpc1J0bCgpID8gJ2VuZCcgOiAnc3RhcnQnXCJcbi8+XG48bmctY29udGVudCBzZWxlY3Q9XCJheC12YWxpZGF0aW9uLXJ1bGVcIj4gPC9uZy1jb250ZW50PlxuIl19