@acorex/components 6.5.91 → 6.6.0

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 (544) hide show
  1. package/README.md +7 -3
  2. package/esm2022/acorex-components.mjs +5 -0
  3. package/esm2022/index.mjs +158 -0
  4. package/esm2022/lib/accordion/accordion.component.mjs +45 -0
  5. package/esm2022/lib/accordion/accordion.module.mjs +20 -0
  6. package/esm2022/lib/base/base-page.class.mjs +97 -0
  7. package/esm2022/lib/base/components.class.mjs +17 -0
  8. package/esm2022/lib/base/element.class.mjs +301 -0
  9. package/esm2022/lib/base/events.class.mjs +17 -0
  10. package/esm2022/lib/button/button.component.mjs +74 -0
  11. package/esm2022/lib/button/button.module.mjs +21 -0
  12. package/esm2022/lib/calendar/calendar-box/calendar-box.component.mjs +426 -0
  13. package/esm2022/lib/calendar/calendar-box/calendar-box.module.mjs +22 -0
  14. package/esm2022/lib/calendar/scheduler/scheduler-views.property.mjs +59 -0
  15. package/esm2022/lib/calendar/scheduler/scheduler.class.mjs +16 -0
  16. package/esm2022/lib/calendar/scheduler/scheduler.component.mjs +226 -0
  17. package/esm2022/lib/calendar/scheduler/scheduler.module.mjs +68 -0
  18. package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +136 -0
  19. package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +37 -0
  20. package/esm2022/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +49 -0
  21. package/esm2022/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +102 -0
  22. package/esm2022/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +214 -0
  23. package/esm2022/lib/calendar/scheduler/views/scheduler-view.component.mjs +99 -0
  24. package/esm2022/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +85 -0
  25. package/esm2022/lib/checkbox/checkbox.component.mjs +102 -0
  26. package/esm2022/lib/checkbox/checkbox.module.mjs +20 -0
  27. package/esm2022/lib/color-picker/color-box/color-box.component.mjs +423 -0
  28. package/esm2022/lib/color-picker/color-picker.component.mjs +89 -0
  29. package/esm2022/lib/color-picker/color-picker.module.mjs +24 -0
  30. package/esm2022/lib/context-menu/context-menu.component.mjs +68 -0
  31. package/esm2022/lib/context-menu/context-menu.directive.mjs +146 -0
  32. package/esm2022/lib/context-menu/context-menu.module.mjs +20 -0
  33. package/esm2022/lib/data-filter/columns/filter-column-date.component.mjs +140 -0
  34. package/esm2022/lib/data-filter/columns/filter-column-number.component.mjs +119 -0
  35. package/esm2022/lib/data-filter/columns/filter-column-selection.component.mjs +75 -0
  36. package/esm2022/lib/data-filter/columns/filter-column-string.component.mjs +119 -0
  37. package/esm2022/lib/data-filter/filter-panel/filter-panel.component.mjs +267 -0
  38. package/esm2022/lib/data-filter/filter.class.mjs +46 -0
  39. package/esm2022/lib/data-filter/filter.module.mjs +88 -0
  40. package/esm2022/lib/data-filter/toolbar/filter-toolbar.component.mjs +168 -0
  41. package/esm2022/lib/data-list/core/data-list.component.mjs +37 -0
  42. package/esm2022/lib/data-list/list/list.component.mjs +134 -0
  43. package/esm2022/lib/data-list/list/list.module.mjs +22 -0
  44. package/esm2022/lib/data-list/list/toolbar-list-view.component.mjs +84 -0
  45. package/esm2022/lib/data-source/datasource.component.mjs +47 -0
  46. package/esm2022/lib/data-source/datasource.module.mjs +18 -0
  47. package/esm2022/lib/data-source/read-param.mjs +7 -0
  48. package/esm2022/lib/date-picker/date-picker.component.mjs +1093 -0
  49. package/esm2022/lib/date-picker/date-picker.module.mjs +49 -0
  50. package/esm2022/lib/dialog/dialog.component.mjs +26 -0
  51. package/esm2022/lib/dialog/dialog.module.mjs +21 -0
  52. package/esm2022/lib/dialog/dialog.service.mjs +160 -0
  53. package/esm2022/lib/drawer/content.component.mjs +18 -0
  54. package/esm2022/lib/drawer/drawer-container.component.mjs +38 -0
  55. package/esm2022/lib/drawer/drawer.component.mjs +146 -0
  56. package/esm2022/lib/drawer/drawer.module.mjs +23 -0
  57. package/esm2022/lib/dropdown/dropdown.component.mjs +186 -0
  58. package/esm2022/lib/dropdown/dropdown.module.mjs +26 -0
  59. package/esm2022/lib/fieldset/fieldset.component.mjs +57 -0
  60. package/esm2022/lib/fieldset/fieldset.module.mjs +19 -0
  61. package/esm2022/lib/form-group/form-group.component.mjs +37 -0
  62. package/esm2022/lib/form-group/form-group.module.mjs +21 -0
  63. package/esm2022/lib/label/label.component.mjs +19 -0
  64. package/esm2022/lib/label/label.module.mjs +21 -0
  65. package/esm2022/lib/loading/loading-indicator.component.mjs +18 -0
  66. package/esm2022/lib/loading/loading-panel.component.mjs +45 -0
  67. package/esm2022/lib/loading/loading.module.mjs +21 -0
  68. package/esm2022/lib/loading/loading.service.mjs +47 -0
  69. package/esm2022/lib/menu/menu-item.component.mjs +50 -0
  70. package/esm2022/lib/menu/menu.component.mjs +98 -0
  71. package/esm2022/lib/menu/menu.module.mjs +22 -0
  72. package/esm2022/lib/menu/menu2.component.mjs +100 -0
  73. package/esm2022/lib/number-box/number-box.component.mjs +628 -0
  74. package/esm2022/lib/number-box/number-box.module.mjs +21 -0
  75. package/esm2022/lib/page/content.component.mjs +27 -0
  76. package/esm2022/lib/page/footer.component.mjs +19 -0
  77. package/esm2022/lib/page/page.component.mjs +57 -0
  78. package/esm2022/lib/page/page.module.mjs +22 -0
  79. package/esm2022/lib/panel-box/panel-box.component.mjs +87 -0
  80. package/esm2022/lib/panel-box/panel-box.module.mjs +19 -0
  81. package/esm2022/lib/password-box/password-box.component.mjs +32 -0
  82. package/esm2022/lib/password-box/password-box.module.mjs +23 -0
  83. package/esm2022/lib/popover/custom-cdk-overlay.service.mjs +50 -0
  84. package/esm2022/lib/popover/overlay.service.mjs +94 -0
  85. package/esm2022/lib/popover/popover.component.mjs +145 -0
  86. package/esm2022/lib/popover/popover.module.mjs +19 -0
  87. package/esm2022/lib/popup/popup.component.mjs +160 -0
  88. package/esm2022/lib/popup/popup.module.mjs +25 -0
  89. package/esm2022/lib/popup/popup.service.mjs +94 -0
  90. package/esm2022/lib/progress-bar/progress-bar.component.mjs +16 -0
  91. package/esm2022/lib/progress-bar/progress-bar.module.mjs +19 -0
  92. package/esm2022/lib/property-editor/editors/check-editor/check-editor.mjs +65 -0
  93. package/esm2022/lib/property-editor/editors/check-editor/check.module.mjs +22 -0
  94. package/esm2022/lib/property-editor/editors/color-editor/color.editor.mjs +41 -0
  95. package/esm2022/lib/property-editor/editors/color-editor/color.module.mjs +24 -0
  96. package/esm2022/lib/property-editor/editors/column-editor/column.editor.mjs +118 -0
  97. package/esm2022/lib/property-editor/editors/column-editor/column.module.mjs +32 -0
  98. package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +216 -0
  99. package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +76 -0
  100. package/esm2022/lib/property-editor/editors/date-editor/date.editor.mjs +87 -0
  101. package/esm2022/lib/property-editor/editors/date-editor/date.module.mjs +24 -0
  102. package/esm2022/lib/property-editor/editors/number-editor/number.editor.mjs +69 -0
  103. package/esm2022/lib/property-editor/editors/number-editor/number.module.mjs +24 -0
  104. package/esm2022/lib/property-editor/editors/range-editor/range.editor.mjs +145 -0
  105. package/esm2022/lib/property-editor/editors/range-editor/range.module.mjs +59 -0
  106. package/esm2022/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +76 -0
  107. package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +75 -0
  108. package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +25 -0
  109. package/esm2022/lib/property-editor/editors/selection-editor/selection-editor.mjs +73 -0
  110. package/esm2022/lib/property-editor/editors/selection-editor/selection.module.mjs +22 -0
  111. package/esm2022/lib/property-editor/editors/switch-editor/number.editor.mjs +30 -0
  112. package/esm2022/lib/property-editor/editors/switch-editor/number.module.mjs +25 -0
  113. package/esm2022/lib/property-editor/editors/text-editor/text.editor.mjs +36 -0
  114. package/esm2022/lib/property-editor/editors/text-editor/text.module.mjs +24 -0
  115. package/esm2022/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +35 -0
  116. package/esm2022/lib/property-editor/editors/textarea-editor/textarea.module.mjs +24 -0
  117. package/esm2022/lib/property-editor/editors/time-editor/time.editor.mjs +47 -0
  118. package/esm2022/lib/property-editor/editors/time-editor/time.module.mjs +24 -0
  119. package/esm2022/lib/property-editor/property-editor-renderer.directive.mjs +167 -0
  120. package/esm2022/lib/property-editor/property-editor.class.mjs +108 -0
  121. package/esm2022/lib/property-editor/property-editor.module.mjs +194 -0
  122. package/esm2022/lib/query-builder/query-builder-group.component.mjs +129 -0
  123. package/esm2022/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +177 -0
  124. package/esm2022/lib/query-builder/query-builder-rule.component.mjs +428 -0
  125. package/esm2022/lib/query-builder/query-builder.class.mjs +42 -0
  126. package/esm2022/lib/query-builder/query-builder.component.mjs +92 -0
  127. package/esm2022/lib/query-builder/query-builder.module.mjs +62 -0
  128. package/esm2022/lib/query-builder/query-builder.service.mjs +199 -0
  129. package/esm2022/lib/search-bar/search-bar.component.mjs +293 -0
  130. package/esm2022/lib/search-bar/search-bar.module.mjs +61 -0
  131. package/esm2022/lib/searchbox/searchbox.component.mjs +106 -0
  132. package/esm2022/lib/searchbox/searchbox.module.mjs +24 -0
  133. package/esm2022/lib/selectbox/selectbox.component.mjs +1134 -0
  134. package/esm2022/lib/selectbox/selectbox.module.mjs +44 -0
  135. package/esm2022/lib/selectbox/selectbox2.component.mjs +617 -0
  136. package/esm2022/lib/selection-list/selection-list.component.mjs +113 -0
  137. package/esm2022/lib/selection-list/selection-list.module.mjs +21 -0
  138. package/esm2022/lib/switch/switch.component.mjs +55 -0
  139. package/esm2022/lib/switch/switch.module.mjs +20 -0
  140. package/esm2022/lib/tab-page/tab-page-Renderer.component.mjs +75 -0
  141. package/esm2022/lib/tab-page/tab-page-host.component.mjs +124 -0
  142. package/esm2022/lib/tab-page/tab-page.module.mjs +21 -0
  143. package/esm2022/lib/tab-page/tab-page.service.mjs +159 -0
  144. package/esm2022/lib/tab-strip/tab-strip.component.mjs +38 -0
  145. package/esm2022/lib/tab-strip/tab-strip.module.mjs +19 -0
  146. package/esm2022/lib/tab-view/dynamic-tabs.directive.mjs +25 -0
  147. package/esm2022/lib/tab-view/tab-view.component.mjs +110 -0
  148. package/esm2022/lib/tab-view/tab-view.module.mjs +21 -0
  149. package/esm2022/lib/tab-view/tab.component.mjs +33 -0
  150. package/esm2022/lib/textarea/textarea.component.mjs +27 -0
  151. package/esm2022/lib/textarea/textarea.module.mjs +21 -0
  152. package/esm2022/lib/textbox/textbox.component.mjs +42 -0
  153. package/esm2022/lib/textbox/textbox.module.mjs +36 -0
  154. package/esm2022/lib/time-picker/time-picker.component.mjs +1107 -0
  155. package/esm2022/lib/time-picker/time-picker.module.mjs +34 -0
  156. package/esm2022/lib/toast/toast-message/toast-message.component.mjs +76 -0
  157. package/esm2022/lib/toast/toast-wrapper/toast-wrapper.component.mjs +13 -0
  158. package/esm2022/lib/toast/toast.module.mjs +21 -0
  159. package/esm2022/lib/toast/toast.service.mjs +45 -0
  160. package/esm2022/lib/toolbar/group-button/toolbar-group-button.component.mjs +77 -0
  161. package/esm2022/lib/toolbar/menu/toolbar-menu.component.mjs +62 -0
  162. package/esm2022/lib/toolbar/search/toolbar-search.component.mjs +56 -0
  163. package/esm2022/lib/toolbar/title/toolbar-title.component.mjs +37 -0
  164. package/esm2022/lib/toolbar/toolbar-item.mjs +4 -0
  165. package/esm2022/lib/toolbar/toolbar.component.mjs +13 -0
  166. package/esm2022/lib/toolbar/toolbar.module.mjs +40 -0
  167. package/esm2022/lib/tooltip/tooltip.directive.mjs +104 -0
  168. package/esm2022/lib/tooltip/tooltip.module.mjs +19 -0
  169. package/esm2022/lib/tree-side-menu/tree-side-menu.component.mjs +697 -0
  170. package/esm2022/lib/tree-side-menu/tree-side-menu.module.mjs +33 -0
  171. package/esm2022/lib/tree-view/tree-view.component.mjs +854 -0
  172. package/esm2022/lib/tree-view/tree-view.module.mjs +22 -0
  173. package/esm2022/lib/upload-file/upload-file.component.mjs +226 -0
  174. package/esm2022/lib/upload-file/upload-file.events.mjs +2 -0
  175. package/esm2022/lib/upload-file/upload-file.module.mjs +24 -0
  176. package/esm2022/lib/validation/validation-form.component.mjs +68 -0
  177. package/esm2022/lib/validation/validation-rule.widget.mjs +114 -0
  178. package/esm2022/lib/validation/validation.class.mjs +2 -0
  179. package/esm2022/lib/validation/validation.component.mjs +89 -0
  180. package/esm2022/lib/validation/validation.module.mjs +34 -0
  181. package/{fesm2020 → fesm2022}/acorex-components.mjs +17004 -15581
  182. package/fesm2022/acorex-components.mjs.map +1 -0
  183. package/{public-api.d.ts → index.d.ts} +155 -155
  184. package/lib/accordion/accordion.component.d.ts +13 -13
  185. package/lib/accordion/accordion.module.d.ts +9 -9
  186. package/lib/base/base-page.class.d.ts +46 -46
  187. package/lib/base/components.class.d.ts +10 -10
  188. package/lib/base/element.class.d.ts +106 -106
  189. package/lib/base/events.class.d.ts +18 -18
  190. package/lib/button/button.component.d.ts +21 -21
  191. package/lib/button/button.module.d.ts +8 -8
  192. package/lib/calendar/calendar-box/calendar-box.component.d.ts +81 -81
  193. package/lib/calendar/calendar-box/calendar-box.module.d.ts +11 -11
  194. package/lib/calendar/scheduler/scheduler-views.property.d.ts +19 -19
  195. package/lib/calendar/scheduler/scheduler.class.d.ts +36 -36
  196. package/lib/calendar/scheduler/scheduler.component.d.ts +39 -39
  197. package/lib/calendar/scheduler/scheduler.module.d.ts +21 -21
  198. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.d.ts +25 -25
  199. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.d.ts +14 -14
  200. package/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.d.ts +16 -16
  201. package/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.d.ts +26 -26
  202. package/lib/calendar/scheduler/views/month/scheduler-month-view.component.d.ts +37 -37
  203. package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +28 -28
  204. package/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.d.ts +24 -24
  205. package/lib/checkbox/checkbox.component.d.ts +30 -30
  206. package/lib/checkbox/checkbox.module.d.ts +9 -9
  207. package/lib/color-picker/color-box/color-box.component.d.ts +25 -25
  208. package/lib/color-picker/color-picker.component.d.ts +30 -30
  209. package/lib/color-picker/color-picker.module.d.ts +13 -13
  210. package/lib/context-menu/context-menu.component.d.ts +22 -22
  211. package/lib/context-menu/context-menu.directive.d.ts +38 -38
  212. package/lib/context-menu/context-menu.module.d.ts +9 -9
  213. package/lib/data-filter/columns/filter-column-date.component.d.ts +22 -22
  214. package/lib/data-filter/columns/filter-column-number.component.d.ts +15 -15
  215. package/lib/data-filter/columns/filter-column-selection.component.d.ts +18 -18
  216. package/lib/data-filter/columns/filter-column-string.component.d.ts +15 -15
  217. package/lib/data-filter/filter-panel/filter-panel.component.d.ts +45 -45
  218. package/lib/data-filter/filter.class.d.ts +40 -40
  219. package/lib/data-filter/filter.module.d.ts +24 -24
  220. package/lib/data-filter/toolbar/filter-toolbar.component.d.ts +25 -25
  221. package/lib/data-list/core/data-list.component.d.ts +15 -15
  222. package/lib/data-list/list/list.component.d.ts +40 -40
  223. package/lib/data-list/list/list.module.d.ts +11 -11
  224. package/lib/data-list/list/toolbar-list-view.component.d.ts +17 -17
  225. package/lib/data-source/datasource.component.d.ts +16 -16
  226. package/lib/data-source/datasource.module.d.ts +7 -7
  227. package/lib/data-source/read-param.d.ts +40 -40
  228. package/lib/date-picker/date-picker.component.d.ts +81 -81
  229. package/lib/date-picker/date-picker.module.d.ts +14 -14
  230. package/lib/dialog/dialog.component.d.ts +14 -14
  231. package/lib/dialog/dialog.module.d.ts +10 -10
  232. package/lib/dialog/dialog.service.d.ts +36 -36
  233. package/lib/drawer/content.component.d.ts +7 -7
  234. package/lib/drawer/drawer-container.component.d.ts +10 -10
  235. package/lib/drawer/drawer.component.d.ts +34 -34
  236. package/lib/drawer/drawer.module.d.ts +10 -10
  237. package/lib/dropdown/dropdown.component.d.ts +38 -38
  238. package/lib/dropdown/dropdown.module.d.ts +13 -13
  239. package/lib/fieldset/fieldset.component.d.ts +11 -11
  240. package/lib/fieldset/fieldset.module.d.ts +8 -8
  241. package/lib/form-group/form-group.component.d.ts +14 -14
  242. package/lib/form-group/form-group.module.d.ts +8 -8
  243. package/lib/label/label.component.d.ts +9 -9
  244. package/lib/label/label.module.d.ts +8 -8
  245. package/lib/loading/loading-indicator.component.d.ts +9 -9
  246. package/lib/loading/loading-panel.component.d.ts +13 -13
  247. package/lib/loading/loading.module.d.ts +10 -10
  248. package/lib/loading/loading.service.d.ts +13 -13
  249. package/lib/menu/menu-item.component.d.ts +18 -18
  250. package/lib/menu/menu.component.d.ts +35 -35
  251. package/lib/menu/menu.module.d.ts +11 -11
  252. package/lib/menu/menu2.component.d.ts +21 -21
  253. package/lib/number-box/number-box.component.d.ts +52 -52
  254. package/lib/number-box/number-box.module.d.ts +10 -10
  255. package/lib/page/content.component.d.ts +8 -8
  256. package/lib/page/footer.component.d.ts +5 -5
  257. package/lib/page/page.component.d.ts +16 -16
  258. package/lib/page/page.module.d.ts +11 -11
  259. package/lib/panel-box/panel-box.component.d.ts +19 -19
  260. package/lib/panel-box/panel-box.module.d.ts +8 -8
  261. package/lib/password-box/password-box.component.d.ts +12 -12
  262. package/lib/password-box/password-box.module.d.ts +10 -10
  263. package/lib/popover/custom-cdk-overlay.service.d.ts +19 -19
  264. package/lib/popover/overlay.service.d.ts +32 -32
  265. package/lib/popover/popover.component.d.ts +35 -35
  266. package/lib/popover/popover.module.d.ts +8 -8
  267. package/lib/popup/popup.component.d.ts +40 -40
  268. package/lib/popup/popup.module.d.ts +13 -13
  269. package/lib/popup/popup.service.d.ts +22 -22
  270. package/lib/progress-bar/progress-bar.component.d.ts +7 -7
  271. package/lib/progress-bar/progress-bar.module.d.ts +8 -8
  272. package/lib/property-editor/editors/check-editor/check-editor.d.ts +19 -19
  273. package/lib/property-editor/editors/check-editor/check.module.d.ts +11 -11
  274. package/lib/property-editor/editors/color-editor/color.editor.d.ts +13 -13
  275. package/lib/property-editor/editors/color-editor/color.module.d.ts +12 -12
  276. package/lib/property-editor/editors/column-editor/column.editor.d.ts +34 -34
  277. package/lib/property-editor/editors/column-editor/column.module.d.ts +20 -20
  278. package/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.d.ts +44 -44
  279. package/lib/property-editor/editors/conditional-color-editor/conditional-color.module.d.ts +19 -19
  280. package/lib/property-editor/editors/date-editor/date.editor.d.ts +28 -28
  281. package/lib/property-editor/editors/date-editor/date.module.d.ts +12 -12
  282. package/lib/property-editor/editors/number-editor/number.editor.d.ts +21 -20
  283. package/lib/property-editor/editors/number-editor/number.module.d.ts +12 -12
  284. package/lib/property-editor/editors/range-editor/range.editor.d.ts +29 -29
  285. package/lib/property-editor/editors/range-editor/range.module.d.ts +18 -18
  286. package/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.d.ts +29 -29
  287. package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +28 -28
  288. package/lib/property-editor/editors/selectbox-editor/selectbox.module.d.ts +14 -14
  289. package/lib/property-editor/editors/selection-editor/selection-editor.d.ts +25 -25
  290. package/lib/property-editor/editors/selection-editor/selection.module.d.ts +11 -11
  291. package/lib/property-editor/editors/switch-editor/number.editor.d.ts +11 -11
  292. package/lib/property-editor/editors/switch-editor/number.module.d.ts +13 -13
  293. package/lib/property-editor/editors/text-editor/text.editor.d.ts +18 -18
  294. package/lib/property-editor/editors/text-editor/text.module.d.ts +12 -12
  295. package/lib/property-editor/editors/textarea-editor/textarea.editor.d.ts +17 -17
  296. package/lib/property-editor/editors/textarea-editor/textarea.module.d.ts +12 -12
  297. package/lib/property-editor/editors/time-editor/time.editor.d.ts +17 -17
  298. package/lib/property-editor/editors/time-editor/time.module.d.ts +12 -12
  299. package/lib/property-editor/property-editor-renderer.directive.d.ts +31 -31
  300. package/lib/property-editor/property-editor.class.d.ts +93 -93
  301. package/lib/property-editor/property-editor.module.d.ts +21 -21
  302. package/lib/query-builder/query-builder-group.component.d.ts +33 -33
  303. package/lib/query-builder/query-builder-popup/query-builder-popup.component.d.ts +35 -35
  304. package/lib/query-builder/query-builder-rule.component.d.ts +45 -45
  305. package/lib/query-builder/query-builder.class.d.ts +45 -45
  306. package/lib/query-builder/query-builder.component.d.ts +29 -29
  307. package/lib/query-builder/query-builder.module.d.ts +23 -23
  308. package/lib/query-builder/query-builder.service.d.ts +18 -18
  309. package/lib/search-bar/search-bar.component.d.ts +62 -62
  310. package/lib/search-bar/search-bar.module.d.ts +18 -18
  311. package/lib/searchbox/searchbox.component.d.ts +23 -22
  312. package/lib/searchbox/searchbox.module.d.ts +13 -13
  313. package/lib/selectbox/selectbox.component.d.ts +149 -118
  314. package/lib/selectbox/selectbox.module.d.ts +15 -15
  315. package/lib/selectbox/selectbox2.component.d.ts +103 -103
  316. package/lib/selection-list/selection-list.component.d.ts +32 -32
  317. package/lib/selection-list/selection-list.module.d.ts +10 -10
  318. package/lib/switch/switch.component.d.ts +20 -20
  319. package/lib/switch/switch.module.d.ts +9 -9
  320. package/lib/tab-page/tab-page-Renderer.component.d.ts +16 -16
  321. package/lib/tab-page/tab-page-host.component.d.ts +24 -24
  322. package/lib/tab-page/tab-page.module.d.ts +10 -10
  323. package/lib/tab-page/tab-page.service.d.ts +30 -30
  324. package/lib/tab-strip/tab-strip.component.d.ts +28 -28
  325. package/lib/tab-strip/tab-strip.module.d.ts +8 -8
  326. package/lib/tab-view/dynamic-tabs.directive.d.ts +16 -16
  327. package/lib/tab-view/tab-view.component.d.ts +26 -26
  328. package/lib/tab-view/tab-view.module.d.ts +10 -10
  329. package/lib/tab-view/tab.component.d.ts +12 -12
  330. package/lib/textarea/textarea.component.d.ts +12 -12
  331. package/lib/textarea/textarea.module.d.ts +8 -8
  332. package/lib/textbox/textbox.component.d.ts +16 -16
  333. package/lib/textbox/textbox.module.d.ts +11 -11
  334. package/lib/time-picker/time-picker.component.d.ts +53 -52
  335. package/lib/time-picker/time-picker.module.d.ts +11 -11
  336. package/lib/toast/toast-message/toast-message.component.d.ts +18 -18
  337. package/lib/toast/toast-wrapper/toast-wrapper.component.d.ts +8 -8
  338. package/lib/toast/toast.module.d.ts +9 -9
  339. package/lib/toast/toast.service.d.ts +18 -18
  340. package/lib/toolbar/group-button/toolbar-group-button.component.d.ts +12 -12
  341. package/lib/toolbar/menu/toolbar-menu.component.d.ts +24 -24
  342. package/lib/toolbar/search/toolbar-search.component.d.ts +16 -16
  343. package/lib/toolbar/title/toolbar-title.component.d.ts +9 -9
  344. package/lib/toolbar/toolbar-item.d.ts +3 -3
  345. package/lib/toolbar/toolbar.component.d.ts +8 -8
  346. package/lib/toolbar/toolbar.module.d.ts +14 -14
  347. package/lib/tooltip/tooltip.directive.d.ts +21 -21
  348. package/lib/tooltip/tooltip.module.d.ts +8 -8
  349. package/lib/tree-side-menu/tree-side-menu.component.d.ts +111 -111
  350. package/lib/tree-side-menu/tree-side-menu.module.d.ts +11 -11
  351. package/lib/tree-view/tree-view.component.d.ts +121 -121
  352. package/lib/tree-view/tree-view.module.d.ts +11 -11
  353. package/lib/upload-file/upload-file.component.d.ts +42 -42
  354. package/lib/upload-file/upload-file.events.d.ts +10 -10
  355. package/lib/upload-file/upload-file.module.d.ts +13 -13
  356. package/lib/validation/validation-form.component.d.ts +19 -19
  357. package/lib/validation/validation-rule.widget.d.ts +23 -23
  358. package/lib/validation/validation.class.d.ts +16 -16
  359. package/lib/validation/validation.component.d.ts +25 -25
  360. package/lib/validation/validation.module.d.ts +11 -11
  361. package/package.json +15 -20
  362. package/acorex-components.d.ts +0 -5
  363. package/esm2020/acorex-components.mjs +0 -5
  364. package/esm2020/lib/accordion/accordion.component.mjs +0 -44
  365. package/esm2020/lib/accordion/accordion.module.mjs +0 -20
  366. package/esm2020/lib/base/base-page.class.mjs +0 -94
  367. package/esm2020/lib/base/components.class.mjs +0 -17
  368. package/esm2020/lib/base/element.class.mjs +0 -294
  369. package/esm2020/lib/base/events.class.mjs +0 -11
  370. package/esm2020/lib/button/button.component.mjs +0 -71
  371. package/esm2020/lib/button/button.module.mjs +0 -21
  372. package/esm2020/lib/calendar/calendar-box/calendar-box.component.mjs +0 -413
  373. package/esm2020/lib/calendar/calendar-box/calendar-box.module.mjs +0 -22
  374. package/esm2020/lib/calendar/scheduler/scheduler-views.property.mjs +0 -54
  375. package/esm2020/lib/calendar/scheduler/scheduler.class.mjs +0 -18
  376. package/esm2020/lib/calendar/scheduler/scheduler.component.mjs +0 -213
  377. package/esm2020/lib/calendar/scheduler/scheduler.module.mjs +0 -68
  378. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +0 -132
  379. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +0 -37
  380. package/esm2020/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +0 -47
  381. package/esm2020/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +0 -95
  382. package/esm2020/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +0 -204
  383. package/esm2020/lib/calendar/scheduler/views/scheduler-view.component.mjs +0 -99
  384. package/esm2020/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +0 -77
  385. package/esm2020/lib/checkbox/checkbox.component.mjs +0 -98
  386. package/esm2020/lib/checkbox/checkbox.module.mjs +0 -20
  387. package/esm2020/lib/color-picker/color-box/color-box.component.mjs +0 -422
  388. package/esm2020/lib/color-picker/color-picker.component.mjs +0 -82
  389. package/esm2020/lib/color-picker/color-picker.module.mjs +0 -24
  390. package/esm2020/lib/context-menu/context-menu.component.mjs +0 -65
  391. package/esm2020/lib/context-menu/context-menu.directive.mjs +0 -135
  392. package/esm2020/lib/context-menu/context-menu.module.mjs +0 -20
  393. package/esm2020/lib/data-filter/columns/filter-column-date.component.mjs +0 -138
  394. package/esm2020/lib/data-filter/columns/filter-column-number.component.mjs +0 -117
  395. package/esm2020/lib/data-filter/columns/filter-column-selection.component.mjs +0 -74
  396. package/esm2020/lib/data-filter/columns/filter-column-string.component.mjs +0 -117
  397. package/esm2020/lib/data-filter/filter-panel/filter-panel.component.mjs +0 -258
  398. package/esm2020/lib/data-filter/filter.class.mjs +0 -44
  399. package/esm2020/lib/data-filter/filter.module.mjs +0 -90
  400. package/esm2020/lib/data-filter/toolbar/filter-toolbar.component.mjs +0 -166
  401. package/esm2020/lib/data-list/core/data-list.component.mjs +0 -40
  402. package/esm2020/lib/data-list/list/list.component.mjs +0 -124
  403. package/esm2020/lib/data-list/list/list.module.mjs +0 -22
  404. package/esm2020/lib/data-list/list/toolbar-list-view.component.mjs +0 -85
  405. package/esm2020/lib/data-source/datasource.component.mjs +0 -47
  406. package/esm2020/lib/data-source/datasource.module.mjs +0 -18
  407. package/esm2020/lib/data-source/read-param.mjs +0 -5
  408. package/esm2020/lib/date-picker/date-picker.component.mjs +0 -702
  409. package/esm2020/lib/date-picker/date-picker.module.mjs +0 -25
  410. package/esm2020/lib/dialog/dialog.component.mjs +0 -24
  411. package/esm2020/lib/dialog/dialog.module.mjs +0 -21
  412. package/esm2020/lib/dialog/dialog.service.mjs +0 -150
  413. package/esm2020/lib/drawer/content.component.mjs +0 -18
  414. package/esm2020/lib/drawer/drawer-container.component.mjs +0 -36
  415. package/esm2020/lib/drawer/drawer.component.mjs +0 -142
  416. package/esm2020/lib/drawer/drawer.module.mjs +0 -23
  417. package/esm2020/lib/dropdown/dropdown.component.mjs +0 -176
  418. package/esm2020/lib/dropdown/dropdown.module.mjs +0 -26
  419. package/esm2020/lib/fieldset/fieldset.component.mjs +0 -59
  420. package/esm2020/lib/fieldset/fieldset.module.mjs +0 -19
  421. package/esm2020/lib/form-group/form-group.component.mjs +0 -34
  422. package/esm2020/lib/form-group/form-group.module.mjs +0 -21
  423. package/esm2020/lib/label/label.component.mjs +0 -19
  424. package/esm2020/lib/label/label.module.mjs +0 -21
  425. package/esm2020/lib/loading/loading-indicator.component.mjs +0 -17
  426. package/esm2020/lib/loading/loading-panel.component.mjs +0 -44
  427. package/esm2020/lib/loading/loading.module.mjs +0 -21
  428. package/esm2020/lib/loading/loading.service.mjs +0 -45
  429. package/esm2020/lib/menu/menu-item.component.mjs +0 -47
  430. package/esm2020/lib/menu/menu.component.mjs +0 -86
  431. package/esm2020/lib/menu/menu.module.mjs +0 -22
  432. package/esm2020/lib/menu/menu2.component.mjs +0 -96
  433. package/esm2020/lib/number-box/number-box.component.mjs +0 -622
  434. package/esm2020/lib/number-box/number-box.module.mjs +0 -21
  435. package/esm2020/lib/page/content.component.mjs +0 -32
  436. package/esm2020/lib/page/footer.component.mjs +0 -19
  437. package/esm2020/lib/page/page.component.mjs +0 -53
  438. package/esm2020/lib/page/page.module.mjs +0 -22
  439. package/esm2020/lib/panel-box/panel-box.component.mjs +0 -88
  440. package/esm2020/lib/panel-box/panel-box.module.mjs +0 -19
  441. package/esm2020/lib/password-box/password-box.component.mjs +0 -31
  442. package/esm2020/lib/password-box/password-box.module.mjs +0 -23
  443. package/esm2020/lib/popover/custom-cdk-overlay.service.mjs +0 -48
  444. package/esm2020/lib/popover/overlay.service.mjs +0 -91
  445. package/esm2020/lib/popover/popover.component.mjs +0 -133
  446. package/esm2020/lib/popover/popover.module.mjs +0 -19
  447. package/esm2020/lib/popup/popup.component.mjs +0 -147
  448. package/esm2020/lib/popup/popup.module.mjs +0 -25
  449. package/esm2020/lib/popup/popup.service.mjs +0 -93
  450. package/esm2020/lib/progress-bar/progress-bar.component.mjs +0 -19
  451. package/esm2020/lib/progress-bar/progress-bar.module.mjs +0 -19
  452. package/esm2020/lib/property-editor/editors/check-editor/check-editor.mjs +0 -61
  453. package/esm2020/lib/property-editor/editors/check-editor/check.module.mjs +0 -22
  454. package/esm2020/lib/property-editor/editors/color-editor/color.editor.mjs +0 -38
  455. package/esm2020/lib/property-editor/editors/color-editor/color.module.mjs +0 -24
  456. package/esm2020/lib/property-editor/editors/column-editor/column.editor.mjs +0 -115
  457. package/esm2020/lib/property-editor/editors/column-editor/column.module.mjs +0 -32
  458. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +0 -211
  459. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +0 -78
  460. package/esm2020/lib/property-editor/editors/date-editor/date.editor.mjs +0 -51
  461. package/esm2020/lib/property-editor/editors/date-editor/date.module.mjs +0 -24
  462. package/esm2020/lib/property-editor/editors/number-editor/number.editor.mjs +0 -63
  463. package/esm2020/lib/property-editor/editors/number-editor/number.module.mjs +0 -24
  464. package/esm2020/lib/property-editor/editors/range-editor/range.editor.mjs +0 -140
  465. package/esm2020/lib/property-editor/editors/range-editor/range.module.mjs +0 -61
  466. package/esm2020/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +0 -72
  467. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +0 -71
  468. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +0 -25
  469. package/esm2020/lib/property-editor/editors/selection-editor/selection-editor.mjs +0 -69
  470. package/esm2020/lib/property-editor/editors/selection-editor/selection.module.mjs +0 -22
  471. package/esm2020/lib/property-editor/editors/switch-editor/number.editor.mjs +0 -29
  472. package/esm2020/lib/property-editor/editors/switch-editor/number.module.mjs +0 -25
  473. package/esm2020/lib/property-editor/editors/text-editor/text.editor.mjs +0 -32
  474. package/esm2020/lib/property-editor/editors/text-editor/text.module.mjs +0 -24
  475. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +0 -32
  476. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.module.mjs +0 -24
  477. package/esm2020/lib/property-editor/editors/time-editor/time.editor.mjs +0 -43
  478. package/esm2020/lib/property-editor/editors/time-editor/time.module.mjs +0 -24
  479. package/esm2020/lib/property-editor/property-editor-renderer.directive.mjs +0 -157
  480. package/esm2020/lib/property-editor/property-editor.class.mjs +0 -102
  481. package/esm2020/lib/property-editor/property-editor.module.mjs +0 -196
  482. package/esm2020/lib/query-builder/query-builder-group.component.mjs +0 -124
  483. package/esm2020/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +0 -172
  484. package/esm2020/lib/query-builder/query-builder-rule.component.mjs +0 -399
  485. package/esm2020/lib/query-builder/query-builder.class.mjs +0 -20
  486. package/esm2020/lib/query-builder/query-builder.component.mjs +0 -87
  487. package/esm2020/lib/query-builder/query-builder.module.mjs +0 -62
  488. package/esm2020/lib/query-builder/query-builder.service.mjs +0 -197
  489. package/esm2020/lib/search-bar/search-bar.component.mjs +0 -286
  490. package/esm2020/lib/search-bar/search-bar.module.mjs +0 -63
  491. package/esm2020/lib/searchbox/searchbox.component.mjs +0 -81
  492. package/esm2020/lib/searchbox/searchbox.module.mjs +0 -24
  493. package/esm2020/lib/selectbox/selectbox.component.mjs +0 -961
  494. package/esm2020/lib/selectbox/selectbox.module.mjs +0 -44
  495. package/esm2020/lib/selectbox/selectbox2.component.mjs +0 -574
  496. package/esm2020/lib/selection-list/selection-list.component.mjs +0 -108
  497. package/esm2020/lib/selection-list/selection-list.module.mjs +0 -21
  498. package/esm2020/lib/switch/switch.component.mjs +0 -51
  499. package/esm2020/lib/switch/switch.module.mjs +0 -20
  500. package/esm2020/lib/tab-page/tab-page-Renderer.component.mjs +0 -71
  501. package/esm2020/lib/tab-page/tab-page-host.component.mjs +0 -114
  502. package/esm2020/lib/tab-page/tab-page.module.mjs +0 -21
  503. package/esm2020/lib/tab-page/tab-page.service.mjs +0 -160
  504. package/esm2020/lib/tab-strip/tab-strip.component.mjs +0 -36
  505. package/esm2020/lib/tab-strip/tab-strip.module.mjs +0 -19
  506. package/esm2020/lib/tab-view/dynamic-tabs.directive.mjs +0 -24
  507. package/esm2020/lib/tab-view/tab-view.component.mjs +0 -105
  508. package/esm2020/lib/tab-view/tab-view.module.mjs +0 -21
  509. package/esm2020/lib/tab-view/tab.component.mjs +0 -30
  510. package/esm2020/lib/textarea/textarea.component.mjs +0 -26
  511. package/esm2020/lib/textarea/textarea.module.mjs +0 -21
  512. package/esm2020/lib/textbox/textbox.component.mjs +0 -39
  513. package/esm2020/lib/textbox/textbox.module.mjs +0 -24
  514. package/esm2020/lib/time-picker/time-picker.component.mjs +0 -943
  515. package/esm2020/lib/time-picker/time-picker.module.mjs +0 -22
  516. package/esm2020/lib/toast/toast-message/toast-message.component.mjs +0 -74
  517. package/esm2020/lib/toast/toast-wrapper/toast-wrapper.component.mjs +0 -13
  518. package/esm2020/lib/toast/toast.module.mjs +0 -21
  519. package/esm2020/lib/toast/toast.service.mjs +0 -44
  520. package/esm2020/lib/toolbar/group-button/toolbar-group-button.component.mjs +0 -78
  521. package/esm2020/lib/toolbar/menu/toolbar-menu.component.mjs +0 -57
  522. package/esm2020/lib/toolbar/search/toolbar-search.component.mjs +0 -54
  523. package/esm2020/lib/toolbar/title/toolbar-title.component.mjs +0 -47
  524. package/esm2020/lib/toolbar/toolbar-item.mjs +0 -6
  525. package/esm2020/lib/toolbar/toolbar.component.mjs +0 -13
  526. package/esm2020/lib/toolbar/toolbar.module.mjs +0 -40
  527. package/esm2020/lib/tooltip/tooltip.directive.mjs +0 -100
  528. package/esm2020/lib/tooltip/tooltip.module.mjs +0 -19
  529. package/esm2020/lib/tree-side-menu/tree-side-menu.component.mjs +0 -646
  530. package/esm2020/lib/tree-side-menu/tree-side-menu.module.mjs +0 -35
  531. package/esm2020/lib/tree-view/tree-view.component.mjs +0 -775
  532. package/esm2020/lib/tree-view/tree-view.module.mjs +0 -22
  533. package/esm2020/lib/upload-file/upload-file.component.mjs +0 -208
  534. package/esm2020/lib/upload-file/upload-file.events.mjs +0 -2
  535. package/esm2020/lib/upload-file/upload-file.module.mjs +0 -24
  536. package/esm2020/lib/validation/validation-form.component.mjs +0 -65
  537. package/esm2020/lib/validation/validation-rule.widget.mjs +0 -111
  538. package/esm2020/lib/validation/validation.class.mjs +0 -2
  539. package/esm2020/lib/validation/validation.component.mjs +0 -89
  540. package/esm2020/lib/validation/validation.module.mjs +0 -34
  541. package/esm2020/public-api.mjs +0 -158
  542. package/fesm2015/acorex-components.mjs +0 -16013
  543. package/fesm2015/acorex-components.mjs.map +0 -1
  544. package/fesm2020/acorex-components.mjs.map +0 -1
