@ng-nest/ui 18.0.13 → 19.0.1

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 (897) hide show
  1. package/README.md +1 -1
  2. package/affix/affix.property.d.ts +1 -1
  3. package/alert/alert.property.d.ts +1 -1
  4. package/anchor/anchor.component.d.ts +3 -1
  5. package/anchor/anchor.property.d.ts +2 -2
  6. package/api/api.component.d.ts +1 -1
  7. package/auto-complete/auto-complete.component.d.ts +1 -3
  8. package/auto-complete/auto-complete.property.d.ts +17 -20
  9. package/avatar/avatar.property.d.ts +2 -2
  10. package/back-top/back-top.property.d.ts +1 -1
  11. package/badge/badge.property.d.ts +1 -1
  12. package/base-form/base-form.component.d.ts +1 -1
  13. package/base-form/base-form.property.d.ts +1 -105
  14. package/button/button.property.d.ts +2 -2
  15. package/calendar/calendar.property.d.ts +1 -1
  16. package/card/card.property.d.ts +1 -1
  17. package/carousel/carousel-panel.component.d.ts +1 -1
  18. package/carousel/carousel.property.d.ts +2 -2
  19. package/cascade/cascade.component.d.ts +1 -2
  20. package/cascade/cascade.property.d.ts +17 -28
  21. package/checkbox/checkbox.property.d.ts +22 -23
  22. package/collapse/collapse.component.d.ts +1 -3
  23. package/collapse/collapse.property.d.ts +2 -16
  24. package/color/color.property.d.ts +1 -1
  25. package/color-picker/color-picker-portal.component.d.ts +10 -10
  26. package/color-picker/color-picker.component.d.ts +0 -1
  27. package/color-picker/color-picker.property.d.ts +16 -16
  28. package/comment/comment.property.d.ts +2 -2
  29. package/container/container.property.d.ts +4 -4
  30. package/crumb/crumb.property.d.ts +1 -1
  31. package/date-picker/date-picker-portal.component.d.ts +1 -1
  32. package/date-picker/date-picker.component.d.ts +0 -1
  33. package/date-picker/date-picker.property.d.ts +36 -36
  34. package/date-picker/date-range-portal.component.d.ts +5 -5
  35. package/description/description.property.d.ts +2 -2
  36. package/dialog/dialog-portal.component.d.ts +5 -5
  37. package/dialog/dialog-portal.directives.d.ts +2 -3
  38. package/dialog/dialog-ref.d.ts +4 -2
  39. package/dialog/dialog.component.d.ts +0 -5
  40. package/dialog/dialog.property.d.ts +14 -10
  41. package/drag/drag.property.d.ts +1 -1
  42. package/drawer/drawer.property.d.ts +2 -2
  43. package/dropdown/dropdown.component.d.ts +0 -1
  44. package/dropdown/dropdown.property.d.ts +1 -1
  45. package/empty/empty.property.d.ts +1 -1
  46. package/fesm2022/ng-nest-ui-affix.mjs +14 -12
  47. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  48. package/fesm2022/ng-nest-ui-alert.mjs +14 -12
  49. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  50. package/fesm2022/ng-nest-ui-anchor.mjs +33 -26
  51. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  52. package/fesm2022/ng-nest-ui-api.mjs +11 -11
  53. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  54. package/fesm2022/ng-nest-ui-auto-complete.mjs +29 -38
  55. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  56. package/fesm2022/ng-nest-ui-avatar.mjs +18 -18
  57. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  58. package/fesm2022/ng-nest-ui-back-top.mjs +14 -13
  59. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  60. package/fesm2022/ng-nest-ui-badge.mjs +11 -11
  61. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  62. package/fesm2022/ng-nest-ui-base-form.mjs +30 -127
  63. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  64. package/fesm2022/ng-nest-ui-button.mjs +18 -18
  65. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  66. package/fesm2022/ng-nest-ui-calendar.mjs +15 -21
  67. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  68. package/fesm2022/ng-nest-ui-card.mjs +11 -12
  69. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  70. package/fesm2022/ng-nest-ui-carousel.mjs +23 -30
  71. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  72. package/fesm2022/ng-nest-ui-cascade.mjs +17 -23
  73. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  74. package/fesm2022/ng-nest-ui-checkbox.mjs +12 -12
  75. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  76. package/fesm2022/ng-nest-ui-collapse.mjs +22 -44
  77. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  78. package/fesm2022/ng-nest-ui-color-picker.mjs +15 -18
  79. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  80. package/fesm2022/ng-nest-ui-color.mjs +11 -11
  81. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  82. package/fesm2022/ng-nest-ui-comment.mjs +18 -18
  83. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  84. package/fesm2022/ng-nest-ui-container.mjs +36 -36
  85. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  86. package/fesm2022/ng-nest-ui-core.mjs +15 -15
  87. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  88. package/fesm2022/ng-nest-ui-crumb.mjs +11 -11
  89. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  90. package/fesm2022/ng-nest-ui-date-picker.mjs +57 -60
  91. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  92. package/fesm2022/ng-nest-ui-description.mjs +18 -18
  93. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  94. package/fesm2022/ng-nest-ui-dialog.mjs +79 -147
  95. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  96. package/fesm2022/ng-nest-ui-doc.mjs +8 -8
  97. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  98. package/fesm2022/ng-nest-ui-drag.mjs +11 -11
  99. package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
  100. package/fesm2022/ng-nest-ui-drawer.mjs +38 -41
  101. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  102. package/fesm2022/ng-nest-ui-dropdown.mjs +15 -19
  103. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  104. package/fesm2022/ng-nest-ui-empty.mjs +11 -11
  105. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  106. package/fesm2022/ng-nest-ui-examples.mjs +8 -8
  107. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  108. package/fesm2022/ng-nest-ui-find.mjs +11 -11
  109. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  110. package/fesm2022/ng-nest-ui-form.mjs +21 -40
  111. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  112. package/fesm2022/ng-nest-ui-highlight.mjs +14 -14
  113. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  114. package/fesm2022/ng-nest-ui-i18n.mjs +15 -17
  115. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  116. package/fesm2022/ng-nest-ui-icon.mjs +14 -14
  117. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  118. package/fesm2022/ng-nest-ui-image.mjs +24 -24
  119. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  120. package/fesm2022/ng-nest-ui-inner.mjs +11 -11
  121. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  122. package/fesm2022/ng-nest-ui-input-number.mjs +11 -11
  123. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  124. package/fesm2022/ng-nest-ui-input.mjs +19 -19
  125. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  126. package/fesm2022/ng-nest-ui-keyword.mjs +12 -13
  127. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  128. package/fesm2022/ng-nest-ui-layout.mjs +18 -18
  129. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  130. package/fesm2022/ng-nest-ui-link.mjs +11 -11
  131. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  132. package/fesm2022/ng-nest-ui-list.mjs +22 -23
  133. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  134. package/fesm2022/ng-nest-ui-loading.mjs +12 -12
  135. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  136. package/fesm2022/ng-nest-ui-menu.mjs +19 -20
  137. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  138. package/fesm2022/ng-nest-ui-message-box.mjs +11 -13
  139. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  140. package/fesm2022/ng-nest-ui-message.mjs +11 -11
  141. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  142. package/fesm2022/ng-nest-ui-notification.mjs +11 -11
  143. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  144. package/fesm2022/ng-nest-ui-outlet.mjs +8 -8
  145. package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
  146. package/fesm2022/ng-nest-ui-page-header.mjs +11 -11
  147. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  148. package/fesm2022/ng-nest-ui-pagination.mjs +11 -11
  149. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  150. package/fesm2022/ng-nest-ui-pattern.mjs +8 -8
  151. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  152. package/fesm2022/ng-nest-ui-popconfirm.mjs +11 -11
  153. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  154. package/fesm2022/ng-nest-ui-popover.mjs +15 -15
  155. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  156. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  157. package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
  158. package/fesm2022/ng-nest-ui-progress.mjs +11 -11
  159. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  160. package/fesm2022/ng-nest-ui-radio.mjs +11 -11
  161. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  162. package/fesm2022/ng-nest-ui-rate.mjs +11 -12
  163. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  164. package/fesm2022/ng-nest-ui-resizable.mjs +12 -12
  165. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  166. package/fesm2022/ng-nest-ui-result.mjs +11 -11
  167. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  168. package/fesm2022/ng-nest-ui-ripple.mjs +11 -12
  169. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  170. package/fesm2022/ng-nest-ui-select.mjs +19 -21
  171. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  172. package/fesm2022/ng-nest-ui-skeleton.mjs +11 -11
  173. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  174. package/fesm2022/ng-nest-ui-slider-select.mjs +11 -22
  175. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  176. package/fesm2022/ng-nest-ui-slider.mjs +11 -11
  177. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  178. package/fesm2022/ng-nest-ui-statistic.mjs +18 -18
  179. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  180. package/fesm2022/ng-nest-ui-steps.mjs +11 -11
  181. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  182. package/fesm2022/ng-nest-ui-switch.mjs +11 -11
  183. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  184. package/fesm2022/ng-nest-ui-table.mjs +43 -36
  185. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  186. package/fesm2022/ng-nest-ui-tabs.mjs +30 -32
  187. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  188. package/fesm2022/ng-nest-ui-tag.mjs +11 -11
  189. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  190. package/fesm2022/ng-nest-ui-text-retract.mjs +11 -11
  191. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  192. package/fesm2022/ng-nest-ui-textarea.mjs +11 -11
  193. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  194. package/fesm2022/ng-nest-ui-theme.mjs +13 -14
  195. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  196. package/fesm2022/ng-nest-ui-time-ago.mjs +8 -8
  197. package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
  198. package/fesm2022/ng-nest-ui-time-picker.mjs +19 -22
  199. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  200. package/fesm2022/ng-nest-ui-time-range.mjs +8 -8
  201. package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
  202. package/fesm2022/ng-nest-ui-timeline.mjs +11 -21
  203. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  204. package/fesm2022/ng-nest-ui-tooltip.mjs +44 -33
  205. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  206. package/fesm2022/ng-nest-ui-transfer.mjs +19 -15
  207. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  208. package/fesm2022/ng-nest-ui-tree-file.mjs +12 -20
  209. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  210. package/fesm2022/ng-nest-ui-tree-select.mjs +104 -64
  211. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  212. package/fesm2022/ng-nest-ui-tree.mjs +27 -22
  213. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  214. package/fesm2022/ng-nest-ui-typography.mjs +11 -11
  215. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  216. package/fesm2022/ng-nest-ui-upload.mjs +17 -20
  217. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  218. package/find/find.property.d.ts +13 -19
  219. package/form/form.property.d.ts +11 -22
  220. package/highlight/highlight.property.d.ts +1 -1
  221. package/icon/icon.property.d.ts +1 -1
  222. package/image/image.property.d.ts +2 -2
  223. package/inner/inner.property.d.ts +1 -1
  224. package/input/input.property.d.ts +18 -21
  225. package/input-number/input-number.property.d.ts +14 -14
  226. package/layout/layout.property.d.ts +2 -2
  227. package/link/link.property.d.ts +1 -1
  228. package/list/list.property.d.ts +13 -13
  229. package/loading/loading.property.d.ts +1 -1
  230. package/menu/menu.property.d.ts +2 -2
  231. package/package.json +42 -216
  232. package/page-header/page-header.property.d.ts +1 -1
  233. package/pagination/pagination.property.d.ts +1 -1
  234. package/popconfirm/popconfirm.property.d.ts +1 -1
  235. package/popover/popover.property.d.ts +1 -1
  236. package/progress/progress.property.d.ts +1 -1
  237. package/radio/radio.property.d.ts +14 -17
  238. package/rate/rate.property.d.ts +15 -23
  239. package/result/result.property.d.ts +1 -1
  240. package/ripple/ripple.property.d.ts +1 -1
  241. package/select/select-portal.component.d.ts +1 -1
  242. package/select/select.component.d.ts +0 -1
  243. package/select/select.property.d.ts +16 -16
  244. package/skeleton/skeleton.property.d.ts +1 -1
  245. package/slider/slider.property.d.ts +1 -1
  246. package/slider-select/slider-select.property.d.ts +14 -18
  247. package/statistic/statistic.property.d.ts +2 -2
  248. package/steps/steps.property.d.ts +1 -1
  249. package/style/core/index.css +87 -174
  250. package/style/core/index.css.map +1 -1
  251. package/style/core/index.scss +32 -5
  252. package/style/directives/index.scss +3 -3
  253. package/style/directives/keyword/index.scss +3 -2
  254. package/style/directives/keyword/mixin.scss +9 -11
  255. package/style/directives/keyword/param.scss +2 -1
  256. package/style/directives/resizable/index.scss +3 -2
  257. package/style/directives/resizable/mixin.scss +122 -16
  258. package/style/directives/resizable/param.scss +2 -1
  259. package/style/directives/ripple/index.scss +3 -2
  260. package/style/directives/ripple/mixin.scss +12 -12
  261. package/style/directives/ripple/param.scss +2 -1
  262. package/style/mixins/compatibility.scss +7 -5
  263. package/style/mixins/form.scss +6 -4
  264. package/style/mixins/hidden.scss +5 -2
  265. package/style/params/index.scss +282 -3
  266. package/switch/switch.property.d.ts +15 -15
  267. package/table/table.component.d.ts +2 -2
  268. package/table/table.property.d.ts +5 -4
  269. package/tabs/tabs.property.d.ts +2 -2
  270. package/tag/tag.property.d.ts +1 -1
  271. package/text-retract/text-retract.property.d.ts +1 -1
  272. package/textarea/textarea.property.d.ts +15 -18
  273. package/theme/theme.property.d.ts +7 -11
  274. package/time-picker/time-picker.component.d.ts +0 -1
  275. package/time-picker/time-picker.property.d.ts +18 -24
  276. package/timeline/timeline.property.d.ts +1 -11
  277. package/tooltip/tooltip.directive.d.ts +5 -3
  278. package/tooltip/tooltip.property.d.ts +1 -1
  279. package/transfer/transfer.property.d.ts +10 -14
  280. package/tree/tree.property.d.ts +7 -2
  281. package/tree-file/tree-file.property.d.ts +1 -1
  282. package/tree-select/tree-select-portal.component.d.ts +2 -5
  283. package/tree-select/tree-select.component.d.ts +13 -6
  284. package/tree-select/tree-select.property.d.ts +16 -26
  285. package/typography/typography.property.d.ts +1 -1
  286. package/upload/upload.component.d.ts +0 -1
  287. package/upload/upload.property.d.ts +10 -10
  288. package/esm2022/affix/affix.component.mjs +0 -12
  289. package/esm2022/affix/affix.module.mjs +0 -16
  290. package/esm2022/affix/affix.property.mjs +0 -51
  291. package/esm2022/affix/ng-nest-ui-affix.mjs +0 -5
  292. package/esm2022/affix/public-api.mjs +0 -4
  293. package/esm2022/alert/alert.component.mjs +0 -73
  294. package/esm2022/alert/alert.module.mjs +0 -16
  295. package/esm2022/alert/alert.property.mjs +0 -313
  296. package/esm2022/alert/ng-nest-ui-alert.mjs +0 -5
  297. package/esm2022/alert/public-api.mjs +0 -4
  298. package/esm2022/anchor/anchor-inner.component.mjs +0 -18
  299. package/esm2022/anchor/anchor.component.mjs +0 -160
  300. package/esm2022/anchor/anchor.module.mjs +0 -17
  301. package/esm2022/anchor/anchor.property.mjs +0 -121
  302. package/esm2022/anchor/ng-nest-ui-anchor.mjs +0 -5
  303. package/esm2022/anchor/public-api.mjs +0 -5
  304. package/esm2022/api/api.component.mjs +0 -18
  305. package/esm2022/api/api.module.mjs +0 -16
  306. package/esm2022/api/api.property.mjs +0 -7
  307. package/esm2022/api/ng-nest-ui-api.mjs +0 -5
  308. package/esm2022/api/public-api.mjs +0 -4
  309. package/esm2022/auto-complete/auto-complete-portal.component.mjs +0 -80
  310. package/esm2022/auto-complete/auto-complete.component.mjs +0 -306
  311. package/esm2022/auto-complete/auto-complete.module.mjs +0 -16
  312. package/esm2022/auto-complete/auto-complete.property.mjs +0 -172
  313. package/esm2022/auto-complete/ng-nest-ui-auto-complete.mjs +0 -5
  314. package/esm2022/auto-complete/public-api.mjs +0 -5
  315. package/esm2022/avatar/avatar-group.component.mjs +0 -19
  316. package/esm2022/avatar/avatar.component.mjs +0 -109
  317. package/esm2022/avatar/avatar.module.mjs +0 -17
  318. package/esm2022/avatar/avatar.property.mjs +0 -143
  319. package/esm2022/avatar/ng-nest-ui-avatar.mjs +0 -5
  320. package/esm2022/avatar/public-api.mjs +0 -5
  321. package/esm2022/back-top/back-top.component.mjs +0 -104
  322. package/esm2022/back-top/back-top.module.mjs +0 -16
  323. package/esm2022/back-top/back-top.property.mjs +0 -50
  324. package/esm2022/back-top/ng-nest-ui-back-top.mjs +0 -5
  325. package/esm2022/back-top/public-api.mjs +0 -4
  326. package/esm2022/badge/badge.component.mjs +0 -63
  327. package/esm2022/badge/badge.module.mjs +0 -16
  328. package/esm2022/badge/badge.property.mjs +0 -133
  329. package/esm2022/badge/ng-nest-ui-badge.mjs +0 -5
  330. package/esm2022/badge/public-api.mjs +0 -4
  331. package/esm2022/base-form/base-form.component.mjs +0 -101
  332. package/esm2022/base-form/base-form.module.mjs +0 -15
  333. package/esm2022/base-form/base-form.property.mjs +0 -237
  334. package/esm2022/base-form/ng-nest-ui-base-form.mjs +0 -5
  335. package/esm2022/base-form/public-api.mjs +0 -4
  336. package/esm2022/button/button.component.mjs +0 -71
  337. package/esm2022/button/button.module.mjs +0 -17
  338. package/esm2022/button/button.property.mjs +0 -331
  339. package/esm2022/button/buttons.component.mjs +0 -55
  340. package/esm2022/button/ng-nest-ui-button.mjs +0 -5
  341. package/esm2022/button/public-api.mjs +0 -5
  342. package/esm2022/calendar/calendar.component.mjs +0 -117
  343. package/esm2022/calendar/calendar.module.mjs +0 -16
  344. package/esm2022/calendar/calendar.property.mjs +0 -110
  345. package/esm2022/calendar/ng-nest-ui-calendar.mjs +0 -5
  346. package/esm2022/calendar/public-api.mjs +0 -4
  347. package/esm2022/card/card.component.mjs +0 -22
  348. package/esm2022/card/card.module.mjs +0 -16
  349. package/esm2022/card/card.property.mjs +0 -77
  350. package/esm2022/card/ng-nest-ui-card.mjs +0 -5
  351. package/esm2022/card/public-api.mjs +0 -4
  352. package/esm2022/carousel/carousel-panel.component.mjs +0 -157
  353. package/esm2022/carousel/carousel.component.mjs +0 -95
  354. package/esm2022/carousel/carousel.module.mjs +0 -17
  355. package/esm2022/carousel/carousel.property.mjs +0 -256
  356. package/esm2022/carousel/ng-nest-ui-carousel.mjs +0 -5
  357. package/esm2022/carousel/public-api.mjs +0 -5
  358. package/esm2022/cascade/cascade-portal.component.mjs +0 -141
  359. package/esm2022/cascade/cascade.component.mjs +0 -238
  360. package/esm2022/cascade/cascade.module.mjs +0 -16
  361. package/esm2022/cascade/cascade.property.mjs +0 -167
  362. package/esm2022/cascade/ng-nest-ui-cascade.mjs +0 -5
  363. package/esm2022/cascade/public-api.mjs +0 -5
  364. package/esm2022/checkbox/checkbox.component.mjs +0 -102
  365. package/esm2022/checkbox/checkbox.module.mjs +0 -16
  366. package/esm2022/checkbox/checkbox.property.mjs +0 -136
  367. package/esm2022/checkbox/ng-nest-ui-checkbox.mjs +0 -5
  368. package/esm2022/checkbox/public-api.mjs +0 -4
  369. package/esm2022/collapse/collapse-panel.component.mjs +0 -55
  370. package/esm2022/collapse/collapse.component.mjs +0 -49
  371. package/esm2022/collapse/collapse.module.mjs +0 -17
  372. package/esm2022/collapse/collapse.property.mjs +0 -189
  373. package/esm2022/collapse/ng-nest-ui-collapse.mjs +0 -5
  374. package/esm2022/collapse/public-api.mjs +0 -5
  375. package/esm2022/color/color.component.mjs +0 -35
  376. package/esm2022/color/color.module.mjs +0 -16
  377. package/esm2022/color/color.property.mjs +0 -71
  378. package/esm2022/color/ng-nest-ui-color.mjs +0 -5
  379. package/esm2022/color/public-api.mjs +0 -4
  380. package/esm2022/color-picker/color-picker-portal.component.mjs +0 -396
  381. package/esm2022/color-picker/color-picker.component.mjs +0 -191
  382. package/esm2022/color-picker/color-picker.module.mjs +0 -16
  383. package/esm2022/color-picker/color-picker.property.mjs +0 -142
  384. package/esm2022/color-picker/ng-nest-ui-color-picker.mjs +0 -5
  385. package/esm2022/color-picker/public-api.mjs +0 -5
  386. package/esm2022/comment/comment-reply.component.mjs +0 -24
  387. package/esm2022/comment/comment.component.mjs +0 -55
  388. package/esm2022/comment/comment.module.mjs +0 -17
  389. package/esm2022/comment/comment.property.mjs +0 -90
  390. package/esm2022/comment/ng-nest-ui-comment.mjs +0 -5
  391. package/esm2022/comment/public-api.mjs +0 -5
  392. package/esm2022/container/aside.component.mjs +0 -25
  393. package/esm2022/container/container.component.mjs +0 -31
  394. package/esm2022/container/container.module.mjs +0 -20
  395. package/esm2022/container/container.property.mjs +0 -115
  396. package/esm2022/container/footer.component.mjs +0 -35
  397. package/esm2022/container/header.component.mjs +0 -35
  398. package/esm2022/container/main.component.mjs +0 -18
  399. package/esm2022/container/ng-nest-ui-container.mjs +0 -5
  400. package/esm2022/container/public-api.mjs +0 -8
  401. package/esm2022/core/animation/badge.mjs +0 -53
  402. package/esm2022/core/animation/connect.mjs +0 -31
  403. package/esm2022/core/animation/consts.mjs +0 -11
  404. package/esm2022/core/animation/drop.mjs +0 -13
  405. package/esm2022/core/animation/fade.mjs +0 -24
  406. package/esm2022/core/animation/move.mjs +0 -179
  407. package/esm2022/core/animation/opacity.mjs +0 -13
  408. package/esm2022/core/animation/public-api.mjs +0 -9
  409. package/esm2022/core/animation/slide.mjs +0 -17
  410. package/esm2022/core/config/config.mjs +0 -3
  411. package/esm2022/core/config/config.service.mjs +0 -54
  412. package/esm2022/core/config/index.mjs +0 -2
  413. package/esm2022/core/config/public-api.mjs +0 -3
  414. package/esm2022/core/functions/chunk.mjs +0 -25
  415. package/esm2022/core/functions/clone-deep.mjs +0 -28
  416. package/esm2022/core/functions/convert.mjs +0 -230
  417. package/esm2022/core/functions/csspx.mjs +0 -17
  418. package/esm2022/core/functions/date.mjs +0 -223
  419. package/esm2022/core/functions/drop.mjs +0 -20
  420. package/esm2022/core/functions/flex.mjs +0 -25
  421. package/esm2022/core/functions/group-by.mjs +0 -14
  422. package/esm2022/core/functions/guid.mjs +0 -11
  423. package/esm2022/core/functions/has-in.mjs +0 -8
  424. package/esm2022/core/functions/order-by.mjs +0 -56
  425. package/esm2022/core/functions/parent-path.mjs +0 -27
  426. package/esm2022/core/functions/property.mjs +0 -20
  427. package/esm2022/core/functions/public-api.mjs +0 -16
  428. package/esm2022/core/functions/remove.mjs +0 -19
  429. package/esm2022/core/functions/resize.mjs +0 -22
  430. package/esm2022/core/interfaces/data.type.mjs +0 -164
  431. package/esm2022/core/interfaces/identify.type.mjs +0 -7
  432. package/esm2022/core/interfaces/index.mjs +0 -2
  433. package/esm2022/core/interfaces/layout.type.mjs +0 -2
  434. package/esm2022/core/interfaces/public-api.mjs +0 -5
  435. package/esm2022/core/interfaces/result-list.type.mjs +0 -2
  436. package/esm2022/core/ng-nest-ui-core.mjs +0 -5
  437. package/esm2022/core/public-api.mjs +0 -8
  438. package/esm2022/core/services/http.service.mjs +0 -58
  439. package/esm2022/core/services/preloading-strategy.service.mjs +0 -24
  440. package/esm2022/core/services/public-api.mjs +0 -6
  441. package/esm2022/core/services/repository.service.mjs +0 -29
  442. package/esm2022/core/services/reuse-strategy.service.mjs +0 -47
  443. package/esm2022/core/services/storage.service.mjs +0 -75
  444. package/esm2022/core/theme/index.mjs +0 -2
  445. package/esm2022/core/theme/public-api.mjs +0 -3
  446. package/esm2022/core/theme/theme.mjs +0 -89
  447. package/esm2022/core/theme/theme.service.mjs +0 -270
  448. package/esm2022/core/util/animation.mjs +0 -26
  449. package/esm2022/core/util/camel-to-kebab.mjs +0 -16
  450. package/esm2022/core/util/check.mjs +0 -15
  451. package/esm2022/core/util/computed-style.mjs +0 -20
  452. package/esm2022/core/util/host.mjs +0 -14
  453. package/esm2022/core/util/html.mjs +0 -12
  454. package/esm2022/core/util/index.mjs +0 -2
  455. package/esm2022/core/util/kebab-to-camel.mjs +0 -16
  456. package/esm2022/core/util/log.mjs +0 -15
  457. package/esm2022/core/util/option.mjs +0 -14
  458. package/esm2022/core/util/public-api.mjs +0 -11
  459. package/esm2022/core/util/sleep.mjs +0 -8
  460. package/esm2022/crumb/crumb.component.mjs +0 -25
  461. package/esm2022/crumb/crumb.module.mjs +0 -16
  462. package/esm2022/crumb/crumb.property.mjs +0 -45
  463. package/esm2022/crumb/ng-nest-ui-crumb.mjs +0 -5
  464. package/esm2022/crumb/public-api.mjs +0 -4
  465. package/esm2022/date-picker/date-picker-portal.component.mjs +0 -196
  466. package/esm2022/date-picker/date-picker.component.mjs +0 -320
  467. package/esm2022/date-picker/date-picker.module.mjs +0 -17
  468. package/esm2022/date-picker/date-picker.property.mjs +0 -770
  469. package/esm2022/date-picker/date-quarter.pipe.mjs +0 -19
  470. package/esm2022/date-picker/date-range-portal.component.mjs +0 -349
  471. package/esm2022/date-picker/date-range.component.mjs +0 -432
  472. package/esm2022/date-picker/ng-nest-ui-date-picker.mjs +0 -5
  473. package/esm2022/date-picker/picker-date.component.mjs +0 -334
  474. package/esm2022/date-picker/picker-month.component.mjs +0 -232
  475. package/esm2022/date-picker/picker-quarter.component.mjs +0 -237
  476. package/esm2022/date-picker/picker-year.component.mjs +0 -233
  477. package/esm2022/date-picker/public-api.mjs +0 -12
  478. package/esm2022/description/description-item.component.mjs +0 -24
  479. package/esm2022/description/description.component.mjs +0 -48
  480. package/esm2022/description/description.module.mjs +0 -17
  481. package/esm2022/description/description.property.mjs +0 -219
  482. package/esm2022/description/ng-nest-ui-description.mjs +0 -5
  483. package/esm2022/description/public-api.mjs +0 -5
  484. package/esm2022/dialog/dialog-container.component.mjs +0 -29
  485. package/esm2022/dialog/dialog-portal.component.mjs +0 -97
  486. package/esm2022/dialog/dialog-portal.directives.mjs +0 -119
  487. package/esm2022/dialog/dialog-ref.mjs +0 -100
  488. package/esm2022/dialog/dialog.component.mjs +0 -282
  489. package/esm2022/dialog/dialog.module.mjs +0 -50
  490. package/esm2022/dialog/dialog.property.mjs +0 -207
  491. package/esm2022/dialog/dialog.service.mjs +0 -122
  492. package/esm2022/dialog/ng-nest-ui-dialog.mjs +0 -5
  493. package/esm2022/dialog/public-api.mjs +0 -9
  494. package/esm2022/doc/doc.component.mjs +0 -18
  495. package/esm2022/doc/doc.module.mjs +0 -16
  496. package/esm2022/doc/doc.property.mjs +0 -7
  497. package/esm2022/doc/ng-nest-ui-doc.mjs +0 -5
  498. package/esm2022/doc/public-api.mjs +0 -4
  499. package/esm2022/drag/drag.directive.mjs +0 -57
  500. package/esm2022/drag/drag.module.mjs +0 -16
  501. package/esm2022/drag/drag.property.mjs +0 -25
  502. package/esm2022/drag/ng-nest-ui-drag.mjs +0 -5
  503. package/esm2022/drag/public-api.mjs +0 -4
  504. package/esm2022/drawer/drawer-container.component.mjs +0 -29
  505. package/esm2022/drawer/drawer-portal.component.mjs +0 -50
  506. package/esm2022/drawer/drawer-portal.directives.mjs +0 -58
  507. package/esm2022/drawer/drawer-ref.mjs +0 -17
  508. package/esm2022/drawer/drawer.component.mjs +0 -95
  509. package/esm2022/drawer/drawer.module.mjs +0 -38
  510. package/esm2022/drawer/drawer.property.mjs +0 -84
  511. package/esm2022/drawer/drawer.service.mjs +0 -65
  512. package/esm2022/drawer/ng-nest-ui-drawer.mjs +0 -5
  513. package/esm2022/drawer/public-api.mjs +0 -10
  514. package/esm2022/dropdown/dropdown-portal.component.mjs +0 -204
  515. package/esm2022/dropdown/dropdown.component.mjs +0 -179
  516. package/esm2022/dropdown/dropdown.module.mjs +0 -16
  517. package/esm2022/dropdown/dropdown.property.mjs +0 -96
  518. package/esm2022/dropdown/ng-nest-ui-dropdown.mjs +0 -5
  519. package/esm2022/dropdown/public-api.mjs +0 -5
  520. package/esm2022/empty/empty.component.mjs +0 -15
  521. package/esm2022/empty/empty.module.mjs +0 -16
  522. package/esm2022/empty/empty.property.mjs +0 -54
  523. package/esm2022/empty/ng-nest-ui-empty.mjs +0 -5
  524. package/esm2022/empty/public-api.mjs +0 -4
  525. package/esm2022/examples/examples.component.mjs +0 -18
  526. package/esm2022/examples/examples.module.mjs +0 -16
  527. package/esm2022/examples/examples.property.mjs +0 -7
  528. package/esm2022/examples/ng-nest-ui-examples.mjs +0 -5
  529. package/esm2022/examples/public-api.mjs +0 -4
  530. package/esm2022/find/find.component.mjs +0 -331
  531. package/esm2022/find/find.module.mjs +0 -16
  532. package/esm2022/find/find.property.mjs +0 -260
  533. package/esm2022/find/ng-nest-ui-find.mjs +0 -5
  534. package/esm2022/find/public-api.mjs +0 -4
  535. package/esm2022/form/control.component.mjs +0 -249
  536. package/esm2022/form/form.component.mjs +0 -116
  537. package/esm2022/form/form.module.mjs +0 -17
  538. package/esm2022/form/form.property.mjs +0 -202
  539. package/esm2022/form/ng-nest-ui-form.mjs +0 -5
  540. package/esm2022/form/public-api.mjs +0 -5
  541. package/esm2022/highlight/highlight.component.mjs +0 -85
  542. package/esm2022/highlight/highlight.module.mjs +0 -16
  543. package/esm2022/highlight/highlight.property.mjs +0 -45
  544. package/esm2022/highlight/highlight.service.mjs +0 -17
  545. package/esm2022/highlight/ng-nest-ui-highlight.mjs +0 -5
  546. package/esm2022/highlight/public-api.mjs +0 -5
  547. package/esm2022/i18n/i18n.directive.mjs +0 -29
  548. package/esm2022/i18n/i18n.module.mjs +0 -17
  549. package/esm2022/i18n/i18n.pipe.mjs +0 -28
  550. package/esm2022/i18n/i18n.property.mjs +0 -9
  551. package/esm2022/i18n/i18n.service.mjs +0 -57
  552. package/esm2022/i18n/languages/ar_EG.mjs +0 -169
  553. package/esm2022/i18n/languages/bg_BG.mjs +0 -172
  554. package/esm2022/i18n/languages/ca_ES.mjs +0 -172
  555. package/esm2022/i18n/languages/cs_CZ.mjs +0 -172
  556. package/esm2022/i18n/languages/da_DK.mjs +0 -172
  557. package/esm2022/i18n/languages/de_DE.mjs +0 -172
  558. package/esm2022/i18n/languages/el_GR.mjs +0 -172
  559. package/esm2022/i18n/languages/en_GB.mjs +0 -181
  560. package/esm2022/i18n/languages/en_US.mjs +0 -181
  561. package/esm2022/i18n/languages/es_ES.mjs +0 -172
  562. package/esm2022/i18n/languages/et_EE.mjs +0 -172
  563. package/esm2022/i18n/languages/fa_IR.mjs +0 -172
  564. package/esm2022/i18n/languages/fi_FI.mjs +0 -172
  565. package/esm2022/i18n/languages/fr_BE.mjs +0 -172
  566. package/esm2022/i18n/languages/fr_FR.mjs +0 -172
  567. package/esm2022/i18n/languages/he_IL.mjs +0 -169
  568. package/esm2022/i18n/languages/hi_IN.mjs +0 -172
  569. package/esm2022/i18n/languages/hr_HR.mjs +0 -172
  570. package/esm2022/i18n/languages/hu_HU.mjs +0 -172
  571. package/esm2022/i18n/languages/hy_AM.mjs +0 -172
  572. package/esm2022/i18n/languages/id_ID.mjs +0 -172
  573. package/esm2022/i18n/languages/is_IS.mjs +0 -172
  574. package/esm2022/i18n/languages/it_IT.mjs +0 -172
  575. package/esm2022/i18n/languages/ja_JP.mjs +0 -172
  576. package/esm2022/i18n/languages/ka_GE.mjs +0 -172
  577. package/esm2022/i18n/languages/kn_IN.mjs +0 -172
  578. package/esm2022/i18n/languages/ko_KR.mjs +0 -180
  579. package/esm2022/i18n/languages/ku_IQ.mjs +0 -156
  580. package/esm2022/i18n/languages/lv_LV.mjs +0 -180
  581. package/esm2022/i18n/languages/mn_MN.mjs +0 -180
  582. package/esm2022/i18n/languages/ms_MY.mjs +0 -180
  583. package/esm2022/i18n/languages/nb_NO.mjs +0 -180
  584. package/esm2022/i18n/languages/ne_NP.mjs +0 -180
  585. package/esm2022/i18n/languages/nl_BE.mjs +0 -180
  586. package/esm2022/i18n/languages/nl_NL.mjs +0 -180
  587. package/esm2022/i18n/languages/pl_PL.mjs +0 -180
  588. package/esm2022/i18n/languages/pt_BR.mjs +0 -180
  589. package/esm2022/i18n/languages/pt_PT.mjs +0 -180
  590. package/esm2022/i18n/languages/ro_RO.mjs +0 -180
  591. package/esm2022/i18n/languages/ru_RU.mjs +0 -180
  592. package/esm2022/i18n/languages/sk_SK.mjs +0 -171
  593. package/esm2022/i18n/languages/sl_SI.mjs +0 -172
  594. package/esm2022/i18n/languages/sr_RS.mjs +0 -172
  595. package/esm2022/i18n/languages/sv_SE.mjs +0 -172
  596. package/esm2022/i18n/languages/ta_IN.mjs +0 -180
  597. package/esm2022/i18n/languages/th_TH.mjs +0 -180
  598. package/esm2022/i18n/languages/tr_TR.mjs +0 -180
  599. package/esm2022/i18n/languages/uk_UA.mjs +0 -180
  600. package/esm2022/i18n/languages/vi_VN.mjs +0 -180
  601. package/esm2022/i18n/languages/zh_CN.mjs +0 -180
  602. package/esm2022/i18n/languages/zh_TW.mjs +0 -180
  603. package/esm2022/i18n/ng-nest-ui-i18n.mjs +0 -5
  604. package/esm2022/i18n/public-api.mjs +0 -57
  605. package/esm2022/icon/icon.component.mjs +0 -158
  606. package/esm2022/icon/icon.module.mjs +0 -16
  607. package/esm2022/icon/icon.property.mjs +0 -65
  608. package/esm2022/icon/icon.service.mjs +0 -89
  609. package/esm2022/icon/ng-nest-ui-icon.mjs +0 -5
  610. package/esm2022/icon/public-api.mjs +0 -5
  611. package/esm2022/image/image-group.component.mjs +0 -27
  612. package/esm2022/image/image-preview.component.mjs +0 -135
  613. package/esm2022/image/image.component.mjs +0 -75
  614. package/esm2022/image/image.module.mjs +0 -18
  615. package/esm2022/image/image.property.mjs +0 -196
  616. package/esm2022/image/ng-nest-ui-image.mjs +0 -5
  617. package/esm2022/image/public-api.mjs +0 -6
  618. package/esm2022/index.mjs +0 -106
  619. package/esm2022/inner/inner.component.mjs +0 -25
  620. package/esm2022/inner/inner.module.mjs +0 -16
  621. package/esm2022/inner/inner.property.mjs +0 -30
  622. package/esm2022/inner/ng-nest-ui-inner.mjs +0 -5
  623. package/esm2022/inner/public-api.mjs +0 -4
  624. package/esm2022/input/input-group.component.mjs +0 -16
  625. package/esm2022/input/input.component.mjs +0 -224
  626. package/esm2022/input/input.module.mjs +0 -17
  627. package/esm2022/input/input.property.mjs +0 -281
  628. package/esm2022/input/ng-nest-ui-input.mjs +0 -5
  629. package/esm2022/input/public-api.mjs +0 -5
  630. package/esm2022/input-number/input-number.component.mjs +0 -131
  631. package/esm2022/input-number/input-number.module.mjs +0 -16
  632. package/esm2022/input-number/input-number.property.mjs +0 -146
  633. package/esm2022/input-number/ng-nest-ui-input-number.mjs +0 -5
  634. package/esm2022/input-number/public-api.mjs +0 -4
  635. package/esm2022/keyword/keyword.directive.mjs +0 -61
  636. package/esm2022/keyword/keyword.module.mjs +0 -16
  637. package/esm2022/keyword/keyword.property.mjs +0 -45
  638. package/esm2022/keyword/ng-nest-ui-keyword.mjs +0 -5
  639. package/esm2022/keyword/public-api.mjs +0 -4
  640. package/esm2022/layout/col.component.mjs +0 -68
  641. package/esm2022/layout/layout.module.mjs +0 -17
  642. package/esm2022/layout/layout.property.mjs +0 -150
  643. package/esm2022/layout/ng-nest-ui-layout.mjs +0 -5
  644. package/esm2022/layout/public-api.mjs +0 -5
  645. package/esm2022/layout/row.component.mjs +0 -54
  646. package/esm2022/link/link.component.mjs +0 -28
  647. package/esm2022/link/link.module.mjs +0 -16
  648. package/esm2022/link/link.property.mjs +0 -109
  649. package/esm2022/link/ng-nest-ui-link.mjs +0 -5
  650. package/esm2022/link/public-api.mjs +0 -4
  651. package/esm2022/list/list-drop-group.directive.mjs +0 -39
  652. package/esm2022/list/list-option.component.mjs +0 -37
  653. package/esm2022/list/list.component.mjs +0 -409
  654. package/esm2022/list/list.module.mjs +0 -18
  655. package/esm2022/list/list.property.mjs +0 -273
  656. package/esm2022/list/ng-nest-ui-list.mjs +0 -5
  657. package/esm2022/list/public-api.mjs +0 -6
  658. package/esm2022/loading/loading.component.mjs +0 -77
  659. package/esm2022/loading/loading.module.mjs +0 -16
  660. package/esm2022/loading/loading.property.mjs +0 -70
  661. package/esm2022/loading/ng-nest-ui-loading.mjs +0 -5
  662. package/esm2022/loading/public-api.mjs +0 -4
  663. package/esm2022/menu/menu-node.component.mjs +0 -36
  664. package/esm2022/menu/menu.component.mjs +0 -171
  665. package/esm2022/menu/menu.module.mjs +0 -17
  666. package/esm2022/menu/menu.property.mjs +0 -107
  667. package/esm2022/menu/ng-nest-ui-menu.mjs +0 -5
  668. package/esm2022/menu/public-api.mjs +0 -5
  669. package/esm2022/message/message-ref.mjs +0 -13
  670. package/esm2022/message/message.component.mjs +0 -40
  671. package/esm2022/message/message.module.mjs +0 -15
  672. package/esm2022/message/message.property.mjs +0 -9
  673. package/esm2022/message/message.service.mjs +0 -146
  674. package/esm2022/message/ng-nest-ui-message.mjs +0 -5
  675. package/esm2022/message/public-api.mjs +0 -6
  676. package/esm2022/message-box/message-box.component.mjs +0 -122
  677. package/esm2022/message-box/message-box.module.mjs +0 -15
  678. package/esm2022/message-box/message-box.property.mjs +0 -8
  679. package/esm2022/message-box/message-box.service.mjs +0 -97
  680. package/esm2022/message-box/ng-nest-ui-message-box.mjs +0 -5
  681. package/esm2022/message-box/public-api.mjs +0 -5
  682. package/esm2022/ng-nest-ui.mjs +0 -5
  683. package/esm2022/notification/ng-nest-ui-notification.mjs +0 -5
  684. package/esm2022/notification/notification.component.mjs +0 -42
  685. package/esm2022/notification/notification.module.mjs +0 -15
  686. package/esm2022/notification/notification.property.mjs +0 -8
  687. package/esm2022/notification/notification.service.mjs +0 -107
  688. package/esm2022/notification/public-api.mjs +0 -5
  689. package/esm2022/outlet/ng-nest-ui-outlet.mjs +0 -5
  690. package/esm2022/outlet/outlet.directive.mjs +0 -72
  691. package/esm2022/outlet/outlet.module.mjs +0 -16
  692. package/esm2022/outlet/outlet.property.mjs +0 -7
  693. package/esm2022/outlet/public-api.mjs +0 -4
  694. package/esm2022/page-header/ng-nest-ui-page-header.mjs +0 -5
  695. package/esm2022/page-header/page-header.component.mjs +0 -24
  696. package/esm2022/page-header/page-header.module.mjs +0 -16
  697. package/esm2022/page-header/page-header.property.mjs +0 -50
  698. package/esm2022/page-header/public-api.mjs +0 -4
  699. package/esm2022/pagination/ng-nest-ui-pagination.mjs +0 -5
  700. package/esm2022/pagination/pagination.component.mjs +0 -205
  701. package/esm2022/pagination/pagination.module.mjs +0 -16
  702. package/esm2022/pagination/pagination.property.mjs +0 -149
  703. package/esm2022/pagination/public-api.mjs +0 -4
  704. package/esm2022/pattern/ng-nest-ui-pattern.mjs +0 -5
  705. package/esm2022/pattern/pattern.component.mjs +0 -18
  706. package/esm2022/pattern/pattern.module.mjs +0 -16
  707. package/esm2022/pattern/pattern.property.mjs +0 -7
  708. package/esm2022/pattern/public-api.mjs +0 -4
  709. package/esm2022/popconfirm/ng-nest-ui-popconfirm.mjs +0 -5
  710. package/esm2022/popconfirm/popconfirm.component.mjs +0 -59
  711. package/esm2022/popconfirm/popconfirm.module.mjs +0 -16
  712. package/esm2022/popconfirm/popconfirm.property.mjs +0 -100
  713. package/esm2022/popconfirm/public-api.mjs +0 -4
  714. package/esm2022/popover/ng-nest-ui-popover.mjs +0 -5
  715. package/esm2022/popover/popover-portal.component.mjs +0 -52
  716. package/esm2022/popover/popover.directive.mjs +0 -186
  717. package/esm2022/popover/popover.module.mjs +0 -16
  718. package/esm2022/popover/popover.property.mjs +0 -101
  719. package/esm2022/popover/public-api.mjs +0 -5
  720. package/esm2022/portal/ng-nest-ui-portal.mjs +0 -5
  721. package/esm2022/portal/portal.module.mjs +0 -16
  722. package/esm2022/portal/portal.property.mjs +0 -24
  723. package/esm2022/portal/portal.service.mjs +0 -190
  724. package/esm2022/portal/public-api.mjs +0 -4
  725. package/esm2022/progress/ng-nest-ui-progress.mjs +0 -5
  726. package/esm2022/progress/progress.component.mjs +0 -224
  727. package/esm2022/progress/progress.module.mjs +0 -16
  728. package/esm2022/progress/progress.property.mjs +0 -110
  729. package/esm2022/progress/public-api.mjs +0 -4
  730. package/esm2022/radio/ng-nest-ui-radio.mjs +0 -5
  731. package/esm2022/radio/public-api.mjs +0 -4
  732. package/esm2022/radio/radio.component.mjs +0 -77
  733. package/esm2022/radio/radio.module.mjs +0 -16
  734. package/esm2022/radio/radio.property.mjs +0 -121
  735. package/esm2022/rate/ng-nest-ui-rate.mjs +0 -5
  736. package/esm2022/rate/public-api.mjs +0 -4
  737. package/esm2022/rate/rate.component.mjs +0 -99
  738. package/esm2022/rate/rate.module.mjs +0 -16
  739. package/esm2022/rate/rate.property.mjs +0 -86
  740. package/esm2022/resizable/ng-nest-ui-resizable.mjs +0 -5
  741. package/esm2022/resizable/public-api.mjs +0 -4
  742. package/esm2022/resizable/resizable.directive.mjs +0 -264
  743. package/esm2022/resizable/resizable.module.mjs +0 -16
  744. package/esm2022/resizable/resizable.property.mjs +0 -64
  745. package/esm2022/result/ng-nest-ui-result.mjs +0 -5
  746. package/esm2022/result/public-api.mjs +0 -4
  747. package/esm2022/result/result.component.mjs +0 -25
  748. package/esm2022/result/result.module.mjs +0 -16
  749. package/esm2022/result/result.property.mjs +0 -45
  750. package/esm2022/ripple/ng-nest-ui-ripple.mjs +0 -5
  751. package/esm2022/ripple/public-api.mjs +0 -4
  752. package/esm2022/ripple/ripple.directive.mjs +0 -94
  753. package/esm2022/ripple/ripple.module.mjs +0 -16
  754. package/esm2022/ripple/ripple.property.mjs +0 -40
  755. package/esm2022/select/ng-nest-ui-select.mjs +0 -5
  756. package/esm2022/select/public-api.mjs +0 -5
  757. package/esm2022/select/select-portal.component.mjs +0 -103
  758. package/esm2022/select/select.component.mjs +0 -687
  759. package/esm2022/select/select.module.mjs +0 -16
  760. package/esm2022/select/select.property.mjs +0 -238
  761. package/esm2022/skeleton/ng-nest-ui-skeleton.mjs +0 -5
  762. package/esm2022/skeleton/public-api.mjs +0 -4
  763. package/esm2022/skeleton/skeleton.component.mjs +0 -25
  764. package/esm2022/skeleton/skeleton.module.mjs +0 -16
  765. package/esm2022/skeleton/skeleton.property.mjs +0 -55
  766. package/esm2022/slider/ng-nest-ui-slider.mjs +0 -5
  767. package/esm2022/slider/public-api.mjs +0 -4
  768. package/esm2022/slider/slider.component.mjs +0 -222
  769. package/esm2022/slider/slider.module.mjs +0 -17
  770. package/esm2022/slider/slider.property.mjs +0 -102
  771. package/esm2022/slider-select/ng-nest-ui-slider-select.mjs +0 -5
  772. package/esm2022/slider-select/public-api.mjs +0 -4
  773. package/esm2022/slider-select/slider-select.component.mjs +0 -368
  774. package/esm2022/slider-select/slider-select.module.mjs +0 -16
  775. package/esm2022/slider-select/slider-select.property.mjs +0 -136
  776. package/esm2022/statistic/countdown.component.mjs +0 -70
  777. package/esm2022/statistic/ng-nest-ui-statistic.mjs +0 -5
  778. package/esm2022/statistic/public-api.mjs +0 -5
  779. package/esm2022/statistic/statistic.component.mjs +0 -34
  780. package/esm2022/statistic/statistic.module.mjs +0 -17
  781. package/esm2022/statistic/statistic.property.mjs +0 -106
  782. package/esm2022/steps/ng-nest-ui-steps.mjs +0 -5
  783. package/esm2022/steps/public-api.mjs +0 -4
  784. package/esm2022/steps/steps.component.mjs +0 -49
  785. package/esm2022/steps/steps.module.mjs +0 -16
  786. package/esm2022/steps/steps.property.mjs +0 -60
  787. package/esm2022/switch/ng-nest-ui-switch.mjs +0 -5
  788. package/esm2022/switch/public-api.mjs +0 -4
  789. package/esm2022/switch/switch.component.mjs +0 -37
  790. package/esm2022/switch/switch.module.mjs +0 -16
  791. package/esm2022/switch/switch.property.mjs +0 -91
  792. package/esm2022/table/ng-nest-ui-table.mjs +0 -5
  793. package/esm2022/table/public-api.mjs +0 -7
  794. package/esm2022/table/table-body.component.mjs +0 -241
  795. package/esm2022/table/table-foot.component.mjs +0 -29
  796. package/esm2022/table/table-head.component.mjs +0 -169
  797. package/esm2022/table/table.component.mjs +0 -372
  798. package/esm2022/table/table.module.mjs +0 -19
  799. package/esm2022/table/table.property.mjs +0 -629
  800. package/esm2022/tabs/ng-nest-ui-tabs.mjs +0 -5
  801. package/esm2022/tabs/public-api.mjs +0 -7
  802. package/esm2022/tabs/tab-content.component.mjs +0 -21
  803. package/esm2022/tabs/tab-link.directive.mjs +0 -46
  804. package/esm2022/tabs/tab.component.mjs +0 -19
  805. package/esm2022/tabs/tabs.component.mjs +0 -143
  806. package/esm2022/tabs/tabs.module.mjs +0 -18
  807. package/esm2022/tabs/tabs.property.mjs +0 -141
  808. package/esm2022/tag/ng-nest-ui-tag.mjs +0 -5
  809. package/esm2022/tag/public-api.mjs +0 -4
  810. package/esm2022/tag/tag.component.mjs +0 -51
  811. package/esm2022/tag/tag.module.mjs +0 -16
  812. package/esm2022/tag/tag.property.mjs +0 -80
  813. package/esm2022/text-retract/ng-nest-ui-text-retract.mjs +0 -5
  814. package/esm2022/text-retract/public-api.mjs +0 -4
  815. package/esm2022/text-retract/text-retract.component.mjs +0 -42
  816. package/esm2022/text-retract/text-retract.module.mjs +0 -16
  817. package/esm2022/text-retract/text-retract.property.mjs +0 -35
  818. package/esm2022/textarea/ng-nest-ui-textarea.mjs +0 -5
  819. package/esm2022/textarea/public-api.mjs +0 -4
  820. package/esm2022/textarea/textarea.component.mjs +0 -68
  821. package/esm2022/textarea/textarea.module.mjs +0 -16
  822. package/esm2022/textarea/textarea.property.mjs +0 -126
  823. package/esm2022/theme/ng-nest-ui-theme.mjs +0 -5
  824. package/esm2022/theme/public-api.mjs +0 -4
  825. package/esm2022/theme/theme.component.mjs +0 -179
  826. package/esm2022/theme/theme.module.mjs +0 -16
  827. package/esm2022/theme/theme.property.mjs +0 -63
  828. package/esm2022/time-ago/ng-nest-ui-time-ago.mjs +0 -5
  829. package/esm2022/time-ago/public-api.mjs +0 -4
  830. package/esm2022/time-ago/time-ago.module.mjs +0 -16
  831. package/esm2022/time-ago/time-ago.pipe.mjs +0 -70
  832. package/esm2022/time-ago/time-ago.property.mjs +0 -7
  833. package/esm2022/time-picker/ng-nest-ui-time-picker.mjs +0 -5
  834. package/esm2022/time-picker/public-api.mjs +0 -6
  835. package/esm2022/time-picker/time-picker-frame.component.mjs +0 -312
  836. package/esm2022/time-picker/time-picker-portal.component.mjs +0 -78
  837. package/esm2022/time-picker/time-picker.component.mjs +0 -266
  838. package/esm2022/time-picker/time-picker.module.mjs +0 -17
  839. package/esm2022/time-picker/time-picker.property.mjs +0 -198
  840. package/esm2022/time-range/ng-nest-ui-time-range.mjs +0 -5
  841. package/esm2022/time-range/public-api.mjs +0 -4
  842. package/esm2022/time-range/time-range.module.mjs +0 -16
  843. package/esm2022/time-range/time-range.pipe.mjs +0 -44
  844. package/esm2022/time-range/time-range.property.mjs +0 -7
  845. package/esm2022/timeline/ng-nest-ui-timeline.mjs +0 -5
  846. package/esm2022/timeline/public-api.mjs +0 -4
  847. package/esm2022/timeline/timeline.component.mjs +0 -45
  848. package/esm2022/timeline/timeline.module.mjs +0 -16
  849. package/esm2022/timeline/timeline.property.mjs +0 -50
  850. package/esm2022/tooltip/ng-nest-ui-tooltip.mjs +0 -5
  851. package/esm2022/tooltip/public-api.mjs +0 -5
  852. package/esm2022/tooltip/tooltip-portal.component.mjs +0 -103
  853. package/esm2022/tooltip/tooltip.directive.mjs +0 -143
  854. package/esm2022/tooltip/tooltip.module.mjs +0 -16
  855. package/esm2022/tooltip/tooltip.property.mjs +0 -86
  856. package/esm2022/transfer/ng-nest-ui-transfer.mjs +0 -5
  857. package/esm2022/transfer/public-api.mjs +0 -4
  858. package/esm2022/transfer/transfer.component.mjs +0 -659
  859. package/esm2022/transfer/transfer.module.mjs +0 -16
  860. package/esm2022/transfer/transfer.property.mjs +0 -112
  861. package/esm2022/tree/ng-nest-ui-tree.mjs +0 -5
  862. package/esm2022/tree/public-api.mjs +0 -5
  863. package/esm2022/tree/tree-node.component.mjs +0 -297
  864. package/esm2022/tree/tree.component.mjs +0 -579
  865. package/esm2022/tree/tree.module.mjs +0 -17
  866. package/esm2022/tree/tree.property.mjs +0 -337
  867. package/esm2022/tree/tree.service.mjs +0 -102
  868. package/esm2022/tree-file/ng-nest-ui-tree-file.mjs +0 -5
  869. package/esm2022/tree-file/public-api.mjs +0 -4
  870. package/esm2022/tree-file/tree-file.component.mjs +0 -118
  871. package/esm2022/tree-file/tree-file.module.mjs +0 -16
  872. package/esm2022/tree-file/tree-file.property.mjs +0 -90
  873. package/esm2022/tree-select/ng-nest-ui-tree-select.mjs +0 -5
  874. package/esm2022/tree-select/public-api.mjs +0 -5
  875. package/esm2022/tree-select/tree-select-portal.component.mjs +0 -86
  876. package/esm2022/tree-select/tree-select.component.mjs +0 -659
  877. package/esm2022/tree-select/tree-select.module.mjs +0 -17
  878. package/esm2022/tree-select/tree-select.property.mjs +0 -237
  879. package/esm2022/typography/ng-nest-ui-typography.mjs +0 -5
  880. package/esm2022/typography/public-api.mjs +0 -4
  881. package/esm2022/typography/typography.component.mjs +0 -27
  882. package/esm2022/typography/typography.module.mjs +0 -16
  883. package/esm2022/typography/typography.property.mjs +0 -34
  884. package/esm2022/upload/ng-nest-ui-upload.mjs +0 -5
  885. package/esm2022/upload/public-api.mjs +0 -5
  886. package/esm2022/upload/upload-portal.component.mjs +0 -196
  887. package/esm2022/upload/upload.component.mjs +0 -233
  888. package/esm2022/upload/upload.module.mjs +0 -16
  889. package/esm2022/upload/upload.property.mjs +0 -118
  890. package/style/core/base.scss +0 -20
  891. package/style/core/cdk.scss +0 -72
  892. package/style/core/portal.scss +0 -5
  893. package/style/core/var.scss +0 -4
  894. package/style/mixins/index.scss +0 -9
  895. package/style/params/layout.scss +0 -73
  896. package/style/params/primary.scss +0 -208
  897. package/style/themes/default.scss +0 -1
