@ng-nest/ui 16.0.9 → 16.0.11

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 (510) hide show
  1. package/drag/drag.directive.d.ts +14 -0
  2. package/drag/drag.module.d.ts +8 -0
  3. package/drag/drag.property.d.ts +26 -0
  4. package/drag/index.d.ts +5 -0
  5. package/drag/public-api.d.ts +3 -0
  6. package/esm2022/affix/affix.component.mjs +4 -4
  7. package/esm2022/affix/affix.module.mjs +5 -5
  8. package/esm2022/affix/affix.property.mjs +4 -4
  9. package/esm2022/alert/alert.component.mjs +4 -4
  10. package/esm2022/alert/alert.module.mjs +5 -5
  11. package/esm2022/alert/alert.property.mjs +4 -4
  12. package/esm2022/anchor/anchor-inner.component.mjs +4 -4
  13. package/esm2022/anchor/anchor.component.mjs +4 -4
  14. package/esm2022/anchor/anchor.module.mjs +5 -5
  15. package/esm2022/anchor/anchor.property.mjs +7 -7
  16. package/esm2022/api/api.component.mjs +4 -4
  17. package/esm2022/api/api.module.mjs +5 -5
  18. package/esm2022/auto-complete/auto-complete-portal.component.mjs +5 -5
  19. package/esm2022/auto-complete/auto-complete.component.mjs +5 -5
  20. package/esm2022/auto-complete/auto-complete.module.mjs +5 -5
  21. package/esm2022/auto-complete/auto-complete.property.mjs +4 -4
  22. package/esm2022/avatar/avatar-group.component.mjs +4 -4
  23. package/esm2022/avatar/avatar.component.mjs +4 -4
  24. package/esm2022/avatar/avatar.module.mjs +5 -5
  25. package/esm2022/avatar/avatar.property.mjs +7 -7
  26. package/esm2022/back-top/back-top.component.mjs +4 -4
  27. package/esm2022/back-top/back-top.module.mjs +5 -5
  28. package/esm2022/back-top/back-top.property.mjs +4 -4
  29. package/esm2022/badge/badge.component.mjs +4 -4
  30. package/esm2022/badge/badge.module.mjs +5 -5
  31. package/esm2022/badge/badge.property.mjs +4 -4
  32. package/esm2022/base-form/base-form.component.mjs +4 -4
  33. package/esm2022/base-form/base-form.module.mjs +5 -5
  34. package/esm2022/base-form/base-form.property.mjs +4 -4
  35. package/esm2022/border/border.component.mjs +4 -4
  36. package/esm2022/border/border.module.mjs +5 -5
  37. package/esm2022/button/button.component.mjs +4 -4
  38. package/esm2022/button/button.module.mjs +5 -5
  39. package/esm2022/button/button.property.mjs +7 -7
  40. package/esm2022/button/buttons.component.mjs +4 -4
  41. package/esm2022/calendar/calendar.component.mjs +4 -4
  42. package/esm2022/calendar/calendar.module.mjs +5 -5
  43. package/esm2022/calendar/calendar.property.mjs +4 -4
  44. package/esm2022/card/card.component.mjs +4 -4
  45. package/esm2022/card/card.module.mjs +5 -5
  46. package/esm2022/card/card.property.mjs +4 -4
  47. package/esm2022/carousel/carousel-panel.component.mjs +4 -4
  48. package/esm2022/carousel/carousel.component.mjs +4 -4
  49. package/esm2022/carousel/carousel.module.mjs +5 -5
  50. package/esm2022/carousel/carousel.property.mjs +7 -7
  51. package/esm2022/cascade/cascade-portal.component.mjs +4 -4
  52. package/esm2022/cascade/cascade.component.mjs +4 -4
  53. package/esm2022/cascade/cascade.module.mjs +5 -5
  54. package/esm2022/cascade/cascade.property.mjs +4 -4
  55. package/esm2022/checkbox/checkbox.component.mjs +4 -4
  56. package/esm2022/checkbox/checkbox.module.mjs +5 -5
  57. package/esm2022/checkbox/checkbox.property.mjs +4 -4
  58. package/esm2022/collapse/collapse-panel.component.mjs +4 -4
  59. package/esm2022/collapse/collapse.component.mjs +4 -4
  60. package/esm2022/collapse/collapse.module.mjs +5 -5
  61. package/esm2022/collapse/collapse.property.mjs +7 -7
  62. package/esm2022/color/color.component.mjs +4 -4
  63. package/esm2022/color/color.module.mjs +5 -5
  64. package/esm2022/color/color.property.mjs +4 -4
  65. package/esm2022/color-picker/color-picker-portal.component.mjs +4 -4
  66. package/esm2022/color-picker/color-picker.component.mjs +4 -4
  67. package/esm2022/color-picker/color-picker.module.mjs +5 -5
  68. package/esm2022/color-picker/color-picker.property.mjs +4 -4
  69. package/esm2022/comment/comment-reply.component.mjs +4 -4
  70. package/esm2022/comment/comment.component.mjs +4 -4
  71. package/esm2022/comment/comment.module.mjs +5 -5
  72. package/esm2022/comment/comment.property.mjs +7 -7
  73. package/esm2022/container/aside.component.mjs +4 -4
  74. package/esm2022/container/container.component.mjs +4 -4
  75. package/esm2022/container/container.module.mjs +5 -5
  76. package/esm2022/container/container.property.mjs +13 -13
  77. package/esm2022/container/footer.component.mjs +4 -4
  78. package/esm2022/container/header.component.mjs +4 -4
  79. package/esm2022/container/main.component.mjs +4 -4
  80. package/esm2022/core/config/config.service.mjs +4 -4
  81. package/esm2022/core/services/http.service.mjs +4 -4
  82. package/esm2022/core/services/preloading-strategy.service.mjs +4 -4
  83. package/esm2022/core/services/storage.service.mjs +4 -4
  84. package/esm2022/core/theme/theme.service.mjs +4 -4
  85. package/esm2022/crumb/crumb.component.mjs +4 -4
  86. package/esm2022/crumb/crumb.module.mjs +5 -5
  87. package/esm2022/crumb/crumb.property.mjs +4 -4
  88. package/esm2022/date-picker/date-picker-portal.component.mjs +4 -4
  89. package/esm2022/date-picker/date-picker.component.mjs +4 -4
  90. package/esm2022/date-picker/date-picker.module.mjs +5 -5
  91. package/esm2022/date-picker/date-picker.property.mjs +19 -19
  92. package/esm2022/date-picker/date-quarter.pipe.mjs +4 -4
  93. package/esm2022/date-picker/date-range-portal.component.mjs +4 -4
  94. package/esm2022/date-picker/date-range.component.mjs +4 -4
  95. package/esm2022/date-picker/picker-date.component.mjs +4 -4
  96. package/esm2022/date-picker/picker-month.component.mjs +4 -4
  97. package/esm2022/date-picker/picker-quarter.component.mjs +4 -4
  98. package/esm2022/date-picker/picker-year.component.mjs +4 -4
  99. package/esm2022/description/description-item.component.mjs +4 -4
  100. package/esm2022/description/description.component.mjs +4 -4
  101. package/esm2022/description/description.module.mjs +5 -5
  102. package/esm2022/description/description.property.mjs +7 -7
  103. package/esm2022/dialog/dialog-container.component.mjs +4 -4
  104. package/esm2022/dialog/dialog-portal.component.mjs +4 -4
  105. package/esm2022/dialog/dialog-portal.directives.mjs +19 -19
  106. package/esm2022/dialog/dialog.component.mjs +4 -4
  107. package/esm2022/dialog/dialog.module.mjs +5 -5
  108. package/esm2022/dialog/dialog.property.mjs +7 -7
  109. package/esm2022/dialog/dialog.service.mjs +4 -4
  110. package/esm2022/doc/doc.component.mjs +5 -5
  111. package/esm2022/doc/doc.module.mjs +5 -5
  112. package/esm2022/drag/drag.directive.mjs +71 -0
  113. package/esm2022/drag/drag.module.mjs +19 -0
  114. package/esm2022/drag/drag.property.mjs +32 -0
  115. package/esm2022/drag/ng-nest-ui-drag.mjs +5 -0
  116. package/esm2022/drag/public-api.mjs +4 -0
  117. package/esm2022/drawer/drawer-container.component.mjs +4 -4
  118. package/esm2022/drawer/drawer-portal.component.mjs +4 -4
  119. package/esm2022/drawer/drawer-portal.directives.mjs +10 -10
  120. package/esm2022/drawer/drawer.component.mjs +4 -4
  121. package/esm2022/drawer/drawer.module.mjs +5 -5
  122. package/esm2022/drawer/drawer.property.mjs +7 -7
  123. package/esm2022/drawer/drawer.service.mjs +4 -4
  124. package/esm2022/dropdown/dropdown-portal.component.mjs +4 -4
  125. package/esm2022/dropdown/dropdown.component.mjs +4 -4
  126. package/esm2022/dropdown/dropdown.module.mjs +5 -5
  127. package/esm2022/dropdown/dropdown.property.mjs +4 -4
  128. package/esm2022/empty/empty.component.mjs +4 -4
  129. package/esm2022/empty/empty.module.mjs +5 -5
  130. package/esm2022/empty/empty.property.mjs +4 -4
  131. package/esm2022/examples/examples.component.mjs +4 -4
  132. package/esm2022/examples/examples.module.mjs +5 -5
  133. package/esm2022/find/find.component.mjs +4 -4
  134. package/esm2022/find/find.module.mjs +5 -5
  135. package/esm2022/find/find.property.mjs +4 -4
  136. package/esm2022/form/control.component.mjs +4 -4
  137. package/esm2022/form/form.component.mjs +4 -4
  138. package/esm2022/form/form.module.mjs +5 -5
  139. package/esm2022/form/form.property.mjs +7 -7
  140. package/esm2022/highlight/highlight.component.mjs +4 -4
  141. package/esm2022/highlight/highlight.module.mjs +5 -5
  142. package/esm2022/highlight/highlight.property.mjs +4 -4
  143. package/esm2022/i18n/i18n.directive.mjs +4 -4
  144. package/esm2022/i18n/i18n.module.mjs +5 -5
  145. package/esm2022/i18n/i18n.pipe.mjs +4 -4
  146. package/esm2022/i18n/i18n.service.mjs +4 -4
  147. package/esm2022/icon/icon.component.mjs +4 -4
  148. package/esm2022/icon/icon.module.mjs +5 -5
  149. package/esm2022/icon/icon.property.mjs +4 -4
  150. package/esm2022/icon/icon.service.mjs +4 -4
  151. package/esm2022/image/image-group.component.mjs +4 -4
  152. package/esm2022/image/image-preview.component.mjs +4 -4
  153. package/esm2022/image/image.component.mjs +4 -4
  154. package/esm2022/image/image.module.mjs +5 -5
  155. package/esm2022/image/image.property.mjs +7 -7
  156. package/esm2022/index.mjs +2 -1
  157. package/esm2022/inner/inner.component.mjs +4 -4
  158. package/esm2022/inner/inner.module.mjs +5 -5
  159. package/esm2022/inner/inner.property.mjs +4 -4
  160. package/esm2022/input/input-group.component.mjs +4 -4
  161. package/esm2022/input/input.component.mjs +5 -5
  162. package/esm2022/input/input.module.mjs +5 -5
  163. package/esm2022/input/input.property.mjs +17 -7
  164. package/esm2022/input-number/input-number.component.mjs +42 -17
  165. package/esm2022/input-number/input-number.module.mjs +5 -5
  166. package/esm2022/input-number/input-number.property.mjs +4 -4
  167. package/esm2022/keyword/keyword.directive.mjs +4 -4
  168. package/esm2022/keyword/keyword.module.mjs +5 -5
  169. package/esm2022/keyword/keyword.property.mjs +4 -4
  170. package/esm2022/layout/col.component.mjs +4 -4
  171. package/esm2022/layout/layout.module.mjs +5 -5
  172. package/esm2022/layout/layout.property.mjs +7 -7
  173. package/esm2022/layout/row.component.mjs +4 -4
  174. package/esm2022/link/link.component.mjs +4 -4
  175. package/esm2022/link/link.module.mjs +5 -5
  176. package/esm2022/link/link.property.mjs +4 -4
  177. package/esm2022/list/list-drop-group.directive.mjs +4 -4
  178. package/esm2022/list/list-option.component.mjs +4 -4
  179. package/esm2022/list/list.component.mjs +4 -4
  180. package/esm2022/list/list.module.mjs +5 -5
  181. package/esm2022/list/list.property.mjs +7 -7
  182. package/esm2022/loading/loading.component.mjs +4 -4
  183. package/esm2022/loading/loading.module.mjs +5 -5
  184. package/esm2022/loading/loading.property.mjs +4 -4
  185. package/esm2022/menu/menu-node.component.mjs +4 -4
  186. package/esm2022/menu/menu.component.mjs +4 -4
  187. package/esm2022/menu/menu.module.mjs +5 -5
  188. package/esm2022/menu/menu.property.mjs +7 -7
  189. package/esm2022/message/message.component.mjs +4 -4
  190. package/esm2022/message/message.module.mjs +5 -5
  191. package/esm2022/message/message.service.mjs +4 -4
  192. package/esm2022/message-box/message-box.component.mjs +4 -4
  193. package/esm2022/message-box/message-box.module.mjs +5 -5
  194. package/esm2022/message-box/message-box.service.mjs +4 -4
  195. package/esm2022/notification/notification.component.mjs +4 -4
  196. package/esm2022/notification/notification.module.mjs +5 -5
  197. package/esm2022/notification/notification.service.mjs +4 -4
  198. package/esm2022/outlet/outlet.directive.mjs +4 -4
  199. package/esm2022/outlet/outlet.module.mjs +5 -5
  200. package/esm2022/page-header/page-header.component.mjs +4 -4
  201. package/esm2022/page-header/page-header.module.mjs +5 -5
  202. package/esm2022/page-header/page-header.property.mjs +4 -4
  203. package/esm2022/pagination/pagination.component.mjs +4 -4
  204. package/esm2022/pagination/pagination.module.mjs +5 -5
  205. package/esm2022/pagination/pagination.property.mjs +4 -4
  206. package/esm2022/pattern/pattern.component.mjs +4 -4
  207. package/esm2022/pattern/pattern.module.mjs +5 -5
  208. package/esm2022/popconfirm/popconfirm.component.mjs +4 -4
  209. package/esm2022/popconfirm/popconfirm.module.mjs +5 -5
  210. package/esm2022/popconfirm/popconfirm.property.mjs +4 -4
  211. package/esm2022/popover/popover-portal.component.mjs +4 -4
  212. package/esm2022/popover/popover.directive.mjs +4 -4
  213. package/esm2022/popover/popover.module.mjs +5 -5
  214. package/esm2022/popover/popover.property.mjs +4 -4
  215. package/esm2022/portal/portal.module.mjs +5 -5
  216. package/esm2022/portal/portal.service.mjs +4 -4
  217. package/esm2022/progress/progress.component.mjs +4 -4
  218. package/esm2022/progress/progress.module.mjs +5 -5
  219. package/esm2022/progress/progress.property.mjs +4 -4
  220. package/esm2022/radio/radio.component.mjs +4 -4
  221. package/esm2022/radio/radio.module.mjs +5 -5
  222. package/esm2022/radio/radio.property.mjs +4 -4
  223. package/esm2022/rate/rate.component.mjs +4 -4
  224. package/esm2022/rate/rate.module.mjs +5 -5
  225. package/esm2022/rate/rate.property.mjs +4 -4
  226. package/esm2022/resizable/resizable.directive.mjs +4 -4
  227. package/esm2022/resizable/resizable.module.mjs +5 -5
  228. package/esm2022/resizable/resizable.property.mjs +4 -4
  229. package/esm2022/result/result.component.mjs +4 -4
  230. package/esm2022/result/result.module.mjs +5 -5
  231. package/esm2022/result/result.property.mjs +4 -4
  232. package/esm2022/ripple/ripple.directive.mjs +4 -4
  233. package/esm2022/ripple/ripple.module.mjs +5 -5
  234. package/esm2022/ripple/ripple.property.mjs +4 -4
  235. package/esm2022/select/select-portal.component.mjs +5 -5
  236. package/esm2022/select/select.component.mjs +5 -6
  237. package/esm2022/select/select.module.mjs +5 -5
  238. package/esm2022/select/select.property.mjs +4 -4
  239. package/esm2022/skeleton/skeleton.component.mjs +4 -4
  240. package/esm2022/skeleton/skeleton.module.mjs +5 -5
  241. package/esm2022/skeleton/skeleton.property.mjs +4 -4
  242. package/esm2022/slider/slider.component.mjs +4 -4
  243. package/esm2022/slider/slider.module.mjs +5 -5
  244. package/esm2022/slider/slider.property.mjs +4 -4
  245. package/esm2022/slider-select/slider-select.component.mjs +249 -50
  246. package/esm2022/slider-select/slider-select.module.mjs +31 -6
  247. package/esm2022/slider-select/slider-select.property.mjs +25 -4
  248. package/esm2022/statistic/countdown.component.mjs +4 -4
  249. package/esm2022/statistic/statistic.component.mjs +4 -4
  250. package/esm2022/statistic/statistic.module.mjs +5 -5
  251. package/esm2022/statistic/statistic.property.mjs +7 -7
  252. package/esm2022/steps/steps.component.mjs +4 -4
  253. package/esm2022/steps/steps.module.mjs +5 -5
  254. package/esm2022/steps/steps.property.mjs +4 -4
  255. package/esm2022/switch/switch.component.mjs +4 -4
  256. package/esm2022/switch/switch.module.mjs +5 -5
  257. package/esm2022/switch/switch.property.mjs +4 -4
  258. package/esm2022/table/public-api.mjs +1 -2
  259. package/esm2022/table/table-body.component.mjs +4 -4
  260. package/esm2022/table/table-foot.component.mjs +4 -4
  261. package/esm2022/table/table-head.component.mjs +6 -6
  262. package/esm2022/table/table.component.mjs +4 -4
  263. package/esm2022/table/table.module.mjs +12 -11
  264. package/esm2022/table/table.property.mjs +13 -13
  265. package/esm2022/tabs/tab-content.component.mjs +4 -4
  266. package/esm2022/tabs/tab-link.directive.mjs +7 -7
  267. package/esm2022/tabs/tab.component.mjs +4 -4
  268. package/esm2022/tabs/tabs.component.mjs +4 -4
  269. package/esm2022/tabs/tabs.module.mjs +5 -5
  270. package/esm2022/tabs/tabs.property.mjs +7 -7
  271. package/esm2022/tag/tag.component.mjs +4 -4
  272. package/esm2022/tag/tag.module.mjs +5 -5
  273. package/esm2022/tag/tag.property.mjs +4 -4
  274. package/esm2022/text-retract/text-retract.component.mjs +4 -4
  275. package/esm2022/text-retract/text-retract.module.mjs +5 -5
  276. package/esm2022/text-retract/text-retract.property.mjs +4 -4
  277. package/esm2022/textarea/textarea.component.mjs +4 -4
  278. package/esm2022/textarea/textarea.module.mjs +5 -5
  279. package/esm2022/textarea/textarea.property.mjs +4 -4
  280. package/esm2022/theme/theme.component.mjs +4 -4
  281. package/esm2022/theme/theme.module.mjs +5 -5
  282. package/esm2022/theme/theme.property.mjs +4 -4
  283. package/esm2022/time-ago/time-ago.module.mjs +5 -5
  284. package/esm2022/time-ago/time-ago.pipe.mjs +4 -4
  285. package/esm2022/time-picker/time-picker-frame.component.mjs +4 -4
  286. package/esm2022/time-picker/time-picker-portal.component.mjs +4 -4
  287. package/esm2022/time-picker/time-picker.component.mjs +4 -4
  288. package/esm2022/time-picker/time-picker.module.mjs +5 -5
  289. package/esm2022/time-picker/time-picker.property.mjs +4 -4
  290. package/esm2022/time-range/time-range.module.mjs +5 -5
  291. package/esm2022/time-range/time-range.pipe.mjs +4 -4
  292. package/esm2022/timeline/timeline.component.mjs +5 -5
  293. package/esm2022/timeline/timeline.module.mjs +5 -5
  294. package/esm2022/timeline/timeline.property.mjs +4 -4
  295. package/esm2022/tooltip/tooltip-portal.component.mjs +6 -5
  296. package/esm2022/tooltip/tooltip.directive.mjs +8 -6
  297. package/esm2022/tooltip/tooltip.module.mjs +7 -6
  298. package/esm2022/tooltip/tooltip.property.mjs +4 -4
  299. package/esm2022/transfer/transfer.component.mjs +4 -4
  300. package/esm2022/transfer/transfer.module.mjs +5 -5
  301. package/esm2022/transfer/transfer.property.mjs +4 -4
  302. package/esm2022/tree/tree-node.component.mjs +4 -4
  303. package/esm2022/tree/tree.component.mjs +6 -4
  304. package/esm2022/tree/tree.module.mjs +5 -5
  305. package/esm2022/tree/tree.property.mjs +7 -7
  306. package/esm2022/tree/tree.service.mjs +4 -4
  307. package/esm2022/tree-file/tree-file.component.mjs +4 -4
  308. package/esm2022/tree-file/tree-file.module.mjs +5 -5
  309. package/esm2022/tree-file/tree-file.property.mjs +4 -4
  310. package/esm2022/tree-select/tree-select-portal.component.mjs +5 -5
  311. package/esm2022/tree-select/tree-select.component.mjs +5 -5
  312. package/esm2022/tree-select/tree-select.module.mjs +5 -5
  313. package/esm2022/tree-select/tree-select.property.mjs +4 -4
  314. package/esm2022/typography/typography.component.mjs +4 -4
  315. package/esm2022/typography/typography.module.mjs +5 -5
  316. package/esm2022/typography/typography.property.mjs +4 -4
  317. package/esm2022/upload/upload-portal.component.mjs +4 -4
  318. package/esm2022/upload/upload.component.mjs +4 -4
  319. package/esm2022/upload/upload.module.mjs +5 -5
  320. package/esm2022/upload/upload.property.mjs +4 -4
  321. package/fesm2022/ng-nest-ui-affix.mjs +10 -10
  322. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  323. package/fesm2022/ng-nest-ui-alert.mjs +10 -10
  324. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  325. package/fesm2022/ng-nest-ui-anchor.mjs +16 -16
  326. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  327. package/fesm2022/ng-nest-ui-api.mjs +7 -7
  328. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  329. package/fesm2022/ng-nest-ui-auto-complete.mjs +15 -15
  330. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  331. package/fesm2022/ng-nest-ui-avatar.mjs +16 -16
  332. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  333. package/fesm2022/ng-nest-ui-back-top.mjs +10 -10
  334. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  335. package/fesm2022/ng-nest-ui-badge.mjs +10 -10
  336. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  337. package/fesm2022/ng-nest-ui-base-form.mjs +10 -10
  338. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  339. package/fesm2022/ng-nest-ui-border.mjs +7 -7
  340. package/fesm2022/ng-nest-ui-border.mjs.map +1 -1
  341. package/fesm2022/ng-nest-ui-button.mjs +16 -16
  342. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  343. package/fesm2022/ng-nest-ui-calendar.mjs +10 -10
  344. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  345. package/fesm2022/ng-nest-ui-card.mjs +10 -10
  346. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  347. package/fesm2022/ng-nest-ui-carousel.mjs +16 -16
  348. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  349. package/fesm2022/ng-nest-ui-cascade.mjs +13 -13
  350. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  351. package/fesm2022/ng-nest-ui-checkbox.mjs +10 -10
  352. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  353. package/fesm2022/ng-nest-ui-collapse.mjs +16 -16
  354. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  355. package/fesm2022/ng-nest-ui-color-picker.mjs +13 -13
  356. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  357. package/fesm2022/ng-nest-ui-color.mjs +10 -10
  358. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  359. package/fesm2022/ng-nest-ui-comment.mjs +16 -16
  360. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  361. package/fesm2022/ng-nest-ui-container.mjs +31 -31
  362. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  363. package/fesm2022/ng-nest-ui-core.mjs +15 -15
  364. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  365. package/fesm2022/ng-nest-ui-crumb.mjs +10 -10
  366. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  367. package/fesm2022/ng-nest-ui-date-picker.mjs +49 -49
  368. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  369. package/fesm2022/ng-nest-ui-description.mjs +16 -16
  370. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  371. package/fesm2022/ng-nest-ui-dialog.mjs +40 -40
  372. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  373. package/fesm2022/ng-nest-ui-doc.mjs +8 -8
  374. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  375. package/fesm2022/ng-nest-ui-drag.mjs +119 -0
  376. package/fesm2022/ng-nest-ui-drag.mjs.map +1 -0
  377. package/fesm2022/ng-nest-ui-drawer.mjs +31 -31
  378. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  379. package/fesm2022/ng-nest-ui-dropdown.mjs +13 -13
  380. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  381. package/fesm2022/ng-nest-ui-empty.mjs +10 -10
  382. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  383. package/fesm2022/ng-nest-ui-examples.mjs +7 -7
  384. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  385. package/fesm2022/ng-nest-ui-find.mjs +10 -10
  386. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  387. package/fesm2022/ng-nest-ui-form.mjs +16 -16
  388. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  389. package/fesm2022/ng-nest-ui-highlight.mjs +10 -10
  390. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  391. package/fesm2022/ng-nest-ui-i18n.mjs +13 -13
  392. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  393. package/fesm2022/ng-nest-ui-icon.mjs +13 -13
  394. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  395. package/fesm2022/ng-nest-ui-image.mjs +19 -19
  396. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  397. package/fesm2022/ng-nest-ui-inner.mjs +10 -10
  398. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  399. package/fesm2022/ng-nest-ui-input-number.mjs +49 -25
  400. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  401. package/fesm2022/ng-nest-ui-input.mjs +27 -17
  402. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  403. package/fesm2022/ng-nest-ui-keyword.mjs +10 -10
  404. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  405. package/fesm2022/ng-nest-ui-layout.mjs +16 -16
  406. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  407. package/fesm2022/ng-nest-ui-link.mjs +10 -10
  408. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  409. package/fesm2022/ng-nest-ui-list.mjs +19 -19
  410. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  411. package/fesm2022/ng-nest-ui-loading.mjs +10 -10
  412. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  413. package/fesm2022/ng-nest-ui-menu.mjs +16 -16
  414. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  415. package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
  416. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  417. package/fesm2022/ng-nest-ui-message.mjs +10 -10
  418. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  419. package/fesm2022/ng-nest-ui-notification.mjs +10 -10
  420. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  421. package/fesm2022/ng-nest-ui-outlet.mjs +7 -7
  422. package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
  423. package/fesm2022/ng-nest-ui-page-header.mjs +10 -10
  424. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  425. package/fesm2022/ng-nest-ui-pagination.mjs +10 -10
  426. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  427. package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
  428. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  429. package/fesm2022/ng-nest-ui-popconfirm.mjs +10 -10
  430. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  431. package/fesm2022/ng-nest-ui-popover.mjs +13 -13
  432. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  433. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  434. package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
  435. package/fesm2022/ng-nest-ui-progress.mjs +10 -10
  436. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  437. package/fesm2022/ng-nest-ui-radio.mjs +10 -10
  438. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  439. package/fesm2022/ng-nest-ui-rate.mjs +10 -10
  440. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  441. package/fesm2022/ng-nest-ui-resizable.mjs +10 -10
  442. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  443. package/fesm2022/ng-nest-ui-result.mjs +10 -10
  444. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  445. package/fesm2022/ng-nest-ui-ripple.mjs +10 -10
  446. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  447. package/fesm2022/ng-nest-ui-select.mjs +15 -16
  448. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  449. package/fesm2022/ng-nest-ui-skeleton.mjs +10 -10
  450. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  451. package/fesm2022/ng-nest-ui-slider-select.mjs +303 -59
  452. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  453. package/fesm2022/ng-nest-ui-slider.mjs +10 -10
  454. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  455. package/fesm2022/ng-nest-ui-statistic.mjs +16 -16
  456. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  457. package/fesm2022/ng-nest-ui-steps.mjs +10 -10
  458. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  459. package/fesm2022/ng-nest-ui-switch.mjs +10 -10
  460. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  461. package/fesm2022/ng-nest-ui-table.mjs +40 -109
  462. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  463. package/fesm2022/ng-nest-ui-tabs.mjs +25 -25
  464. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  465. package/fesm2022/ng-nest-ui-tag.mjs +10 -10
  466. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  467. package/fesm2022/ng-nest-ui-text-retract.mjs +10 -10
  468. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  469. package/fesm2022/ng-nest-ui-textarea.mjs +10 -10
  470. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  471. package/fesm2022/ng-nest-ui-theme.mjs +10 -10
  472. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  473. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  474. package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
  475. package/fesm2022/ng-nest-ui-time-picker.mjs +16 -16
  476. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  477. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  478. package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
  479. package/fesm2022/ng-nest-ui-timeline.mjs +11 -11
  480. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  481. package/fesm2022/ng-nest-ui-tooltip.mjs +23 -19
  482. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  483. package/fesm2022/ng-nest-ui-transfer.mjs +10 -10
  484. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  485. package/fesm2022/ng-nest-ui-tree-file.mjs +10 -10
  486. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  487. package/fesm2022/ng-nest-ui-tree-select.mjs +15 -15
  488. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  489. package/fesm2022/ng-nest-ui-tree.mjs +21 -19
  490. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  491. package/fesm2022/ng-nest-ui-typography.mjs +10 -10
  492. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  493. package/fesm2022/ng-nest-ui-upload.mjs +13 -13
  494. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  495. package/fesm2022/ng-nest-ui.mjs +1 -0
  496. package/fesm2022/ng-nest-ui.mjs.map +1 -1
  497. package/index.d.ts +1 -0
  498. package/input/input.property.d.ts +11 -1
  499. package/input-number/input-number.component.d.ts +6 -1
  500. package/package.json +81 -75
  501. package/slider-select/slider-select.component.d.ts +33 -16
  502. package/slider-select/slider-select.module.d.ts +3 -1
  503. package/slider-select/slider-select.property.d.ts +56 -3
  504. package/table/public-api.d.ts +0 -1
  505. package/table/table.module.d.ts +18 -18
  506. package/tooltip/tooltip-portal.component.d.ts +2 -2
  507. package/tooltip/tooltip.module.d.ts +2 -1
  508. package/tooltip/tooltip.property.d.ts +2 -2
  509. package/esm2022/table/drag.directive.mjs +0 -78
  510. package/table/drag.directive.d.ts +0 -27