@@ -0,0 +1,1093 @@
1
+ import { AXConfig, AXDateTime } from '@acorex/core';
2
+ import { ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
3
+ import { AXValidatableComponent, } from '../base/element.class';
4
+ import { AXValueEvent } from '../base/events.class';
5
+ import { AXDropdownComponent } from '../dropdown/dropdown.component';
6
+ import { AXTextBoxComponent } from '../textbox/textbox.component';
7
+ import { AXValidation } from '../validation/validation.component';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "../dropdown/dropdown.component";
11
+ import * as i3 from "../calendar/calendar-box/calendar-box.component";
12
+ import * as i4 from "../button/button.component";
13
+ import * as i5 from "../textbox/textbox.component";
14
+ export class AXDataPickerChangeEvent extends AXValueEvent {
15
+ isUserChange;
16
+ }
17
+ export class AXDatePickerComponent extends AXValidatableComponent {
18
+ ref;
19
+ cdr;
20
+ dropdown;
21
+ input;
22
+ dayStyle = [];
23
+ dayMinMaxResoan = '';
24
+ // mmddyyyy: any = [/[0-1]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/];
25
+ yyyyMMdd = '0000/00/00';
26
+ ddMMyyyy = '00/00/0000';
27
+ yyyyddMM = '0000-00-00';
28
+ // yyyyMMdd1: any = [/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/];
29
+ // ddMMyyyy2: any = [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/];
30
+ // yyyyddMM3: any = [/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/];
31
+ _contentValidation;
32
+ _validation;
33
+ get validation() {
34
+ return this._validation ? this._validation : this._contentValidation;
35
+ }
36
+ set validation(v) {
37
+ this._validation = v;
38
+ }
39
+ placeholder = '';
40
+ min;
41
+ max;
42
+ readonly;
43
+ disabled;
44
+ allowClear = false;
45
+ textAlign = null;
46
+ showToday = false;
47
+ selectableHoliday = true;
48
+ dateType;
49
+ showTodayButton = true;
50
+ openByClick = false;
51
+ cursorPosition = 0;
52
+ model = null;
53
+ text;
54
+ _renderPicker = false;
55
+ constructor(ref, cdr) {
56
+ super();
57
+ this.ref = ref;
58
+ this.cdr = cdr;
59
+ // set defaults
60
+ if (AXConfig.get('dateTime.type')) {
61
+ this.type = AXConfig.get('dateTime.type');
62
+ }
63
+ }
64
+ size = 'md';
65
+ typeChange = new EventEmitter();
66
+ _type = 'gregorian';
67
+ get type() {
68
+ return this._type;
69
+ }
70
+ set type(v) {
71
+ if (v != this._type) {
72
+ this._type = v;
73
+ if (this._value) {
74
+ this.value = this._value.date;
75
+ }
76
+ this._setDateType();
77
+ this.typeChange.emit(v);
78
+ }
79
+ }
80
+ selectToday() {
81
+ this.value = new Date();
82
+ }
83
+ focus() {
84
+ // this.dropdown.focus();
85
+ this.input.focus();
86
+ }
87
+ convertMaskToDate(text) {
88
+ if (this.type == 'jalali') {
89
+ var d = new AXDateTime().convertStringToGregorian(text, 'YYYY/M/D');
90
+ }
91
+ else {
92
+ var d = new Date(new AXDateTime(text, 'gregorian').toISOString());
93
+ }
94
+ return d;
95
+ }
96
+ convertMask(date) {
97
+ let y;
98
+ let m;
99
+ let d;
100
+ switch (this.dateType) {
101
+ case this.yyyyMMdd:
102
+ y = date.slice(0, 4);
103
+ m = date.slice(5, 7);
104
+ d = date.slice(8, 10);
105
+ break;
106
+ case this.ddMMyyyy:
107
+ y = date.slice(6, 10);
108
+ m = date.slice(3, 5);
109
+ d = date.slice(0, 2);
110
+ break;
111
+ case this.yyyyddMM:
112
+ y = date.slice(0, 4);
113
+ m = date.slice(8, 10);
114
+ d = date.slice(5, 7);
115
+ break;
116
+ }
117
+ return { year: y, monnth: m, day: d };
118
+ }
119
+ textChange(e) {
120
+ this.text = e.value;
121
+ const date = this.convertMask(this.text);
122
+ if (this.text &&
123
+ this.text.indexOf('_') === -1 &&
124
+ this.text.length == 10 &&
125
+ this.type == 'jalali') {
126
+ this.userChange = e.isUserChange;
127
+ this.value = this.convertMaskToDate(date.year + '-' + date.monnth + '-' + date.day);
128
+ }
129
+ else if (this.text &&
130
+ this.text.indexOf('_') === -1 &&
131
+ this.text.length == 10 &&
132
+ this.type == 'gregorian') {
133
+ this.userChange = e.isUserChange;
134
+ this.value = this.convertMaskToDate(date.year + '-' + date.monnth + '-' + date.day);
135
+ }
136
+ }
137
+ ngOnInit() {
138
+ this._setDateType();
139
+ }
140
+ ngAfterViewInit() {
141
+ setTimeout(() => {
142
+ this.text = this._value?.toString();
143
+ if (this.showToday && !this.value) {
144
+ this.selectToday();
145
+ }
146
+ this.cdr.markForCheck();
147
+ });
148
+ }
149
+ ngAfterContentInit() {
150
+ this.initValidation(this.ref, 'value', this.validation);
151
+ }
152
+ clear() {
153
+ this.userChange = true;
154
+ this.value = null;
155
+ }
156
+ userChange = false;
157
+ onValueChanged = new EventEmitter();
158
+ valueChange = new EventEmitter();
159
+ _value;
160
+ get value() {
161
+ return this._value?.date;
162
+ }
163
+ set value(v) {
164
+ this.validate();
165
+ const oldValue = this._value;
166
+ const old = this.value;
167
+ if (v) {
168
+ this._value = new AXDateTime(v, this.type);
169
+ }
170
+ else {
171
+ this._value = null;
172
+ }
173
+ let unValidDate = false;
174
+ if (this.max || this.min) {
175
+ unValidDate = this.isInMInMaxRange(AXDateTime.convert(v));
176
+ }
177
+ if (!unValidDate) {
178
+ if ((!v && oldValue) ||
179
+ (this._value && !this._value.equal(oldValue, 'day'))) {
180
+ this.text = this._value?.toString();
181
+ setTimeout(() => {
182
+ this.valueChange.emit(v);
183
+ this.onValueChanged.emit({
184
+ component: this,
185
+ oldValue: old,
186
+ value: v,
187
+ isUserChange: this.userChange,
188
+ });
189
+ }, 100);
190
+ }
191
+ }
192
+ else {
193
+ this.text = '';
194
+ }
195
+ this.userChange = false;
196
+ }
197
+ _setDateType() {
198
+ switch (this.dateType) {
199
+ case 'yyyyMMdd':
200
+ this.dateType = this.yyyyMMdd;
201
+ break;
202
+ case 'ddMMyyyy':
203
+ this.dateType = this.ddMMyyyy;
204
+ break;
205
+ case 'yyyyddMM':
206
+ this.dateType = this.yyyyddMM;
207
+ break;
208
+ default:
209
+ if (this.type == 'gregorian') {
210
+ this.dateType = this.ddMMyyyy;
211
+ }
212
+ else if (this.type == 'jalali') {
213
+ this.dateType = this.yyyyMMdd;
214
+ }
215
+ break;
216
+ }
217
+ }
218
+ isInMInMaxRange(d) {
219
+ let r = false;
220
+ if (d !== undefined) {
221
+ if (this.min && !this.max) {
222
+ r =
223
+ d.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1;
224
+ }
225
+ if (this.max && !this.min) {
226
+ r =
227
+ d.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1;
228
+ }
229
+ if (this.min && this.max) {
230
+ r =
231
+ d.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1 ||
232
+ d.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1;
233
+ }
234
+ }
235
+ return r;
236
+ }
237
+ onDateChange(e) {
238
+ this.userChange = true;
239
+ this.dropdown.close();
240
+ //this.clearValidationStyle(this.ref.nativeElement);
241
+ }
242
+ onClick(e) {
243
+ this.userChange = true;
244
+ this.dropdown.close();
245
+ }
246
+ onStartfocus() {
247
+ if (this.text == undefined || this.text == null || this.text == '') {
248
+ this.input.input.nativeElement.style.caretColor = 'transparent';
249
+ setTimeout(() => {
250
+ this.setCaretPosition(this.input.input.nativeElement, 0);
251
+ this.cursorPosition = 0;
252
+ this.input.input.nativeElement.style.caretColor = 'auto';
253
+ }, 0);
254
+ }
255
+ }
256
+ handleInputFocus() {
257
+ if (this.openByClick) {
258
+ this._renderPicker = true;
259
+ this.dropdown.open();
260
+ }
261
+ else {
262
+ this.onStartfocus();
263
+ }
264
+ // this.input.input.nativeElement.focus();
265
+ }
266
+ handleInputBlur() {
267
+ if (this.text && this.text.indexOf('_') != -1) {
268
+ this.text = '';
269
+ this.value = null;
270
+ }
271
+ }
272
+ handleButtonClick() {
273
+ this._renderPicker = true;
274
+ setTimeout(() => {
275
+ this.dropdown.toggle();
276
+ });
277
+ }
278
+ handleKeyPress(e) {
279
+ if (e.type == 'keydown' || e.type == 'keypress' || e.type == 'keyup') {
280
+ if (e.key === 'Delete') {
281
+ e.preventDefault();
282
+ }
283
+ if (e.key === 'Backspace') {
284
+ }
285
+ if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {
286
+ if (this.input.input.nativeElement.selectionStart ||
287
+ this.input.input.nativeElement.selectionStart === 0) {
288
+ this.cursorPosition = this.input.input.nativeElement.selectionStart;
289
+ }
290
+ }
291
+ if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
292
+ e.preventDefault();
293
+ e.stopPropagation();
294
+ }
295
+ }
296
+ const inputChar = String.fromCharCode(e.charCode);
297
+ if (this.text != undefined) {
298
+ const ind1 = this.text.charAt(0);
299
+ const ind2 = this.text.charAt(1);
300
+ const ind3 = this.text.charAt(2);
301
+ const ind4 = this.text.charAt(3);
302
+ const ind5 = this.text.charAt(4);
303
+ const ind6 = this.text.charAt(5);
304
+ const ind7 = this.text.charAt(6);
305
+ const ind8 = this.text.charAt(7);
306
+ const ind9 = this.text.charAt(8);
307
+ const ind10 = this.text.charAt(9);
308
+ switch (this.dateType.mask) {
309
+ case this.yyyyMMdd:
310
+ if (e.type == 'keypress') {
311
+ this.handleClick();
312
+ if ((ind6 == '1' && ind7 == '_' && inputChar >= '3') ||
313
+ (((ind6 == '0' && ind7 == '_') ||
314
+ (ind9 == '0' && ind10 == '_')) &&
315
+ inputChar == '0')) {
316
+ e.preventDefault();
317
+ }
318
+ else if (ind9 == '3' && ind10 == '_') {
319
+ if (ind6 + ind7 <= '06' && inputChar >= '2') {
320
+ e.preventDefault();
321
+ }
322
+ else if (ind6 + ind7 > '06' && inputChar >= '1') {
323
+ e.preventDefault();
324
+ }
325
+ }
326
+ }
327
+ if (this.text.indexOf('_') === -1 && this.text !== '') {
328
+ if (e.type === 'keydown') {
329
+ if (e.key === 'ArrowUp') {
330
+ if (this.cursorPosition <= 4) {
331
+ this.text =
332
+ String(Number(ind1 + ind2 + ind3 + ind4) + 1) +
333
+ ind5 +
334
+ ind6 +
335
+ ind7 +
336
+ ind8 +
337
+ ind9 +
338
+ ind10;
339
+ }
340
+ if (this.cursorPosition >= 5 && this.cursorPosition <= 7) {
341
+ if (Number(ind6 + ind7) < 12) {
342
+ if (Number(ind6 + ind7) < 9) {
343
+ this.text =
344
+ ind1 +
345
+ ind2 +
346
+ ind3 +
347
+ ind4 +
348
+ ind5 +
349
+ '0' +
350
+ String(Number(ind6 + ind7) + 1) +
351
+ ind8 +
352
+ ind9 +
353
+ ind10;
354
+ }
355
+ else {
356
+ this.text =
357
+ ind1 +
358
+ ind2 +
359
+ ind3 +
360
+ ind4 +
361
+ ind5 +
362
+ String(Number(ind6 + ind7) + 1) +
363
+ ind8 +
364
+ ind9 +
365
+ ind10;
366
+ }
367
+ }
368
+ else {
369
+ this.text =
370
+ ind1 +
371
+ ind2 +
372
+ ind3 +
373
+ ind4 +
374
+ ind5 +
375
+ '01' +
376
+ ind8 +
377
+ ind9 +
378
+ ind10;
379
+ }
380
+ }
381
+ if (this.cursorPosition >= 8) {
382
+ if (Number(ind9 + ind10) < 31) {
383
+ if (Number(ind9 + ind10) < 9) {
384
+ this.text =
385
+ ind1 +
386
+ ind2 +
387
+ ind3 +
388
+ ind4 +
389
+ ind5 +
390
+ ind6 +
391
+ ind7 +
392
+ ind8 +
393
+ '0' +
394
+ String(Number(ind9 + ind10) + 1);
395
+ }
396
+ else {
397
+ this.text =
398
+ ind1 +
399
+ ind2 +
400
+ ind3 +
401
+ ind4 +
402
+ ind5 +
403
+ ind6 +
404
+ ind7 +
405
+ ind8 +
406
+ String(Number(ind9 + ind10) + 1);
407
+ }
408
+ }
409
+ else {
410
+ this.text =
411
+ ind1 +
412
+ ind2 +
413
+ ind3 +
414
+ ind4 +
415
+ ind5 +
416
+ ind6 +
417
+ ind7 +
418
+ ind8 +
419
+ '01';
420
+ }
421
+ }
422
+ // this.input.input.nativeElement.style.caretColor = 'transparent';
423
+ // setTimeout(() => {
424
+ // this.setCaret();
425
+ // e.preventDefault();
426
+ // this.input.input.nativeElement.style.caretColor = 'auto';
427
+ // }, 0);
428
+ // e.preventDefault();
429
+ }
430
+ else if (e.key === 'ArrowDown') {
431
+ if (this.cursorPosition <= 4) {
432
+ this.text =
433
+ String(Number(ind1 + ind2 + ind3 + ind4) - 1) +
434
+ ind5 +
435
+ ind6 +
436
+ ind7 +
437
+ ind8 +
438
+ ind9 +
439
+ ind10;
440
+ }
441
+ else if (this.cursorPosition > 4 &&
442
+ this.cursorPosition <= 7) {
443
+ if (Number(ind6 + ind7) > 1) {
444
+ if (Number(ind6 + ind7) < 11) {
445
+ this.text =
446
+ ind1 +
447
+ ind2 +
448
+ ind3 +
449
+ ind4 +
450
+ ind5 +
451
+ '0' +
452
+ String(Number(ind6 + ind7) - 1) +
453
+ ind8 +
454
+ ind9 +
455
+ ind10;
456
+ }
457
+ else {
458
+ this.text =
459
+ ind1 +
460
+ ind2 +
461
+ ind3 +
462
+ ind4 +
463
+ ind5 +
464
+ String(Number(ind6 + ind7) - 1) +
465
+ ind8 +
466
+ ind9 +
467
+ ind10;
468
+ }
469
+ }
470
+ else {
471
+ this.text =
472
+ ind1 +
473
+ ind2 +
474
+ ind3 +
475
+ ind4 +
476
+ ind5 +
477
+ '12' +
478
+ ind8 +
479
+ ind9 +
480
+ ind10;
481
+ }
482
+ }
483
+ else if (this.cursorPosition >= 8) {
484
+ if (Number(ind9 + ind10) > 1) {
485
+ if (Number(ind9 + ind10) < 11) {
486
+ this.text =
487
+ ind1 +
488
+ ind2 +
489
+ ind3 +
490
+ ind4 +
491
+ ind5 +
492
+ ind6 +
493
+ ind7 +
494
+ ind8 +
495
+ '0' +
496
+ String(Number(ind9 + ind10) - 1);
497
+ }
498
+ else {
499
+ this.text =
500
+ ind1 +
501
+ ind2 +
502
+ ind3 +
503
+ ind4 +
504
+ ind5 +
505
+ ind6 +
506
+ ind7 +
507
+ ind8 +
508
+ String(Number(ind9 + ind10) - 1);
509
+ }
510
+ }
511
+ else {
512
+ this.text =
513
+ ind1 +
514
+ ind2 +
515
+ ind3 +
516
+ ind4 +
517
+ ind5 +
518
+ ind6 +
519
+ ind7 +
520
+ ind8 +
521
+ '31';
522
+ }
523
+ }
524
+ // this.input.input.nativeElement.style.caretColor = 'transparent';
525
+ // setTimeout(() => {
526
+ // this.setCaret();
527
+ // this.input.input.nativeElement.style.caretColor = 'auto';
528
+ // }, 0);
529
+ }
530
+ if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
531
+ this.input.input.nativeElement.style.caretColor = 'transparent';
532
+ e.preventDefault();
533
+ e.stopPropagation();
534
+ return false;
535
+ }
536
+ }
537
+ }
538
+ if (e.type === 'keyup') {
539
+ if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
540
+ this.setCaret();
541
+ this.input.input.nativeElement.style.caretColor = 'auto';
542
+ e.preventDefault();
543
+ e.stopPropagation();
544
+ }
545
+ }
546
+ break;
547
+ case this.ddMMyyyy:
548
+ if (e.type === 'keypress') {
549
+ this.handleClick();
550
+ if ((ind4 == '1' && ind5 == '_' && inputChar >= '3') ||
551
+ (((ind1 == '0' && ind2 == '_') || (ind4 == '0' && ind5 == '_')) &&
552
+ inputChar == '0')) {
553
+ e.preventDefault();
554
+ }
555
+ else {
556
+ if (ind1 == '3' && ind2 == '_' && inputChar >= '2') {
557
+ e.preventDefault();
558
+ }
559
+ }
560
+ }
561
+ if (this.text.indexOf('_') === -1 && this.text !== '') {
562
+ if (e.type === 'keydown') {
563
+ if (e.key === 'ArrowUp') {
564
+ if (this.cursorPosition >= 6) {
565
+ this.text =
566
+ ind1 +
567
+ ind2 +
568
+ ind3 +
569
+ ind4 +
570
+ ind5 +
571
+ ind6 +
572
+ String(Number(ind7 + ind8 + ind9 + ind10) + 1);
573
+ }
574
+ if (this.cursorPosition > 2 && this.cursorPosition <= 5) {
575
+ if (Number(ind4 + ind5) < 12) {
576
+ if (Number(ind4 + ind5) < 9) {
577
+ this.text =
578
+ ind1 +
579
+ ind2 +
580
+ ind3 +
581
+ '0' +
582
+ String(Number(ind4 + ind5) + 1) +
583
+ ind6 +
584
+ ind7 +
585
+ ind8 +
586
+ ind9 +
587
+ ind10;
588
+ }
589
+ else {
590
+ this.text =
591
+ ind1 +
592
+ ind2 +
593
+ ind3 +
594
+ String(Number(ind4 + ind5) + 1) +
595
+ ind6 +
596
+ ind7 +
597
+ ind8 +
598
+ ind9 +
599
+ ind10;
600
+ }
601
+ }
602
+ else {
603
+ this.text =
604
+ ind1 +
605
+ ind2 +
606
+ ind3 +
607
+ '01' +
608
+ ind6 +
609
+ ind7 +
610
+ ind8 +
611
+ ind9 +
612
+ ind10;
613
+ }
614
+ }
615
+ if (this.cursorPosition <= 2) {
616
+ if (Number(ind1 + ind2) < 31) {
617
+ if (Number(ind1 + ind2) < 9) {
618
+ this.text =
619
+ '0' +
620
+ String(Number(ind1 + ind2) + 1) +
621
+ ind3 +
622
+ ind4 +
623
+ ind5 +
624
+ ind6 +
625
+ ind7 +
626
+ ind8 +
627
+ ind9 +
628
+ ind10;
629
+ }
630
+ else {
631
+ this.text =
632
+ String(Number(ind1 + ind2) + 1) +
633
+ ind3 +
634
+ ind4 +
635
+ ind5 +
636
+ ind6 +
637
+ ind7 +
638
+ ind8 +
639
+ ind9 +
640
+ ind10;
641
+ }
642
+ }
643
+ else {
644
+ this.text =
645
+ '01' +
646
+ ind3 +
647
+ ind4 +
648
+ ind5 +
649
+ ind6 +
650
+ ind7 +
651
+ ind8 +
652
+ ind9 +
653
+ ind10;
654
+ }
655
+ }
656
+ // this.input.input.nativeElement.style.caretColor = 'transparent';
657
+ // setTimeout(() => {
658
+ // this.setCaret();
659
+ // this.input.input.nativeElement.style.caretColor = 'auto';
660
+ // }, 0);
661
+ }
662
+ else if (e.key === 'ArrowDown') {
663
+ if (this.cursorPosition >= 6) {
664
+ this.text =
665
+ ind1 +
666
+ ind2 +
667
+ ind3 +
668
+ ind4 +
669
+ ind5 +
670
+ ind6 +
671
+ String(Number(ind7 + ind8 + ind9 + ind10) - 1);
672
+ }
673
+ else if (this.cursorPosition > 2 &&
674
+ this.cursorPosition <= 5) {
675
+ if (Number(ind4 + ind5) > 1) {
676
+ if (Number(ind4 + ind5) < 11) {
677
+ this.text =
678
+ ind1 +
679
+ ind2 +
680
+ ind3 +
681
+ '0' +
682
+ String(Number(ind4 + ind5) - 1) +
683
+ ind6 +
684
+ ind7 +
685
+ ind8 +
686
+ ind9 +
687
+ ind10;
688
+ }
689
+ else {
690
+ this.text =
691
+ ind1 +
692
+ ind2 +
693
+ ind3 +
694
+ String(Number(ind4 + ind5) - 1) +
695
+ ind6 +
696
+ ind7 +
697
+ ind8 +
698
+ ind9 +
699
+ ind10;
700
+ }
701
+ }
702
+ else {
703
+ this.text =
704
+ ind1 +
705
+ ind2 +
706
+ ind3 +
707
+ '12' +
708
+ ind6 +
709
+ ind7 +
710
+ ind8 +
711
+ ind9 +
712
+ ind10;
713
+ }
714
+ }
715
+ else if (this.cursorPosition <= 2) {
716
+ if (Number(ind1 + ind2) > 1) {
717
+ if (Number(ind1 + ind2) < 11) {
718
+ this.text =
719
+ '0' +
720
+ String(Number(ind1 + ind2) - 1) +
721
+ ind3 +
722
+ ind4 +
723
+ ind5 +
724
+ ind6 +
725
+ ind7 +
726
+ ind8 +
727
+ ind9 +
728
+ ind10;
729
+ }
730
+ else {
731
+ this.text =
732
+ String(Number(ind1 + ind2) - 1) +
733
+ ind3 +
734
+ ind4 +
735
+ ind5 +
736
+ ind6 +
737
+ ind7 +
738
+ ind8 +
739
+ ind9 +
740
+ ind10;
741
+ }
742
+ }
743
+ else {
744
+ this.text =
745
+ '31' +
746
+ ind3 +
747
+ ind4 +
748
+ ind5 +
749
+ ind6 +
750
+ ind7 +
751
+ ind8 +
752
+ ind9 +
753
+ ind10;
754
+ }
755
+ }
756
+ // this.input.input.nativeElement.style.caretColor = 'transparent';
757
+ // setTimeout(() => {
758
+ // this.setCaret();
759
+ // this.input.input.nativeElement.style.caretColor = 'auto';
760
+ // }, 0);
761
+ }
762
+ if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
763
+ this.input.input.nativeElement.style.caretColor = 'transparent';
764
+ e.preventDefault();
765
+ e.stopPropagation();
766
+ return false;
767
+ }
768
+ }
769
+ }
770
+ if (e.type === 'keyup') {
771
+ if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
772
+ this.setCaret();
773
+ this.input.input.nativeElement.style.caretColor = 'auto';
774
+ e.preventDefault();
775
+ e.stopPropagation();
776
+ }
777
+ }
778
+ break;
779
+ case this.yyyyddMM:
780
+ if (e.type === 'keypress') {
781
+ if ((ind9 === '1' && ind10 == '_' && inputChar >= '3') ||
782
+ (((ind6 == '0' && ind7 == '_') || (ind9 == '0' && ind10)) &&
783
+ inputChar == '0')) {
784
+ e.preventDefault();
785
+ }
786
+ else if (ind6 == '3' && ind7 == '_' && inputChar >= '2') {
787
+ e.preventDefault();
788
+ }
789
+ setTimeout(() => {
790
+ this.handleClick();
791
+ }, 0);
792
+ }
793
+ if (this.text.indexOf('_') === -1 && this.text !== '') {
794
+ if (e.type === 'keydown') {
795
+ if (e.key === 'ArrowUp') {
796
+ if (this.cursorPosition <= 4) {
797
+ this.text =
798
+ String(Number(ind1 + ind2 + ind3 + ind4) + 1) +
799
+ ind5 +
800
+ ind6 +
801
+ ind7 +
802
+ ind8 +
803
+ ind9 +
804
+ ind10;
805
+ }
806
+ if (this.cursorPosition > 4 && this.cursorPosition <= 7) {
807
+ if (Number(ind6 + ind7) < 31) {
808
+ if (Number(ind6 + ind7) < 9) {
809
+ this.text =
810
+ ind1 +
811
+ ind2 +
812
+ ind3 +
813
+ ind4 +
814
+ ind5 +
815
+ '0' +
816
+ String(Number(ind6 + ind7) + 1) +
817
+ ind8 +
818
+ ind9 +
819
+ ind10;
820
+ }
821
+ else {
822
+ this.text =
823
+ ind1 +
824
+ ind2 +
825
+ ind3 +
826
+ ind4 +
827
+ ind5 +
828
+ String(Number(ind6 + ind7) + 1) +
829
+ ind8 +
830
+ ind9 +
831
+ ind10;
832
+ }
833
+ }
834
+ else {
835
+ this.text =
836
+ ind1 +
837
+ ind2 +
838
+ ind3 +
839
+ ind4 +
840
+ ind5 +
841
+ '01' +
842
+ ind8 +
843
+ ind9 +
844
+ ind10;
845
+ }
846
+ }
847
+ if (this.cursorPosition >= 8) {
848
+ if (Number(ind9 + ind10) < 12) {
849
+ if (Number(ind9 + ind10) < 9) {
850
+ this.text =
851
+ ind1 +
852
+ ind2 +
853
+ ind3 +
854
+ ind4 +
855
+ ind5 +
856
+ ind6 +
857
+ ind7 +
858
+ ind8 +
859
+ '0' +
860
+ String(Number(ind9 + ind10) + 1);
861
+ }
862
+ else {
863
+ this.text =
864
+ ind1 +
865
+ ind2 +
866
+ ind3 +
867
+ ind4 +
868
+ ind5 +
869
+ ind6 +
870
+ ind7 +
871
+ ind8 +
872
+ String(Number(ind9 + ind10) + 1);
873
+ }
874
+ }
875
+ else {
876
+ this.text =
877
+ ind1 +
878
+ ind2 +
879
+ ind3 +
880
+ ind4 +
881
+ ind5 +
882
+ ind6 +
883
+ ind7 +
884
+ ind8 +
885
+ '01';
886
+ }
887
+ }
888
+ // this.input.input.nativeElement.style.caretColor = 'transparent';
889
+ // setTimeout(() => {
890
+ // this.setCaret();
891
+ // this.input.input.nativeElement.style.caretColor = 'auto';
892
+ // }, 0);
893
+ }
894
+ else if (e.key === 'ArrowDown') {
895
+ if (this.cursorPosition <= 4) {
896
+ this.text =
897
+ String(Number(ind1 + ind2 + ind3 + ind4) - 1) +
898
+ ind5 +
899
+ ind6 +
900
+ ind7 +
901
+ ind8 +
902
+ ind9 +
903
+ ind10;
904
+ }
905
+ else if (this.cursorPosition > 4 &&
906
+ this.cursorPosition <= 7) {
907
+ if (Number(ind6 + ind7) > 1) {
908
+ if (Number(ind6 + ind7) < 11) {
909
+ this.text =
910
+ ind1 +
911
+ ind2 +
912
+ ind3 +
913
+ ind4 +
914
+ ind5 +
915
+ '0' +
916
+ String(Number(ind6 + ind7) - 1) +
917
+ ind8 +
918
+ ind9 +
919
+ ind10;
920
+ }
921
+ else {
922
+ this.text =
923
+ ind1 +
924
+ ind2 +
925
+ ind3 +
926
+ ind4 +
927
+ ind5 +
928
+ String(Number(ind6 + ind7) - 1) +
929
+ ind8 +
930
+ ind9 +
931
+ ind10;
932
+ }
933
+ }
934
+ else {
935
+ this.text =
936
+ ind1 +
937
+ ind2 +
938
+ ind3 +
939
+ ind4 +
940
+ ind5 +
941
+ '31' +
942
+ ind8 +
943
+ ind9 +
944
+ ind10;
945
+ }
946
+ }
947
+ else if (this.cursorPosition >= 8) {
948
+ if (Number(ind9 + ind10) > 1) {
949
+ if (Number(ind9 + ind10) < 11) {
950
+ this.text =
951
+ ind1 +
952
+ ind2 +
953
+ ind3 +
954
+ ind4 +
955
+ ind5 +
956
+ ind6 +
957
+ ind7 +
958
+ ind8 +
959
+ '0' +
960
+ String(Number(ind9 + ind10) - 1);
961
+ }
962
+ else {
963
+ this.text =
964
+ ind1 +
965
+ ind2 +
966
+ ind3 +
967
+ ind4 +
968
+ ind5 +
969
+ ind6 +
970
+ ind7 +
971
+ ind8 +
972
+ String(Number(ind9 + ind10) - 1);
973
+ }
974
+ }
975
+ else {
976
+ this.text =
977
+ ind1 +
978
+ ind2 +
979
+ ind3 +
980
+ ind4 +
981
+ ind5 +
982
+ ind6 +
983
+ ind7 +
984
+ ind8 +
985
+ '12';
986
+ }
987
+ }
988
+ // this.input.input.nativeElement.style.caretColor = 'transparent';
989
+ // setTimeout(() => {
990
+ // this.setCaret();
991
+ // this.input.input.nativeElement.style.caretColor = 'auto';
992
+ // }, 0);
993
+ }
994
+ if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
995
+ this.input.input.nativeElement.style.caretColor = 'transparent';
996
+ e.preventDefault();
997
+ e.stopPropagation();
998
+ return false;
999
+ }
1000
+ }
1001
+ }
1002
+ if (e.type === 'keyup') {
1003
+ if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
1004
+ this.setCaret();
1005
+ this.input.input.nativeElement.style.caretColor = 'auto';
1006
+ e.preventDefault();
1007
+ e.stopPropagation();
1008
+ }
1009
+ }
1010
+ break;
1011
+ default:
1012
+ break;
1013
+ }
1014
+ }
1015
+ }
1016
+ handleClick() {
1017
+ if (this.input.input.nativeElement.selectionStart ||
1018
+ this.input.input.nativeElement.selectionStart === 0) {
1019
+ this.cursorPosition = this.input.input.nativeElement.selectionStart;
1020
+ }
1021
+ }
1022
+ setCaretPosition(ctrl, pos) {
1023
+ if (ctrl.setSelectionRange) {
1024
+ ctrl.focus();
1025
+ ctrl.setSelectionRange(pos, pos);
1026
+ }
1027
+ }
1028
+ setCaret() {
1029
+ this.setCaretPosition(this.input.input.nativeElement, this.cursorPosition);
1030
+ }
1031
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXDatePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1032
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXDatePickerComponent, selector: "ax-date-picker", inputs: { dayStyle: "dayStyle", dayMinMaxResoan: "dayMinMaxResoan", validation: "validation", placeholder: "placeholder", min: "min", max: "max", readonly: "readonly", disabled: "disabled", allowClear: "allowClear", textAlign: "textAlign", showToday: "showToday", selectableHoliday: "selectableHoliday", dateType: "dateType", showTodayButton: "showTodayButton", openByClick: "openByClick", size: "size", type: "type", value: "value" }, outputs: { typeChange: "typeChange", onValueChanged: "onValueChanged", valueChange: "valueChange" }, host: { styleAttribute: "width: 100%" }, providers: [
1033
+ { provide: AXValidatableComponent, useExisting: AXDatePickerComponent },
1034
+ ], queries: [{ propertyName: "_contentValidation", first: true, predicate: AXValidation, descendants: true, static: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ax-drop-down\n [readonly]=\"readonly\"\n [fitParent]=\"false\"\n [size]=\"size\"\n [showDropDownButton]=\"false\"\n icon=\"far fa-calendar-alt\"\n #dropdown\n maxHeight=\"unset\"\n>\n <ng-container start>\n <ng-content select=\"[start]\"> </ng-content>\n </ng-container>\n <ng-container header>\n <ax-text-box\n #input\n [textAlign]=\"textAlign\"\n [(value)]=\"text\"\n [readonly]=\"false\"\n [mask]=\"dateType\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [size]=\"size\"\n (onkey)=\"handleKeyPress($event)\"\n (onFocus)=\"handleInputFocus()\"\n (click)=\"handleClick()\"\n (onBlur)=\"handleInputBlur()\"\n (onValueChanged)=\"textChange($event)\"\n ></ax-text-box>\n </ng-container>\n <ng-container panel>\n <ax-calendar-box\n *ngIf=\"_renderPicker\"\n [showTodayButton]=\"showTodayButton\"\n [selectableHoliday]=\"selectableHoliday\"\n [min]=\"min\"\n [max]=\"max\"\n [size]=\"size\"\n (onClick)=\"onClick($event)\"\n (onValueChanged)=\"onDateChange($event)\"\n [type]=\"type\"\n [(value)]=\"value\"\n [dayStyle]=\"dayStyle\"\n [dayMinMaxResoan]=\"dayMinMaxResoan\"\n >\n </ax-calendar-box>\n </ng-container>\n <ng-container end>\n <ax-button\n end\n *ngIf=\"allowClear && value\"\n [disabled]=\"disabled\"\n icon=\"far fa-times icon\"\n type=\"blank danger\"\n (click)=\"clear()\"\n [size]=\"size\"\n [tabIndex]=\"-1\"\n >\n </ax-button>\n <ax-button\n end\n icon=\"far fa-calendar-alt icon\"\n type=\"light blank\"\n (click)=\"handleButtonClick()\"\n [disabled]=\"disabled\"\n [size]=\"size\"\n [tabIndex]=\"-1\"\n ></ax-button>\n <ng-content select=\"[end]\"> </ng-content>\n </ng-container>\n</ax-drop-down>\n", styles: [".ax-dropdown-container-bordered .ax-calendar-container{border:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AXDropdownComponent, selector: "ax-drop-down", inputs: ["rtl", "readonly", "loading", "dropdownWidth"], outputs: ["dropdownToggle", "onButtonClick"] }, { kind: "component", type: i3.AXCalendarBoxComponent, selector: "ax-calendar-box", inputs: ["size", "type", "locale", "dir", "min", "max", "selectableHoliday", "dayStyle", "dayMinMaxResoan", "showTodayButton", "view", "depth", "value"], outputs: ["onValueChanged", "onClick", "valueChange"] }, { kind: "component", type: i4.AXButtonComponent, selector: "ax-button", inputs: ["type", "icon", "submitBehavior", "cancelBehavior", "block", "loading", "selected"] }, { kind: "component", type: i5.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "showMask", "type", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }], encapsulation: i0.ViewEncapsulation.None });
1035
+ }
1036
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXDatePickerComponent, decorators: [{
1037
+ type: Component,
1038
+ args: [{ selector: 'ax-date-picker', encapsulation: ViewEncapsulation.None, providers: [
1039
+ { provide: AXValidatableComponent, useExisting: AXDatePickerComponent },
1040
+ ], host: { style: 'width: 100%' }, template: "<ax-drop-down\n [readonly]=\"readonly\"\n [fitParent]=\"false\"\n [size]=\"size\"\n [showDropDownButton]=\"false\"\n icon=\"far fa-calendar-alt\"\n #dropdown\n maxHeight=\"unset\"\n>\n <ng-container start>\n <ng-content select=\"[start]\"> </ng-content>\n </ng-container>\n <ng-container header>\n <ax-text-box\n #input\n [textAlign]=\"textAlign\"\n [(value)]=\"text\"\n [readonly]=\"false\"\n [mask]=\"dateType\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [size]=\"size\"\n (onkey)=\"handleKeyPress($event)\"\n (onFocus)=\"handleInputFocus()\"\n (click)=\"handleClick()\"\n (onBlur)=\"handleInputBlur()\"\n (onValueChanged)=\"textChange($event)\"\n ></ax-text-box>\n </ng-container>\n <ng-container panel>\n <ax-calendar-box\n *ngIf=\"_renderPicker\"\n [showTodayButton]=\"showTodayButton\"\n [selectableHoliday]=\"selectableHoliday\"\n [min]=\"min\"\n [max]=\"max\"\n [size]=\"size\"\n (onClick)=\"onClick($event)\"\n (onValueChanged)=\"onDateChange($event)\"\n [type]=\"type\"\n [(value)]=\"value\"\n [dayStyle]=\"dayStyle\"\n [dayMinMaxResoan]=\"dayMinMaxResoan\"\n >\n </ax-calendar-box>\n </ng-container>\n <ng-container end>\n <ax-button\n end\n *ngIf=\"allowClear && value\"\n [disabled]=\"disabled\"\n icon=\"far fa-times icon\"\n type=\"blank danger\"\n (click)=\"clear()\"\n [size]=\"size\"\n [tabIndex]=\"-1\"\n >\n </ax-button>\n <ax-button\n end\n icon=\"far fa-calendar-alt icon\"\n type=\"light blank\"\n (click)=\"handleButtonClick()\"\n [disabled]=\"disabled\"\n [size]=\"size\"\n [tabIndex]=\"-1\"\n ></ax-button>\n <ng-content select=\"[end]\"> </ng-content>\n </ng-container>\n</ax-drop-down>\n", styles: [".ax-dropdown-container-bordered .ax-calendar-container{border:none!important}\n"] }]
1041
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { dropdown: [{
1042
+ type: ViewChild,
1043
+ args: ['dropdown', { static: true }]
1044
+ }], input: [{
1045
+ type: ViewChild,
1046
+ args: ['input', { static: true }]
1047
+ }], dayStyle: [{
1048
+ type: Input
1049
+ }], dayMinMaxResoan: [{
1050
+ type: Input
1051
+ }], _contentValidation: [{
1052
+ type: ContentChild,
1053
+ args: [AXValidation, { static: true }]
1054
+ }], validation: [{
1055
+ type: Input
1056
+ }], placeholder: [{
1057
+ type: Input
1058
+ }], min: [{
1059
+ type: Input
1060
+ }], max: [{
1061
+ type: Input
1062
+ }], readonly: [{
1063
+ type: Input
1064
+ }], disabled: [{
1065
+ type: Input
1066
+ }], allowClear: [{
1067
+ type: Input
1068
+ }], textAlign: [{
1069
+ type: Input
1070
+ }], showToday: [{
1071
+ type: Input
1072
+ }], selectableHoliday: [{
1073
+ type: Input
1074
+ }], dateType: [{
1075
+ type: Input
1076
+ }], showTodayButton: [{
1077
+ type: Input
1078
+ }], openByClick: [{
1079
+ type: Input
1080
+ }], size: [{
1081
+ type: Input
1082
+ }], typeChange: [{
1083
+ type: Output
1084
+ }], type: [{
1085
+ type: Input
1086
+ }], onValueChanged: [{
1087
+ type: Output
1088
+ }], valueChange: [{
1089
+ type: Output
1090
+ }], value: [{
1091
+ type: Input
1092
+ }] } });
1093
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsc0JBQXNCLEdBQ3ZCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7OztBQUVsRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsWUFBa0I7SUFDN0QsWUFBWSxDQUFVO0NBQ3ZCO0FBWUQsTUFBTSxPQUFPLHFCQUNYLFNBQVEsc0JBQXNCO0lBOEVWO0lBQXlCO0lBMUU3QyxRQUFRLENBQXNCO0lBRzlCLEtBQUssQ0FBcUI7SUFHMUIsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUdkLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFFckIsc0dBQXNHO0lBQ3RHLFFBQVEsR0FBUSxZQUFZLENBQUM7SUFDN0Is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U0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl2QyxLQUFLO3NCQURKLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJcEMsUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFZRSxrQkFBa0I7c0JBRHpCLFlBQVk7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLakMsVUFBVTtzQkFEcEIsS0FBSztnQkFTRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdOLEdBQUc7c0JBREYsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBbUJOLElBQUk7c0JBREgsS0FBSztnQkFJTixVQUFVO3NCQURULE1BQU07Z0JBTUksSUFBSTtzQkFEZCxLQUFLO2dCQWtITixjQUFjO3NCQURiLE1BQU07Z0JBS1AsV0FBVztzQkFEVixNQUFNO2dCQUtJLEtBQUs7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ2FsZW5kYXJUeXBlLCBBWENvbmZpZywgQVhEYXRlVGltZSB9IGZyb20gJ0BhY29yZXgvY29yZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWEJhc2VTaXphYmxlQ29tcG9uZW50LFxuICBBWEVsZW1lbnRTaXplLFxuICBBWFZhbGlkYXRhYmxlQ29tcG9uZW50LFxufSBmcm9tICcuLi9iYXNlL2VsZW1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgQVhWYWx1ZUV2ZW50IH0gZnJvbSAnLi4vYmFzZS9ldmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgQVhEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFRleHRCb3hDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0Ym94L3RleHRib3guY29tcG9uZW50JztcbmltcG9ydCB7IEFYVmFsaWRhdGlvbiB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgY2xhc3MgQVhEYXRhUGlja2VyQ2hhbmdlRXZlbnQgZXh0ZW5kcyBBWFZhbHVlRXZlbnQ8RGF0ZT4ge1xuICBpc1VzZXJDaGFuZ2U6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWFZhbGlkYXRhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhEYXRlUGlja2VyQ29tcG9uZW50IH0sXG4gIF0sXG4gIGhvc3Q6IHsgc3R5bGU6ICd3aWR0aDogMTAwJScgfSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRlUGlja2VyQ29tcG9uZW50XG4gIGV4dGVuZHMgQVhWYWxpZGF0YWJsZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFYQmFzZVNpemFibGVDb21wb25lbnRcbntcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBkcm9wZG93bjogQVhEcm9wZG93bkNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGlucHV0OiBBWFRleHRCb3hDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgZGF5U3R5bGUgPSBbXTtcblxuICBASW5wdXQoKVxuICBkYXlNaW5NYXhSZXNvYW4gPSAnJztcblxuICAvLyBtbWRkeXl5eTogYW55ID0gWy9bMC0xXS8sIC9bMC05XS8sICctJywgL1swLTFdLywgL1swLTldLywgJy0nLCAvWzAtOV0vLCAvWzAtOV0vLCAvWzAtOV0vLCAvWzAtOV0vXTtcbiAgeXl5eU1NZGQ6IGFueSA9ICcwMDAwLzAwLzAwJztcbiAgZGRNTXl5eXk6IGFueSA9ICcwMC8wMC8wMDAwJztcbiAgeXl5eWRkTU06IGFueSA9ICcwMDAwLTAwLTAwJztcbiAgLy8geXl5eU1NZGQxOiBhbnkgPSBbL1swLTldLywgL1swLTldLywgL1swLTldLywgL1swLTldLywgJy8nLCAvWzAtMV0vLCAvWzAtOV0vLCAnLycsIC9bMC0zXS8sIC9bMC05XS9dO1xuICAvLyBkZE1NeXl5eTI6IGFueSA9IFsvWzAtM10vLCAvWzAtOV0vLCAnLycsIC9bMC0xXS8sIC9bMC05XS8sICcvJywgL1swLTldLywgL1swLTldLywgL1swLTldLywgL1swLTldL107XG4gIC8vIHl5eXlkZE1NMzogYW55ID0gWy9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sIC9bMC05XS8sICcvJywgL1swLTNdLywgL1swLTldLywgJy8nLCAvWzAtMV0vLCAvWzAtOV0vXTtcblxuICBAQ29udGVudENoaWxkKEFYVmFsaWRhdGlvbiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBfY29udGVudFZhbGlkYXRpb246IEFYVmFsaWRhdGlvbjtcbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgdmFsaWRhdGlvbigpOiBBWFZhbGlkYXRpb24ge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uID8gdGhpcy5fdmFsaWRhdGlvbiA6IHRoaXMuX2NvbnRlbnRWYWxpZGF0aW9uO1xuICB9XG5cbiAgcHVibGljIHNldCB2YWxpZGF0aW9uKHY6IEFYVmFsaWRhdGlvbikge1xuICAgIHRoaXMuX3ZhbGlkYXRpb24gPSB2O1xuICB9XG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIG1pbjogRGF0ZTtcblxuICBASW5wdXQoKVxuICBtYXg6IERhdGU7XG5cbiAgQElucHV0KClcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgYWxsb3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHRleHRBbGlnbjogJ3JpZ2h0JyB8ICdsZWZ0JyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dUb2RheTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGFibGVIb2xpZGF5OiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBkYXRlVHlwZTogYW55O1xuXG4gIEBJbnB1dCgpXG4gIHNob3dUb2RheUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgb3BlbkJ5Q2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjdXJzb3JQb3NpdGlvbjogbnVtYmVyID0gMDtcblxuICBtb2RlbDogYW55ID0gbnVsbDtcbiAgdGV4dDogc3RyaW5nO1xuXG4gIF9yZW5kZXJQaWNrZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvLyBzZXQgZGVmYXVsdHNcbiAgICBpZiAoQVhDb25maWcuZ2V0KCdkYXRlVGltZS50eXBlJykpIHtcbiAgICAgIHRoaXMudHlwZSA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUudHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNpemU6IEFYRWxlbWVudFNpemUgPSAnbWQnO1xuXG4gIEBPdXRwdXQoKVxuICB0eXBlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhDYWxlbmRhclR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFyVHlwZT4oKTtcblxuICBwcml2YXRlIF90eXBlOiBBWENhbGVuZGFyVHlwZSA9ICdncmVnb3JpYW4nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgdHlwZSgpOiBBWENhbGVuZGFyVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cblxuICBwdWJsaWMgc2V0IHR5cGUodjogQVhDYWxlbmRhclR5cGUpIHtcbiAgICBpZiAodiAhPSB0aGlzLl90eXBlKSB7XG4gICAgICB0aGlzLl90eXBlID0gdjtcbiAgICAgIGlmICh0aGlzLl92YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5fdmFsdWUuZGF0ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NldERhdGVUeXBlKCk7XG4gICAgICB0aGlzLnR5cGVDaGFuZ2UuZW1pdCh2KTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RUb2RheSgpIHtcbiAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUoKTtcbiAgfVxuXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIC8vIHRoaXMuZHJvcGRvd24uZm9jdXMoKTtcbiAgICB0aGlzLmlucHV0LmZvY3VzKCk7XG4gIH1cblxuICBjb252ZXJ0TWFza1RvRGF0ZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy50eXBlID09ICdqYWxhbGknKSB7XG4gICAgICB2YXIgZCA9IG5ldyBBWERhdGVUaW1lKCkuY29udmVydFN0cmluZ1RvR3JlZ29yaWFuKHRleHQsICdZWVlZL00vRCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZCA9IG5ldyBEYXRlKG5ldyBBWERhdGVUaW1lKHRleHQsICdncmVnb3JpYW4nKS50b0lTT1N0cmluZygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZDtcbiAgfVxuXG4gIGNvbnZlcnRNYXNrKGRhdGU6IHN0cmluZykge1xuICAgIGxldCB5O1xuICAgIGxldCBtO1xuICAgIGxldCBkO1xuICAgIHN3aXRjaCAodGhpcy5kYXRlVHlwZSkge1xuICAgICAgY2FzZSB0aGlzLnl5eXlNTWRkOlxuICAgICAgICB5ID0gZGF0ZS5zbGljZSgwLCA0KTtcbiAgICAgICAgbSA9IGRhdGUuc2xpY2UoNSwgNyk7XG4gICAgICAgIGQgPSBkYXRlLnNsaWNlKDgsIDEwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuZGRNTXl5eXk6XG4gICAgICAgIHkgPSBkYXRlLnNsaWNlKDYsIDEwKTtcbiAgICAgICAgbSA9IGRhdGUuc2xpY2UoMywgNSk7XG4gICAgICAgIGQgPSBkYXRlLnNsaWNlKDAsIDIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy55eXl5ZGRNTTpcbiAgICAgICAgeSA9IGRhdGUuc2xpY2UoMCwgNCk7XG4gICAgICAgIG0gPSBkYXRlLnNsaWNlKDgsIDEwKTtcbiAgICAgICAgZCA9IGRhdGUuc2xpY2UoNSwgNyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiB7IHllYXI6IHksIG1vbm50aDogbSwgZGF5OiBkIH07XG4gIH1cblxuICB0ZXh0Q2hhbmdlKGUpIHtcbiAgICB0aGlzLnRleHQgPSBlLnZhbHVlO1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNvbnZlcnRNYXNrKHRoaXMudGV4dCk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnRleHQgJiZcbiAgICAgIHRoaXMudGV4dC5pbmRleE9mKCdfJykgPT09IC0xICYmXG4gICAgICB0aGlzLnRleHQubGVuZ3RoID09IDEwICYmXG4gICAgICB0aGlzLnR5cGUgPT0gJ2phbGFsaSdcbiAgICApIHtcbiAgICAgIHRoaXMudXNlckNoYW5nZSA9IGUuaXNVc2VyQ2hhbmdlO1xuXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb252ZXJ0TWFza1RvRGF0ZShcbiAgICAgICAgZGF0ZS55ZWFyICsgJy0nICsgZGF0ZS5tb25udGggKyAnLScgKyBkYXRlLmRheVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy50ZXh0ICYmXG4gICAgICB0aGlzLnRleHQuaW5kZXhPZignXycpID09PSAtMSAmJlxuICAgICAgdGhpcy50ZXh0Lmxlbmd0aCA9PSAxMCAmJlxuICAgICAgdGhpcy50eXBlID09ICdncmVnb3JpYW4nXG4gICAgKSB7XG4gICAgICB0aGlzLnVzZXJDaGFuZ2UgPSBlLmlzVXNlckNoYW5nZTtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvbnZlcnRNYXNrVG9EYXRlKFxuICAgICAgICBkYXRlLnllYXIgKyAnLScgKyBkYXRlLm1vbm50aCArICctJyArIGRhdGUuZGF5XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3NldERhdGVUeXBlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnRleHQgPSB0aGlzLl92YWx1ZT8udG9TdHJpbmcoKTtcbiAgICAgIGlmICh0aGlzLnNob3dUb2RheSAmJiAhdGhpcy52YWx1ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdFRvZGF5KCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRWYWxpZGF0aW9uKHRoaXMucmVmLCAndmFsdWUnLCB0aGlzLnZhbGlkYXRpb24pO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy51c2VyQ2hhbmdlID0gdHJ1ZTtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIHVzZXJDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgb25WYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWERhdGFQaWNrZXJDaGFuZ2VFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhUGlja2VyQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IEFYRGF0ZVRpbWU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlPy5kYXRlO1xuICB9XG4gIHB1YmxpYyBzZXQgdmFsdWUodjogRGF0ZSkge1xuICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICAgIGNvbnN0IG9sZCA9IHRoaXMudmFsdWU7XG5cbiAgICBpZiAodikge1xuICAgICAgdGhpcy5fdmFsdWUgPSBuZXcgQVhEYXRlVGltZSh2LCB0aGlzLnR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgfVxuICAgIGxldCB1blZhbGlkRGF0ZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLm1heCB8fCB0aGlzLm1pbikge1xuICAgICAgdW5WYWxpZERhdGUgPSB0aGlzLmlzSW5NSW5NYXhSYW5nZShBWERhdGVUaW1lLmNvbnZlcnQodikpO1xuICAgIH1cblxuICAgIGlmICghdW5WYWxpZERhdGUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKCF2ICYmIG9sZFZhbHVlKSB8fFxuICAgICAgICAodGhpcy5fdmFsdWUgJiYgIXRoaXMuX3ZhbHVlLmVxdWFsKG9sZFZhbHVlLCAnZGF5JykpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy5fdmFsdWU/LnRvU3RyaW5nKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcbiAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICAgICAgb2xkVmFsdWU6IG9sZCxcbiAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgICAgaXNVc2VyQ2hhbmdlOiB0aGlzLnVzZXJDaGFuZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGV4dCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLnVzZXJDaGFuZ2UgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldERhdGVUeXBlKCkge1xuICAgIHN3aXRjaCAodGhpcy5kYXRlVHlwZSkge1xuICAgICAgY2FzZSAneXl5eU1NZGQnOlxuICAgICAgICB0aGlzLmRhdGVUeXBlID0gdGhpcy55eXl5TU1kZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkZE1NeXl5eSc6XG4gICAgICAgIHRoaXMuZGF0ZVR5cGUgPSB0aGlzLmRkTU15eXl5O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3l5eXlkZE1NJzpcbiAgICAgICAgdGhpcy5kYXRlVHlwZSA9IHRoaXMueXl5eWRkTU07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAodGhpcy50eXBlID09ICdncmVnb3JpYW4nKSB7XG4gICAgICAgICAgdGhpcy5kYXRlVHlwZSA9IHRoaXMuZGRNTXl5eXk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09ICdqYWxhbGknKSB7XG4gICAgICAgICAgdGhpcy5kYXRlVHlwZSA9IHRoaXMueXl5eU1NZGQ7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaXNJbk1Jbk1heFJhbmdlKGQpIHtcbiAgICBsZXQgciA9IGZhbHNlO1xuICAgIGlmIChkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm1pbiAmJiAhdGhpcy5tYXgpIHtcbiAgICAgICAgciA9XG4gICAgICAgICAgZC5jb21wYWlyZU5ldyhcbiAgICAgICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMubWluLCB0aGlzLnR5cGUpLFxuICAgICAgICAgICAgJ1lNRCcsXG4gICAgICAgICAgICB0aGlzLnR5cGVcbiAgICAgICAgICApID09PSAtMTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1heCAmJiAhdGhpcy5taW4pIHtcbiAgICAgICAgciA9XG4gICAgICAgICAgZC5jb21wYWlyZU5ldyhcbiAgICAgICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMubWF4LCB0aGlzLnR5cGUpLFxuICAgICAgICAgICAgJ1lNRCcsXG4gICAgICAgICAgICB0aGlzLnR5cGVcbiAgICAgICAgICApID09PSAxO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubWluICYmIHRoaXMubWF4KSB7XG4gICAgICAgIHIgPVxuICAgICAgICAgIGQuY29tcGFpcmVOZXcoXG4gICAgICAgICAgICBuZXcgQVhEYXRlVGltZSh0aGlzLm1pbiwgdGhpcy50eXBlKSxcbiAgICAgICAgICAgICdZTUQnLFxuICAgICAgICAgICAgdGhpcy50eXBlXG4gICAgICAgICAgKSA9PT0gLTEgfHxcbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KFxuICAgICAgICAgICAgbmV3IEFYRGF0ZVRpbWUodGhpcy5tYXgsIHRoaXMudHlwZSksXG4gICAgICAgICAgICAnWU1EJyxcbiAgICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICAgICkgPT09IDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgb25EYXRlQ2hhbmdlKGUpIHtcbiAgICB0aGlzLnVzZXJDaGFuZ2UgPSB0cnVlO1xuICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcblxuICAgIC8vdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIG9uQ2xpY2soZSkge1xuICAgIHRoaXMudXNlckNoYW5nZSA9IHRydWU7XG4gICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xuICB9XG5cbiAgb25TdGFydGZvY3VzKCkge1xuICAgIGlmICh0aGlzLnRleHQgPT0gdW5kZWZpbmVkIHx8IHRoaXMudGV4dCA9PSBudWxsIHx8IHRoaXMudGV4dCA9PSAnJykge1xuICAgICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbih0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQsIDApO1xuICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uID0gMDtcbiAgICAgICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVJbnB1dEZvY3VzKCkge1xuICAgIGlmICh0aGlzLm9wZW5CeUNsaWNrKSB7XG4gICAgICB0aGlzLl9yZW5kZXJQaWNrZXIgPSB0cnVlO1xuICAgICAgdGhpcy5kcm9wZG93bi5vcGVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25TdGFydGZvY3VzKCk7XG4gICAgfVxuXG4gICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cbiAgaGFuZGxlSW5wdXRCbHVyKCkge1xuICAgIGlmICh0aGlzLnRleHQgJiYgdGhpcy50ZXh0LmluZGV4T2YoJ18nKSAhPSAtMSkge1xuICAgICAgdGhpcy50ZXh0ID0gJyc7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVCdXR0b25DbGljaygpIHtcbiAgICB0aGlzLl9yZW5kZXJQaWNrZXIgPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kcm9wZG93bi50b2dnbGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUtleVByZXNzKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZS50eXBlID09ICdrZXlkb3duJyB8fCBlLnR5cGUgPT0gJ2tleXByZXNzJyB8fCBlLnR5cGUgPT0gJ2tleXVwJykge1xuICAgICAgaWYgKGUua2V5ID09PSAnRGVsZXRlJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICB9XG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd0xlZnQnIHx8IGUua2V5ID09PSAnQXJyb3dSaWdodCcpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCB8fFxuICAgICAgICAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uID0gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGlucHV0Q2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZS5jaGFyQ29kZSk7XG4gICAgaWYgKHRoaXMudGV4dCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGluZDEgPSB0aGlzLnRleHQuY2hhckF0KDApO1xuICAgICAgY29uc3QgaW5kMiA9IHRoaXMudGV4dC5jaGFyQXQoMSk7XG4gICAgICBjb25zdCBpbmQzID0gdGhpcy50ZXh0LmNoYXJBdCgyKTtcbiAgICAgIGNvbnN0IGluZDQgPSB0aGlzLnRleHQuY2hhckF0KDMpO1xuICAgICAgY29uc3QgaW5kNSA9IHRoaXMudGV4dC5jaGFyQXQoNCk7XG4gICAgICBjb25zdCBpbmQ2ID0gdGhpcy50ZXh0LmNoYXJBdCg1KTtcbiAgICAgIGNvbnN0IGluZDcgPSB0aGlzLnRleHQuY2hhckF0KDYpO1xuICAgICAgY29uc3QgaW5kOCA9IHRoaXMudGV4dC5jaGFyQXQoNyk7XG4gICAgICBjb25zdCBpbmQ5ID0gdGhpcy50ZXh0LmNoYXJBdCg4KTtcbiAgICAgIGNvbnN0IGluZDEwID0gdGhpcy50ZXh0LmNoYXJBdCg5KTtcbiAgICAgIHN3aXRjaCAodGhpcy5kYXRlVHlwZS5tYXNrKSB7XG4gICAgICAgIGNhc2UgdGhpcy55eXl5TU1kZDpcbiAgICAgICAgICBpZiAoZS50eXBlID09ICdrZXlwcmVzcycpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xpY2soKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgKGluZDYgPT0gJzEnICYmIGluZDcgPT0gJ18nICYmIGlucHV0Q2hhciA+PSAnMycpIHx8XG4gICAgICAgICAgICAgICgoKGluZDYgPT0gJzAnICYmIGluZDcgPT0gJ18nKSB8fFxuICAgICAgICAgICAgICAgIChpbmQ5ID09ICcwJyAmJiBpbmQxMCA9PSAnXycpKSAmJlxuICAgICAgICAgICAgICAgIGlucHV0Q2hhciA9PSAnMCcpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmQ5ID09ICczJyAmJiBpbmQxMCA9PSAnXycpIHtcbiAgICAgICAgICAgICAgaWYgKGluZDYgKyBpbmQ3IDw9ICcwNicgJiYgaW5wdXRDaGFyID49ICcyJykge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbmQ2ICsgaW5kNyA+ICcwNicgJiYgaW5wdXRDaGFyID49ICcxJykge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy50ZXh0LmluZGV4T2YoJ18nKSA9PT0gLTEgJiYgdGhpcy50ZXh0ICE9PSAnJykge1xuICAgICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleWRvd24nKSB7XG4gICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0KSArIDEpICtcbiAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgIGluZDYgK1xuICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgaW5kOCArXG4gICAgICAgICAgICAgICAgICAgIGluZDkgK1xuICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPj0gNSAmJiB0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDcpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNiArIGluZDcpIDwgMTIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ2ICsgaW5kNykgPCA5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnMCcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQ2ICsgaW5kNykgKyAxKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ4ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMTA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoTnVtYmVyKGluZDYgKyBpbmQ3KSArIDEpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpbmQxICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQyICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ0ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ1ICtcbiAgICAgICAgICAgICAgICAgICAgICAnMDEnICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ4ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ5ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPj0gOCkge1xuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApIDwgMzEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApIDwgOSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhOdW1iZXIoaW5kOSArIGluZDEwKSArIDEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgaW5kMSArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kMyArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNCArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNyArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kOCArXG4gICAgICAgICAgICAgICAgICAgICAgJzAxJztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xuICAgICAgICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5zZXRDYXJldCgpO1xuICAgICAgICAgICAgICAgIC8vICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgLy8gfSwgMCk7XG4gICAgICAgICAgICAgICAgLy8gZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgIFN0cmluZyhOdW1iZXIoaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCkgLSAxKSArXG4gICAgICAgICAgICAgICAgICAgIGluZDUgK1xuICAgICAgICAgICAgICAgICAgICBpbmQ2ICtcbiAgICAgICAgICAgICAgICAgICAgaW5kNyArXG4gICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICBpbmQ5ICtcbiAgICAgICAgICAgICAgICAgICAgaW5kMTA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPiA0ICYmXG4gICAgICAgICAgICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDdcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNiArIGluZDcpID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDYgKyBpbmQ3KSA8IDExKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnMCcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQ2ICsgaW5kNykgLSAxKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ4ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMTA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoTnVtYmVyKGluZDYgKyBpbmQ3KSAtIDEpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpbmQxICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQyICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ0ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ1ICtcbiAgICAgICAgICAgICAgICAgICAgICAnMTInICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ4ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ5ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPj0gOCkge1xuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDkgKyBpbmQxMCkgPCAxMSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhOdW1iZXIoaW5kOSArIGluZDEwKSAtIDEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgaW5kMSArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kMyArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNCArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNyArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kOCArXG4gICAgICAgICAgICAgICAgICAgICAgJzMxJztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xuXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLnNldENhcmV0KCk7XG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICAvLyB9LCAwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXl1cCcpIHtcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnIHx8IGUua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgICB0aGlzLnNldENhcmV0KCk7XG4gICAgICAgICAgICAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIHRoaXMuZGRNTXl5eXk6XG4gICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleXByZXNzJykge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDbGljaygpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAoaW5kNCA9PSAnMScgJiYgaW5kNSA9PSAnXycgJiYgaW5wdXRDaGFyID49ICczJykgfHxcbiAgICAgICAgICAgICAgKCgoaW5kMSA9PSAnMCcgJiYgaW5kMiA9PSAnXycpIHx8IChpbmQ0ID09ICcwJyAmJiBpbmQ1ID09ICdfJykpICYmXG4gICAgICAgICAgICAgICAgaW5wdXRDaGFyID09ICcwJylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoaW5kMSA9PSAnMycgJiYgaW5kMiA9PSAnXycgJiYgaW5wdXRDaGFyID49ICcyJykge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy50ZXh0LmluZGV4T2YoJ18nKSA9PT0gLTEgJiYgdGhpcy50ZXh0ICE9PSAnJykge1xuICAgICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleWRvd24nKSB7XG4gICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPj0gNikge1xuICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgaW5kMSArXG4gICAgICAgICAgICAgICAgICAgIGluZDIgK1xuICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgaW5kNCArXG4gICAgICAgICAgICAgICAgICAgIGluZDUgK1xuICAgICAgICAgICAgICAgICAgICBpbmQ2ICtcbiAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQ3ICsgaW5kOCArIGluZDkgKyBpbmQxMCkgKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPiAyICYmIHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNSkge1xuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ0ICsgaW5kNSkgPCAxMikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDQgKyBpbmQ1KSA8IDkpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQyICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDMgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhOdW1iZXIoaW5kNCArIGluZDUpICsgMSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQyICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDMgK1xuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQ0ICsgaW5kNSkgKyAxKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ2ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOCArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ5ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDIgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDMgK1xuICAgICAgICAgICAgICAgICAgICAgICcwMScgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDYgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDcgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDkgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDEwO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA8PSAyKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDEgKyBpbmQyKSA8IDMxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kMSArIGluZDIpIDwgOSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAnMCcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQxICsgaW5kMikgKyAxKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ2ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOCArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ5ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEwO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoTnVtYmVyKGluZDEgKyBpbmQyKSArIDEpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDMgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNCArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ1ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDYgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ4ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMTA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgJzAxJyArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kMyArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNCArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNyArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kOCArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kOSArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kMTA7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ3RyYW5zcGFyZW50JztcbiAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuc2V0Q2FyZXQoKTtcbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIC8vIH0sIDApO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uID49IDYpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICBpbmQyICtcbiAgICAgICAgICAgICAgICAgICAgaW5kMyArXG4gICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICBpbmQ1ICtcbiAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgIFN0cmluZyhOdW1iZXIoaW5kNyArIGluZDggKyBpbmQ5ICsgaW5kMTApIC0gMSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPiAyICYmXG4gICAgICAgICAgICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNCArIGluZDUpID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDQgKyBpbmQ1KSA8IDExKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcwJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoTnVtYmVyKGluZDQgKyBpbmQ1KSAtIDEpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDYgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ4ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMTA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhOdW1iZXIoaW5kNCArIGluZDUpIC0gMSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpbmQxICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQyICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAnMTInICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ2ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ4ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ5ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gMikge1xuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQxICsgaW5kMikgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kMSArIGluZDIpIDwgMTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgJzAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhOdW1iZXIoaW5kMSArIGluZDIpIC0gMSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQxICsgaW5kMikgLSAxKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ2ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOCArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ5ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICczMScgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDMgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDUgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDYgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDcgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDkgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDEwO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLnNldENhcmV0KCk7XG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICAvLyB9LCAwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXl1cCcpIHtcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnIHx8IGUua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgICB0aGlzLnNldENhcmV0KCk7XG4gICAgICAgICAgICAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgdGhpcy55eXl5ZGRNTTpcbiAgICAgICAgICBpZiAoZS50eXBlID09PSAna2V5cHJlc3MnKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIChpbmQ5ID09PSAnMScgJiYgaW5kMTAgPT0gJ18nICYmIGlucHV0Q2hhciA+PSAnMycpIHx8XG4gICAgICAgICAgICAgICgoKGluZDYgPT0gJzAnICYmIGluZDcgPT0gJ18nKSB8fCAoaW5kOSA9PSAnMCcgJiYgaW5kMTApKSAmJlxuICAgICAgICAgICAgICAgIGlucHV0Q2hhciA9PSAnMCcpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmQ2ID09ICczJyAmJiBpbmQ3ID09ICdfJyAmJiBpbnB1dENoYXIgPj0gJzInKSB7XG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNsaWNrKCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMudGV4dC5pbmRleE9mKCdfJykgPT09IC0xICYmIHRoaXMudGV4dCAhPT0gJycpIHtcbiAgICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXlkb3duJykge1xuICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgIFN0cmluZyhOdW1iZXIoaW5kMSArIGluZDIgKyBpbmQzICsgaW5kNCkgKyAxKSArXG4gICAgICAgICAgICAgICAgICAgIGluZDUgK1xuICAgICAgICAgICAgICAgICAgICBpbmQ2ICtcbiAgICAgICAgICAgICAgICAgICAgaW5kNyArXG4gICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICBpbmQ5ICtcbiAgICAgICAgICAgICAgICAgICAgaW5kMTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uID4gNCAmJiB0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDcpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNiArIGluZDcpIDwgMzEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ2ICsgaW5kNykgPCA5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnMCcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQ2ICsgaW5kNykgKyAxKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ4ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMTA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoTnVtYmVyKGluZDYgKyBpbmQ3KSArIDEpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpbmQxICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQyICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ0ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ1ICtcbiAgICAgICAgICAgICAgICAgICAgICAnMDEnICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ4ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ5ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPj0gOCkge1xuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApIDwgMTIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ5ICsgaW5kMTApIDwgOSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhOdW1iZXIoaW5kOSArIGluZDEwKSArIDEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMyArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgaW5kMSArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kMyArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNCArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNiArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kNyArXG4gICAgICAgICAgICAgICAgICAgICAgaW5kOCArXG4gICAgICAgICAgICAgICAgICAgICAgJzAxJztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xuICAgICAgICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5zZXRDYXJldCgpO1xuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgLy8gfSwgMCk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gNCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQxICsgaW5kMiArIGluZDMgKyBpbmQ0KSAtIDEpICtcbiAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgIGluZDYgK1xuICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgaW5kOCArXG4gICAgICAgICAgICAgICAgICAgIGluZDkgK1xuICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgdGhpcy5jdXJzb3JQb3NpdGlvbiA+IDQgJiZcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPD0gN1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlcihpbmQ2ICsgaW5kNykgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kNiArIGluZDcpIDwgMTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQyICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDMgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNCArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ1ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcwJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoTnVtYmVyKGluZDYgKyBpbmQ3KSAtIDEpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQxMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQyICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDMgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNCArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ1ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhOdW1iZXIoaW5kNiArIGluZDcpIC0gMSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOCArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ5ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDIgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDMgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDUgK1xuICAgICAgICAgICAgICAgICAgICAgICczMScgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDggK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDkgK1xuICAgICAgICAgICAgICAgICAgICAgIGluZDEwO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbiA+PSA4KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKGluZDkgKyBpbmQxMCkgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIoaW5kOSArIGluZDEwKSA8IDExKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ2ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnMCcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKE51bWJlcihpbmQ5ICsgaW5kMTApIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kMiArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kNSArXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ2ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZDcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kOCArXG4gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoTnVtYmVyKGluZDkgKyBpbmQxMCkgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpbmQxICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQyICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQzICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ0ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ1ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ2ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ3ICtcbiAgICAgICAgICAgICAgICAgICAgICBpbmQ4ICtcbiAgICAgICAgICAgICAgICAgICAgICAnMTInO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLnNldENhcmV0KCk7XG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICAvLyB9LCAwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICd0cmFuc3BhcmVudCc7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXl1cCcpIHtcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnIHx8IGUua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgICB0aGlzLnNldENhcmV0KCk7XG4gICAgICAgICAgICAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBoYW5kbGVDbGljaygpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgfHxcbiAgICAgIHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gMFxuICAgICkge1xuICAgICAgdGhpcy5jdXJzb3JQb3NpdGlvbiA9IHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICB9XG4gIH1cblxuICBzZXRDYXJldFBvc2l0aW9uKGN0cmwsIHBvcykge1xuICAgIGlmIChjdHJsLnNldFNlbGVjdGlvblJhbmdlKSB7XG4gICAgICBjdHJsLmZvY3VzKCk7XG4gICAgICBjdHJsLnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKTtcbiAgICB9XG4gIH1cblxuICBzZXRDYXJldCgpIHtcbiAgICB0aGlzLnNldENhcmV0UG9zaXRpb24odGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LCB0aGlzLmN1cnNvclBvc2l0aW9uKTtcbiAgfVxufVxuIiwiPGF4LWRyb3AtZG93blxuICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbZml0UGFyZW50XT1cImZhbHNlXCJcbiAgW3NpemVdPVwic2l6ZVwiXG4gIFtzaG93RHJvcERvd25CdXR0b25dPVwiZmFsc2VcIlxuICBpY29uPVwiZmFyIGZhLWNhbGVuZGFyLWFsdFwiXG4gICNkcm9wZG93blxuICBtYXhIZWlnaHQ9XCJ1bnNldFwiXG4+XG4gIDxuZy1jb250YWluZXIgc3RhcnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3N0YXJ0XVwiPiA8L25nLWNvbnRlbnQ+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyIGhlYWRlcj5cbiAgICA8YXgtdGV4dC1ib3hcbiAgICAgICNpbnB1dFxuICAgICAgW3RleHRBbGlnbl09XCJ0ZXh0QWxpZ25cIlxuICAgICAgWyh2YWx1ZSldPVwidGV4dFwiXG4gICAgICBbcmVhZG9ubHldPVwiZmFsc2VcIlxuICAgICAgW21hc2tdPVwiZGF0ZVR5cGVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgIChvbmtleSk9XCJoYW5kbGVLZXlQcmVzcygkZXZlbnQpXCJcbiAgICAgIChvbkZvY3VzKT1cImhhbmRsZUlucHV0Rm9jdXMoKVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soKVwiXG4gICAgICAob25CbHVyKT1cImhhbmRsZUlucHV0Qmx1cigpXCJcbiAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJ0ZXh0Q2hhbmdlKCRldmVudClcIlxuICAgID48L2F4LXRleHQtYm94PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBwYW5lbD5cbiAgICA8YXgtY2FsZW5kYXItYm94XG4gICAgICAqbmdJZj1cIl9yZW5kZXJQaWNrZXJcIlxuICAgICAgW3Nob3dUb2RheUJ1dHRvbl09XCJzaG93VG9kYXlCdXR0b25cIlxuICAgICAgW3NlbGVjdGFibGVIb2xpZGF5XT1cInNlbGVjdGFibGVIb2xpZGF5XCJcbiAgICAgIFttaW5dPVwibWluXCJcbiAgICAgIFttYXhdPVwibWF4XCJcbiAgICAgIFtzaXplXT1cInNpemVcIlxuICAgICAgKG9uQ2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgIFsodmFsdWUpXT1cInZhbHVlXCJcbiAgICAgIFtkYXlTdHlsZV09XCJkYXlTdHlsZVwiXG4gICAgICBbZGF5TWluTWF4UmVzb2FuXT1cImRheU1pbk1heFJlc29hblwiXG4gICAgPlxuICAgIDwvYXgtY2FsZW5kYXItYm94PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBlbmQ+XG4gICAgPGF4LWJ1dHRvblxuICAgICAgZW5kXG4gICAgICAqbmdJZj1cImFsbG93Q2xlYXIgJiYgdmFsdWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIGljb249XCJmYXIgZmEtdGltZXMgaWNvblwiXG4gICAgICB0eXBlPVwiYmxhbmsgZGFuZ2VyXCJcbiAgICAgIChjbGljayk9XCJjbGVhcigpXCJcbiAgICAgIFtzaXplXT1cInNpemVcIlxuICAgICAgW3RhYkluZGV4XT1cIi0xXCJcbiAgICA+XG4gICAgPC9heC1idXR0b24+XG4gICAgPGF4LWJ1dHRvblxuICAgICAgZW5kXG4gICAgICBpY29uPVwiZmFyIGZhLWNhbGVuZGFyLWFsdCBpY29uXCJcbiAgICAgIHR5cGU9XCJsaWdodCBibGFua1wiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQnV0dG9uQ2xpY2soKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW3NpemVdPVwic2l6ZVwiXG4gICAgICBbdGFiSW5kZXhdPVwiLTFcIlxuICAgID48L2F4LWJ1dHRvbj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZW5kXVwiPiA8L25nLWNvbnRlbnQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9heC1kcm9wLWRvd24+XG4iXX0=