@acorex/components 6.5.26 → 6.5.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (631) hide show
  1. package/karma.conf.js +32 -0
  2. package/ng-package.json +10 -0
  3. package/package.json +12 -32
  4. package/src/lib/accordion/accordion.component.ts +43 -0
  5. package/src/lib/accordion/accordion.module.ts +11 -0
  6. package/src/lib/accordion/api.ts +2 -0
  7. package/src/lib/base/base-page.class.ts +116 -0
  8. package/src/lib/base/components.class.ts +9 -0
  9. package/src/lib/base/element.class.ts +344 -0
  10. package/src/lib/base/events.class.ts +32 -0
  11. package/src/lib/button/button.component.html +17 -0
  12. package/src/lib/button/button.component.ts +72 -0
  13. package/src/lib/button/button.module.ts +14 -0
  14. package/src/lib/calendar/calendar-box/calendar-box.component.html +68 -0
  15. package/src/lib/calendar/calendar-box/calendar-box.component.ts +461 -0
  16. package/src/lib/calendar/calendar-box/calendar-box.module.ts +16 -0
  17. package/src/lib/calendar/scheduler/scheduler-views.property.ts +38 -0
  18. package/{lib/calendar/scheduler/scheduler.class.d.ts → src/lib/calendar/scheduler/scheduler.class.ts} +20 -6
  19. package/src/lib/calendar/scheduler/scheduler.component.html +9 -0
  20. package/src/lib/calendar/scheduler/scheduler.component.scss +181 -0
  21. package/src/lib/calendar/scheduler/scheduler.component.ts +249 -0
  22. package/src/lib/calendar/scheduler/scheduler.module.ts +45 -0
  23. package/src/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.ts +133 -0
  24. package/src/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.ts +33 -0
  25. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.html +43 -0
  26. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.scss +66 -0
  27. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.ts +50 -0
  28. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.html +45 -0
  29. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.scss +19 -0
  30. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.ts +103 -0
  31. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.html +39 -0
  32. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.scss +55 -0
  33. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.ts +233 -0
  34. package/src/lib/calendar/scheduler/views/scheduler-view.component.ts +124 -0
  35. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.html +50 -0
  36. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.scss +4 -0
  37. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.ts +92 -0
  38. package/src/lib/checkbox/checkbox.component.html +22 -0
  39. package/src/lib/checkbox/checkbox.component.ts +107 -0
  40. package/src/lib/checkbox/checkbox.module.ts +11 -0
  41. package/src/lib/color-picker/color-box/color-box.component.html +37 -0
  42. package/src/lib/color-picker/color-box/color-box.component.scss +60 -0
  43. package/src/lib/color-picker/color-box/color-box.component.ts +438 -0
  44. package/src/lib/color-picker/color-picker.component.html +31 -0
  45. package/src/lib/color-picker/color-picker.component.ts +87 -0
  46. package/src/lib/color-picker/color-picker.module.ts +16 -0
  47. package/src/lib/context-menu/context-menu.component.html +42 -0
  48. package/src/lib/context-menu/context-menu.component.ts +78 -0
  49. package/src/lib/context-menu/context-menu.directive.ts +159 -0
  50. package/src/lib/context-menu/context-menu.module.ts +15 -0
  51. package/src/lib/data-filter/columns/filter-column-date.component.ts +123 -0
  52. package/src/lib/data-filter/columns/filter-column-number.component.ts +100 -0
  53. package/src/lib/data-filter/columns/filter-column-selection.component.ts +69 -0
  54. package/src/lib/data-filter/columns/filter-column-string.component.ts +100 -0
  55. package/src/lib/data-filter/filter-panel/filter-panel.component.html +120 -0
  56. package/src/lib/data-filter/filter-panel/filter-panel.component.scss +143 -0
  57. package/src/lib/data-filter/filter-panel/filter-panel.component.ts +266 -0
  58. package/src/lib/data-filter/filter.class.ts +73 -0
  59. package/src/lib/data-filter/filter.module.ts +52 -0
  60. package/src/lib/data-filter/toolbar/filter-toolbar.component.html +5 -0
  61. package/src/lib/data-filter/toolbar/filter-toolbar.component.scss +17 -0
  62. package/src/lib/data-filter/toolbar/filter-toolbar.component.ts +179 -0
  63. package/src/lib/data-list/core/data-list.component.ts +62 -0
  64. package/src/lib/data-list/list/list.component.html +32 -0
  65. package/src/lib/data-list/list/list.component.scss +64 -0
  66. package/src/lib/data-list/list/list.component.ts +149 -0
  67. package/src/lib/data-list/list/list.module.ts +14 -0
  68. package/src/lib/data-list/list/toolbar-list-view.component.ts +63 -0
  69. package/src/lib/data-source/datasource.component.ts +50 -0
  70. package/src/lib/data-source/datasource.module.ts +11 -0
  71. package/{lib/data-source/read-param.d.ts → src/lib/data-source/read-param.ts} +13 -3
  72. package/src/lib/date-picker/date-picker.component.html +30 -0
  73. package/src/lib/date-picker/date-picker.component.scss +5 -0
  74. package/src/lib/date-picker/date-picker.component.ts +720 -0
  75. package/src/lib/date-picker/date-picker.module.ts +17 -0
  76. package/src/lib/dialog/dialog.component.html +5 -0
  77. package/src/lib/dialog/dialog.component.scss +32 -0
  78. package/src/lib/dialog/dialog.component.ts +32 -0
  79. package/src/lib/dialog/dialog.module.ts +13 -0
  80. package/src/lib/dialog/dialog.service.ts +178 -0
  81. package/src/lib/drawer/content.component.ts +18 -0
  82. package/src/lib/drawer/drawer-container.component.ts +37 -0
  83. package/src/lib/drawer/drawer.component.ts +151 -0
  84. package/src/lib/drawer/drawer.module.ts +16 -0
  85. package/src/lib/dropdown/dropdown.component.html +26 -0
  86. package/src/lib/dropdown/dropdown.component.scss +8 -0
  87. package/src/lib/dropdown/dropdown.component.ts +197 -0
  88. package/src/lib/dropdown/dropdown.module.ts +19 -0
  89. package/src/lib/fieldset/fieldset.component.html +6 -0
  90. package/src/lib/fieldset/fieldset.component.ts +49 -0
  91. package/src/lib/fieldset/fieldset.module.ts +11 -0
  92. package/src/lib/form-group/form-group.component.html +15 -0
  93. package/src/lib/form-group/form-group.component.ts +39 -0
  94. package/src/lib/form-group/form-group.module.ts +14 -0
  95. package/src/lib/label/label.component.html +5 -0
  96. package/src/lib/label/label.component.ts +18 -0
  97. package/src/lib/label/label.module.ts +14 -0
  98. package/src/lib/loading/loading-indicator.component.html +27 -0
  99. package/src/lib/loading/loading-indicator.component.ts +16 -0
  100. package/src/lib/loading/loading-panel.component.ts +37 -0
  101. package/src/lib/loading/loading.module.ts +13 -0
  102. package/src/lib/loading/loading.service.ts +44 -0
  103. package/src/lib/menu/menu-item.component.ts +41 -0
  104. package/src/lib/menu/menu.component.html +74 -0
  105. package/src/lib/menu/menu.component.ts +111 -0
  106. package/src/lib/menu/menu.module.ts +13 -0
  107. package/src/lib/menu/menu2.component.scss +59 -0
  108. package/src/lib/menu/menu2.component.ts +98 -0
  109. package/src/lib/number-box/number-box.component.html +32 -0
  110. package/src/lib/number-box/number-box.component.ts +641 -0
  111. package/src/lib/number-box/number-box.module.ts +13 -0
  112. package/src/lib/page/content.component.ts +18 -0
  113. package/src/lib/page/footer.component.ts +13 -0
  114. package/src/lib/page/page.component.ts +43 -0
  115. package/src/lib/page/page.module.ts +14 -0
  116. package/src/lib/panel-box/panel-box.component.html +19 -0
  117. package/src/lib/panel-box/panel-box.component.scss +25 -0
  118. package/src/lib/panel-box/panel-box.component.ts +87 -0
  119. package/src/lib/panel-box/panel-box.module.ts +10 -0
  120. package/src/lib/password-box/password-box.component.html +22 -0
  121. package/src/lib/password-box/password-box.component.ts +30 -0
  122. package/src/lib/password-box/password-box.module.ts +16 -0
  123. package/src/lib/popover/custom-cdk-overlay.service.ts +82 -0
  124. package/src/lib/popover/overlay.service.ts +102 -0
  125. package/src/lib/popover/popover.component.html +5 -0
  126. package/src/lib/popover/popover.component.scss +9 -0
  127. package/src/lib/popover/popover.component.ts +130 -0
  128. package/src/lib/popover/popover.module.ts +11 -0
  129. package/src/lib/popup/popup.component.html +33 -0
  130. package/src/lib/popup/popup.component.scss +167 -0
  131. package/src/lib/popup/popup.component.ts +184 -0
  132. package/src/lib/popup/popup.module.ts +16 -0
  133. package/src/lib/popup/popup.service.ts +103 -0
  134. package/src/lib/progress-bar/progress-bar.component.html +5 -0
  135. package/src/lib/progress-bar/progress-bar.component.ts +10 -0
  136. package/src/lib/progress-bar/progress-bar.module.ts +11 -0
  137. package/src/lib/property-editor/editors/check-editor/check-editor.ts +44 -0
  138. package/src/lib/property-editor/editors/check-editor/check.module.ts +14 -0
  139. package/src/lib/property-editor/editors/color-editor/color.editor.ts +30 -0
  140. package/src/lib/property-editor/editors/color-editor/color.module.ts +20 -0
  141. package/src/lib/property-editor/editors/column-editor/column.editor.html +75 -0
  142. package/src/lib/property-editor/editors/column-editor/column.editor.scss +193 -0
  143. package/src/lib/property-editor/editors/column-editor/column.editor.ts +124 -0
  144. package/src/lib/property-editor/editors/column-editor/column.module.ts +28 -0
  145. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.html +80 -0
  146. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.scss +71 -0
  147. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.ts +232 -0
  148. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.module.ts +52 -0
  149. package/src/lib/property-editor/editors/date-editor/date.editor.ts +49 -0
  150. package/src/lib/property-editor/editors/date-editor/date.module.ts +20 -0
  151. package/src/lib/property-editor/editors/number-editor/number.editor.ts +46 -0
  152. package/src/lib/property-editor/editors/number-editor/number.module.ts +20 -0
  153. package/src/lib/property-editor/editors/range-editor/range.editor.html +67 -0
  154. package/src/lib/property-editor/editors/range-editor/range.editor.scss +68 -0
  155. package/src/lib/property-editor/editors/range-editor/range.editor.ts +153 -0
  156. package/src/lib/property-editor/editors/range-editor/range.module.ts +37 -0
  157. package/src/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.html +8 -0
  158. package/src/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.ts +70 -0
  159. package/src/lib/property-editor/editors/selectbox-editor/selectbox.editor.html +8 -0
  160. package/src/lib/property-editor/editors/selectbox-editor/selectbox.editor.ts +77 -0
  161. package/src/lib/property-editor/editors/selectbox-editor/selectbox.module.ts +18 -0
  162. package/src/lib/property-editor/editors/selection-editor/selection-editor.ts +52 -0
  163. package/src/lib/property-editor/editors/selection-editor/selection.module.ts +14 -0
  164. package/src/lib/property-editor/editors/switch-editor/number.editor.ts +26 -0
  165. package/src/lib/property-editor/editors/switch-editor/number.module.ts +21 -0
  166. package/src/lib/property-editor/editors/text-editor/text.editor.html +5 -0
  167. package/src/lib/property-editor/editors/text-editor/text.editor.ts +31 -0
  168. package/src/lib/property-editor/editors/text-editor/text.module.ts +20 -0
  169. package/src/lib/property-editor/editors/textarea-editor/textarea.editor.html +9 -0
  170. package/src/lib/property-editor/editors/textarea-editor/textarea.editor.ts +37 -0
  171. package/src/lib/property-editor/editors/textarea-editor/textarea.module.ts +20 -0
  172. package/src/lib/property-editor/editors/time-editor/time.editor.ts +38 -0
  173. package/src/lib/property-editor/editors/time-editor/time.module.ts +20 -0
  174. package/src/lib/property-editor/property-editor-renderer.directive.ts +165 -0
  175. package/src/lib/property-editor/property-editor.class.ts +178 -0
  176. package/src/lib/property-editor/property-editor.module.ts +115 -0
  177. package/src/lib/query-builder/query-builder-group.component.html +68 -0
  178. package/src/lib/query-builder/query-builder-group.component.ts +122 -0
  179. package/src/lib/query-builder/query-builder-popup/query-builder-popup.component.html +82 -0
  180. package/src/lib/query-builder/query-builder-popup/query-builder-popup.component.ts +178 -0
  181. package/src/lib/query-builder/query-builder-rule.component.html +135 -0
  182. package/src/lib/query-builder/query-builder-rule.component.ts +390 -0
  183. package/src/lib/query-builder/query-builder.class.ts +53 -0
  184. package/src/lib/query-builder/query-builder.component.html +3 -0
  185. package/src/lib/query-builder/query-builder.component.scss +286 -0
  186. package/src/lib/query-builder/query-builder.component.ts +220 -0
  187. package/src/lib/query-builder/query-builder.module.ts +44 -0
  188. package/src/lib/query-builder/query-builder.service.ts +188 -0
  189. package/src/lib/search-bar/search-bar.component.html +30 -0
  190. package/src/lib/search-bar/search-bar.component.scss +114 -0
  191. package/src/lib/search-bar/search-bar.component.ts +287 -0
  192. package/src/lib/search-bar/search-bar.module.ts +33 -0
  193. package/src/lib/searchbox/searchbox.component.html +25 -0
  194. package/src/lib/searchbox/searchbox.component.ts +85 -0
  195. package/src/lib/searchbox/searchbox.module.ts +17 -0
  196. package/src/lib/selectbox/selectbox.component.html +100 -0
  197. package/src/lib/selectbox/selectbox.component.ts +984 -0
  198. package/src/lib/selectbox/selectbox.module.ts +31 -0
  199. package/src/lib/selectbox/selectbox2.component.html +78 -0
  200. package/src/lib/selectbox/selectbox2.component.ts +603 -0
  201. package/src/lib/selection-list/selection-list.component.html +21 -0
  202. package/src/lib/selection-list/selection-list.component.ts +115 -0
  203. package/src/lib/selection-list/selection-list.module.ts +13 -0
  204. package/src/lib/switch/switch.component.html +4 -0
  205. package/src/lib/switch/switch.component.scss +65 -0
  206. package/src/lib/switch/switch.component.ts +57 -0
  207. package/src/lib/switch/switch.module.ts +14 -0
  208. package/src/lib/tab-page/tab-page-Renderer.component.ts +70 -0
  209. package/src/lib/tab-page/tab-page-host.component.ts +110 -0
  210. package/src/lib/tab-page/tab-page.module.ts +13 -0
  211. package/src/lib/tab-page/tab-page.service.ts +176 -0
  212. package/src/lib/tab-strip/tab-strip.component.html +6 -0
  213. package/src/lib/tab-strip/tab-strip.component.ts +47 -0
  214. package/src/lib/tab-strip/tab-strip.module.ts +11 -0
  215. package/src/lib/tab-view/dynamic-tabs.directive.ts +17 -0
  216. package/src/lib/tab-view/tab-view.component.html +33 -0
  217. package/src/lib/tab-view/tab-view.component.scss +0 -0
  218. package/src/lib/tab-view/tab-view.component.ts +129 -0
  219. package/src/lib/tab-view/tab-view.module.ts +12 -0
  220. package/src/lib/tab-view/tab.component.html +8 -0
  221. package/src/lib/tab-view/tab.component.ts +15 -0
  222. package/src/lib/textarea/textarea.component.html +13 -0
  223. package/src/lib/textarea/textarea.component.ts +24 -0
  224. package/src/lib/textarea/textarea.module.ts +14 -0
  225. package/src/lib/textbox/textbox.component.html +22 -0
  226. package/src/lib/textbox/textbox.component.ts +38 -0
  227. package/src/lib/textbox/textbox.module.ts +16 -0
  228. package/src/lib/time-picker/time-picker.component.html +21 -0
  229. package/src/lib/time-picker/time-picker.component.ts +1003 -0
  230. package/src/lib/time-picker/time-picker.module.ts +15 -0
  231. package/src/lib/toast/toast-message/toast-message.component.html +17 -0
  232. package/src/lib/toast/toast-message/toast-message.component.scss +75 -0
  233. package/src/lib/toast/toast-message/toast-message.component.ts +64 -0
  234. package/src/lib/toast/toast-wrapper/toast-wrapper.component.scss +15 -0
  235. package/src/lib/toast/toast-wrapper/toast-wrapper.component.ts +13 -0
  236. package/src/lib/toast/toast.module.ts +12 -0
  237. package/src/lib/toast/toast.service.ts +64 -0
  238. package/src/lib/toolbar/group-button/toolbar-group-button.component.ts +54 -0
  239. package/src/lib/toolbar/menu/toolbar-menu.component.html +4 -0
  240. package/src/lib/toolbar/menu/toolbar-menu.component.ts +81 -0
  241. package/src/lib/toolbar/search/toolbar-search.component.html +4 -0
  242. package/src/lib/toolbar/search/toolbar-search.component.scss +24 -0
  243. package/src/lib/toolbar/search/toolbar-search.component.ts +61 -0
  244. package/src/lib/toolbar/title/toolbar-title.component.ts +35 -0
  245. package/src/lib/toolbar/toolbar-item.ts +4 -0
  246. package/src/lib/toolbar/toolbar.component.html +4 -0
  247. package/src/lib/toolbar/toolbar.component.scss +9 -0
  248. package/src/lib/toolbar/toolbar.component.ts +16 -0
  249. package/src/lib/toolbar/toolbar.module.ts +25 -0
  250. package/src/lib/tooltip/tooltip.directive.ts +101 -0
  251. package/src/lib/tooltip/tooltip.module.ts +11 -0
  252. package/src/lib/tree-side-menu/tree-side-menu.component.html +43 -0
  253. package/src/lib/tree-side-menu/tree-side-menu.component.ts +698 -0
  254. package/src/lib/tree-side-menu/tree-side-menu.module.ts +19 -0
  255. package/src/lib/tree-view/tree-view.component.html +46 -0
  256. package/src/lib/tree-view/tree-view.component.ts +835 -0
  257. package/src/lib/tree-view/tree-view.module.ts +16 -0
  258. package/src/lib/upload-file/upload-file.component.html +16 -0
  259. package/src/lib/upload-file/upload-file.component.ts +230 -0
  260. package/src/lib/upload-file/upload-file.events.ts +11 -0
  261. package/src/lib/upload-file/upload-file.module.ts +16 -0
  262. package/src/lib/validation/validation-form.component.ts +78 -0
  263. package/src/lib/validation/validation-rule.widget.ts +112 -0
  264. package/src/lib/validation/validation.class.ts +22 -0
  265. package/src/lib/validation/validation.component.ts +92 -0
  266. package/src/lib/validation/validation.module.ts +28 -0
  267. package/{public-api.d.ts → src/public-api.ts} +61 -2
  268. package/src/test.ts +28 -0
  269. package/tsconfig.lib.json +25 -0
  270. package/tsconfig.lib.prod.json +6 -0
  271. package/tsconfig.spec.json +17 -0
  272. package/tslint.json +17 -0
  273. package/acorex-components.d.ts +0 -5
  274. package/esm2020/acorex-components.mjs +0 -5
  275. package/esm2020/lib/accordion/accordion.component.mjs +0 -44
  276. package/esm2020/lib/accordion/accordion.module.mjs +0 -20
  277. package/esm2020/lib/base/base-page.class.mjs +0 -94
  278. package/esm2020/lib/base/components.class.mjs +0 -17
  279. package/esm2020/lib/base/element.class.mjs +0 -294
  280. package/esm2020/lib/base/events.class.mjs +0 -11
  281. package/esm2020/lib/button/button.component.mjs +0 -71
  282. package/esm2020/lib/button/button.module.mjs +0 -21
  283. package/esm2020/lib/calendar/calendar-box/calendar-box.component.mjs +0 -413
  284. package/esm2020/lib/calendar/calendar-box/calendar-box.module.mjs +0 -22
  285. package/esm2020/lib/calendar/scheduler/scheduler-views.property.mjs +0 -54
  286. package/esm2020/lib/calendar/scheduler/scheduler.class.mjs +0 -18
  287. package/esm2020/lib/calendar/scheduler/scheduler.component.mjs +0 -213
  288. package/esm2020/lib/calendar/scheduler/scheduler.module.mjs +0 -68
  289. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +0 -132
  290. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +0 -37
  291. package/esm2020/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +0 -47
  292. package/esm2020/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +0 -95
  293. package/esm2020/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +0 -204
  294. package/esm2020/lib/calendar/scheduler/views/scheduler-view.component.mjs +0 -99
  295. package/esm2020/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +0 -77
  296. package/esm2020/lib/checkbox/checkbox.component.mjs +0 -98
  297. package/esm2020/lib/checkbox/checkbox.module.mjs +0 -20
  298. package/esm2020/lib/color-picker/color-box/color-box.component.mjs +0 -422
  299. package/esm2020/lib/color-picker/color-picker.component.mjs +0 -82
  300. package/esm2020/lib/color-picker/color-picker.module.mjs +0 -24
  301. package/esm2020/lib/context-menu/context-menu.component.mjs +0 -65
  302. package/esm2020/lib/context-menu/context-menu.directive.mjs +0 -135
  303. package/esm2020/lib/context-menu/context-menu.module.mjs +0 -20
  304. package/esm2020/lib/data-filter/columns/filter-column-date.component.mjs +0 -138
  305. package/esm2020/lib/data-filter/columns/filter-column-number.component.mjs +0 -117
  306. package/esm2020/lib/data-filter/columns/filter-column-selection.component.mjs +0 -74
  307. package/esm2020/lib/data-filter/columns/filter-column-string.component.mjs +0 -117
  308. package/esm2020/lib/data-filter/filter-panel/filter-panel.component.mjs +0 -258
  309. package/esm2020/lib/data-filter/filter.class.mjs +0 -44
  310. package/esm2020/lib/data-filter/filter.module.mjs +0 -90
  311. package/esm2020/lib/data-filter/toolbar/filter-toolbar.component.mjs +0 -166
  312. package/esm2020/lib/data-list/core/data-list.component.mjs +0 -40
  313. package/esm2020/lib/data-list/list/list.component.mjs +0 -124
  314. package/esm2020/lib/data-list/list/list.module.mjs +0 -22
  315. package/esm2020/lib/data-list/list/toolbar-list-view.component.mjs +0 -85
  316. package/esm2020/lib/data-source/datasource.component.mjs +0 -47
  317. package/esm2020/lib/data-source/datasource.module.mjs +0 -18
  318. package/esm2020/lib/data-source/read-param.mjs +0 -5
  319. package/esm2020/lib/date-picker/date-picker.component.mjs +0 -702
  320. package/esm2020/lib/date-picker/date-picker.module.mjs +0 -25
  321. package/esm2020/lib/dialog/dialog.component.mjs +0 -24
  322. package/esm2020/lib/dialog/dialog.module.mjs +0 -21
  323. package/esm2020/lib/dialog/dialog.service.mjs +0 -150
  324. package/esm2020/lib/drawer/content.component.mjs +0 -18
  325. package/esm2020/lib/drawer/drawer-container.component.mjs +0 -36
  326. package/esm2020/lib/drawer/drawer.component.mjs +0 -142
  327. package/esm2020/lib/drawer/drawer.module.mjs +0 -23
  328. package/esm2020/lib/dropdown/dropdown.component.mjs +0 -176
  329. package/esm2020/lib/dropdown/dropdown.module.mjs +0 -26
  330. package/esm2020/lib/fieldset/fieldset.component.mjs +0 -59
  331. package/esm2020/lib/fieldset/fieldset.module.mjs +0 -19
  332. package/esm2020/lib/form-group/form-group.component.mjs +0 -34
  333. package/esm2020/lib/form-group/form-group.module.mjs +0 -21
  334. package/esm2020/lib/label/label.component.mjs +0 -19
  335. package/esm2020/lib/label/label.module.mjs +0 -21
  336. package/esm2020/lib/loading/loading-indicator.component.mjs +0 -17
  337. package/esm2020/lib/loading/loading-panel.component.mjs +0 -44
  338. package/esm2020/lib/loading/loading.module.mjs +0 -21
  339. package/esm2020/lib/loading/loading.service.mjs +0 -45
  340. package/esm2020/lib/menu/menu-item.component.mjs +0 -47
  341. package/esm2020/lib/menu/menu.component.mjs +0 -86
  342. package/esm2020/lib/menu/menu.module.mjs +0 -22
  343. package/esm2020/lib/menu/menu2.component.mjs +0 -96
  344. package/esm2020/lib/number-box/number-box.component.mjs +0 -622
  345. package/esm2020/lib/number-box/number-box.module.mjs +0 -21
  346. package/esm2020/lib/page/content.component.mjs +0 -32
  347. package/esm2020/lib/page/footer.component.mjs +0 -19
  348. package/esm2020/lib/page/page.component.mjs +0 -53
  349. package/esm2020/lib/page/page.module.mjs +0 -22
  350. package/esm2020/lib/panel-box/panel-box.component.mjs +0 -88
  351. package/esm2020/lib/panel-box/panel-box.module.mjs +0 -19
  352. package/esm2020/lib/password-box/password-box.component.mjs +0 -31
  353. package/esm2020/lib/password-box/password-box.module.mjs +0 -23
  354. package/esm2020/lib/popover/custom-cdk-overlay.service.mjs +0 -48
  355. package/esm2020/lib/popover/overlay.service.mjs +0 -90
  356. package/esm2020/lib/popover/popover.component.mjs +0 -127
  357. package/esm2020/lib/popover/popover.module.mjs +0 -19
  358. package/esm2020/lib/popup/popup.component.mjs +0 -147
  359. package/esm2020/lib/popup/popup.module.mjs +0 -25
  360. package/esm2020/lib/popup/popup.service.mjs +0 -93
  361. package/esm2020/lib/progress-bar/progress-bar.component.mjs +0 -19
  362. package/esm2020/lib/progress-bar/progress-bar.module.mjs +0 -19
  363. package/esm2020/lib/property-editor/editors/check-editor/check-editor.mjs +0 -61
  364. package/esm2020/lib/property-editor/editors/check-editor/check.module.mjs +0 -22
  365. package/esm2020/lib/property-editor/editors/color-editor/color.editor.mjs +0 -38
  366. package/esm2020/lib/property-editor/editors/color-editor/color.module.mjs +0 -24
  367. package/esm2020/lib/property-editor/editors/column-editor/column.editor.mjs +0 -115
  368. package/esm2020/lib/property-editor/editors/column-editor/column.module.mjs +0 -32
  369. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +0 -211
  370. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +0 -78
  371. package/esm2020/lib/property-editor/editors/date-editor/date.editor.mjs +0 -51
  372. package/esm2020/lib/property-editor/editors/date-editor/date.module.mjs +0 -24
  373. package/esm2020/lib/property-editor/editors/number-editor/number.editor.mjs +0 -63
  374. package/esm2020/lib/property-editor/editors/number-editor/number.module.mjs +0 -24
  375. package/esm2020/lib/property-editor/editors/range-editor/range.editor.mjs +0 -140
  376. package/esm2020/lib/property-editor/editors/range-editor/range.module.mjs +0 -61
  377. package/esm2020/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +0 -72
  378. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +0 -71
  379. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +0 -25
  380. package/esm2020/lib/property-editor/editors/selection-editor/selection-editor.mjs +0 -69
  381. package/esm2020/lib/property-editor/editors/selection-editor/selection.module.mjs +0 -22
  382. package/esm2020/lib/property-editor/editors/switch-editor/number.editor.mjs +0 -29
  383. package/esm2020/lib/property-editor/editors/switch-editor/number.module.mjs +0 -25
  384. package/esm2020/lib/property-editor/editors/text-editor/text.editor.mjs +0 -32
  385. package/esm2020/lib/property-editor/editors/text-editor/text.module.mjs +0 -24
  386. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +0 -32
  387. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.module.mjs +0 -24
  388. package/esm2020/lib/property-editor/editors/time-editor/time.editor.mjs +0 -43
  389. package/esm2020/lib/property-editor/editors/time-editor/time.module.mjs +0 -24
  390. package/esm2020/lib/property-editor/property-editor-renderer.directive.mjs +0 -154
  391. package/esm2020/lib/property-editor/property-editor.class.mjs +0 -101
  392. package/esm2020/lib/property-editor/property-editor.module.mjs +0 -196
  393. package/esm2020/lib/query-builder/query-builder-group.component.mjs +0 -124
  394. package/esm2020/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +0 -171
  395. package/esm2020/lib/query-builder/query-builder-rule.component.mjs +0 -395
  396. package/esm2020/lib/query-builder/query-builder.class.mjs +0 -20
  397. package/esm2020/lib/query-builder/query-builder.component.mjs +0 -82
  398. package/esm2020/lib/query-builder/query-builder.module.mjs +0 -62
  399. package/esm2020/lib/query-builder/query-builder.service.mjs +0 -197
  400. package/esm2020/lib/search-bar/search-bar.component.mjs +0 -283
  401. package/esm2020/lib/search-bar/search-bar.module.mjs +0 -63
  402. package/esm2020/lib/searchbox/searchbox.component.mjs +0 -79
  403. package/esm2020/lib/searchbox/searchbox.module.mjs +0 -24
  404. package/esm2020/lib/selectbox/selectbox.component.mjs +0 -961
  405. package/esm2020/lib/selectbox/selectbox.module.mjs +0 -44
  406. package/esm2020/lib/selectbox/selectbox2.component.mjs +0 -574
  407. package/esm2020/lib/selection-list/selection-list.component.mjs +0 -108
  408. package/esm2020/lib/selection-list/selection-list.module.mjs +0 -21
  409. package/esm2020/lib/switch/switch.component.mjs +0 -51
  410. package/esm2020/lib/switch/switch.module.mjs +0 -20
  411. package/esm2020/lib/tab-page/tab-page-Renderer.component.mjs +0 -71
  412. package/esm2020/lib/tab-page/tab-page-host.component.mjs +0 -116
  413. package/esm2020/lib/tab-page/tab-page.module.mjs +0 -21
  414. package/esm2020/lib/tab-page/tab-page.service.mjs +0 -156
  415. package/esm2020/lib/tab-strip/tab-strip.component.mjs +0 -36
  416. package/esm2020/lib/tab-strip/tab-strip.module.mjs +0 -19
  417. package/esm2020/lib/tab-view/dynamic-tabs.directive.mjs +0 -24
  418. package/esm2020/lib/tab-view/tab-view.component.mjs +0 -105
  419. package/esm2020/lib/tab-view/tab-view.module.mjs +0 -21
  420. package/esm2020/lib/tab-view/tab.component.mjs +0 -30
  421. package/esm2020/lib/textarea/textarea.component.mjs +0 -26
  422. package/esm2020/lib/textarea/textarea.module.mjs +0 -21
  423. package/esm2020/lib/textbox/textbox.component.mjs +0 -39
  424. package/esm2020/lib/textbox/textbox.module.mjs +0 -24
  425. package/esm2020/lib/time-picker/time-picker.component.mjs +0 -943
  426. package/esm2020/lib/time-picker/time-picker.module.mjs +0 -22
  427. package/esm2020/lib/toast/toast-message/toast-message.component.mjs +0 -74
  428. package/esm2020/lib/toast/toast-wrapper/toast-wrapper.component.mjs +0 -13
  429. package/esm2020/lib/toast/toast.module.mjs +0 -21
  430. package/esm2020/lib/toast/toast.service.mjs +0 -44
  431. package/esm2020/lib/toolbar/group-button/toolbar-group-button.component.mjs +0 -78
  432. package/esm2020/lib/toolbar/menu/toolbar-menu.component.mjs +0 -57
  433. package/esm2020/lib/toolbar/search/toolbar-search.component.mjs +0 -54
  434. package/esm2020/lib/toolbar/title/toolbar-title.component.mjs +0 -47
  435. package/esm2020/lib/toolbar/toolbar-item.mjs +0 -6
  436. package/esm2020/lib/toolbar/toolbar.component.mjs +0 -13
  437. package/esm2020/lib/toolbar/toolbar.module.mjs +0 -40
  438. package/esm2020/lib/tooltip/tooltip.directive.mjs +0 -100
  439. package/esm2020/lib/tooltip/tooltip.module.mjs +0 -19
  440. package/esm2020/lib/tree-side-menu/tree-side-menu.component.mjs +0 -646
  441. package/esm2020/lib/tree-side-menu/tree-side-menu.module.mjs +0 -35
  442. package/esm2020/lib/tree-view/tree-view.component.mjs +0 -775
  443. package/esm2020/lib/tree-view/tree-view.module.mjs +0 -22
  444. package/esm2020/lib/upload-file/upload-file.component.mjs +0 -208
  445. package/esm2020/lib/upload-file/upload-file.events.mjs +0 -2
  446. package/esm2020/lib/upload-file/upload-file.module.mjs +0 -24
  447. package/esm2020/lib/validation/validation-form.component.mjs +0 -65
  448. package/esm2020/lib/validation/validation-rule.widget.mjs +0 -111
  449. package/esm2020/lib/validation/validation.class.mjs +0 -2
  450. package/esm2020/lib/validation/validation.component.mjs +0 -89
  451. package/esm2020/lib/validation/validation.module.mjs +0 -34
  452. package/esm2020/public-api.mjs +0 -158
  453. package/fesm2015/acorex-components.mjs +0 -15988
  454. package/fesm2015/acorex-components.mjs.map +0 -1
  455. package/fesm2020/acorex-components.mjs +0 -15923
  456. package/fesm2020/acorex-components.mjs.map +0 -1
  457. package/lib/accordion/accordion.component.d.ts +0 -13
  458. package/lib/accordion/accordion.module.d.ts +0 -9
  459. package/lib/base/base-page.class.d.ts +0 -46
  460. package/lib/base/components.class.d.ts +0 -10
  461. package/lib/base/element.class.d.ts +0 -106
  462. package/lib/base/events.class.d.ts +0 -18
  463. package/lib/button/button.component.d.ts +0 -21
  464. package/lib/button/button.module.d.ts +0 -8
  465. package/lib/calendar/calendar-box/calendar-box.component.d.ts +0 -81
  466. package/lib/calendar/calendar-box/calendar-box.module.d.ts +0 -11
  467. package/lib/calendar/scheduler/scheduler-views.property.d.ts +0 -19
  468. package/lib/calendar/scheduler/scheduler.component.d.ts +0 -39
  469. package/lib/calendar/scheduler/scheduler.module.d.ts +0 -21
  470. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.d.ts +0 -25
  471. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.d.ts +0 -14
  472. package/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.d.ts +0 -16
  473. package/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.d.ts +0 -26
  474. package/lib/calendar/scheduler/views/month/scheduler-month-view.component.d.ts +0 -37
  475. package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +0 -28
  476. package/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.d.ts +0 -24
  477. package/lib/checkbox/checkbox.component.d.ts +0 -30
  478. package/lib/checkbox/checkbox.module.d.ts +0 -9
  479. package/lib/color-picker/color-box/color-box.component.d.ts +0 -25
  480. package/lib/color-picker/color-picker.component.d.ts +0 -30
  481. package/lib/color-picker/color-picker.module.d.ts +0 -13
  482. package/lib/context-menu/context-menu.component.d.ts +0 -22
  483. package/lib/context-menu/context-menu.directive.d.ts +0 -38
  484. package/lib/context-menu/context-menu.module.d.ts +0 -9
  485. package/lib/data-filter/columns/filter-column-date.component.d.ts +0 -22
  486. package/lib/data-filter/columns/filter-column-number.component.d.ts +0 -15
  487. package/lib/data-filter/columns/filter-column-selection.component.d.ts +0 -18
  488. package/lib/data-filter/columns/filter-column-string.component.d.ts +0 -15
  489. package/lib/data-filter/filter-panel/filter-panel.component.d.ts +0 -45
  490. package/lib/data-filter/filter.class.d.ts +0 -40
  491. package/lib/data-filter/filter.module.d.ts +0 -24
  492. package/lib/data-filter/toolbar/filter-toolbar.component.d.ts +0 -25
  493. package/lib/data-list/core/data-list.component.d.ts +0 -15
  494. package/lib/data-list/list/list.component.d.ts +0 -40
  495. package/lib/data-list/list/list.module.d.ts +0 -11
  496. package/lib/data-list/list/toolbar-list-view.component.d.ts +0 -17
  497. package/lib/data-source/datasource.component.d.ts +0 -16
  498. package/lib/data-source/datasource.module.d.ts +0 -7
  499. package/lib/date-picker/date-picker.component.d.ts +0 -81
  500. package/lib/date-picker/date-picker.module.d.ts +0 -14
  501. package/lib/dialog/dialog.component.d.ts +0 -14
  502. package/lib/dialog/dialog.module.d.ts +0 -10
  503. package/lib/dialog/dialog.service.d.ts +0 -36
  504. package/lib/drawer/content.component.d.ts +0 -7
  505. package/lib/drawer/drawer-container.component.d.ts +0 -10
  506. package/lib/drawer/drawer.component.d.ts +0 -34
  507. package/lib/drawer/drawer.module.d.ts +0 -10
  508. package/lib/dropdown/dropdown.component.d.ts +0 -38
  509. package/lib/dropdown/dropdown.module.d.ts +0 -13
  510. package/lib/fieldset/fieldset.component.d.ts +0 -11
  511. package/lib/fieldset/fieldset.module.d.ts +0 -8
  512. package/lib/form-group/form-group.component.d.ts +0 -14
  513. package/lib/form-group/form-group.module.d.ts +0 -8
  514. package/lib/label/label.component.d.ts +0 -9
  515. package/lib/label/label.module.d.ts +0 -8
  516. package/lib/loading/loading-indicator.component.d.ts +0 -9
  517. package/lib/loading/loading-panel.component.d.ts +0 -13
  518. package/lib/loading/loading.module.d.ts +0 -10
  519. package/lib/loading/loading.service.d.ts +0 -13
  520. package/lib/menu/menu-item.component.d.ts +0 -18
  521. package/lib/menu/menu.component.d.ts +0 -35
  522. package/lib/menu/menu.module.d.ts +0 -11
  523. package/lib/menu/menu2.component.d.ts +0 -21
  524. package/lib/number-box/number-box.component.d.ts +0 -52
  525. package/lib/number-box/number-box.module.d.ts +0 -10
  526. package/lib/page/content.component.d.ts +0 -8
  527. package/lib/page/footer.component.d.ts +0 -5
  528. package/lib/page/page.component.d.ts +0 -16
  529. package/lib/page/page.module.d.ts +0 -11
  530. package/lib/panel-box/panel-box.component.d.ts +0 -19
  531. package/lib/panel-box/panel-box.module.d.ts +0 -8
  532. package/lib/password-box/password-box.component.d.ts +0 -12
  533. package/lib/password-box/password-box.module.d.ts +0 -10
  534. package/lib/popover/custom-cdk-overlay.service.d.ts +0 -19
  535. package/lib/popover/overlay.service.d.ts +0 -31
  536. package/lib/popover/popover.component.d.ts +0 -34
  537. package/lib/popover/popover.module.d.ts +0 -8
  538. package/lib/popup/popup.component.d.ts +0 -40
  539. package/lib/popup/popup.module.d.ts +0 -13
  540. package/lib/popup/popup.service.d.ts +0 -22
  541. package/lib/progress-bar/progress-bar.component.d.ts +0 -7
  542. package/lib/progress-bar/progress-bar.module.d.ts +0 -8
  543. package/lib/property-editor/editors/check-editor/check-editor.d.ts +0 -19
  544. package/lib/property-editor/editors/check-editor/check.module.d.ts +0 -11
  545. package/lib/property-editor/editors/color-editor/color.editor.d.ts +0 -13
  546. package/lib/property-editor/editors/color-editor/color.module.d.ts +0 -12
  547. package/lib/property-editor/editors/column-editor/column.editor.d.ts +0 -34
  548. package/lib/property-editor/editors/column-editor/column.module.d.ts +0 -20
  549. package/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.d.ts +0 -44
  550. package/lib/property-editor/editors/conditional-color-editor/conditional-color.module.d.ts +0 -19
  551. package/lib/property-editor/editors/date-editor/date.editor.d.ts +0 -28
  552. package/lib/property-editor/editors/date-editor/date.module.d.ts +0 -12
  553. package/lib/property-editor/editors/number-editor/number.editor.d.ts +0 -20
  554. package/lib/property-editor/editors/number-editor/number.module.d.ts +0 -12
  555. package/lib/property-editor/editors/range-editor/range.editor.d.ts +0 -29
  556. package/lib/property-editor/editors/range-editor/range.module.d.ts +0 -18
  557. package/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.d.ts +0 -29
  558. package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +0 -28
  559. package/lib/property-editor/editors/selectbox-editor/selectbox.module.d.ts +0 -14
  560. package/lib/property-editor/editors/selection-editor/selection-editor.d.ts +0 -25
  561. package/lib/property-editor/editors/selection-editor/selection.module.d.ts +0 -11
  562. package/lib/property-editor/editors/switch-editor/number.editor.d.ts +0 -11
  563. package/lib/property-editor/editors/switch-editor/number.module.d.ts +0 -13
  564. package/lib/property-editor/editors/text-editor/text.editor.d.ts +0 -18
  565. package/lib/property-editor/editors/text-editor/text.module.d.ts +0 -12
  566. package/lib/property-editor/editors/textarea-editor/textarea.editor.d.ts +0 -17
  567. package/lib/property-editor/editors/textarea-editor/textarea.module.d.ts +0 -12
  568. package/lib/property-editor/editors/time-editor/time.editor.d.ts +0 -17
  569. package/lib/property-editor/editors/time-editor/time.module.d.ts +0 -12
  570. package/lib/property-editor/property-editor-renderer.directive.d.ts +0 -30
  571. package/lib/property-editor/property-editor.class.d.ts +0 -92
  572. package/lib/property-editor/property-editor.module.d.ts +0 -21
  573. package/lib/query-builder/query-builder-group.component.d.ts +0 -33
  574. package/lib/query-builder/query-builder-popup/query-builder-popup.component.d.ts +0 -35
  575. package/lib/query-builder/query-builder-rule.component.d.ts +0 -45
  576. package/lib/query-builder/query-builder.class.d.ts +0 -45
  577. package/lib/query-builder/query-builder.component.d.ts +0 -27
  578. package/lib/query-builder/query-builder.module.d.ts +0 -23
  579. package/lib/query-builder/query-builder.service.d.ts +0 -18
  580. package/lib/search-bar/search-bar.component.d.ts +0 -61
  581. package/lib/search-bar/search-bar.module.d.ts +0 -18
  582. package/lib/searchbox/searchbox.component.d.ts +0 -22
  583. package/lib/searchbox/searchbox.module.d.ts +0 -13
  584. package/lib/selectbox/selectbox.component.d.ts +0 -118
  585. package/lib/selectbox/selectbox.module.d.ts +0 -15
  586. package/lib/selectbox/selectbox2.component.d.ts +0 -103
  587. package/lib/selection-list/selection-list.component.d.ts +0 -32
  588. package/lib/selection-list/selection-list.module.d.ts +0 -10
  589. package/lib/switch/switch.component.d.ts +0 -20
  590. package/lib/switch/switch.module.d.ts +0 -9
  591. package/lib/tab-page/tab-page-Renderer.component.d.ts +0 -16
  592. package/lib/tab-page/tab-page-host.component.d.ts +0 -25
  593. package/lib/tab-page/tab-page.module.d.ts +0 -10
  594. package/lib/tab-page/tab-page.service.d.ts +0 -30
  595. package/lib/tab-strip/tab-strip.component.d.ts +0 -28
  596. package/lib/tab-strip/tab-strip.module.d.ts +0 -8
  597. package/lib/tab-view/dynamic-tabs.directive.d.ts +0 -16
  598. package/lib/tab-view/tab-view.component.d.ts +0 -26
  599. package/lib/tab-view/tab-view.module.d.ts +0 -10
  600. package/lib/tab-view/tab.component.d.ts +0 -12
  601. package/lib/textarea/textarea.component.d.ts +0 -12
  602. package/lib/textarea/textarea.module.d.ts +0 -8
  603. package/lib/textbox/textbox.component.d.ts +0 -16
  604. package/lib/textbox/textbox.module.d.ts +0 -11
  605. package/lib/time-picker/time-picker.component.d.ts +0 -52
  606. package/lib/time-picker/time-picker.module.d.ts +0 -11
  607. package/lib/toast/toast-message/toast-message.component.d.ts +0 -18
  608. package/lib/toast/toast-wrapper/toast-wrapper.component.d.ts +0 -8
  609. package/lib/toast/toast.module.d.ts +0 -9
  610. package/lib/toast/toast.service.d.ts +0 -18
  611. package/lib/toolbar/group-button/toolbar-group-button.component.d.ts +0 -12
  612. package/lib/toolbar/menu/toolbar-menu.component.d.ts +0 -24
  613. package/lib/toolbar/search/toolbar-search.component.d.ts +0 -16
  614. package/lib/toolbar/title/toolbar-title.component.d.ts +0 -9
  615. package/lib/toolbar/toolbar-item.d.ts +0 -3
  616. package/lib/toolbar/toolbar.component.d.ts +0 -8
  617. package/lib/toolbar/toolbar.module.d.ts +0 -14
  618. package/lib/tooltip/tooltip.directive.d.ts +0 -21
  619. package/lib/tooltip/tooltip.module.d.ts +0 -8
  620. package/lib/tree-side-menu/tree-side-menu.component.d.ts +0 -111
  621. package/lib/tree-side-menu/tree-side-menu.module.d.ts +0 -11
  622. package/lib/tree-view/tree-view.component.d.ts +0 -121
  623. package/lib/tree-view/tree-view.module.d.ts +0 -11
  624. package/lib/upload-file/upload-file.component.d.ts +0 -42
  625. package/lib/upload-file/upload-file.events.d.ts +0 -10
  626. package/lib/upload-file/upload-file.module.d.ts +0 -13
  627. package/lib/validation/validation-form.component.d.ts +0 -19
  628. package/lib/validation/validation-rule.widget.d.ts +0 -23
  629. package/lib/validation/validation.class.d.ts +0 -16
  630. package/lib/validation/validation.component.d.ts +0 -25
  631. package/lib/validation/validation.module.d.ts +0 -11