@@ -1,7 +1,8 @@
1
1
  import { XTooltipDirective } from '@ng-nest/ui/tooltip';
2
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild } from '@angular/core';
2
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, HostBinding, ViewChildren } from '@angular/core';
3
3
  import { XSliderSelectProperty, XSliderSelectPrefix } from './slider-select.property';
4
- import { XIsEmpty, XIsUndefined, XResize, XClearClass } from '@ng-nest/ui/core';
4
+ import { XIsEmpty, XIsUndefined, XResize, XClearClass, XIsNumber, XIsArray, XIsNull } from '@ng-nest/ui/core';
5
+ import { CdkDrag } from '@angular/cdk/drag-drop';
5
6
  import { Subject } from 'rxjs';
6
7
  import { debounceTime, takeUntil } from 'rxjs/operators';
7
8
  import { XValueAccessor } from '@ng-nest/ui/base-form';
@@ -10,14 +11,26 @@ import * as i1 from "@ng-nest/ui/core";
10
11
  import * as i2 from "@angular/common";
11
12
  import * as i3 from "@angular/cdk/drag-drop";
12
13
  import * as i4 from "@ng-nest/ui/tooltip";
14
+ import * as i5 from "@ng-nest/ui/outlet";
13
15
  class XSliderSelectComponent extends XSliderSelectProperty {
16
+ get getVertical() {
17
+ return this.vertical;
18
+ }
14
19
  get requiredIsEmpty() {
15
20
  return this.validator && this.required && (XIsEmpty(this.value) || this.value === 0);
16
21
  }
17
22
  writeValue(value) {
18
- if (value === null)
19
- value = 0;
23
+ if (XIsNull(value) || XIsUndefined(value)) {
24
+ if (this.range) {
25
+ value = [Number(this.min), Number(this.min)];
26
+ }
27
+ else {
28
+ value = Number(this.min);
29
+ }
30
+ }
20
31
  this.value = value;
32
+ this.isNumber = XIsNumber(this.value) && !XIsArray(this.value);
33
+ this.isArray = XIsArray(this.value);
21
34
  this.setLeft();
22
35
  this.setDisplayValue();
23
36
  }
@@ -27,16 +40,26 @@ class XSliderSelectComponent extends XSliderSelectProperty {
27
40
  this.elementRef = elementRef;
28
41
  this.cdr = cdr;
29
42
  this.configService = configService;
30
- this.offset = 0;
31
- this.visible = false;
32
- this.manual = false;
33
43
  this.value = 0;
34
- this.displayValue = '0';
44
+ this.startOffset = 0;
45
+ this.startVisible = false;
46
+ this.startManual = false;
47
+ this.startDisplayValue = '0';
48
+ this.showStartTooltip = true;
49
+ this.endOffset = 0;
50
+ this.endVisible = false;
51
+ this.endManual = false;
52
+ this.endDisplayValue = '0';
53
+ this.showEndTooltip = true;
54
+ this.markList = [];
35
55
  this._unSubject = new Subject();
56
+ this.isNumber = true;
57
+ this.isArray = false;
36
58
  }
37
59
  ngOnInit() {
38
60
  this.setFlex(this.sliderSelect.nativeElement, this.renderer, this.justify, this.align, this.direction);
39
61
  this.setPrecision();
62
+ this.setMarks();
40
63
  this.setClassMap();
41
64
  }
42
65
  ngAfterViewInit() {
@@ -48,6 +71,12 @@ class XSliderSelectComponent extends XSliderSelectProperty {
48
71
  this.setDisplayValue();
49
72
  this.cdr.detectChanges();
50
73
  });
74
+ if (this.tooltips.length > 0) {
75
+ this.tooltipStart = this.tooltips.first;
76
+ }
77
+ if (this.tooltips.length > 1) {
78
+ this.tooltipEnd = this.tooltips.last;
79
+ }
51
80
  }
