@ng-nest/ui 16.0.10 → 16.0.12

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 (494) hide show
  1. package/checkbox/checkbox.component.d.ts +0 -1
  2. package/checkbox/checkbox.property.d.ts +16 -1
  3. package/date-picker/date-range.component.d.ts +1 -1
  4. package/esm2022/affix/affix.component.mjs +4 -4
  5. package/esm2022/affix/affix.module.mjs +5 -5
  6. package/esm2022/affix/affix.property.mjs +4 -4
  7. package/esm2022/alert/alert.component.mjs +4 -4
  8. package/esm2022/alert/alert.module.mjs +5 -5
  9. package/esm2022/alert/alert.property.mjs +4 -4
  10. package/esm2022/anchor/anchor-inner.component.mjs +4 -4
  11. package/esm2022/anchor/anchor.component.mjs +4 -4
  12. package/esm2022/anchor/anchor.module.mjs +5 -5
  13. package/esm2022/anchor/anchor.property.mjs +7 -7
  14. package/esm2022/api/api.component.mjs +4 -4
  15. package/esm2022/api/api.module.mjs +5 -5
  16. package/esm2022/auto-complete/auto-complete-portal.component.mjs +5 -5
  17. package/esm2022/auto-complete/auto-complete.component.mjs +5 -5
  18. package/esm2022/auto-complete/auto-complete.module.mjs +5 -5
  19. package/esm2022/auto-complete/auto-complete.property.mjs +4 -4
  20. package/esm2022/avatar/avatar-group.component.mjs +4 -4
  21. package/esm2022/avatar/avatar.component.mjs +4 -4
  22. package/esm2022/avatar/avatar.module.mjs +5 -5
  23. package/esm2022/avatar/avatar.property.mjs +7 -7
  24. package/esm2022/back-top/back-top.component.mjs +4 -4
  25. package/esm2022/back-top/back-top.module.mjs +5 -5
  26. package/esm2022/back-top/back-top.property.mjs +4 -4
  27. package/esm2022/badge/badge.component.mjs +4 -4
  28. package/esm2022/badge/badge.module.mjs +5 -5
  29. package/esm2022/badge/badge.property.mjs +4 -4
  30. package/esm2022/base-form/base-form.component.mjs +4 -4
  31. package/esm2022/base-form/base-form.module.mjs +5 -5
  32. package/esm2022/base-form/base-form.property.mjs +4 -4
  33. package/esm2022/border/border.component.mjs +4 -4
  34. package/esm2022/border/border.module.mjs +5 -5
  35. package/esm2022/button/button.component.mjs +4 -4
  36. package/esm2022/button/button.module.mjs +5 -5
  37. package/esm2022/button/button.property.mjs +7 -7
  38. package/esm2022/button/buttons.component.mjs +4 -4
  39. package/esm2022/calendar/calendar.component.mjs +4 -4
  40. package/esm2022/calendar/calendar.module.mjs +5 -5
  41. package/esm2022/calendar/calendar.property.mjs +4 -4
  42. package/esm2022/card/card.component.mjs +4 -4
  43. package/esm2022/card/card.module.mjs +5 -5
  44. package/esm2022/card/card.property.mjs +4 -4
  45. package/esm2022/carousel/carousel-panel.component.mjs +4 -4
  46. package/esm2022/carousel/carousel.component.mjs +4 -4
  47. package/esm2022/carousel/carousel.module.mjs +5 -5
  48. package/esm2022/carousel/carousel.property.mjs +7 -7
  49. package/esm2022/cascade/cascade-portal.component.mjs +4 -4
  50. package/esm2022/cascade/cascade.component.mjs +4 -4
  51. package/esm2022/cascade/cascade.module.mjs +5 -5
  52. package/esm2022/cascade/cascade.property.mjs +4 -4
  53. package/esm2022/checkbox/checkbox.component.mjs +5 -7
  54. package/esm2022/checkbox/checkbox.module.mjs +5 -5
  55. package/esm2022/checkbox/checkbox.property.mjs +30 -4
  56. package/esm2022/collapse/collapse-panel.component.mjs +4 -4
  57. package/esm2022/collapse/collapse.component.mjs +4 -4
  58. package/esm2022/collapse/collapse.module.mjs +5 -5
  59. package/esm2022/collapse/collapse.property.mjs +7 -7
  60. package/esm2022/color/color.component.mjs +4 -4
  61. package/esm2022/color/color.module.mjs +5 -5
  62. package/esm2022/color/color.property.mjs +4 -4
  63. package/esm2022/color-picker/color-picker-portal.component.mjs +4 -4
  64. package/esm2022/color-picker/color-picker.component.mjs +4 -4
  65. package/esm2022/color-picker/color-picker.module.mjs +5 -5
  66. package/esm2022/color-picker/color-picker.property.mjs +4 -4
  67. package/esm2022/comment/comment-reply.component.mjs +4 -4
  68. package/esm2022/comment/comment.component.mjs +4 -4
  69. package/esm2022/comment/comment.module.mjs +5 -5
  70. package/esm2022/comment/comment.property.mjs +7 -7
  71. package/esm2022/container/aside.component.mjs +4 -4
  72. package/esm2022/container/container.component.mjs +4 -4
  73. package/esm2022/container/container.module.mjs +5 -5
  74. package/esm2022/container/container.property.mjs +13 -13
  75. package/esm2022/container/footer.component.mjs +4 -4
  76. package/esm2022/container/header.component.mjs +4 -4
  77. package/esm2022/container/main.component.mjs +4 -4
  78. package/esm2022/core/config/config.service.mjs +4 -4
  79. package/esm2022/core/services/http.service.mjs +4 -4
  80. package/esm2022/core/services/preloading-strategy.service.mjs +4 -4
  81. package/esm2022/core/services/storage.service.mjs +4 -4
  82. package/esm2022/core/theme/theme.service.mjs +4 -4
  83. package/esm2022/crumb/crumb.component.mjs +4 -4
  84. package/esm2022/crumb/crumb.module.mjs +5 -5
  85. package/esm2022/crumb/crumb.property.mjs +4 -4
  86. package/esm2022/date-picker/date-picker-portal.component.mjs +4 -4
  87. package/esm2022/date-picker/date-picker.component.mjs +4 -4
  88. package/esm2022/date-picker/date-picker.module.mjs +5 -5
  89. package/esm2022/date-picker/date-picker.property.mjs +19 -19
  90. package/esm2022/date-picker/date-quarter.pipe.mjs +4 -4
  91. package/esm2022/date-picker/date-range-portal.component.mjs +4 -4
  92. package/esm2022/date-picker/date-range.component.mjs +4 -4
  93. package/esm2022/date-picker/picker-date.component.mjs +4 -4
  94. package/esm2022/date-picker/picker-month.component.mjs +4 -4
  95. package/esm2022/date-picker/picker-quarter.component.mjs +4 -4
  96. package/esm2022/date-picker/picker-year.component.mjs +4 -4
  97. package/esm2022/description/description-item.component.mjs +4 -4
  98. package/esm2022/description/description.component.mjs +4 -4
  99. package/esm2022/description/description.module.mjs +5 -5
  100. package/esm2022/description/description.property.mjs +7 -7
  101. package/esm2022/dialog/dialog-container.component.mjs +4 -4
  102. package/esm2022/dialog/dialog-portal.component.mjs +4 -4
  103. package/esm2022/dialog/dialog-portal.directives.mjs +19 -19
  104. package/esm2022/dialog/dialog.component.mjs +4 -4
  105. package/esm2022/dialog/dialog.module.mjs +5 -5
  106. package/esm2022/dialog/dialog.property.mjs +7 -7
  107. package/esm2022/dialog/dialog.service.mjs +4 -4
  108. package/esm2022/doc/doc.component.mjs +5 -5
  109. package/esm2022/doc/doc.module.mjs +5 -5
  110. package/esm2022/drag/drag.directive.mjs +4 -4
  111. package/esm2022/drag/drag.module.mjs +5 -5
  112. package/esm2022/drag/drag.property.mjs +4 -4
  113. package/esm2022/drawer/drawer-container.component.mjs +4 -4
  114. package/esm2022/drawer/drawer-portal.component.mjs +4 -4
  115. package/esm2022/drawer/drawer-portal.directives.mjs +10 -10
  116. package/esm2022/drawer/drawer.component.mjs +4 -4
  117. package/esm2022/drawer/drawer.module.mjs +5 -5
  118. package/esm2022/drawer/drawer.property.mjs +7 -7
  119. package/esm2022/drawer/drawer.service.mjs +4 -4
  120. package/esm2022/dropdown/dropdown-portal.component.mjs +4 -4
  121. package/esm2022/dropdown/dropdown.component.mjs +4 -4
  122. package/esm2022/dropdown/dropdown.module.mjs +5 -5
  123. package/esm2022/dropdown/dropdown.property.mjs +4 -4
  124. package/esm2022/empty/empty.component.mjs +4 -4
  125. package/esm2022/empty/empty.module.mjs +5 -5
  126. package/esm2022/empty/empty.property.mjs +4 -4
  127. package/esm2022/examples/examples.component.mjs +4 -4
  128. package/esm2022/examples/examples.module.mjs +5 -5
  129. package/esm2022/find/find.component.mjs +4 -4
  130. package/esm2022/find/find.module.mjs +5 -5
  131. package/esm2022/find/find.property.mjs +4 -4
  132. package/esm2022/form/control.component.mjs +4 -4
  133. package/esm2022/form/form.component.mjs +4 -4
  134. package/esm2022/form/form.module.mjs +5 -5
  135. package/esm2022/form/form.property.mjs +7 -7
  136. package/esm2022/highlight/highlight.component.mjs +4 -4
  137. package/esm2022/highlight/highlight.module.mjs +5 -5
  138. package/esm2022/highlight/highlight.property.mjs +4 -4
  139. package/esm2022/i18n/i18n.directive.mjs +4 -4
  140. package/esm2022/i18n/i18n.module.mjs +5 -5
  141. package/esm2022/i18n/i18n.pipe.mjs +4 -4
  142. package/esm2022/i18n/i18n.service.mjs +4 -4
  143. package/esm2022/icon/icon.component.mjs +4 -4
  144. package/esm2022/icon/icon.module.mjs +5 -5
  145. package/esm2022/icon/icon.property.mjs +4 -4
  146. package/esm2022/icon/icon.service.mjs +4 -4
  147. package/esm2022/image/image-group.component.mjs +4 -4
  148. package/esm2022/image/image-preview.component.mjs +4 -4
  149. package/esm2022/image/image.component.mjs +4 -4
  150. package/esm2022/image/image.module.mjs +5 -5
  151. package/esm2022/image/image.property.mjs +7 -7
  152. package/esm2022/inner/inner.component.mjs +4 -4
  153. package/esm2022/inner/inner.module.mjs +5 -5
  154. package/esm2022/inner/inner.property.mjs +4 -4
  155. package/esm2022/input/input-group.component.mjs +4 -4
  156. package/esm2022/input/input.component.mjs +4 -4
  157. package/esm2022/input/input.module.mjs +5 -5
  158. package/esm2022/input/input.property.mjs +7 -7
  159. package/esm2022/input-number/input-number.component.mjs +4 -4
  160. package/esm2022/input-number/input-number.module.mjs +5 -5
  161. package/esm2022/input-number/input-number.property.mjs +4 -4
  162. package/esm2022/keyword/keyword.directive.mjs +4 -4
  163. package/esm2022/keyword/keyword.module.mjs +5 -5
  164. package/esm2022/keyword/keyword.property.mjs +4 -4
  165. package/esm2022/layout/col.component.mjs +4 -4
  166. package/esm2022/layout/layout.module.mjs +5 -5
  167. package/esm2022/layout/layout.property.mjs +7 -7
  168. package/esm2022/layout/row.component.mjs +4 -4
  169. package/esm2022/link/link.component.mjs +4 -4
  170. package/esm2022/link/link.module.mjs +5 -5
  171. package/esm2022/link/link.property.mjs +4 -4
  172. package/esm2022/list/list-drop-group.directive.mjs +4 -4
  173. package/esm2022/list/list-option.component.mjs +4 -4
  174. package/esm2022/list/list.component.mjs +4 -4
  175. package/esm2022/list/list.module.mjs +5 -5
  176. package/esm2022/list/list.property.mjs +7 -7
  177. package/esm2022/loading/loading.component.mjs +4 -4
  178. package/esm2022/loading/loading.module.mjs +5 -5
  179. package/esm2022/loading/loading.property.mjs +4 -4
  180. package/esm2022/menu/menu-node.component.mjs +4 -4
  181. package/esm2022/menu/menu.component.mjs +4 -4
  182. package/esm2022/menu/menu.module.mjs +5 -5
  183. package/esm2022/menu/menu.property.mjs +7 -7
  184. package/esm2022/message/message.component.mjs +4 -4
  185. package/esm2022/message/message.module.mjs +5 -5
  186. package/esm2022/message/message.service.mjs +4 -4
  187. package/esm2022/message-box/message-box.component.mjs +4 -4
  188. package/esm2022/message-box/message-box.module.mjs +5 -5
  189. package/esm2022/message-box/message-box.service.mjs +4 -4
  190. package/esm2022/notification/notification.component.mjs +4 -4
  191. package/esm2022/notification/notification.module.mjs +5 -5
  192. package/esm2022/notification/notification.service.mjs +4 -4
  193. package/esm2022/outlet/outlet.directive.mjs +4 -4
  194. package/esm2022/outlet/outlet.module.mjs +5 -5
  195. package/esm2022/page-header/page-header.component.mjs +4 -4
  196. package/esm2022/page-header/page-header.module.mjs +5 -5
  197. package/esm2022/page-header/page-header.property.mjs +4 -4
  198. package/esm2022/pagination/pagination.component.mjs +4 -4
  199. package/esm2022/pagination/pagination.module.mjs +5 -5
  200. package/esm2022/pagination/pagination.property.mjs +4 -4
  201. package/esm2022/pattern/pattern.component.mjs +4 -4
  202. package/esm2022/pattern/pattern.module.mjs +5 -5
  203. package/esm2022/popconfirm/popconfirm.component.mjs +4 -4
  204. package/esm2022/popconfirm/popconfirm.module.mjs +5 -5
  205. package/esm2022/popconfirm/popconfirm.property.mjs +4 -4
  206. package/esm2022/popover/popover-portal.component.mjs +4 -4
  207. package/esm2022/popover/popover.directive.mjs +4 -4
  208. package/esm2022/popover/popover.module.mjs +5 -5
  209. package/esm2022/popover/popover.property.mjs +4 -4
  210. package/esm2022/portal/portal.module.mjs +5 -5
  211. package/esm2022/portal/portal.service.mjs +4 -4
  212. package/esm2022/progress/progress.component.mjs +4 -4
  213. package/esm2022/progress/progress.module.mjs +5 -5
  214. package/esm2022/progress/progress.property.mjs +4 -4
  215. package/esm2022/radio/radio.component.mjs +5 -5
  216. package/esm2022/radio/radio.module.mjs +5 -5
  217. package/esm2022/radio/radio.property.mjs +14 -4
  218. package/esm2022/rate/rate.component.mjs +4 -4
  219. package/esm2022/rate/rate.module.mjs +5 -5
  220. package/esm2022/rate/rate.property.mjs +4 -4
  221. package/esm2022/resizable/resizable.directive.mjs +4 -4
  222. package/esm2022/resizable/resizable.module.mjs +5 -5
  223. package/esm2022/resizable/resizable.property.mjs +4 -4
  224. package/esm2022/result/result.component.mjs +4 -4
  225. package/esm2022/result/result.module.mjs +5 -5
  226. package/esm2022/result/result.property.mjs +4 -4
  227. package/esm2022/ripple/ripple.directive.mjs +4 -4
  228. package/esm2022/ripple/ripple.module.mjs +5 -5
  229. package/esm2022/ripple/ripple.property.mjs +4 -4
  230. package/esm2022/select/select-portal.component.mjs +5 -5
  231. package/esm2022/select/select.component.mjs +5 -5
  232. package/esm2022/select/select.module.mjs +5 -5
  233. package/esm2022/select/select.property.mjs +4 -4
  234. package/esm2022/skeleton/skeleton.component.mjs +4 -4
  235. package/esm2022/skeleton/skeleton.module.mjs +5 -5
  236. package/esm2022/skeleton/skeleton.property.mjs +4 -4
  237. package/esm2022/slider/slider.component.mjs +4 -4
  238. package/esm2022/slider/slider.module.mjs +5 -5
  239. package/esm2022/slider/slider.property.mjs +4 -4
  240. package/esm2022/slider-select/slider-select.component.mjs +8 -8
  241. package/esm2022/slider-select/slider-select.module.mjs +5 -5
  242. package/esm2022/slider-select/slider-select.property.mjs +6 -4
  243. package/esm2022/statistic/countdown.component.mjs +4 -4
  244. package/esm2022/statistic/statistic.component.mjs +4 -4
  245. package/esm2022/statistic/statistic.module.mjs +5 -5
  246. package/esm2022/statistic/statistic.property.mjs +7 -7
  247. package/esm2022/steps/steps.component.mjs +4 -4
  248. package/esm2022/steps/steps.module.mjs +5 -5
  249. package/esm2022/steps/steps.property.mjs +4 -4
  250. package/esm2022/switch/switch.component.mjs +4 -4
  251. package/esm2022/switch/switch.module.mjs +5 -5
  252. package/esm2022/switch/switch.property.mjs +4 -4
  253. package/esm2022/table/table-body.component.mjs +5 -5
  254. package/esm2022/table/table-foot.component.mjs +4 -4
  255. package/esm2022/table/table-head.component.mjs +5 -5
  256. package/esm2022/table/table.component.mjs +4 -4
  257. package/esm2022/table/table.module.mjs +5 -5
  258. package/esm2022/table/table.property.mjs +13 -13
  259. package/esm2022/tabs/tab-content.component.mjs +4 -4
  260. package/esm2022/tabs/tab-link.directive.mjs +7 -7
  261. package/esm2022/tabs/tab.component.mjs +4 -4
  262. package/esm2022/tabs/tabs.component.mjs +4 -4
  263. package/esm2022/tabs/tabs.module.mjs +5 -5
  264. package/esm2022/tabs/tabs.property.mjs +7 -7
  265. package/esm2022/tag/tag.component.mjs +4 -4
  266. package/esm2022/tag/tag.module.mjs +5 -5
  267. package/esm2022/tag/tag.property.mjs +4 -4
  268. package/esm2022/text-retract/text-retract.component.mjs +4 -4
  269. package/esm2022/text-retract/text-retract.module.mjs +5 -5
  270. package/esm2022/text-retract/text-retract.property.mjs +4 -4
  271. package/esm2022/textarea/textarea.component.mjs +4 -4
  272. package/esm2022/textarea/textarea.module.mjs +5 -5
  273. package/esm2022/textarea/textarea.property.mjs +4 -4
  274. package/esm2022/theme/theme.component.mjs +4 -4
  275. package/esm2022/theme/theme.module.mjs +5 -5
  276. package/esm2022/theme/theme.property.mjs +4 -4
  277. package/esm2022/time-ago/time-ago.module.mjs +5 -5
  278. package/esm2022/time-ago/time-ago.pipe.mjs +4 -4
  279. package/esm2022/time-picker/time-picker-frame.component.mjs +4 -4
  280. package/esm2022/time-picker/time-picker-portal.component.mjs +4 -4
  281. package/esm2022/time-picker/time-picker.component.mjs +4 -4
  282. package/esm2022/time-picker/time-picker.module.mjs +5 -5
  283. package/esm2022/time-picker/time-picker.property.mjs +4 -4
  284. package/esm2022/time-range/time-range.module.mjs +5 -5
  285. package/esm2022/time-range/time-range.pipe.mjs +4 -4
  286. package/esm2022/timeline/timeline.component.mjs +5 -5
  287. package/esm2022/timeline/timeline.module.mjs +5 -5
  288. package/esm2022/timeline/timeline.property.mjs +4 -4
  289. package/esm2022/tooltip/tooltip-portal.component.mjs +6 -5
  290. package/esm2022/tooltip/tooltip.directive.mjs +4 -4
  291. package/esm2022/tooltip/tooltip.module.mjs +7 -6
  292. package/esm2022/tooltip/tooltip.property.mjs +4 -4
  293. package/esm2022/transfer/transfer.component.mjs +5 -5
  294. package/esm2022/transfer/transfer.module.mjs +5 -5
  295. package/esm2022/transfer/transfer.property.mjs +4 -4
  296. package/esm2022/tree/tree-node.component.mjs +5 -5
  297. package/esm2022/tree/tree.component.mjs +4 -4
  298. package/esm2022/tree/tree.module.mjs +5 -5
  299. package/esm2022/tree/tree.property.mjs +7 -7
  300. package/esm2022/tree/tree.service.mjs +4 -4
  301. package/esm2022/tree-file/tree-file.component.mjs +4 -4
  302. package/esm2022/tree-file/tree-file.module.mjs +5 -5
  303. package/esm2022/tree-file/tree-file.property.mjs +4 -4
  304. package/esm2022/tree-select/tree-select-portal.component.mjs +5 -5
  305. package/esm2022/tree-select/tree-select.component.mjs +5 -5
  306. package/esm2022/tree-select/tree-select.module.mjs +5 -5
  307. package/esm2022/tree-select/tree-select.property.mjs +4 -4
  308. package/esm2022/typography/typography.component.mjs +4 -4
  309. package/esm2022/typography/typography.module.mjs +5 -5
  310. package/esm2022/typography/typography.property.mjs +4 -4
  311. package/esm2022/upload/upload-portal.component.mjs +4 -4
  312. package/esm2022/upload/upload.component.mjs +4 -4
  313. package/esm2022/upload/upload.module.mjs +5 -5
  314. package/esm2022/upload/upload.property.mjs +4 -4
  315. package/fesm2022/ng-nest-ui-affix.mjs +10 -10
  316. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  317. package/fesm2022/ng-nest-ui-alert.mjs +10 -10
  318. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  319. package/fesm2022/ng-nest-ui-anchor.mjs +16 -16
  320. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  321. package/fesm2022/ng-nest-ui-api.mjs +7 -7
  322. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  323. package/fesm2022/ng-nest-ui-auto-complete.mjs +15 -15
  324. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  325. package/fesm2022/ng-nest-ui-avatar.mjs +16 -16
  326. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  327. package/fesm2022/ng-nest-ui-back-top.mjs +10 -10
  328. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  329. package/fesm2022/ng-nest-ui-badge.mjs +10 -10
  330. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  331. package/fesm2022/ng-nest-ui-base-form.mjs +10 -10
  332. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  333. package/fesm2022/ng-nest-ui-border.mjs +7 -7
  334. package/fesm2022/ng-nest-ui-border.mjs.map +1 -1
  335. package/fesm2022/ng-nest-ui-button.mjs +16 -16
  336. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  337. package/fesm2022/ng-nest-ui-calendar.mjs +10 -10
  338. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  339. package/fesm2022/ng-nest-ui-card.mjs +10 -10
  340. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  341. package/fesm2022/ng-nest-ui-carousel.mjs +16 -16
  342. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  343. package/fesm2022/ng-nest-ui-cascade.mjs +13 -13
  344. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  345. package/fesm2022/ng-nest-ui-checkbox.mjs +37 -13
  346. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  347. package/fesm2022/ng-nest-ui-collapse.mjs +16 -16
  348. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  349. package/fesm2022/ng-nest-ui-color-picker.mjs +13 -13
  350. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  351. package/fesm2022/ng-nest-ui-color.mjs +10 -10
  352. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  353. package/fesm2022/ng-nest-ui-comment.mjs +16 -16
  354. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  355. package/fesm2022/ng-nest-ui-container.mjs +31 -31
  356. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  357. package/fesm2022/ng-nest-ui-core.mjs +15 -15
  358. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  359. package/fesm2022/ng-nest-ui-crumb.mjs +10 -10
  360. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  361. package/fesm2022/ng-nest-ui-date-picker.mjs +49 -49
  362. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  363. package/fesm2022/ng-nest-ui-description.mjs +16 -16
  364. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  365. package/fesm2022/ng-nest-ui-dialog.mjs +40 -40
  366. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  367. package/fesm2022/ng-nest-ui-doc.mjs +8 -8
  368. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  369. package/fesm2022/ng-nest-ui-drag.mjs +10 -10
  370. package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
  371. package/fesm2022/ng-nest-ui-drawer.mjs +31 -31
  372. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  373. package/fesm2022/ng-nest-ui-dropdown.mjs +13 -13
  374. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  375. package/fesm2022/ng-nest-ui-empty.mjs +10 -10
  376. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  377. package/fesm2022/ng-nest-ui-examples.mjs +7 -7
  378. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  379. package/fesm2022/ng-nest-ui-find.mjs +10 -10
  380. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  381. package/fesm2022/ng-nest-ui-form.mjs +16 -16
  382. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  383. package/fesm2022/ng-nest-ui-highlight.mjs +10 -10
  384. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  385. package/fesm2022/ng-nest-ui-i18n.mjs +13 -13
  386. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  387. package/fesm2022/ng-nest-ui-icon.mjs +13 -13
  388. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  389. package/fesm2022/ng-nest-ui-image.mjs +19 -19
  390. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  391. package/fesm2022/ng-nest-ui-inner.mjs +10 -10
  392. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  393. package/fesm2022/ng-nest-ui-input-number.mjs +10 -10
  394. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  395. package/fesm2022/ng-nest-ui-input.mjs +16 -16
  396. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  397. package/fesm2022/ng-nest-ui-keyword.mjs +10 -10
  398. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  399. package/fesm2022/ng-nest-ui-layout.mjs +16 -16
  400. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  401. package/fesm2022/ng-nest-ui-link.mjs +10 -10
  402. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  403. package/fesm2022/ng-nest-ui-list.mjs +19 -19
  404. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  405. package/fesm2022/ng-nest-ui-loading.mjs +10 -10
  406. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  407. package/fesm2022/ng-nest-ui-menu.mjs +16 -16
  408. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  409. package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
  410. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  411. package/fesm2022/ng-nest-ui-message.mjs +10 -10
  412. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  413. package/fesm2022/ng-nest-ui-notification.mjs +10 -10
  414. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  415. package/fesm2022/ng-nest-ui-outlet.mjs +7 -7
  416. package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
  417. package/fesm2022/ng-nest-ui-page-header.mjs +10 -10
  418. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  419. package/fesm2022/ng-nest-ui-pagination.mjs +10 -10
  420. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  421. package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
  422. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  423. package/fesm2022/ng-nest-ui-popconfirm.mjs +10 -10
  424. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  425. package/fesm2022/ng-nest-ui-popover.mjs +13 -13
  426. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  427. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  428. package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
  429. package/fesm2022/ng-nest-ui-progress.mjs +10 -10
  430. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  431. package/fesm2022/ng-nest-ui-radio.mjs +21 -11
  432. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  433. package/fesm2022/ng-nest-ui-rate.mjs +10 -10
  434. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  435. package/fesm2022/ng-nest-ui-resizable.mjs +10 -10
  436. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  437. package/fesm2022/ng-nest-ui-result.mjs +10 -10
  438. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  439. package/fesm2022/ng-nest-ui-ripple.mjs +10 -10
  440. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  441. package/fesm2022/ng-nest-ui-select.mjs +15 -15
  442. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  443. package/fesm2022/ng-nest-ui-skeleton.mjs +10 -10
  444. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  445. package/fesm2022/ng-nest-ui-slider-select.mjs +16 -14
  446. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  447. package/fesm2022/ng-nest-ui-slider.mjs +10 -10
  448. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  449. package/fesm2022/ng-nest-ui-statistic.mjs +16 -16
  450. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  451. package/fesm2022/ng-nest-ui-steps.mjs +10 -10
  452. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  453. package/fesm2022/ng-nest-ui-switch.mjs +10 -10
  454. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  455. package/fesm2022/ng-nest-ui-table.mjs +30 -30
  456. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  457. package/fesm2022/ng-nest-ui-tabs.mjs +25 -25
  458. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  459. package/fesm2022/ng-nest-ui-tag.mjs +10 -10
  460. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  461. package/fesm2022/ng-nest-ui-text-retract.mjs +10 -10
  462. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  463. package/fesm2022/ng-nest-ui-textarea.mjs +10 -10
  464. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  465. package/fesm2022/ng-nest-ui-theme.mjs +10 -10
  466. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  467. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  468. package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
  469. package/fesm2022/ng-nest-ui-time-picker.mjs +16 -16
  470. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  471. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  472. package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
  473. package/fesm2022/ng-nest-ui-timeline.mjs +11 -11
  474. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  475. package/fesm2022/ng-nest-ui-tooltip.mjs +19 -17
  476. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  477. package/fesm2022/ng-nest-ui-transfer.mjs +11 -11
  478. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  479. package/fesm2022/ng-nest-ui-tree-file.mjs +10 -10
  480. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  481. package/fesm2022/ng-nest-ui-tree-select.mjs +15 -15
  482. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  483. package/fesm2022/ng-nest-ui-tree.mjs +20 -20
  484. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  485. package/fesm2022/ng-nest-ui-typography.mjs +10 -10
  486. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  487. package/fesm2022/ng-nest-ui-upload.mjs +13 -13
  488. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  489. package/package.json +37 -37
  490. package/radio/radio.property.d.ts +6 -1
  491. package/slider-select/slider-select.property.d.ts +6 -1
  492. package/tooltip/tooltip-portal.component.d.ts +2 -2
  493. package/tooltip/tooltip.module.d.ts +2 -1
  494. package/tooltip/tooltip.property.d.ts +2 -2