@@ -1,574 +0,0 @@
1
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, EventEmitter, Output, ViewChild, ChangeDetectorRef, ElementRef, ContentChild, NgZone, HostListener } from '@angular/core';
2
- import { AXTextBoxComponent } from '../textbox/textbox.component';
3
- import { AXDropdownComponent } from '../dropdown/dropdown.component';
4
- import { AXValidatableComponent } from '../base/element.class';
5
- import { AXDataSourceComponent } from '../data-source/datasource.component';
6
- import { AXValidation } from '../validation/validation.component';
7
- import { AXSearchBoxComponent } from '../searchbox/searchbox.component';
8
- import { AXConfig, AXObjectUtil, AXTranslator } from '@acorex/core';
9
- import { AXValueEvent } from '../base/events.class';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "../dropdown/dropdown.component";
12
- import * as i2 from "../textbox/textbox.component";
13
- import * as i3 from "../searchbox/searchbox.component";
14
- import * as i4 from "../checkbox/checkbox.component";
15
- import * as i5 from "@acorex/core";
16
- import * as i6 from "@angular/common";
17
- export class AXSelectBoxValueChangedEvent extends AXValueEvent {
18
- constructor() {
19
- super(...arguments);
20
- this.isUserInput = false;
21
- }
22
- }
23
- export class AXSelectBox2Component extends AXValidatableComponent {
24
- constructor(cdr, ref, zone) {
25
- super();
26
- this.cdr = cdr;
27
- this.ref = ref;
28
- this.zone = zone;
29
- this.showDropDownButton = true;
30
- this.readonly = false;
31
- this.rtl = AXConfig.get('layout.rtl');
32
- this.size = 'md';
33
- this.allowNull = true;
34
- this.textAlign = null;
35
- this.bufferSize = 10;
36
- this.remoteOperation = false;
37
- this.allowSearch = true;
38
- this.textField = 'text';
39
- this.valueField = 'value';
40
- this.selectionMode = 'single';
41
- this.selectionDataMode = 'value';
42
- this.currentfocusedIndex = -1;
43
- this.showLoading = false;
44
- this.skip = -1;
45
- this.searchText = '';
46
- this.text = '';
47
- this.totalCount = 0;
48
- this.itemsFiltered = [];
49
- this.isUserInput = false;
50
- this._items = [];
51
- this.itemsChange = new EventEmitter();
52
- this.onBlur = new EventEmitter();
53
- this.onFocus = new EventEmitter();
54
- this.valueChange = new EventEmitter();
55
- this.onValueChanged = new EventEmitter();
56
- }
57
- get dataSource() {
58
- return this._dataSource ? this._dataSource : this._contentDataSource;
59
- }
60
- set dataSource(v) {
61
- this._dataSource = v;
62
- }
63
- get validation() {
64
- return this._validation ? this._validation : this._contentValidation;
65
- }
66
- set validation(v) {
67
- this._validation = v;
68
- }
69
- get value() {
70
- return this._value;
71
- }
72
- set value(v) {
73
- if (v !== this._value) {
74
- const oldValue = AXObjectUtil.deepJSONClone(this._value);
75
- if (this.selectionMode === 'multiple') {
76
- this._value = Array.isArray(v) ? v : (v ? [v] : []);
77
- }
78
- else {
79
- this._value = Array.isArray(v) ? v[0] : v;
80
- }
81
- this.valueChange.emit(this._value);
82
- this.onValueChanged.emit({
83
- component: this,
84
- htmlElement: this.ref.nativeElement,
85
- isUserInput: this.isUserInput,
86
- oldValue,
87
- value: this._value,
88
- selectedKeys: this.selectedItems.map(c => c[this.valueField]),
89
- selectedItems: this.selectedItems.slice()
90
- });
91
- this.isUserInput = false;
92
- this.renderSelection();
93
- }
94
- }
95
- get selectedItems() {
96
- return this._selectedItems || [];
97
- }
98
- get items() {
99
- return this._items;
100
- }
101
- set items(v) {
102
- this._items = v;
103
- if (this.itemsChange) {
104
- this.itemsChange.emit(v);
105
- }
106
- this.renderSelection();
107
- }
108
- ngOnInit() {
109
- if (this.rtl == null) {
110
- this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';
111
- }
112
- }
113
- scrolled(e) {
114
- if (this.remoteOperation && this.totalCount > this.items.length && this.listContainer.nativeElement.scrollHeight != 0
115
- && this.listContainer.nativeElement.scrollHeight - this.listContainer.nativeElement.scrollTop - 300 < 50) {
116
- this.showLoading = true;
117
- if (this.skip !== this.items.length) {
118
- this.skip = this.items.length;
119
- const params = {};
120
- params.skip = this.items.length;
121
- params.take = this.bufferSize * (Math.floor(this.items.length / this.bufferSize) + 1);
122
- if (this.textbox) {
123
- params.searchText = this.text;
124
- }
125
- else {
126
- params.searchText = null;
127
- }
128
- this.fetch(params);
129
- }
130
- }
131
- }
132
- textChanged(e) {
133
- this.currentfocusedIndex = -1;
134
- if (this.remoteOperation) {
135
- this.searchText = this.text;
136
- this.items = [];
137
- const params = {};
138
- params.searchText = this.text;
139
- params.skip = 0;
140
- params.take = this.bufferSize;
141
- this.fetch(params);
142
- }
143
- }
144
- renderSelection() {
145
- const func = () => {
146
- if (!this.value) {
147
- return [];
148
- }
149
- if ((this.items?.length > 0) && this.selectionDataMode == 'value') {
150
- const orgRes = this.items.filter(i => {
151
- if (Array.isArray(this.value)) {
152
- return this.value.some(ii => {
153
- if (typeof ii === 'object') {
154
- return i[this.valueField] === ii[this.valueField];
155
- }
156
- else {
157
- return i[this.valueField] === ii;
158
- }
159
- });
160
- }
161
- else {
162
- if (typeof this.value === 'object') {
163
- return i[this.valueField] === this.value[this.valueField];
164
- }
165
- else {
166
- return i[this.valueField] === this.value;
167
- }
168
- }
169
- });
170
- if (orgRes.length > 0) {
171
- return orgRes;
172
- }
173
- }
174
- if (Array.isArray(this.value)) {
175
- return this.value.map(ii => {
176
- if (typeof ii === 'object' && ii[this.textField]) {
177
- return ii;
178
- }
179
- else {
180
- const fake = {};
181
- fake[this.valueField] = this.value;
182
- fake[this.textField] = AXTranslator.get('common.loading');
183
- return fake;
184
- }
185
- });
186
- }
187
- else {
188
- if (typeof this.value === 'object' && this.value[this.textField]) {
189
- return [this.value];
190
- }
191
- else {
192
- const fake = {};
193
- fake[this.valueField] = this.value;
194
- fake[this.textField] = AXTranslator.get('common.loading');
195
- return [fake];
196
- }
197
- }
198
- };
199
- this._selectedItems = func();
200
- this.cdr.markForCheck();
201
- }
202
- ngAfterViewInit() {
203
- if (this.bufferSize < 10) {
204
- this.bufferSize = 10;
205
- }
206
- if (!this.remoteOperation) {
207
- this.refresh();
208
- }
209
- }
210
- dropdownToggle(e) {
211
- if (this.dropdown.isOpen) {
212
- this.currentfocusedIndex = this.getItems().indexOf(this.selectedItems[this.selectedItems.length - 1]);
213
- this.focusOnSearchBox();
214
- this.focusOnCurrentFocusedIndex();
215
- }
216
- else {
217
- this.focus();
218
- }
219
- }
220
- ngAfterContentInit() {
221
- this.initValidation(this.ref, 'value', this.validation);
222
- if (this.dataSource) {
223
- if (this.allowSearch === false) {
224
- this.fetch();
225
- }
226
- this.dataSource.onDataReceived.subscribe((c) => {
227
- this.showLoading = false;
228
- this.dataReceived(c.data.result);
229
- });
230
- }
231
- this.cdr.markForCheck();
232
- this.cdr.detectChanges();
233
- }
234
- dataReceived(data) {
235
- if (this.remoteOperation) {
236
- if (this.searchText && this.searchText != null && this.searchText !== '') {
237
- if (data.totalCount) {
238
- this.items = data.items;
239
- this.totalCount = data.totalCount;
240
- }
241
- else {
242
- this.items = data.items;
243
- this.totalCount = data.items == undefined ? 0 : data.items.length;
244
- }
245
- }
246
- else if (data.items && data.items.length === data.totalCount) {
247
- this.items = data.items;
248
- this.totalCount = data.items.length;
249
- }
250
- else if (data.totalCount) {
251
- data.items.forEach(elm => {
252
- this.items.push(elm);
253
- });
254
- this.totalCount = data.totalCount;
255
- }
256
- else {
257
- data.forEach(elm => {
258
- this.items.push(elm);
259
- });
260
- this.totalCount = data.length;
261
- }
262
- }
263
- else {
264
- this.items = data;
265
- }
266
- this.renderSelection();
267
- this.cdr.markForCheck();
268
- this.cdr.detectChanges();
269
- }
270
- fetch(params = {}) {
271
- if (this.dataSource) {
272
- this.showLoading = true;
273
- this.dataSource.fetch(params);
274
- }
275
- }
276
- refresh() {
277
- const params = {};
278
- if (this.remoteOperation) {
279
- params.skip = 0;
280
- this.skip = 0;
281
- params.take = this.bufferSize;
282
- }
283
- if (this.dataSource !== undefined) {
284
- this.items = [];
285
- this.fetch(params);
286
- }
287
- }
288
- handleItemRemoveClick(item) {
289
- this.text = '';
290
- this.isUserInput = true;
291
- if (Array.isArray(this.value)) {
292
- this.value = this.value.filter(c => (typeof c === 'object') ? c[this.valueField] !== item[this.valueField] : c !== item[this.valueField]);
293
- }
294
- else {
295
- this.value = null;
296
- }
297
- this.cdr.markForCheck();
298
- }
299
- onTextBoxClick(e) {
300
- if (this.disabled === false && this.readonly === false) {
301
- this.open();
302
- }
303
- }
304
- handleItemClick(e, item) {
305
- this.isUserInput = true;
306
- if (this.selectionMode === 'single') {
307
- this.selectItems(item);
308
- this.close();
309
- }
310
- else {
311
- if (Array.isArray(this.value) && this.value.length > 0) {
312
- if (this.value.some(c => this.internalGetItemValue(c) === this.internalGetItemValue(item))) {
313
- this.unselectItems(item);
314
- }
315
- else {
316
- this.selectItems(item);
317
- }
318
- }
319
- else {
320
- this.selectItems(item);
321
- }
322
- }
323
- this.cdr.markForCheck();
324
- this.focusOnSearchBox();
325
- }
326
- internalGetItemByDataMode(item) {
327
- return this.selectionDataMode === 'item' ? item : item[this.valueField];
328
- }
329
- internalGetItemValue(item) {
330
- return typeof item === 'object' ? item[this.valueField] : item;
331
- }
332
- handleKeyDown(e) {
333
- if (e.key === 'Escape' || this.disabled || this.readonly) {
334
- this.close();
335
- e.preventDefault();
336
- return;
337
- }
338
- const isLetter = new RegExp(/[a-zA-Z0-9\-]/).test(String.fromCharCode(e.keyCode));
339
- if (this.textbox.isFocused()) {
340
- if (e.key === 'Backspace' && e.type === 'keydown' &&
341
- ((this.allowNull === true && this.selectedItems.length > 0) ||
342
- (this.allowNull === false && this.selectedItems.length > 1))) {
343
- this.isUserInput = true;
344
- this.unselectItems(this.selectedItems.pop());
345
- e.preventDefault();
346
- return;
347
- }
348
- else if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && !this.dropdown.isOpen && e.type === 'keydown') {
349
- if (this.selectionMode === 'single') {
350
- this.isUserInput = true;
351
- this.selectedItemByIndex(this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1));
352
- if (e.ctrlKey) {
353
- this.open();
354
- }
355
- }
356
- else {
357
- this.open();
358
- }
359
- e.preventDefault();
360
- return;
361
- }
362
- else if (isLetter) {
363
- this.text = e.key;
364
- this.open();
365
- e.preventDefault();
366
- return;
367
- }
368
- }
369
- if (this.dropdown.isOpen) {
370
- if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0) {
371
- this.isUserInput = true;
372
- this.selectItemByNav((e.key === 'ArrowDown' ? 1 : -1));
373
- e.preventDefault();
374
- return;
375
- }
376
- if ((e.key === 'Enter' || e.code === 'Space')) {
377
- const focusedItem = this.getItems()[this.currentfocusedIndex];
378
- if (focusedItem) {
379
- if (this.selectionMode === 'single') {
380
- this.isUserInput = true;
381
- this.selectItems(focusedItem);
382
- this.close();
383
- }
384
- else {
385
- this.isUserInput = true;
386
- this.toggleSelect(focusedItem);
387
- }
388
- }
389
- e.preventDefault();
390
- return;
391
- }
392
- }
393
- }
394
- unselectItems(...items) {
395
- if (!items || items.length === 0) {
396
- this.value = null;
397
- }
398
- else if (Array.isArray(this.value)) {
399
- this.value = this.value.filter(c => !items.some(d => this.internalGetItemValue(c) === this.internalGetItemValue(d)));
400
- }
401
- else {
402
- this.value = null;
403
- }
404
- this.cdr.markForCheck();
405
- }
406
- selectItems(...items) {
407
- if (items && items.length) {
408
- if (this.selectionMode === 'single') {
409
- this.value = this.internalGetItemByDataMode(items[0]);
410
- }
411
- else {
412
- this.value = (this.value || []).concat(items.map(c => this.internalGetItemByDataMode(c)));
413
- }
414
- }
415
- }
416
- toggleSelect(...items) {
417
- if (items && items.length) {
418
- items.forEach(item => {
419
- this.selectedItems.includes(item) ? this.unselectItems(item) : this.selectItems(item);
420
- });
421
- }
422
- }
423
- close() {
424
- this.dropdown.close();
425
- }
426
- open() {
427
- this.dropdown.open();
428
- }
429
- focus() {
430
- this.text = null;
431
- this.textbox.focus();
432
- }
433
- focusOnSearchBox() {
434
- const inputedVal = this.text;
435
- if (this.allowSearch === true) {
436
- setTimeout(() => {
437
- if (this.searchBox) {
438
- this.searchBox.value = inputedVal;
439
- this.searchBox.focus();
440
- }
441
- }, 0);
442
- }
443
- else {
444
- this.textbox.focus();
445
- }
446
- }
447
- getItems() {
448
- if (this.items == null) {
449
- return [];
450
- }
451
- return (!this.remoteOperation && this.text && this.text !== '') ? this.items.filter((c) => c[this.textField].toLowerCase().includes(this.text.toLowerCase())) : this.items;
452
- }
453
- isItemSelected(item) {
454
- return this.selectedItems.some(c => c[this.valueField] === item[this.valueField]);
455
- }
456
- selectItemByNav(sign = null) {
457
- if (sign == null) {
458
- this.currentfocusedIndex = this.getItems().indexOf(this.selectedItems[this.selectedItems.length - 1]);
459
- }
460
- else {
461
- sign === -1 ? this.currentfocusedIndex-- : this.currentfocusedIndex++;
462
- }
463
- if (this.currentfocusedIndex < 0) {
464
- this.currentfocusedIndex = 0;
465
- }
466
- if (this.currentfocusedIndex > this.getItems().length - 1) {
467
- this.currentfocusedIndex = this.getItems().length - 1;
468
- }
469
- // set scroll
470
- this.focusOnCurrentFocusedIndex();
471
- }
472
- focusOnCurrentFocusedIndex() {
473
- if (this.listContainer) {
474
- this.zone.runOutsideAngular(() => {
475
- const itemDiv = this.listContainer.nativeElement.querySelector(`.list-item:nth-child(${this.currentfocusedIndex})`);
476
- if (itemDiv) {
477
- itemDiv.scrollIntoView({ behavior: 'auto' });
478
- }
479
- });
480
- }
481
- }
482
- selectedItemByIndex(index) {
483
- if (index < 0) {
484
- index = 0;
485
- }
486
- if (index > this.getItems().length - 1) {
487
- index = this.getItems().length - 1;
488
- }
489
- this.selectItems(this.getItems()[index]);
490
- this.currentfocusedIndex = index;
491
- }
492
- }
493
- AXSelectBox2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXSelectBox2Component, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
494
- AXSelectBox2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXSelectBox2Component, selector: "ax-select-box2", inputs: { showDropDownButton: "showDropDownButton", readonly: "readonly", rtl: "rtl", disabled: "disabled", placeholder: "placeholder", size: "size", allowNull: "allowNull", textAlign: "textAlign", bufferSize: "bufferSize", remoteOperation: "remoteOperation", allowSearch: "allowSearch", textField: "textField", valueField: "valueField", selectionMode: "selectionMode", selectionDataMode: "selectionDataMode", dataSource: "dataSource", validation: "validation", value: "value", items: "items" }, outputs: { itemsChange: "itemsChange", onBlur: "onBlur", onFocus: "onFocus", valueChange: "valueChange", onValueChanged: "onValueChanged" }, host: { listeners: { "document:keydown": "handleKeyDown($event)" }, styleAttribute: "width: 100%" }, providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBox2Component }], queries: [{ propertyName: "_contentDataSource", first: true, predicate: AXDataSourceComponent, descendants: true, static: true }, { propertyName: "_contentValidation", first: true, predicate: AXValidation, descendants: true, static: true }], viewQueries: [{ propertyName: "span", first: true, predicate: AXTextBoxComponent, descendants: true, static: true }, { propertyName: "textbox", first: true, predicate: AXTextBoxComponent, descendants: true, static: true }, { propertyName: "listContainer", first: true, predicate: ["listContainer"], descendants: true, static: true }, { propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true }, { propertyName: "textBoxSelectBox", first: true, predicate: ["textBoxSelectBox"], descendants: true, static: true }, { propertyName: "dropdown", first: true, predicate: ["d"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ax-drop-down [size]=\"size\" [rtl]=\"rtl\" [showDropDownButton]=\"showDropDownButton\" [disabled]=\"disabled\"\r\n [readonly]=\"readonly\" #d (dropdownToggle)=\"dropdownToggle($event)\" [loading]=\"showLoading\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n <div class=\"ax chips-container\" [horizontalScroll]=\"40\">\r\n <div *ngFor=\"let item of selectedItems\" class=\"chips\" [class.chips-blank]=\"selectionMode === 'single'\"\r\n [title]=\"item[textField]\">\r\n <span class=\"chips-text\">\r\n {{item[textField]}}\r\n </span>\r\n <span class=\"close-icon\" (click)=\"handleItemRemoveClick(item)\"\r\n *ngIf=\"(readonly!=true) && disabled!=true && (allowNull==true || (selectedItems.length > 1))\">\r\n <i class=\"far fa-times close\"></i>\r\n </span>\r\n </div>\r\n <div class=\"search-wrapper\" (click)=\"onTextBoxClick($event)\">\r\n <ax-text-box #textBoxSelectBox [textAlign]=\"textAlign\"\r\n [placeholder]=\"selectedItems.length == 0 ? placeholder : ''\" [readonly]=\"readonly\"\r\n [disabled]=\"disabled\" [size]=\"size\">\r\n </ax-text-box>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container end>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container panel>\r\n <div *ngIf=\"allowSearch\" class=\"search-wrapper\" style=\"padding: 0.7em;\">\r\n <ax-search-box #searchBox [(value)]=\"text\" size=\"sm\"\r\n (textChanged)=\"textChanged($event)\" (onButtonClick)=\"textChanged($event)\">\r\n </ax-search-box>\r\n </div>\r\n <div class=\"ax list-container\">\r\n <div #listContainer style=\"max-height: 300px;overflow-y: auto;width: 100%;\" (scroll)=\"scrolled($event)\">\r\n <ng-container *ngIf=\"getItems().length>0; then thenTemplate; else elseTemplate\"></ng-container>\r\n <ng-template #thenTemplate>\r\n <div class=\"list-item\" *ngFor=\"let item of getItems();let i = index\"\r\n [class.focused]=\"i==currentfocusedIndex\" (click)=\"handleItemClick($event,item)\"\r\n [class.selected]=\"isItemSelected(item)\">\r\n <div>\r\n <div>\r\n <ax-check-box *ngIf=\"selectionMode !== 'single'\" [size]=\"size\" [value]=\"isItemSelected(item)\"\r\n [disabled]=\"!allowNull && selectedItems.length === 1 && isItemSelected(item)\"\r\n (onClick)=\"handleItemClick($event,item)\">\r\n </ax-check-box>\r\n </div>\r\n <div style=\"white-space: nowrap;text-overflow: ellipsis;overflow: hidden;\"\r\n [title]=\"item[textField]\"\r\n [ngStyle]=\"(selectionMode !== 'single') ? {'padding-inline-start': '2em'}:''\">\r\n {{ item[textField] }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <div *ngIf=\"showLoading\" class=\"ax-pad-sm\" style=\"text-align: center;\">\r\n <i class=\"far fa-spinner-third fa-pulse fa-2x\" style=\"color: var(--ax-primary-color);\"></i>\r\n </div>\r\n <ng-template #elseTemplate>\r\n <ng-container *ngIf=\"showLoading == true; then searchTemplate else noDataTemplate\"></ng-container>\r\n <ng-template #searchTemplate>\r\n <div class=\"list-item\">\r\n {{'common.searching' | trans}}\r\n </div>\r\n </ng-template>\r\n <ng-template #noDataTemplate>\r\n <div class=\"list-item\">\r\n {{'common.noDataFound' | trans}}\r\n </div>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ax-drop-down>", components: [{ type: i1.AXDropdownComponent, selector: "ax-drop-down", inputs: ["rtl", "readonly", "loading", "dropdownWidth"], outputs: ["dropdownToggle", "onButtonClick"] }, { type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "type", "showMask", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }, { type: i3.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["placeholder", "text", "delay"], outputs: ["textChanged", "onButtonClick"] }, { type: i4.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["readonly", "disabled", "size", "label", "tabIndex", "indeterminate", "value"], outputs: ["onValueChanged", "valueChange", "onClick"] }], directives: [{ type: i5.AXHorizontalScrollDirective, selector: "[horizontalScroll]", inputs: ["horizontalScroll"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "trans": i5.AXTranslatorPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
495
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXSelectBox2Component, decorators: [{
496
- type: Component,
497
- args: [{ selector: 'ax-select-box2', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { style: 'width: 100%' }, providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBox2Component }], template: "<ax-drop-down [size]=\"size\" [rtl]=\"rtl\" [showDropDownButton]=\"showDropDownButton\" [disabled]=\"disabled\"\r\n [readonly]=\"readonly\" #d (dropdownToggle)=\"dropdownToggle($event)\" [loading]=\"showLoading\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n <div class=\"ax chips-container\" [horizontalScroll]=\"40\">\r\n <div *ngFor=\"let item of selectedItems\" class=\"chips\" [class.chips-blank]=\"selectionMode === 'single'\"\r\n [title]=\"item[textField]\">\r\n <span class=\"chips-text\">\r\n {{item[textField]}}\r\n </span>\r\n <span class=\"close-icon\" (click)=\"handleItemRemoveClick(item)\"\r\n *ngIf=\"(readonly!=true) && disabled!=true && (allowNull==true || (selectedItems.length > 1))\">\r\n <i class=\"far fa-times close\"></i>\r\n </span>\r\n </div>\r\n <div class=\"search-wrapper\" (click)=\"onTextBoxClick($event)\">\r\n <ax-text-box #textBoxSelectBox [textAlign]=\"textAlign\"\r\n [placeholder]=\"selectedItems.length == 0 ? placeholder : ''\" [readonly]=\"readonly\"\r\n [disabled]=\"disabled\" [size]=\"size\">\r\n </ax-text-box>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container end>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container panel>\r\n <div *ngIf=\"allowSearch\" class=\"search-wrapper\" style=\"padding: 0.7em;\">\r\n <ax-search-box #searchBox [(value)]=\"text\" size=\"sm\"\r\n (textChanged)=\"textChanged($event)\" (onButtonClick)=\"textChanged($event)\">\r\n </ax-search-box>\r\n </div>\r\n <div class=\"ax list-container\">\r\n <div #listContainer style=\"max-height: 300px;overflow-y: auto;width: 100%;\" (scroll)=\"scrolled($event)\">\r\n <ng-container *ngIf=\"getItems().length>0; then thenTemplate; else elseTemplate\"></ng-container>\r\n <ng-template #thenTemplate>\r\n <div class=\"list-item\" *ngFor=\"let item of getItems();let i = index\"\r\n [class.focused]=\"i==currentfocusedIndex\" (click)=\"handleItemClick($event,item)\"\r\n [class.selected]=\"isItemSelected(item)\">\r\n <div>\r\n <div>\r\n <ax-check-box *ngIf=\"selectionMode !== 'single'\" [size]=\"size\" [value]=\"isItemSelected(item)\"\r\n [disabled]=\"!allowNull && selectedItems.length === 1 && isItemSelected(item)\"\r\n (onClick)=\"handleItemClick($event,item)\">\r\n </ax-check-box>\r\n </div>\r\n <div style=\"white-space: nowrap;text-overflow: ellipsis;overflow: hidden;\"\r\n [title]=\"item[textField]\"\r\n [ngStyle]=\"(selectionMode !== 'single') ? {'padding-inline-start': '2em'}:''\">\r\n {{ item[textField] }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <div *ngIf=\"showLoading\" class=\"ax-pad-sm\" style=\"text-align: center;\">\r\n <i class=\"far fa-spinner-third fa-pulse fa-2x\" style=\"color: var(--ax-primary-color);\"></i>\r\n </div>\r\n <ng-template #elseTemplate>\r\n <ng-container *ngIf=\"showLoading == true; then searchTemplate else noDataTemplate\"></ng-container>\r\n <ng-template #searchTemplate>\r\n <div class=\"list-item\">\r\n {{'common.searching' | trans}}\r\n </div>\r\n </ng-template>\r\n <ng-template #noDataTemplate>\r\n <div class=\"list-item\">\r\n {{'common.noDataFound' | trans}}\r\n </div>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ax-drop-down>" }]
498
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { span: [{
499
- type: ViewChild,
500
- args: [AXTextBoxComponent, { static: true }]
501
- }], textbox: [{
502
- type: ViewChild,
503
- args: [AXTextBoxComponent, { static: true }]
504
- }], listContainer: [{
505
- type: ViewChild,
506
- args: ['listContainer', { static: true }]
507
- }], searchBox: [{
508
- type: ViewChild,
509
- args: ['searchBox', { static: false }]
510
- }], textBoxSelectBox: [{
511
- type: ViewChild,
512
- args: ['textBoxSelectBox', { static: true }]
513
- }], _contentDataSource: [{
514
- type: ContentChild,
515
- args: [AXDataSourceComponent, { static: true }]
516
- }], _contentValidation: [{
517
- type: ContentChild,
518
- args: [AXValidation, { static: true }]
519
- }], dropdown: [{
520
- type: ViewChild,
521
- args: ['d', { static: true }]
522
- }], showDropDownButton: [{
523
- type: Input
524
- }], readonly: [{
525
- type: Input
526
- }], rtl: [{
527
- type: Input
528
- }], disabled: [{
529
- type: Input
530
- }], placeholder: [{
531
- type: Input
532
- }], size: [{
533
- type: Input
534
- }], allowNull: [{
535
- type: Input
536
- }], textAlign: [{
537
- type: Input
538
- }], bufferSize: [{
539
- type: Input
540
- }], remoteOperation: [{
541
- type: Input
542
- }], allowSearch: [{
543
- type: Input
544
- }], textField: [{
545
- type: Input
546
- }], valueField: [{
547
- type: Input
548
- }], selectionMode: [{
549
- type: Input
550
- }], selectionDataMode: [{
551
- type: Input
552
- }], dataSource: [{
553
- type: Input
554
- }], validation: [{
555
- type: Input
556
- }], value: [{
557
- type: Input
558
- }], items: [{
559
- type: Input
560
- }], itemsChange: [{
561
- type: Output
562
- }], onBlur: [{
563
- type: Output
564
- }], onFocus: [{
565
- type: Output
566
- }], valueChange: [{
567
- type: Output
568
- }], onValueChanged: [{
569
- type: Output
570
- }], handleKeyDown: [{
571
- type: HostListener,
572
- args: ['document:keydown', ['$event']]
573
- }] } });
574
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Ym94Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3NlbGVjdGJveC9zZWxlY3Rib3gyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvc2VsZWN0Ym94L3NlbGVjdGJveDIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBK0Qsc0JBQXNCLEVBQXdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEosT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7O0FBR3BELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxZQUF5QjtJQUEzRTs7UUFHSSxnQkFBVyxHQUFZLEtBQUssQ0FBQztJQUdqQyxDQUFDO0NBQUE7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LEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBY0ssVUFBVTtzQkFEcEIsS0FBSztnQkFVSyxVQUFVO3NCQURwQixLQUFLO2dCQWVLLEtBQUs7c0JBRGYsS0FBSztnQkFtQ0ssS0FBSztzQkFEZixLQUFLO2dCQWFOLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxNQUFNO3NCQURMLE1BQU07Z0JBSVAsT0FBTztzQkFETixNQUFNO2dCQUlBLFdBQVc7c0JBRGpCLE1BQU07Z0JBSUEsY0FBYztzQkFEcEIsTUFBTTtnQkF1UFAsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBJbnB1dCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIENvbnRlbnRDaGlsZCxcclxuICAgIE5nWm9uZSxcclxuICAgIEhvc3RMaXN0ZW5lclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWFRleHRCb3hDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0Ym94L3RleHRib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYQmFzZVNpemFibGVDb21wb25lbnQsIEFYQmFzZUlucHV0Q29tcG9uZW50LCBBWEVsZW1lbnRTaXplLCBBWFZhbGlkYXRhYmxlQ29tcG9uZW50LCBBWEJhc2VWYWx1ZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvZWxlbWVudC5jbGFzcyc7XHJcbmltcG9ydCB7IEFYRGF0YVNvdXJjZUNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGEtc291cmNlL2RhdGFzb3VyY2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgfSBmcm9tICcuLi9kYXRhLXNvdXJjZS9yZWFkLXBhcmFtJztcclxuaW1wb3J0IHsgQVhTZWFyY2hCb3hDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2hib3gvc2VhcmNoYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYQ29uZmlnLCBBWE9iamVjdFV0aWwsIEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IEFYVmFsdWVFdmVudCB9IGZyb20gJy4uL2Jhc2UvZXZlbnRzLmNsYXNzJztcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQVhTZWxlY3RCb3hWYWx1ZUNoYW5nZWRFdmVudCBleHRlbmRzIEFYVmFsdWVFdmVudDxhbnkgfCBhbnlbXT4ge1xyXG4gICAgdmFsdWU/OiBhbnk7XHJcbiAgICBvbGRWYWx1ZT86IGFueTtcclxuICAgIGlzVXNlcklucHV0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZEtleXM/OiBhbnlbXTtcclxuICAgIHNlbGVjdGVkSXRlbXM/OiBhbnlbXTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2F4LXNlbGVjdC1ib3gyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3Rib3gyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGhvc3Q6IHsgc3R5bGU6J3dpZHRoOiAxMDAlJyB9LFxyXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWFZhbGlkYXRhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhTZWxlY3RCb3gyQ29tcG9uZW50IH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWFNlbGVjdEJveDJDb21wb25lbnQgZXh0ZW5kcyBBWFZhbGlkYXRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCwgQVhCYXNlSW5wdXRDb21wb25lbnQsIEFYQmFzZVZhbHVlQ29tcG9uZW50PGFueT57XHJcblxyXG4gICAgQFZpZXdDaGlsZChBWFRleHRCb3hDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBzcGFuOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgICBAVmlld0NoaWxkKEFYVGV4dEJveENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHRleHRib3g6IEFYVGV4dEJveENvbXBvbmVudDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdsaXN0Q29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIGxpc3RDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaEJveCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gICAgc2VhcmNoQm94OiBBWFNlYXJjaEJveENvbXBvbmVudDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCd0ZXh0Qm94U2VsZWN0Qm94JywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHRleHRCb3hTZWxlY3RCb3g6IEFYVGV4dEJveENvbXBvbmVudDtcclxuXHJcbiAgICBAQ29udGVudENoaWxkKEFYRGF0YVNvdXJjZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHByaXZhdGUgX2NvbnRlbnREYXRhU291cmNlOiBBWERhdGFTb3VyY2VDb21wb25lbnQ7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZChBWFZhbGlkYXRpb24sIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwcml2YXRlIF9jb250ZW50VmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2QnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgZHJvcGRvd246IEFYRHJvcGRvd25Db21wb25lbnQ7XHJcblxyXG5cclxuICAgIEBJbnB1dCgpIHNob3dEcm9wRG93bkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgcnRsOiBib29sZWFuID0gQVhDb25maWcuZ2V0KCdsYXlvdXQucnRsJyk7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzaXplOiBBWEVsZW1lbnRTaXplID0gJ21kJztcclxuICAgIEBJbnB1dCgpIGFsbG93TnVsbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSB0ZXh0QWxpZ246ICdyaWdodCcgfCAnbGVmdCcgfCBudWxsID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIGJ1ZmZlclNpemU6IG51bWJlciA9IDEwO1xyXG4gICAgQElucHV0KCkgcmVtb3RlT3BlcmF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBhbGxvd1NlYXJjaDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSB0ZXh0RmllbGQ6IHN0cmluZyA9ICd0ZXh0JztcclxuICAgIEBJbnB1dCgpIHZhbHVlRmllbGQ6IHN0cmluZyA9ICd2YWx1ZSc7XHJcbiAgICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiAnc2luZ2xlJyB8ICdtdWx0aXBsZScgPSAnc2luZ2xlJztcclxuICAgIEBJbnB1dCgpIHNlbGVjdGlvbkRhdGFNb2RlOiAndmFsdWUnIHwgJ2l0ZW0nID0gJ3ZhbHVlJztcclxuXHJcbiAgICBjdXJyZW50Zm9jdXNlZEluZGV4OiBudW1iZXIgPSAtMTtcclxuICAgIHNob3dMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBza2lwOiBudW1iZXIgPSAtMTtcclxuICAgIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gICAgdGV4dDogc3RyaW5nID0gJyc7XHJcbiAgICB0b3RhbENvdW50OiBudW1iZXIgPSAwO1xyXG4gICAgaXRlbXNGaWx0ZXJlZDogYW55W10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIGlzVXNlcklucHV0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHJpdmF0ZSBfZGF0YVNvdXJjZTogQVhEYXRhU291cmNlQ29tcG9uZW50O1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgZGF0YVNvdXJjZSgpOiBBWERhdGFTb3VyY2VDb21wb25lbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlID8gdGhpcy5fZGF0YVNvdXJjZSA6IHRoaXMuX2NvbnRlbnREYXRhU291cmNlO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNldCBkYXRhU291cmNlKHY6IEFYRGF0YVNvdXJjZUNvbXBvbmVudCkge1xyXG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSB2O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3ZhbGlkYXRpb246IEFYVmFsaWRhdGlvbjtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IHZhbGlkYXRpb24oKTogQVhWYWxpZGF0aW9uIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbiA/IHRoaXMuX3ZhbGlkYXRpb24gOiB0aGlzLl9jb250ZW50VmFsaWRhdGlvbjtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgdmFsaWRhdGlvbih2OiBBWFZhbGlkYXRpb24pIHtcclxuICAgICAgICB0aGlzLl92YWxpZGF0aW9uID0gdjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHpvbmU6IE5nWm9uZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgX3ZhbHVlOiBhbnkgfCBhbnlbXTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueSB8IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHY6IGFueSB8IGFueVtdKSB7XHJcbiAgICAgICAgaWYgKHYgIT09IHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gQVhPYmplY3RVdGlsLmRlZXBKU09OQ2xvbmUodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IEFycmF5LmlzQXJyYXkodikgPyB2IDogKHYgPyBbdl0gOiBbXSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IEFycmF5LmlzQXJyYXkodikgPyB2WzBdIDogdjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBpc1VzZXJJbnB1dDogdGhpcy5pc1VzZXJJbnB1dCxcclxuICAgICAgICAgICAgICAgIG9sZFZhbHVlLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuX3ZhbHVlLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzOiB0aGlzLnNlbGVjdGVkSXRlbXMubWFwKGMgPT4gY1t0aGlzLnZhbHVlRmllbGRdKSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM6IHRoaXMuc2VsZWN0ZWRJdGVtcy5zbGljZSgpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmlzVXNlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyU2VsZWN0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZEl0ZW1zOiBhbnlbXTtcclxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWRJdGVtcygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMgfHwgW107XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfaXRlbXM6IGFueVtdID0gW107XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBpdGVtcygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNldCBpdGVtcyh2OiBhbnlbXSkge1xyXG4gICAgICAgIHRoaXMuX2l0ZW1zID0gdjtcclxuICAgICAgICBpZiAodGhpcy5pdGVtc0NoYW5nZSkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQodik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVuZGVyU2VsZWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBpdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBvbkJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIG9uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhTZWxlY3RCb3hWYWx1ZUNoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYU2VsZWN0Qm94VmFsdWVDaGFuZ2VkRXZlbnQ+KCk7XHJcblxyXG5cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5ydGwgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLnJ0bCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2RpcmVjdGlvbicpID09PSAncnRsJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2Nyb2xsZWQoZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiB0aGlzLnRvdGFsQ291bnQgPiB0aGlzLml0ZW1zLmxlbmd0aCAmJiB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgIT0gMFxyXG4gICAgICAgICAgICAmJiB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgLSAzMDAgPCA1MCkge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNraXAgIT09IHRoaXMuaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNraXAgPSB0aGlzLml0ZW1zLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXM6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgPSB7fTtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5za2lwID0gdGhpcy5pdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMudGFrZSA9IHRoaXMuYnVmZmVyU2l6ZSAqIChNYXRoLmZsb29yKHRoaXMuaXRlbXMubGVuZ3RoIC8gdGhpcy5idWZmZXJTaXplKSArIDEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGV4dGJveCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcy5zZWFyY2hUZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuc2VhcmNoVGV4dCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoKHBhcmFtcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGV4dENoYW5nZWQoZSkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA9IC0xO1xyXG4gICAgICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLnRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1zOiBBWERhdGFTb3VyY2VSZWFkUGFyYW1zID0ge307XHJcbiAgICAgICAgICAgIHBhcmFtcy5zZWFyY2hUZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgICAgICAgICBwYXJhbXMuc2tpcCA9IDA7XHJcbiAgICAgICAgICAgIHBhcmFtcy50YWtlID0gdGhpcy5idWZmZXJTaXplO1xyXG4gICAgICAgICAgICB0aGlzLmZldGNoKHBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVuZGVyU2VsZWN0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IGZ1bmMgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgodGhpcy5pdGVtcz8ubGVuZ3RoID4gMCkgJiYgdGhpcy5zZWxlY3Rpb25EYXRhTW9kZSA9PSAndmFsdWUnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcmdSZXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5zb21lKGlpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaWkgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlbdGhpcy52YWx1ZUZpZWxkXSA9PT0gaWlbdGhpcy52YWx1ZUZpZWxkXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpW3RoaXMudmFsdWVGaWVsZF0gPT09IGlpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpW3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMudmFsdWVbdGhpcy52YWx1ZUZpZWxkXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpW3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGlmIChvcmdSZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmdSZXM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLm1hcChpaSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpaSA9PT0gJ29iamVjdCcgJiYgaWlbdGhpcy50ZXh0RmllbGRdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZha2U6IGFueSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWtlW3RoaXMudmFsdWVGaWVsZF0gPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWtlW3RoaXMudGV4dEZpZWxkXSA9IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5sb2FkaW5nJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWtlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnb2JqZWN0JyAmJiB0aGlzLnZhbHVlW3RoaXMudGV4dEZpZWxkXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbdGhpcy52YWx1ZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmYWtlOiBhbnkgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICBmYWtlW3RoaXMudmFsdWVGaWVsZF0gPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZha2VbdGhpcy50ZXh0RmllbGRdID0gQVhUcmFuc2xhdG9yLmdldCgnY29tbW9uLmxvYWRpbmcnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2Zha2VdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gZnVuYygpO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5idWZmZXJTaXplIDwgMTApIHtcclxuICAgICAgICAgICAgdGhpcy5idWZmZXJTaXplID0gMTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRyb3Bkb3duVG9nZ2xlKGUpIHtcclxuICAgICAgICBpZiAodGhpcy5kcm9wZG93bi5pc09wZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID0gdGhpcy5nZXRJdGVtcygpLmluZGV4T2YodGhpcy5zZWxlY3RlZEl0ZW1zW3RoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggLSAxXSk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPblNlYXJjaEJveCgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzT25DdXJyZW50Rm9jdXNlZEluZGV4KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgICAgICB0aGlzLmluaXRWYWxpZGF0aW9uKHRoaXMucmVmLCAndmFsdWUnLCB0aGlzLnZhbGlkYXRpb24pO1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYWxsb3dTZWFyY2ggPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLm9uRGF0YVJlY2VpdmVkLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhUmVjZWl2ZWQoYy5kYXRhLnJlc3VsdCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkYXRhUmVjZWl2ZWQoZGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQgJiYgdGhpcy5zZWFyY2hUZXh0ICE9IG51bGwgJiYgdGhpcy5zZWFyY2hUZXh0ICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEudG90YWxDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBkYXRhLml0ZW1zO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IGRhdGEudG90YWxDb3VudDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IGRhdGEuaXRlbXM7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbENvdW50ID0gZGF0YS5pdGVtcyA9PSB1bmRlZmluZWQgPyAwIDogZGF0YS5pdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXRlbXMgJiYgZGF0YS5pdGVtcy5sZW5ndGggPT09IGRhdGEudG90YWxDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IGRhdGEuaXRlbXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSBkYXRhLml0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkYXRhLnRvdGFsQ291bnQpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEuaXRlbXMuZm9yRWFjaChlbG0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChlbG0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSBkYXRhLnRvdGFsQ291bnQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmZvckVhY2goZWxtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goZWxtKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbENvdW50ID0gZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1zID0gZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZW5kZXJTZWxlY3Rpb24oKTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGZldGNoKHBhcmFtczogQVhEYXRhU291cmNlUmVhZFBhcmFtcyA9IHt9KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZldGNoKHBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2goKSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zOiBBWERhdGFTb3VyY2VSZWFkUGFyYW1zID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcy5za2lwID0gMDtcclxuICAgICAgICAgICAgdGhpcy5za2lwID0gMDtcclxuICAgICAgICAgICAgcGFyYW1zLnRha2UgPSB0aGlzLmJ1ZmZlclNpemU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1zID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuZmV0Y2gocGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlSXRlbVJlbW92ZUNsaWNrKGl0ZW0pIHtcclxuICAgICAgICB0aGlzLnRleHQgPSAnJztcclxuICAgICAgICB0aGlzLmlzVXNlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIoYyA9PiAodHlwZW9mIGMgPT09ICdvYmplY3QnKSA/IGNbdGhpcy52YWx1ZUZpZWxkXSAhPT0gaXRlbVt0aGlzLnZhbHVlRmllbGRdIDogYyAhPT0gaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIG9uVGV4dEJveENsaWNrKGUpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCA9PT0gZmFsc2UgJiYgdGhpcy5yZWFkb25seSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUl0ZW1DbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmlzVXNlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW1zKGl0ZW0pO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlLnNvbWUoYyA9PiB0aGlzLmludGVybmFsR2V0SXRlbVZhbHVlKGMpID09PSB0aGlzLmludGVybmFsR2V0SXRlbVZhbHVlKGl0ZW0pKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5zZWxlY3RJdGVtcyhpdGVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbXMoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW1zKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIHRoaXMuZm9jdXNPblNlYXJjaEJveCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW50ZXJuYWxHZXRJdGVtQnlEYXRhTW9kZShpdGVtOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25EYXRhTW9kZSA9PT0gJ2l0ZW0nID8gaXRlbSA6IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGludGVybmFsR2V0SXRlbVZhbHVlKGl0ZW06IGFueSkge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgPyBpdGVtW3RoaXMudmFsdWVGaWVsZF0gOiBpdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgaGFuZGxlS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJyB8fCB0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXNMZXR0ZXIgPSBuZXcgUmVnRXhwKC9bYS16QS1aMC05XFwtXS8pLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShlLmtleUNvZGUpKTtcclxuICAgICAgICBpZiAodGhpcy50ZXh0Ym94LmlzRm9jdXNlZCgpKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0JhY2tzcGFjZScgJiYgZS50eXBlID09PSAna2V5ZG93bicgJiZcclxuICAgICAgICAgICAgICAgICgodGhpcy5hbGxvd051bGwgPT09IHRydWUgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuYWxsb3dOdWxsID09PSBmYWxzZSAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMSkpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzVXNlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudW5zZWxlY3RJdGVtcyh0aGlzLnNlbGVjdGVkSXRlbXMucG9wKCkpO1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKChlLmtleSA9PT0gJ0Fycm93RG93bicgfHwgZS5rZXkgPT09ICdBcnJvd1VwJykgJiYgdGhpcy5nZXRJdGVtcygpLmxlbmd0aCA+IDAgJiYgIXRoaXMuZHJvcGRvd24uaXNPcGVuICYmIGUudHlwZSA9PT0gJ2tleWRvd24nKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNVc2VySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQnlJbmRleCh0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggKyAoZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUuY3RybEtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc0xldHRlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gZS5rZXk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5kcm9wZG93bi5pc09wZW4pIHtcclxuICAgICAgICAgICAgaWYgKChlLmtleSA9PT0gJ0Fycm93RG93bicgfHwgZS5rZXkgPT09ICdBcnJvd1VwJykgJiYgdGhpcy5nZXRJdGVtcygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNVc2VySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtQnlOYXYoKGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMSkpO1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgoZS5rZXkgPT09ICdFbnRlcicgfHwgZS5jb2RlID09PSAnU3BhY2UnKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm9jdXNlZEl0ZW0gPSB0aGlzLmdldEl0ZW1zKClbdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4XTtcclxuICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkSXRlbSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVXNlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtcyhmb2N1c2VkSXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNVc2VySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdChmb2N1c2VkSXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVuc2VsZWN0SXRlbXMoLi4uaXRlbXM6IGFueVtdKSB7XHJcbiAgICAgICAgaWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuZmlsdGVyKGMgPT4gIWl0ZW1zLnNvbWUoZCA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbEdldEl0ZW1WYWx1ZShjKSA9PT0gdGhpcy5pbnRlcm5hbEdldEl0ZW1WYWx1ZShkKSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RJdGVtcyguLi5pdGVtczogYW55W10pIHtcclxuICAgICAgICBpZiAoaXRlbXMgJiYgaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbnRlcm5hbEdldEl0ZW1CeURhdGFNb2RlKGl0ZW1zWzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSAodGhpcy52YWx1ZSB8fCBbXSkuY29uY2F0KGl0ZW1zLm1hcChjID0+IHRoaXMuaW50ZXJuYWxHZXRJdGVtQnlEYXRhTW9kZShjKSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0b2dnbGVTZWxlY3QoLi4uaXRlbXM6IGFueVtdKSB7XHJcbiAgICAgICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGl0ZW0pID8gdGhpcy51bnNlbGVjdEl0ZW1zKGl0ZW0pIDogdGhpcy5zZWxlY3RJdGVtcyhpdGVtKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBjbG9zZSgpIHtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbigpIHtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duLm9wZW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBmb2N1cygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRleHQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudGV4dGJveC5mb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZm9jdXNPblNlYXJjaEJveCgpIHtcclxuICAgICAgICBjb25zdCBpbnB1dGVkVmFsID0gdGhpcy50ZXh0O1xyXG4gICAgICAgIGlmICh0aGlzLmFsbG93U2VhcmNoID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoQm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCb3gudmFsdWUgPSBpbnB1dGVkVmFsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQm94LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50ZXh0Ym94LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW1zKCk6IGFueVtdIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtcyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICghdGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAhPT0gJycpID8gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+XHJcbiAgICAgICAgICAgIChjW3RoaXMudGV4dEZpZWxkXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy50ZXh0LnRvTG93ZXJDYXNlKCkpKSA6IHRoaXMuaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgaXNJdGVtU2VsZWN0ZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5zb21lKGMgPT4gY1t0aGlzLnZhbHVlRmllbGRdID09PSBpdGVtW3RoaXMudmFsdWVGaWVsZF0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2VsZWN0SXRlbUJ5TmF2KHNpZ246IC0xIHwgMSB8IG51bGwgPSBudWxsKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHNpZ24gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggPSB0aGlzLmdldEl0ZW1zKCkuaW5kZXhPZih0aGlzLnNlbGVjdGVkSXRlbXNbdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDFdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNpZ24gPT09IC0xID8gdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4LS0gOiB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXgrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA8IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA+IHRoaXMuZ2V0SXRlbXMoKS5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA9IHRoaXMuZ2V0SXRlbXMoKS5sZW5ndGggLSAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc2V0IHNjcm9sbFxyXG4gICAgICAgIHRoaXMuZm9jdXNPbkN1cnJlbnRGb2N1c2VkSW5kZXgoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZvY3VzT25DdXJyZW50Rm9jdXNlZEluZGV4KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxpc3RDb250YWluZXIpIHtcclxuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1EaXYgPSB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGAubGlzdC1pdGVtOm50aC1jaGlsZCgke3RoaXMuY3VycmVudGZvY3VzZWRJbmRleH0pYCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbURpdikge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1EaXYuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ2F1dG8nIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0ZWRJdGVtQnlJbmRleChpbmRleDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICBpbmRleCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbmRleCA+IHRoaXMuZ2V0SXRlbXMoKS5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIGluZGV4ID0gdGhpcy5nZXRJdGVtcygpLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbXModGhpcy5nZXRJdGVtcygpW2luZGV4XSk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID0gaW5kZXg7XHJcbiAgICB9XHJcbn1cclxuIiwiPGF4LWRyb3AtZG93biBbc2l6ZV09XCJzaXplXCIgW3J0bF09XCJydGxcIiBbc2hvd0Ryb3BEb3duQnV0dG9uXT1cInNob3dEcm9wRG93bkJ1dHRvblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiAjZCAoZHJvcGRvd25Ub2dnbGUpPVwiZHJvcGRvd25Ub2dnbGUoJGV2ZW50KVwiIFtsb2FkaW5nXT1cInNob3dMb2FkaW5nXCI+XHJcbiAgICA8bmctY29udGFpbmVyIHN0YXJ0PlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdGFydF1cIj5cclxuICAgICAgICA8L25nLWNvbnRlbnQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgaGVhZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJheCBjaGlwcy1jb250YWluZXJcIiBbaG9yaXpvbnRhbFNjcm9sbF09XCI0MFwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXNcIiBjbGFzcz1cImNoaXBzXCIgW2NsYXNzLmNoaXBzLWJsYW5rXT1cInNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW3RleHRGaWVsZF1cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcHMtdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7aXRlbVt0ZXh0RmllbGRdfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2xvc2UtaWNvblwiIChjbGljayk9XCJoYW5kbGVJdGVtUmVtb3ZlQ2xpY2soaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKHJlYWRvbmx5IT10cnVlKSAmJiBkaXNhYmxlZCE9dHJ1ZSAmJiAoYWxsb3dOdWxsPT10cnVlIHx8IChzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDEpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLXRpbWVzIGNsb3NlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC13cmFwcGVyXCIgKGNsaWNrKT1cIm9uVGV4dEJveENsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxheC10ZXh0LWJveCAjdGV4dEJveFNlbGVjdEJveCBbdGV4dEFsaWduXT1cInRleHRBbGlnblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgPyBwbGFjZWhvbGRlciA6ICcnXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAgW3NpemVdPVwic2l6ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9heC10ZXh0LWJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgZW5kPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlbmRdXCI+XHJcbiAgICAgICAgPC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyIHBhbmVsPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd1NlYXJjaFwiIGNsYXNzPVwic2VhcmNoLXdyYXBwZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuN2VtO1wiPlxyXG4gICAgICAgICAgICA8YXgtc2VhcmNoLWJveCAjc2VhcmNoQm94IFsodmFsdWUpXT1cInRleHRcIiBzaXplPVwic21cIlxyXG4gICAgICAgICAgICAgICAgKHRleHRDaGFuZ2VkKT1cInRleHRDaGFuZ2VkKCRldmVudClcIiAob25CdXR0b25DbGljayk9XCJ0ZXh0Q2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvYXgtc2VhcmNoLWJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXggbGlzdC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGRpdiAjbGlzdENvbnRhaW5lciBzdHlsZT1cIm1heC1oZWlnaHQ6IDMwMHB4O292ZXJmbG93LXk6IGF1dG87d2lkdGg6IDEwMCU7XCIgKHNjcm9sbCk9XCJzY3JvbGxlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0SXRlbXMoKS5sZW5ndGg+MDsgdGhlbiB0aGVuVGVtcGxhdGU7IGVsc2UgZWxzZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RoZW5UZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1pdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTtsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZvY3VzZWRdPVwiaT09Y3VycmVudGZvY3VzZWRJbmRleFwiIChjbGljayk9XCJoYW5kbGVJdGVtQ2xpY2soJGV2ZW50LGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzSXRlbVNlbGVjdGVkKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1jaGVjay1ib3ggKm5nSWY9XCJzZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJ1wiIFtzaXplXT1cInNpemVcIiBbdmFsdWVdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWFsbG93TnVsbCAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMSAmJiBpc0l0ZW1TZWxlY3RlZChpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUl0ZW1DbGljaygkZXZlbnQsaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWNoZWNrLWJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7b3ZlcmZsb3c6IGhpZGRlbjtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW3RleHRGaWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIihzZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykgPyB7J3BhZGRpbmctaW5saW5lLXN0YXJ0JzogJzJlbSd9OicnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbVt0ZXh0RmllbGRdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dMb2FkaW5nXCIgY2xhc3M9XCJheC1wYWQtc21cIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1zcGlubmVyLXRoaXJkIGZhLXB1bHNlIGZhLTJ4XCIgc3R5bGU9XCJjb2xvcjogdmFyKC0tYXgtcHJpbWFyeS1jb2xvcik7XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VUZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0xvYWRpbmcgPT0gdHJ1ZTsgdGhlbiBzZWFyY2hUZW1wbGF0ZSBlbHNlIG5vRGF0YVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzZWFyY2hUZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3snY29tbW9uLnNlYXJjaGluZycgfCB0cmFuc319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGFUZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3snY29tbW9uLm5vRGF0YUZvdW5kJyB8IHRyYW5zfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvYXgtZHJvcC1kb3duPiJdfQ==