52
81
  ngOnDestroy() {
53
82
  this._unSubject.next();
@@ -55,8 +84,22 @@ class XSliderSelectComponent extends XSliderSelectProperty {
55
84
  this._resizeObserver?.disconnect();
56
85
  }
57
86
  change() {
58
- const val = Number(((Number(this.max) - Number(this.min)) * Number(this.offset)) / 100 + Number(this.min)).toFixed(Number(this.precision));
59
- this.value = parseFloat(val);
87
+ const getVal = (offset) => {
88
+ return parseFloat(Number(((Number(this.max) - Number(this.min)) * Number(offset)) / 100 + Number(this.min)).toFixed(Number(this.precision)));
89
+ };
90
+ const startVal = getVal(this.startOffset);
91
+ if (this.isNumber) {
92
+ this.value = startVal;
93
+ }
94
+ else {
95
+ const endVal = getVal(this.endOffset);
96
+ if (endVal < startVal) {
97
+ this.value = [endVal, startVal];
98
+ }
99
+ else {
100
+ this.value = [startVal, endVal];
101
+ }
102
+ }
60
103
  this.setDisplayValue();
61
104
  if (this.onChange)
62
105
  this.onChange(this.value);
@@ -65,15 +108,47 @@ class XSliderSelectComponent extends XSliderSelectProperty {
65
108
  XClearClass(this.labelMap);
66
109
  this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;
67
110
  }
111
+ getOffset(val) {
112
+ return Math.abs(Math.round(((val + (this.reverse ? -Number(this.min) : Number(this.min))) * 100) /
113
+ (Number(this.max) - Number(this.min))));
114
+ }
68
115
  setLeft() {
69
- this.offset = Math.round(((this.value + (this.reverse ? Number(this.min) : -Number(this.min))) * 100) / (Number(this.max) - Number(this.min)));
70
- const start = this.offset;
116
+ let startVal = 0, endVal = 0;
117
+ if (this.isNumber) {
118
+ startVal = this.value;
119
+ }
120
+ else if (XIsArray(this.value) && this.value.length > 1) {
121
+ startVal = this.value[0];
122
+ endVal = this.value[1];
123
+ this.endOffset = this.getOffset(endVal);
124
+ const end = this.endOffset;
125
+ this.end = end;
126
+ }
127
+ this.startOffset = this.getOffset(startVal);
128
+ const start = this.startOffset;
71
129
  this.start = start;
72
130
  this.setDrag();
73
131
  this.cdr.detectChanges();
74
132
  }
75
133
  setDisplayValue() {
76
- this.displayValue = Number(this.value).toFixed(Number(this.precision));
134
+ const displayVal = (val) => {
135
+ return Number(val).toFixed(Number(this.precision));
136
+ };
137
+ if (this.isNumber) {
138
+ this.startDisplayValue = displayVal(this.value);
139
+ }
140
+ else {
141
+ if (XIsArray(this.value) && this.value.length > 1) {
142
+ if (this.startOffset > this.endOffset) {
143
+ this.startDisplayValue = displayVal(this.value[1]);
144
+ this.endDisplayValue = displayVal(this.value[0]);
145
+ }
146
+ else {
147
+ this.startDisplayValue = displayVal(this.value[0]);
148
+ this.endDisplayValue = displayVal(this.value[1]);
149
+ }
150
+ }
151
+ }
77
152
  this.cdr.detectChanges();
78
153
  }
79
154
  setPrecision() {
@@ -88,85 +163,209 @@ class XSliderSelectComponent extends XSliderSelectProperty {
88
163
  }
89
164
  }
90
165
  }
91
- onInnerClick(_$event) { }
92
- started(drag) {
93
- const start = this.offset;
94
- this.start = start;
95
- if (this.showTooltip) {
96
- this.manual = true;
97
- this.visible = true;
166
+ setMarks() {
167
+ if (!this.marks)
168
+ return;
169
+ for (let mark of this.marks) {
170
+ const mk = {
171
+ value: mark.value,
172
+ label: mark.label,
173
+ style: { ...mark.style }
174
+ };
175
+ mk.offset = this.getOffset(mark.value);
176
+ if (this.reverse) {
177
+ if (this.vertical) {
178
+ mk.style['top'] = `${mk.offset}%`;
179
+ }
180
+ else {
181
+ mk.style['right'] = `${mk.offset}%`;
182
+ }
183
+ }
184
+ else {
185
+ if (this.vertical) {
186
+ mk.style['bottom'] = `${mk.offset}%`;
187
+ }
188
+ else {
189
+ mk.style['left'] = `${mk.offset}%`;
190
+ }
191
+ }
192
+ this.markList.push(mk);
193
+ }
194
+ }
195
+ started(drag, type = 'start') {
196
+ if (['start', 'both'].includes(type)) {
197
+ const start = this.startOffset;
198
+ this.start = start;
199
+ if (this.showStartTooltip) {
200
+ this.startManual = true;
201
+ this.startVisible = true;
202
+ }
203
+ }
204
+ if (['end', 'both'].includes(type)) {
205
+ const end = this.endOffset;
206
+ this.end = end;
207
+ if (this.showEndTooltip) {
208
+ this.endManual = true;
209
+ this.endVisible = true;
210
+ }
98
211
  }
99
212
  this.cdr.detectChanges();
100
213
  this.formControlValidator();
101
214
  this.dragStartEmit.emit(drag);
102
215
  }
103
- moved(drag) {
216
+ moved(drag, type = 'start') {
104
217
  let transform = drag.source.getFreeDragPosition();
105
- this.setDrag(transform.x);
218
+ this.setDrag(this.vertical ? transform.y : transform.x, type);
106
219
  drag.source.reset();
107
- if (this.showTooltip) {
108
- this.tooltip.updatePortal();
220
+ if (['start', 'both'].includes(type) && this.showStartTooltip) {
221
+ this.tooltipStart.updatePortal();
222
+ }
223
+ if (['end', 'both'].includes(type) && this.showEndTooltip) {
224
+ this.tooltipEnd.updatePortal();
109
225
  }
110
226
  this.change();
111
227
  this.dragMoveEmit.emit(drag);
112
228
  }
113
- ended(drag) {
114
- if (this.showTooltip) {
115
- this.manual = false;
116
- this.visible = false;
229
+ ended(drag, type = 'start') {
230
+ if (['start', 'both'].includes(type)) {
231
+ if (this.showStartTooltip) {
232
+ this.startManual = false;
233
+ this.startVisible = false;
234
+ }
235
+ }
236
+ if (['end', 'both'].includes(type)) {
237
+ if (this.showEndTooltip) {
238
+ this.endManual = false;
239
+ this.endVisible = false;
240
+ }
117
241
  }
118
242
  this.cdr.detectChanges();
119
243
  this.dragEndEmit.emit(drag);
120
244
  }
121
- setDrag(distance = 0) {
245
+ setDrag(distance = 0, type = 'both') {
122
246
  if (typeof this.railRef.nativeElement.getBoundingClientRect !== 'function')
123
247
  return;
124
248
  let railBox = this.railRef.nativeElement.getBoundingClientRect();
125
- let stepWidth = railBox.width / ((Number(this.max) - Number(this.min)) / Number(this.step));
126
- let offset = Math.abs(distance % stepWidth);
127
- let dis = offset < stepWidth / 2
249
+ let railBoxLength = this.vertical ? railBox.height : railBox.width;
250
+ let stepLength = railBoxLength / ((Number(this.max) - Number(this.min)) / Number(this.step));
251
+ let offset = Math.abs(distance % stepLength);
252
+ let dis = offset < stepLength / 2
128
253
  ? distance > 0
129
254
  ? distance - offset
130
255
  : distance + offset
131
256
  : distance > 0
132
- ? distance + stepWidth - offset
133
- : distance - stepWidth + offset;
134
- let x = (this.start / 100) * railBox.width + (this.reverse ? -dis : dis);
135
- this.offset = Math.round((x / railBox.width) * 100);
136
- if (this.reverse) {
137
- this.renderer.setStyle(this.dragRef.nativeElement, 'right', `${this.offset}%`);
257
+ ? distance + stepLength - offset
258
+ : distance - stepLength + offset;
259
+ const setOffset = (d) => {
260
+ let x1 = (d / 100) * railBoxLength;
261
+ if (this.vertical) {
262
+ x1 += this.reverse ? dis : -dis;
263
+ }
264
+ else {
265
+ x1 += this.reverse ? -dis : dis;
266
+ }
267
+ return Math.round((x1 / railBoxLength) * 100);
268
+ };
269
+ if (type === 'both') {
270
+ this.startOffset = setOffset(this.start);
271
+ this.endOffset = setOffset(this.end);
272
+ }
273
+ else if (type === 'start') {
274
+ this.startOffset = setOffset(this.start);
275
+ }
276
+ else if (type === 'end') {
277
+ this.endOffset = setOffset(this.end);
278
+ }
279
+ this.setDragStyles();
280
+ }
281
+ setDragStyles() {
282
+ if (this.vertical) {
283
+ if (this.isArray) {
284
+ const wd = Math.abs(this.endOffset - this.startOffset);
285
+ const lt = this.endOffset > this.startOffset ? this.startOffset : this.endOffset;
286
+ if (this.reverse) {
287
+ this.renderer.setStyle(this.dragStartRef.nativeElement, 'top', `${this.startOffset}%`);
288
+ this.renderer.setStyle(this.dragEndRef.nativeElement, 'top', `${this.endOffset}%`);
289
+ this.renderer.setStyle(this.processRef.nativeElement, 'top', `${lt}%`);
290
+ }
291
+ else {
292
+ this.renderer.setStyle(this.dragStartRef.nativeElement, 'bottom', `${this.startOffset}%`);
293
+ this.renderer.setStyle(this.dragEndRef.nativeElement, 'bottom', `${this.endOffset}%`);
294
+ this.renderer.setStyle(this.processRef.nativeElement, 'bottom', `${lt}%`);
295
+ }
296
+ this.renderer.setStyle(this.processRef.nativeElement, 'height', `${wd}%`);
297
+ }
298
+ else {
299
+ if (this.reverse) {
300
+ this.renderer.setStyle(this.dragStartRef.nativeElement, 'top', `${this.startOffset}%`);
301
+ }
302
+ else {
303
+ this.renderer.setStyle(this.dragStartRef.nativeElement, 'bottom', `${this.startOffset}%`);
304
+ }
305
+ this.renderer.setStyle(this.processRef.nativeElement, 'height', `${this.startOffset}%`);
306
+ }
138
307
  }
139
308
  else {
140
- this.renderer.setStyle(this.dragRef.nativeElement, 'left', `${this.offset}%`);
309
+ if (this.isArray) {
310
+ const wd = Math.abs(this.endOffset - this.startOffset);
311
+ const lt = this.endOffset > this.startOffset ? this.startOffset : this.endOffset;
312
+ if (this.reverse) {
313
+ this.renderer.setStyle(this.dragStartRef.nativeElement, 'right', `${this.startOffset}%`);
314
+ this.renderer.setStyle(this.dragEndRef.nativeElement, 'right', `${this.endOffset}%`);
315
+ this.renderer.setStyle(this.processRef.nativeElement, 'right', `${lt}%`);
316
+ }
317
+ else {
318
+ this.renderer.setStyle(this.dragStartRef.nativeElement, 'left', `${this.startOffset}%`);
319
+ this.renderer.setStyle(this.dragEndRef.nativeElement, 'left', `${this.endOffset}%`);
320
+ this.renderer.setStyle(this.processRef.nativeElement, 'left', `${lt}%`);
321
+ }
322
+ this.renderer.setStyle(this.processRef.nativeElement, 'width', `${wd}%`);
323
+ }
324
+ else {
325
+ if (this.reverse) {
326
+ this.renderer.setStyle(this.dragStartRef.nativeElement, 'right', `${this.startOffset}%`);
327
+ }
328
+ else {
329
+ this.renderer.setStyle(this.dragStartRef.nativeElement, 'left', `${this.startOffset}%`);
330
+ }
331
+ this.renderer.setStyle(this.processRef.nativeElement, 'width', `${this.startOffset}%`);
332
+ }
141
333
  }
142
- this.renderer.setStyle(this.processRef.nativeElement, 'width', `${this.offset}%`);
143
- this.renderer.removeStyle(this.dragRef.nativeElement, 'transform');
144
334
  }
145
335
  formControlChanges() {
146
336
  this.ngOnInit();
147
337
  this.cdr.detectChanges();
148
338
  }
149
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: XSliderSelectComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
150
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.5", type: XSliderSelectComponent, selector: "x-slider-select", providers: [XValueAccessor(XSliderSelectComponent)], viewQueries: [{ propertyName: "sliderSelect", first: true, predicate: ["sliderSelect"], descendants: true, static: true }, { propertyName: "dragRef", first: true, predicate: ["dragRef"], descendants: true, static: true }, { propertyName: "railRef", first: true, predicate: ["railRef"], descendants: true, static: true }, { propertyName: "processRef", first: true, predicate: ["processRef"], descendants: true, static: true }, { propertyName: "tooltip", first: true, predicate: XTooltipDirective, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #sliderSelect\r\n class=\"x-slider-select\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-slider-select-reverse]=\"reverse\"\r\n>\r\n <label *ngIf=\"label\" [class.x-slider-select-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-slider-select-inner\" #innerRef (click)=\"onInnerClick($event)\">\r\n <div class=\"x-slider-select-rail\" #railRef>\r\n <div></div>\r\n </div>\r\n <div class=\"x-slider-select-track\" #trackRef>\r\n <div class=\"x-slider-select-process\" #processRef></div>\r\n </div>\r\n <div class=\"x-slider-select-drags\">\r\n <div\r\n #dragRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n cdkDragLockAxis=\"x\"\r\n [cdkDragDisabled]=\"disabled\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event)\"\r\n (cdkDragEnded)=\"ended($event)\"\r\n (cdkDragMoved)=\"moved($event)\"\r\n >\r\n <div\r\n #tooltip\r\n x-tooltip\r\n class=\"x-slider-select-button\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip\"\r\n [content]=\"displayValue\"\r\n [visible]=\"visible\"\r\n [manual]=\"manual\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-slider-select{display:inline-block;width:12rem}.x-slider-select{margin:0;padding:0;width:100%}.x-slider-select.x-flex{display:flex}.x-slider-select.x-justify-start{justify-content:flex-start}.x-slider-select.x-justify-center{justify-content:center}.x-slider-select.x-justify-end{justify-content:flex-end}.x-slider-select.x-justify-space-between{justify-content:space-between}.x-slider-select.x-justify-space-around{justify-content:space-around}.x-slider-select.x-align-start{align-items:flex-start}.x-slider-select.x-align-center{align-items:center}.x-slider-select.x-align-end{align-items:flex-end}.x-slider-select.x-direction-column{flex-direction:column}.x-slider-select.x-direction-column-reverse{flex-direction:column-reverse}.x-slider-select.x-direction-row{flex-direction:row}.x-slider-select.x-direction-row-reverse{flex-direction:row-reverse}.x-slider-select>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);color:var(--x-text-300);font-weight:600}.x-slider-select>label.x-text-align-start{text-align:start}.x-slider-select>label.x-text-align-center{text-align:center}.x-slider-select>label.x-text-align-end{text-align:end}.x-slider-select-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-slider-select-inner{flex:1;position:relative;display:flex;align-items:center;padding-right:1rem}.x-slider-select-rail{position:absolute;margin-left:.5rem;width:calc(100% - 1rem);background-color:var(--x-border-100);height:calc(calc(var(--x-font-size) + .875rem) / 4);border-radius:var(--x-border-radius)}.x-slider-select-rail>div{width:100%;height:100%}.x-slider-select-track{margin-left:.5rem;width:calc(100% - 1rem);position:absolute}.x-slider-select-process{height:calc(calc(var(--x-font-size) + .875rem) / 4);background-color:var(--x-primary);border-radius:var(--x-border-radius);width:0%}.x-slider-select-drags{position:relative;width:100%;height:calc(var(--x-font-size) + .875rem);display:flex;align-items:center}.x-slider-select-drag{position:absolute;cursor:pointer}.x-slider-select-button{width:1rem;height:1rem;border-radius:1rem;border:calc(var(--x-border-width) * 2) solid var(--x-primary);background-color:var(--x-background-a100)}.x-slider-select.x-invalid>label,.x-slider-select.x-required>label{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row>x-icon,.x-slider-select.x-required>.x-slider-select-row>x-icon{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row:before,.x-slider-select.x-required>.x-slider-select-row:before{content:\" \";z-index:2;position:absolute;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius);width:.125rem;background-color:var(--x-danger)}.x-slider-select.x-disabled .x-slider-select-rail{background-color:var(--x-border-300)}.x-slider-select.x-disabled .x-slider-select-process{background-color:var(--x-primary-400)}.x-slider-select.x-disabled .x-slider-select-drag{cursor:not-allowed}.x-slider-select.x-disabled .x-slider-select-button{border-color:var(--x-primary-400)}.x-slider-select.x-flex.x-direction-row>label{padding:0 .5rem 0 0}.x-slider-select.x-flex.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-slider-select.x-flex.x-direction-column,.x-slider-select.x-flex.x-direction-column-reverse{align-items:inherit}.x-slider-select-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-500);padding:0 var(--x-padding-medium);right:0}.x-slider-select:hover:not(.x-disabled) .x-slider-select-track{background-color:var(--x-border-100)}.x-slider-select:hover:not(.x-disabled) .x-slider-select-process{background-color:var(--x-primary-100)}.x-slider-select:hover:not(.x-disabled) .x-slider-select-button{border-color:var(--x-primary-100)}.x-slider-select-reverse .x-slider-select-inner{padding-right:0;padding-left:1rem}.x-slider-select-reverse .x-slider-select-rail{margin-left:-.5rem}.x-slider-select-reverse .x-slider-select-track{display:flex;justify-content:flex-end;margin-left:-.5rem}.x-slider-select-reverse .x-slider-select-drags{justify-content:flex-end;right:auto}.x-slider-select:not(.x-slider-select-reverse) .x-slider-select-drag{left:auto}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.XTooltipDirective, selector: "[x-tooltip], x-tooltip" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
339
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: XSliderSelectComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
340
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: XSliderSelectComponent, selector: "x-slider-select", host: { properties: { "class.x-slider-select-vertical": "this.getVertical" } }, providers: [XValueAccessor(XSliderSelectComponent)], viewQueries: [{ propertyName: "sliderSelect", first: true, predicate: ["sliderSelect"], descendants: true, static: true }, { propertyName: "dragStartRef", first: true, predicate: ["dragStartRef"], descendants: true, static: true }, { propertyName: "dragEndRef", first: true, predicate: ["dragEndRef"], descendants: true, static: true }, { propertyName: "railRef", first: true, predicate: ["railRef"], descendants: true, static: true }, { propertyName: "processRef", first: true, predicate: ["processRef"], descendants: true, static: true }, { propertyName: "cdkDrag", first: true, predicate: CdkDrag, descendants: true }, { propertyName: "tooltips", predicate: XTooltipDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #sliderSelect\r\n class=\"x-slider-select\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-slider-select-reverse]=\"reverse\"\r\n [class.x-slider-select-range]=\"range\"\r\n>\r\n <label\r\n *ngIf=\"label\"\r\n [class.x-slider-select-label-required]=\"required\"\r\n [style.width]=\"labelWidth\"\r\n [ngClass]=\"labelMap\"\r\n >{{ label }}</label\r\n >\r\n <div class=\"x-slider-select-inner\" #innerRef>\r\n <div class=\"x-slider-select-rail\" #railRef>\r\n <div></div>\r\n </div>\r\n <div class=\"x-slider-select-drags\">\r\n <div class=\"x-slider-select-track\" #trackRef>\r\n <div\r\n #processRef\r\n class=\"x-slider-select-process\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabled || !range\"\r\n [cdkDragBoundary]=\"trackRef\"\r\n (cdkDragStarted)=\"started($event, 'both')\"\r\n (cdkDragEnded)=\"ended($event, 'both')\"\r\n (cdkDragMoved)=\"moved($event, 'both')\"\r\n ></div>\r\n </div>\r\n <div class=\"x-slider-select-marks\">\r\n <div class=\"x-slider-select-mark\" [ngStyle]=\"mark.style\" *ngFor=\"let mark of markList\">\r\n <span class=\"x-slider-select-mark-label\">{{ mark.label }}</span>\r\n </div>\r\n </div>\r\n <div\r\n #dragStartRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabled\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event, 'start')\"\r\n (cdkDragEnded)=\"ended($event, 'start')\"\r\n (cdkDragMoved)=\"moved($event, 'start')\"\r\n >\r\n <div\r\n #tooltipStart\r\n x-tooltip\r\n tabindex=\"0\"\r\n class=\"x-slider-select-button\"\r\n [class.x-slider-select-button-actived]=\"startVisible\"\r\n [class.x-slider-select-custom-button]=\"customButton\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip && !showStartTooltip\"\r\n [content]=\"tooltipStartTpl\"\r\n [visible]=\"startVisible\"\r\n [manual]=\"startManual\"\r\n >\r\n <ng-container *xOutlet=\"customButton\">{{ customButton }}</ng-container>\r\n </div>\r\n <ng-template #tooltipStartTpl>\r\n <ng-container *xOutlet=\"tooltipCustom; context: { $value: startDisplayValue }\">{{\r\n startDisplayValue\r\n }}</ng-container>\r\n </ng-template>\r\n </div>\r\n <div\r\n [hidden]=\"!range\"\r\n #dragEndRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabled\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event, 'end')\"\r\n (cdkDragEnded)=\"ended($event, 'end')\"\r\n (cdkDragMoved)=\"moved($event, 'end')\"\r\n >\r\n <div\r\n #tooltipEnd\r\n x-tooltip\r\n tabindex=\"0\"\r\n class=\"x-slider-select-button\"\r\n [class.x-slider-select-button-actived]=\"endVisible\"\r\n [class.x-slider-select-custom-button]=\"customButton\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip && !showEndTooltip\"\r\n [content]=\"tooltipEndTpl\"\r\n [visible]=\"endVisible\"\r\n [manual]=\"endManual\"\r\n >\r\n <ng-container *xOutlet=\"customButton\">{{ customButton }}</ng-container>\r\n </div>\r\n <ng-template #tooltipEndTpl>\r\n <ng-container *xOutlet=\"tooltipCustom; context: { $value: endDisplayValue }\">{{\r\n endDisplayValue\r\n }}</ng-container>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-slider-select{display:inline-block;width:12rem}.x-slider-select{margin:0;padding:0;width:100%}.x-slider-select.x-flex{display:flex}.x-slider-select.x-justify-start{justify-content:flex-start}.x-slider-select.x-justify-center{justify-content:center}.x-slider-select.x-justify-end{justify-content:flex-end}.x-slider-select.x-justify-space-between{justify-content:space-between}.x-slider-select.x-justify-space-around{justify-content:space-around}.x-slider-select.x-align-start{align-items:flex-start}.x-slider-select.x-align-center{align-items:center}.x-slider-select.x-align-end{align-items:flex-end}.x-slider-select.x-direction-column{flex-direction:column}.x-slider-select.x-direction-column-reverse{flex-direction:column-reverse}.x-slider-select.x-direction-row{flex-direction:row}.x-slider-select.x-direction-row-reverse{flex-direction:row-reverse}.x-slider-select>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);color:var(--x-text-300);font-weight:600}.x-slider-select>label.x-text-align-start{text-align:start}.x-slider-select>label.x-text-align-center{text-align:center}.x-slider-select>label.x-text-align-end{text-align:end}.x-slider-select-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-slider-select-inner{flex:1;position:relative;display:flex;align-items:center;padding-right:.875rem}.x-slider-select-rail{position:absolute;margin-left:.4375rem;width:calc(100% - .875rem);background-color:var(--x-border-100);height:calc(calc(var(--x-font-size) + .875rem) / 5);border-radius:var(--x-border-radius)}.x-slider-select-rail>div{width:100%;height:100%}.x-slider-select-track{margin-left:.4375rem;width:100%;border-radius:var(--x-border-radius);position:absolute}.x-slider-select-process{height:calc(calc(var(--x-font-size) + .875rem) / 5);background-color:var(--x-primary);border-radius:var(--x-border-radius);width:0%;position:relative}.x-slider-select-drags{position:relative;width:100%;height:calc(var(--x-font-size) + .875rem);display:flex;align-items:center}.x-slider-select-drag{position:absolute;cursor:pointer}.x-slider-select-marks{position:absolute;margin-left:.4375rem;width:100%;height:calc(var(--x-font-size) + .875rem);display:flex;align-items:center}.x-slider-select-mark{position:absolute;transform:translate(-50%);border-radius:.875rem;display:flex;align-items:center;justify-content:center}.x-slider-select-mark:before{content:\" \";position:absolute;width:.65625rem;height:.65625rem;border:calc(var(--x-border-width) * 2) solid var(--x-primary);background-color:var(--x-background-a100);border-radius:.875rem}.x-slider-select-mark-label{transform:translateY(.875rem)}.x-slider-select-button:not(.x-slider-select-custom-button){border-radius:.875rem;border:calc(var(--x-border-width) * 2) solid var(--x-primary);background-color:var(--x-background-a100)}.x-slider-select-button{width:.875rem;height:.875rem;display:flex;align-items:center;justify-content:center;transition:var(--x-animation-duration-base)}.x-slider-select-button:hover,.x-slider-select-button-actived{transform:scale(1.2)}.x-slider-select-bar{width:100%;height:100%}.x-slider-select.x-invalid>label,.x-slider-select.x-required>label{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row>x-icon,.x-slider-select.x-required>.x-slider-select-row>x-icon{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row:before,.x-slider-select.x-required>.x-slider-select-row:before{content:\" \";z-index:2;position:absolute;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius);width:.125rem;background-color:var(--x-danger)}.x-slider-select.x-disabled .x-slider-select-rail{background-color:var(--x-border-300)}.x-slider-select.x-disabled .x-slider-select-process{background-color:var(--x-primary-400)}.x-slider-select.x-disabled .x-slider-select-drag{cursor:not-allowed}.x-slider-select.x-disabled .x-slider-select-button:not(.x-slider-select-custom-button){border-color:var(--x-primary-400)}.x-slider-select.x-flex.x-direction-row>label{padding:0 .5rem 0 0}.x-slider-select.x-flex.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-slider-select.x-flex.x-direction-column,.x-slider-select.x-flex.x-direction-column-reverse{align-items:inherit}.x-slider-select-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-500);padding:0 var(--x-padding-medium);right:0}.x-slider-select:hover:not(.x-disabled) .x-slider-select-process{background-color:var(--x-primary-100)}.x-slider-select:hover:not(.x-disabled) .x-slider-select-button{border-color:var(--x-primary-100)}.x-slider-select-reverse .x-slider-select-inner{padding-right:0;padding-left:.875rem}.x-slider-select-reverse .x-slider-select-rail{margin-left:-.4375rem}.x-slider-select-reverse .x-slider-select-marks{margin-right:.4375rem}.x-slider-select-reverse .x-slider-select-mark{transform:translate(50%)}.x-slider-select-reverse .x-slider-select-track{display:flex;justify-content:flex-end;margin-right:.4375rem}.x-slider-select-reverse .x-slider-select-drags{justify-content:flex-end;right:auto}.x-slider-select-vertical{width:initial;height:12rem}.x-slider-select-vertical .x-slider-select{height:100%}.x-slider-select-vertical .x-slider-select-inner{padding-right:initial;padding-top:.875rem;align-items:initial;justify-content:center;height:100%}.x-slider-select-vertical .x-slider-select-rail{margin-left:initial;margin-top:-.4375rem;height:calc(100% - .875rem);width:calc(calc(var(--x-font-size) + .875rem) / 5)}.x-slider-select-vertical .x-slider-select-track{display:flex;align-items:flex-end;margin-left:initial;margin-bottom:.4375rem;width:calc(calc(var(--x-font-size) + .875rem) / 5);height:100%}.x-slider-select-vertical .x-slider-select-marks{display:flex;align-items:flex-end;justify-content:center;margin-left:initial;margin-bottom:.4375rem;width:calc(calc(var(--x-font-size) + .875rem) / 5);height:100%}.x-slider-select-vertical .x-slider-select-mark{transform:translate(0) translateY(50%)}.x-slider-select-vertical .x-slider-select-mark-label{transform:translate(50%) translateY(0);margin-left:.875rem}.x-slider-select-vertical .x-slider-select-process{height:0%;width:calc(calc(var(--x-font-size) + .875rem) / 5)}.x-slider-select-vertical .x-slider-select-drags{height:100%;width:calc(var(--x-font-size) + .875rem);align-items:flex-end;justify-content:center;right:auto}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-inner{padding-left:initial;padding-bottom:.875rem;padding-top:initial}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-rail{margin-top:.4375rem}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-track,.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-marks{align-items:flex-start;margin-bottom:-.4375rem;margin-right:initial}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-mark{transform:translate(0) translateY(-50%)}.x-slider-select-range .x-slider-select-process{cursor:pointer}.x-slider-select:not(.x-slider-select-reverse) .x-slider-select-drag{left:auto}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.XTooltipDirective, selector: "[x-tooltip], x-tooltip" }, { kind: "directive", type: i5.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
151
341
  }
152
342
  export { XSliderSelectComponent };
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: XSliderSelectComponent, decorators: [{
343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: XSliderSelectComponent, decorators: [{
154
344
  type: Component,
155
- args: [{ selector: `${XSliderSelectPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XSliderSelectComponent)], template: "<div\r\n #sliderSelect\r\n class=\"x-slider-select\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-slider-select-reverse]=\"reverse\"\r\n>\r\n <label *ngIf=\"label\" [class.x-slider-select-label-required]=\"required\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-slider-select-inner\" #innerRef (click)=\"onInnerClick($event)\">\r\n <div class=\"x-slider-select-rail\" #railRef>\r\n <div></div>\r\n </div>\r\n <div class=\"x-slider-select-track\" #trackRef>\r\n <div class=\"x-slider-select-process\" #processRef></div>\r\n </div>\r\n <div class=\"x-slider-select-drags\">\r\n <div\r\n #dragRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n cdkDragLockAxis=\"x\"\r\n [cdkDragDisabled]=\"disabled\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event)\"\r\n (cdkDragEnded)=\"ended($event)\"\r\n (cdkDragMoved)=\"moved($event)\"\r\n >\r\n <div\r\n #tooltip\r\n x-tooltip\r\n class=\"x-slider-select-button\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip\"\r\n [content]=\"displayValue\"\r\n [visible]=\"visible\"\r\n [manual]=\"manual\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-slider-select{display:inline-block;width:12rem}.x-slider-select{margin:0;padding:0;width:100%}.x-slider-select.x-flex{display:flex}.x-slider-select.x-justify-start{justify-content:flex-start}.x-slider-select.x-justify-center{justify-content:center}.x-slider-select.x-justify-end{justify-content:flex-end}.x-slider-select.x-justify-space-between{justify-content:space-between}.x-slider-select.x-justify-space-around{justify-content:space-around}.x-slider-select.x-align-start{align-items:flex-start}.x-slider-select.x-align-center{align-items:center}.x-slider-select.x-align-end{align-items:flex-end}.x-slider-select.x-direction-column{flex-direction:column}.x-slider-select.x-direction-column-reverse{flex-direction:column-reverse}.x-slider-select.x-direction-row{flex-direction:row}.x-slider-select.x-direction-row-reverse{flex-direction:row-reverse}.x-slider-select>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);color:var(--x-text-300);font-weight:600}.x-slider-select>label.x-text-align-start{text-align:start}.x-slider-select>label.x-text-align-center{text-align:center}.x-slider-select>label.x-text-align-end{text-align:end}.x-slider-select-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-slider-select-inner{flex:1;position:relative;display:flex;align-items:center;padding-right:1rem}.x-slider-select-rail{position:absolute;margin-left:.5rem;width:calc(100% - 1rem);background-color:var(--x-border-100);height:calc(calc(var(--x-font-size) + .875rem) / 4);border-radius:var(--x-border-radius)}.x-slider-select-rail>div{width:100%;height:100%}.x-slider-select-track{margin-left:.5rem;width:calc(100% - 1rem);position:absolute}.x-slider-select-process{height:calc(calc(var(--x-font-size) + .875rem) / 4);background-color:var(--x-primary);border-radius:var(--x-border-radius);width:0%}.x-slider-select-drags{position:relative;width:100%;height:calc(var(--x-font-size) + .875rem);display:flex;align-items:center}.x-slider-select-drag{position:absolute;cursor:pointer}.x-slider-select-button{width:1rem;height:1rem;border-radius:1rem;border:calc(var(--x-border-width) * 2) solid var(--x-primary);background-color:var(--x-background-a100)}.x-slider-select.x-invalid>label,.x-slider-select.x-required>label{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row>x-icon,.x-slider-select.x-required>.x-slider-select-row>x-icon{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row:before,.x-slider-select.x-required>.x-slider-select-row:before{content:\" \";z-index:2;position:absolute;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius);width:.125rem;background-color:var(--x-danger)}.x-slider-select.x-disabled .x-slider-select-rail{background-color:var(--x-border-300)}.x-slider-select.x-disabled .x-slider-select-process{background-color:var(--x-primary-400)}.x-slider-select.x-disabled .x-slider-select-drag{cursor:not-allowed}.x-slider-select.x-disabled .x-slider-select-button{border-color:var(--x-primary-400)}.x-slider-select.x-flex.x-direction-row>label{padding:0 .5rem 0 0}.x-slider-select.x-flex.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-slider-select.x-flex.x-direction-column,.x-slider-select.x-flex.x-direction-column-reverse{align-items:inherit}.x-slider-select-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-500);padding:0 var(--x-padding-medium);right:0}.x-slider-select:hover:not(.x-disabled) .x-slider-select-track{background-color:var(--x-border-100)}.x-slider-select:hover:not(.x-disabled) .x-slider-select-process{background-color:var(--x-primary-100)}.x-slider-select:hover:not(.x-disabled) .x-slider-select-button{border-color:var(--x-primary-100)}.x-slider-select-reverse .x-slider-select-inner{padding-right:0;padding-left:1rem}.x-slider-select-reverse .x-slider-select-rail{margin-left:-.5rem}.x-slider-select-reverse .x-slider-select-track{display:flex;justify-content:flex-end;margin-left:-.5rem}.x-slider-select-reverse .x-slider-select-drags{justify-content:flex-end;right:auto}.x-slider-select:not(.x-slider-select-reverse) .x-slider-select-drag{left:auto}\n"] }]
345
+ args: [{ selector: `${XSliderSelectPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XSliderSelectComponent)], template: "<div\r\n #sliderSelect\r\n class=\"x-slider-select\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n [class.x-slider-select-reverse]=\"reverse\"\r\n [class.x-slider-select-range]=\"range\"\r\n>\r\n <label\r\n *ngIf=\"label\"\r\n [class.x-slider-select-label-required]=\"required\"\r\n [style.width]=\"labelWidth\"\r\n [ngClass]=\"labelMap\"\r\n >{{ label }}</label\r\n >\r\n <div class=\"x-slider-select-inner\" #innerRef>\r\n <div class=\"x-slider-select-rail\" #railRef>\r\n <div></div>\r\n </div>\r\n <div class=\"x-slider-select-drags\">\r\n <div class=\"x-slider-select-track\" #trackRef>\r\n <div\r\n #processRef\r\n class=\"x-slider-select-process\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabled || !range\"\r\n [cdkDragBoundary]=\"trackRef\"\r\n (cdkDragStarted)=\"started($event, 'both')\"\r\n (cdkDragEnded)=\"ended($event, 'both')\"\r\n (cdkDragMoved)=\"moved($event, 'both')\"\r\n ></div>\r\n </div>\r\n <div class=\"x-slider-select-marks\">\r\n <div class=\"x-slider-select-mark\" [ngStyle]=\"mark.style\" *ngFor=\"let mark of markList\">\r\n <span class=\"x-slider-select-mark-label\">{{ mark.label }}</span>\r\n </div>\r\n </div>\r\n <div\r\n #dragStartRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabled\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event, 'start')\"\r\n (cdkDragEnded)=\"ended($event, 'start')\"\r\n (cdkDragMoved)=\"moved($event, 'start')\"\r\n >\r\n <div\r\n #tooltipStart\r\n x-tooltip\r\n tabindex=\"0\"\r\n class=\"x-slider-select-button\"\r\n [class.x-slider-select-button-actived]=\"startVisible\"\r\n [class.x-slider-select-custom-button]=\"customButton\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip && !showStartTooltip\"\r\n [content]=\"tooltipStartTpl\"\r\n [visible]=\"startVisible\"\r\n [manual]=\"startManual\"\r\n >\r\n <ng-container *xOutlet=\"customButton\">{{ customButton }}</ng-container>\r\n </div>\r\n <ng-template #tooltipStartTpl>\r\n <ng-container *xOutlet=\"tooltipCustom; context: { $value: startDisplayValue }\">{{\r\n startDisplayValue\r\n }}</ng-container>\r\n </ng-template>\r\n </div>\r\n <div\r\n [hidden]=\"!range\"\r\n #dragEndRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabled\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event, 'end')\"\r\n (cdkDragEnded)=\"ended($event, 'end')\"\r\n (cdkDragMoved)=\"moved($event, 'end')\"\r\n >\r\n <div\r\n #tooltipEnd\r\n x-tooltip\r\n tabindex=\"0\"\r\n class=\"x-slider-select-button\"\r\n [class.x-slider-select-button-actived]=\"endVisible\"\r\n [class.x-slider-select-custom-button]=\"customButton\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip && !showEndTooltip\"\r\n [content]=\"tooltipEndTpl\"\r\n [visible]=\"endVisible\"\r\n [manual]=\"endManual\"\r\n >\r\n <ng-container *xOutlet=\"customButton\">{{ customButton }}</ng-container>\r\n </div>\r\n <ng-template #tooltipEndTpl>\r\n <ng-container *xOutlet=\"tooltipCustom; context: { $value: endDisplayValue }\">{{\r\n endDisplayValue\r\n }}</ng-container>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-slider-select{display:inline-block;width:12rem}.x-slider-select{margin:0;padding:0;width:100%}.x-slider-select.x-flex{display:flex}.x-slider-select.x-justify-start{justify-content:flex-start}.x-slider-select.x-justify-center{justify-content:center}.x-slider-select.x-justify-end{justify-content:flex-end}.x-slider-select.x-justify-space-between{justify-content:space-between}.x-slider-select.x-justify-space-around{justify-content:space-around}.x-slider-select.x-align-start{align-items:flex-start}.x-slider-select.x-align-center{align-items:center}.x-slider-select.x-align-end{align-items:flex-end}.x-slider-select.x-direction-column{flex-direction:column}.x-slider-select.x-direction-column-reverse{flex-direction:column-reverse}.x-slider-select.x-direction-row{flex-direction:row}.x-slider-select.x-direction-row-reverse{flex-direction:row-reverse}.x-slider-select>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);color:var(--x-text-300);font-weight:600}.x-slider-select>label.x-text-align-start{text-align:start}.x-slider-select>label.x-text-align-center{text-align:center}.x-slider-select>label.x-text-align-end{text-align:end}.x-slider-select-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-slider-select-inner{flex:1;position:relative;display:flex;align-items:center;padding-right:.875rem}.x-slider-select-rail{position:absolute;margin-left:.4375rem;width:calc(100% - .875rem);background-color:var(--x-border-100);height:calc(calc(var(--x-font-size) + .875rem) / 5);border-radius:var(--x-border-radius)}.x-slider-select-rail>div{width:100%;height:100%}.x-slider-select-track{margin-left:.4375rem;width:100%;border-radius:var(--x-border-radius);position:absolute}.x-slider-select-process{height:calc(calc(var(--x-font-size) + .875rem) / 5);background-color:var(--x-primary);border-radius:var(--x-border-radius);width:0%;position:relative}.x-slider-select-drags{position:relative;width:100%;height:calc(var(--x-font-size) + .875rem);display:flex;align-items:center}.x-slider-select-drag{position:absolute;cursor:pointer}.x-slider-select-marks{position:absolute;margin-left:.4375rem;width:100%;height:calc(var(--x-font-size) + .875rem);display:flex;align-items:center}.x-slider-select-mark{position:absolute;transform:translate(-50%);border-radius:.875rem;display:flex;align-items:center;justify-content:center}.x-slider-select-mark:before{content:\" \";position:absolute;width:.65625rem;height:.65625rem;border:calc(var(--x-border-width) * 2) solid var(--x-primary);background-color:var(--x-background-a100);border-radius:.875rem}.x-slider-select-mark-label{transform:translateY(.875rem)}.x-slider-select-button:not(.x-slider-select-custom-button){border-radius:.875rem;border:calc(var(--x-border-width) * 2) solid var(--x-primary);background-color:var(--x-background-a100)}.x-slider-select-button{width:.875rem;height:.875rem;display:flex;align-items:center;justify-content:center;transition:var(--x-animation-duration-base)}.x-slider-select-button:hover,.x-slider-select-button-actived{transform:scale(1.2)}.x-slider-select-bar{width:100%;height:100%}.x-slider-select.x-invalid>label,.x-slider-select.x-required>label{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row>x-icon,.x-slider-select.x-required>.x-slider-select-row>x-icon{color:var(--x-danger)}.x-slider-select.x-invalid>.x-slider-select-row:before,.x-slider-select.x-required>.x-slider-select-row:before{content:\" \";z-index:2;position:absolute;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius);width:.125rem;background-color:var(--x-danger)}.x-slider-select.x-disabled .x-slider-select-rail{background-color:var(--x-border-300)}.x-slider-select.x-disabled .x-slider-select-process{background-color:var(--x-primary-400)}.x-slider-select.x-disabled .x-slider-select-drag{cursor:not-allowed}.x-slider-select.x-disabled .x-slider-select-button:not(.x-slider-select-custom-button){border-color:var(--x-primary-400)}.x-slider-select.x-flex.x-direction-row>label{padding:0 .5rem 0 0}.x-slider-select.x-flex.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-slider-select.x-flex.x-direction-column,.x-slider-select.x-flex.x-direction-column-reverse{align-items:inherit}.x-slider-select-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-500);padding:0 var(--x-padding-medium);right:0}.x-slider-select:hover:not(.x-disabled) .x-slider-select-process{background-color:var(--x-primary-100)}.x-slider-select:hover:not(.x-disabled) .x-slider-select-button{border-color:var(--x-primary-100)}.x-slider-select-reverse .x-slider-select-inner{padding-right:0;padding-left:.875rem}.x-slider-select-reverse .x-slider-select-rail{margin-left:-.4375rem}.x-slider-select-reverse .x-slider-select-marks{margin-right:.4375rem}.x-slider-select-reverse .x-slider-select-mark{transform:translate(50%)}.x-slider-select-reverse .x-slider-select-track{display:flex;justify-content:flex-end;margin-right:.4375rem}.x-slider-select-reverse .x-slider-select-drags{justify-content:flex-end;right:auto}.x-slider-select-vertical{width:initial;height:12rem}.x-slider-select-vertical .x-slider-select{height:100%}.x-slider-select-vertical .x-slider-select-inner{padding-right:initial;padding-top:.875rem;align-items:initial;justify-content:center;height:100%}.x-slider-select-vertical .x-slider-select-rail{margin-left:initial;margin-top:-.4375rem;height:calc(100% - .875rem);width:calc(calc(var(--x-font-size) + .875rem) / 5)}.x-slider-select-vertical .x-slider-select-track{display:flex;align-items:flex-end;margin-left:initial;margin-bottom:.4375rem;width:calc(calc(var(--x-font-size) + .875rem) / 5);height:100%}.x-slider-select-vertical .x-slider-select-marks{display:flex;align-items:flex-end;justify-content:center;margin-left:initial;margin-bottom:.4375rem;width:calc(calc(var(--x-font-size) + .875rem) / 5);height:100%}.x-slider-select-vertical .x-slider-select-mark{transform:translate(0) translateY(50%)}.x-slider-select-vertical .x-slider-select-mark-label{transform:translate(50%) translateY(0);margin-left:.875rem}.x-slider-select-vertical .x-slider-select-process{height:0%;width:calc(calc(var(--x-font-size) + .875rem) / 5)}.x-slider-select-vertical .x-slider-select-drags{height:100%;width:calc(var(--x-font-size) + .875rem);align-items:flex-end;justify-content:center;right:auto}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-inner{padding-left:initial;padding-bottom:.875rem;padding-top:initial}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-rail{margin-top:.4375rem}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-track,.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-marks{align-items:flex-start;margin-bottom:-.4375rem;margin-right:initial}.x-slider-select-vertical .x-slider-select-reverse .x-slider-select-mark{transform:translate(0) translateY(-50%)}.x-slider-select-range .x-slider-select-process{cursor:pointer}.x-slider-select:not(.x-slider-select-reverse) .x-slider-select-drag{left:auto}\n"] }]
156
346
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { sliderSelect: [{
157
347
  type: ViewChild,
158
348
  args: ['sliderSelect', { static: true }]
159
- }], dragRef: [{
349
+ }], dragStartRef: [{
350
+ type: ViewChild,
351
+ args: ['dragStartRef', { static: true }]
352
+ }], dragEndRef: [{
160
353
  type: ViewChild,
161
- args: ['dragRef', { static: true }]
354
+ args: ['dragEndRef', { static: true }]
162
355
  }], railRef: [{
163
356
  type: ViewChild,
164
357
  args: ['railRef', { static: true }]
165
358
  }], processRef: [{
166
359
  type: ViewChild,
167
360
  args: ['processRef', { static: true }]
168
- }], tooltip: [{
361
+ }], getVertical: [{
362
+ type: HostBinding,
363
+ args: ['class.x-slider-select-vertical']
364
+ }], tooltips: [{
365
+ type: ViewChildren,
366
+ args: [XTooltipDirective]
367
+ }], cdkDrag: [{
169
368
  type: ViewChild,
170
- args: [XTooltipDirective, { static: true }]
369
+ args: [CdkDrag]
171
370
  }] } });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9zbGlkZXItc2VsZWN0L3NsaWRlci1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvc2xpZGVyLXNlbGVjdC9zbGlkZXItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFDTCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUl2QixTQUFTLEVBR1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBbUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFFdkQsTUFRYSxzQkFBdUIsU0FBUSxxQkFBcUI7SUFlL0QsSUFBYSxlQUFlO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFUSxVQUFVLENBQUMsS0FBYTtRQUMvQixJQUFJLEtBQUssS0FBSyxJQUFJO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFlBQ1MsUUFBbUIsRUFDbkIsVUFBbUMsRUFDMUIsR0FBc0IsRUFDL0IsYUFBNkI7UUFFcEMsS0FBSyxFQUFFLENBQUM7UUFMRCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQzFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQy9CLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQXhCdEMsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUNuQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFZixVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ1gsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFxQnpDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQzthQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDbEQsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2hILE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQ3ZCLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXO1FBQ1QsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwRixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDdEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3JILENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4RCxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hDLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2FBQ3BCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNwRDtTQUNGO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFtQixJQUFHLENBQUM7SUFFcEMsT0FBTyxDQUFDLElBQWtCO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQWlCO1FBQ3JCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFnQjtRQUNwQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDdEI7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLENBQUMsV0FBbUIsQ0FBQztRQUMxQixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEtBQUssVUFBVTtZQUFFLE9BQU87UUFDbkYsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNqRSxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUYsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDNUMsSUFBSSxHQUFHLEdBQ0wsTUFBTSxHQUFHLFNBQVMsR0FBRyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQztnQkFDWixDQUFDLENBQUMsUUFBUSxHQUFHLE1BQU07Z0JBQ25CLENBQUMsQ0FBQyxRQUFRLEdBQUcsTUFBTTtZQUNyQixDQUFDLENBQUMsUUFBUSxHQUFHLENBQUM7Z0JBQ2QsQ0FBQyxDQUFDLFFBQVEsR0FBRyxTQUFTLEdBQUcsTUFBTTtnQkFDL0IsQ0FBQyxDQUFDLFFBQVEsR0FBRyxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBRXBDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDcEQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ2hGO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUMvRTtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztpSUFqS1Usc0JBQXNCO3FIQUF0QixzQkFBc0IsMENBRnRCLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLENBQUMsK2RBT3hDLGlCQUFpQixxRkNqQzlCLG8rQ0EyQ0E7O1NEZmEsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0UsR0FBRyxtQkFBbUIsRUFBRSxpQkFHbkIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMsd0JBQXdCLENBQUM7c0xBR04sWUFBWTtzQkFBeEQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNILE9BQU87c0JBQTlDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRSxPQUFPO3NCQUE5QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0ssVUFBVTtzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNPLE9BQU87c0JBQXRELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAbmctbmVzdC91aS90b29sdGlwJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQWZ0ZXJWaWV3SW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYU2xpZGVyU2VsZWN0UHJvcGVydHksIFhTbGlkZXJTZWxlY3RQcmVmaXggfSBmcm9tICcuL3NsaWRlci1zZWxlY3QucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYSXNFbXB0eSwgWElzVW5kZWZpbmVkLCBYUmVzaXplLCBYQ2xlYXJDbGFzcywgWENvbmZpZ1NlcnZpY2UsIFhSZXNpemVPYnNlcnZlciB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBDZGtEcmFnTW92ZSwgQ2RrRHJhZ1N0YXJ0LCBDZGtEcmFnRW5kIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFhWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYU2xpZGVyU2VsZWN0UHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlci1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NsaWRlci1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1hWYWx1ZUFjY2Vzc29yKFhTbGlkZXJTZWxlY3RDb21wb25lbnQpXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFNsaWRlclNlbGVjdENvbXBvbmVudCBleHRlbmRzIFhTbGlkZXJTZWxlY3RQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBAVmlld0NoaWxkKCdzbGlkZXJTZWxlY3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzbGlkZXJTZWxlY3QhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdkcmFnUmVmJywgeyBzdGF0aWM6IHRydWUgfSkgZHJhZ1JlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3JhaWxSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSByYWlsUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncHJvY2Vzc1JlZicsIHsgc3RhdGljOiB0cnVlIH0pIHByb2Nlc3NSZWYhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKFhUb29sdGlwRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSB0b29sdGlwITogWFRvb2x0aXBEaXJlY3RpdmU7XHJcbiAgb2Zmc2V0OiBudW1iZXIgPSAwO1xyXG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtYW51YWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGFydCE6IG51bWJlcjtcclxuICBvdmVycmlkZSB2YWx1ZSA9IDA7XHJcbiAgZGlzcGxheVZhbHVlID0gJzAnO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIhOiBYUmVzaXplT2JzZXJ2ZXI7XHJcblxyXG4gIG92ZXJyaWRlIGdldCByZXF1aXJlZElzRW1wdHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0b3IgJiYgdGhpcy5yZXF1aXJlZCAmJiAoWElzRW1wdHkodGhpcy52YWx1ZSkgfHwgdGhpcy52YWx1ZSA9PT0gMCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgdmFsdWUgPSAwO1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5zZXRMZWZ0KCk7XHJcbiAgICB0aGlzLnNldERpc3BsYXlWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHB1YmxpYyBvdmVycmlkZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IFhDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldEZsZXgodGhpcy5zbGlkZXJTZWxlY3QubmF0aXZlRWxlbWVudCwgdGhpcy5yZW5kZXJlciwgdGhpcy5qdXN0aWZ5LCB0aGlzLmFsaWduLCB0aGlzLmRpcmVjdGlvbik7XHJcbiAgICB0aGlzLnNldFByZWNpc2lvbigpO1xyXG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgWFJlc2l6ZSh0aGlzLnNsaWRlclNlbGVjdC5uYXRpdmVFbGVtZW50KVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzApLCB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSlcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyID0geC5yZXNpemVPYnNlcnZlcjtcclxuICAgICAgICB0aGlzLnNldExlZnQoKTtcclxuICAgICAgICB0aGlzLnNldERpc3BsYXlWYWx1ZSgpO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2UoKSB7XHJcbiAgICBjb25zdCB2YWwgPSBOdW1iZXIoKChOdW1iZXIodGhpcy5tYXgpIC0gTnVtYmVyKHRoaXMubWluKSkgKiBOdW1iZXIodGhpcy5vZmZzZXQpKSAvIDEwMCArIE51bWJlcih0aGlzLm1pbikpLnRvRml4ZWQoXHJcbiAgICAgIE51bWJlcih0aGlzLnByZWNpc2lvbilcclxuICAgICk7XHJcbiAgICB0aGlzLnZhbHVlID0gcGFyc2VGbG9hdCh2YWwpO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5VmFsdWUoKTtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2xhc3NNYXAoKSB7XHJcbiAgICBYQ2xlYXJDbGFzcyh0aGlzLmxhYmVsTWFwKTtcclxuICAgIHRoaXMubGFiZWxNYXBbYHgtdGV4dC1hbGlnbi0ke3RoaXMubGFiZWxBbGlnbn1gXSA9IHRoaXMubGFiZWxBbGlnbiA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNldExlZnQoKSB7XHJcbiAgICB0aGlzLm9mZnNldCA9IE1hdGgucm91bmQoXHJcbiAgICAgICgodGhpcy52YWx1ZSArICh0aGlzLnJldmVyc2UgPyBOdW1iZXIodGhpcy5taW4pIDogLU51bWJlcih0aGlzLm1pbikpKSAqIDEwMCkgLyAoTnVtYmVyKHRoaXMubWF4KSAtIE51bWJlcih0aGlzLm1pbikpXHJcbiAgICApO1xyXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLm9mZnNldDtcclxuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcclxuICAgIHRoaXMuc2V0RHJhZygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzcGxheVZhbHVlKCkge1xyXG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBOdW1iZXIodGhpcy52YWx1ZSkudG9GaXhlZChOdW1iZXIodGhpcy5wcmVjaXNpb24pKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFByZWNpc2lvbigpIHtcclxuICAgIGlmIChYSXNVbmRlZmluZWQodGhpcy5wcmVjaXNpb24pIHx8ICFYSXNFbXB0eSh0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGxldCBzdGVwU3RyID0gU3RyaW5nKHRoaXMuc3RlcCk7XHJcbiAgICAgIGxldCBpbmRleHBvaW50ID0gc3RlcFN0ci5pbmRleE9mKCcuJyk7XHJcbiAgICAgIGlmIChpbmRleHBvaW50ID09PSAtMSkge1xyXG4gICAgICAgIHRoaXMucHJlY2lzaW9uID0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnByZWNpc2lvbiA9IHN0ZXBTdHIubGVuZ3RoIC0gKGluZGV4cG9pbnQgKyAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Jbm5lckNsaWNrKF8kZXZlbnQ6IE1vdXNlRXZlbnQpIHt9XHJcblxyXG4gIHN0YXJ0ZWQoZHJhZzogQ2RrRHJhZ1N0YXJ0KSB7XHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMub2Zmc2V0O1xyXG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xyXG4gICAgaWYgKHRoaXMuc2hvd1Rvb2x0aXApIHtcclxuICAgICAgdGhpcy5tYW51YWwgPSB0cnVlO1xyXG4gICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbFZhbGlkYXRvcigpO1xyXG4gICAgdGhpcy5kcmFnU3RhcnRFbWl0LmVtaXQoZHJhZyk7XHJcbiAgfVxyXG5cclxuICBtb3ZlZChkcmFnOiBDZGtEcmFnTW92ZSkge1xyXG4gICAgbGV0IHRyYW5zZm9ybSA9IGRyYWcuc291cmNlLmdldEZyZWVEcmFnUG9zaXRpb24oKTtcclxuICAgIHRoaXMuc2V0RHJhZyh0cmFuc2Zvcm0ueCk7XHJcbiAgICBkcmFnLnNvdXJjZS5yZXNldCgpO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Rvb2x0aXApIHtcclxuICAgICAgdGhpcy50b29sdGlwLnVwZGF0ZVBvcnRhbCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2UoKTtcclxuICAgIHRoaXMuZHJhZ01vdmVFbWl0LmVtaXQoZHJhZyk7XHJcbiAgfVxyXG5cclxuICBlbmRlZChkcmFnOiBDZGtEcmFnRW5kKSB7XHJcbiAgICBpZiAodGhpcy5zaG93VG9vbHRpcCkge1xyXG4gICAgICB0aGlzLm1hbnVhbCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuZHJhZ0VuZEVtaXQuZW1pdChkcmFnKTtcclxuICB9XHJcblxyXG4gIHNldERyYWcoZGlzdGFuY2U6IG51bWJlciA9IDApIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5yYWlsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ICE9PSAnZnVuY3Rpb24nKSByZXR1cm47XHJcbiAgICBsZXQgcmFpbEJveCA9IHRoaXMucmFpbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgbGV0IHN0ZXBXaWR0aCA9IHJhaWxCb3gud2lkdGggLyAoKE51bWJlcih0aGlzLm1heCkgLSBOdW1iZXIodGhpcy5taW4pKSAvIE51bWJlcih0aGlzLnN0ZXApKTtcclxuICAgIGxldCBvZmZzZXQgPSBNYXRoLmFicyhkaXN0YW5jZSAlIHN0ZXBXaWR0aCk7XHJcbiAgICBsZXQgZGlzID1cclxuICAgICAgb2Zmc2V0IDwgc3RlcFdpZHRoIC8gMlxyXG4gICAgICAgID8gZGlzdGFuY2UgPiAwXHJcbiAgICAgICAgICA/IGRpc3RhbmNlIC0gb2Zmc2V0XHJcbiAgICAgICAgICA6IGRpc3RhbmNlICsgb2Zmc2V0XHJcbiAgICAgICAgOiBkaXN0YW5jZSA+IDBcclxuICAgICAgICA/IGRpc3RhbmNlICsgc3RlcFdpZHRoIC0gb2Zmc2V0XHJcbiAgICAgICAgOiBkaXN0YW5jZSAtIHN0ZXBXaWR0aCArIG9mZnNldDtcclxuXHJcbiAgICBsZXQgeCA9ICh0aGlzLnN0YXJ0IC8gMTAwKSAqIHJhaWxCb3gud2lkdGggKyAodGhpcy5yZXZlcnNlID8gLWRpcyA6IGRpcyk7XHJcbiAgICB0aGlzLm9mZnNldCA9IE1hdGgucm91bmQoKHggLyByYWlsQm94LndpZHRoKSAqIDEwMCk7XHJcbiAgICBpZiAodGhpcy5yZXZlcnNlKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnUmVmLm5hdGl2ZUVsZW1lbnQsICdyaWdodCcsIGAke3RoaXMub2Zmc2V0fSVgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnUmVmLm5hdGl2ZUVsZW1lbnQsICdsZWZ0JywgYCR7dGhpcy5vZmZzZXR9JWApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnByb2Nlc3NSZWYubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7dGhpcy5vZmZzZXR9JWApO1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmRyYWdSZWYubmF0aXZlRWxlbWVudCwgJ3RyYW5zZm9ybScpO1xyXG4gIH1cclxuXHJcbiAgZm9ybUNvbnRyb2xDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgI3NsaWRlclNlbGVjdFxyXG4gIGNsYXNzPVwieC1zbGlkZXItc2VsZWN0XCJcclxuICBbY2xhc3MueC1mbGV4XT1cImp1c3RpZnkgfHwgYWxpZ24gfHwgZGlyZWN0aW9uXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2NsYXNzLngtcmVxdWlyZWRdPVwicmVxdWlyZWRJc0VtcHR5XCJcclxuICBbY2xhc3MueC1pbnZhbGlkXT1cImludmFsaWRcIlxyXG4gIFtjbGFzcy54LXNsaWRlci1zZWxlY3QtcmV2ZXJzZV09XCJyZXZlcnNlXCJcclxuPlxyXG4gIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgW2NsYXNzLngtc2xpZGVyLXNlbGVjdC1sYWJlbC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtzdHlsZS53aWR0aF09XCJsYWJlbFdpZHRoXCIgW25nQ2xhc3NdPVwibGFiZWxNYXBcIj57eyBsYWJlbCB9fTwvbGFiZWw+XHJcbiAgPGRpdiBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1pbm5lclwiICNpbm5lclJlZiAoY2xpY2spPVwib25Jbm5lckNsaWNrKCRldmVudClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3QtcmFpbFwiICNyYWlsUmVmPlxyXG4gICAgICA8ZGl2PjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1zbGlkZXItc2VsZWN0LXRyYWNrXCIgI3RyYWNrUmVmPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1zbGlkZXItc2VsZWN0LXByb2Nlc3NcIiAjcHJvY2Vzc1JlZj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1kcmFnc1wiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgI2RyYWdSZWZcclxuICAgICAgICBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1kcmFnXCJcclxuICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXHJcbiAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW2Nka0RyYWdCb3VuZGFyeV09XCJpbm5lclJlZlwiXHJcbiAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cInN0YXJ0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNka0RyYWdFbmRlZCk9XCJlbmRlZCgkZXZlbnQpXCJcclxuICAgICAgICAoY2RrRHJhZ01vdmVkKT1cIm1vdmVkKCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgI3Rvb2x0aXBcclxuICAgICAgICAgIHgtdG9vbHRpcFxyXG4gICAgICAgICAgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3QtYnV0dG9uXCJcclxuICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNob3dUb29sdGlwXCJcclxuICAgICAgICAgIFtjb250ZW50XT1cImRpc3BsYXlWYWx1ZVwiXHJcbiAgICAgICAgICBbdmlzaWJsZV09XCJ2aXNpYmxlXCJcclxuICAgICAgICAgIFttYW51YWxdPVwibWFudWFsXCJcclxuICAgICAgICA+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
371
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9zbGlkZXItc2VsZWN0L3NsaWRlci1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvc2xpZGVyLXNlbGVjdC9zbGlkZXItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFDTCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUl2QixTQUFTLEVBR1QsV0FBVyxFQUNYLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUVwQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFDTCxRQUFRLEVBQ1IsWUFBWSxFQUNaLE9BQU8sRUFDUCxXQUFXLEVBR1gsU0FBUyxFQUNULFFBQVEsRUFDUixPQUFPLEVBQ1IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQXlDLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFFdkQsTUFRYSxzQkFDWCxTQUFRLHFCQUFxQjtJQVE3QixJQUFtRCxXQUFXO1FBQzVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBOEJELElBQWEsZUFBZTtRQUMxQixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFB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LENBQUM7a0lBL1dVLHNCQUFzQjtzSEFBdEIsc0JBQXNCLDBIQUZ0QixDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLGtsQkFrQnhDLE9BQU8sOERBSkosaUJBQWlCLHVFQ3pEakMscStIQTRHQTs7U0QvRGEsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0UsR0FBRyxtQkFBbUIsRUFBRSxpQkFHbkIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMsd0JBQXdCLENBQUM7c0xBTU4sWUFBWTtzQkFBeEQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNFLFlBQVk7c0JBQXhELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDQSxVQUFVO3NCQUFwRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0QsT0FBTztzQkFBOUMsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNLLFVBQVU7c0JBQXBELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDVSxXQUFXO3NCQUE3RCxXQUFXO3VCQUFDLGdDQUFnQztnQkFHWixRQUFRO3NCQUF4QyxZQUFZO3VCQUFDLGlCQUFpQjtnQkFJWCxPQUFPO3NCQUExQixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBYVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJ0BuZy1uZXN0L3VpL3Rvb2x0aXAnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBRdWVyeUxpc3RcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBYU2xpZGVyU2VsZWN0UHJvcGVydHksXHJcbiAgWFNsaWRlclNlbGVjdFByZWZpeCxcclxuICBYU2xpZGVyU2VsZWN0TWFya1xyXG59IGZyb20gJy4vc2xpZGVyLXNlbGVjdC5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgWElzRW1wdHksXHJcbiAgWElzVW5kZWZpbmVkLFxyXG4gIFhSZXNpemUsXHJcbiAgWENsZWFyQ2xhc3MsXHJcbiAgWENvbmZpZ1NlcnZpY2UsXHJcbiAgWFJlc2l6ZU9ic2VydmVyLFxyXG4gIFhJc051bWJlcixcclxuICBYSXNBcnJheSxcclxuICBYSXNOdWxsXHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IENka0RyYWdNb3ZlLCBDZGtEcmFnU3RhcnQsIENka0RyYWdFbmQsIENka0RyYWcgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgWFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAbmctbmVzdC91aS9iYXNlLWZvcm0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hTbGlkZXJTZWxlY3RQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVyLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2xpZGVyLXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWFNsaWRlclNlbGVjdENvbXBvbmVudCldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYU2xpZGVyU2VsZWN0Q29tcG9uZW50XHJcbiAgZXh0ZW5kcyBYU2xpZGVyU2VsZWN0UHJvcGVydHlcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XHJcbntcclxuICBAVmlld0NoaWxkKCdzbGlkZXJTZWxlY3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzbGlkZXJTZWxlY3QhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdkcmFnU3RhcnRSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkcmFnU3RhcnRSZWYhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdkcmFnRW5kUmVmJywgeyBzdGF0aWM6IHRydWUgfSkgZHJhZ0VuZFJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3JhaWxSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSByYWlsUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncHJvY2Vzc1JlZicsIHsgc3RhdGljOiB0cnVlIH0pIHByb2Nlc3NSZWYhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLngtc2xpZGVyLXNlbGVjdC12ZXJ0aWNhbCcpIGdldCBnZXRWZXJ0aWNhbCgpIHtcclxuICAgIHJldHVybiB0aGlzLnZlcnRpY2FsO1xyXG4gIH1cclxuICBAVmlld0NoaWxkcmVuKFhUb29sdGlwRGlyZWN0aXZlKSB0b29sdGlwcyE6IFF1ZXJ5TGlzdDxYVG9vbHRpcERpcmVjdGl2ZT47XHJcbiAgdG9vbHRpcFN0YXJ0ITogWFRvb2x0aXBEaXJlY3RpdmU7XHJcbiAgdG9vbHRpcEVuZCE6IFhUb29sdGlwRGlyZWN0aXZlO1xyXG5cclxuICBAVmlld0NoaWxkKENka0RyYWcpIGNka0RyYWchOiBDZGtEcmFnO1xyXG5cclxuICBvdmVycmlkZSB2YWx1ZTogbnVtYmVyIHwgbnVtYmVyW10gPSAwO1xyXG5cclxuICBzdGFydE9mZnNldDogbnVtYmVyID0gMDtcclxuICBzdGFydFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGFydE1hbnVhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0YXJ0ITogbnVtYmVyO1xyXG4gIHN0YXJ0RGlzcGxheVZhbHVlID0gJzAnO1xyXG4gIHNob3dTdGFydFRvb2x0aXAgPSB0cnVlO1xyXG5cclxuICBlbmRPZmZzZXQ6IG51bWJlciA9IDA7XHJcbiAgZW5kVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVuZE1hbnVhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVuZCE6IG51bWJlcjtcclxuICBlbmREaXNwbGF5VmFsdWUgPSAnMCc7XHJcbiAgc2hvd0VuZFRvb2x0aXAgPSB0cnVlO1xyXG5cclxuICBtYXJrTGlzdDogWFNsaWRlclNlbGVjdE1hcmtbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgX3Jlc2l6ZU9ic2VydmVyITogWFJlc2l6ZU9ic2VydmVyO1xyXG4gIGlzTnVtYmVyID0gdHJ1ZTtcclxuICBpc0FycmF5ID0gZmFsc2U7XHJcblxyXG4gIG92ZXJyaWRlIGdldCByZXF1aXJlZElzRW1wdHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0b3IgJiYgdGhpcy5yZXF1aXJlZCAmJiAoWElzRW1wdHkodGhpcy52YWx1ZSkgfHwgdGhpcy52YWx1ZSA9PT0gMCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBudW1iZXJbXSkge1xyXG4gICAgaWYgKFhJc051bGwodmFsdWUpIHx8IFhJc1VuZGVmaW5lZCh2YWx1ZSkpIHtcclxuICAgICAgaWYgKHRoaXMucmFuZ2UpIHtcclxuICAgICAgICB2YWx1ZSA9IFtOdW1iZXIodGhpcy5taW4pLCBOdW1iZXIodGhpcy5taW4pXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YWx1ZSA9IE51bWJlcih0aGlzLm1pbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuaXNOdW1iZXIgPSBYSXNOdW1iZXIodGhpcy52YWx1ZSkgJiYgIVhJc0FycmF5KHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy5pc0FycmF5ID0gWElzQXJyYXkodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLnNldExlZnQoKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0RmxleChcclxuICAgICAgdGhpcy5zbGlkZXJTZWxlY3QubmF0aXZlRWxlbWVudCxcclxuICAgICAgdGhpcy5yZW5kZXJlcixcclxuICAgICAgdGhpcy5qdXN0aWZ5LFxyXG4gICAgICB0aGlzLmFsaWduLFxyXG4gICAgICB0aGlzLmRpcmVjdGlvblxyXG4gICAgKTtcclxuICAgIHRoaXMuc2V0UHJlY2lzaW9uKCk7XHJcbiAgICB0aGlzLnNldE1hcmtzKCk7XHJcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBYUmVzaXplKHRoaXMuc2xpZGVyU2VsZWN0Lm5hdGl2ZUVsZW1lbnQpXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgzMCksIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIgPSB4LnJlc2l6ZU9ic2VydmVyO1xyXG4gICAgICAgIHRoaXMuc2V0TGVmdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy50b29sdGlwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcFN0YXJ0ID0gdGhpcy50b29sdGlwcy5maXJzdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRvb2x0aXBzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy50b29sdGlwRW5kID0gdGhpcy50b29sdGlwcy5sYXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlKCkge1xyXG4gICAgY29uc3QgZ2V0VmFsID0gKG9mZnNldDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KFxyXG4gICAgICAgIE51bWJlcihcclxuICAgICAgICAgICgoTnVtYmVyKHRoaXMubWF4KSAtIE51bWJlcih0aGlzLm1pbikpICogTnVtYmVyKG9mZnNldCkpIC8gMTAwICsgTnVtYmVyKHRoaXMubWluKVxyXG4gICAgICAgICkudG9GaXhlZChOdW1iZXIodGhpcy5wcmVjaXNpb24pKVxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHN0YXJ0VmFsID0gZ2V0VmFsKHRoaXMuc3RhcnRPZmZzZXQpO1xyXG4gICAgaWYgKHRoaXMuaXNOdW1iZXIpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHN0YXJ0VmFsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZW5kVmFsID0gZ2V0VmFsKHRoaXMuZW5kT2Zmc2V0KTtcclxuICAgICAgaWYgKGVuZFZhbCA8IHN0YXJ0VmFsKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IFtlbmRWYWwsIHN0YXJ0VmFsXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gW3N0YXJ0VmFsLCBlbmRWYWxdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXREaXNwbGF5VmFsdWUoKTtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2xhc3NNYXAoKSB7XHJcbiAgICBYQ2xlYXJDbGFzcyh0aGlzLmxhYmVsTWFwKTtcclxuICAgIHRoaXMubGFiZWxNYXBbYHgtdGV4dC1hbGlnbi0ke3RoaXMubGFiZWxBbGlnbn1gXSA9IHRoaXMubGFiZWxBbGlnbiA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldE9mZnNldCh2YWw6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIE1hdGguYWJzKFxyXG4gICAgICBNYXRoLnJvdW5kKFxyXG4gICAgICAgICgodmFsICsgKHRoaXMucmV2ZXJzZSA/IC1OdW1iZXIodGhpcy5taW4pIDogTnVtYmVyKHRoaXMubWluKSkpICogMTAwKSAvXHJcbiAgICAgICAgICAoTnVtYmVyKHRoaXMubWF4KSAtIE51bWJlcih0aGlzLm1pbikpXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRMZWZ0KCkge1xyXG4gICAgbGV0IHN0YXJ0VmFsID0gMCxcclxuICAgICAgZW5kVmFsID0gMDtcclxuXHJcbiAgICBpZiAodGhpcy5pc051bWJlcikge1xyXG4gICAgICBzdGFydFZhbCA9IHRoaXMudmFsdWUgYXMgbnVtYmVyO1xyXG4gICAgfSBlbHNlIGlmIChYSXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDEpIHtcclxuICAgICAgc3RhcnRWYWwgPSB0aGlzLnZhbHVlWzBdO1xyXG4gICAgICBlbmRWYWwgPSB0aGlzLnZhbHVlWzFdO1xyXG5cclxuICAgICAgdGhpcy5lbmRPZmZzZXQgPSB0aGlzLmdldE9mZnNldChlbmRWYWwpO1xyXG4gICAgICBjb25zdCBlbmQgPSB0aGlzLmVuZE9mZnNldDtcclxuICAgICAgdGhpcy5lbmQgPSBlbmQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdGFydE9mZnNldCA9IHRoaXMuZ2V0T2Zmc2V0KHN0YXJ0VmFsKTtcclxuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGFydE9mZnNldDtcclxuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcclxuXHJcbiAgICB0aGlzLnNldERyYWcoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldERpc3BsYXlWYWx1ZSgpIHtcclxuICAgIGNvbnN0IGRpc3BsYXlWYWwgPSAodmFsOiBudW1iZXIpID0+IHtcclxuICAgICAgcmV0dXJuIE51bWJlcih2YWwpLnRvRml4ZWQoTnVtYmVyKHRoaXMucHJlY2lzaW9uKSk7XHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuaXNOdW1iZXIpIHtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXlWYWx1ZSA9IGRpc3BsYXlWYWwodGhpcy52YWx1ZSBhcyBudW1iZXIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKFhJc0FycmF5KHRoaXMudmFsdWUpICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0T2Zmc2V0ID4gdGhpcy5lbmRPZmZzZXQpIHtcclxuICAgICAgICAgIHRoaXMuc3RhcnREaXNwbGF5VmFsdWUgPSBkaXNwbGF5VmFsKHRoaXMudmFsdWVbMV0pO1xyXG4gICAgICAgICAgdGhpcy5lbmREaXNwbGF5VmFsdWUgPSBkaXNwbGF5VmFsKHRoaXMudmFsdWVbMF0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0RGlzcGxheVZhbHVlID0gZGlzcGxheVZhbCh0aGlzLnZhbHVlWzBdKTtcclxuICAgICAgICAgIHRoaXMuZW5kRGlzcGxheVZhbHVlID0gZGlzcGxheVZhbCh0aGlzLnZhbHVlWzFdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFByZWNpc2lvbigpIHtcclxuICAgIGlmIChYSXNVbmRlZmluZWQodGhpcy5wcmVjaXNpb24pIHx8ICFYSXNFbXB0eSh0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGxldCBzdGVwU3RyID0gU3RyaW5nKHRoaXMuc3RlcCk7XHJcbiAgICAgIGxldCBpbmRleHBvaW50ID0gc3RlcFN0ci5pbmRleE9mKCcuJyk7XHJcbiAgICAgIGlmIChpbmRleHBvaW50ID09PSAtMSkge1xyXG4gICAgICAgIHRoaXMucHJlY2lzaW9uID0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnByZWNpc2lvbiA9IHN0ZXBTdHIubGVuZ3RoIC0gKGluZGV4cG9pbnQgKyAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TWFya3MoKSB7XHJcbiAgICBpZiAoIXRoaXMubWFya3MpIHJldHVybjtcclxuICAgIGZvciAobGV0IG1hcmsgb2YgdGhpcy5tYXJrcykge1xyXG4gICAgICBjb25zdCBtazogWFNsaWRlclNlbGVjdE1hcmsgPSB7XHJcbiAgICAgICAgdmFsdWU6IG1hcmsudmFsdWUsXHJcbiAgICAgICAgbGFiZWw6IG1hcmsubGFiZWwsXHJcbiAgICAgICAgc3R5bGU6IHsgLi4ubWFyay5zdHlsZSB9XHJcbiAgICAgIH07XHJcbiAgICAgIG1rLm9mZnNldCA9IHRoaXMuZ2V0T2Zmc2V0KG1hcmsudmFsdWUpO1xyXG5cclxuICAgICAgaWYgKHRoaXMucmV2ZXJzZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnZlcnRpY2FsKSB7XHJcbiAgICAgICAgICBtay5zdHlsZSFbJ3RvcCddID0gYCR7bWsub2Zmc2V0fSVgO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBtay5zdHlsZSFbJ3JpZ2h0J10gPSBgJHttay5vZmZzZXR9JWA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLnZlcnRpY2FsKSB7XHJcbiAgICAgICAgICBtay5zdHlsZSFbJ2JvdHRvbSddID0gYCR7bWsub2Zmc2V0fSVgO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBtay5zdHlsZSFbJ2xlZnQnXSA9IGAke21rLm9mZnNldH0lYDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tYXJrTGlzdC5wdXNoKG1rKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0ZWQoZHJhZzogQ2RrRHJhZ1N0YXJ0LCB0eXBlOiAnc3RhcnQnIHwgJ2VuZCcgfCAnYm90aCcgPSAnc3RhcnQnKSB7XHJcbiAgICBpZiAoWydzdGFydCcsICdib3RoJ10uaW5jbHVkZXModHlwZSkpIHtcclxuICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnN0YXJ0T2Zmc2V0O1xyXG4gICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XHJcbiAgICAgIGlmICh0aGlzLnNob3dTdGFydFRvb2x0aXApIHtcclxuICAgICAgICB0aGlzLnN0YXJ0TWFudWFsID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN0YXJ0VmlzaWJsZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChbJ2VuZCcsICdib3RoJ10uaW5jbHVkZXModHlwZSkpIHtcclxuICAgICAgY29uc3QgZW5kID0gdGhpcy5lbmRPZmZzZXQ7XHJcbiAgICAgIHRoaXMuZW5kID0gZW5kO1xyXG4gICAgICBpZiAodGhpcy5zaG93RW5kVG9vbHRpcCkge1xyXG4gICAgICAgIHRoaXMuZW5kTWFudWFsID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVuZFZpc2libGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sVmFsaWRhdG9yKCk7XHJcbiAgICB0aGlzLmRyYWdTdGFydEVtaXQuZW1pdChkcmFnKTtcclxuICB9XHJcblxyXG4gIG1vdmVkKGRyYWc6IENka0RyYWdNb3ZlLCB0eXBlOiAnc3RhcnQnIHwgJ2VuZCcgfCAnYm90aCcgPSAnc3RhcnQnKSB7XHJcbiAgICBsZXQgdHJhbnNmb3JtID0gZHJhZy5zb3VyY2UuZ2V0RnJlZURyYWdQb3NpdGlvbigpO1xyXG4gICAgdGhpcy5zZXREcmFnKHRoaXMudmVydGljYWwgPyB0cmFuc2Zvcm0ueSA6IHRyYW5zZm9ybS54LCB0eXBlKTtcclxuICAgIGRyYWcuc291cmNlLnJlc2V0KCk7XHJcbiAgICBpZiAoWydzdGFydCcsICdib3RoJ10uaW5jbHVkZXModHlwZSkgJiYgdGhpcy5zaG93U3RhcnRUb29sdGlwKSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcFN0YXJ0LnVwZGF0ZVBvcnRhbCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKFsnZW5kJywgJ2JvdGgnXS5pbmNsdWRlcyh0eXBlKSAmJiB0aGlzLnNob3dFbmRUb29sdGlwKSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcEVuZC51cGRhdGVQb3J0YWwoKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlKCk7XHJcbiAgICB0aGlzLmRyYWdNb3ZlRW1pdC5lbWl0KGRyYWcpO1xyXG4gIH1cclxuXHJcbiAgZW5kZWQoZHJhZzogQ2RrRHJhZ0VuZCwgdHlwZTogJ3N0YXJ0JyB8ICdlbmQnIHwgJ2JvdGgnID0gJ3N0YXJ0Jykge1xyXG4gICAgaWYgKFsnc3RhcnQnLCAnYm90aCddLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgIGlmICh0aGlzLnNob3dTdGFydFRvb2x0aXApIHtcclxuICAgICAgICB0aGlzLnN0YXJ0TWFudWFsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFydFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKFsnZW5kJywgJ2JvdGgnXS5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICBpZiAodGhpcy5zaG93RW5kVG9vbHRpcCkge1xyXG4gICAgICAgIHRoaXMuZW5kTWFudWFsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lbmRWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuZHJhZ0VuZEVtaXQuZW1pdChkcmFnKTtcclxuICB9XHJcblxyXG4gIHNldERyYWcoZGlzdGFuY2U6IG51bWJlciA9IDAsIHR5cGU6ICdzdGFydCcgfCAnZW5kJyB8ICdib3RoJyA9ICdib3RoJykge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnJhaWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgIT09ICdmdW5jdGlvbicpIHJldHVybjtcclxuICAgIGxldCByYWlsQm94ID0gdGhpcy5yYWlsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBsZXQgcmFpbEJveExlbmd0aCA9IHRoaXMudmVydGljYWwgPyByYWlsQm94LmhlaWdodCA6IHJhaWxCb3gud2lkdGg7XHJcbiAgICBsZXQgc3RlcExlbmd0aCA9IHJhaWxCb3hMZW5ndGggLyAoKE51bWJlcih0aGlzLm1heCkgLSBOdW1iZXIodGhpcy5taW4pKSAvIE51bWJlcih0aGlzLnN0ZXApKTtcclxuICAgIGxldCBvZmZzZXQgPSBNYXRoLmFicyhkaXN0YW5jZSAlIHN0ZXBMZW5ndGgpO1xyXG4gICAgbGV0IGRpcyA9XHJcbiAgICAgIG9mZnNldCA8IHN0ZXBMZW5ndGggLyAyXHJcbiAgICAgICAgPyBkaXN0YW5jZSA+IDBcclxuICAgICAgICAgID8gZGlzdGFuY2UgLSBvZmZzZXRcclxuICAgICAgICAgIDogZGlzdGFuY2UgKyBvZmZzZXRcclxuICAgICAgICA6IGRpc3RhbmNlID4gMFxyXG4gICAgICAgID8gZGlzdGFuY2UgKyBzdGVwTGVuZ3RoIC0gb2Zmc2V0XHJcbiAgICAgICAgOiBkaXN0YW5jZSAtIHN0ZXBMZW5ndGggKyBvZmZzZXQ7XHJcblxyXG4gICAgY29uc3Qgc2V0T2Zmc2V0ID0gKGQ6IG51bWJlcikgPT4ge1xyXG4gICAgICBsZXQgeDEgPSAoZCAvIDEwMCkgKiByYWlsQm94TGVuZ3RoO1xyXG4gICAgICBpZiAodGhpcy52ZXJ0aWNhbCkge1xyXG4gICAgICAgIHgxICs9IHRoaXMucmV2ZXJzZSA/IGRpcyA6IC1kaXM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgeDEgKz0gdGhpcy5yZXZlcnNlID8gLWRpcyA6IGRpcztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gTWF0aC5yb3VuZCgoeDEgLyByYWlsQm94TGVuZ3RoKSAqIDEwMCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0eXBlID09PSAnYm90aCcpIHtcclxuICAgICAgdGhpcy5zdGFydE9mZnNldCA9IHNldE9mZnNldCh0aGlzLnN0YXJ0KTtcclxuICAgICAgdGhpcy5lbmRPZmZzZXQgPSBzZXRPZmZzZXQodGhpcy5lbmQpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRPZmZzZXQgPSBzZXRPZmZzZXQodGhpcy5zdGFydCk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlbmQnKSB7XHJcbiAgICAgIHRoaXMuZW5kT2Zmc2V0ID0gc2V0T2Zmc2V0KHRoaXMuZW5kKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldERyYWdTdHlsZXMoKTtcclxuICB9XHJcblxyXG4gIHNldERyYWdTdHlsZXMoKSB7XHJcbiAgICBpZiAodGhpcy52ZXJ0aWNhbCkge1xyXG4gICAgICBpZiAodGhpcy5pc0FycmF5KSB7XHJcbiAgICAgICAgY29uc3Qgd2QgPSBNYXRoLmFicyh0aGlzLmVuZE9mZnNldCAtIHRoaXMuc3RhcnRPZmZzZXQpO1xyXG4gICAgICAgIGNvbnN0IGx0ID0gdGhpcy5lbmRPZmZzZXQgPiB0aGlzLnN0YXJ0T2Zmc2V0ID8gdGhpcy5zdGFydE9mZnNldCA6IHRoaXMuZW5kT2Zmc2V0O1xyXG4gICAgICAgIGlmICh0aGlzLnJldmVyc2UpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnU3RhcnRSZWYubmF0aXZlRWxlbWVudCwgJ3RvcCcsIGAke3RoaXMuc3RhcnRPZmZzZXR9JWApO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYWdFbmRSZWYubmF0aXZlRWxlbWVudCwgJ3RvcCcsIGAke3RoaXMuZW5kT2Zmc2V0fSVgKTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcm9jZXNzUmVmLm5hdGl2ZUVsZW1lbnQsICd0b3AnLCBgJHtsdH0lYCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnU3RhcnRSZWYubmF0aXZlRWxlbWVudCwgJ2JvdHRvbScsIGAke3RoaXMuc3RhcnRPZmZzZXR9JWApO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYWdFbmRSZWYubmF0aXZlRWxlbWVudCwgJ2JvdHRvbScsIGAke3RoaXMuZW5kT2Zmc2V0fSVgKTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcm9jZXNzUmVmLm5hdGl2ZUVsZW1lbnQsICdib3R0b20nLCBgJHtsdH0lYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcm9jZXNzUmVmLm5hdGl2ZUVsZW1lbnQsICdoZWlnaHQnLCBgJHt3ZH0lYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmV2ZXJzZSkge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYWdTdGFydFJlZi5uYXRpdmVFbGVtZW50LCAndG9wJywgYCR7dGhpcy5zdGFydE9mZnNldH0lYCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnU3RhcnRSZWYubmF0aXZlRWxlbWVudCwgJ2JvdHRvbScsIGAke3RoaXMuc3RhcnRPZmZzZXR9JWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJvY2Vzc1JlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgYCR7dGhpcy5zdGFydE9mZnNldH0lYCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmlzQXJyYXkpIHtcclxuICAgICAgICBjb25zdCB3ZCA9IE1hdGguYWJzKHRoaXMuZW5kT2Zmc2V0IC0gdGhpcy5zdGFydE9mZnNldCk7XHJcbiAgICAgICAgY29uc3QgbHQgPSB0aGlzLmVuZE9mZnNldCA+IHRoaXMuc3RhcnRPZmZzZXQgPyB0aGlzLnN0YXJ0T2Zmc2V0IDogdGhpcy5lbmRPZmZzZXQ7XHJcbiAgICAgICAgaWYgKHRoaXMucmV2ZXJzZSkge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYWdTdGFydFJlZi5uYXRpdmVFbGVtZW50LCAncmlnaHQnLCBgJHt0aGlzLnN0YXJ0T2Zmc2V0fSVgKTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnRW5kUmVmLm5hdGl2ZUVsZW1lbnQsICdyaWdodCcsIGAke3RoaXMuZW5kT2Zmc2V0fSVgKTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcm9jZXNzUmVmLm5hdGl2ZUVsZW1lbnQsICdyaWdodCcsIGAke2x0fSVgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYWdTdGFydFJlZi5uYXRpdmVFbGVtZW50LCAnbGVmdCcsIGAke3RoaXMuc3RhcnRPZmZzZXR9JWApO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYWdFbmRSZWYubmF0aXZlRWxlbWVudCwgJ2xlZnQnLCBgJHt0aGlzLmVuZE9mZnNldH0lYCk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJvY2Vzc1JlZi5uYXRpdmVFbGVtZW50LCAnbGVmdCcsIGAke2x0fSVgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnByb2Nlc3NSZWYubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7d2R9JWApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLnJldmVyc2UpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnU3RhcnRSZWYubmF0aXZlRWxlbWVudCwgJ3JpZ2h0JywgYCR7dGhpcy5zdGFydE9mZnNldH0lYCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnU3RhcnRSZWYubmF0aXZlRWxlbWVudCwgJ2xlZnQnLCBgJHt0aGlzLnN0YXJ0T2Zmc2V0fSVgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnByb2Nlc3NSZWYubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7dGhpcy5zdGFydE9mZnNldH0lYCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvcm1Db250cm9sQ2hhbmdlcygpIHtcclxuICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICNzbGlkZXJTZWxlY3RcclxuICBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdFwiXHJcbiAgW2NsYXNzLngtZmxleF09XCJqdXN0aWZ5IHx8IGFsaWduIHx8IGRpcmVjdGlvblwiXHJcbiAgW2NsYXNzLngtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtjbGFzcy54LXJlcXVpcmVkXT1cInJlcXVpcmVkSXNFbXB0eVwiXHJcbiAgW2NsYXNzLngtaW52YWxpZF09XCJpbnZhbGlkXCJcclxuICBbY2xhc3MueC1zbGlkZXItc2VsZWN0LXJldmVyc2VdPVwicmV2ZXJzZVwiXHJcbiAgW2NsYXNzLngtc2xpZGVyLXNlbGVjdC1yYW5nZV09XCJyYW5nZVwiXHJcbj5cclxuICA8bGFiZWxcclxuICAgICpuZ0lmPVwibGFiZWxcIlxyXG4gICAgW2NsYXNzLngtc2xpZGVyLXNlbGVjdC1sYWJlbC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXHJcbiAgICBbc3R5bGUud2lkdGhdPVwibGFiZWxXaWR0aFwiXHJcbiAgICBbbmdDbGFzc109XCJsYWJlbE1hcFwiXHJcbiAgICA+e3sgbGFiZWwgfX08L2xhYmVsXHJcbiAgPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3QtaW5uZXJcIiAjaW5uZXJSZWY+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1zbGlkZXItc2VsZWN0LXJhaWxcIiAjcmFpbFJlZj5cclxuICAgICAgPGRpdj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1kcmFnc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1zbGlkZXItc2VsZWN0LXRyYWNrXCIgI3RyYWNrUmVmPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICNwcm9jZXNzUmVmXHJcbiAgICAgICAgICBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1wcm9jZXNzXCJcclxuICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgIFtjZGtEcmFnTG9ja0F4aXNdPVwidmVydGljYWwgPyAneScgOiAneCdcIlxyXG4gICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJkaXNhYmxlZCB8fCAhcmFuZ2VcIlxyXG4gICAgICAgICAgW2Nka0RyYWdCb3VuZGFyeV09XCJ0cmFja1JlZlwiXHJcbiAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwic3RhcnRlZCgkZXZlbnQsICdib3RoJylcIlxyXG4gICAgICAgICAgKGNka0RyYWdFbmRlZCk9XCJlbmRlZCgkZXZlbnQsICdib3RoJylcIlxyXG4gICAgICAgICAgKGNka0RyYWdNb3ZlZCk9XCJtb3ZlZCgkZXZlbnQsICdib3RoJylcIlxyXG4gICAgICAgID48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3QtbWFya3NcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwieC1zbGlkZXItc2VsZWN0LW1hcmtcIiBbbmdTdHlsZV09XCJtYXJrLnN0eWxlXCIgKm5nRm9yPVwibGV0IG1hcmsgb2YgbWFya0xpc3RcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwieC1zbGlkZXItc2VsZWN0LW1hcmstbGFiZWxcIj57eyBtYXJrLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICNkcmFnU3RhcnRSZWZcclxuICAgICAgICBjbGFzcz1cIngtc2xpZGVyLXNlbGVjdC1kcmFnXCJcclxuICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgW2Nka0RyYWdMb2NrQXhpc109XCJ2ZXJ0aWNhbCA/ICd5JyA6ICd4J1wiXHJcbiAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW2Nka0RyYWdCb3VuZGFyeV09XCJpbm5lclJlZlwiXHJcbiAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cInN0YXJ0ZWQoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgKGNka0RyYWdFbmRlZCk9XCJlbmRlZCgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAoY2RrRHJhZ01vdmVkKT1cIm1vdmVkKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgI3Rvb2x0aXBTdGFydFxyXG4gICAgICAgICAgeC10b29sdGlwXHJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3QtYnV0dG9uXCJcclxuICAgICAgICAgIFtjbGFzcy54LXNsaWRlci1zZWxlY3QtYnV0dG9uLWFjdGl2ZWRdPVwic3RhcnRWaXNpYmxlXCJcclxuICAgICAgICAgIFtjbGFzcy54LXNsaWRlci1zZWxlY3QtY3VzdG9tLWJ1dHRvbl09XCJjdXN0b21CdXR0b25cIlxyXG4gICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2hvd1Rvb2x0aXAgJiYgIXNob3dTdGFydFRvb2x0aXBcIlxyXG4gICAgICAgICAgW2NvbnRlbnRdPVwidG9vbHRpcFN0YXJ0VHBsXCJcclxuICAgICAgICAgIFt2aXNpYmxlXT1cInN0YXJ0VmlzaWJsZVwiXHJcbiAgICAgICAgICBbbWFudWFsXT1cInN0YXJ0TWFudWFsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiY3VzdG9tQnV0dG9uXCI+e3sgY3VzdG9tQnV0dG9uIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICN0b29sdGlwU3RhcnRUcGw+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwidG9vbHRpcEN1c3RvbTsgY29udGV4dDogeyAkdmFsdWU6IHN0YXJ0RGlzcGxheVZhbHVlIH1cIj57e1xyXG4gICAgICAgICAgICBzdGFydERpc3BsYXlWYWx1ZVxyXG4gICAgICAgICAgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIFtoaWRkZW5dPVwiIXJhbmdlXCJcclxuICAgICAgICAjZHJhZ0VuZFJlZlxyXG4gICAgICAgIGNsYXNzPVwieC1zbGlkZXItc2VsZWN0LWRyYWdcIlxyXG4gICAgICAgIGNka0RyYWdcclxuICAgICAgICBbY2RrRHJhZ0xvY2tBeGlzXT1cInZlcnRpY2FsID8gJ3knIDogJ3gnXCJcclxuICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbY2RrRHJhZ0JvdW5kYXJ5XT1cImlubmVyUmVmXCJcclxuICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwic3RhcnRlZCgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgKGNka0RyYWdFbmRlZCk9XCJlbmRlZCgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgKGNka0RyYWdNb3ZlZCk9XCJtb3ZlZCgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAjdG9vbHRpcEVuZFxyXG4gICAgICAgICAgeC10b29sdGlwXHJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJ4LXNsaWRlci1zZWxlY3QtYnV0dG9uXCJcclxuICAgICAgICAgIFtjbGFzcy54LXNsaWRlci1zZWxlY3QtYnV0dG9uLWFjdGl2ZWRdPVwiZW5kVmlzaWJsZVwiXHJcbiAgICAgICAgICBbY2xhc3MueC1zbGlkZXItc2VsZWN0LWN1c3RvbS1idXR0b25dPVwiY3VzdG9tQnV0dG9uXCJcclxuICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNob3dUb29sdGlwICYmICFzaG93RW5kVG9vbHRpcFwiXHJcbiAgICAgICAgICBbY29udGVudF09XCJ0b29sdGlwRW5kVHBsXCJcclxuICAgICAgICAgIFt2aXNpYmxlXT1cImVuZFZpc2libGVcIlxyXG4gICAgICAgICAgW21hbnVhbF09XCJlbmRNYW51YWxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJjdXN0b21CdXR0b25cIj57eyBjdXN0b21CdXR0b24gfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBFbmRUcGw+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwidG9vbHRpcEN1c3RvbTsgY29udGV4dDogeyAkdmFsdWU6IGVuZERpc3BsYXlWYWx1ZSB9XCI+e3tcclxuICAgICAgICAgICAgZW5kRGlzcGxheVZhbHVlXHJcbiAgICAgICAgICB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=