@@ -312,11 +312,11 @@ class XDateRangePortalComponent {
312
312
  this.nodeEmit(value, true);
313
313
  }
314
314
  }
315
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: XDateRangePortalComponent, deps: [{ token: i1.DatePipe }, { token: i1.LowerCasePipe }, { token: i0.ChangeDetectorRef }, { token: i2.XI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
316
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.5", type: XDateRangePortalComponent, selector: "x-date-range-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, providers: [DatePipe, LowerCasePipe], viewQueries: [{ propertyName: "startPicker", first: true, predicate: ["startPicker"], descendants: true }, { propertyName: "endPicker", first: true, predicate: ["endPicker"], descendants: true }, { propertyName: "timePickerFrame", first: true, predicate: ["timePickerFrame"], descendants: true }], ngImport: i0, template: "<div class=\"x-date-range-portal {{ type }}\">\r\n <div class=\"x-date-range-portal-body\" [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'week'\">\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n type = 'week'\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n type = 'week'\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'month'\">\r\n <x-picker-month\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n <x-picker-month\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'quarter'\">\r\n <x-picker-quarter\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n <x-picker-quarter\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'year'\">\r\n <x-picker-year\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n <x-picker-year\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-time'\">\r\n <ng-container *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm:ss', timeType: 'time' }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-hour'\">\r\n <ng-container *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH', timeType: 'hour' }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-minute'\">\r\n <ng-container *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm', timeType: 'minute' }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"isDatePicker\">\r\n <div *ngIf=\"extraFooter\" class=\"x-date-range-portal-extra-footer\">\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #dateTimeHourMinuteTpl let-timeFormat=\"timeFormat\" let-timeType=\"timeType\">\r\n <div class=\"x-date-range-portal-content\">\r\n <div class=\"x-date-range-portal-date\">\r\n <x-picker-date\r\n [class.x-date-range-portal-start]=\"activeType === 'start'\"\r\n [class.x-date-range-portal-end]=\"activeType === 'end'\"\r\n [(display)]=\"timeDisplay\"\r\n [(model)]=\"timeModel\"\r\n [rangeHover]=\"timeHover\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </div>\r\n <div class=\"x-date-range-portal-time\">\r\n <div class=\"x-date-range-portal-time-label\">\r\n {{ time | date : timeFormat }}\r\n </div>\r\n <x-time-picker-frame\r\n #timePickerFrame\r\n [type]=\"timeType\"\r\n [value]=\"time\"\r\n (nodeEmit)=\"selectTime($event)\"\r\n [disabledTimeParam]=\"activeType\"\r\n [disabledTime]=\"disabledTime\"\r\n [defaultNow]=\"false\"\r\n ></x-time-picker-frame>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!isDatePicker\">\r\n <div *ngIf=\"extraFooter\" class=\"x-date-range-portal-extra-footer\">\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n </div>\r\n </ng-container>\r\n <div class=\"x-date-range-portal-footer\">\r\n <div class=\"x-date-range-portal-footer-left\">\r\n <ng-container *ngIf=\"!isDatePicker\">\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <x-button type=\"primary\" (click)=\"!sureDisabled && sureTime()\" size=\"small\" [disabled]=\"sureDisabled\">{{ locale.sure }}</x-button>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #presetTpl>\r\n <div *ngIf=\"preset\" class=\"x-date-range-portal-preset\">\r\n <ng-container *ngFor=\"let item of preset\">\r\n <x-link *ngIf=\"item.id === 'thisWeek'\" (click)=\"onPreset('week', 0)\">{{ locale.thisWeek }}</x-link>\r\n <x-link *ngIf=\"item.id === 'lastWeek'\" (click)=\"onPreset('week', -1)\">{{ locale.lastWeek }}</x-link>\r\n <x-link *ngIf=\"item.id === 'nextWeek'\" (click)=\"onPreset('week', 1)\">{{ locale.nextWeek }}</x-link>\r\n <x-link *ngIf=\"item.id === 'thisMonth'\" (click)=\"onPreset('month', 0)\">{{ locale.thisMonth }}</x-link>\r\n <x-link *ngIf=\"item.id === 'lastMonth'\" (click)=\"onPreset('month', -1)\">{{ locale.lastMonth }}</x-link>\r\n <x-link *ngIf=\"item.id === 'nextMonth'\" (click)=\"onPreset('month', 1)\">{{ locale.nextMonth }}</x-link>\r\n <x-link *ngIf=\"item.id === 'thisYear'\" (click)=\"onPreset('year', 0)\">{{ locale.thisYear }}</x-link>\r\n <x-link *ngIf=\"item.id === 'lastYear'\" (click)=\"onPreset('year', -1)\">{{ locale.lastYear }}</x-link>\r\n <x-link *ngIf=\"item.id === 'nextYear'\" (click)=\"onPreset('year', 1)\">{{ locale.nextYear }}</x-link>\r\n <x-link *ngIf=\"item.func\" (click)=\"onPresetFunc(item)\">{{ item.label }}</x-link>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-date-range-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background);width:34rem;display:flex;flex-direction:column}.x-date-range-portal.week .x-picker-date-body .x-picker-date-item:not(.x-date-in-range):not(.x-date-active) .x-date-text{background-color:transparent}.x-date-range-portal.week .x-picker-date-body tbody tr.x-date-week-in-range:not(.x-date-week-start-active):not(.x-date-week-end-active) .x-picker-date-item{background-color:var(--x-primary-800)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item{background-color:var(--x-background-a200);border-radius:var(--x-border-radius)}.x-date-range-portal.date-time{width:27rem}.x-date-range-portal.date-time .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-hour{width:19.75rem}.x-date-range-portal.date-hour .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-minute{width:23.375rem}.x-date-range-portal.date-minute .x-date-range-portal-body{flex-direction:column}.x-date-range-portal-content{display:flex}.x-date-range-portal-preset{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;border-top:var(--x-border-width) solid var(--x-border)}.x-date-range-portal-preset>x-link{padding:.25rem}.x-date-range-portal-preset>x-link:not(:first-child){margin-left:1rem}.x-date-range-portal-extra-footer{display:flex;align-items:center;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-year-month{flex:1;text-align:center}.x-date-range-portal-body{display:flex}.x-date-range-portal-body .x-picker-date-item:before,.x-date-range-portal-body .x-picker-date-item:after{position:absolute;top:50%;right:0;left:0;z-index:1;border:var(--x-border-width) dashed transparent;transform:translateY(-50%);transition:var(--x-animation-duration-base);content:\"\"}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next),.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next){color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next) .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child):after{background-color:var(--x-primary-800);transform:translate(-.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{background-color:var(--x-primary-800);transform:translate(.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start.x-date-range-end.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{display:none}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{position:relative;z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):before{background-color:var(--x-primary-800);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):first-child:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):last-child:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-left:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-right:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover:before{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:not(.x-date-last-or-next):before{border-color:var(--x-primary);border-left-color:transparent;border-right-color:transparent;transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day:before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start:not(.x-date-last-or-next):before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-range-hover-start:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end:not(.x-date-last-or-next):before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(-.3125rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(.3125rem,-50%)}.x-date-range-portal-start,.x-date-range-portal-end{flex:1}.x-date-range-portal-footer{display:flex;align-items:center;justify-content:space-between;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-footer .x-date-range-portal-preset{border-top:none}.x-date-range-portal-footer .x-date-range-portal-preset>x-link{padding:0 .25rem}.x-date-range-portal-date{flex:1}.x-date-range-portal-time{display:flex;flex-direction:column;border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time-label{display:flex;align-items:center;justify-content:center;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time .x-time-picker-frame{border-width:0;box-shadow:none;margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.XTimePickerFrameComponent, selector: "x-time-picker-frame", inputs: ["type", "value", "use12Hours", "hourStep", "minuteStep", "secondStep", "defaultNow", "disabledTime", "disabledTimeParam"], outputs: ["nodeEmit"] }, { kind: "component", type: i4.XLinkComponent, selector: "x-link" }, { kind: "component", type: i5.XButtonComponent, selector: "x-button" }, { kind: "directive", type: i6.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i7.XPickerDateComponent, selector: "x-picker-date" }, { kind: "component", type: i8.XPickerMonthComponent, selector: "x-picker-month" }, { kind: "component", type: i9.XPickerQuarterComponent, selector: "x-picker-quarter" }, { kind: "component", type: i10.XPickerYearComponent, selector: "x-picker-year" }, { kind: "pipe", type: i1.DatePipe, name: "date" }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
315
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: XDateRangePortalComponent, deps: [{ token: i1.DatePipe }, { token: i1.LowerCasePipe }, { token: i0.ChangeDetectorRef }, { token: i2.XI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
316
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: XDateRangePortalComponent, selector: "x-date-range-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, providers: [DatePipe, LowerCasePipe], viewQueries: [{ propertyName: "startPicker", first: true, predicate: ["startPicker"], descendants: true }, { propertyName: "endPicker", first: true, predicate: ["endPicker"], descendants: true }, { propertyName: "timePickerFrame", first: true, predicate: ["timePickerFrame"], descendants: true }], ngImport: i0, template: "<div class=\"x-date-range-portal {{ type }}\">\r\n <div class=\"x-date-range-portal-body\" [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'week'\">\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n type = 'week'\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n type = 'week'\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'month'\">\r\n <x-picker-month\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n <x-picker-month\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'quarter'\">\r\n <x-picker-quarter\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n <x-picker-quarter\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'year'\">\r\n <x-picker-year\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n <x-picker-year\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-time'\">\r\n <ng-container *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm:ss', timeType: 'time' }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-hour'\">\r\n <ng-container *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH', timeType: 'hour' }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-minute'\">\r\n <ng-container *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm', timeType: 'minute' }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"isDatePicker\">\r\n <div *ngIf=\"extraFooter\" class=\"x-date-range-portal-extra-footer\">\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #dateTimeHourMinuteTpl let-timeFormat=\"timeFormat\" let-timeType=\"timeType\">\r\n <div class=\"x-date-range-portal-content\">\r\n <div class=\"x-date-range-portal-date\">\r\n <x-picker-date\r\n [class.x-date-range-portal-start]=\"activeType === 'start'\"\r\n [class.x-date-range-portal-end]=\"activeType === 'end'\"\r\n [(display)]=\"timeDisplay\"\r\n [(model)]=\"timeModel\"\r\n [rangeHover]=\"timeHover\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </div>\r\n <div class=\"x-date-range-portal-time\">\r\n <div class=\"x-date-range-portal-time-label\">\r\n {{ time | date : timeFormat }}\r\n </div>\r\n <x-time-picker-frame\r\n #timePickerFrame\r\n [type]=\"timeType\"\r\n [value]=\"time\"\r\n (nodeEmit)=\"selectTime($event)\"\r\n [disabledTimeParam]=\"activeType\"\r\n [disabledTime]=\"disabledTime\"\r\n [defaultNow]=\"false\"\r\n ></x-time-picker-frame>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!isDatePicker\">\r\n <div *ngIf=\"extraFooter\" class=\"x-date-range-portal-extra-footer\">\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n </div>\r\n </ng-container>\r\n <div class=\"x-date-range-portal-footer\">\r\n <div class=\"x-date-range-portal-footer-left\">\r\n <ng-container *ngIf=\"!isDatePicker\">\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <x-button type=\"primary\" (click)=\"!sureDisabled && sureTime()\" size=\"small\" [disabled]=\"sureDisabled\">{{ locale.sure }}</x-button>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #presetTpl>\r\n <div *ngIf=\"preset\" class=\"x-date-range-portal-preset\">\r\n <ng-container *ngFor=\"let item of preset\">\r\n <x-link *ngIf=\"item.id === 'thisWeek'\" (click)=\"onPreset('week', 0)\">{{ locale.thisWeek }}</x-link>\r\n <x-link *ngIf=\"item.id === 'lastWeek'\" (click)=\"onPreset('week', -1)\">{{ locale.lastWeek }}</x-link>\r\n <x-link *ngIf=\"item.id === 'nextWeek'\" (click)=\"onPreset('week', 1)\">{{ locale.nextWeek }}</x-link>\r\n <x-link *ngIf=\"item.id === 'thisMonth'\" (click)=\"onPreset('month', 0)\">{{ locale.thisMonth }}</x-link>\r\n <x-link *ngIf=\"item.id === 'lastMonth'\" (click)=\"onPreset('month', -1)\">{{ locale.lastMonth }}</x-link>\r\n <x-link *ngIf=\"item.id === 'nextMonth'\" (click)=\"onPreset('month', 1)\">{{ locale.nextMonth }}</x-link>\r\n <x-link *ngIf=\"item.id === 'thisYear'\" (click)=\"onPreset('year', 0)\">{{ locale.thisYear }}</x-link>\r\n <x-link *ngIf=\"item.id === 'lastYear'\" (click)=\"onPreset('year', -1)\">{{ locale.lastYear }}</x-link>\r\n <x-link *ngIf=\"item.id === 'nextYear'\" (click)=\"onPreset('year', 1)\">{{ locale.nextYear }}</x-link>\r\n <x-link *ngIf=\"item.func\" (click)=\"onPresetFunc(item)\">{{ item.label }}</x-link>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-date-range-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background);width:34rem;display:flex;flex-direction:column}.x-date-range-portal.week .x-picker-date-body .x-picker-date-item:not(.x-date-in-range):not(.x-date-active) .x-date-text{background-color:transparent}.x-date-range-portal.week .x-picker-date-body tbody tr.x-date-week-in-range:not(.x-date-week-start-active):not(.x-date-week-end-active) .x-picker-date-item{background-color:var(--x-primary-800)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item{background-color:var(--x-background-a200);border-radius:var(--x-border-radius)}.x-date-range-portal.date-time{width:27rem}.x-date-range-portal.date-time .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-hour{width:19.75rem}.x-date-range-portal.date-hour .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-minute{width:23.375rem}.x-date-range-portal.date-minute .x-date-range-portal-body{flex-direction:column}.x-date-range-portal-content{display:flex}.x-date-range-portal-preset{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;border-top:var(--x-border-width) solid var(--x-border)}.x-date-range-portal-preset>x-link{padding:.25rem}.x-date-range-portal-preset>x-link:not(:first-child){margin-left:1rem}.x-date-range-portal-extra-footer{display:flex;align-items:center;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-year-month{flex:1;text-align:center}.x-date-range-portal-body{display:flex}.x-date-range-portal-body .x-picker-date-item:before,.x-date-range-portal-body .x-picker-date-item:after{position:absolute;top:50%;right:0;left:0;z-index:1;border:var(--x-border-width) dashed transparent;transform:translateY(-50%);transition:var(--x-animation-duration-base);content:\"\"}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next),.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next){color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next) .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child):after{background-color:var(--x-primary-800);transform:translate(-.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{background-color:var(--x-primary-800);transform:translate(.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start.x-date-range-end.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{display:none}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{position:relative;z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):before{background-color:var(--x-primary-800);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):first-child:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):last-child:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-left:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-right:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover:before{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:not(.x-date-last-or-next):before{border-color:var(--x-primary);border-left-color:transparent;border-right-color:transparent;transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day:before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start:not(.x-date-last-or-next):before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-range-hover-start:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end:not(.x-date-last-or-next):before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(-.3125rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(.3125rem,-50%)}.x-date-range-portal-start,.x-date-range-portal-end{flex:1}.x-date-range-portal-footer{display:flex;align-items:center;justify-content:space-between;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-footer .x-date-range-portal-preset{border-top:none}.x-date-range-portal-footer .x-date-range-portal-preset>x-link{padding:0 .25rem}.x-date-range-portal-date{flex:1}.x-date-range-portal-time{display:flex;flex-direction:column;border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time-label{display:flex;align-items:center;justify-content:center;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time .x-time-picker-frame{border-width:0;box-shadow:none;margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.XTimePickerFrameComponent, selector: "x-time-picker-frame", inputs: ["type", "value", "use12Hours", "hourStep", "minuteStep", "secondStep", "defaultNow", "disabledTime", "disabledTimeParam"], outputs: ["nodeEmit"] }, { kind: "component", type: i4.XLinkComponent, selector: "x-link" }, { kind: "component", type: i5.XButtonComponent, selector: "x-button" }, { kind: "directive", type: i6.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i7.XPickerDateComponent, selector: "x-picker-date" }, { kind: "component", type: i8.XPickerMonthComponent, selector: "x-picker-month" }, { kind: "component", type: i9.XPickerQuarterComponent, selector: "x-picker-quarter" }, { kind: "component", type: i10.XPickerYearComponent, selector: "x-picker-year" }, { kind: "pipe", type: i1.DatePipe, name: "date" }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
317
317
  }
318
318
  export { XDateRangePortalComponent };
319
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: XDateRangePortalComponent, decorators: [{
319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: XDateRangePortalComponent, decorators: [{
320
320
  type: Component,
321
321
  args: [{ selector: `${XDateRangePortalPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [XConnectBaseAnimation], providers: [DatePipe, LowerCasePipe], template: "<div class=\"x-date-range-portal {{ type }}\">\r\n <div class=\"x-date-range-portal-body\" [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'week'\">\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n type = 'week'\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n type = 'week'\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'month'\">\r\n <x-picker-month\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n <x-picker-month\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'quarter'\">\r\n <x-picker-quarter\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n <x-picker-quarter\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'year'\">\r\n <x-picker-year\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n <x-picker-year\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-time'\">\r\n <ng-container *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm:ss', timeType: 'time' }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-hour'\">\r\n <ng-container *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH', timeType: 'hour' }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date-minute'\">\r\n <ng-container *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm', timeType: 'minute' }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"isDatePicker\">\r\n <div *ngIf=\"extraFooter\" class=\"x-date-range-portal-extra-footer\">\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #dateTimeHourMinuteTpl let-timeFormat=\"timeFormat\" let-timeType=\"timeType\">\r\n <div class=\"x-date-range-portal-content\">\r\n <div class=\"x-date-range-portal-date\">\r\n <x-picker-date\r\n [class.x-date-range-portal-start]=\"activeType === 'start'\"\r\n [class.x-date-range-portal-end]=\"activeType === 'end'\"\r\n [(display)]=\"timeDisplay\"\r\n [(model)]=\"timeModel\"\r\n [rangeHover]=\"timeHover\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </div>\r\n <div class=\"x-date-range-portal-time\">\r\n <div class=\"x-date-range-portal-time-label\">\r\n {{ time | date : timeFormat }}\r\n </div>\r\n <x-time-picker-frame\r\n #timePickerFrame\r\n [type]=\"timeType\"\r\n [value]=\"time\"\r\n (nodeEmit)=\"selectTime($event)\"\r\n [disabledTimeParam]=\"activeType\"\r\n [disabledTime]=\"disabledTime\"\r\n [defaultNow]=\"false\"\r\n ></x-time-picker-frame>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!isDatePicker\">\r\n <div *ngIf=\"extraFooter\" class=\"x-date-range-portal-extra-footer\">\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n </div>\r\n </ng-container>\r\n <div class=\"x-date-range-portal-footer\">\r\n <div class=\"x-date-range-portal-footer-left\">\r\n <ng-container *ngIf=\"!isDatePicker\">\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <x-button type=\"primary\" (click)=\"!sureDisabled && sureTime()\" size=\"small\" [disabled]=\"sureDisabled\">{{ locale.sure }}</x-button>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #presetTpl>\r\n <div *ngIf=\"preset\" class=\"x-date-range-portal-preset\">\r\n <ng-container *ngFor=\"let item of preset\">\r\n <x-link *ngIf=\"item.id === 'thisWeek'\" (click)=\"onPreset('week', 0)\">{{ locale.thisWeek }}</x-link>\r\n <x-link *ngIf=\"item.id === 'lastWeek'\" (click)=\"onPreset('week', -1)\">{{ locale.lastWeek }}</x-link>\r\n <x-link *ngIf=\"item.id === 'nextWeek'\" (click)=\"onPreset('week', 1)\">{{ locale.nextWeek }}</x-link>\r\n <x-link *ngIf=\"item.id === 'thisMonth'\" (click)=\"onPreset('month', 0)\">{{ locale.thisMonth }}</x-link>\r\n <x-link *ngIf=\"item.id === 'lastMonth'\" (click)=\"onPreset('month', -1)\">{{ locale.lastMonth }}</x-link>\r\n <x-link *ngIf=\"item.id === 'nextMonth'\" (click)=\"onPreset('month', 1)\">{{ locale.nextMonth }}</x-link>\r\n <x-link *ngIf=\"item.id === 'thisYear'\" (click)=\"onPreset('year', 0)\">{{ locale.thisYear }}</x-link>\r\n <x-link *ngIf=\"item.id === 'lastYear'\" (click)=\"onPreset('year', -1)\">{{ locale.lastYear }}</x-link>\r\n <x-link *ngIf=\"item.id === 'nextYear'\" (click)=\"onPreset('year', 1)\">{{ locale.nextYear }}</x-link>\r\n <x-link *ngIf=\"item.func\" (click)=\"onPresetFunc(item)\">{{ item.label }}</x-link>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-date-range-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background);width:34rem;display:flex;flex-direction:column}.x-date-range-portal.week .x-picker-date-body .x-picker-date-item:not(.x-date-in-range):not(.x-date-active) .x-date-text{background-color:transparent}.x-date-range-portal.week .x-picker-date-body tbody tr.x-date-week-in-range:not(.x-date-week-start-active):not(.x-date-week-end-active) .x-picker-date-item{background-color:var(--x-primary-800)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item{background-color:var(--x-background-a200);border-radius:var(--x-border-radius)}.x-date-range-portal.date-time{width:27rem}.x-date-range-portal.date-time .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-hour{width:19.75rem}.x-date-range-portal.date-hour .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-minute{width:23.375rem}.x-date-range-portal.date-minute .x-date-range-portal-body{flex-direction:column}.x-date-range-portal-content{display:flex}.x-date-range-portal-preset{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;border-top:var(--x-border-width) solid var(--x-border)}.x-date-range-portal-preset>x-link{padding:.25rem}.x-date-range-portal-preset>x-link:not(:first-child){margin-left:1rem}.x-date-range-portal-extra-footer{display:flex;align-items:center;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-year-month{flex:1;text-align:center}.x-date-range-portal-body{display:flex}.x-date-range-portal-body .x-picker-date-item:before,.x-date-range-portal-body .x-picker-date-item:after{position:absolute;top:50%;right:0;left:0;z-index:1;border:var(--x-border-width) dashed transparent;transform:translateY(-50%);transition:var(--x-animation-duration-base);content:\"\"}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next),.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next){color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next) .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child):after{background-color:var(--x-primary-800);transform:translate(-.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{background-color:var(--x-primary-800);transform:translate(.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start.x-date-range-end.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{display:none}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{position:relative;z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):before{background-color:var(--x-primary-800);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):first-child:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):last-child:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-left:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-right:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover:before{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:not(.x-date-last-or-next):before{border-color:var(--x-primary);border-left-color:transparent;border-right-color:transparent;transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day:before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start:not(.x-date-last-or-next):before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-range-hover-start:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end:not(.x-date-last-or-next):before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(-.3125rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(.3125rem,-50%)}.x-date-range-portal-start,.x-date-range-portal-end{flex:1}.x-date-range-portal-footer{display:flex;align-items:center;justify-content:space-between;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-footer .x-date-range-portal-preset{border-top:none}.x-date-range-portal-footer .x-date-range-portal-preset>x-link{padding:0 .25rem}.x-date-range-portal-date{flex:1}.x-date-range-portal-time{display:flex;flex-direction:column;border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time-label{display:flex;align-items:center;justify-content:center;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time .x-time-picker-frame{border-width:0;box-shadow:none;margin:0}\n"] }]
322
322
  }], ctorParameters: function () { return [{ type: i1.DatePipe }, { type: i1.LowerCasePipe }, { type: i0.ChangeDetectorRef }, { type: i2.XI18nService }]; }, propDecorators: { placement: [{
@@ -338,4 +338,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImpor
338
338
  type: ViewChild,
339
339
  args: ['timePickerFrame']
340
340
  }] } });
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBS3ZCLFdBQVcsRUFDWCxZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFNdkIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsUUFBUSxFQUNSLHFCQUFxQixFQUVyQixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFFUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEVBQ1QsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTzFELE1BU2EseUJBQXlCO0lBRXdCLElBQUksQ0FBQyxLQUF1QjtRQUN0RixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBQzRELEtBQUs7UUFDaEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0lB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O1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO2lJQWxWVSx5QkFBeUI7cUhBQXpCLHlCQUF5Qiw0T0FGekIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLG9VQ2pEdEMsNDhWQWtRQSxxelZEbE5jLENBQUMscUJBQXFCLENBQUM7O1NBR3hCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQVRyQyxTQUFTOytCQUNFLEdBQUcsc0JBQXNCLEVBQUUsaUJBR3RCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUN4QixDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUM7c0xBR2EsU0FBUztzQkFBekQsV0FBVzt1QkFBQywyQkFBMkI7Z0JBQ29CLElBQUk7c0JBQS9ELFlBQVk7dUJBQUMsZ0NBQWdDLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSUcsS0FBSztzQkFBakUsWUFBWTt1QkFBQyxpQ0FBaUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJakMsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNBLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDUSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgWERhdGVSYW5nZVBvcnRhbFByZWZpeCxcclxuICBYRGF0ZVBpY2tlclR5cGUsXHJcbiAgWERhdGVDZWxsLFxyXG4gIFhEYXRlUmFuZ2VQcmVzZXQsXHJcbiAgWERhdGVQaWNrZXJEaXNhYmxlZERhdGUsXHJcbiAgWERhdGVQaWNrZXJEaXNhYmxlZFRpbWVcclxufSBmcm9tICcuL2RhdGUtcGlja2VyLnByb3BlcnR5JztcclxuaW1wb3J0IHtcclxuICBYSXNFbXB0eSxcclxuICBYQ29ubmVjdEJhc2VBbmltYXRpb24sXHJcbiAgWFBvc2l0aW9uVG9wQm90dG9tLFxyXG4gIFhBZGRNb250aHMsXHJcbiAgWEFkZFllYXJzLFxyXG4gIFhJc051bGwsXHJcbiAgWFRlbXBsYXRlLFxyXG4gIFhJc0FycmF5LFxyXG4gIFhJc051bWJlcixcclxuICBYSXNTdHJpbmcsXHJcbiAgWEFkZERheXNcclxufSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGF0ZVBpcGUsIExvd2VyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBYSTE4blNlcnZpY2UsIFhJMThuRGF0ZVBpY2tlciB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5pbXBvcnQgeyBYUGlja2VyTW9udGhDb21wb25lbnQgfSBmcm9tICcuL3BpY2tlci1tb250aC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYUGlja2VyWWVhckNvbXBvbmVudCB9IGZyb20gJy4vcGlja2VyLXllYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWFBpY2tlckRhdGVDb21wb25lbnQgfSBmcm9tICcuL3BpY2tlci1kYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhUaW1lUGlja2VyRnJhbWVDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS90aW1lLXBpY2tlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WERhdGVSYW5nZVBvcnRhbFByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLXBvcnRhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGFuaW1hdGlvbnM6IFtYQ29ubmVjdEJhc2VBbmltYXRpb25dLFxyXG4gIHByb3ZpZGVyczogW0RhdGVQaXBlLCBMb3dlckNhc2VQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWERhdGVSYW5nZVBvcnRhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBASG9zdEJpbmRpbmcoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24nKSBwdWJsaWMgcGxhY2VtZW50ITogWFBvc2l0aW9uVG9wQm90dG9tO1xyXG4gIEBIb3N0TGlzdGVuZXIoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24uZG9uZScsIFsnJGV2ZW50J10pIGRvbmUoZXZlbnQ6IHsgdG9TdGF0ZTogYW55IH0pIHtcclxuICAgIHRoaXMuYW5pbWF0aW5nKGZhbHNlKTtcclxuICAgIGV2ZW50LnRvU3RhdGUgPT09ICd2b2lkJyAmJiB0aGlzLmRlc3Ryb3lQb3J0YWwoKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignQHgtY29ubmVjdC1iYXNlLWFuaW1hdGlvbi5zdGFydCcsIFsnJGV2ZW50J10pIHN0YXJ0KCkge1xyXG4gICAgdGhpcy5hbmltYXRpbmcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdzdGFydFBpY2tlcicpIHN0YXJ0UGlja2VyITogWFBpY2tlckRhdGVDb21wb25lbnQgfCBYUGlja2VyTW9udGhDb21wb25lbnQgfCBYUGlja2VyWWVhckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlbmRQaWNrZXInKSBlbmRQaWNrZXIhOiBYUGlja2VyRGF0ZUNvbXBvbmVudCB8IFhQaWNrZXJNb250aENvbXBvbmVudCB8IFhQaWNrZXJZZWFyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3RpbWVQaWNrZXJGcmFtZScpIHRpbWVQaWNrZXJGcmFtZT86IFhUaW1lUGlja2VyRnJhbWVDb21wb25lbnQ7XHJcblxyXG4gIHR5cGU6IFhEYXRlUGlja2VyVHlwZSA9ICdkYXRlJztcclxuICBkaXNwbGF5ID0gbmV3IERhdGUoKTtcclxuICBtb2RlbCE6IERhdGU7XHJcbiAgc3RhcnRNb2RlbCE6IERhdGUgfCBudWxsO1xyXG4gIGVuZE1vZGVsITogRGF0ZSB8IG51bGw7XHJcbiAgc3RhcnRZZWFyITogbnVtYmVyO1xyXG4gIHN0YXJ0RGlzcGxheTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZW5kRGlzcGxheTogRGF0ZSA9IFhBZGRNb250aHModGhpcy5zdGFydERpc3BsYXksIDEpO1xyXG4gIHZhbHVlOiAobnVtYmVyIHwgbnVsbClbXSA9IFtdO1xyXG4gIHZhbHVlQ2hhbmdlITogU3ViamVjdDxudW1iZXJbXT47XHJcbiAgcG9zaXRpb25DaGFuZ2UhOiBTdWJqZWN0PGFueT47XHJcbiAgYWN0aXZlVHlwZUNoYW5nZSE6IFN1YmplY3Q8J3N0YXJ0JyB8ICdlbmQnPjtcclxuICBhY3RpdmVUeXBlITogJ3N0YXJ0JyB8ICdlbmQnO1xyXG4gIGFuaW1hdGluZyE6IEZ1bmN0aW9uO1xyXG4gIGNsb3NlUG9ydGFsITogRnVuY3Rpb247XHJcbiAgZGVzdHJveVBvcnRhbCE6IEZ1bmN0aW9uO1xyXG4gIGRpc2FibGVkRGF0ZSE6IFhEYXRlUGlja2VyRGlzYWJsZWREYXRlO1xyXG4gIGRpc2FibGVkVGltZSE6IFhEYXRlUGlja2VyRGlzYWJsZWRUaW1lO1xyXG4gIG5vZGVFbWl0ITogKGRhdGU6IERhdGVbXSwgY2xvc2U/OiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIHN0YXJ0Tm9kZUVtaXQhOiAoZGF0ZTogRGF0ZSB8IG51bGwsIGNsb3NlPzogYm9vbGVhbiwgaXNEYXRlUGlja2VyPzogYm9vbGVhbikgPT4gdm9pZDtcclxuICBlbmROb2RlRW1pdCE6IChkYXRlOiBEYXRlIHwgbnVsbCwgY2xvc2U/OiBib29sZWFuLCBpc0RhdGVQaWNrZXI/OiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIGxvY2FsZTogWEkxOG5EYXRlUGlja2VyID0ge307XHJcbiAgdGltZSE6IG51bWJlciB8IG51bGw7XHJcbiAgdGltZURpc3BsYXk6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIHRpbWVNb2RlbCE6IERhdGUgfCBudWxsO1xyXG4gIHRpbWVIb3ZlciA9IGZhbHNlO1xyXG4gIG5vZGVDbGlja0NvdW50ID0gMDtcclxuICBwcmVzZXQ6IFhEYXRlUmFuZ2VQcmVzZXRbXSA9IFtdO1xyXG4gIGV4dHJhRm9vdGVyPzogWFRlbXBsYXRlO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGdldCBpc0RhdGVQaWNrZXIoKSB7XHJcbiAgICByZXR1cm4gWydkYXRlJywgJ3F1YXJ0ZXInLCAnd2VlaycsICdtb250aCcsICd5ZWFyJ10uaW5jbHVkZXModGhpcy50eXBlKTtcclxuICB9XHJcblxyXG4gIGdldCBzdXJlRGlzYWJsZWQoKSB7XHJcbiAgICBpZiAodGhpcy50aW1lUGlja2VyRnJhbWUgJiYgIVhJc0VtcHR5KHRoaXMudGltZSkpIHtcclxuICAgICAgY29uc3QgZHQgPSBuZXcgRGF0ZSh0aGlzLnRpbWUhKTtcclxuICAgICAgY29uc3QgaG91cnMgPSBkdC5nZXRIb3VycygpO1xyXG4gICAgICBjb25zdCBtaW51dGVzID0gZHQuZ2V0TWludXRlcygpO1xyXG4gICAgICBjb25zdCBzZWNvbmRzID0gZHQuZ2V0U2Vjb25kcygpO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lLnNldERpc2FibGVkKCdob3VycycsIGhvdXJzKSB8fFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lLnNldERpc2FibGVkKCdtaW51dGVzJywgbWludXRlcykgfHxcclxuICAgICAgICB0aGlzLnRpbWVQaWNrZXJGcmFtZS5zZXREaXNhYmxlZCgnc2Vjb25kcycsIHNlY29uZHMpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkYXRlUGlwZTogRGF0ZVBpcGUsIHB1YmxpYyBsb3dlckNhc2VQaXBlOiBMb3dlckNhc2VQaXBlLCBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIGkxOG46IFhJMThuU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLnZhbHVlID0geDtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucG9zaXRpb25DaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMucGxhY2VtZW50ID0geDtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFjdGl2ZVR5cGVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVHlwZSA9IHg7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2VcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCh4KSA9PiB4LmRhdGVQaWNrZXIgYXMgWEkxOG5EYXRlUGlja2VyKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLmxvY2FsZSA9IHg7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICBpZiAoIVhJc0VtcHR5KHRoaXMudmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IFtudWxsLCBudWxsXTtcclxuICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuZGlzcGxheTtcclxuICAgICAgdGhpcy5zdGFydE1vZGVsID0gdGhpcy5tb2RlbDtcclxuICAgICAgdGhpcy5lbmRNb2RlbCA9IHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5tb2RlbCwgdGhpcy5pc0RhdGVQaWNrZXIgPyAxIDogMCk7XHJcbiAgICAgIHRoaXMuc2V0RGlzcGxheSh0aGlzLm1vZGVsKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHN0b3BQcm9wYWdhdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgc2V0TW9kZWxCeVR5cGUoYnlNb2RlbDogRGF0ZSwgbnVtOiBudW1iZXIgPSAxKSB7XHJcbiAgICBpZiAoWydtb250aCcsICdxdWFydGVyJ10uaW5jbHVkZXModGhpcy50eXBlKSkge1xyXG4gICAgICByZXR1cm4gWEFkZFllYXJzKGJ5TW9kZWwhLCBudW0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICByZXR1cm4gWEFkZFllYXJzKGJ5TW9kZWwhLCAxMCAqIG51bSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gWEFkZE1vbnRocyhieU1vZGVsISwgbnVtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERhdGVzU3RhdGUoY2VsbDogWERhdGVDZWxsKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnd2VlaycpIHJldHVybjtcclxuICAgIHRoaXMuc3RhcnRQaWNrZXI/LnNldERhdGVzU3RhdGUoY2VsbCk7XHJcbiAgICB0aGlzLmVuZFBpY2tlcj8uc2V0RGF0ZXNTdGF0ZShjZWxsKTtcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHQoKSB7XHJcbiAgICBjb25zdCB0eXBlID0gdGhpcy5hY3RpdmVUeXBlIHx8ICdzdGFydCc7XHJcbiAgICB0aGlzLnRpbWVIb3ZlciA9ICF0aGlzLnZhbHVlLmV2ZXJ5KCh4KSA9PiB4ID09PSBudWxsKTtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRNb2RlbCA9IG5ldyBEYXRlKHRoaXMudmFsdWVbMF0hKTtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSB0aGlzLnN0YXJ0TW9kZWw7XHJcbiAgICAgIHRoaXMuZW5kTW9kZWwgPSB0aGlzLnNldE1vZGVsQnlUeXBlKHRoaXMuc3RhcnRNb2RlbCwgdGhpcy5pc0RhdGVQaWNrZXIgPyAxIDogMCk7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheSA9IHRoaXMuZW5kTW9kZWwhO1xyXG4gICAgICB0aGlzLnRpbWVNb2RlbCA9IHRoaXMuc3RhcnRNb2RlbDtcclxuICAgICAgdGhpcy50aW1lRGlzcGxheSA9IHRoaXMuc3RhcnREaXNwbGF5O1xyXG4gICAgICB0aGlzLnRpbWUgPSB0aGlzLnN0YXJ0TW9kZWwuZ2V0VGltZSgpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZW5kJykge1xyXG4gICAgICB0aGlzLmVuZE1vZGVsID0gbmV3IERhdGUodGhpcy52YWx1ZVsxXSEpO1xyXG4gICAgICB0aGlzLmVuZERpc3BsYXkgPSB0aGlzLmVuZE1vZGVsO1xyXG4gICAgICB0aGlzLnN0YXJ0TW9kZWwgPSB0aGlzLnNldE1vZGVsQnlUeXBlKHRoaXMuZW5kTW9kZWwsIHRoaXMuaXNEYXRlUGlja2VyID8gLTEgOiAwKTtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSB0aGlzLnN0YXJ0TW9kZWwhO1xyXG4gICAgICB0aGlzLnRpbWVNb2RlbCA9IHRoaXMuZW5kTW9kZWw7XHJcbiAgICAgIHRoaXMudGltZURpc3BsYXkgPSB0aGlzLmVuZERpc3BsYXk7XHJcbiAgICAgIHRoaXMudGltZSA9IHRoaXMuZW5kTW9kZWwuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzcGxheShkYXRlOiBEYXRlKSB7XHJcbiAgICB0aGlzLmRpc3BsYXkgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgMSk7XHJcbiAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IHRoaXMuZGlzcGxheTtcclxuICAgIHRoaXMuZW5kRGlzcGxheSA9IHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5kaXNwbGF5LCB0aGlzLmlzRGF0ZVBpY2tlciA/IDEgOiAwKTtcclxuICB9XHJcblxyXG4gIGRhdGVDaGFuZ2UoZGF0ZTogRGF0ZSkge1xyXG4gICAgdGhpcy5ub2RlQ2xpY2tDb3VudCsrO1xyXG4gICAgbGV0IGNsb3NlID0gdGhpcy5ub2RlQ2xpY2tDb3VudCA9PT0gMjtcclxuICAgIGxldCB0aW1lID0gdGhpcy5zZXREYXRlQ2hhbmdlVGltZShkYXRlKTtcclxuICAgIGRhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgdGhpcy52YWx1ZVswXSA9IHRpbWU7XHJcbiAgICAgIGlmICghWElzTnVsbCh0aGlzLnZhbHVlWzFdKSAmJiB0aW1lID4gdGhpcy52YWx1ZVsxXSEpIHtcclxuICAgICAgICBpZiAodGhpcy5ub2RlQ2xpY2tDb3VudCA9PT0gMikge1xyXG4gICAgICAgICAgdGhpcy5ub2RlQ2xpY2tDb3VudC0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjbG9zZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZW5kTW9kZWwgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudmFsdWVbMV0gPSBudWxsO1xyXG4gICAgICAgIGlmICghdGhpcy5pc0RhdGVQaWNrZXIpIHtcclxuICAgICAgICAgIHRoaXMudGltZUhvdmVyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW5kTm9kZUVtaXQobnVsbCwgY2xvc2UsIHRoaXMuaXNEYXRlUGlja2VyKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0Tm9kZUVtaXQoZGF0ZSwgY2xvc2UsIHRoaXMuaXNEYXRlUGlja2VyKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVUeXBlID09PSAnZW5kJykge1xyXG4gICAgICB0aGlzLnZhbHVlWzFdID0gdGltZTtcclxuICAgICAgaWYgKCFYSXNOdWxsKHRoaXMudmFsdWVbMF0pICYmIHRpbWUgPCB0aGlzLnZhbHVlWzBdISkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGVDbGlja0NvdW50ID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLm5vZGVDbGlja0NvdW50LS07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFydE1vZGVsID0gbnVsbDtcclxuICAgICAgICB0aGlzLnZhbHVlWzBdID0gbnVsbDtcclxuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlUGlja2VyKSB7XHJcbiAgICAgICAgICB0aGlzLnRpbWVIb3ZlciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0YXJ0Tm9kZUVtaXQobnVsbCwgY2xvc2UsIHRoaXMuaXNEYXRlUGlja2VyKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVuZE5vZGVFbWl0KGRhdGUsIGNsb3NlLCB0aGlzLmlzRGF0ZVBpY2tlcik7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMudmFsdWUuaW5jbHVkZXMobnVsbCkgJiYgdGhpcy5pc0RhdGVQaWNrZXIpIHtcclxuICAgICAgdGhpcy5ub2RlRW1pdChcclxuICAgICAgICB0aGlzLnZhbHVlLm1hcCgoeCkgPT4gbmV3IERhdGUoeCEpKSxcclxuICAgICAgICBjbG9zZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZUNoYW5nZVRpbWUoZGF0ZTogRGF0ZSkge1xyXG4gICAgaWYgKHRoaXMuaXNEYXRlUGlja2VyKSB7XHJcbiAgICAgIHJldHVybiBkYXRlLmdldFRpbWUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCB0aW1lID0gbmV3IERhdGUoKTtcclxuICAgICAgaWYgKHRoaXMudGltZSkge1xyXG4gICAgICAgIHRpbWUgPSBuZXcgRGF0ZSh0aGlzLnRpbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGltZSA9IHRpbWUuZ2V0VGltZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChbJ2RhdGUtaG91cicsICdkYXRlLW1pbnV0ZSddLmluY2x1ZGVzKHRoaXMudHlwZSkpIHtcclxuICAgICAgICB0aW1lLnNldFNlY29uZHMoMCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGUtaG91cicpIHtcclxuICAgICAgICB0aW1lLnNldE1pbnV0ZXMoMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCksIHRpbWUuZ2V0SG91cnMoKSwgdGltZS5nZXRNaW51dGVzKCksIHRpbWUuZ2V0U2Vjb25kcygpKS5nZXRUaW1lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0eXBlQ2hhbmdlKHR5cGU6IFhEYXRlUGlja2VyVHlwZSkge1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHllYXJTdGFydENoYW5nZShudW1iZXI6IG51bWJlcikge1xyXG4gICAgdGhpcy5zdGFydFllYXIgPSBudW1iZXI7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0TW9udGgobnVtOiBudW1iZXIpIHtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KTtcclxuICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgbnVtKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheShkYXRlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5leHRZZWFyKG51bTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIG51bSk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0WWVhcnMobnVtOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc3RhcnRZZWFyICs9IG51bTtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KTtcclxuICAgIGRhdGUuc2V0RnVsbFllYXIodGhpcy5zdGFydFllYXIpO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxlTW9udGgoZGF0ZTogRGF0ZSkge1xyXG4gICAgcmV0dXJuICh0aGlzLmxvY2FsZSBhcyBhbnkpW3RoaXMubG93ZXJDYXNlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ0xMTEwnKSBhcyBzdHJpbmcpXTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFRpbWUodGltZTogRGF0ZSkge1xyXG4gICAgdGhpcy50aW1lID0gdGltZS5nZXRUaW1lKCk7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy50aW1lTW9kZWwpKSB7XHJcbiAgICAgIHRoaXMudGltZU1vZGVsID0gbmV3IERhdGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMudGltZU1vZGVsPy5zZXRIb3Vycyh0aW1lLmdldEhvdXJzKCkpO1xyXG4gICAgdGhpcy50aW1lTW9kZWw/LnNldE1pbnV0ZXModGltZS5nZXRNaW51dGVzKCkpO1xyXG4gICAgdGhpcy50aW1lTW9kZWw/LnNldFNlY29uZHModGltZS5nZXRTZWNvbmRzKCkpO1xyXG4gICAgdGhpcy5kYXRlQ2hhbmdlKHRoaXMudGltZU1vZGVsISk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzdXJlVGltZSgpIHtcclxuICAgIGlmICh0aGlzLnN1cmVEaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZTtcclxuICAgIGlmIChYSXNOdWxsKHN0YXJ0KSAmJiAhWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIHRoaXMudGltZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudGltZUhvdmVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lbmROb2RlRW1pdChuZXcgRGF0ZShlbmQhKSwgZmFsc2UsIHRydWUpO1xyXG4gICAgfSBlbHNlIGlmICghWElzTnVsbChzdGFydCkgJiYgWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIHRoaXMudGltZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudGltZUhvdmVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zdGFydE5vZGVFbWl0KG5ldyBEYXRlKHN0YXJ0ISksIGZhbHNlLCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubm9kZUVtaXQoXHJcbiAgICAgICAgdGhpcy52YWx1ZS5tYXAoKHgpID0+IG5ldyBEYXRlKHghKSksXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgeWVhckNoYW5nZShudW06IG51bWJlciwgdHlwZT86ICdzdGFydCcgfCAnZW5kJykge1xyXG4gICAgaWYgKHR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgdGhpcy5lbmREaXNwbGF5ID0gWEFkZFllYXJzKHRoaXMuZW5kRGlzcGxheSwgbnVtKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSBYQWRkWWVhcnModGhpcy5zdGFydERpc3BsYXksIG51bSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb250aENoYW5nZShudW06IG51bWJlciwgdHlwZT86ICdzdGFydCcgfCAnZW5kJykge1xyXG4gICAgaWYgKHR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgdGhpcy5lbmREaXNwbGF5ID0gWEFkZE1vbnRocyh0aGlzLmVuZERpc3BsYXksIG51bSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlbmQnKSB7XHJcbiAgICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gWEFkZE1vbnRocyh0aGlzLnN0YXJ0RGlzcGxheSwgbnVtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUHJlc2V0KHR5cGU6ICd3ZWVrJyB8ICdtb250aCcgfCAneWVhcicsIG51bSA9IDApIHtcclxuICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgaWYgKHR5cGUgPT09ICd3ZWVrJykge1xyXG4gICAgICBub3cgPSBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCksIG5vdy5nZXREYXRlKCkpO1xyXG4gICAgICBjb25zdCB3ZWVrID0gbm93LmdldERheSgpO1xyXG4gICAgICBjb25zdCB3ZWVrTGlzdCA9IFsxLCAyLCAzLCA0LCA1LCA2LCA3XTtcclxuICAgICAgY29uc3QgaW5kZXggPSB3ZWVrTGlzdC5pbmRleE9mKHdlZWspO1xyXG4gICAgICB0aGlzLm5vZGVFbWl0KFtYQWRkRGF5cyhub3csIHdlZWtMaXN0WzBdIC0gKGluZGV4ICsgMSkgKyBudW0gKiA3KSwgWEFkZERheXMobm93LCB3ZWVrTGlzdFs2XSAtIChpbmRleCArIDEpICsgbnVtICogNyldLCB0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICBjb25zdCBtb250aCA9IFhBZGRNb250aHMobm93LCBudW0pO1xyXG4gICAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKG1vbnRoLmdldEZ1bGxZZWFyKCksIG1vbnRoLmdldE1vbnRoKCksIDEpO1xyXG4gICAgICBjb25zdCBsYXN0RGF5ID0gWEFkZERheXMoWEFkZE1vbnRocyhmaXJzdERheSwgMSksIC0xKTtcclxuICAgICAgdGhpcy5ub2RlRW1pdChbZmlyc3REYXksIGxhc3REYXldLCB0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIGxldCB5ZWFyID0gWEFkZFllYXJzKG5vdywgbnVtKTtcclxuICAgICAgbGV0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhci5nZXRGdWxsWWVhcigpLCAwLCAxKTtcclxuICAgICAgbGV0IGxhc3REYXkgPSBYQWRkRGF5cyhYQWRkWWVhcnMoZmlyc3REYXksIDEpLCAtMSk7XHJcbiAgICAgIHRoaXMubm9kZUVtaXQoW2ZpcnN0RGF5LCBsYXN0RGF5XSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblByZXNldEZ1bmMoaXRlbTogWERhdGVSYW5nZVByZXNldCkge1xyXG4gICAgbGV0IHZhbHVlID0gaXRlbS5mdW5jKCk7XHJcbiAgICBpZiAoWElzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDEpIHtcclxuICAgICAgaWYgKFhJc051bWJlcih2YWx1ZVswXSkgfHwgWElzU3RyaW5nKHZhbHVlWzBdKSkge1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh4KSA9PiBuZXcgRGF0ZSh4KSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ub2RlRW1pdCh2YWx1ZSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsIHt7IHR5cGUgfX1cIj5cclxuICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1ib2R5XCIgW25nU3dpdGNoXT1cInR5cGVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICA8eC1waWNrZXItZGF0ZVxyXG4gICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgIFtuZXh0TW9udGhCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgICA8eC1waWNrZXItZGF0ZVxyXG4gICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICBbKGRpc3BsYXkpXT1cImVuZERpc3BsYXlcIlxyXG4gICAgICAgIFttb2RlbF09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInd2VlaydcIj5cclxuICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgIHR5cGUgPSAnd2VlaydcclxuICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgW21vZGVsXT1cInN0YXJ0TW9kZWxcIlxyXG4gICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgW25leHRNb250aEJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgID48L3gtcGlja2VyLWRhdGU+XHJcbiAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgI2VuZFBpY2tlclxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgIHR5cGUgPSAnd2VlaydcclxuICAgICAgICBbKGRpc3BsYXkpXT1cImVuZERpc3BsYXlcIlxyXG4gICAgICAgIFttb2RlbF09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbW9udGgnXCI+XHJcbiAgICAgIDx4LXBpY2tlci1tb250aFxyXG4gICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICA+PC94LXBpY2tlci1tb250aD5cclxuICAgICAgPHgtcGlja2VyLW1vbnRoXHJcbiAgICAgICAgI2VuZFBpY2tlclxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgW21vZGVsXT1cImVuZE1vZGVsXCJcclxuICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICBbbGFzdFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgID48L3gtcGlja2VyLW1vbnRoPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncXVhcnRlcidcIj5cclxuICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICBbbW9kZWxdPVwic3RhcnRNb2RlbFwiXHJcbiAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgW25leHRZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgKHJhbmdlRGF0ZUNsaWNrKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgPjwveC1waWNrZXItcXVhcnRlcj5cclxuICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWVuZFwiXHJcbiAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICBbbW9kZWxdPVwiZW5kTW9kZWxcIlxyXG4gICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgKHJhbmdlRGF0ZUNsaWNrKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgPjwveC1waWNrZXItcXVhcnRlcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3llYXInXCI+XHJcbiAgICAgIDx4LXBpY2tlci15ZWFyXHJcbiAgICAgICAgI3N0YXJ0UGlja2VyXHJcbiAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgW21vZGVsXT1cInN0YXJ0TW9kZWxcIlxyXG4gICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgID48L3gtcGlja2VyLXllYXI+XHJcbiAgICAgIDx4LXBpY2tlci15ZWFyXHJcbiAgICAgICAgI2VuZFBpY2tlclxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgW21vZGVsXT1cImVuZE1vZGVsXCJcclxuICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICBbbGFzdFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgID48L3gtcGlja2VyLXllYXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlLXRpbWUnXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlVGltZUhvdXJNaW51dGVUcGw7IGNvbnRleHQ6IHsgdGltZUZvcm1hdDogJ0hIOm1tOnNzJywgdGltZVR5cGU6ICd0aW1lJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlLWhvdXInXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlVGltZUhvdXJNaW51dGVUcGw7IGNvbnRleHQ6IHsgdGltZUZvcm1hdDogJ0hIJywgdGltZVR5cGU6ICdob3VyJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlLW1pbnV0ZSdcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGVUaW1lSG91ck1pbnV0ZVRwbDsgY29udGV4dDogeyB0aW1lRm9ybWF0OiAnSEg6bW0nLCB0aW1lVHlwZTogJ21pbnV0ZScgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGF0ZVBpY2tlclwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImV4dHJhRm9vdGVyXCIgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWV4dHJhLWZvb3RlclwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiZXh0cmFGb290ZXJcIj57eyBleHRyYUZvb3RlciB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJlc2V0VHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNkYXRlVGltZUhvdXJNaW51dGVUcGwgbGV0LXRpbWVGb3JtYXQ9XCJ0aW1lRm9ybWF0XCIgbGV0LXRpbWVUeXBlPVwidGltZVR5cGVcIj5cclxuICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1jb250ZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1kYXRlXCI+XHJcbiAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRdPVwiYWN0aXZlVHlwZSA9PT0gJ3N0YXJ0J1wiXHJcbiAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXT1cImFjdGl2ZVR5cGUgPT09ICdlbmQnXCJcclxuICAgICAgICBbKGRpc3BsYXkpXT1cInRpbWVEaXNwbGF5XCJcclxuICAgICAgICBbKG1vZGVsKV09XCJ0aW1lTW9kZWxcIlxyXG4gICAgICAgIFtyYW5nZUhvdmVyXT1cInRpbWVIb3ZlclwiXHJcbiAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgID48L3gtcGlja2VyLWRhdGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXRpbWVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtdGltZS1sYWJlbFwiPlxyXG4gICAgICAgIHt7IHRpbWUgfCBkYXRlIDogdGltZUZvcm1hdCB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHgtdGltZS1waWNrZXItZnJhbWVcclxuICAgICAgICAjdGltZVBpY2tlckZyYW1lXHJcbiAgICAgICAgW3R5cGVdPVwidGltZVR5cGVcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJ0aW1lXCJcclxuICAgICAgICAobm9kZUVtaXQpPVwic2VsZWN0VGltZSgkZXZlbnQpXCJcclxuICAgICAgICBbZGlzYWJsZWRUaW1lUGFyYW1dPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkVGltZV09XCJkaXNhYmxlZFRpbWVcIlxyXG4gICAgICAgIFtkZWZhdWx0Tm93XT1cImZhbHNlXCJcclxuICAgICAgPjwveC10aW1lLXBpY2tlci1mcmFtZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNEYXRlUGlja2VyXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZXh0cmFGb290ZXJcIiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZXh0cmEtZm9vdGVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJleHRyYUZvb3RlclwiPnt7IGV4dHJhRm9vdGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1mb290ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWZvb3Rlci1sZWZ0XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNEYXRlUGlja2VyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXNldFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHgtYnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIiFzdXJlRGlzYWJsZWQgJiYgc3VyZVRpbWUoKVwiIHNpemU9XCJzbWFsbFwiIFtkaXNhYmxlZF09XCJzdXJlRGlzYWJsZWRcIj57eyBsb2NhbGUuc3VyZSB9fTwveC1idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3ByZXNldFRwbD5cclxuICA8ZGl2ICpuZ0lmPVwicHJlc2V0XCIgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXByZXNldFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcmVzZXRcIj5cclxuICAgICAgPHgtbGluayAqbmdJZj1cIml0ZW0uaWQgPT09ICd0aGlzV2VlaydcIiAoY2xpY2spPVwib25QcmVzZXQoJ3dlZWsnLCAwKVwiPnt7IGxvY2FsZS50aGlzV2VlayB9fTwveC1saW5rPlxyXG4gICAgICA8eC1saW5rICpuZ0lmPVwiaXRlbS5pZCA9PT0gJ2xhc3RXZWVrJ1wiIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIC0xKVwiPnt7IGxvY2FsZS5sYXN0V2VlayB9fTwveC1saW5rPlxyXG4gICAgICA8eC1saW5rICpuZ0lmPVwiaXRlbS5pZCA9PT0gJ25leHRXZWVrJ1wiIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIDEpXCI+e3sgbG9jYWxlLm5leHRXZWVrIH19PC94LWxpbms+XHJcbiAgICAgIDx4LWxpbmsgKm5nSWY9XCJpdGVtLmlkID09PSAndGhpc01vbnRoJ1wiIChjbGljayk9XCJvblByZXNldCgnbW9udGgnLCAwKVwiPnt7IGxvY2FsZS50aGlzTW9udGggfX08L3gtbGluaz5cclxuICAgICAgPHgtbGluayAqbmdJZj1cIml0ZW0uaWQgPT09ICdsYXN0TW9udGgnXCIgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIC0xKVwiPnt7IGxvY2FsZS5sYXN0TW9udGggfX08L3gtbGluaz5cclxuICAgICAgPHgtbGluayAqbmdJZj1cIml0ZW0uaWQgPT09ICduZXh0TW9udGgnXCIgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIDEpXCI+e3sgbG9jYWxlLm5leHRNb250aCB9fTwveC1saW5rPlxyXG4gICAgICA8eC1saW5rICpuZ0lmPVwiaXRlbS5pZCA9PT0gJ3RoaXNZZWFyJ1wiIChjbGljayk9XCJvblByZXNldCgneWVhcicsIDApXCI+e3sgbG9jYWxlLnRoaXNZZWFyIH19PC94LWxpbms+XHJcbiAgICAgIDx4LWxpbmsgKm5nSWY9XCJpdGVtLmlkID09PSAnbGFzdFllYXInXCIgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgLTEpXCI+e3sgbG9jYWxlLmxhc3RZZWFyIH19PC94LWxpbms+XHJcbiAgICAgIDx4LWxpbmsgKm5nSWY9XCJpdGVtLmlkID09PSAnbmV4dFllYXInXCIgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgMSlcIj57eyBsb2NhbGUubmV4dFllYXIgfX08L3gtbGluaz5cclxuICAgICAgPHgtbGluayAqbmdJZj1cIml0ZW0uZnVuY1wiIChjbGljayk9XCJvblByZXNldEZ1bmMoaXRlbSlcIj57eyBpdGVtLmxhYmVsIH19PC94LWxpbms+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBS3ZCLFdBQVcsRUFDWCxZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFNdkIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsUUFBUSxFQUNSLHFCQUFxQixFQUVyQixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFFUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEVBQ1QsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTzFELE1BU2EseUJBQXlCO0lBRXdCLElBQUksQ0FBQyxLQUF1QjtRQUN0RixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBQzRELEtBQUs7UUFDaEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0lB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O1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO2tJQWxWVSx5QkFBeUI7c0hBQXpCLHlCQUF5Qiw0T0FGekIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLG9VQ2pEdEMsNDhWQWtRQSxxelZEbE5jLENBQUMscUJBQXFCLENBQUM7O1NBR3hCLHlCQUF5Qjs0RkFBekIseUJBQXlCO2tCQVRyQyxTQUFTOytCQUNFLEdBQUcsc0JBQXNCLEVBQUUsaUJBR3RCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUN4QixDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUM7c0xBR2EsU0FBUztzQkFBekQsV0FBVzt1QkFBQywyQkFBMkI7Z0JBQ29CLElBQUk7c0JBQS9ELFlBQVk7dUJBQUMsZ0NBQWdDLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSUcsS0FBSztzQkFBakUsWUFBWTt1QkFBQyxpQ0FBaUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJakMsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNBLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDUSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgWERhdGVSYW5nZVBvcnRhbFByZWZpeCxcclxuICBYRGF0ZVBpY2tlclR5cGUsXHJcbiAgWERhdGVDZWxsLFxyXG4gIFhEYXRlUmFuZ2VQcmVzZXQsXHJcbiAgWERhdGVQaWNrZXJEaXNhYmxlZERhdGUsXHJcbiAgWERhdGVQaWNrZXJEaXNhYmxlZFRpbWVcclxufSBmcm9tICcuL2RhdGUtcGlja2VyLnByb3BlcnR5JztcclxuaW1wb3J0IHtcclxuICBYSXNFbXB0eSxcclxuICBYQ29ubmVjdEJhc2VBbmltYXRpb24sXHJcbiAgWFBvc2l0aW9uVG9wQm90dG9tLFxyXG4gIFhBZGRNb250aHMsXHJcbiAgWEFkZFllYXJzLFxyXG4gIFhJc051bGwsXHJcbiAgWFRlbXBsYXRlLFxyXG4gIFhJc0FycmF5LFxyXG4gIFhJc051bWJlcixcclxuICBYSXNTdHJpbmcsXHJcbiAgWEFkZERheXNcclxufSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGF0ZVBpcGUsIExvd2VyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBYSTE4blNlcnZpY2UsIFhJMThuRGF0ZVBpY2tlciB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5pbXBvcnQgeyBYUGlja2VyTW9udGhDb21wb25lbnQgfSBmcm9tICcuL3BpY2tlci1tb250aC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYUGlja2VyWWVhckNvbXBvbmVudCB9IGZyb20gJy4vcGlja2VyLXllYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWFBpY2tlckRhdGVDb21wb25lbnQgfSBmcm9tICcuL3BpY2tlci1kYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhUaW1lUGlja2VyRnJhbWVDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS90aW1lLXBpY2tlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WERhdGVSYW5nZVBvcnRhbFByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLXBvcnRhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGFuaW1hdGlvbnM6IFtYQ29ubmVjdEJhc2VBbmltYXRpb25dLFxyXG4gIHByb3ZpZGVyczogW0RhdGVQaXBlLCBMb3dlckNhc2VQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWERhdGVSYW5nZVBvcnRhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBASG9zdEJpbmRpbmcoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24nKSBwdWJsaWMgcGxhY2VtZW50ITogWFBvc2l0aW9uVG9wQm90dG9tO1xyXG4gIEBIb3N0TGlzdGVuZXIoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24uZG9uZScsIFsnJGV2ZW50J10pIGRvbmUoZXZlbnQ6IHsgdG9TdGF0ZTogYW55IH0pIHtcclxuICAgIHRoaXMuYW5pbWF0aW5nKGZhbHNlKTtcclxuICAgIGV2ZW50LnRvU3RhdGUgPT09ICd2b2lkJyAmJiB0aGlzLmRlc3Ryb3lQb3J0YWwoKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignQHgtY29ubmVjdC1iYXNlLWFuaW1hdGlvbi5zdGFydCcsIFsnJGV2ZW50J10pIHN0YXJ0KCkge1xyXG4gICAgdGhpcy5hbmltYXRpbmcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdzdGFydFBpY2tlcicpIHN0YXJ0UGlja2VyITogWFBpY2tlckRhdGVDb21wb25lbnQgfCBYUGlja2VyTW9udGhDb21wb25lbnQgfCBYUGlja2VyWWVhckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlbmRQaWNrZXInKSBlbmRQaWNrZXIhOiBYUGlja2VyRGF0ZUNvbXBvbmVudCB8IFhQaWNrZXJNb250aENvbXBvbmVudCB8IFhQaWNrZXJZZWFyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3RpbWVQaWNrZXJGcmFtZScpIHRpbWVQaWNrZXJGcmFtZT86IFhUaW1lUGlja2VyRnJhbWVDb21wb25lbnQ7XHJcblxyXG4gIHR5cGU6IFhEYXRlUGlja2VyVHlwZSA9ICdkYXRlJztcclxuICBkaXNwbGF5ID0gbmV3IERhdGUoKTtcclxuICBtb2RlbCE6IERhdGU7XHJcbiAgc3RhcnRNb2RlbCE6IERhdGUgfCBudWxsO1xyXG4gIGVuZE1vZGVsITogRGF0ZSB8IG51bGw7XHJcbiAgc3RhcnRZZWFyITogbnVtYmVyO1xyXG4gIHN0YXJ0RGlzcGxheTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZW5kRGlzcGxheTogRGF0ZSA9IFhBZGRNb250aHModGhpcy5zdGFydERpc3BsYXksIDEpO1xyXG4gIHZhbHVlOiAobnVtYmVyIHwgbnVsbClbXSA9IFtdO1xyXG4gIHZhbHVlQ2hhbmdlITogU3ViamVjdDxudW1iZXJbXT47XHJcbiAgcG9zaXRpb25DaGFuZ2UhOiBTdWJqZWN0PGFueT47XHJcbiAgYWN0aXZlVHlwZUNoYW5nZSE6IFN1YmplY3Q8J3N0YXJ0JyB8ICdlbmQnPjtcclxuICBhY3RpdmVUeXBlITogJ3N0YXJ0JyB8ICdlbmQnO1xyXG4gIGFuaW1hdGluZyE6IEZ1bmN0aW9uO1xyXG4gIGNsb3NlUG9ydGFsITogRnVuY3Rpb247XHJcbiAgZGVzdHJveVBvcnRhbCE6IEZ1bmN0aW9uO1xyXG4gIGRpc2FibGVkRGF0ZSE6IFhEYXRlUGlja2VyRGlzYWJsZWREYXRlO1xyXG4gIGRpc2FibGVkVGltZSE6IFhEYXRlUGlja2VyRGlzYWJsZWRUaW1lO1xyXG4gIG5vZGVFbWl0ITogKGRhdGU6IERhdGVbXSwgY2xvc2U/OiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIHN0YXJ0Tm9kZUVtaXQhOiAoZGF0ZTogRGF0ZSB8IG51bGwsIGNsb3NlPzogYm9vbGVhbiwgaXNEYXRlUGlja2VyPzogYm9vbGVhbikgPT4gdm9pZDtcclxuICBlbmROb2RlRW1pdCE6IChkYXRlOiBEYXRlIHwgbnVsbCwgY2xvc2U/OiBib29sZWFuLCBpc0RhdGVQaWNrZXI/OiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIGxvY2FsZTogWEkxOG5EYXRlUGlja2VyID0ge307XHJcbiAgdGltZSE6IG51bWJlciB8IG51bGw7XHJcbiAgdGltZURpc3BsYXk6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIHRpbWVNb2RlbCE6IERhdGUgfCBudWxsO1xyXG4gIHRpbWVIb3ZlciA9IGZhbHNlO1xyXG4gIG5vZGVDbGlja0NvdW50ID0gMDtcclxuICBwcmVzZXQ6IFhEYXRlUmFuZ2VQcmVzZXRbXSA9IFtdO1xyXG4gIGV4dHJhRm9vdGVyPzogWFRlbXBsYXRlO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGdldCBpc0RhdGVQaWNrZXIoKSB7XHJcbiAgICByZXR1cm4gWydkYXRlJywgJ3F1YXJ0ZXInLCAnd2VlaycsICdtb250aCcsICd5ZWFyJ10uaW5jbHVkZXModGhpcy50eXBlKTtcclxuICB9XHJcblxyXG4gIGdldCBzdXJlRGlzYWJsZWQoKSB7XHJcbiAgICBpZiAodGhpcy50aW1lUGlja2VyRnJhbWUgJiYgIVhJc0VtcHR5KHRoaXMudGltZSkpIHtcclxuICAgICAgY29uc3QgZHQgPSBuZXcgRGF0ZSh0aGlzLnRpbWUhKTtcclxuICAgICAgY29uc3QgaG91cnMgPSBkdC5nZXRIb3VycygpO1xyXG4gICAgICBjb25zdCBtaW51dGVzID0gZHQuZ2V0TWludXRlcygpO1xyXG4gICAgICBjb25zdCBzZWNvbmRzID0gZHQuZ2V0U2Vjb25kcygpO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lLnNldERpc2FibGVkKCdob3VycycsIGhvdXJzKSB8fFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lLnNldERpc2FibGVkKCdtaW51dGVzJywgbWludXRlcykgfHxcclxuICAgICAgICB0aGlzLnRpbWVQaWNrZXJGcmFtZS5zZXREaXNhYmxlZCgnc2Vjb25kcycsIHNlY29uZHMpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkYXRlUGlwZTogRGF0ZVBpcGUsIHB1YmxpYyBsb3dlckNhc2VQaXBlOiBMb3dlckNhc2VQaXBlLCBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIGkxOG46IFhJMThuU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLnZhbHVlID0geDtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucG9zaXRpb25DaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMucGxhY2VtZW50ID0geDtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFjdGl2ZVR5cGVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVHlwZSA9IHg7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2VcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCh4KSA9PiB4LmRhdGVQaWNrZXIgYXMgWEkxOG5EYXRlUGlja2VyKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLmxvY2FsZSA9IHg7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICBpZiAoIVhJc0VtcHR5KHRoaXMudmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IFtudWxsLCBudWxsXTtcclxuICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuZGlzcGxheTtcclxuICAgICAgdGhpcy5zdGFydE1vZGVsID0gdGhpcy5tb2RlbDtcclxuICAgICAgdGhpcy5lbmRNb2RlbCA9IHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5tb2RlbCwgdGhpcy5pc0RhdGVQaWNrZXIgPyAxIDogMCk7XHJcbiAgICAgIHRoaXMuc2V0RGlzcGxheSh0aGlzLm1vZGVsKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHN0b3BQcm9wYWdhdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgc2V0TW9kZWxCeVR5cGUoYnlNb2RlbDogRGF0ZSwgbnVtOiBudW1iZXIgPSAxKSB7XHJcbiAgICBpZiAoWydtb250aCcsICdxdWFydGVyJ10uaW5jbHVkZXModGhpcy50eXBlKSkge1xyXG4gICAgICByZXR1cm4gWEFkZFllYXJzKGJ5TW9kZWwhLCBudW0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICByZXR1cm4gWEFkZFllYXJzKGJ5TW9kZWwhLCAxMCAqIG51bSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gWEFkZE1vbnRocyhieU1vZGVsISwgbnVtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERhdGVzU3RhdGUoY2VsbDogWERhdGVDZWxsKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnd2VlaycpIHJldHVybjtcclxuICAgIHRoaXMuc3RhcnRQaWNrZXI/LnNldERhdGVzU3RhdGUoY2VsbCk7XHJcbiAgICB0aGlzLmVuZFBpY2tlcj8uc2V0RGF0ZXNTdGF0ZShjZWxsKTtcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHQoKSB7XHJcbiAgICBjb25zdCB0eXBlID0gdGhpcy5hY3RpdmVUeXBlIHx8ICdzdGFydCc7XHJcbiAgICB0aGlzLnRpbWVIb3ZlciA9ICF0aGlzLnZhbHVlLmV2ZXJ5KCh4KSA9PiB4ID09PSBudWxsKTtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRNb2RlbCA9IG5ldyBEYXRlKHRoaXMudmFsdWVbMF0hKTtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSB0aGlzLnN0YXJ0TW9kZWw7XHJcbiAgICAgIHRoaXMuZW5kTW9kZWwgPSB0aGlzLnNldE1vZGVsQnlUeXBlKHRoaXMuc3RhcnRNb2RlbCwgdGhpcy5pc0RhdGVQaWNrZXIgPyAxIDogMCk7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheSA9IHRoaXMuZW5kTW9kZWwhO1xyXG4gICAgICB0aGlzLnRpbWVNb2RlbCA9IHRoaXMuc3RhcnRNb2RlbDtcclxuICAgICAgdGhpcy50aW1lRGlzcGxheSA9IHRoaXMuc3RhcnREaXNwbGF5O1xyXG4gICAgICB0aGlzLnRpbWUgPSB0aGlzLnN0YXJ0TW9kZWwuZ2V0VGltZSgpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZW5kJykge1xyXG4gICAgICB0aGlzLmVuZE1vZGVsID0gbmV3IERhdGUodGhpcy52YWx1ZVsxXSEpO1xyXG4gICAgICB0aGlzLmVuZERpc3BsYXkgPSB0aGlzLmVuZE1vZGVsO1xyXG4gICAgICB0aGlzLnN0YXJ0TW9kZWwgPSB0aGlzLnNldE1vZGVsQnlUeXBlKHRoaXMuZW5kTW9kZWwsIHRoaXMuaXNEYXRlUGlja2VyID8gLTEgOiAwKTtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSB0aGlzLnN0YXJ0TW9kZWwhO1xyXG4gICAgICB0aGlzLnRpbWVNb2RlbCA9IHRoaXMuZW5kTW9kZWw7XHJcbiAgICAgIHRoaXMudGltZURpc3BsYXkgPSB0aGlzLmVuZERpc3BsYXk7XHJcbiAgICAgIHRoaXMudGltZSA9IHRoaXMuZW5kTW9kZWwuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzcGxheShkYXRlOiBEYXRlKSB7XHJcbiAgICB0aGlzLmRpc3BsYXkgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgMSk7XHJcbiAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IHRoaXMuZGlzcGxheTtcclxuICAgIHRoaXMuZW5kRGlzcGxheSA9IHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5kaXNwbGF5LCB0aGlzLmlzRGF0ZVBpY2tlciA/IDEgOiAwKTtcclxuICB9XHJcblxyXG4gIGRhdGVDaGFuZ2UoZGF0ZTogRGF0ZSkge1xyXG4gICAgdGhpcy5ub2RlQ2xpY2tDb3VudCsrO1xyXG4gICAgbGV0IGNsb3NlID0gdGhpcy5ub2RlQ2xpY2tDb3VudCA9PT0gMjtcclxuICAgIGxldCB0aW1lID0gdGhpcy5zZXREYXRlQ2hhbmdlVGltZShkYXRlKTtcclxuICAgIGRhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgdGhpcy52YWx1ZVswXSA9IHRpbWU7XHJcbiAgICAgIGlmICghWElzTnVsbCh0aGlzLnZhbHVlWzFdKSAmJiB0aW1lID4gdGhpcy52YWx1ZVsxXSEpIHtcclxuICAgICAgICBpZiAodGhpcy5ub2RlQ2xpY2tDb3VudCA9PT0gMikge1xyXG4gICAgICAgICAgdGhpcy5ub2RlQ2xpY2tDb3VudC0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjbG9zZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZW5kTW9kZWwgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudmFsdWVbMV0gPSBudWxsO1xyXG4gICAgICAgIGlmICghdGhpcy5pc0RhdGVQaWNrZXIpIHtcclxuICAgICAgICAgIHRoaXMudGltZUhvdmVyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW5kTm9kZUVtaXQobnVsbCwgY2xvc2UsIHRoaXMuaXNEYXRlUGlja2VyKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0Tm9kZUVtaXQoZGF0ZSwgY2xvc2UsIHRoaXMuaXNEYXRlUGlja2VyKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVUeXBlID09PSAnZW5kJykge1xyXG4gICAgICB0aGlzLnZhbHVlWzFdID0gdGltZTtcclxuICAgICAgaWYgKCFYSXNOdWxsKHRoaXMudmFsdWVbMF0pICYmIHRpbWUgPCB0aGlzLnZhbHVlWzBdISkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGVDbGlja0NvdW50ID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLm5vZGVDbGlja0NvdW50LS07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFydE1vZGVsID0gbnVsbDtcclxuICAgICAgICB0aGlzLnZhbHVlWzBdID0gbnVsbDtcclxuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlUGlja2VyKSB7XHJcbiAgICAgICAgICB0aGlzLnRpbWVIb3ZlciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0YXJ0Tm9kZUVtaXQobnVsbCwgY2xvc2UsIHRoaXMuaXNEYXRlUGlja2VyKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVuZE5vZGVFbWl0KGRhdGUsIGNsb3NlLCB0aGlzLmlzRGF0ZVBpY2tlcik7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMudmFsdWUuaW5jbHVkZXMobnVsbCkgJiYgdGhpcy5pc0RhdGVQaWNrZXIpIHtcclxuICAgICAgdGhpcy5ub2RlRW1pdChcclxuICAgICAgICB0aGlzLnZhbHVlLm1hcCgoeCkgPT4gbmV3IERhdGUoeCEpKSxcclxuICAgICAgICBjbG9zZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZUNoYW5nZVRpbWUoZGF0ZTogRGF0ZSkge1xyXG4gICAgaWYgKHRoaXMuaXNEYXRlUGlja2VyKSB7XHJcbiAgICAgIHJldHVybiBkYXRlLmdldFRpbWUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCB0aW1lID0gbmV3IERhdGUoKTtcclxuICAgICAgaWYgKHRoaXMudGltZSkge1xyXG4gICAgICAgIHRpbWUgPSBuZXcgRGF0ZSh0aGlzLnRpbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGltZSA9IHRpbWUuZ2V0VGltZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChbJ2RhdGUtaG91cicsICdkYXRlLW1pbnV0ZSddLmluY2x1ZGVzKHRoaXMudHlwZSkpIHtcclxuICAgICAgICB0aW1lLnNldFNlY29uZHMoMCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGUtaG91cicpIHtcclxuICAgICAgICB0aW1lLnNldE1pbnV0ZXMoMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCksIHRpbWUuZ2V0SG91cnMoKSwgdGltZS5nZXRNaW51dGVzKCksIHRpbWUuZ2V0U2Vjb25kcygpKS5nZXRUaW1lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0eXBlQ2hhbmdlKHR5cGU6IFhEYXRlUGlja2VyVHlwZSkge1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHllYXJTdGFydENoYW5nZShudW1iZXI6IG51bWJlcikge1xyXG4gICAgdGhpcy5zdGFydFllYXIgPSBudW1iZXI7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0TW9udGgobnVtOiBudW1iZXIpIHtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KTtcclxuICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgbnVtKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheShkYXRlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5leHRZZWFyKG51bTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIG51bSk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0WWVhcnMobnVtOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc3RhcnRZZWFyICs9IG51bTtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KTtcclxuICAgIGRhdGUuc2V0RnVsbFllYXIodGhpcy5zdGFydFllYXIpO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxlTW9udGgoZGF0ZTogRGF0ZSkge1xyXG4gICAgcmV0dXJuICh0aGlzLmxvY2FsZSBhcyBhbnkpW3RoaXMubG93ZXJDYXNlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ0xMTEwnKSBhcyBzdHJpbmcpXTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFRpbWUodGltZTogRGF0ZSkge1xyXG4gICAgdGhpcy50aW1lID0gdGltZS5nZXRUaW1lKCk7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy50aW1lTW9kZWwpKSB7XHJcbiAgICAgIHRoaXMudGltZU1vZGVsID0gbmV3IERhdGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMudGltZU1vZGVsPy5zZXRIb3Vycyh0aW1lLmdldEhvdXJzKCkpO1xyXG4gICAgdGhpcy50aW1lTW9kZWw/LnNldE1pbnV0ZXModGltZS5nZXRNaW51dGVzKCkpO1xyXG4gICAgdGhpcy50aW1lTW9kZWw/LnNldFNlY29uZHModGltZS5nZXRTZWNvbmRzKCkpO1xyXG4gICAgdGhpcy5kYXRlQ2hhbmdlKHRoaXMudGltZU1vZGVsISk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzdXJlVGltZSgpIHtcclxuICAgIGlmICh0aGlzLnN1cmVEaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZTtcclxuICAgIGlmIChYSXNOdWxsKHN0YXJ0KSAmJiAhWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIHRoaXMudGltZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudGltZUhvdmVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lbmROb2RlRW1pdChuZXcgRGF0ZShlbmQhKSwgZmFsc2UsIHRydWUpO1xyXG4gICAgfSBlbHNlIGlmICghWElzTnVsbChzdGFydCkgJiYgWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIHRoaXMudGltZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudGltZUhvdmVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zdGFydE5vZGVFbWl0KG5ldyBEYXRlKHN0YXJ0ISksIGZhbHNlLCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubm9kZUVtaXQoXHJcbiAgICAgICAgdGhpcy52YWx1ZS5tYXAoKHgpID0+IG5ldyBEYXRlKHghKSksXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgeWVhckNoYW5nZShudW06IG51bWJlciwgdHlwZT86ICdzdGFydCcgfCAnZW5kJykge1xyXG4gICAgaWYgKHR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgdGhpcy5lbmREaXNwbGF5ID0gWEFkZFllYXJzKHRoaXMuZW5kRGlzcGxheSwgbnVtKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXkgPSBYQWRkWWVhcnModGhpcy5zdGFydERpc3BsYXksIG51bSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb250aENoYW5nZShudW06IG51bWJlciwgdHlwZT86ICdzdGFydCcgfCAnZW5kJykge1xyXG4gICAgaWYgKHR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgdGhpcy5lbmREaXNwbGF5ID0gWEFkZE1vbnRocyh0aGlzLmVuZERpc3BsYXksIG51bSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlbmQnKSB7XHJcbiAgICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gWEFkZE1vbnRocyh0aGlzLnN0YXJ0RGlzcGxheSwgbnVtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUHJlc2V0KHR5cGU6ICd3ZWVrJyB8ICdtb250aCcgfCAneWVhcicsIG51bSA9IDApIHtcclxuICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgaWYgKHR5cGUgPT09ICd3ZWVrJykge1xyXG4gICAgICBub3cgPSBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCksIG5vdy5nZXREYXRlKCkpO1xyXG4gICAgICBjb25zdCB3ZWVrID0gbm93LmdldERheSgpO1xyXG4gICAgICBjb25zdCB3ZWVrTGlzdCA9IFsxLCAyLCAzLCA0LCA1LCA2LCA3XTtcclxuICAgICAgY29uc3QgaW5kZXggPSB3ZWVrTGlzdC5pbmRleE9mKHdlZWspO1xyXG4gICAgICB0aGlzLm5vZGVFbWl0KFtYQWRkRGF5cyhub3csIHdlZWtMaXN0WzBdIC0gKGluZGV4ICsgMSkgKyBudW0gKiA3KSwgWEFkZERheXMobm93LCB3ZWVrTGlzdFs2XSAtIChpbmRleCArIDEpICsgbnVtICogNyldLCB0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICBjb25zdCBtb250aCA9IFhBZGRNb250aHMobm93LCBudW0pO1xyXG4gICAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKG1vbnRoLmdldEZ1bGxZZWFyKCksIG1vbnRoLmdldE1vbnRoKCksIDEpO1xyXG4gICAgICBjb25zdCBsYXN0RGF5ID0gWEFkZERheXMoWEFkZE1vbnRocyhmaXJzdERheSwgMSksIC0xKTtcclxuICAgICAgdGhpcy5ub2RlRW1pdChbZmlyc3REYXksIGxhc3REYXldLCB0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIGxldCB5ZWFyID0gWEFkZFllYXJzKG5vdywgbnVtKTtcclxuICAgICAgbGV0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhci5nZXRGdWxsWWVhcigpLCAwLCAxKTtcclxuICAgICAgbGV0IGxhc3REYXkgPSBYQWRkRGF5cyhYQWRkWWVhcnMoZmlyc3REYXksIDEpLCAtMSk7XHJcbiAgICAgIHRoaXMubm9kZUVtaXQoW2ZpcnN0RGF5LCBsYXN0RGF5XSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblByZXNldEZ1bmMoaXRlbTogWERhdGVSYW5nZVByZXNldCkge1xyXG4gICAgbGV0IHZhbHVlID0gaXRlbS5mdW5jKCk7XHJcbiAgICBpZiAoWElzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDEpIHtcclxuICAgICAgaWYgKFhJc051bWJlcih2YWx1ZVswXSkgfHwgWElzU3RyaW5nKHZhbHVlWzBdKSkge1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh4KSA9PiBuZXcgRGF0ZSh4KSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ub2RlRW1pdCh2YWx1ZSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsIHt7IHR5cGUgfX1cIj5cclxuICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1ib2R5XCIgW25nU3dpdGNoXT1cInR5cGVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICA8eC1waWNrZXItZGF0ZVxyXG4gICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgIFtuZXh0TW9udGhCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgICA8eC1waWNrZXItZGF0ZVxyXG4gICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICBbKGRpc3BsYXkpXT1cImVuZERpc3BsYXlcIlxyXG4gICAgICAgIFttb2RlbF09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInd2VlaydcIj5cclxuICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgIHR5cGUgPSAnd2VlaydcclxuICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgW21vZGVsXT1cInN0YXJ0TW9kZWxcIlxyXG4gICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgW25leHRNb250aEJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgID48L3gtcGlja2VyLWRhdGU+XHJcbiAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgI2VuZFBpY2tlclxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgIHR5cGUgPSAnd2VlaydcclxuICAgICAgICBbKGRpc3BsYXkpXT1cImVuZERpc3BsYXlcIlxyXG4gICAgICAgIFttb2RlbF09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbW9udGgnXCI+XHJcbiAgICAgIDx4LXBpY2tlci1tb250aFxyXG4gICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICA+PC94LXBpY2tlci1tb250aD5cclxuICAgICAgPHgtcGlja2VyLW1vbnRoXHJcbiAgICAgICAgI2VuZFBpY2tlclxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgW21vZGVsXT1cImVuZE1vZGVsXCJcclxuICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICBbbGFzdFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgID48L3gtcGlja2VyLW1vbnRoPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncXVhcnRlcidcIj5cclxuICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICBbbW9kZWxdPVwic3RhcnRNb2RlbFwiXHJcbiAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgW25leHRZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgKHJhbmdlRGF0ZUNsaWNrKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgPjwveC1waWNrZXItcXVhcnRlcj5cclxuICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWVuZFwiXHJcbiAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICBbbW9kZWxdPVwiZW5kTW9kZWxcIlxyXG4gICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgKHJhbmdlRGF0ZUNsaWNrKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgPjwveC1waWNrZXItcXVhcnRlcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3llYXInXCI+XHJcbiAgICAgIDx4LXBpY2tlci15ZWFyXHJcbiAgICAgICAgI3N0YXJ0UGlja2VyXHJcbiAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgW21vZGVsXT1cInN0YXJ0TW9kZWxcIlxyXG4gICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgID48L3gtcGlja2VyLXllYXI+XHJcbiAgICAgIDx4LXBpY2tlci15ZWFyXHJcbiAgICAgICAgI2VuZFBpY2tlclxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgW21vZGVsXT1cImVuZE1vZGVsXCJcclxuICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICBbbGFzdFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgID48L3gtcGlja2VyLXllYXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlLXRpbWUnXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlVGltZUhvdXJNaW51dGVUcGw7IGNvbnRleHQ6IHsgdGltZUZvcm1hdDogJ0hIOm1tOnNzJywgdGltZVR5cGU6ICd0aW1lJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlLWhvdXInXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlVGltZUhvdXJNaW51dGVUcGw7IGNvbnRleHQ6IHsgdGltZUZvcm1hdDogJ0hIJywgdGltZVR5cGU6ICdob3VyJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlLW1pbnV0ZSdcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGVUaW1lSG91ck1pbnV0ZVRwbDsgY29udGV4dDogeyB0aW1lRm9ybWF0OiAnSEg6bW0nLCB0aW1lVHlwZTogJ21pbnV0ZScgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGF0ZVBpY2tlclwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImV4dHJhRm9vdGVyXCIgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWV4dHJhLWZvb3RlclwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiZXh0cmFGb290ZXJcIj57eyBleHRyYUZvb3RlciB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJlc2V0VHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNkYXRlVGltZUhvdXJNaW51dGVUcGwgbGV0LXRpbWVGb3JtYXQ9XCJ0aW1lRm9ybWF0XCIgbGV0LXRpbWVUeXBlPVwidGltZVR5cGVcIj5cclxuICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1jb250ZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1kYXRlXCI+XHJcbiAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRdPVwiYWN0aXZlVHlwZSA9PT0gJ3N0YXJ0J1wiXHJcbiAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXT1cImFjdGl2ZVR5cGUgPT09ICdlbmQnXCJcclxuICAgICAgICBbKGRpc3BsYXkpXT1cInRpbWVEaXNwbGF5XCJcclxuICAgICAgICBbKG1vZGVsKV09XCJ0aW1lTW9kZWxcIlxyXG4gICAgICAgIFtyYW5nZUhvdmVyXT1cInRpbWVIb3ZlclwiXHJcbiAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgID48L3gtcGlja2VyLWRhdGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXRpbWVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtdGltZS1sYWJlbFwiPlxyXG4gICAgICAgIHt7IHRpbWUgfCBkYXRlIDogdGltZUZvcm1hdCB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHgtdGltZS1waWNrZXItZnJhbWVcclxuICAgICAgICAjdGltZVBpY2tlckZyYW1lXHJcbiAgICAgICAgW3R5cGVdPVwidGltZVR5cGVcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJ0aW1lXCJcclxuICAgICAgICAobm9kZUVtaXQpPVwic2VsZWN0VGltZSgkZXZlbnQpXCJcclxuICAgICAgICBbZGlzYWJsZWRUaW1lUGFyYW1dPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkVGltZV09XCJkaXNhYmxlZFRpbWVcIlxyXG4gICAgICAgIFtkZWZhdWx0Tm93XT1cImZhbHNlXCJcclxuICAgICAgPjwveC10aW1lLXBpY2tlci1mcmFtZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNEYXRlUGlja2VyXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZXh0cmFGb290ZXJcIiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZXh0cmEtZm9vdGVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJleHRyYUZvb3RlclwiPnt7IGV4dHJhRm9vdGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1mb290ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWZvb3Rlci1sZWZ0XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNEYXRlUGlja2VyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXNldFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHgtYnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIiFzdXJlRGlzYWJsZWQgJiYgc3VyZVRpbWUoKVwiIHNpemU9XCJzbWFsbFwiIFtkaXNhYmxlZF09XCJzdXJlRGlzYWJsZWRcIj57eyBsb2NhbGUuc3VyZSB9fTwveC1idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3ByZXNldFRwbD5cclxuICA8ZGl2ICpuZ0lmPVwicHJlc2V0XCIgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXByZXNldFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcmVzZXRcIj5cclxuICAgICAgPHgtbGluayAqbmdJZj1cIml0ZW0uaWQgPT09ICd0aGlzV2VlaydcIiAoY2xpY2spPVwib25QcmVzZXQoJ3dlZWsnLCAwKVwiPnt7IGxvY2FsZS50aGlzV2VlayB9fTwveC1saW5rPlxyXG4gICAgICA8eC1saW5rICpuZ0lmPVwiaXRlbS5pZCA9PT0gJ2xhc3RXZWVrJ1wiIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIC0xKVwiPnt7IGxvY2FsZS5sYXN0V2VlayB9fTwveC1saW5rPlxyXG4gICAgICA8eC1saW5rICpuZ0lmPVwiaXRlbS5pZCA9PT0gJ25leHRXZWVrJ1wiIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIDEpXCI+e3sgbG9jYWxlLm5leHRXZWVrIH19PC94LWxpbms+XHJcbiAgICAgIDx4LWxpbmsgKm5nSWY9XCJpdGVtLmlkID09PSAndGhpc01vbnRoJ1wiIChjbGljayk9XCJvblByZXNldCgnbW9udGgnLCAwKVwiPnt7IGxvY2FsZS50aGlzTW9udGggfX08L3gtbGluaz5cclxuICAgICAgPHgtbGluayAqbmdJZj1cIml0ZW0uaWQgPT09ICdsYXN0TW9udGgnXCIgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIC0xKVwiPnt7IGxvY2FsZS5sYXN0TW9udGggfX08L3gtbGluaz5cclxuICAgICAgPHgtbGluayAqbmdJZj1cIml0ZW0uaWQgPT09ICduZXh0TW9udGgnXCIgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIDEpXCI+e3sgbG9jYWxlLm5leHRNb250aCB9fTwveC1saW5rPlxyXG4gICAgICA8eC1saW5rICpuZ0lmPVwiaXRlbS5pZCA9PT0gJ3RoaXNZZWFyJ1wiIChjbGljayk9XCJvblByZXNldCgneWVhcicsIDApXCI+e3sgbG9jYWxlLnRoaXNZZWFyIH19PC94LWxpbms+XHJcbiAgICAgIDx4LWxpbmsgKm5nSWY9XCJpdGVtLmlkID09PSAnbGFzdFllYXInXCIgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgLTEpXCI+e3sgbG9jYWxlLmxhc3RZZWFyIH19PC94LWxpbms+XHJcbiAgICAgIDx4LWxpbmsgKm5nSWY9XCJpdGVtLmlkID09PSAnbmV4dFllYXInXCIgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgMSlcIj57eyBsb2NhbGUubmV4dFllYXIgfX08L3gtbGluaz5cclxuICAgICAgPHgtbGluayAqbmdJZj1cIml0ZW0uZnVuY1wiIChjbGljayk9XCJvblByZXNldEZ1bmMoaXRlbSlcIj57eyBpdGVtLmxhYmVsIH19PC94LWxpbms+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19