@@ -1,396 +0,0 @@
1
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, ElementRef, Renderer2, HostListener, HostBinding, inject, input, output, model, viewChild, signal, DestroyRef } from '@angular/core';
2
- import { XColorPickerPortalPrefix } from './color-picker.property';
3
- import { XConnectBaseAnimation } from '@ng-nest/ui/core';
4
- import { XSliderSelectComponent } from '@ng-nest/ui/slider-select';
5
- import { Subject } from 'rxjs';
6
- import { DecimalPipe, PercentPipe } from '@angular/common';
7
- import { XInputComponent } from '@ng-nest/ui/input';
8
- import { DragDropModule } from '@angular/cdk/drag-drop';
9
- import { XTabsComponent, XTabComponent } from '@ng-nest/ui/tabs';
10
- import { FormsModule } from '@angular/forms';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/forms";
13
- import * as i2 from "@angular/cdk/drag-drop";
14
- export class XColorPickerPortalComponent {
15
- constructor() {
16
- this.panelRef = viewChild.required('panelRef', { read: (ElementRef) });
17
- this.plateRef = viewChild.required('plateRef', { read: (ElementRef) });
18
- this.transparentCom = viewChild.required('transparentCom', { read: XSliderSelectComponent });
19
- this.value = model('');
20
- this.inputCom = input();
21
- this.placement = input();
22
- this.animating = output();
23
- this.nodeClick = output();
24
- this.transparentRail = signal(null);
25
- this.sliderColorNum = signal(0);
26
- this.type = signal(null);
27
- this.offset = signal(0);
28
- this.panel = signal(null);
29
- this.plate = signal(null);
30
- this.transformX = signal(0);
31
- this.transformY = signal(0);
32
- this.initTransformX = signal(0);
33
- this.initTransformY = signal(0);
34
- this.drag = signal(false);
35
- this.rgba = signal({ a: 1 });
36
- this.hsla = signal({
37
- h: 0,
38
- a: 1
39
- });
40
- this.hex = signal('');
41
- this.destroy = signal(false);
42
- this.unSubject = new Subject();
43
- this.destroyRef = inject(DestroyRef);
44
- this.renderer = inject(Renderer2);
45
- this.decimal = inject(DecimalPipe);
46
- this.percent = inject(PercentPipe);
47
- }
48
- get getPlacement() {
49
- return this.placement();
50
- }
51
- done() {
52
- if (this.destroy())
53
- return;
54
- this.animating.emit(false);
55
- }
56
- start() {
57
- if (this.destroy())
58
- return;
59
- this.animating.emit(true);
60
- }
61
- ngOnInit() {
62
- this.colorConvert();
63
- this.destroyRef.onDestroy(() => {
64
- this.destroy.set(true);
65
- this.unSubject.next();
66
- this.unSubject.complete();
67
- });
68
- }
69
- ngAfterViewInit() {
70
- this.panel.set(this.panelRef().nativeElement.getBoundingClientRect());
71
- this.plate.set(this.plateRef().nativeElement.getBoundingClientRect());
72
- this.offset.set((this.panel().width - this.plate().width) / 2);
73
- this.transparentRail.set(this.transparentCom().elementRef.nativeElement.querySelector('.x-slider-select-rail div'));
74
- this.setTransform();
75
- this.setPlateBackground();
76
- this.setRailBackground();
77
- }
78
- hexChange() {
79
- if (this.drag() || !/(^#[0-9A-F]{6}$)/i.test(this.hex()))
80
- return;
81
- this.rgba.set(this.hexToRgba(this.hex()));
82
- this.hsla.set(this.rgbaToHsla(this.rgba()));
83
- this.setHslaPercent();
84
- this.setTransform();
85
- this.setPlateBackground();
86
- this.setValue();
87
- }
88
- stopPropagation(event) {
89
- event.stopPropagation();
90
- }
91
- colorConvert() {
92
- const value = this.value();
93
- if (/^#/.test(value)) {
94
- this.hex.set(value);
95
- this.rgba.set(this.hexToRgba(this.hex()));
96
- this.hsla.set(this.rgbaToHsla(this.rgba()));
97
- this.setHslaPercent();
98
- this.type.set('hex');
99
- }
100
- else if (/rgb/.test(value)) {
101
- this.rgbaConvert(value);
102
- this.hex.set(this.rgbaToHex(this.rgba()));
103
- this.hsla.set(this.rgbaToHsla(this.rgba()));
104
- this.setHslaPercent();
105
- this.type.set('rgba');
106
- }
107
- else if (/hsl/.test(value)) {
108
- this.hslaConvert(value);
109
- this.rgba.set(this.hslaToRgba(this.hsla()));
110
- this.hex.set(this.rgbaToHex(this.rgba()));
111
- this.type.set('hsla');
112
- }
113
- }
114
- rgbaConvert(str) {
115
- let rgba = str
116
- .replace(/rgba?\(/, '')
117
- .replace(/rgb?\(/, '')
118
- .replace(/\)/, '')
119
- .replace(/[\s+]/g, '')
120
- .split(',');
121
- if (rgba.length > 2) {
122
- this.rgba.set({
123
- r: Number(rgba[0]),
124
- g: Number(rgba[1]),
125
- b: Number(rgba[2]),
126
- a: Number(rgba.length > 3 ? rgba[3] : 1)
127
- });
128
- }
129
- }
130
- hslaConvert(str) {
131
- let hsla = str
132
- .replace(/hsla?\(/, '')
133
- .replace(/hsl?\(/, '')
134
- .replace(/\)/, '')
135
- .replace(/[\s+]/g, '')
136
- .split(',');
137
- if (hsla.length > 2) {
138
- this.hsla.set({
139
- h: Number(hsla[0]),
140
- s: Number(hsla[1].replace('%', '')) / 100,
141
- l: Number(hsla[2].replace('%', '')) / 100,
142
- a: Number(hsla.length > 3 ? hsla[3] : 1)
143
- });
144
- this.setHslaPercent();
145
- }
146
- }
147
- plateClick(event) {
148
- if (this.drag())
149
- return;
150
- const rect = this.plateRef().nativeElement.getBoundingClientRect();
151
- const left = event.clientX - rect.left;
152
- const top = event.clientY - rect.top;
153
- this.transformX.set(left - this.offset());
154
- this.transformY.set(top - this.offset());
155
- this.initTransformX.set(this.transformX());
156
- this.initTransformY.set(this.transformY());
157
- this.setLetfTop(left, top);
158
- }
159
- setTransform() {
160
- let hsv = this.hslToHsv(this.hsla().h, this.hsla().s, this.hsla().l);
161
- this.transformX.set(hsv.s * this.plate().width - this.offset());
162
- this.transformY.set((1 - hsv.v) * this.plate().height - this.offset());
163
- this.initTransformX.set(this.transformX());
164
- this.initTransformY.set(this.transformY());
165
- }
166
- started() {
167
- this.drag.set(true);
168
- }
169
- ended() {
170
- this.initTransformX.set(this.transformX());
171
- this.initTransformY.set(this.transformY());
172
- setTimeout(() => {
173
- this.drag.set(false);
174
- });
175
- }
176
- moved(drag) {
177
- const transform = drag.source.getFreeDragPosition();
178
- drag.source.reset();
179
- this.transformX.set(transform.x + this.initTransformX());
180
- this.transformY.set(transform.y + this.initTransformY());
181
- const left = this.transformX() + this.offset();
182
- const top = this.transformY() + this.offset();
183
- this.setLetfTop(left, top);
184
- }
185
- setLetfTop(left, top) {
186
- let s = left / this.plate().width;
187
- let v = 1 - top / this.plate().height;
188
- let l = ((2 - s) * v) / 2;
189
- if (l !== 0) {
190
- if (l === 1) {
191
- s = 0;
192
- }
193
- else if (l < 0.5) {
194
- s = (s * v) / (l * 2);
195
- }
196
- else {
197
- s = (s * v) / (2 - l * 2);
198
- }
199
- }
200
- this.hsla.update((x) => {
201
- x.s = Number(this.decimal.transform(s, '1.2-2'));
202
- x.l = Number(this.decimal.transform(l, '1.2-2'));
203
- return { ...x };
204
- });
205
- this.setHslaPercent();
206
- this.rgba.set(this.hslaToRgba(this.hsla()));
207
- this.hex.set(this.rgbaToHex(this.rgba()));
208
- this.setValue();
209
- }
210
- setHslaPercent() {
211
- this.hsla.update((x) => {
212
- x.sp = this.hsla().s === 0 ? '0%' : this.percent.transform(this.hsla().s, '1.0-0');
213
- return { ...x };
214
- });
215
- this.hsla.update((x) => {
216
- x.lp = this.hsla().l === 0 ? '0%' : this.percent.transform(this.hsla().l, '1.0-0');
217
- return { ...x };
218
- });
219
- }
220
- hueChange() {
221
- this.setPlateBackground();
222
- this.rgba.set(this.hslaToRgba(this.hsla()));
223
- this.hex.set(this.rgbaToHex(this.rgba()));
224
- this.setValue();
225
- }
226
- setPlateBackground() {
227
- this.renderer.setStyle(this.plateRef().nativeElement, 'background-color', `hsl(${this.hsla().h}, 100%, 50%)`);
228
- }
229
- setRailBackground() {
230
- this.renderer.setStyle(this.transparentRail(), 'background', `linear-gradient(to right, rgba(${this.rgba().r}, ${this.rgba().g}, ${this.rgba().b}, 0) 0%, rgba(${this.rgba().r}, ${this.rgba().g}, ${this.rgba().b}, 1) 100%)`);
231
- }
232
- transparentChange() {
233
- this.rgba.set(this.hslaToRgba(this.hsla()));
234
- this.hex.set(this.rgbaToHex(this.rgba()));
235
- this.setValue();
236
- }
237
- setValue() {
238
- this.setValueByType();
239
- this.setRailBackground();
240
- this.nodeClick.emit(this.value());
241
- }
242
- setValueByType() {
243
- if (this.type() === 'hex') {
244
- this.value.set(`${this.hex()}`);
245
- }
246
- else if (this.type() === 'rgba') {
247
- this.value.set(`rgba(${this.rgba().r}, ${this.rgba().g}, ${this.rgba().b}, ${this.rgba().a})`);
248
- }
249
- else if (this.type() === 'hsla') {
250
- this.value.set(`hsla(${this.hsla().h}, ${this.hsla().sp}, ${this.hsla().lp}, ${this.hsla().a})`);
251
- }
252
- }
253
- hslaToRgba(hsla) {
254
- let r, g, b;
255
- let [h, s, l] = [hsla.h, hsla.s, hsla.l];
256
- if (s == 0) {
257
- r = g = b = l;
258
- }
259
- else {
260
- let hue2rgb = (p, q, t) => {
261
- if (t < 0)
262
- t += 1;
263
- if (t > 1)
264
- t -= 1;
265
- if (t < 1 / 6)
266
- return p + (q - p) * 6 * t;
267
- if (t < 1 / 2)
268
- return q;
269
- if (t < 2 / 3)
270
- return p + (q - p) * (2 / 3 - t) * 6;
271
- return p;
272
- };
273
- let q = l < 0.5 ? l * (1 + s) : l + s - l * s;
274
- let p = 2 * l - q;
275
- r = hue2rgb(p, q, h / 360 + 1 / 3);
276
- g = hue2rgb(p, q, h / 360);
277
- b = hue2rgb(p, q, h / 360 - 1 / 3);
278
- }
279
- return {
280
- r: Math.round(r * 255),
281
- g: Math.round(g * 255),
282
- b: Math.round(b * 255),
283
- a: Number(hsla.a)
284
- };
285
- }
286
- rgbaToHex(rgba) {
287
- let hex = [
288
- rgba.r.toString(16),
289
- rgba.g.toString(16),
290
- rgba.b.toString(16),
291
- Math.round(255 * rgba.a).toString(16)
292
- ];
293
- hex.forEach((x, index) => {
294
- if (index === 3 && x === 'ff') {
295
- hex[index] = '';
296
- }
297
- if (x.length === 1) {
298
- hex[index] = '0' + x;
299
- }
300
- });
301
- return `#${hex.join('')}`;
302
- }
303
- rgbaToHsla(rgba) {
304
- let [r, g, b] = [rgba.r / 255, rgba.g / 255, rgba.b / 255];
305
- let [max, min] = [Math.max(r, g, b), Math.min(r, g, b)];
306
- let h = 0;
307
- let s = 0;
308
- let l = (max + min) / 2;
309
- if (max === min) {
310
- h = s = 0;
311
- }
312
- else {
313
- let d = max - min;
314
- s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
315
- switch (max) {
316
- case r:
317
- h = (g - b) / d + (g < b ? 6 : 0);
318
- break;
319
- case g:
320
- h = (b - r) / d + 2;
321
- break;
322
- case b:
323
- h = (r - g) / d + 4;
324
- break;
325
- }
326
- h /= 6;
327
- }
328
- return {
329
- h: Math.round(h * 360),
330
- s: Number(this.decimal.transform(s, '1.2-2')),
331
- l: Number(this.decimal.transform(l, '1.2-2')),
332
- a: Number(rgba.a)
333
- };
334
- }
335
- hexToRgba(hex) {
336
- let hexNum = hex.substring(1);
337
- let a = 1;
338
- if (hexNum.length === 8) {
339
- a = Number(this.decimal.transform(Number('0x' + hexNum.slice(-2)) / 255, '1.2-2'));
340
- hexNum = hexNum.substring(0, hexNum.length - 2);
341
- }
342
- let num = Number('0x' + (hexNum.length < 6 ? this.repeatLetter(hexNum, 2) : hexNum));
343
- return { r: num >> 16, g: (num >> 8) & 0xff, b: num & 0xff, a: a };
344
- }
345
- hslToHsv(h, s, l) {
346
- let hHsv, sHsv, v;
347
- hHsv = h;
348
- if (l == 0) {
349
- sHsv = 0;
350
- v = 0;
351
- }
352
- else if (l > 0 && l <= 0.5) {
353
- sHsv = (2 * s) / (1 + s);
354
- v = l * (1 + s);
355
- }
356
- else {
357
- sHsv = (2 * s - 2 * s * l) / (s - s * l + l);
358
- v = s - s * l + l;
359
- }
360
- return {
361
- h: hHsv,
362
- s: Number(this.decimal.transform(sHsv, '1.2-2')),
363
- v: Number(this.decimal.transform(v, '1.2-2'))
364
- };
365
- }
366
- repeatWord(word, num) {
367
- let result = '';
368
- for (let i = 0; i < num; i++) {
369
- result += word;
370
- }
371
- return result;
372
- }
373
- repeatLetter(word, num) {
374
- let result = '';
375
- for (let letter of word) {
376
- result += this.repeatWord(letter, num);
377
- }
378
- return result;
379
- }
380
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XColorPickerPortalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
381
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.2", type: XColorPickerPortalComponent, isStandalone: true, selector: "x-color-picker-portal", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, inputCom: { classPropertyName: "inputCom", publicName: "inputCom", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", animating: "animating", nodeClick: "nodeClick" }, host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.getPlacement" } }, providers: [DecimalPipe, PercentPipe], viewQueries: [{ propertyName: "panelRef", first: true, predicate: ["panelRef"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "plateRef", first: true, predicate: ["plateRef"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "transparentCom", first: true, predicate: ["transparentCom"], descendants: true, read: XSliderSelectComponent, isSignal: true }], ngImport: i0, template: "<div class=\"x-color-picker-portal\" tabindex=\"-1\" (click)=\"stopPropagation($event)\">\r\n <div #panelRef class=\"x-color-picker-portal-panel\">\r\n <div #plateRef class=\"x-color-picker-portal-plate\" (click)=\"plateClick($event)\">\r\n <div class=\"x-color-picker-portal-white\"></div>\r\n <div class=\"x-color-picker-portal-black\"></div>\r\n <div\r\n #dragCom\r\n class=\"x-color-picker-portal-cursor\"\r\n [style.left.px]=\"transformX()\"\r\n [style.top.px]=\"transformY()\"\r\n cdkDrag\r\n [cdkDragBoundary]=\"panelRef\"\r\n (cdkDragStarted)=\"started()\"\r\n (cdkDragEnded)=\"ended()\"\r\n (cdkDragMoved)=\"moved($event)\"\r\n ></div>\r\n </div>\r\n </div>\r\n <div class=\"x-color-picker-portal-tool\">\r\n <div class=\"x-color-picker-portal-operations\">\r\n <!-- <x-button icon=\"fto-edit-2\" onlyIcon></x-button> -->\r\n <div class=\"x-color-picker-portal-selected\">\r\n <div [style.background-color]=\"value()\"></div>\r\n </div>\r\n <div class=\"x-color-picker-portal-area\">\r\n <div class=\"x-color-picker-portal-slider\">\r\n <x-slider-select\r\n [style.width.%]=\"100\"\r\n [(ngModel)]=\"hsla().h\"\r\n min=\"0\"\r\n max=\"360\"\r\n step=\"1\"\r\n (dragStartEmit)=\"started()\"\r\n (dragEndEmit)=\"ended()\"\r\n (ngModelChange)=\"hueChange()\"\r\n ></x-slider-select>\r\n </div>\r\n <div class=\"x-color-picker-portal-transparent\">\r\n <x-slider-select\r\n [style.width.%]=\"100\"\r\n #transparentCom\r\n [(ngModel)]=\"hsla().a\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n (dragStarted)=\"started()\"\r\n (dragEnded)=\"ended()\"\r\n (ngModelChange)=\"transparentChange()\"\r\n ></x-slider-select>\r\n <div class=\"x-color-picker-portal-alpha\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"x-color-picker-portal-type\">\r\n <x-tabs animated=\"false\" justify=\"center\">\r\n <x-tab label=\"HEX\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [style.width.%]=\"100\" [(ngModel)]=\"hex\" (ngModelChange)=\"hexChange()\"></x-input>\r\n </div>\r\n </x-tab>\r\n <x-tab label=\"RGBA\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [(ngModel)]=\"rgba().r\" disabled></x-input>\r\n <x-input [(ngModel)]=\"rgba().g\" disabled></x-input>\r\n <x-input [(ngModel)]=\"rgba().b\" disabled></x-input>\r\n <x-input [(ngModel)]=\"rgba().a\" disabled></x-input>\r\n </div>\r\n </x-tab>\r\n <x-tab label=\"HSLA\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [(ngModel)]=\"hsla().h\" disabled></x-input>\r\n <x-input [(ngModel)]=\"hsla().sp\" disabled></x-input>\r\n <x-input [(ngModel)]=\"hsla().lp\" disabled></x-input>\r\n <x-input [(ngModel)]=\"hsla().a\" disabled></x-input>\r\n </div>\r\n </x-tab>\r\n </x-tabs>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-color-picker-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);background-color:var(--x-background-100);width:17rem;overflow:hidden}.x-color-picker-portal:focus{outline:none}.x-color-picker-portal-panel{padding:.375rem;margin:-.375rem}.x-color-picker-portal-plate{width:100%;height:8rem;display:flex;border-radius:var(--x-border-small-radius);position:relative}.x-color-picker-portal-white,.x-color-picker-portal-black{position:absolute;inset:0}.x-color-picker-portal-white{background:linear-gradient(90deg,#fff,#fff0)}.x-color-picker-portal-black{background:linear-gradient(0deg,#000,transparent)}.x-color-picker-portal-cursor{position:absolute;width:.75rem;height:.75rem;display:inline-block;border-radius:50%;border:.0625rem solid var(--x-background-100)}.x-color-picker-portal-tool{padding:.4rem}.x-color-picker-portal-operations{display:flex;align-items:center;padding:.4rem 0}.x-color-picker-portal-selected{margin-left:.4rem;width:2rem;height:2rem;border-radius:2rem;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.x-color-picker-portal-selected>div{width:2rem;height:2rem;border-radius:2rem}.x-color-picker-portal-area{margin-left:.4rem;position:relative;flex:1}.x-color-picker-portal-area .x-slider-select:hover:not(.x-disabled) .x-slider-select-process{background-color:transparent}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner .x-slider-select-rail{height:.75rem}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner .x-slider-select-process{background-color:transparent}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-drags>.x-slider-select-drag>.x-slider-select-button{border-color:var(--x-border);box-shadow:var(--x-box-shadow)}.x-color-picker-portal-slider{position:relative;width:100%;display:flex;align-items:center}.x-color-picker-portal-slider .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.x-color-picker-portal-transparent{position:relative;width:100%;display:flex;align-items:center}.x-color-picker-portal-transparent .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.x-color-picker-portal-type .x-tabs .x-tabs-list{display:flex;justify-content:center}.x-color-picker-portal-type-content{padding:.25rem;display:flex}.x-color-picker-portal-type-content .x-input .x-input-row input{text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: XSliderSelectComponent, selector: "x-slider-select" }, { kind: "component", type: XTabsComponent, selector: "x-tabs" }, { kind: "component", type: XTabComponent, selector: "x-tab" }, { kind: "component", type: XInputComponent, selector: "x-input" }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
382
- }
383
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XColorPickerPortalComponent, decorators: [{
384
- type: Component,
385
- args: [{ selector: `${XColorPickerPortalPrefix}`, standalone: true, imports: [FormsModule, DragDropModule, XSliderSelectComponent, XTabsComponent, XTabComponent, XInputComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [DecimalPipe, PercentPipe], animations: [XConnectBaseAnimation], template: "<div class=\"x-color-picker-portal\" tabindex=\"-1\" (click)=\"stopPropagation($event)\">\r\n <div #panelRef class=\"x-color-picker-portal-panel\">\r\n <div #plateRef class=\"x-color-picker-portal-plate\" (click)=\"plateClick($event)\">\r\n <div class=\"x-color-picker-portal-white\"></div>\r\n <div class=\"x-color-picker-portal-black\"></div>\r\n <div\r\n #dragCom\r\n class=\"x-color-picker-portal-cursor\"\r\n [style.left.px]=\"transformX()\"\r\n [style.top.px]=\"transformY()\"\r\n cdkDrag\r\n [cdkDragBoundary]=\"panelRef\"\r\n (cdkDragStarted)=\"started()\"\r\n (cdkDragEnded)=\"ended()\"\r\n (cdkDragMoved)=\"moved($event)\"\r\n ></div>\r\n </div>\r\n </div>\r\n <div class=\"x-color-picker-portal-tool\">\r\n <div class=\"x-color-picker-portal-operations\">\r\n <!-- <x-button icon=\"fto-edit-2\" onlyIcon></x-button> -->\r\n <div class=\"x-color-picker-portal-selected\">\r\n <div [style.background-color]=\"value()\"></div>\r\n </div>\r\n <div class=\"x-color-picker-portal-area\">\r\n <div class=\"x-color-picker-portal-slider\">\r\n <x-slider-select\r\n [style.width.%]=\"100\"\r\n [(ngModel)]=\"hsla().h\"\r\n min=\"0\"\r\n max=\"360\"\r\n step=\"1\"\r\n (dragStartEmit)=\"started()\"\r\n (dragEndEmit)=\"ended()\"\r\n (ngModelChange)=\"hueChange()\"\r\n ></x-slider-select>\r\n </div>\r\n <div class=\"x-color-picker-portal-transparent\">\r\n <x-slider-select\r\n [style.width.%]=\"100\"\r\n #transparentCom\r\n [(ngModel)]=\"hsla().a\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n (dragStarted)=\"started()\"\r\n (dragEnded)=\"ended()\"\r\n (ngModelChange)=\"transparentChange()\"\r\n ></x-slider-select>\r\n <div class=\"x-color-picker-portal-alpha\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"x-color-picker-portal-type\">\r\n <x-tabs animated=\"false\" justify=\"center\">\r\n <x-tab label=\"HEX\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [style.width.%]=\"100\" [(ngModel)]=\"hex\" (ngModelChange)=\"hexChange()\"></x-input>\r\n </div>\r\n </x-tab>\r\n <x-tab label=\"RGBA\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [(ngModel)]=\"rgba().r\" disabled></x-input>\r\n <x-input [(ngModel)]=\"rgba().g\" disabled></x-input>\r\n <x-input [(ngModel)]=\"rgba().b\" disabled></x-input>\r\n <x-input [(ngModel)]=\"rgba().a\" disabled></x-input>\r\n </div>\r\n </x-tab>\r\n <x-tab label=\"HSLA\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [(ngModel)]=\"hsla().h\" disabled></x-input>\r\n <x-input [(ngModel)]=\"hsla().sp\" disabled></x-input>\r\n <x-input [(ngModel)]=\"hsla().lp\" disabled></x-input>\r\n <x-input [(ngModel)]=\"hsla().a\" disabled></x-input>\r\n </div>\r\n </x-tab>\r\n </x-tabs>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-color-picker-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);background-color:var(--x-background-100);width:17rem;overflow:hidden}.x-color-picker-portal:focus{outline:none}.x-color-picker-portal-panel{padding:.375rem;margin:-.375rem}.x-color-picker-portal-plate{width:100%;height:8rem;display:flex;border-radius:var(--x-border-small-radius);position:relative}.x-color-picker-portal-white,.x-color-picker-portal-black{position:absolute;inset:0}.x-color-picker-portal-white{background:linear-gradient(90deg,#fff,#fff0)}.x-color-picker-portal-black{background:linear-gradient(0deg,#000,transparent)}.x-color-picker-portal-cursor{position:absolute;width:.75rem;height:.75rem;display:inline-block;border-radius:50%;border:.0625rem solid var(--x-background-100)}.x-color-picker-portal-tool{padding:.4rem}.x-color-picker-portal-operations{display:flex;align-items:center;padding:.4rem 0}.x-color-picker-portal-selected{margin-left:.4rem;width:2rem;height:2rem;border-radius:2rem;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.x-color-picker-portal-selected>div{width:2rem;height:2rem;border-radius:2rem}.x-color-picker-portal-area{margin-left:.4rem;position:relative;flex:1}.x-color-picker-portal-area .x-slider-select:hover:not(.x-disabled) .x-slider-select-process{background-color:transparent}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner .x-slider-select-rail{height:.75rem}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner .x-slider-select-process{background-color:transparent}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-drags>.x-slider-select-drag>.x-slider-select-button{border-color:var(--x-border);box-shadow:var(--x-box-shadow)}.x-color-picker-portal-slider{position:relative;width:100%;display:flex;align-items:center}.x-color-picker-portal-slider .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.x-color-picker-portal-transparent{position:relative;width:100%;display:flex;align-items:center}.x-color-picker-portal-transparent .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.x-color-picker-portal-type .x-tabs .x-tabs-list{display:flex;justify-content:center}.x-color-picker-portal-type-content{padding:.25rem;display:flex}.x-color-picker-portal-type-content .x-input .x-input-row input{text-align:center}\n"] }]
386
- }], propDecorators: { getPlacement: [{
387
- type: HostBinding,
388
- args: ['@x-connect-base-animation']
389
- }], done: [{
390
- type: HostListener,
391
- args: ['@x-connect-base-animation.done', ['$event']]
392
- }], start: [{
393
- type: HostListener,
394
- args: ['@x-connect-base-animation.start', ['$event']]
395
- }] } });
396
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLXBvcnRhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLXBvcnRhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLXBvcnRhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFFdkIsVUFBVSxFQUNWLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQWMsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUJBQXFCLEVBQXNCLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFhN0MsTUFBTSxPQUFPLDJCQUEyQjtJQVh4QztRQXdCRSxhQUFRLEdBQUcs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QUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVk7UUFDMUIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRyxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsR0FBVztRQUNyQixJQUFJLElBQUksR0FBRyxHQUFHO2FBQ1gsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7YUFDdEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7YUFDckIsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7YUFDakIsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7YUFDckIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNaLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVc7UUFDckIsSUFBSSxJQUFJLEdBQUcsR0FBRzthQUNYLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2FBQ2pCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO2FBQ3JCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDWixDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUc7Z0JBQ3pDLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHO2dCQUN6QyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN6QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsS0FBaUI7UUFDMUIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQUUsT0FBTztRQUN4QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbkUsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDM0MsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFpQjtRQUNyQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFekQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWSxFQUFFLEdBQVc7UUFDbEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUcsQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFHLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ1osQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNSLENBQUM7aUJBQU0sSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ25CLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN4QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckIsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDakQsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JCLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQVksQ0FBQztZQUMvRixPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckIsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBWSxDQUFDO1lBQy9GLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ3BCLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFDdEIsWUFBWSxFQUNaLGtDQUFrQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQ2xLLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakcsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkcsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsSUFBd0Q7UUFDakUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQVcsRUFBRSxJQUFJLENBQUMsQ0FBVyxFQUFFLElBQUksQ0FBQyxDQUFXLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNYLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQztvQkFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDO29CQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO29CQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO29CQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztvQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRCxPQUFPLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQztZQUVGLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTztZQUNMLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDdEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUN0QixDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ3RCLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUF3RDtRQUNoRSxJQUFJLEdBQUcsR0FBRztZQUNQLElBQUksQ0FBQyxDQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsQ0FBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLENBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFJLElBQUksQ0FBQyxDQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1NBQ2xELENBQUM7UUFDRixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbEIsQ0FBQztZQUNELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQXdEO1FBQ2pFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUUsSUFBSSxDQUFDLENBQVksR0FBRyxHQUFHLEVBQUcsSUFBSSxDQUFDLENBQVksR0FBRyxHQUFHLEVBQUcsSUFBSSxDQUFDLENBQVksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV4QixJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNoQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNaLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNsQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ3BELFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ1osS0FBSyxDQUFDO29CQUNKLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNsQyxNQUFNO2dCQUNSLEtBQUssQ0FBQztvQkFDSixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDcEIsTUFBTTtnQkFDUixLQUFLLENBQUM7b0JBQ0osQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3BCLE1BQU07WUFDVixDQUFDO1lBQ0QsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNULENBQUM7UUFFRCxPQUFPO1lBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUN0QixDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM3QyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM3QyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVztRQUNuQixJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDbkYsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDckYsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxRQUFRLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTO1FBQ3RDLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFbEIsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUVULElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUNULENBQUMsR0FBRyxDQUFDLENBQUM7UUFDUixDQUFDO2FBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUM3QixJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUVELE9BQU87WUFDTCxDQUFDLEVBQUUsSUFBSTtZQUNQLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hELENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzlDLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVksRUFBRSxHQUFXO1FBQ2xDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLElBQUksQ0FBQztRQUNqQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUNwQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7aUlBdFlVLDJCQUEyQjtxSEFBM0IsMkJBQTJCLGl1QkFIM0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLDJHQWdCYSxVQUFVLCtHQUNWLFVBQVUsMkhBQ0Usc0JBQXNCLDZDQ3REdEYsbXhHQWdGQSwreEZEakRZLFdBQVcsOFZBQUUsY0FBYyxpZkFBRSxzQkFBc0IsNERBQUUsY0FBYyxtREFBRSxhQUFhLGtEQUFFLGVBQWUsc0NBTWpHLENBQUMscUJBQXFCLENBQUM7OzJGQUV4QiwyQkFBMkI7a0JBWHZDLFNBQVM7K0JBQ0UsR0FBRyx3QkFBd0IsRUFBRSxjQUMzQixJQUFJLFdBQ1AsQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLGlCQUcvRixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxjQUN6QixDQUFDLHFCQUFxQixDQUFDOzhCQUdrQixZQUFZO3NCQUFoRSxXQUFXO3VCQUFDLDJCQUEyQjtnQkFHb0IsSUFBSTtzQkFBL0QsWUFBWTt1QkFBQyxnQ0FBZ0MsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJRyxLQUFLO3NCQUFqRSxZQUFZO3VCQUFDLGlDQUFpQyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgT25Jbml0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBIb3N0QmluZGluZyxcclxuICBpbmplY3QsXHJcbiAgaW5wdXQsXHJcbiAgb3V0cHV0LFxyXG4gIG1vZGVsLFxyXG4gIHZpZXdDaGlsZCxcclxuICBzaWduYWwsXHJcbiAgRGVzdHJveVJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYQ29sb3JQaWNrZXJQb3J0YWxQcmVmaXgsIFhDb2xvclR5cGUgfSBmcm9tICcuL2NvbG9yLXBpY2tlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhDb25uZWN0QmFzZUFuaW1hdGlvbiwgWFBvc2l0aW9uVG9wQm90dG9tIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFhTbGlkZXJTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9zbGlkZXItc2VsZWN0JztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDZGtEcmFnTW92ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBEZWNpbWFsUGlwZSwgUGVyY2VudFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBYSW5wdXRDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9pbnB1dCc7XHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFhUYWJzQ29tcG9uZW50LCBYVGFiQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvdGFicyc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hDb2xvclBpY2tlclBvcnRhbFByZWZpeH1gLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBEcmFnRHJvcE1vZHVsZSwgWFNsaWRlclNlbGVjdENvbXBvbmVudCwgWFRhYnNDb21wb25lbnQsIFhUYWJDb21wb25lbnQsIFhJbnB1dENvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbG9yLXBpY2tlci1wb3J0YWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbG9yLXBpY2tlci1wb3J0YWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW0RlY2ltYWxQaXBlLCBQZXJjZW50UGlwZV0sXHJcbiAgYW5pbWF0aW9uczogW1hDb25uZWN0QmFzZUFuaW1hdGlvbl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhDb2xvclBpY2tlclBvcnRhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQEhvc3RCaW5kaW5nKCdAeC1jb25uZWN0LWJhc2UtYW5pbWF0aW9uJykgcHVibGljIGdldCBnZXRQbGFjZW1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wbGFjZW1lbnQoKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignQHgtY29ubmVjdC1iYXNlLWFuaW1hdGlvbi5kb25lJywgWyckZXZlbnQnXSkgZG9uZSgpIHtcclxuICAgIGlmICh0aGlzLmRlc3Ryb3koKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5hbmltYXRpbmcuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24uc3RhcnQnLCBbJyRldmVudCddKSBzdGFydCgpIHtcclxuICAgIGlmICh0aGlzLmRlc3Ryb3koKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5hbmltYXRpbmcuZW1pdCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHBhbmVsUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkKCdwYW5lbFJlZicsIHsgcmVhZDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfSk7XHJcbiAgcGxhdGVSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQoJ3BsYXRlUmVmJywgeyByZWFkOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB9KTtcclxuICB0cmFuc3BhcmVudENvbSA9IHZpZXdDaGlsZC5yZXF1aXJlZCgndHJhbnNwYXJlbnRDb20nLCB7IHJlYWQ6IFhTbGlkZXJTZWxlY3RDb21wb25lbnQgfSk7XHJcbiAgdmFsdWUgPSBtb2RlbDxzdHJpbmc+KCcnKTtcclxuICBpbnB1dENvbSA9IGlucHV0PFhJbnB1dENvbXBvbmVudD4oKTtcclxuICBwbGFjZW1lbnQgPSBpbnB1dDxYUG9zaXRpb25Ub3BCb3R0b20+KCk7XHJcblxyXG4gIGFuaW1hdGluZyA9IG91dHB1dDxib29sZWFuPigpO1xyXG4gIG5vZGVDbGljayA9IG91dHB1dDxzdHJpbmc+KCk7XHJcblxyXG4gIHRyYW5zcGFyZW50UmFpbCA9IHNpZ25hbDxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xyXG4gIHNsaWRlckNvbG9yTnVtID0gc2lnbmFsKDApO1xyXG4gIHR5cGUgPSBzaWduYWw8WENvbG9yVHlwZSB8IG51bGw+KG51bGwpO1xyXG4gIG9mZnNldCA9IHNpZ25hbCgwKTtcclxuICBwYW5lbCA9IHNpZ25hbDxET01SZWN0IHwgbnVsbD4obnVsbCk7XHJcbiAgcGxhdGUgPSBzaWduYWw8RE9NUmVjdCB8IG51bGw+KG51bGwpO1xyXG4gIHRyYW5zZm9ybVggPSBzaWduYWwoMCk7XHJcbiAgdHJhbnNmb3JtWSA9IHNpZ25hbCgwKTtcclxuICBpbml0VHJhbnNmb3JtWCA9IHNpZ25hbCgwKTtcclxuICBpbml0VHJhbnNmb3JtWSA9IHNpZ25hbCgwKTtcclxuICBkcmFnID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcbiAgcmdiYSA9IHNpZ25hbDx7IHI/OiBudW1iZXI7IGc/OiBudW1iZXI7IGI/OiBudW1iZXI7IGE/OiBudW1iZXIgfT4oeyBhOiAxIH0pO1xyXG4gIGhzbGEgPSBzaWduYWw8eyBoPzogbnVtYmVyOyBzPzogbnVtYmVyOyBsPzogbnVtYmVyOyBhPzogbnVtYmVyOyBzcD86IHN0cmluZzsgbHA/OiBzdHJpbmcgfT4oe1xyXG4gICAgaDogMCxcclxuICAgIGE6IDFcclxuICB9KTtcclxuICBoZXggPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblxyXG4gIGRlc3Ryb3kgPSBzaWduYWwoZmFsc2UpO1xyXG4gIHByaXZhdGUgdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcblxyXG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuICBwcml2YXRlIGRlY2ltYWwgPSBpbmplY3QoRGVjaW1hbFBpcGUpO1xyXG4gIHByaXZhdGUgcGVyY2VudCA9IGluamVjdChQZXJjZW50UGlwZSk7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2xvckNvbnZlcnQoKTtcclxuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xyXG4gICAgICB0aGlzLmRlc3Ryb3kuc2V0KHRydWUpO1xyXG4gICAgICB0aGlzLnVuU3ViamVjdC5uZXh0KCk7XHJcbiAgICAgIHRoaXMudW5TdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMucGFuZWwuc2V0KHRoaXMucGFuZWxSZWYoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcclxuICAgIHRoaXMucGxhdGUuc2V0KHRoaXMucGxhdGVSZWYoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcclxuICAgIHRoaXMub2Zmc2V0LnNldCgodGhpcy5wYW5lbCgpIS53aWR0aCAtIHRoaXMucGxhdGUoKSEud2lkdGgpIC8gMik7XHJcbiAgICB0aGlzLnRyYW5zcGFyZW50UmFpbC5zZXQoXHJcbiAgICAgIHRoaXMudHJhbnNwYXJlbnRDb20oKS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLngtc2xpZGVyLXNlbGVjdC1yYWlsIGRpdicpIVxyXG4gICAgKTtcclxuICAgIHRoaXMuc2V0VHJhbnNmb3JtKCk7XHJcbiAgICB0aGlzLnNldFBsYXRlQmFja2dyb3VuZCgpO1xyXG4gICAgdGhpcy5zZXRSYWlsQmFja2dyb3VuZCgpO1xyXG4gIH1cclxuXHJcbiAgaGV4Q2hhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuZHJhZygpIHx8ICEvKF4jWzAtOUEtRl17Nn0kKS9pLnRlc3QodGhpcy5oZXgoKSkpIHJldHVybjtcclxuICAgIHRoaXMucmdiYS5zZXQodGhpcy5oZXhUb1JnYmEodGhpcy5oZXgoKSkpO1xyXG4gICAgdGhpcy5oc2xhLnNldCh0aGlzLnJnYmFUb0hzbGEodGhpcy5yZ2JhKCkpKTtcclxuICAgIHRoaXMuc2V0SHNsYVBlcmNlbnQoKTtcclxuICAgIHRoaXMuc2V0VHJhbnNmb3JtKCk7XHJcbiAgICB0aGlzLnNldFBsYXRlQmFja2dyb3VuZCgpO1xyXG4gICAgdGhpcy5zZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RvcFByb3BhZ2F0aW9uKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBjb2xvckNvbnZlcnQoKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUoKSE7XHJcbiAgICBpZiAoL14jLy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICB0aGlzLmhleC5zZXQodmFsdWUpO1xyXG4gICAgICB0aGlzLnJnYmEuc2V0KHRoaXMuaGV4VG9SZ2JhKHRoaXMuaGV4KCkpKTtcclxuICAgICAgdGhpcy5oc2xhLnNldCh0aGlzLnJnYmFUb0hzbGEodGhpcy5yZ2JhKCkpKTtcclxuICAgICAgdGhpcy5zZXRIc2xhUGVyY2VudCgpO1xyXG4gICAgICB0aGlzLnR5cGUuc2V0KCdoZXgnKTtcclxuICAgIH0gZWxzZSBpZiAoL3JnYi8udGVzdCh2YWx1ZSkpIHtcclxuICAgICAgdGhpcy5yZ2JhQ29udmVydCh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuaGV4LnNldCh0aGlzLnJnYmFUb0hleCh0aGlzLnJnYmEoKSkpO1xyXG4gICAgICB0aGlzLmhzbGEuc2V0KHRoaXMucmdiYVRvSHNsYSh0aGlzLnJnYmEoKSkpO1xyXG4gICAgICB0aGlzLnNldEhzbGFQZXJjZW50KCk7XHJcbiAgICAgIHRoaXMudHlwZS5zZXQoJ3JnYmEnKTtcclxuICAgIH0gZWxzZSBpZiAoL2hzbC8udGVzdCh2YWx1ZSkpIHtcclxuICAgICAgdGhpcy5oc2xhQ29udmVydCh2YWx1ZSk7XHJcbiAgICAgIHRoaXMucmdiYS5zZXQodGhpcy5oc2xhVG9SZ2JhKHRoaXMuaHNsYSgpKSk7XHJcbiAgICAgIHRoaXMuaGV4LnNldCh0aGlzLnJnYmFUb0hleCh0aGlzLnJnYmEoKSkpO1xyXG4gICAgICB0aGlzLnR5cGUuc2V0KCdoc2xhJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZ2JhQ29udmVydChzdHI6IHN0cmluZykge1xyXG4gICAgbGV0IHJnYmEgPSBzdHJcclxuICAgICAgLnJlcGxhY2UoL3JnYmE/XFwoLywgJycpXHJcbiAgICAgIC5yZXBsYWNlKC9yZ2I/XFwoLywgJycpXHJcbiAgICAgIC5yZXBsYWNlKC9cXCkvLCAnJylcclxuICAgICAgLnJlcGxhY2UoL1tcXHMrXS9nLCAnJylcclxuICAgICAgLnNwbGl0KCcsJyk7XHJcbiAgICBpZiAocmdiYS5sZW5ndGggPiAyKSB7XHJcbiAgICAgIHRoaXMucmdiYS5zZXQoe1xyXG4gICAgICAgIHI6IE51bWJlcihyZ2JhWzBdKSxcclxuICAgICAgICBnOiBOdW1iZXIocmdiYVsxXSksXHJcbiAgICAgICAgYjogTnVtYmVyKHJnYmFbMl0pLFxyXG4gICAgICAgIGE6IE51bWJlcihyZ2JhLmxlbmd0aCA+IDMgPyByZ2JhWzNdIDogMSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoc2xhQ29udmVydChzdHI6IHN0cmluZykge1xyXG4gICAgbGV0IGhzbGEgPSBzdHJcclxuICAgICAgLnJlcGxhY2UoL2hzbGE/XFwoLywgJycpXHJcbiAgICAgIC5yZXBsYWNlKC9oc2w/XFwoLywgJycpXHJcbiAgICAgIC5yZXBsYWNlKC9cXCkvLCAnJylcclxuICAgICAgLnJlcGxhY2UoL1tcXHMrXS9nLCAnJylcclxuICAgICAgLnNwbGl0KCcsJyk7XHJcbiAgICBpZiAoaHNsYS5sZW5ndGggPiAyKSB7XHJcbiAgICAgIHRoaXMuaHNsYS5zZXQoe1xyXG4gICAgICAgIGg6IE51bWJlcihoc2xhWzBdKSxcclxuICAgICAgICBzOiBOdW1iZXIoaHNsYVsxXS5yZXBsYWNlKCclJywgJycpKSAvIDEwMCxcclxuICAgICAgICBsOiBOdW1iZXIoaHNsYVsyXS5yZXBsYWNlKCclJywgJycpKSAvIDEwMCxcclxuICAgICAgICBhOiBOdW1iZXIoaHNsYS5sZW5ndGggPiAzID8gaHNsYVszXSA6IDEpXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldEhzbGFQZXJjZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwbGF0ZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kcmFnKCkpIHJldHVybjtcclxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLnBsYXRlUmVmKCkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGxlZnQgPSBldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0O1xyXG4gICAgY29uc3QgdG9wID0gZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wO1xyXG4gICAgdGhpcy50cmFuc2Zvcm1YLnNldChsZWZ0IC0gdGhpcy5vZmZzZXQoKSk7XHJcbiAgICB0aGlzLnRyYW5zZm9ybVkuc2V0KHRvcCAtIHRoaXMub2Zmc2V0KCkpO1xyXG4gICAgdGhpcy5pbml0VHJhbnNmb3JtWC5zZXQodGhpcy50cmFuc2Zvcm1YKCkpO1xyXG4gICAgdGhpcy5pbml0VHJhbnNmb3JtWS5zZXQodGhpcy50cmFuc2Zvcm1ZKCkpO1xyXG4gICAgdGhpcy5zZXRMZXRmVG9wKGxlZnQsIHRvcCk7XHJcbiAgfVxyXG5cclxuICBzZXRUcmFuc2Zvcm0oKSB7XHJcbiAgICBsZXQgaHN2ID0gdGhpcy5oc2xUb0hzdih0aGlzLmhzbGEoKS5oISwgdGhpcy5oc2xhKCkucyEsIHRoaXMuaHNsYSgpLmwhKTtcclxuICAgIHRoaXMudHJhbnNmb3JtWC5zZXQoaHN2LnMgKiB0aGlzLnBsYXRlKCkhLndpZHRoIC0gdGhpcy5vZmZzZXQoKSk7XHJcbiAgICB0aGlzLnRyYW5zZm9ybVkuc2V0KCgxIC0gaHN2LnYpICogdGhpcy5wbGF0ZSgpIS5oZWlnaHQgLSB0aGlzLm9mZnNldCgpKTtcclxuICAgIHRoaXMuaW5pdFRyYW5zZm9ybVguc2V0KHRoaXMudHJhbnNmb3JtWCgpKTtcclxuICAgIHRoaXMuaW5pdFRyYW5zZm9ybVkuc2V0KHRoaXMudHJhbnNmb3JtWSgpKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0ZWQoKSB7XHJcbiAgICB0aGlzLmRyYWcuc2V0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgZW5kZWQoKSB7XHJcbiAgICB0aGlzLmluaXRUcmFuc2Zvcm1YLnNldCh0aGlzLnRyYW5zZm9ybVgoKSk7XHJcbiAgICB0aGlzLmluaXRUcmFuc2Zvcm1ZLnNldCh0aGlzLnRyYW5zZm9ybVkoKSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kcmFnLnNldChmYWxzZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG1vdmVkKGRyYWc6IENka0RyYWdNb3ZlKSB7XHJcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBkcmFnLnNvdXJjZS5nZXRGcmVlRHJhZ1Bvc2l0aW9uKCk7XHJcbiAgICBkcmFnLnNvdXJjZS5yZXNldCgpO1xyXG4gICAgdGhpcy50cmFuc2Zvcm1YLnNldCh0cmFuc2Zvcm0ueCArIHRoaXMuaW5pdFRyYW5zZm9ybVgoKSk7XHJcbiAgICB0aGlzLnRyYW5zZm9ybVkuc2V0KHRyYW5zZm9ybS55ICsgdGhpcy5pbml0VHJhbnNmb3JtWSgpKTtcclxuXHJcbiAgICBjb25zdCBsZWZ0ID0gdGhpcy50cmFuc2Zvcm1YKCkgKyB0aGlzLm9mZnNldCgpO1xyXG4gICAgY29uc3QgdG9wID0gdGhpcy50cmFuc2Zvcm1ZKCkgKyB0aGlzLm9mZnNldCgpO1xyXG4gICAgdGhpcy5zZXRMZXRmVG9wKGxlZnQsIHRvcCk7XHJcbiAgfVxyXG5cclxuICBzZXRMZXRmVG9wKGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIpIHtcclxuICAgIGxldCBzID0gbGVmdCAvIHRoaXMucGxhdGUoKSEud2lkdGg7XHJcbiAgICBsZXQgdiA9IDEgLSB0b3AgLyB0aGlzLnBsYXRlKCkhLmhlaWdodDtcclxuICAgIGxldCBsID0gKCgyIC0gcykgKiB2KSAvIDI7XHJcbiAgICBpZiAobCAhPT0gMCkge1xyXG4gICAgICBpZiAobCA9PT0gMSkge1xyXG4gICAgICAgIHMgPSAwO1xyXG4gICAgICB9IGVsc2UgaWYgKGwgPCAwLjUpIHtcclxuICAgICAgICBzID0gKHMgKiB2KSAvIChsICogMik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcyA9IChzICogdikgLyAoMiAtIGwgKiAyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5oc2xhLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICB4LnMgPSBOdW1iZXIodGhpcy5kZWNpbWFsLnRyYW5zZm9ybShzLCAnMS4yLTInKSk7XHJcbiAgICAgIHgubCA9IE51bWJlcih0aGlzLmRlY2ltYWwudHJhbnNmb3JtKGwsICcxLjItMicpKTtcclxuICAgICAgcmV0dXJuIHsgLi4ueCB9O1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldEhzbGFQZXJjZW50KCk7XHJcbiAgICB0aGlzLnJnYmEuc2V0KHRoaXMuaHNsYVRvUmdiYSh0aGlzLmhzbGEoKSkpO1xyXG4gICAgdGhpcy5oZXguc2V0KHRoaXMucmdiYVRvSGV4KHRoaXMucmdiYSgpKSk7XHJcbiAgICB0aGlzLnNldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRIc2xhUGVyY2VudCgpIHtcclxuICAgIHRoaXMuaHNsYS51cGRhdGUoKHgpID0+IHtcclxuICAgICAgeC5zcCA9IHRoaXMuaHNsYSgpLnMgPT09IDAgPyAnMCUnIDogKHRoaXMucGVyY2VudC50cmFuc2Zvcm0odGhpcy5oc2xhKCkucywgJzEuMC0wJykgYXMgc3RyaW5nKTtcclxuICAgICAgcmV0dXJuIHsgLi4ueCB9O1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmhzbGEudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgIHgubHAgPSB0aGlzLmhzbGEoKS5sID09PSAwID8gJzAlJyA6ICh0aGlzLnBlcmNlbnQudHJhbnNmb3JtKHRoaXMuaHNsYSgpLmwsICcxLjAtMCcpIGFzIHN0cmluZyk7XHJcbiAgICAgIHJldHVybiB7IC4uLnggfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaHVlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5zZXRQbGF0ZUJhY2tncm91bmQoKTtcclxuICAgIHRoaXMucmdiYS5zZXQodGhpcy5oc2xhVG9SZ2JhKHRoaXMuaHNsYSgpKSk7XHJcbiAgICB0aGlzLmhleC5zZXQodGhpcy5yZ2JhVG9IZXgodGhpcy5yZ2JhKCkpKTtcclxuICAgIHRoaXMuc2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHNldFBsYXRlQmFja2dyb3VuZCgpIHtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wbGF0ZVJlZigpLm5hdGl2ZUVsZW1lbnQsICdiYWNrZ3JvdW5kLWNvbG9yJywgYGhzbCgke3RoaXMuaHNsYSgpLmh9LCAxMDAlLCA1MCUpYCk7XHJcbiAgfVxyXG5cclxuICBzZXRSYWlsQmFja2dyb3VuZCgpIHtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXHJcbiAgICAgIHRoaXMudHJhbnNwYXJlbnRSYWlsKCksXHJcbiAgICAgICdiYWNrZ3JvdW5kJyxcclxuICAgICAgYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgke3RoaXMucmdiYSgpLnJ9LCAke3RoaXMucmdiYSgpLmd9LCAke3RoaXMucmdiYSgpLmJ9LCAwKSAwJSwgcmdiYSgke3RoaXMucmdiYSgpLnJ9LCAke3RoaXMucmdiYSgpLmd9LCAke3RoaXMucmdiYSgpLmJ9LCAxKSAxMDAlKWBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0cmFuc3BhcmVudENoYW5nZSgpIHtcclxuICAgIHRoaXMucmdiYS5zZXQodGhpcy5oc2xhVG9SZ2JhKHRoaXMuaHNsYSgpKSk7XHJcbiAgICB0aGlzLmhleC5zZXQodGhpcy5yZ2JhVG9IZXgodGhpcy5yZ2JhKCkpKTtcclxuICAgIHRoaXMuc2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlKCkge1xyXG4gICAgdGhpcy5zZXRWYWx1ZUJ5VHlwZSgpO1xyXG4gICAgdGhpcy5zZXRSYWlsQmFja2dyb3VuZCgpO1xyXG4gICAgdGhpcy5ub2RlQ2xpY2suZW1pdCh0aGlzLnZhbHVlKCkpO1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWVCeVR5cGUoKSB7XHJcbiAgICBpZiAodGhpcy50eXBlKCkgPT09ICdoZXgnKSB7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KGAke3RoaXMuaGV4KCl9YCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSgpID09PSAncmdiYScpIHtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQoYHJnYmEoJHt0aGlzLnJnYmEoKS5yfSwgJHt0aGlzLnJnYmEoKS5nfSwgJHt0aGlzLnJnYmEoKS5ifSwgJHt0aGlzLnJnYmEoKS5hfSlgKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlKCkgPT09ICdoc2xhJykge1xyXG4gICAgICB0aGlzLnZhbHVlLnNldChgaHNsYSgke3RoaXMuaHNsYSgpLmh9LCAke3RoaXMuaHNsYSgpLnNwfSwgJHt0aGlzLmhzbGEoKS5scH0sICR7dGhpcy5oc2xhKCkuYX0pYCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoc2xhVG9SZ2JhKGhzbGE6IHsgaD86IG51bWJlcjsgcz86IG51bWJlcjsgbD86IG51bWJlcjsgYT86IG51bWJlciB9KSB7XHJcbiAgICBsZXQgciwgZywgYjtcclxuICAgIGxldCBbaCwgcywgbF0gPSBbaHNsYS5oIGFzIG51bWJlciwgaHNsYS5zIGFzIG51bWJlciwgaHNsYS5sIGFzIG51bWJlcl07XHJcbiAgICBpZiAocyA9PSAwKSB7XHJcbiAgICAgIHIgPSBnID0gYiA9IGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgaHVlMnJnYiA9IChwOiBudW1iZXIsIHE6IG51bWJlciwgdDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKHQgPCAwKSB0ICs9IDE7XHJcbiAgICAgICAgaWYgKHQgPiAxKSB0IC09IDE7XHJcbiAgICAgICAgaWYgKHQgPCAxIC8gNikgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7XHJcbiAgICAgICAgaWYgKHQgPCAxIC8gMikgcmV0dXJuIHE7XHJcbiAgICAgICAgaWYgKHQgPCAyIC8gMykgcmV0dXJuIHAgKyAocSAtIHApICogKDIgLyAzIC0gdCkgKiA2O1xyXG4gICAgICAgIHJldHVybiBwO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgbGV0IHEgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzO1xyXG4gICAgICBsZXQgcCA9IDIgKiBsIC0gcTtcclxuICAgICAgciA9IGh1ZTJyZ2IocCwgcSwgaCAvIDM2MCArIDEgLyAzKTtcclxuICAgICAgZyA9IGh1ZTJyZ2IocCwgcSwgaCAvIDM2MCk7XHJcbiAgICAgIGIgPSBodWUycmdiKHAsIHEsIGggLyAzNjAgLSAxIC8gMyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICByOiBNYXRoLnJvdW5kKHIgKiAyNTUpLFxyXG4gICAgICBnOiBNYXRoLnJvdW5kKGcgKiAyNTUpLFxyXG4gICAgICBiOiBNYXRoLnJvdW5kKGIgKiAyNTUpLFxyXG4gICAgICBhOiBOdW1iZXIoaHNsYS5hKVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJnYmFUb0hleChyZ2JhOiB7IHI/OiBudW1iZXI7IGc/OiBudW1iZXI7IGI/OiBudW1iZXI7IGE/OiBudW1iZXIgfSkge1xyXG4gICAgbGV0IGhleCA9IFtcclxuICAgICAgKHJnYmEuciBhcyBudW1iZXIpLnRvU3RyaW5nKDE2KSxcclxuICAgICAgKHJnYmEuZyBhcyBudW1iZXIpLnRvU3RyaW5nKDE2KSxcclxuICAgICAgKHJnYmEuYiBhcyBudW1iZXIpLnRvU3RyaW5nKDE2KSxcclxuICAgICAgTWF0aC5yb3VuZCgyNTUgKiAocmdiYS5hIGFzIG51bWJlcikpLnRvU3RyaW5nKDE2KVxyXG4gICAgXTtcclxuICAgIGhleC5mb3JFYWNoKCh4LCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPT09IDMgJiYgeCA9PT0gJ2ZmJykge1xyXG4gICAgICAgIGhleFtpbmRleF0gPSAnJztcclxuICAgICAgfVxyXG4gICAgICBpZiAoeC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICBoZXhbaW5kZXhdID0gJzAnICsgeDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYCMke2hleC5qb2luKCcnKX1gO1xyXG4gIH1cclxuXHJcbiAgcmdiYVRvSHNsYShyZ2JhOiB7IHI/OiBudW1iZXI7IGc/OiBudW1iZXI7IGI/OiBudW1iZXI7IGE/OiBudW1iZXIgfSkge1xyXG4gICAgbGV0IFtyLCBnLCBiXSA9IFsocmdiYS5yIGFzIG51bWJlcikgLyAyNTUsIChyZ2JhLmcgYXMgbnVtYmVyKSAvIDI1NSwgKHJnYmEuYiBhcyBudW1iZXIpIC8gMjU1XTtcclxuICAgIGxldCBbbWF4LCBtaW5dID0gW01hdGgubWF4KHIsIGcsIGIpLCBNYXRoLm1pbihyLCBnLCBiKV07XHJcbiAgICBsZXQgaCA9IDA7XHJcbiAgICBsZXQgcyA9IDA7XHJcbiAgICBsZXQgbCA9IChtYXggKyBtaW4pIC8gMjtcclxuXHJcbiAgICBpZiAobWF4ID09PSBtaW4pIHtcclxuICAgICAgaCA9IHMgPSAwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGQgPSBtYXggLSBtaW47XHJcbiAgICAgIHMgPSBsID4gMC41ID8gZCAvICgyIC0gbWF4IC0gbWluKSA6IGQgLyAobWF4ICsgbWluKTtcclxuICAgICAgc3dpdGNoIChtYXgpIHtcclxuICAgICAgICBjYXNlIHI6XHJcbiAgICAgICAgICBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIGc6XHJcbiAgICAgICAgICBoID0gKGIgLSByKSAvIGQgKyAyO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBiOlxyXG4gICAgICAgICAgaCA9IChyIC0gZykgLyBkICsgNDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGggLz0gNjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBoOiBNYXRoLnJvdW5kKGggKiAzNjApLFxyXG4gICAgICBzOiBOdW1iZXIodGhpcy5kZWNpbWFsLnRyYW5zZm9ybShzLCAnMS4yLTInKSksXHJcbiAgICAgIGw6IE51bWJlcih0aGlzLmRlY2ltYWwudHJhbnNmb3JtKGwsICcxLjItMicpKSxcclxuICAgICAgYTogTnVtYmVyKHJnYmEuYSlcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBoZXhUb1JnYmEoaGV4OiBzdHJpbmcpIHtcclxuICAgIGxldCBoZXhOdW0gPSBoZXguc3Vic3RyaW5nKDEpO1xyXG4gICAgbGV0IGEgPSAxO1xyXG4gICAgaWYgKGhleE51bS5sZW5ndGggPT09IDgpIHtcclxuICAgICAgYSA9IE51bWJlcih0aGlzLmRlY2ltYWwudHJhbnNmb3JtKE51bWJlcignMHgnICsgaGV4TnVtLnNsaWNlKC0yKSkgLyAyNTUsICcxLjItMicpKTtcclxuICAgICAgaGV4TnVtID0gaGV4TnVtLnN1YnN0cmluZygwLCBoZXhOdW0ubGVuZ3RoIC0gMik7XHJcbiAgICB9XHJcbiAgICBsZXQgbnVtID0gTnVtYmVyKCcweCcgKyAoaGV4TnVtLmxlbmd0aCA8IDYgPyB0aGlzLnJlcGVhdExldHRlcihoZXhOdW0sIDIpIDogaGV4TnVtKSk7XHJcbiAgICByZXR1cm4geyByOiBudW0gPj4gMTYsIGc6IChudW0gPj4gOCkgJiAweGZmLCBiOiBudW0gJiAweGZmLCBhOiBhIH07XHJcbiAgfVxyXG5cclxuICBoc2xUb0hzdihoOiBudW1iZXIsIHM6IG51bWJlciwgbDogbnVtYmVyKSB7XHJcbiAgICBsZXQgaEhzdiwgc0hzdiwgdjtcclxuXHJcbiAgICBoSHN2ID0gaDtcclxuXHJcbiAgICBpZiAobCA9PSAwKSB7XHJcbiAgICAgIHNIc3YgPSAwO1xyXG4gICAgICB2ID0gMDtcclxuICAgIH0gZWxzZSBpZiAobCA+IDAgJiYgbCA8PSAwLjUpIHtcclxuICAgICAgc0hzdiA9ICgyICogcykgLyAoMSArIHMpO1xyXG4gICAgICB2ID0gbCAqICgxICsgcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzSHN2ID0gKDIgKiBzIC0gMiAqIHMgKiBsKSAvIChzIC0gcyAqIGwgKyBsKTtcclxuICAgICAgdiA9IHMgLSBzICogbCArIGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaDogaEhzdixcclxuICAgICAgczogTnVtYmVyKHRoaXMuZGVjaW1hbC50cmFuc2Zvcm0oc0hzdiwgJzEuMi0yJykpLFxyXG4gICAgICB2OiBOdW1iZXIodGhpcy5kZWNpbWFsLnRyYW5zZm9ybSh2LCAnMS4yLTInKSlcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZXBlYXRXb3JkKHdvcmQ6IHN0cmluZywgbnVtOiBudW1iZXIpIHtcclxuICAgIGxldCByZXN1bHQgPSAnJztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtOyBpKyspIHtcclxuICAgICAgcmVzdWx0ICs9IHdvcmQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcmVwZWF0TGV0dGVyKHdvcmQ6IHN0cmluZywgbnVtOiBudW1iZXIpIHtcclxuICAgIGxldCByZXN1bHQgPSAnJztcclxuICAgIGZvciAobGV0IGxldHRlciBvZiB3b3JkKSB7XHJcbiAgICAgIHJlc3VsdCArPSB0aGlzLnJlcGVhdFdvcmQobGV0dGVyLCBudW0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIngtY29sb3ItcGlja2VyLXBvcnRhbFwiIHRhYmluZGV4PVwiLTFcIiAoY2xpY2spPVwic3RvcFByb3BhZ2F0aW9uKCRldmVudClcIj5cclxuICA8ZGl2ICNwYW5lbFJlZiBjbGFzcz1cIngtY29sb3ItcGlja2VyLXBvcnRhbC1wYW5lbFwiPlxyXG4gICAgPGRpdiAjcGxhdGVSZWYgY2xhc3M9XCJ4LWNvbG9yLXBpY2tlci1wb3J0YWwtcGxhdGVcIiAoY2xpY2spPVwicGxhdGVDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWNvbG9yLXBpY2tlci1wb3J0YWwtd2hpdGVcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtY29sb3ItcGlja2VyLXBvcnRhbC1ibGFja1wiPjwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgI2RyYWdDb21cclxuICAgICAgICBjbGFzcz1cIngtY29sb3ItcGlja2VyLXBvcnRhbC1jdXJzb3JcIlxyXG4gICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInRyYW5zZm9ybVgoKVwiXHJcbiAgICAgICAgW3N0eWxlLnRvcC5weF09XCJ0cmFuc2Zvcm1ZKClcIlxyXG4gICAgICAgIGNka0RyYWdcclxuICAgICAgICBbY2RrRHJhZ0JvdW5kYXJ5XT1cInBhbmVsUmVmXCJcclxuICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwic3RhcnRlZCgpXCJcclxuICAgICAgICAoY2RrRHJhZ0VuZGVkKT1cImVuZGVkKClcIlxyXG4gICAgICAgIChjZGtEcmFnTW92ZWQpPVwibW92ZWQoJGV2ZW50KVwiXHJcbiAgICAgID48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWNvbG9yLXBpY2tlci1wb3J0YWwtdG9vbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtY29sb3ItcGlja2VyLXBvcnRhbC1vcGVyYXRpb25zXCI+XHJcbiAgICAgIDwhLS0gPHgtYnV0dG9uIGljb249XCJmdG8tZWRpdC0yXCIgb25seUljb24+PC94LWJ1dHRvbj4gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWNvbG9yLXBpY2tlci1wb3J0YWwtc2VsZWN0ZWRcIj5cclxuICAgICAgICA8ZGl2IFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInZhbHVlKClcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWNvbG9yLXBpY2tlci1wb3J0YWwtYXJlYVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ4LWNvbG9yLXBpY2tlci1wb3J0YWwtc2xpZGVyXCI+XHJcbiAgICAgICAgICA8eC1zbGlkZXItc2VsZWN0XHJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC4lXT1cIjEwMFwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaHNsYSgpLmhcIlxyXG4gICAgICAgICAgICBtaW49XCIwXCJcclxuICAgICAgICAgICAgbWF4PVwiMzYwXCJcclxuICAgICAgICAgICAgc3RlcD1cIjFcIlxyXG4gICAgICAgICAgICAoZHJhZ1N0YXJ0RW1pdCk9XCJzdGFydGVkKClcIlxyXG4gICAgICAgICAgICAoZHJhZ0VuZEVtaXQpPVwiZW5kZWQoKVwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImh1ZUNoYW5nZSgpXCJcclxuICAgICAgICAgID48L3gtc2xpZGVyLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwieC1jb2xvci1waWNrZXItcG9ydGFsLXRyYW5zcGFyZW50XCI+XHJcbiAgICAgICAgICA8eC1zbGlkZXItc2VsZWN0XHJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC4lXT1cIjEwMFwiXHJcbiAgICAgICAgICAgICN0cmFuc3BhcmVudENvbVxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhzbGEoKS5hXCJcclxuICAgICAgICAgICAgbWluPVwiMFwiXHJcbiAgICAgICAgICAgIG1heD1cIjFcIlxyXG4gICAgICAgICAgICBzdGVwPVwiMC4wMVwiXHJcbiAgICAgICAgICAgIChkcmFnU3RhcnRlZCk9XCJzdGFydGVkKClcIlxyXG4gICAgICAgICAgICAoZHJhZ0VuZGVkKT1cImVuZGVkKClcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0cmFuc3BhcmVudENoYW5nZSgpXCJcclxuICAgICAgICAgID48L3gtc2xpZGVyLXNlbGVjdD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ4LWNvbG9yLXBpY2tlci1wb3J0YWwtYWxwaGFcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWNvbG9yLXBpY2tlci1wb3J0YWwtdHlwZVwiPlxyXG4gICAgICA8eC10YWJzIGFuaW1hdGVkPVwiZmFsc2VcIiBqdXN0aWZ5PVwiY2VudGVyXCI+XHJcbiAgICAgICAgPHgtdGFiIGxhYmVsPVwiSEVYXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1jb2xvci1waWNrZXItcG9ydGFsLXR5cGUtY29udGVudFwiPlxyXG4gICAgICAgICAgICA8eC1pbnB1dCBbc3R5bGUud2lkdGguJV09XCIxMDBcIiBbKG5nTW9kZWwpXT1cImhleFwiIChuZ01vZGVsQ2hhbmdlKT1cImhleENoYW5nZSgpXCI+PC94LWlucHV0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC94LXRhYj5cclxuICAgICAgICA8eC10YWIgbGFiZWw9XCJSR0JBXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1jb2xvci1waWNrZXItcG9ydGFsLXR5cGUtY29udGVudFwiPlxyXG4gICAgICAgICAgICA8eC1pbnB1dCBbKG5nTW9kZWwpXT1cInJnYmEoKS5yXCIgZGlzYWJsZWQ+PC94LWlucHV0PlxyXG4gICAgICAgICAgICA8eC1pbnB1dCBbKG5nTW9kZWwpXT1cInJnYmEoKS5nXCIgZGlzYWJsZWQ+PC94LWlucHV0PlxyXG4gICAgICAgICAgICA8eC1pbnB1dCBbKG5nTW9kZWwpXT1cInJnYmEoKS5iXCIgZGlzYWJsZWQ+PC94LWlucHV0PlxyXG4gICAgICAgICAgICA8eC1pbnB1dCBbKG5nTW9kZWwpXT1cInJnYmEoKS5hXCIgZGlzYWJsZWQ+PC94LWlucHV0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC94LXRhYj5cclxuICAgICAgICA8eC10YWIgbGFiZWw9XCJIU0xBXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1jb2xvci1waWNrZXItcG9ydGFsLXR5cGUtY29udGVudFwiPlxyXG4gICAgICAgICAgICA8eC1pbnB1dCBbKG5nTW9kZWwpXT1cImhzbGEoKS5oXCIgZGlzYWJsZWQ+PC94LWlucHV0PlxyXG4gICAgICAgICAgICA8eC1pbnB1dCBbKG5nTW9kZWwpXT1cImhzbGEoKS5zcFwiIGRpc2FibGVkPjwveC1pbnB1dD5cclxuICAgICAgICAgICAgPHgtaW5wdXQgWyhuZ01vZGVsKV09XCJoc2xhKCkubHBcIiBkaXNhYmxlZD48L3gtaW5wdXQ+XHJcbiAgICAgICAgICAgIDx4LWlucHV0IFsobmdNb2RlbCldPVwiaHNsYSgpLmFcIiBkaXNhYmxlZD48L3gtaW5wdXQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3gtdGFiPlxyXG4gICAgICA8L3gtdGFicz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19