@ng-nest/ui 17.0.12 → 18.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 (923) hide show
  1. package/README.md +1 -1
  2. package/affix/affix.component.d.ts +0 -2
  3. package/affix/affix.property.d.ts +12 -7
  4. package/alert/alert.component.d.ts +12 -11
  5. package/alert/alert.property.d.ts +36 -35
  6. package/anchor/anchor.component.d.ts +15 -18
  7. package/anchor/anchor.property.d.ts +17 -8
  8. package/api/api.component.d.ts +2 -7
  9. package/auto-complete/auto-complete-portal.component.d.ts +20 -25
  10. package/auto-complete/auto-complete.component.d.ts +17 -34
  11. package/auto-complete/auto-complete.property.d.ts +282 -20
  12. package/avatar/avatar.component.d.ts +29 -19
  13. package/avatar/avatar.property.d.ts +78 -12
  14. package/back-top/back-top.component.d.ts +12 -17
  15. package/back-top/back-top.property.d.ts +12 -8
  16. package/badge/badge.component.d.ts +9 -16
  17. package/badge/badge.property.d.ts +95 -13
  18. package/base-form/base-form.component.d.ts +53 -26
  19. package/base-form/base-form.module.d.ts +1 -2
  20. package/base-form/base-form.property.d.ts +173 -45
  21. package/button/button.component.d.ts +16 -14
  22. package/button/button.property.d.ts +242 -100
  23. package/button/buttons.component.d.ts +8 -10
  24. package/calendar/calendar.component.d.ts +41 -27
  25. package/calendar/calendar.property.d.ts +69 -10
  26. package/card/card.component.d.ts +4 -6
  27. package/card/card.property.d.ts +50 -9
  28. package/carousel/carousel-panel.component.d.ts +15 -14
  29. package/carousel/carousel.component.d.ts +18 -19
  30. package/carousel/carousel.property.d.ts +168 -28
  31. package/cascade/cascade-portal.component.d.ts +28 -28
  32. package/cascade/cascade.component.d.ts +24 -30
  33. package/cascade/cascade.property.d.ts +292 -20
  34. package/checkbox/checkbox.component.d.ts +17 -17
  35. package/checkbox/checkbox.property.d.ts +274 -35
  36. package/collapse/collapse-panel.component.d.ts +5 -2
  37. package/collapse/collapse.component.d.ts +3 -7
  38. package/collapse/collapse.property.d.ts +113 -20
  39. package/color/color.component.d.ts +4 -9
  40. package/color/color.property.d.ts +36 -8
  41. package/color-picker/color-picker-portal.component.d.ts +40 -52
  42. package/color-picker/color-picker.component.d.ts +19 -28
  43. package/color-picker/color-picker.property.d.ts +260 -10
  44. package/comment/comment-reply.component.d.ts +1 -8
  45. package/comment/comment.component.d.ts +4 -14
  46. package/comment/comment.property.d.ts +21 -15
  47. package/container/aside.component.d.ts +3 -8
  48. package/container/container.component.d.ts +5 -9
  49. package/container/container.property.d.ts +33 -19
  50. package/container/footer.component.d.ts +2 -5
  51. package/container/header.component.d.ts +2 -5
  52. package/container/main.component.d.ts +2 -7
  53. package/core/animation/badge.d.ts +8 -0
  54. package/core/animation/connect.d.ts +8 -1
  55. package/core/animation/consts.d.ts +4 -0
  56. package/core/animation/drop.d.ts +4 -0
  57. package/core/animation/fade.d.ts +4 -0
  58. package/core/animation/move.d.ts +4 -0
  59. package/core/animation/opacity.d.ts +4 -0
  60. package/core/animation/slide.d.ts +4 -1
  61. package/core/config/config.d.ts +174 -108
  62. package/core/config/config.service.d.ts +5 -5
  63. package/core/config/index.d.ts +1 -0
  64. package/core/functions/chunk.d.ts +12 -1
  65. package/core/functions/clone-deep.d.ts +16 -0
  66. package/core/functions/convert.d.ts +77 -4
  67. package/core/functions/csspx.d.ts +5 -0
  68. package/core/functions/date.d.ts +59 -3
  69. package/core/functions/drop.d.ts +13 -1
  70. package/core/functions/flex.d.ts +4 -0
  71. package/core/functions/group-by.d.ts +5 -1
  72. package/core/functions/guid.d.ts +2 -1
  73. package/core/functions/has-in.d.ts +4 -0
  74. package/core/functions/order-by.d.ts +5 -1
  75. package/core/functions/parent-path.d.ts +8 -0
  76. package/core/functions/property.d.ts +12 -6
  77. package/core/functions/public-api.d.ts +1 -0
  78. package/core/functions/remove.d.ts +5 -1
  79. package/core/functions/resize.d.ts +13 -1
  80. package/core/interfaces/data.type.d.ts +172 -3
  81. package/core/interfaces/identify.type.d.ts +60 -0
  82. package/core/interfaces/layout.type.d.ts +88 -37
  83. package/core/interfaces/result-list.type.d.ts +91 -3
  84. package/core/services/http.service.d.ts +0 -22
  85. package/core/services/repository.service.d.ts +1 -1
  86. package/core/services/reuse-strategy.service.d.ts +0 -22
  87. package/core/services/storage.service.d.ts +0 -21
  88. package/core/theme/theme.d.ts +45 -1
  89. package/core/theme/theme.service.d.ts +46 -11
  90. package/core/util/animation.d.ts +1 -1
  91. package/core/util/camel-to-kebab.d.ts +13 -0
  92. package/core/util/check.d.ts +10 -2
  93. package/core/util/computed-style.d.ts +8 -0
  94. package/core/util/host.d.ts +3 -2
  95. package/core/util/html.d.ts +3 -2
  96. package/core/util/kebab-to-camel.d.ts +13 -0
  97. package/core/util/log.d.ts +10 -2
  98. package/core/util/option.d.ts +3 -4
  99. package/core/util/public-api.d.ts +2 -0
  100. package/crumb/crumb.component.d.ts +1 -10
  101. package/crumb/crumb.property.d.ts +12 -8
  102. package/date-picker/date-picker-portal.component.d.ts +80 -33
  103. package/date-picker/date-picker.component.d.ts +74 -32
  104. package/date-picker/date-picker.property.d.ts +662 -214
  105. package/date-picker/date-range-portal.component.d.ts +102 -49
  106. package/date-picker/date-range.component.d.ts +87 -43
  107. package/date-picker/picker-date.component.d.ts +63 -17
  108. package/date-picker/picker-month.component.d.ts +59 -13
  109. package/date-picker/picker-quarter.component.d.ts +61 -15
  110. package/date-picker/picker-year.component.d.ts +8 -11
  111. package/description/description-item.component.d.ts +1 -1
  112. package/description/description.component.d.ts +6 -10
  113. package/description/description.property.d.ts +135 -16
  114. package/dialog/dialog-portal.component.d.ts +5 -6
  115. package/dialog/dialog-portal.directives.d.ts +1 -1
  116. package/dialog/dialog.component.d.ts +30 -23
  117. package/dialog/dialog.property.d.ts +77 -134
  118. package/doc/doc.component.d.ts +2 -5
  119. package/drag/drag.directive.d.ts +1 -1
  120. package/drag/drag.property.d.ts +4 -5
  121. package/drawer/drawer-container.component.d.ts +1 -1
  122. package/drawer/drawer-portal.component.d.ts +1 -1
  123. package/drawer/drawer.component.d.ts +15 -14
  124. package/drawer/drawer.property.d.ts +26 -18
  125. package/dropdown/dropdown-portal.component.d.ts +36 -45
  126. package/dropdown/dropdown.component.d.ts +17 -21
  127. package/dropdown/dropdown.property.d.ts +24 -21
  128. package/empty/empty.component.d.ts +0 -7
  129. package/empty/empty.property.d.ts +27 -4
  130. package/esm2022/affix/affix.component.mjs +6 -11
  131. package/esm2022/affix/affix.module.mjs +5 -5
  132. package/esm2022/affix/affix.property.mjs +22 -20
  133. package/esm2022/alert/alert.component.mjs +39 -44
  134. package/esm2022/alert/alert.module.mjs +5 -5
  135. package/esm2022/alert/alert.property.mjs +102 -107
  136. package/esm2022/anchor/anchor-inner.component.mjs +4 -4
  137. package/esm2022/anchor/anchor.component.mjs +73 -95
  138. package/esm2022/anchor/anchor.module.mjs +5 -5
  139. package/esm2022/anchor/anchor.property.mjs +45 -35
  140. package/esm2022/api/api.component.mjs +11 -14
  141. package/esm2022/api/api.module.mjs +5 -5
  142. package/esm2022/auto-complete/auto-complete-portal.component.mjs +36 -47
  143. package/esm2022/auto-complete/auto-complete.component.mjs +122 -162
  144. package/esm2022/auto-complete/auto-complete.module.mjs +5 -5
  145. package/esm2022/auto-complete/auto-complete.property.mjs +142 -55
  146. package/esm2022/avatar/avatar-group.component.mjs +4 -4
  147. package/esm2022/avatar/avatar.component.mjs +75 -81
  148. package/esm2022/avatar/avatar.module.mjs +5 -5
  149. package/esm2022/avatar/avatar.property.mjs +116 -45
  150. package/esm2022/back-top/back-top.component.mjs +57 -73
  151. package/esm2022/back-top/back-top.module.mjs +5 -5
  152. package/esm2022/back-top/back-top.property.mjs +37 -29
  153. package/esm2022/badge/badge.component.mjs +51 -59
  154. package/esm2022/badge/badge.module.mjs +5 -5
  155. package/esm2022/badge/badge.property.mjs +111 -38
  156. package/esm2022/base-form/base-form.component.mjs +89 -81
  157. package/esm2022/base-form/base-form.module.mjs +7 -8
  158. package/esm2022/base-form/base-form.property.mjs +200 -89
  159. package/esm2022/button/button.component.mjs +50 -59
  160. package/esm2022/button/button.module.mjs +5 -5
  161. package/esm2022/button/button.property.mjs +293 -98
  162. package/esm2022/button/buttons.component.mjs +35 -21
  163. package/esm2022/calendar/calendar.component.mjs +56 -84
  164. package/esm2022/calendar/calendar.module.mjs +5 -5
  165. package/esm2022/calendar/calendar.property.mjs +78 -24
  166. package/esm2022/card/card.component.mjs +10 -14
  167. package/esm2022/card/card.module.mjs +5 -5
  168. package/esm2022/card/card.property.mjs +57 -22
  169. package/esm2022/carousel/carousel-panel.component.mjs +98 -76
  170. package/esm2022/carousel/carousel.component.mjs +55 -65
  171. package/esm2022/carousel/carousel.module.mjs +5 -5
  172. package/esm2022/carousel/carousel.property.mjs +215 -85
  173. package/esm2022/cascade/cascade-portal.component.mjs +77 -69
  174. package/esm2022/cascade/cascade.component.mjs +107 -135
  175. package/esm2022/cascade/cascade.module.mjs +5 -5
  176. package/esm2022/cascade/cascade.property.mjs +137 -48
  177. package/esm2022/checkbox/checkbox.component.mjs +68 -83
  178. package/esm2022/checkbox/checkbox.module.mjs +5 -5
  179. package/esm2022/checkbox/checkbox.property.mjs +136 -73
  180. package/esm2022/collapse/collapse-panel.component.mjs +31 -21
  181. package/esm2022/collapse/collapse.component.mjs +16 -21
  182. package/esm2022/collapse/collapse.module.mjs +5 -5
  183. package/esm2022/collapse/collapse.property.mjs +156 -66
  184. package/esm2022/color/color.component.mjs +25 -26
  185. package/esm2022/color/color.module.mjs +5 -5
  186. package/esm2022/color/color.property.mjs +47 -27
  187. package/esm2022/color-picker/color-picker-portal.component.mjs +120 -130
  188. package/esm2022/color-picker/color-picker.component.mjs +76 -117
  189. package/esm2022/color-picker/color-picker.module.mjs +5 -5
  190. package/esm2022/color-picker/color-picker.property.mjs +123 -27
  191. package/esm2022/comment/comment-reply.component.mjs +9 -24
  192. package/esm2022/comment/comment.component.mjs +11 -40
  193. package/esm2022/comment/comment.module.mjs +5 -5
  194. package/esm2022/comment/comment.property.mjs +27 -50
  195. package/esm2022/container/aside.component.mjs +12 -15
  196. package/esm2022/container/container.component.mjs +21 -24
  197. package/esm2022/container/container.module.mjs +5 -5
  198. package/esm2022/container/container.property.mjs +55 -51
  199. package/esm2022/container/footer.component.mjs +14 -16
  200. package/esm2022/container/header.component.mjs +14 -16
  201. package/esm2022/container/main.component.mjs +10 -13
  202. package/esm2022/core/animation/badge.mjs +17 -3
  203. package/esm2022/core/animation/connect.mjs +17 -99
  204. package/esm2022/core/animation/consts.mjs +5 -1
  205. package/esm2022/core/animation/drop.mjs +5 -1
  206. package/esm2022/core/animation/fade.mjs +13 -3
  207. package/esm2022/core/animation/move.mjs +5 -1
  208. package/esm2022/core/animation/opacity.mjs +5 -1
  209. package/esm2022/core/animation/slide.mjs +5 -23
  210. package/esm2022/core/config/config.mjs +1 -1
  211. package/esm2022/core/config/config.service.mjs +11 -59
  212. package/esm2022/core/config/index.mjs +2 -0
  213. package/esm2022/core/functions/chunk.mjs +12 -1
  214. package/esm2022/core/functions/clone-deep.mjs +17 -1
  215. package/esm2022/core/functions/convert.mjs +110 -13
  216. package/esm2022/core/functions/csspx.mjs +17 -0
  217. package/esm2022/core/functions/date.mjs +80 -4
  218. package/esm2022/core/functions/drop.mjs +13 -1
  219. package/esm2022/core/functions/flex.mjs +5 -1
  220. package/esm2022/core/functions/group-by.mjs +5 -1
  221. package/esm2022/core/functions/guid.mjs +3 -2
  222. package/esm2022/core/functions/has-in.mjs +5 -1
  223. package/esm2022/core/functions/order-by.mjs +5 -1
  224. package/esm2022/core/functions/parent-path.mjs +9 -1
  225. package/esm2022/core/functions/property.mjs +16 -8
  226. package/esm2022/core/functions/public-api.mjs +2 -1
  227. package/esm2022/core/functions/remove.mjs +5 -1
  228. package/esm2022/core/functions/resize.mjs +7 -5
  229. package/esm2022/core/interfaces/data.type.mjs +97 -8
  230. package/esm2022/core/interfaces/identify.type.mjs +5 -2
  231. package/esm2022/core/interfaces/layout.type.mjs +1 -1
  232. package/esm2022/core/interfaces/result-list.type.mjs +1 -1
  233. package/esm2022/core/services/http.service.mjs +4 -33
  234. package/esm2022/core/services/preloading-strategy.service.mjs +4 -6
  235. package/esm2022/core/services/repository.service.mjs +1 -1
  236. package/esm2022/core/services/reuse-strategy.service.mjs +1 -26
  237. package/esm2022/core/services/storage.service.mjs +4 -26
  238. package/esm2022/core/theme/theme.mjs +55 -11
  239. package/esm2022/core/theme/theme.service.mjs +92 -20
  240. package/esm2022/core/util/animation.mjs +2 -23
  241. package/esm2022/core/util/camel-to-kebab.mjs +16 -0
  242. package/esm2022/core/util/check.mjs +11 -3
  243. package/esm2022/core/util/computed-style.mjs +9 -1
  244. package/esm2022/core/util/host.mjs +4 -3
  245. package/esm2022/core/util/html.mjs +5 -4
  246. package/esm2022/core/util/kebab-to-camel.mjs +16 -0
  247. package/esm2022/core/util/log.mjs +11 -3
  248. package/esm2022/core/util/option.mjs +4 -5
  249. package/esm2022/core/util/public-api.mjs +3 -1
  250. package/esm2022/crumb/crumb.component.mjs +6 -29
  251. package/esm2022/crumb/crumb.module.mjs +5 -5
  252. package/esm2022/crumb/crumb.property.mjs +21 -26
  253. package/esm2022/date-picker/date-picker-portal.component.mjs +86 -102
  254. package/esm2022/date-picker/date-picker.component.mjs +157 -191
  255. package/esm2022/date-picker/date-picker.module.mjs +5 -5
  256. package/esm2022/date-picker/date-picker.property.mjs +440 -462
  257. package/esm2022/date-picker/date-quarter.pipe.mjs +4 -4
  258. package/esm2022/date-picker/date-range-portal.component.mjs +172 -186
  259. package/esm2022/date-picker/date-range.component.mjs +224 -266
  260. package/esm2022/date-picker/picker-date.component.mjs +150 -150
  261. package/esm2022/date-picker/picker-month.component.mjs +115 -118
  262. package/esm2022/date-picker/picker-quarter.component.mjs +120 -119
  263. package/esm2022/date-picker/picker-year.component.mjs +121 -108
  264. package/esm2022/description/description-item.component.mjs +12 -11
  265. package/esm2022/description/description.component.mjs +33 -48
  266. package/esm2022/description/description.module.mjs +5 -5
  267. package/esm2022/description/description.property.mjs +175 -52
  268. package/esm2022/dialog/dialog-container.component.mjs +4 -4
  269. package/esm2022/dialog/dialog-portal.component.mjs +29 -35
  270. package/esm2022/dialog/dialog-portal.directives.mjs +20 -20
  271. package/esm2022/dialog/dialog-ref.mjs +3 -3
  272. package/esm2022/dialog/dialog.component.mjs +119 -133
  273. package/esm2022/dialog/dialog.module.mjs +5 -5
  274. package/esm2022/dialog/dialog.property.mjs +149 -139
  275. package/esm2022/dialog/dialog.service.mjs +8 -8
  276. package/esm2022/doc/doc.component.mjs +11 -12
  277. package/esm2022/doc/doc.module.mjs +5 -5
  278. package/esm2022/drag/drag.directive.mjs +8 -21
  279. package/esm2022/drag/drag.module.mjs +5 -5
  280. package/esm2022/drag/drag.property.mjs +10 -16
  281. package/esm2022/drawer/drawer-container.component.mjs +9 -9
  282. package/esm2022/drawer/drawer-portal.component.mjs +11 -13
  283. package/esm2022/drawer/drawer-portal.directives.mjs +10 -10
  284. package/esm2022/drawer/drawer.component.mjs +40 -59
  285. package/esm2022/drawer/drawer.module.mjs +5 -5
  286. package/esm2022/drawer/drawer.property.mjs +47 -54
  287. package/esm2022/drawer/drawer.service.mjs +6 -6
  288. package/esm2022/dropdown/dropdown-portal.component.mjs +90 -91
  289. package/esm2022/dropdown/dropdown.component.mjs +75 -91
  290. package/esm2022/dropdown/dropdown.module.mjs +5 -5
  291. package/esm2022/dropdown/dropdown.property.mjs +62 -59
  292. package/esm2022/empty/empty.component.mjs +6 -26
  293. package/esm2022/empty/empty.module.mjs +5 -5
  294. package/esm2022/empty/empty.property.mjs +41 -20
  295. package/esm2022/examples/examples.component.mjs +11 -12
  296. package/esm2022/examples/examples.module.mjs +5 -5
  297. package/esm2022/find/find.component.mjs +188 -232
  298. package/esm2022/find/find.module.mjs +5 -5
  299. package/esm2022/find/find.property.mjs +234 -193
  300. package/esm2022/form/control.component.mjs +136 -114
  301. package/esm2022/form/form.component.mjs +28 -36
  302. package/esm2022/form/form.module.mjs +5 -5
  303. package/esm2022/form/form.property.mjs +57 -55
  304. package/esm2022/highlight/highlight.component.mjs +54 -59
  305. package/esm2022/highlight/highlight.module.mjs +5 -5
  306. package/esm2022/highlight/highlight.property.mjs +25 -21
  307. package/esm2022/highlight/highlight.service.mjs +17 -0
  308. package/esm2022/highlight/public-api.mjs +2 -1
  309. package/esm2022/i18n/i18n.directive.mjs +17 -31
  310. package/esm2022/i18n/i18n.module.mjs +5 -5
  311. package/esm2022/i18n/i18n.pipe.mjs +4 -4
  312. package/esm2022/i18n/i18n.property.mjs +2 -2
  313. package/esm2022/i18n/i18n.service.mjs +4 -4
  314. package/esm2022/i18n/languages/ar_EG.mjs +122 -77
  315. package/esm2022/i18n/languages/bg_BG.mjs +135 -87
  316. package/esm2022/i18n/languages/ca_ES.mjs +130 -82
  317. package/esm2022/i18n/languages/cs_CZ.mjs +127 -79
  318. package/esm2022/i18n/languages/da_DK.mjs +129 -81
  319. package/esm2022/i18n/languages/de_DE.mjs +125 -77
  320. package/esm2022/i18n/languages/el_GR.mjs +132 -84
  321. package/esm2022/i18n/languages/en_GB.mjs +5 -2
  322. package/esm2022/i18n/languages/en_US.mjs +5 -2
  323. package/esm2022/i18n/languages/es_ES.mjs +131 -83
  324. package/esm2022/i18n/languages/et_EE.mjs +130 -82
  325. package/esm2022/i18n/languages/fa_IR.mjs +109 -61
  326. package/esm2022/i18n/languages/fi_FI.mjs +134 -86
  327. package/esm2022/i18n/languages/fr_BE.mjs +128 -80
  328. package/esm2022/i18n/languages/fr_FR.mjs +127 -79
  329. package/esm2022/i18n/languages/he_IL.mjs +119 -74
  330. package/esm2022/i18n/languages/hi_IN.mjs +104 -56
  331. package/esm2022/i18n/languages/hr_HR.mjs +133 -85
  332. package/esm2022/i18n/languages/hu_HU.mjs +132 -84
  333. package/esm2022/i18n/languages/hy_AM.mjs +133 -85
  334. package/esm2022/i18n/languages/id_ID.mjs +119 -71
  335. package/esm2022/i18n/languages/is_IS.mjs +125 -77
  336. package/esm2022/i18n/languages/it_IT.mjs +127 -79
  337. package/esm2022/i18n/languages/ja_JP.mjs +95 -47
  338. package/esm2022/i18n/languages/ka_GE.mjs +106 -58
  339. package/esm2022/i18n/languages/kn_IN.mjs +110 -62
  340. package/esm2022/i18n/languages/ko_KR.mjs +126 -70
  341. package/esm2022/i18n/languages/ku_IQ.mjs +117 -85
  342. package/esm2022/i18n/languages/lv_LV.mjs +128 -72
  343. package/esm2022/i18n/languages/mn_MN.mjs +138 -82
  344. package/esm2022/i18n/languages/ms_MY.mjs +124 -68
  345. package/esm2022/i18n/languages/nb_NO.mjs +133 -77
  346. package/esm2022/i18n/languages/ne_NP.mjs +117 -61
  347. package/esm2022/i18n/languages/nl_BE.mjs +134 -78
  348. package/esm2022/i18n/languages/nl_NL.mjs +134 -78
  349. package/esm2022/i18n/languages/pl_PL.mjs +132 -76
  350. package/esm2022/i18n/languages/pt_BR.mjs +133 -77
  351. package/esm2022/i18n/languages/pt_PT.mjs +133 -77
  352. package/esm2022/i18n/languages/ro_RO.mjs +130 -74
  353. package/esm2022/i18n/languages/ru_RU.mjs +131 -75
  354. package/esm2022/i18n/languages/sk_SK.mjs +130 -83
  355. package/esm2022/i18n/languages/sl_SI.mjs +121 -73
  356. package/esm2022/i18n/languages/sr_RS.mjs +138 -90
  357. package/esm2022/i18n/languages/sv_SE.mjs +132 -84
  358. package/esm2022/i18n/languages/ta_IN.mjs +117 -61
  359. package/esm2022/i18n/languages/th_TH.mjs +99 -43
  360. package/esm2022/i18n/languages/tr_TR.mjs +126 -70
  361. package/esm2022/i18n/languages/uk_UA.mjs +124 -68
  362. package/esm2022/i18n/languages/vi_VN.mjs +133 -77
  363. package/esm2022/i18n/languages/zh_CN.mjs +5 -2
  364. package/esm2022/i18n/languages/zh_TW.mjs +5 -2
  365. package/esm2022/icon/icon.component.mjs +48 -77
  366. package/esm2022/icon/icon.module.mjs +5 -5
  367. package/esm2022/icon/icon.property.mjs +52 -30
  368. package/esm2022/icon/icon.service.mjs +15 -14
  369. package/esm2022/image/image-group.component.mjs +15 -15
  370. package/esm2022/image/image-preview.component.mjs +47 -46
  371. package/esm2022/image/image.component.mjs +34 -53
  372. package/esm2022/image/image.module.mjs +5 -5
  373. package/esm2022/image/image.property.mjs +152 -38
  374. package/esm2022/index.mjs +1 -3
  375. package/esm2022/inner/inner.component.mjs +15 -20
  376. package/esm2022/inner/inner.module.mjs +5 -5
  377. package/esm2022/inner/inner.property.mjs +17 -15
  378. package/esm2022/input/input-group.component.mjs +5 -7
  379. package/esm2022/input/input.component.mjs +130 -143
  380. package/esm2022/input/input.module.mjs +5 -5
  381. package/esm2022/input/input.property.mjs +205 -143
  382. package/esm2022/input-number/input-number.component.mjs +68 -86
  383. package/esm2022/input-number/input-number.module.mjs +5 -5
  384. package/esm2022/input-number/input-number.property.mjs +130 -60
  385. package/esm2022/keyword/keyword.directive.mjs +46 -54
  386. package/esm2022/keyword/keyword.module.mjs +5 -5
  387. package/esm2022/keyword/keyword.property.mjs +32 -28
  388. package/esm2022/layout/col.component.mjs +48 -51
  389. package/esm2022/layout/layout.module.mjs +5 -5
  390. package/esm2022/layout/layout.property.mjs +125 -63
  391. package/esm2022/layout/row.component.mjs +36 -27
  392. package/esm2022/link/link.component.mjs +18 -45
  393. package/esm2022/link/link.module.mjs +5 -5
  394. package/esm2022/link/link.property.mjs +101 -41
  395. package/esm2022/list/list-drop-group.directive.mjs +9 -18
  396. package/esm2022/list/list-option.component.mjs +16 -33
  397. package/esm2022/list/list.component.mjs +160 -164
  398. package/esm2022/list/list.module.mjs +5 -5
  399. package/esm2022/list/list.property.mjs +195 -188
  400. package/esm2022/loading/loading.component.mjs +44 -45
  401. package/esm2022/loading/loading.module.mjs +5 -5
  402. package/esm2022/loading/loading.property.mjs +50 -52
  403. package/esm2022/menu/menu-node.component.mjs +21 -21
  404. package/esm2022/menu/menu.component.mjs +57 -76
  405. package/esm2022/menu/menu.module.mjs +5 -5
  406. package/esm2022/menu/menu.property.mjs +56 -73
  407. package/esm2022/message/message.component.mjs +8 -8
  408. package/esm2022/message/message.module.mjs +5 -5
  409. package/esm2022/message/message.property.mjs +1 -1
  410. package/esm2022/message/message.service.mjs +7 -7
  411. package/esm2022/message-box/message-box.component.mjs +5 -5
  412. package/esm2022/message-box/message-box.module.mjs +5 -5
  413. package/esm2022/message-box/message-box.service.mjs +6 -6
  414. package/esm2022/notification/notification.component.mjs +8 -8
  415. package/esm2022/notification/notification.module.mjs +5 -5
  416. package/esm2022/notification/notification.property.mjs +1 -1
  417. package/esm2022/notification/notification.service.mjs +8 -8
  418. package/esm2022/outlet/outlet.directive.mjs +12 -14
  419. package/esm2022/outlet/outlet.module.mjs +5 -5
  420. package/esm2022/outlet/outlet.property.mjs +2 -2
  421. package/esm2022/page-header/page-header.component.mjs +12 -28
  422. package/esm2022/page-header/page-header.module.mjs +5 -5
  423. package/esm2022/page-header/page-header.property.mjs +31 -27
  424. package/esm2022/pagination/pagination.component.mjs +74 -100
  425. package/esm2022/pagination/pagination.module.mjs +5 -5
  426. package/esm2022/pagination/pagination.property.mjs +99 -136
  427. package/esm2022/pattern/pattern.component.mjs +12 -13
  428. package/esm2022/pattern/pattern.module.mjs +5 -5
  429. package/esm2022/pattern/pattern.property.mjs +2 -2
  430. package/esm2022/popconfirm/popconfirm.component.mjs +35 -47
  431. package/esm2022/popconfirm/popconfirm.module.mjs +5 -5
  432. package/esm2022/popconfirm/popconfirm.property.mjs +76 -62
  433. package/esm2022/popover/popover-portal.component.mjs +24 -75
  434. package/esm2022/popover/popover.directive.mjs +70 -86
  435. package/esm2022/popover/popover.module.mjs +5 -5
  436. package/esm2022/popover/popover.property.mjs +71 -58
  437. package/esm2022/portal/portal.module.mjs +5 -5
  438. package/esm2022/portal/portal.property.mjs +3 -3
  439. package/esm2022/portal/portal.service.mjs +4 -4
  440. package/esm2022/progress/progress.component.mjs +173 -167
  441. package/esm2022/progress/progress.module.mjs +5 -5
  442. package/esm2022/progress/progress.property.mjs +67 -71
  443. package/esm2022/radio/radio.component.mjs +45 -61
  444. package/esm2022/radio/radio.module.mjs +5 -5
  445. package/esm2022/radio/radio.property.mjs +139 -66
  446. package/esm2022/rate/rate.component.mjs +61 -79
  447. package/esm2022/rate/rate.module.mjs +5 -5
  448. package/esm2022/rate/rate.property.mjs +121 -29
  449. package/esm2022/resizable/resizable.directive.mjs +30 -45
  450. package/esm2022/resizable/resizable.module.mjs +5 -5
  451. package/esm2022/resizable/resizable.property.mjs +16 -46
  452. package/esm2022/result/result.component.mjs +13 -17
  453. package/esm2022/result/result.module.mjs +5 -5
  454. package/esm2022/result/result.property.mjs +25 -17
  455. package/esm2022/ripple/ripple.directive.mjs +40 -27
  456. package/esm2022/ripple/ripple.module.mjs +5 -5
  457. package/esm2022/ripple/ripple.property.mjs +27 -20
  458. package/esm2022/select/select-portal.component.mjs +52 -67
  459. package/esm2022/select/select.component.mjs +301 -289
  460. package/esm2022/select/select.module.mjs +5 -5
  461. package/esm2022/select/select.property.mjs +195 -102
  462. package/esm2022/skeleton/skeleton.component.mjs +12 -23
  463. package/esm2022/skeleton/skeleton.module.mjs +5 -5
  464. package/esm2022/skeleton/skeleton.property.mjs +31 -28
  465. package/esm2022/slider/slider.component.mjs +103 -149
  466. package/esm2022/slider/slider.module.mjs +5 -5
  467. package/esm2022/slider/slider.property.mjs +60 -79
  468. package/esm2022/slider-select/slider-select.component.mjs +201 -220
  469. package/esm2022/slider-select/slider-select.module.mjs +5 -5
  470. package/esm2022/slider-select/slider-select.property.mjs +143 -70
  471. package/esm2022/statistic/countdown.component.mjs +13 -16
  472. package/esm2022/statistic/statistic.component.mjs +23 -21
  473. package/esm2022/statistic/statistic.module.mjs +5 -5
  474. package/esm2022/statistic/statistic.property.mjs +68 -34
  475. package/esm2022/steps/steps.component.mjs +33 -63
  476. package/esm2022/steps/steps.module.mjs +5 -5
  477. package/esm2022/steps/steps.property.mjs +28 -39
  478. package/esm2022/switch/switch.component.mjs +22 -37
  479. package/esm2022/switch/switch.module.mjs +5 -5
  480. package/esm2022/switch/switch.property.mjs +122 -32
  481. package/esm2022/table/table-body.component.mjs +134 -139
  482. package/esm2022/table/table-foot.component.mjs +15 -18
  483. package/esm2022/table/table-head.component.mjs +60 -91
  484. package/esm2022/table/table.component.mjs +192 -222
  485. package/esm2022/table/table.module.mjs +5 -5
  486. package/esm2022/table/table.property.mjs +396 -341
  487. package/esm2022/tabs/tab-content.component.mjs +13 -16
  488. package/esm2022/tabs/tab-link.directive.mjs +7 -7
  489. package/esm2022/tabs/tab.component.mjs +9 -17
  490. package/esm2022/tabs/tabs.component.mjs +83 -135
  491. package/esm2022/tabs/tabs.module.mjs +5 -5
  492. package/esm2022/tabs/tabs.property.mjs +80 -91
  493. package/esm2022/tag/tag.component.mjs +19 -33
  494. package/esm2022/tag/tag.module.mjs +5 -5
  495. package/esm2022/tag/tag.property.mjs +44 -68
  496. package/esm2022/text-retract/text-retract.component.mjs +29 -46
  497. package/esm2022/text-retract/text-retract.module.mjs +5 -5
  498. package/esm2022/text-retract/text-retract.property.mjs +22 -18
  499. package/esm2022/textarea/textarea.component.mjs +49 -79
  500. package/esm2022/textarea/textarea.module.mjs +5 -5
  501. package/esm2022/textarea/textarea.property.mjs +124 -47
  502. package/esm2022/theme/theme.component.mjs +86 -81
  503. package/esm2022/theme/theme.module.mjs +5 -5
  504. package/esm2022/theme/theme.property.mjs +35 -46
  505. package/esm2022/time-ago/time-ago.module.mjs +5 -5
  506. package/esm2022/time-ago/time-ago.pipe.mjs +12 -11
  507. package/esm2022/time-ago/time-ago.property.mjs +2 -2
  508. package/esm2022/time-picker/time-picker-frame.component.mjs +173 -188
  509. package/esm2022/time-picker/time-picker-portal.component.mjs +35 -42
  510. package/esm2022/time-picker/time-picker.component.mjs +139 -170
  511. package/esm2022/time-picker/time-picker.module.mjs +5 -5
  512. package/esm2022/time-picker/time-picker.property.mjs +158 -70
  513. package/esm2022/time-range/time-range.module.mjs +5 -5
  514. package/esm2022/time-range/time-range.pipe.mjs +10 -10
  515. package/esm2022/time-range/time-range.property.mjs +2 -2
  516. package/esm2022/timeline/timeline.component.mjs +14 -38
  517. package/esm2022/timeline/timeline.module.mjs +5 -5
  518. package/esm2022/timeline/timeline.property.mjs +30 -30
  519. package/esm2022/tooltip/tooltip-portal.component.mjs +51 -65
  520. package/esm2022/tooltip/tooltip.directive.mjs +65 -62
  521. package/esm2022/tooltip/tooltip.module.mjs +5 -5
  522. package/esm2022/tooltip/tooltip.property.mjs +53 -47
  523. package/esm2022/transfer/transfer.component.mjs +225 -184
  524. package/esm2022/transfer/transfer.module.mjs +5 -5
  525. package/esm2022/transfer/transfer.property.mjs +84 -76
  526. package/esm2022/tree/tree-node.component.mjs +142 -132
  527. package/esm2022/tree/tree.component.mjs +236 -232
  528. package/esm2022/tree/tree.module.mjs +5 -5
  529. package/esm2022/tree/tree.property.mjs +228 -226
  530. package/esm2022/tree/tree.service.mjs +4 -4
  531. package/esm2022/tree-file/tree-file.component.mjs +34 -43
  532. package/esm2022/tree-file/tree-file.module.mjs +5 -5
  533. package/esm2022/tree-file/tree-file.property.mjs +45 -56
  534. package/esm2022/tree-select/tree-select-portal.component.mjs +45 -78
  535. package/esm2022/tree-select/tree-select.component.mjs +283 -296
  536. package/esm2022/tree-select/tree-select.module.mjs +5 -5
  537. package/esm2022/tree-select/tree-select.property.mjs +203 -125
  538. package/esm2022/typography/typography.component.mjs +13 -10
  539. package/esm2022/typography/typography.module.mjs +5 -5
  540. package/esm2022/typography/typography.property.mjs +12 -11
  541. package/esm2022/upload/upload-portal.component.mjs +54 -57
  542. package/esm2022/upload/upload.component.mjs +79 -98
  543. package/esm2022/upload/upload.module.mjs +5 -5
  544. package/esm2022/upload/upload.property.mjs +73 -68
  545. package/examples/examples.component.d.ts +2 -5
  546. package/fesm2022/ng-nest-ui-affix.mjs +30 -32
  547. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  548. package/fesm2022/ng-nest-ui-alert.mjs +142 -152
  549. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  550. package/fesm2022/ng-nest-ui-anchor.mjs +121 -133
  551. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  552. package/fesm2022/ng-nest-ui-api.mjs +14 -17
  553. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  554. package/fesm2022/ng-nest-ui-auto-complete.mjs +296 -260
  555. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  556. package/fesm2022/ng-nest-ui-avatar.mjs +195 -130
  557. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  558. package/fesm2022/ng-nest-ui-back-top.mjs +95 -103
  559. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  560. package/fesm2022/ng-nest-ui-badge.mjs +161 -96
  561. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  562. package/fesm2022/ng-nest-ui-base-form.mjs +286 -166
  563. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  564. package/fesm2022/ng-nest-ui-button.mjs +376 -175
  565. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  566. package/fesm2022/ng-nest-ui-calendar.mjs +134 -108
  567. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  568. package/fesm2022/ng-nest-ui-card.mjs +67 -36
  569. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  570. package/fesm2022/ng-nest-ui-carousel.mjs +365 -223
  571. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  572. package/fesm2022/ng-nest-ui-cascade.mjs +318 -249
  573. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  574. package/fesm2022/ng-nest-ui-checkbox.mjs +203 -155
  575. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  576. package/fesm2022/ng-nest-ui-collapse.mjs +202 -106
  577. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  578. package/fesm2022/ng-nest-ui-color-picker.mjs +316 -270
  579. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  580. package/fesm2022/ng-nest-ui-color.mjs +73 -54
  581. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  582. package/fesm2022/ng-nest-ui-comment.mjs +44 -108
  583. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  584. package/fesm2022/ng-nest-ui-container.mjs +119 -123
  585. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  586. package/fesm2022/ng-nest-ui-core.mjs +985 -664
  587. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  588. package/fesm2022/ng-nest-ui-crumb.mjs +28 -55
  589. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  590. package/fesm2022/ng-nest-ui-date-picker.mjs +1552 -1671
  591. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  592. package/fesm2022/ng-nest-ui-description.mjs +218 -109
  593. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  594. package/fesm2022/ng-nest-ui-dialog.mjs +325 -334
  595. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  596. package/fesm2022/ng-nest-ui-doc.mjs +14 -15
  597. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  598. package/fesm2022/ng-nest-ui-drag.mjs +20 -39
  599. package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
  600. package/fesm2022/ng-nest-ui-drawer.mjs +116 -145
  601. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  602. package/fesm2022/ng-nest-ui-dropdown.mjs +223 -238
  603. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  604. package/fesm2022/ng-nest-ui-empty.mjs +49 -46
  605. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  606. package/fesm2022/ng-nest-ui-examples.mjs +14 -15
  607. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  608. package/fesm2022/ng-nest-ui-find.mjs +422 -425
  609. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  610. package/fesm2022/ng-nest-ui-form.mjs +216 -201
  611. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  612. package/fesm2022/ng-nest-ui-highlight.mjs +93 -81
  613. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  614. package/fesm2022/ng-nest-ui-i18n.mjs +5892 -3516
  615. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  616. package/fesm2022/ng-nest-ui-icon.mjs +114 -120
  617. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  618. package/fesm2022/ng-nest-ui-image.mjs +244 -147
  619. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  620. package/fesm2022/ng-nest-ui-inner.mjs +33 -35
  621. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  622. package/fesm2022/ng-nest-ui-input-number.mjs +198 -146
  623. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  624. package/fesm2022/ng-nest-ui-input.mjs +340 -292
  625. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  626. package/fesm2022/ng-nest-ui-keyword.mjs +78 -82
  627. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  628. package/fesm2022/ng-nest-ui-layout.mjs +205 -140
  629. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  630. package/fesm2022/ng-nest-ui-link.mjs +119 -86
  631. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  632. package/fesm2022/ng-nest-ui-list.mjs +376 -400
  633. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  634. package/fesm2022/ng-nest-ui-loading.mjs +94 -97
  635. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  636. package/fesm2022/ng-nest-ui-menu.mjs +131 -167
  637. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  638. package/fesm2022/ng-nest-ui-message-box.mjs +13 -13
  639. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  640. package/fesm2022/ng-nest-ui-message.mjs +17 -17
  641. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  642. package/fesm2022/ng-nest-ui-notification.mjs +18 -18
  643. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  644. package/fesm2022/ng-nest-ui-outlet.mjs +16 -18
  645. package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
  646. package/fesm2022/ng-nest-ui-page-header.mjs +44 -55
  647. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  648. package/fesm2022/ng-nest-ui-pagination.mjs +173 -236
  649. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  650. package/fesm2022/ng-nest-ui-pattern.mjs +16 -17
  651. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  652. package/fesm2022/ng-nest-ui-popconfirm.mjs +110 -107
  653. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  654. package/fesm2022/ng-nest-ui-popover.mjs +163 -215
  655. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  656. package/fesm2022/ng-nest-ui-portal.mjs +10 -10
  657. package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
  658. package/fesm2022/ng-nest-ui-progress.mjs +240 -238
  659. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  660. package/fesm2022/ng-nest-ui-radio.mjs +184 -127
  661. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  662. package/fesm2022/ng-nest-ui-rate.mjs +182 -108
  663. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  664. package/fesm2022/ng-nest-ui-resizable.mjs +46 -91
  665. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  666. package/fesm2022/ng-nest-ui-result.mjs +38 -34
  667. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  668. package/fesm2022/ng-nest-ui-ripple.mjs +68 -48
  669. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  670. package/fesm2022/ng-nest-ui-select.mjs +547 -459
  671. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  672. package/fesm2022/ng-nest-ui-skeleton.mjs +44 -52
  673. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  674. package/fesm2022/ng-nest-ui-slider-select.mjs +344 -290
  675. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  676. package/fesm2022/ng-nest-ui-slider.mjs +163 -228
  677. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  678. package/fesm2022/ng-nest-ui-statistic.mjs +102 -68
  679. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  680. package/fesm2022/ng-nest-ui-steps.mjs +61 -102
  681. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  682. package/fesm2022/ng-nest-ui-switch.mjs +145 -69
  683. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  684. package/fesm2022/ng-nest-ui-table.mjs +784 -800
  685. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  686. package/fesm2022/ng-nest-ui-tabs.mjs +185 -259
  687. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  688. package/fesm2022/ng-nest-ui-tag.mjs +63 -101
  689. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  690. package/fesm2022/ng-nest-ui-text-retract.mjs +52 -64
  691. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  692. package/fesm2022/ng-nest-ui-textarea.mjs +173 -126
  693. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  694. package/fesm2022/ng-nest-ui-theme.mjs +123 -129
  695. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  696. package/fesm2022/ng-nest-ui-time-ago.mjs +16 -15
  697. package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
  698. package/fesm2022/ng-nest-ui-time-picker.mjs +498 -463
  699. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  700. package/fesm2022/ng-nest-ui-time-range.mjs +14 -14
  701. package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
  702. package/fesm2022/ng-nest-ui-timeline.mjs +44 -68
  703. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  704. package/fesm2022/ng-nest-ui-tooltip.mjs +168 -170
  705. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  706. package/fesm2022/ng-nest-ui-transfer.mjs +311 -262
  707. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  708. package/fesm2022/ng-nest-ui-tree-file.mjs +80 -99
  709. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  710. package/fesm2022/ng-nest-ui-tree-select.mjs +527 -495
  711. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  712. package/fesm2022/ng-nest-ui-tree.mjs +601 -587
  713. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  714. package/fesm2022/ng-nest-ui-typography.mjs +26 -22
  715. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  716. package/fesm2022/ng-nest-ui-upload.mjs +204 -220
  717. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  718. package/fesm2022/ng-nest-ui.mjs +0 -2
  719. package/fesm2022/ng-nest-ui.mjs.map +1 -1
  720. package/find/find.component.d.ts +30 -34
  721. package/find/find.property.d.ts +321 -108
  722. package/form/control.component.d.ts +37 -18
  723. package/form/form.component.d.ts +8 -10
  724. package/form/form.property.d.ts +111 -27
  725. package/highlight/highlight.component.d.ts +10 -17
  726. package/highlight/highlight.property.d.ts +40 -11
  727. package/highlight/highlight.service.d.ts +8 -0
  728. package/highlight/public-api.d.ts +1 -0
  729. package/i18n/i18n.directive.d.ts +6 -9
  730. package/i18n/i18n.property.d.ts +6 -2
  731. package/i18n/i18n.service.d.ts +2 -2
  732. package/i18n/languages/ar_EG.d.ts +56 -0
  733. package/i18n/languages/bg_BG.d.ts +56 -0
  734. package/i18n/languages/ca_ES.d.ts +56 -0
  735. package/i18n/languages/cs_CZ.d.ts +56 -0
  736. package/i18n/languages/da_DK.d.ts +56 -0
  737. package/i18n/languages/de_DE.d.ts +56 -0
  738. package/i18n/languages/el_GR.d.ts +56 -0
  739. package/i18n/languages/en_GB.d.ts +3 -0
  740. package/i18n/languages/en_US.d.ts +3 -0
  741. package/i18n/languages/es_ES.d.ts +56 -0
  742. package/i18n/languages/et_EE.d.ts +56 -0
  743. package/i18n/languages/fa_IR.d.ts +56 -0
  744. package/i18n/languages/fi_FI.d.ts +56 -0
  745. package/i18n/languages/fr_BE.d.ts +60 -4
  746. package/i18n/languages/fr_FR.d.ts +56 -0
  747. package/i18n/languages/he_IL.d.ts +56 -0
  748. package/i18n/languages/hi_IN.d.ts +56 -0
  749. package/i18n/languages/hr_HR.d.ts +56 -0
  750. package/i18n/languages/hu_HU.d.ts +56 -0
  751. package/i18n/languages/hy_AM.d.ts +56 -0
  752. package/i18n/languages/id_ID.d.ts +56 -0
  753. package/i18n/languages/is_IS.d.ts +56 -0
  754. package/i18n/languages/it_IT.d.ts +56 -0
  755. package/i18n/languages/ja_JP.d.ts +56 -0
  756. package/i18n/languages/ka_GE.d.ts +56 -0
  757. package/i18n/languages/kn_IN.d.ts +56 -0
  758. package/i18n/languages/ko_KR.d.ts +56 -0
  759. package/i18n/languages/ku_IQ.d.ts +32 -0
  760. package/i18n/languages/lv_LV.d.ts +56 -0
  761. package/i18n/languages/mn_MN.d.ts +56 -0
  762. package/i18n/languages/ms_MY.d.ts +56 -0
  763. package/i18n/languages/nb_NO.d.ts +56 -0
  764. package/i18n/languages/ne_NP.d.ts +56 -0
  765. package/i18n/languages/nl_BE.d.ts +56 -0
  766. package/i18n/languages/nl_NL.d.ts +56 -0
  767. package/i18n/languages/pl_PL.d.ts +56 -0
  768. package/i18n/languages/pt_BR.d.ts +56 -0
  769. package/i18n/languages/pt_PT.d.ts +56 -0
  770. package/i18n/languages/ro_RO.d.ts +56 -0
  771. package/i18n/languages/ru_RU.d.ts +56 -0
  772. package/i18n/languages/sk_SK.d.ts +56 -1
  773. package/i18n/languages/sl_SI.d.ts +56 -0
  774. package/i18n/languages/sr_RS.d.ts +56 -0
  775. package/i18n/languages/sv_SE.d.ts +56 -0
  776. package/i18n/languages/ta_IN.d.ts +56 -0
  777. package/i18n/languages/th_TH.d.ts +56 -0
  778. package/i18n/languages/tr_TR.d.ts +56 -0
  779. package/i18n/languages/uk_UA.d.ts +56 -0
  780. package/i18n/languages/vi_VN.d.ts +56 -0
  781. package/i18n/languages/zh_CN.d.ts +3 -0
  782. package/i18n/languages/zh_TW.d.ts +3 -0
  783. package/icon/icon.component.d.ts +8 -14
  784. package/icon/icon.property.d.ts +31 -13
  785. package/icon/icon.service.d.ts +1 -1
  786. package/image/image-group.component.d.ts +1 -3
  787. package/image/image-preview.component.d.ts +11 -13
  788. package/image/image.component.d.ts +10 -11
  789. package/image/image.property.d.ts +117 -16
  790. package/index.d.ts +0 -2
  791. package/inner/inner.component.d.ts +3 -10
  792. package/inner/inner.property.d.ts +8 -4
  793. package/input/input-group.component.d.ts +0 -2
  794. package/input/input.component.d.ts +32 -30
  795. package/input/input.property.d.ts +347 -65
  796. package/input-number/input-number.component.d.ts +14 -19
  797. package/input-number/input-number.property.d.ts +292 -26
  798. package/keyword/keyword.directive.d.ts +4 -12
  799. package/keyword/keyword.property.d.ts +11 -7
  800. package/layout/col.component.d.ts +8 -11
  801. package/layout/layout.property.d.ts +79 -18
  802. package/layout/row.component.d.ts +7 -8
  803. package/link/link.component.d.ts +7 -13
  804. package/link/link.property.d.ts +64 -11
  805. package/list/list-drop-group.directive.d.ts +3 -5
  806. package/list/list-option.component.d.ts +7 -9
  807. package/list/list.component.d.ts +35 -30
  808. package/list/list.property.d.ts +126 -61
  809. package/loading/loading.component.d.ts +12 -12
  810. package/loading/loading.property.d.ts +20 -11
  811. package/menu/menu-node.component.d.ts +11 -8
  812. package/menu/menu.component.d.ts +18 -19
  813. package/menu/menu.property.d.ts +23 -28
  814. package/message/message.property.d.ts +1 -1
  815. package/notification/notification.property.d.ts +1 -1
  816. package/outlet/outlet.directive.d.ts +4 -4
  817. package/outlet/outlet.property.d.ts +1 -1
  818. package/package.json +117 -123
  819. package/page-header/page-header.component.d.ts +4 -8
  820. package/page-header/page-header.property.d.ts +11 -8
  821. package/pagination/pagination.component.d.ts +15 -22
  822. package/pagination/pagination.property.d.ts +34 -66
  823. package/pattern/pattern.component.d.ts +2 -5
  824. package/pattern/pattern.property.d.ts +1 -1
  825. package/popconfirm/popconfirm.component.d.ts +12 -14
  826. package/popconfirm/popconfirm.property.d.ts +32 -19
  827. package/popover/popover-portal.component.d.ts +16 -33
  828. package/popover/popover.directive.d.ts +6 -12
  829. package/popover/popover.property.d.ts +31 -22
  830. package/portal/portal.property.d.ts +4 -4
  831. package/portal/portal.service.d.ts +2 -2
  832. package/progress/progress.component.d.ts +25 -30
  833. package/progress/progress.property.d.ts +29 -20
  834. package/radio/radio.component.d.ts +14 -15
  835. package/radio/radio.property.d.ts +271 -31
  836. package/rate/rate.component.d.ts +14 -17
  837. package/rate/rate.property.d.ts +259 -12
  838. package/resizable/resizable.directive.d.ts +5 -5
  839. package/resizable/resizable.property.d.ts +14 -14
  840. package/result/result.component.d.ts +5 -7
  841. package/result/result.property.d.ts +11 -7
  842. package/ripple/ripple.directive.d.ts +5 -4
  843. package/ripple/ripple.property.d.ts +14 -5
  844. package/select/select-portal.component.d.ts +39 -43
  845. package/select/select.component.d.ts +53 -56
  846. package/select/select.property.d.ts +317 -37
  847. package/skeleton/skeleton.component.d.ts +4 -8
  848. package/skeleton/skeleton.property.d.ts +17 -8
  849. package/slider/slider.component.d.ts +34 -31
  850. package/slider/slider.property.d.ts +26 -22
  851. package/slider-select/slider-select.component.d.ts +38 -38
  852. package/slider-select/slider-select.property.d.ts +302 -28
  853. package/statistic/countdown.component.d.ts +2 -5
  854. package/statistic/statistic.component.d.ts +3 -8
  855. package/statistic/statistic.property.d.ts +44 -13
  856. package/steps/steps.component.d.ts +6 -16
  857. package/steps/steps.property.d.ts +15 -10
  858. package/style/core/index.css +0 -38
  859. package/style/core/index.css.map +1 -1
  860. package/style/core/var.scss +0 -4
  861. package/style/mixins/compatibility.scss +0 -1
  862. package/style/mixins/form.scss +8 -2
  863. package/style/params/index.scss +0 -1
  864. package/style/params/primary.scss +7 -28
  865. package/switch/switch.component.d.ts +9 -10
  866. package/switch/switch.property.d.ts +265 -16
  867. package/table/table-body.component.d.ts +21 -20
  868. package/table/table-foot.component.d.ts +7 -5
  869. package/table/table-head.component.d.ts +17 -19
  870. package/table/table.component.d.ts +62 -50
  871. package/table/table.property.d.ts +180 -178
  872. package/tabs/tab-content.component.d.ts +6 -8
  873. package/tabs/tab.component.d.ts +3 -5
  874. package/tabs/tabs.component.d.ts +17 -24
  875. package/tabs/tabs.property.d.ts +28 -24
  876. package/tag/tag.component.d.ts +7 -8
  877. package/tag/tag.property.d.ts +19 -21
  878. package/text-retract/text-retract.component.d.ts +4 -14
  879. package/text-retract/text-retract.property.d.ts +9 -5
  880. package/textarea/textarea.component.d.ts +17 -20
  881. package/textarea/textarea.property.d.ts +266 -30
  882. package/theme/theme.component.d.ts +24 -13
  883. package/theme/theme.property.d.ts +67 -16
  884. package/time-ago/time-ago.pipe.d.ts +7 -3
  885. package/time-ago/time-ago.property.d.ts +1 -1
  886. package/time-picker/time-picker-frame.component.d.ts +52 -39
  887. package/time-picker/time-picker-portal.component.d.ts +29 -29
  888. package/time-picker/time-picker.component.d.ts +29 -30
  889. package/time-picker/time-picker.property.d.ts +314 -23
  890. package/time-range/time-range.property.d.ts +1 -1
  891. package/timeline/timeline.component.d.ts +5 -13
  892. package/timeline/timeline.property.d.ts +12 -8
  893. package/tooltip/tooltip-portal.component.d.ts +23 -29
  894. package/tooltip/tooltip.directive.d.ts +10 -9
  895. package/tooltip/tooltip.property.d.ts +18 -14
  896. package/transfer/transfer.component.d.ts +23 -20
  897. package/transfer/transfer.property.d.ts +81 -25
  898. package/tree/tree-node.component.d.ts +21 -21
  899. package/tree/tree.component.d.ts +29 -28
  900. package/tree/tree.property.d.ts +129 -79
  901. package/tree-file/tree-file.component.d.ts +7 -9
  902. package/tree-file/tree-file.property.d.ts +40 -16
  903. package/tree-select/tree-select-portal.component.d.ts +38 -49
  904. package/tree-select/tree-select.component.d.ts +50 -53
  905. package/tree-select/tree-select.property.d.ts +328 -39
  906. package/typography/typography.component.d.ts +1 -1
  907. package/typography/typography.property.d.ts +3 -3
  908. package/upload/upload-portal.component.d.ts +14 -14
  909. package/upload/upload.component.d.ts +18 -17
  910. package/upload/upload.property.d.ts +73 -24
  911. package/border/border.component.d.ts +0 -11
  912. package/border/border.module.d.ts +0 -7
  913. package/border/border.property.d.ts +0 -6
  914. package/border/index.d.ts +0 -5
  915. package/border/public-api.d.ts +0 -3
  916. package/esm2022/border/border.component.mjs +0 -21
  917. package/esm2022/border/border.module.mjs +0 -16
  918. package/esm2022/border/border.property.mjs +0 -7
  919. package/esm2022/border/ng-nest-ui-border.mjs +0 -5
  920. package/esm2022/border/public-api.mjs +0 -4
  921. package/fesm2022/ng-nest-ui-border.mjs +0 -47
  922. package/fesm2022/ng-nest-ui-border.mjs.map +0 -1
  923. package/style/params/colors.scss +0 -38
@@ -1,7 +1,6 @@
1
- import { __decorate } from "tslib";
2
- import { XInputBoolean, XProperty, XWithConfig, XDataConvert } from '@ng-nest/ui/core';
3
- import { Input, EventEmitter, Output, Component } from '@angular/core';
4
- import { XControlValueAccessor } from '@ng-nest/ui/base-form';
1
+ import { XProperty, XToBoolean, XToCssPixelValue, XToDataConvert } from '@ng-nest/ui/core';
2
+ import { Component, input, model, output } from '@angular/core';
3
+ import { XFormControlFunction } from '@ng-nest/ui/base-form';
5
4
  import * as i0 from "@angular/core";
6
5
  /**
7
6
  * DatePicker
@@ -9,158 +8,342 @@ import * as i0 from "@angular/core";
9
8
  * @decorator component
10
9
  */
11
10
  export const XDatePickerPrefix = 'x-date-picker';
12
- const X_CONFIG_NAME = 'datePicker';
11
+ const X_DATA_PICKER_CONFIG_NAME = 'datePicker';
13
12
  /**
14
13
  * DatePicker Property
15
14
  */
16
- export class XDatePickerProperty extends XControlValueAccessor {
15
+ export class XDatePickerProperty extends XFormControlFunction(X_DATA_PICKER_CONFIG_NAME) {
17
16
  constructor() {
18
17
  super(...arguments);
19
18
  /**
20
19
  * @zh_CN 选择类型
21
20
  * @en_US Select type
22
21
  */
23
- this.type = 'date';
22
+ this.type = input('date');
23
+ /**
24
+ * @zh_CN 格式化类型
25
+ * @en_US Format type
26
+ */
27
+ this.format = input(this.config?.format ?? 'yyyy-MM-dd');
28
+ /**
29
+ * @zh_CN 清除按钮
30
+ * @en_US Clear button
31
+ */
32
+ this.clearable = input(this.config?.clearable ?? true, { transform: XToBoolean });
33
+ /**
34
+ * @zh_CN 展示方位
35
+ * @en_US Display position
36
+ */
37
+ this.placement = input(this.config?.placement ?? 'bottom-start');
38
+ /**
39
+ * @zh_CN 显示边框
40
+ * @en_US Display Border
41
+ */
42
+ this.bordered = input(this.config?.bordered ?? true, { transform: XToBoolean });
24
43
  /**
25
44
  * @zh_CN 快捷选择按钮,自定义或直接设置今天(today),昨天(yesterday),明天(tomorrow)
26
45
  * @en_US Quick selection button, support today, yesterday, tomorrow
27
46
  */
28
- this.preset = [];
47
+ this.preset = input([], { transform: XToDataConvert });
48
+ /**
49
+ * @zh_CN 页脚
50
+ * @en_US Footer
51
+ */
52
+ this.extraFooter = input();
53
+ /**
54
+ * @zh_CN 禁用的日期
55
+ * @en_US Disabled date
56
+ */
57
+ this.disabledDate = input();
58
+ /**
59
+ * @zh_CN 禁用的时间
60
+ * @en_US Disabled time
61
+ */
62
+ this.disabledTime = input();
63
+ /**
64
+ * @zh_CN 尺寸
65
+ * @en_US Size
66
+ */
67
+ this.size = input(this.config?.size ?? 'medium');
68
+ /**
69
+ * @zh_CN 输入框点击样式
70
+ * @en_US Input pointer
71
+ */
72
+ this.pointer = input(false, { transform: XToBoolean });
73
+ /**
74
+ * @zh_CN 标签
75
+ * @en_US Label
76
+ */
77
+ this.label = input('');
78
+ /**
79
+ * @zh_CN 标签宽度
80
+ * @en_US Label width
81
+ */
82
+ this.labelWidth = input('', { transform: XToCssPixelValue });
83
+ /**
84
+ * @zh_CN 标签文字对齐方式
85
+ * @en_US Label text alignment method
86
+ */
87
+ this.labelAlign = input('start');
88
+ /**
89
+ * @zh_CN flex 布局下的子元素水平排列方式
90
+ * @en_US The level of sub-element level arrangement under flex layout
91
+ */
92
+ this.justify = input('start');
93
+ /**
94
+ * @zh_CN flex 布局下的子元素垂直排列方式
95
+ * @en_US sub-element vertical arrangement method under flex layout
96
+ */
97
+ this.align = input('start');
98
+ /**
99
+ * @zh_CN flex 布局下的子元素排列方向
100
+ * @en_US The direction of the sub-element arrangement under flex layout
101
+ */
102
+ this.direction = input('column');
103
+ /**
104
+ * @zh_CN 输入提示信息
105
+ * @en_US Enter prompt information
106
+ */
107
+ this.placeholder = input('');
108
+ /**
109
+ * @zh_CN 禁用
110
+ * @en_US Disabled
111
+ */
112
+ this.disabled = input(false, { transform: XToBoolean });
113
+ /**
114
+ * @zh_CN 必填
115
+ * @en_US Required
116
+ */
117
+ this.required = input(false, { transform: XToBoolean });
118
+ /**
119
+ * @zh_CN 只读
120
+ * @en_US Readonly
121
+ */
122
+ this.readonly = input(false, { transform: XToBoolean });
123
+ /**
124
+ * @zh_CN 值模板
125
+ * @en_US Node template
126
+ */
127
+ this.valueTpl = input();
128
+ /**
129
+ * @zh_CN 值模板参数
130
+ * @en_US Node template
131
+ */
132
+ this.valueTplContext = input();
133
+ /**
134
+ * @zh_CN 前置标签
135
+ * @en_US Before label
136
+ */
137
+ this.before = input();
138
+ /**
139
+ * @zh_CN 后置标签
140
+ * @en_US After label
141
+ */
142
+ this.after = input();
143
+ /**
144
+ * @zh_CN 正则验证规则
145
+ * @en_US Regular verification rules
146
+ */
147
+ this.pattern = input(null);
148
+ /**
149
+ * @zh_CN 验证不通过提示文字
150
+ * @en_US Verify not pass the prompt text
151
+ */
152
+ this.message = input([]);
153
+ /**
154
+ * @zh_CN 激活状态
155
+ * @en_US Activation state
156
+ */
157
+ this.active = model(false);
158
+ /**
159
+ * @zh_CN 输入验证函数
160
+ * @en_US Enter the verification function
161
+ */
162
+ this.inputValidator = input();
29
163
  /**
30
164
  * @zh_CN 节点点击的事件
31
165
  * @en_US Node click event
32
166
  */
33
- this.nodeEmit = new EventEmitter();
167
+ this.nodeEmit = output();
34
168
  }
35
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XDatePickerProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
36
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: XDatePickerProperty, selector: "x-date-picker-property", inputs: { type: "type", format: "format", clearable: "clearable", placement: "placement", size: "size", bordered: "bordered", preset: "preset", extraFooter: "extraFooter", disabledDate: "disabledDate", disabledTime: "disabledTime" }, outputs: { nodeEmit: "nodeEmit" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
169
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XDatePickerProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
170
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: XDatePickerProperty, selector: "x-date-picker-property", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, preset: { classPropertyName: "preset", publicName: "preset", isSignal: true, isRequired: false, transformFunction: null }, extraFooter: { classPropertyName: "extraFooter", publicName: "extraFooter", isSignal: true, isRequired: false, transformFunction: null }, disabledDate: { classPropertyName: "disabledDate", publicName: "disabledDate", isSignal: true, isRequired: false, transformFunction: null }, disabledTime: { classPropertyName: "disabledTime", publicName: "disabledTime", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, pointer: { classPropertyName: "pointer", publicName: "pointer", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelWidth: { classPropertyName: "labelWidth", publicName: "labelWidth", isSignal: true, isRequired: false, transformFunction: null }, labelAlign: { classPropertyName: "labelAlign", publicName: "labelAlign", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, valueTpl: { classPropertyName: "valueTpl", publicName: "valueTpl", isSignal: true, isRequired: false, transformFunction: null }, valueTplContext: { classPropertyName: "valueTplContext", publicName: "valueTplContext", isSignal: true, isRequired: false, transformFunction: null }, before: { classPropertyName: "before", publicName: "before", isSignal: true, isRequired: false, transformFunction: null }, after: { classPropertyName: "after", publicName: "after", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, inputValidator: { classPropertyName: "inputValidator", publicName: "inputValidator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { active: "activeChange", nodeEmit: "nodeEmit" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
37
171
  }
38
- __decorate([
39
- XWithConfig(X_CONFIG_NAME, 'yyyy-MM-dd')
40
- ], XDatePickerProperty.prototype, "format", void 0);
41
- __decorate([
42
- XWithConfig(X_CONFIG_NAME, true),
43
- XInputBoolean()
44
- ], XDatePickerProperty.prototype, "clearable", void 0);
45
- __decorate([
46
- XWithConfig(X_CONFIG_NAME, 'bottom-start')
47
- ], XDatePickerProperty.prototype, "placement", void 0);
48
- __decorate([
49
- XWithConfig(X_CONFIG_NAME, 'medium')
50
- ], XDatePickerProperty.prototype, "size", void 0);
51
- __decorate([
52
- XInputBoolean(),
53
- XWithConfig(X_CONFIG_NAME, true)
54
- ], XDatePickerProperty.prototype, "bordered", void 0);
55
- __decorate([
56
- XDataConvert()
57
- ], XDatePickerProperty.prototype, "preset", void 0);
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XDatePickerProperty, decorators: [{
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XDatePickerProperty, decorators: [{
59
173
  type: Component,
60
174
  args: [{ selector: `${XDatePickerPrefix}-property`, template: '' }]
61
- }], propDecorators: { type: [{
62
- type: Input
63
- }], format: [{
64
- type: Input
65
- }], clearable: [{
66
- type: Input
67
- }], placement: [{
68
- type: Input
69
- }], size: [{
70
- type: Input
71
- }], bordered: [{
72
- type: Input
73
- }], preset: [{
74
- type: Input
75
- }], extraFooter: [{
76
- type: Input
77
- }], disabledDate: [{
78
- type: Input
79
- }], disabledTime: [{
80
- type: Input
81
- }], nodeEmit: [{
82
- type: Output
83
- }] } });
175
+ }] });
84
176
  /**
85
177
  * DateRange
86
178
  * @selector x-date-range
87
179
  * @decorator component
88
180
  */
89
181
  export const XDateRangePrefix = 'x-date-range';
90
- const X_CONFIG_RANGE_NAME = 'dateRange';
182
+ const X_DATA_RANGE_CONFIG_NAME = 'dateRange';
91
183
  /**
92
184
  * DateRange Property
93
185
  */
94
- export class XDateRangeProperty extends XControlValueAccessor {
186
+ export class XDateRangeProperty extends XFormControlFunction(X_DATA_RANGE_CONFIG_NAME) {
95
187
  constructor() {
96
188
  super(...arguments);
97
189
  /**
98
190
  * @zh_CN 选择类型
99
191
  * @en_US Select type
100
192
  */
101
- this.type = 'date';
193
+ this.type = input('date');
194
+ /**
195
+ * @zh_CN 格式化类型
196
+ * @en_US Format type
197
+ */
198
+ this.format = input(this.config?.format ?? 'yyyy-MM-dd');
199
+ /**
200
+ * @zh_CN 清除按钮
201
+ * @en_US Clear button
202
+ */
203
+ this.clearable = input(this.config?.clearable ?? true, { transform: XToBoolean });
204
+ /**
205
+ * @zh_CN 展示方位
206
+ * @en_US Display position
207
+ */
208
+ this.placement = input(this.config?.placement ?? 'bottom-start');
209
+ /**
210
+ * @zh_CN 显示边框
211
+ * @en_US Display Border
212
+ */
213
+ this.bordered = input(this.config?.bordered ?? true, { transform: XToBoolean });
102
214
  /**
103
215
  * @zh_CN 快捷选择按钮,自定义或直接设置本周(thisWeek)、上周(lastWeek)、下周(nextWeek)、本月(thisMonth)、上一月(lastMonth)、下一月(nextMonth)、本年(thisYear)、去年(lastYear)、明年(nextYear)
104
216
  * @en_US Quick selection button, support thisWeek, lastWeek, nextWeek, thisMonth, lastMonth, nextMonth, thisYear, lastYear, nextYear
105
217
  */
106
- this.preset = [];
218
+ this.preset = input([], { transform: XToDataConvert });
219
+ /**
220
+ * @zh_CN 页脚
221
+ * @en_US Footer
222
+ */
223
+ this.extraFooter = input();
224
+ /**
225
+ * @zh_CN 禁用的日期
226
+ * @en_US Disabled date
227
+ */
228
+ this.disabledDate = input();
229
+ /**
230
+ * @zh_CN 禁用的时间
231
+ * @en_US Disabled time
232
+ */
233
+ this.disabledTime = input();
234
+ /**
235
+ * @zh_CN 尺寸
236
+ * @en_US Size
237
+ */
238
+ this.size = input(this.config?.size ?? 'medium');
239
+ /**
240
+ * @zh_CN 输入框点击样式
241
+ * @en_US Input pointer
242
+ */
243
+ this.pointer = input(false, { transform: XToBoolean });
244
+ /**
245
+ * @zh_CN 标签
246
+ * @en_US Label
247
+ */
248
+ this.label = input('');
249
+ /**
250
+ * @zh_CN 标签宽度
251
+ * @en_US Label width
252
+ */
253
+ this.labelWidth = input('', { transform: XToCssPixelValue });
254
+ /**
255
+ * @zh_CN 标签文字对齐方式
256
+ * @en_US Label text alignment method
257
+ */
258
+ this.labelAlign = input('start');
259
+ /**
260
+ * @zh_CN flex 布局下的子元素水平排列方式
261
+ * @en_US The level of sub-element level arrangement under flex layout
262
+ */
263
+ this.justify = input('start');
264
+ /**
265
+ * @zh_CN flex 布局下的子元素垂直排列方式
266
+ * @en_US sub-element vertical arrangement method under flex layout
267
+ */
268
+ this.align = input('start');
269
+ /**
270
+ * @zh_CN flex 布局下的子元素排列方向
271
+ * @en_US The direction of the sub-element arrangement under flex layout
272
+ */
273
+ this.direction = input('column');
274
+ /**
275
+ * @zh_CN 输入提示信息
276
+ * @en_US Enter prompt information
277
+ */
278
+ this.placeholder = input('');
279
+ /**
280
+ * @zh_CN 禁用
281
+ * @en_US Disabled
282
+ */
283
+ this.disabled = input(false, { transform: XToBoolean });
284
+ /**
285
+ * @zh_CN 必填
286
+ * @en_US Required
287
+ */
288
+ this.required = input(false, { transform: XToBoolean });
289
+ /**
290
+ * @zh_CN 只读
291
+ * @en_US Readonly
292
+ */
293
+ this.readonly = input(false, { transform: XToBoolean });
294
+ /**
295
+ * @zh_CN 值模板
296
+ * @en_US Node template
297
+ */
298
+ this.valueTpl = input();
299
+ /**
300
+ * @zh_CN 值模板参数
301
+ * @en_US Node template
302
+ */
303
+ this.valueTplContext = input();
304
+ /**
305
+ * @zh_CN 前置标签
306
+ * @en_US Before label
307
+ */
308
+ this.before = input();
309
+ /**
310
+ * @zh_CN 后置标签
311
+ * @en_US After label
312
+ */
313
+ this.after = input();
314
+ /**
315
+ * @zh_CN 正则验证规则
316
+ * @en_US Regular verification rules
317
+ */
318
+ this.pattern = input(null);
319
+ /**
320
+ * @zh_CN 验证不通过提示文字
321
+ * @en_US Verify not pass the prompt text
322
+ */
323
+ this.message = input([]);
324
+ /**
325
+ * @zh_CN 激活状态
326
+ * @en_US Activation state
327
+ */
328
+ this.active = model(false);
329
+ /**
330
+ * @zh_CN 输入验证函数
331
+ * @en_US Enter the verification function
332
+ */
333
+ this.inputValidator = input();
107
334
  /**
108
335
  * @zh_CN 节点点击的事件
109
336
  * @en_US Node click event
110
337
  */
111
- this.nodeEmit = new EventEmitter();
338
+ this.nodeEmit = output();
112
339
  }
113
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XDateRangeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
114
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: XDateRangeProperty, selector: "x-date-range-property", inputs: { type: "type", format: "format", clearable: "clearable", placement: "placement", size: "size", bordered: "bordered", preset: "preset", placeholder: "placeholder", extraFooter: "extraFooter", disabledDate: "disabledDate", disabledTime: "disabledTime" }, outputs: { nodeEmit: "nodeEmit" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
340
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XDateRangeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
341
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: XDateRangeProperty, selector: "x-date-range-property", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, preset: { classPropertyName: "preset", publicName: "preset", isSignal: true, isRequired: false, transformFunction: null }, extraFooter: { classPropertyName: "extraFooter", publicName: "extraFooter", isSignal: true, isRequired: false, transformFunction: null }, disabledDate: { classPropertyName: "disabledDate", publicName: "disabledDate", isSignal: true, isRequired: false, transformFunction: null }, disabledTime: { classPropertyName: "disabledTime", publicName: "disabledTime", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, pointer: { classPropertyName: "pointer", publicName: "pointer", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelWidth: { classPropertyName: "labelWidth", publicName: "labelWidth", isSignal: true, isRequired: false, transformFunction: null }, labelAlign: { classPropertyName: "labelAlign", publicName: "labelAlign", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, valueTpl: { classPropertyName: "valueTpl", publicName: "valueTpl", isSignal: true, isRequired: false, transformFunction: null }, valueTplContext: { classPropertyName: "valueTplContext", publicName: "valueTplContext", isSignal: true, isRequired: false, transformFunction: null }, before: { classPropertyName: "before", publicName: "before", isSignal: true, isRequired: false, transformFunction: null }, after: { classPropertyName: "after", publicName: "after", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, inputValidator: { classPropertyName: "inputValidator", publicName: "inputValidator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { active: "activeChange", nodeEmit: "nodeEmit" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
115
342
  }
116
- __decorate([
117
- XWithConfig(X_CONFIG_RANGE_NAME, 'yyyy-MM-dd')
118
- ], XDateRangeProperty.prototype, "format", void 0);
119
- __decorate([
120
- XWithConfig(X_CONFIG_RANGE_NAME, true),
121
- XInputBoolean()
122
- ], XDateRangeProperty.prototype, "clearable", void 0);
123
- __decorate([
124
- XWithConfig(X_CONFIG_RANGE_NAME, 'bottom-start')
125
- ], XDateRangeProperty.prototype, "placement", void 0);
126
- __decorate([
127
- XWithConfig(X_CONFIG_RANGE_NAME, 'medium')
128
- ], XDateRangeProperty.prototype, "size", void 0);
129
- __decorate([
130
- XInputBoolean(),
131
- XWithConfig(X_CONFIG_NAME, true)
132
- ], XDateRangeProperty.prototype, "bordered", void 0);
133
- __decorate([
134
- XDataConvert()
135
- ], XDateRangeProperty.prototype, "preset", void 0);
136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XDateRangeProperty, decorators: [{
343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XDateRangeProperty, decorators: [{
137
344
  type: Component,
138
345
  args: [{ selector: `${XDateRangePrefix}-property`, template: '' }]
139
- }], propDecorators: { type: [{
140
- type: Input
141
- }], format: [{
142
- type: Input
143
- }], clearable: [{
144
- type: Input
145
- }], placement: [{
146
- type: Input
147
- }], size: [{
148
- type: Input
149
- }], bordered: [{
150
- type: Input
151
- }], preset: [{
152
- type: Input
153
- }], placeholder: [{
154
- type: Input
155
- }], extraFooter: [{
156
- type: Input
157
- }], disabledDate: [{
158
- type: Input
159
- }], disabledTime: [{
160
- type: Input
161
- }], nodeEmit: [{
162
- type: Output
163
- }] } });
346
+ }] });
164
347
  /**
165
348
  * DatePicker Portal
166
349
  * @selector x-date-picker-portal
@@ -189,167 +372,105 @@ export class XPickerDateProperty extends XProperty {
189
372
  * @zh_CN 选择类型
190
373
  * @en_US Select type
191
374
  */
192
- this.type = 'date';
375
+ this.type = model('date');
193
376
  /**
194
377
  * @zh_CN 显示的日期
195
378
  * @en_US Date displayed
196
379
  */
197
- this.display = new Date();
380
+ this.display = model(new Date());
381
+ /**
382
+ * @zh_CN 选中的日期
383
+ * @en_US Selected date
384
+ */
385
+ this.model = model();
386
+ /**
387
+ * @zh_CN 日期显示模板
388
+ * @en_US Date display template
389
+ */
390
+ this.dateTemp = input();
198
391
  /**
199
392
  * @zh_CN 显示切换按钮
200
393
  * @en_US Display switch button
201
394
  */
202
- this.showHeader = true;
395
+ this.showHeader = input(true, { transform: XToBoolean });
396
+ /**
397
+ * @zh_CN 范围选择
398
+ * @en_US Range picker
399
+ */
400
+ this.rangePicker = input(false, { transform: XToBoolean });
203
401
  /**
204
402
  * @zh_CN 上一年
205
403
  * @en_US Last year
206
404
  */
207
- this.lastYearBtn = true;
405
+ this.lastYearBtn = input(true, { transform: XToBoolean });
208
406
  /**
209
407
  * @zh_CN 上月
210
408
  * @en_US Last month
211
409
  */
212
- this.lastMonthBtn = true;
410
+ this.lastMonthBtn = input(true, { transform: XToBoolean });
213
411
  /**
214
412
  * @zh_CN 下一年
215
413
  * @en_US Next year
216
414
  */
217
- this.nextYearBtn = true;
415
+ this.nextYearBtn = input(true, { transform: XToBoolean });
218
416
  /**
219
417
  * @zh_CN 上月
220
418
  * @en_US Next month
221
419
  */
222
- this.nextMonthBtn = true;
420
+ this.nextMonthBtn = input(true, { transform: XToBoolean });
223
421
  /**
224
422
  * @zh_CN 范围 hover 效果
225
423
  * @en_US Range hover style
226
424
  */
227
- this.rangeHover = true;
425
+ this.rangeHover = input(true, { transform: XToBoolean });
228
426
  /**
229
427
  * @zh_CN 范围日期
230
428
  * @en_US Range date
231
429
  */
232
- this.rangeValue = [];
430
+ this.rangeValue = input([]);
233
431
  /**
234
- * @zh_CN 选择类型
235
- * @en_US Select type
432
+ * @zh_CN 当前选择的是开始/结束日期
433
+ * @en_US The current choice is the start / end date
236
434
  */
237
- this.typeChange = new EventEmitter();
435
+ this.rangeType = input();
238
436
  /**
239
- * @zh_CN 选中的事件
240
- * @en_US Selected event
437
+ * @zh_CN 禁用的日期
438
+ * @en_US Disabled date
241
439
  */
242
- this.modelChange = new EventEmitter();
440
+ this.disabledDate = input();
243
441
  /**
244
442
  * @zh_CN 范围变化的事件
245
443
  * @en_US Scope change event
246
444
  */
247
- this.rangeChange = new EventEmitter();
445
+ this.rangeChange = output();
248
446
  /**
249
447
  * @zh_CN 选年的事件
250
448
  * @en_US Year change event
251
449
  */
252
- this.yearChange = new EventEmitter();
450
+ this.yearChange = output();
253
451
  /**
254
452
  * @zh_CN 选月的事件
255
453
  * @en_US Month change event
256
454
  */
257
- this.monthChange = new EventEmitter();
258
- /**
259
- * @zh_CN 显示日期事件
260
- * @en_US display date event
261
- */
262
- this.displayChange = new EventEmitter();
455
+ this.monthChange = output();
263
456
  /**
264
457
  * @zh_CN 范围日期 mouseenter 事件
265
458
  * @en_US Date mouseenter event
266
459
  */
267
- this.rangeTdMouseenter = new EventEmitter();
460
+ this.rangeTdMouseenter = output();
268
461
  /**
269
462
  * @zh_CN 范围日期 mouseleave 事件
270
463
  * @en_US Date mouseleave event
271
464
  */
272
- this.rangeTdMouseleave = new EventEmitter();
273
- /**
274
- * @zh_CN 范围中的日期点击事件
275
- * @en_US Range date click event
276
- */
277
- this.rangeDateClick = new EventEmitter();
465
+ this.rangeTdMouseleave = output();
278
466
  }
279
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XPickerDateProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
280
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: XPickerDateProperty, selector: "x-picker-date-property", inputs: { type: "type", display: "display", model: "model", dateTemp: "dateTemp", showHeader: "showHeader", rangePicker: "rangePicker", lastYearBtn: "lastYearBtn", lastMonthBtn: "lastMonthBtn", nextYearBtn: "nextYearBtn", nextMonthBtn: "nextMonthBtn", rangeHover: "rangeHover", rangeValue: "rangeValue", rangeType: "rangeType", disabledDate: "disabledDate" }, outputs: { typeChange: "typeChange", modelChange: "modelChange", rangeChange: "rangeChange", yearChange: "yearChange", monthChange: "monthChange", displayChange: "displayChange", rangeTdMouseenter: "rangeTdMouseenter", rangeTdMouseleave: "rangeTdMouseleave", rangeDateClick: "rangeDateClick" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
467
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XPickerDateProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
468
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: XPickerDateProperty, selector: "x-picker-date-property", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, display: { classPropertyName: "display", publicName: "display", isSignal: true, isRequired: false, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, dateTemp: { classPropertyName: "dateTemp", publicName: "dateTemp", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, rangePicker: { classPropertyName: "rangePicker", publicName: "rangePicker", isSignal: true, isRequired: false, transformFunction: null }, lastYearBtn: { classPropertyName: "lastYearBtn", publicName: "lastYearBtn", isSignal: true, isRequired: false, transformFunction: null }, lastMonthBtn: { classPropertyName: "lastMonthBtn", publicName: "lastMonthBtn", isSignal: true, isRequired: false, transformFunction: null }, nextYearBtn: { classPropertyName: "nextYearBtn", publicName: "nextYearBtn", isSignal: true, isRequired: false, transformFunction: null }, nextMonthBtn: { classPropertyName: "nextMonthBtn", publicName: "nextMonthBtn", isSignal: true, isRequired: false, transformFunction: null }, rangeHover: { classPropertyName: "rangeHover", publicName: "rangeHover", isSignal: true, isRequired: false, transformFunction: null }, rangeValue: { classPropertyName: "rangeValue", publicName: "rangeValue", isSignal: true, isRequired: false, transformFunction: null }, rangeType: { classPropertyName: "rangeType", publicName: "rangeType", isSignal: true, isRequired: false, transformFunction: null }, disabledDate: { classPropertyName: "disabledDate", publicName: "disabledDate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { type: "typeChange", display: "displayChange", model: "modelChange", rangeChange: "rangeChange", yearChange: "yearChange", monthChange: "monthChange", rangeTdMouseenter: "rangeTdMouseenter", rangeTdMouseleave: "rangeTdMouseleave" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
281
469
  }
282
- __decorate([
283
- XInputBoolean()
284
- ], XPickerDateProperty.prototype, "showHeader", void 0);
285
- __decorate([
286
- XInputBoolean()
287
- ], XPickerDateProperty.prototype, "rangePicker", void 0);
288
- __decorate([
289
- XInputBoolean()
290
- ], XPickerDateProperty.prototype, "lastYearBtn", void 0);
291
- __decorate([
292
- XInputBoolean()
293
- ], XPickerDateProperty.prototype, "lastMonthBtn", void 0);
294
- __decorate([
295
- XInputBoolean()
296
- ], XPickerDateProperty.prototype, "nextYearBtn", void 0);
297
- __decorate([
298
- XInputBoolean()
299
- ], XPickerDateProperty.prototype, "nextMonthBtn", void 0);
300
- __decorate([
301
- XInputBoolean()
302
- ], XPickerDateProperty.prototype, "rangeHover", void 0);
303
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XPickerDateProperty, decorators: [{
470
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XPickerDateProperty, decorators: [{
304
471
  type: Component,
305
472
  args: [{ selector: `${XPickerDatePrefix}-property`, template: '' }]
306
- }], propDecorators: { type: [{
307
- type: Input
308
- }], display: [{
309
- type: Input
310
- }], model: [{
311
- type: Input
312
- }], dateTemp: [{
313
- type: Input
314
- }], showHeader: [{
315
- type: Input
316
- }], rangePicker: [{
317
- type: Input
318
- }], lastYearBtn: [{
319
- type: Input
320
- }], lastMonthBtn: [{
321
- type: Input
322
- }], nextYearBtn: [{
323
- type: Input
324
- }], nextMonthBtn: [{
325
- type: Input
326
- }], rangeHover: [{
327
- type: Input
328
- }], rangeValue: [{
329
- type: Input
330
- }], rangeType: [{
331
- type: Input
332
- }], disabledDate: [{
333
- type: Input
334
- }], typeChange: [{
335
- type: Output
336
- }], modelChange: [{
337
- type: Output
338
- }], rangeChange: [{
339
- type: Output
340
- }], yearChange: [{
341
- type: Output
342
- }], monthChange: [{
343
- type: Output
344
- }], displayChange: [{
345
- type: Output
346
- }], rangeTdMouseenter: [{
347
- type: Output
348
- }], rangeTdMouseleave: [{
349
- type: Output
350
- }], rangeDateClick: [{
351
- type: Output
352
- }] } });
473
+ }] });
353
474
  /**
354
475
  * PickerMonth
355
476
  * @selector x-picker-month
@@ -366,137 +487,90 @@ export class XPickerMonthProperty extends XProperty {
366
487
  * @zh_CN 选择类型
367
488
  * @en_US Select type
368
489
  */
369
- this.type = 'date';
490
+ this.type = model('date');
370
491
  /**
371
492
  * @zh_CN 显示的日期
372
493
  * @en_US Date displayed
373
494
  */
374
- this.display = new Date();
495
+ this.display = model(new Date());
496
+ /**
497
+ * @zh_CN 选中的日期
498
+ * @en_US Selected date
499
+ */
500
+ this.model = model();
501
+ /**
502
+ * @zh_CN 月份显示模板
503
+ * @en_US Month display template
504
+ */
505
+ this.monthTemp = input();
375
506
  /**
376
507
  * @zh_CN 显示切换按钮
377
508
  * @en_US Display switch button
378
509
  */
379
- this.showHeader = true;
510
+ this.showHeader = input(true, { transform: XToBoolean });
511
+ /**
512
+ * @zh_CN 范围选择
513
+ * @en_US Range picker
514
+ */
515
+ this.rangePicker = input(false, { transform: XToBoolean });
380
516
  /**
381
517
  * @zh_CN 上一年
382
518
  * @en_US Last year
383
519
  */
384
- this.lastYearBtn = true;
520
+ this.lastYearBtn = input(true, { transform: XToBoolean });
385
521
  /**
386
522
  * @zh_CN 下一年
387
523
  * @en_US Next year
388
524
  */
389
- this.nextYearBtn = true;
525
+ this.nextYearBtn = input(true, { transform: XToBoolean });
390
526
  /**
391
527
  * @zh_CN 范围月份
392
528
  * @en_US Range date
393
529
  */
394
- this.rangeValue = [];
530
+ this.rangeValue = input([]);
395
531
  /**
396
- * @zh_CN 选中的事件
397
- * @en_US Selected event
532
+ * @zh_CN 当前选择的是开始/结束日期
533
+ * @en_US The current choice is the start / end date
398
534
  */
399
- this.modelChange = new EventEmitter();
535
+ this.rangeType = input();
400
536
  /**
401
- * @zh_CN 选择类型
402
- * @en_US Select type
537
+ * @zh_CN 禁用的日期
538
+ * @en_US Disabled date
403
539
  */
404
- this.typeChange = new EventEmitter();
540
+ this.disabledDate = input();
405
541
  /**
406
542
  * @zh_CN 范围变化的事件
407
543
  * @en_US Scope change event
408
544
  */
409
- this.rangeChange = new EventEmitter();
545
+ this.rangeChange = output();
410
546
  /**
411
547
  * @zh_CN 选年的事件
412
548
  * @en_US Year change event
413
549
  */
414
- this.yearChange = new EventEmitter();
550
+ this.yearChange = output();
415
551
  /**
416
552
  * @zh_CN 选月的事件
417
553
  * @en_US Month change event
418
554
  */
419
- this.monthChange = new EventEmitter();
420
- /**
421
- * @zh_CN 显示月份事件
422
- * @en_US display date event
423
- */
424
- this.displayChange = new EventEmitter();
555
+ this.monthChange = output();
425
556
  /**
426
557
  * @zh_CN 范围月份 mouseenter 事件
427
558
  * @en_US Date mouseenter event
428
559
  */
429
- this.rangeTdMouseenter = new EventEmitter();
560
+ this.rangeTdMouseenter = output();
430
561
  /**
431
562
  * @zh_CN 范围月份 mouseleave 事件
432
563
  * @en_US Date mouseleave event
433
564
  */
434
- this.rangeTdMouseleave = new EventEmitter();
435
- /**
436
- * @zh_CN 范围中的月份点击事件
437
- * @en_US Range date click event
438
- */
439
- this.rangeDateClick = new EventEmitter();
565
+ this.rangeTdMouseleave = output();
440
566
  }
441
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XPickerMonthProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
442
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: XPickerMonthProperty, selector: "x-picker-month-property", inputs: { type: "type", display: "display", model: "model", monthTemp: "monthTemp", showHeader: "showHeader", rangePicker: "rangePicker", lastYearBtn: "lastYearBtn", nextYearBtn: "nextYearBtn", rangeValue: "rangeValue", rangeType: "rangeType", disabledDate: "disabledDate" }, outputs: { modelChange: "modelChange", typeChange: "typeChange", rangeChange: "rangeChange", yearChange: "yearChange", monthChange: "monthChange", displayChange: "displayChange", rangeTdMouseenter: "rangeTdMouseenter", rangeTdMouseleave: "rangeTdMouseleave", rangeDateClick: "rangeDateClick" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
567
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XPickerMonthProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
568
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: XPickerMonthProperty, selector: "x-picker-month-property", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, display: { classPropertyName: "display", publicName: "display", isSignal: true, isRequired: false, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, monthTemp: { classPropertyName: "monthTemp", publicName: "monthTemp", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, rangePicker: { classPropertyName: "rangePicker", publicName: "rangePicker", isSignal: true, isRequired: false, transformFunction: null }, lastYearBtn: { classPropertyName: "lastYearBtn", publicName: "lastYearBtn", isSignal: true, isRequired: false, transformFunction: null }, nextYearBtn: { classPropertyName: "nextYearBtn", publicName: "nextYearBtn", isSignal: true, isRequired: false, transformFunction: null }, rangeValue: { classPropertyName: "rangeValue", publicName: "rangeValue", isSignal: true, isRequired: false, transformFunction: null }, rangeType: { classPropertyName: "rangeType", publicName: "rangeType", isSignal: true, isRequired: false, transformFunction: null }, disabledDate: { classPropertyName: "disabledDate", publicName: "disabledDate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { type: "typeChange", display: "displayChange", model: "modelChange", rangeChange: "rangeChange", yearChange: "yearChange", monthChange: "monthChange", rangeTdMouseenter: "rangeTdMouseenter", rangeTdMouseleave: "rangeTdMouseleave" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
443
569
  }
444
- __decorate([
445
- XInputBoolean()
446
- ], XPickerMonthProperty.prototype, "showHeader", void 0);
447
- __decorate([
448
- XInputBoolean()
449
- ], XPickerMonthProperty.prototype, "rangePicker", void 0);
450
- __decorate([
451
- XInputBoolean()
452
- ], XPickerMonthProperty.prototype, "lastYearBtn", void 0);
453
- __decorate([
454
- XInputBoolean()
455
- ], XPickerMonthProperty.prototype, "nextYearBtn", void 0);
456
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XPickerMonthProperty, decorators: [{
570
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XPickerMonthProperty, decorators: [{
457
571
  type: Component,
458
572
  args: [{ selector: `${XPickerMonthPrefix}-property`, template: '' }]
459
- }], propDecorators: { type: [{
460
- type: Input
461
- }], display: [{
462
- type: Input
463
- }], model: [{
464
- type: Input
465
- }], monthTemp: [{
466
- type: Input
467
- }], showHeader: [{
468
- type: Input
469
- }], rangePicker: [{
470
- type: Input
471
- }], lastYearBtn: [{
472
- type: Input
473
- }], nextYearBtn: [{
474
- type: Input
475
- }], rangeValue: [{
476
- type: Input
477
- }], rangeType: [{
478
- type: Input
479
- }], disabledDate: [{
480
- type: Input
481
- }], modelChange: [{
482
- type: Output
483
- }], typeChange: [{
484
- type: Output
485
- }], rangeChange: [{
486
- type: Output
487
- }], yearChange: [{
488
- type: Output
489
- }], monthChange: [{
490
- type: Output
491
- }], displayChange: [{
492
- type: Output
493
- }], rangeTdMouseenter: [{
494
- type: Output
495
- }], rangeTdMouseleave: [{
496
- type: Output
497
- }], rangeDateClick: [{
498
- type: Output
499
- }] } });
573
+ }] });
500
574
  /**
501
575
  * PickerQuarter
502
576
  * @selector x-picker-quarter
@@ -513,137 +587,90 @@ export class XPickerQuarterProperty extends XProperty {
513
587
  * @zh_CN 选择类型
514
588
  * @en_US Select type
515
589
  */
516
- this.type = 'date';
590
+ this.type = model('date');
517
591
  /**
518
592
  * @zh_CN 显示的日期
519
593
  * @en_US Date displayed
520
594
  */
521
- this.display = new Date();
595
+ this.display = model(new Date());
596
+ /**
597
+ * @zh_CN 选中的日期
598
+ * @en_US Selected date
599
+ */
600
+ this.model = model();
601
+ /**
602
+ * @zh_CN 季度显示模板
603
+ * @en_US Month display template
604
+ */
605
+ this.quarterTemp = input();
522
606
  /**
523
607
  * @zh_CN 显示切换按钮
524
608
  * @en_US Display switch button
525
609
  */
526
- this.showHeader = true;
610
+ this.showHeader = input(true, { transform: XToBoolean });
611
+ /**
612
+ * @zh_CN 范围选择
613
+ * @en_US Range picker
614
+ */
615
+ this.rangePicker = input(false, { transform: XToBoolean });
527
616
  /**
528
617
  * @zh_CN 上一年
529
618
  * @en_US Last year
530
619
  */
531
- this.lastYearBtn = true;
620
+ this.lastYearBtn = input(true, { transform: XToBoolean });
532
621
  /**
533
622
  * @zh_CN 下一年
534
623
  * @en_US Next year
535
624
  */
536
- this.nextYearBtn = true;
625
+ this.nextYearBtn = input(true, { transform: XToBoolean });
537
626
  /**
538
627
  * @zh_CN 范围月份
539
628
  * @en_US Range date
540
629
  */
541
- this.rangeValue = [];
630
+ this.rangeValue = input([]);
542
631
  /**
543
- * @zh_CN 选中的事件
544
- * @en_US Selected event
632
+ * @zh_CN 当前选择的是开始/结束日期
633
+ * @en_US The current choice is the start / end date
545
634
  */
546
- this.modelChange = new EventEmitter();
635
+ this.rangeType = input();
547
636
  /**
548
- * @zh_CN 选择类型
549
- * @en_US Select type
637
+ * @zh_CN 禁用的日期
638
+ * @en_US Disabled date
550
639
  */
551
- this.typeChange = new EventEmitter();
640
+ this.disabledDate = input();
552
641
  /**
553
642
  * @zh_CN 范围变化的事件
554
643
  * @en_US Scope change event
555
644
  */
556
- this.rangeChange = new EventEmitter();
645
+ this.rangeChange = output();
557
646
  /**
558
647
  * @zh_CN 选年的事件
559
648
  * @en_US Year change event
560
649
  */
561
- this.yearChange = new EventEmitter();
650
+ this.yearChange = output();
562
651
  /**
563
652
  * @zh_CN 选月的事件
564
653
  * @en_US Month change event
565
654
  */
566
- this.monthChange = new EventEmitter();
567
- /**
568
- * @zh_CN 显示季度事件
569
- * @en_US display date event
570
- */
571
- this.displayChange = new EventEmitter();
655
+ this.monthChange = output();
572
656
  /**
573
657
  * @zh_CN 范围季度 mouseenter 事件
574
658
  * @en_US Date mouseenter event
575
659
  */
576
- this.rangeTdMouseenter = new EventEmitter();
660
+ this.rangeTdMouseenter = output();
577
661
  /**
578
662
  * @zh_CN 范围季度 mouseleave 事件
579
663
  * @en_US Date mouseleave event
580
664
  */
581
- this.rangeTdMouseleave = new EventEmitter();
582
- /**
583
- * @zh_CN 范围中的季度点击事件
584
- * @en_US Range date click event
585
- */
586
- this.rangeDateClick = new EventEmitter();
665
+ this.rangeTdMouseleave = output();
587
666
  }
588
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XPickerQuarterProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
589
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: XPickerQuarterProperty, selector: "x-picker-quarter-property", inputs: { type: "type", display: "display", model: "model", quarterTemp: "quarterTemp", showHeader: "showHeader", rangePicker: "rangePicker", lastYearBtn: "lastYearBtn", nextYearBtn: "nextYearBtn", rangeValue: "rangeValue", rangeType: "rangeType", disabledDate: "disabledDate" }, outputs: { modelChange: "modelChange", typeChange: "typeChange", rangeChange: "rangeChange", yearChange: "yearChange", monthChange: "monthChange", displayChange: "displayChange", rangeTdMouseenter: "rangeTdMouseenter", rangeTdMouseleave: "rangeTdMouseleave", rangeDateClick: "rangeDateClick" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
667
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XPickerQuarterProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
668
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: XPickerQuarterProperty, selector: "x-picker-quarter-property", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, display: { classPropertyName: "display", publicName: "display", isSignal: true, isRequired: false, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, quarterTemp: { classPropertyName: "quarterTemp", publicName: "quarterTemp", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, rangePicker: { classPropertyName: "rangePicker", publicName: "rangePicker", isSignal: true, isRequired: false, transformFunction: null }, lastYearBtn: { classPropertyName: "lastYearBtn", publicName: "lastYearBtn", isSignal: true, isRequired: false, transformFunction: null }, nextYearBtn: { classPropertyName: "nextYearBtn", publicName: "nextYearBtn", isSignal: true, isRequired: false, transformFunction: null }, rangeValue: { classPropertyName: "rangeValue", publicName: "rangeValue", isSignal: true, isRequired: false, transformFunction: null }, rangeType: { classPropertyName: "rangeType", publicName: "rangeType", isSignal: true, isRequired: false, transformFunction: null }, disabledDate: { classPropertyName: "disabledDate", publicName: "disabledDate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { type: "typeChange", display: "displayChange", model: "modelChange", rangeChange: "rangeChange", yearChange: "yearChange", monthChange: "monthChange", rangeTdMouseenter: "rangeTdMouseenter", rangeTdMouseleave: "rangeTdMouseleave" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
590
669
  }
591
- __decorate([
592
- XInputBoolean()
593
- ], XPickerQuarterProperty.prototype, "showHeader", void 0);
594
- __decorate([
595
- XInputBoolean()
596
- ], XPickerQuarterProperty.prototype, "rangePicker", void 0);
597
- __decorate([
598
- XInputBoolean()
599
- ], XPickerQuarterProperty.prototype, "lastYearBtn", void 0);
600
- __decorate([
601
- XInputBoolean()
602
- ], XPickerQuarterProperty.prototype, "nextYearBtn", void 0);
603
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XPickerQuarterProperty, decorators: [{
670
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XPickerQuarterProperty, decorators: [{
604
671
  type: Component,
605
672
  args: [{ selector: `${XPickerQuarterPrefix}-property`, template: '' }]
606
- }], propDecorators: { type: [{
607
- type: Input
608
- }], display: [{
609
- type: Input
610
- }], model: [{
611
- type: Input
612
- }], quarterTemp: [{
613
- type: Input
614
- }], showHeader: [{
615
- type: Input
616
- }], rangePicker: [{
617
- type: Input
618
- }], lastYearBtn: [{
619
- type: Input
620
- }], nextYearBtn: [{
621
- type: Input
622
- }], rangeValue: [{
623
- type: Input
624
- }], rangeType: [{
625
- type: Input
626
- }], disabledDate: [{
627
- type: Input
628
- }], modelChange: [{
629
- type: Output
630
- }], typeChange: [{
631
- type: Output
632
- }], rangeChange: [{
633
- type: Output
634
- }], yearChange: [{
635
- type: Output
636
- }], monthChange: [{
637
- type: Output
638
- }], displayChange: [{
639
- type: Output
640
- }], rangeTdMouseenter: [{
641
- type: Output
642
- }], rangeTdMouseleave: [{
643
- type: Output
644
- }], rangeDateClick: [{
645
- type: Output
646
- }] } });
673
+ }] });
647
674
  /**
648
675
  * DateQuarter
649
676
  * @selector xDateQuarter
@@ -666,142 +693,93 @@ export class XPickerYearProperty extends XProperty {
666
693
  * @zh_CN 选择类型
667
694
  * @en_US Select type
668
695
  */
669
- this.type = 'date';
696
+ this.type = model('date');
670
697
  /**
671
698
  * @zh_CN 显示的日期
672
699
  * @en_US Date displayed
673
700
  */
674
- this.display = new Date();
701
+ this.display = model(new Date());
702
+ /**
703
+ * @zh_CN 选中的日期
704
+ * @en_US Selected date
705
+ */
706
+ this.model = model();
707
+ /**
708
+ * @zh_CN 年份显示模板
709
+ * @en_US Month display template
710
+ */
711
+ this.yearTemp = input();
675
712
  /**
676
713
  * @zh_CN 显示切换按钮
677
714
  * @en_US Display switch button
678
715
  */
679
- this.showHeader = true;
716
+ this.showHeader = input(true, { transform: XToBoolean });
717
+ /**
718
+ * @zh_CN 范围选择
719
+ * @en_US Range picker
720
+ */
721
+ this.rangePicker = input(false, { transform: XToBoolean });
680
722
  /**
681
723
  * @zh_CN 上一年
682
724
  * @en_US Last year
683
725
  */
684
- this.lastYearBtn = true;
726
+ this.lastYearBtn = input(true, { transform: XToBoolean });
685
727
  /**
686
728
  * @zh_CN 下一年
687
729
  * @en_US Next year
688
730
  */
689
- this.nextYearBtn = true;
731
+ this.nextYearBtn = input(true, { transform: XToBoolean });
690
732
  /**
691
733
  * @zh_CN 范围年份
692
734
  * @en_US Range date
693
735
  */
694
- this.rangeValue = [];
736
+ this.rangeValue = input([]);
695
737
  /**
696
- * @zh_CN 选中的事件
697
- * @en_US Selected event
738
+ * @zh_CN 当前选择的是开始/结束日期
739
+ * @en_US The current choice is the start / end date
698
740
  */
699
- this.modelChange = new EventEmitter();
741
+ this.rangeType = input();
700
742
  /**
701
- * @zh_CN 选择类型
702
- * @en_US Select type
743
+ * @zh_CN 禁用的日期
744
+ * @en_US Disabled date
703
745
  */
704
- this.typeChange = new EventEmitter();
746
+ this.disabledDate = input();
705
747
  /**
706
748
  * @zh_CN 开始年份变化的事件
707
749
  * @en_US Start year change event
708
750
  */
709
- this.startChange = new EventEmitter();
751
+ this.startChange = output();
710
752
  /**
711
753
  * @zh_CN 范围变化的事件
712
754
  * @en_US Scope change event
713
755
  */
714
- this.rangeChange = new EventEmitter();
756
+ this.rangeChange = output();
715
757
  /**
716
758
  * @zh_CN 选年的事件
717
759
  * @en_US Year change event
718
760
  */
719
- this.yearChange = new EventEmitter();
761
+ this.yearChange = output();
720
762
  /**
721
763
  * @zh_CN 选月的事件
722
764
  * @en_US Month change event
723
765
  */
724
- this.monthChange = new EventEmitter();
725
- /**
726
- * @zh_CN 显示月份事件
727
- * @en_US display date event
728
- */
729
- this.displayChange = new EventEmitter();
766
+ this.monthChange = output();
730
767
  /**
731
768
  * @zh_CN 范围月份 mouseenter 事件
732
769
  * @en_US Date mouseenter event
733
770
  */
734
- this.rangeTdMouseenter = new EventEmitter();
771
+ this.rangeTdMouseenter = output();
735
772
  /**
736
773
  * @zh_CN 范围月份 mouseleave 事件
737
774
  * @en_US Date mouseleave event
738
775
  */
739
- this.rangeTdMouseleave = new EventEmitter();
740
- /**
741
- * @zh_CN 范围中的月份点击事件
742
- * @en_US Range date click event
743
- */
744
- this.rangeDateClick = new EventEmitter();
776
+ this.rangeTdMouseleave = output();
745
777
  }
746
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XPickerYearProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
747
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: XPickerYearProperty, selector: "x-picker-year-property", inputs: { type: "type", display: "display", model: "model", yearTemp: "yearTemp", showHeader: "showHeader", rangePicker: "rangePicker", lastYearBtn: "lastYearBtn", nextYearBtn: "nextYearBtn", rangeValue: "rangeValue", rangeType: "rangeType", disabledDate: "disabledDate" }, outputs: { modelChange: "modelChange", typeChange: "typeChange", startChange: "startChange", rangeChange: "rangeChange", yearChange: "yearChange", monthChange: "monthChange", displayChange: "displayChange", rangeTdMouseenter: "rangeTdMouseenter", rangeTdMouseleave: "rangeTdMouseleave", rangeDateClick: "rangeDateClick" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
778
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XPickerYearProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
779
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: XPickerYearProperty, selector: "x-picker-year-property", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, display: { classPropertyName: "display", publicName: "display", isSignal: true, isRequired: false, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, yearTemp: { classPropertyName: "yearTemp", publicName: "yearTemp", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, rangePicker: { classPropertyName: "rangePicker", publicName: "rangePicker", isSignal: true, isRequired: false, transformFunction: null }, lastYearBtn: { classPropertyName: "lastYearBtn", publicName: "lastYearBtn", isSignal: true, isRequired: false, transformFunction: null }, nextYearBtn: { classPropertyName: "nextYearBtn", publicName: "nextYearBtn", isSignal: true, isRequired: false, transformFunction: null }, rangeValue: { classPropertyName: "rangeValue", publicName: "rangeValue", isSignal: true, isRequired: false, transformFunction: null }, rangeType: { classPropertyName: "rangeType", publicName: "rangeType", isSignal: true, isRequired: false, transformFunction: null }, disabledDate: { classPropertyName: "disabledDate", publicName: "disabledDate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { type: "typeChange", display: "displayChange", model: "modelChange", startChange: "startChange", rangeChange: "rangeChange", yearChange: "yearChange", monthChange: "monthChange", rangeTdMouseenter: "rangeTdMouseenter", rangeTdMouseleave: "rangeTdMouseleave" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
748
780
  }
749
- __decorate([
750
- XInputBoolean()
751
- ], XPickerYearProperty.prototype, "showHeader", void 0);
752
- __decorate([
753
- XInputBoolean()
754
- ], XPickerYearProperty.prototype, "rangePicker", void 0);
755
- __decorate([
756
- XInputBoolean()
757
- ], XPickerYearProperty.prototype, "lastYearBtn", void 0);
758
- __decorate([
759
- XInputBoolean()
760
- ], XPickerYearProperty.prototype, "nextYearBtn", void 0);
761
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XPickerYearProperty, decorators: [{
781
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XPickerYearProperty, decorators: [{
762
782
  type: Component,
763
783
  args: [{ selector: `${XPickerYearPrefix}-property`, template: '' }]
764
- }], propDecorators: { type: [{
765
- type: Input
766
- }], display: [{
767
- type: Input
768
- }], model: [{
769
- type: Input
770
- }], yearTemp: [{
771
- type: Input
772
- }], showHeader: [{
773
- type: Input
774
- }], rangePicker: [{
775
- type: Input
776
- }], lastYearBtn: [{
777
- type: Input
778
- }], nextYearBtn: [{
779
- type: Input
780
- }], rangeValue: [{
781
- type: Input
782
- }], rangeType: [{
783
- type: Input
784
- }], disabledDate: [{
785
- type: Input
786
- }], modelChange: [{
787
- type: Output
788
- }], typeChange: [{
789
- type: Output
790
- }], startChange: [{
791
- type: Output
792
- }], rangeChange: [{
793
- type: Output
794
- }], yearChange: [{
795
- type: Output
796
- }], monthChange: [{
797
- type: Output
798
- }], displayChange: [{
799
- type: Output
800
- }], rangeTdMouseenter: [{
801
- type: Output
802
- }], rangeTdMouseleave: [{
803
- type: Output
804
- }], rangeDateClick: [{
805
- type: Output
806
- }] } });
807
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIucHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGFBQWEsRUFDYixTQUFTLEVBR1QsV0FBVyxFQUdYLFlBQVksRUFHYixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7O0FBRTNFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7QUFDakQsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDO0FBRW5DOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHFCQUEwQjtJQURuRTs7UUFFRTs7O1dBR0c7UUFDTSxTQUFJLEdBQW9CLE1BQU0sQ0FBQztRQTBCeEM7OztXQUdHO1FBQ3NCLFdBQU0sR0FBNkIsRUFBRSxDQUFDO1FBZ0IvRDs7O1dBR0c7UUFDTyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQUNqRDtrSUF4RFksbUJBQW1CO3NIQUFuQixtQkFBbUIsa1dBRGtDLEVBQUU7O0FBV1A7SUFBakQsV0FBVyxDQUFTLGFBQWEsRUFBRSxZQUFZLENBQUM7bURBQWlCO0FBS0w7SUFBNUQsV0FBVyxDQUFXLGFBQWEsRUFBRSxJQUFJLENBQUM7SUFBRSxhQUFhLEVBQUU7c0RBQXNCO0FBSzdCO0lBQXBELFdBQVcsQ0FBVSxhQUFhLEVBQUUsY0FBYyxDQUFDO3NEQUFxQjtBQUs1QjtJQUE1QyxXQUFXLENBQVEsYUFBYSxFQUFFLFFBQVEsQ0FBQztpREFBYztBQUtHO0lBQTVELGFBQWEsRUFBRTtJ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LENBQUM7UUFDNUQ7OztXQUdHO1FBQ08sbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO0tBQzFEO2tJQTFHWSxtQkFBbUI7c0hBQW5CLG1CQUFtQiwwcUJBRGtDLEVBQUU7O0FBMEJ4QztJQUFoQixhQUFhLEVBQUU7dURBQTZCO0FBSzVCO0lBQWhCLGFBQWEsRUFBRTt3REFBd0I7QUFLdkI7SUFBaEIsYUFBYSxFQUFFO3dEQUE4QjtBQUs3QjtJQUFoQixhQUFhLEVBQUU7d0RBQThCOzRGQXhDNUMsbUJBQW1CO2tCQUQvQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsaUJBQWlCLFdBQVcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFOzhCQU0zRCxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csT0FBTztzQkFBZixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtvQixVQUFVO3NCQUFuQyxLQUFLO2dCQUtvQixXQUFXO3NCQUFwQyxLQUFLO2dCQUtvQixXQUFXO3NCQUFwQyxLQUFLO2dCQUtvQixXQUFXO3NCQUFwQyxLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtJLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLGFBQWE7c0JBQXRCLE1BQU07Z0JBS0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUtHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFLRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBYSW5wdXRCb29sZWFuLFxyXG4gIFhQcm9wZXJ0eSxcclxuICBYQm9vbGVhbixcclxuICBYQ29ybmVyLFxyXG4gIFhXaXRoQ29uZmlnLFxyXG4gIFhTaXplLFxyXG4gIFhUZW1wbGF0ZSxcclxuICBYRGF0YUNvbnZlcnQsXHJcbiAgWERhdGEsXHJcbiAgWElkZW50aXR5UHJvcGVydHlcclxufSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhDb250cm9sVmFsdWVBY2Nlc3NvciwgWEZvcm1PcHRpb24gfSBmcm9tICdAbmctbmVzdC91aS9iYXNlLWZvcm0nO1xyXG5cclxuLyoqXHJcbiAqIERhdGVQaWNrZXJcclxuICogQHNlbGVjdG9yIHgtZGF0ZS1waWNrZXJcclxuICogQGRlY29yYXRvciBjb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBYRGF0ZVBpY2tlclByZWZpeCA9ICd4LWRhdGUtcGlja2VyJztcclxuY29uc3QgWF9DT05GSUdfTkFNRSA9ICdkYXRlUGlja2VyJztcclxuXHJcbi8qKlxyXG4gKiBEYXRlUGlja2VyIFByb3BlcnR5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6IGAke1hEYXRlUGlja2VyUHJlZml4fS1wcm9wZXJ0eWAsIHRlbXBsYXRlOiAnJyB9KVxyXG5leHBvcnQgY2xhc3MgWERhdGVQaWNrZXJQcm9wZXJ0eSBleHRlbmRzIFhDb250cm9sVmFsdWVBY2Nlc3Nvcjxhbnk+IGltcGxlbWVudHMgWERhdGVQaWNrZXJPcHRpb24ge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInmi6nnsbvlnotcclxuICAgKiBAZW5fVVMgU2VsZWN0IHR5cGVcclxuICAgKi9cclxuICBASW5wdXQoKSB0eXBlOiBYRGF0ZVBpY2tlclR5cGUgPSAnZGF0ZSc7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOagvOW8j+WMluexu+Wei1xyXG4gICAqIEBlbl9VUyBGb3JtYXQgdHlwZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxzdHJpbmc+KFhfQ09ORklHX05BTUUsICd5eXl5LU1NLWRkJykgZm9ybWF0Pzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmuIXpmaTmjInpkq5cclxuICAgKiBAZW5fVVMgQ2xlYXIgYnV0dG9uXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhCb29sZWFuPihYX0NPTkZJR19OQU1FLCB0cnVlKSBAWElucHV0Qm9vbGVhbigpIGNsZWFyYWJsZT86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsZXnpLrmlrnkvY1cclxuICAgKiBAZW5fVVMgRGlzcGxheSBwb3NpdGlvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQ29ybmVyPihYX0NPTkZJR19OQU1FLCAnYm90dG9tLXN0YXJ0JykgcGxhY2VtZW50PzogWENvcm5lcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5bC65a+4XHJcbiAgICogQGVuX1VTIFNpemVcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WFNpemU+KFhfQ09ORklHX05BTUUsICdtZWRpdW0nKSBzaXplITogWFNpemU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuui+ueahhlxyXG4gICAqIEBlbl9VUyBEaXNwbGF5IEJvcmRlclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgQFhXaXRoQ29uZmlnPFhCb29sZWFuPihYX0NPTkZJR19OQU1FLCB0cnVlKSBib3JkZXJlZCE6IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlv6vmjbfpgInmi6nmjInpkq7vvIzoh6rlrprkuYnmiJbnm7TmjqXorr7nva7ku4rlpKnvvIh0b2Rhee+8iSzmmKjlpKnvvIh5ZXN0ZXJkYXnvvIks5piO5aSp77yIdG9tb3Jyb3fvvIlcclxuICAgKiBAZW5fVVMgUXVpY2sgc2VsZWN0aW9uIGJ1dHRvbiwgc3VwcG9ydCB0b2RheSwgeWVzdGVyZGF5LCB0b21vcnJvd1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYRGF0YUNvbnZlcnQoKSBwcmVzZXQ6IFhEYXRhPFhEYXRlUGlja2VyUHJlc2V0PiA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpobXohJpcclxuICAgKiBAZW5fVVMgRm9vdGVyXHJcbiAgICovXHJcbiAgQElucHV0KCkgZXh0cmFGb290ZXI/OiBYVGVtcGxhdGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOeahOaXpeacn1xyXG4gICAqIEBlbl9VUyBEaXNhYmxlZCBkYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWREYXRlPzogWERhdGVQaWNrZXJEaXNhYmxlZERhdGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOeahOaXtumXtFxyXG4gICAqIEBlbl9VUyBEaXNhYmxlZCB0aW1lXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWRUaW1lPzogWERhdGVQaWNrZXJEaXNhYmxlZFRpbWU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueeCueWHu+eahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBOb2RlIGNsaWNrIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG5vZGVFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEYXRlUGlja2VyIE9wdGlvblxyXG4gKiBAdW5kb2N1bWVudCB0cnVlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhEYXRlUGlja2VyT3B0aW9uIGV4dGVuZHMgWEZvcm1PcHRpb24ge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInmi6nnsbvlnotcclxuICAgKiBAZW5fVVMgQ2hvb3NlIGEgdHlwZVxyXG4gICAqL1xyXG4gIHR5cGU/OiBYRGF0ZVBpY2tlclR5cGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOagvOW8j+WMluexu+Wei1xyXG4gICAqIEBlbl9VUyBGb3JtYXQgdHlwZVxyXG4gICAqL1xyXG4gIGZvcm1hdD86IHN0cmluZztcclxuICAvKipcclxuICAgKiBAemhfQ04g5riF6Zmk5oyJ6ZKuXHJcbiAgICogQGVuX1VTIENsZWFyIGJ1dHRvblxyXG4gICAqL1xyXG4gIGNsZWFyYWJsZT86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsZXnpLrmlrnkvY1cclxuICAgKiBAZW5fVVMgRGlzcGxheSBwb3NpdGlvblxyXG4gICAqL1xyXG4gIHBsYWNlbWVudD86IFhDb3JuZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWwuuWvuFxyXG4gICAqIEBlbl9VUyBTaXplXHJcbiAgICovXHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrovrnmoYZcclxuICAgKiBAZW5fVVMgRGlzcGxheSBCb3JkZXJcclxuICAgKi9cclxuICBib3JkZXJlZD86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDliY3nva7moIfnrb5cclxuICAgKiBAZW5fVVMgQmVmb3JlIGxhYmVsXHJcbiAgICovXHJcbiAgYmVmb3JlPzogWFRlbXBsYXRlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlkI7nva7moIfnrb5cclxuICAgKiBAZW5fVVMgQWZ0ZXIgbGFiZWxcclxuICAgKi9cclxuICBhZnRlcj86IFhUZW1wbGF0ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K554K55Ye755qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIE5vZGUgY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICBub2RlQ2xpY2s/OiAodmFsdWU6IG51bWJlcikgPT4gdm9pZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIERhdGVSYW5nZVxyXG4gKiBAc2VsZWN0b3IgeC1kYXRlLXJhbmdlXHJcbiAqIEBkZWNvcmF0b3IgY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWERhdGVSYW5nZVByZWZpeCA9ICd4LWRhdGUtcmFuZ2UnO1xyXG5jb25zdCBYX0NPTkZJR19SQU5HRV9OQU1FID0gJ2RhdGVSYW5nZSc7XHJcblxyXG4vKipcclxuICogRGF0ZVJhbmdlIFByb3BlcnR5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6IGAke1hEYXRlUmFuZ2VQcmVmaXh9LXByb3BlcnR5YCwgdGVtcGxhdGU6ICcnIH0pXHJcbmV4cG9ydCBjbGFzcyBYRGF0ZVJhbmdlUHJvcGVydHkgZXh0ZW5kcyBYQ29udHJvbFZhbHVlQWNjZXNzb3I8YW55PiBpbXBsZW1lbnRzIFhEYXRlUmFuZ2VPcHRpb24ge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInmi6nnsbvlnotcclxuICAgKiBAZW5fVVMgU2VsZWN0IHR5cGVcclxuICAgKi9cclxuICBASW5wdXQoKSB0eXBlOiBYRGF0ZVBpY2tlclR5cGUgPSAnZGF0ZSc7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOagvOW8j+WMluexu+Wei1xyXG4gICAqIEBlbl9VUyBGb3JtYXQgdHlwZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxzdHJpbmc+KFhfQ09ORklHX1JBTkdFX05BTUUsICd5eXl5LU1NLWRkJykgZm9ybWF0Pzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmuIXpmaTmjInpkq5cclxuICAgKiBAZW5fVVMgQ2xlYXIgYnV0dG9uXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhCb29sZWFuPihYX0NPTkZJR19SQU5HRV9OQU1FLCB0cnVlKSBAWElucHV0Qm9vbGVhbigpIGNsZWFyYWJsZT86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsZXnpLrmlrnkvY1cclxuICAgKiBAZW5fVVMgRGlzcGxheSBwb3NpdGlvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQ29ybmVyPihYX0NPTkZJR19SQU5HRV9OQU1FLCAnYm90dG9tLXN0YXJ0JykgcGxhY2VtZW50PzogWENvcm5lcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5bC65a+4XHJcbiAgICogQGVuX1VTIFNpemVcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WFNpemU+KFhfQ09ORklHX1JBTkdFX05BTUUsICdtZWRpdW0nKSBzaXplITogWFNpemU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuui+ueahhlxyXG4gICAqIEBlbl9VUyBEaXNwbGF5IEJvcmRlclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgQFhXaXRoQ29uZmlnPFhCb29sZWFuPihYX0NPTkZJR19OQU1FLCB0cnVlKSBib3JkZXJlZCE6IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlv6vmjbfpgInmi6nmjInpkq7vvIzoh6rlrprkuYnmiJbnm7TmjqXorr7nva7mnKzlkajvvIh0aGlzV2Vla++8ieOAgeS4iuWRqO+8iGxhc3RXZWVr77yJ44CB5LiL5ZGo77yIbmV4dFdlZWvvvInjgIHmnKzmnIjvvIh0aGlzTW9udGjvvInjgIHkuIrkuIDmnIjvvIhsYXN0TW9udGjvvInjgIHkuIvkuIDmnIjvvIhuZXh0TW9udGjvvInjgIHmnKzlubTvvIh0aGlzWWVhcu+8ieOAgeWOu+W5tO+8iGxhc3RZZWFy77yJ44CB5piO5bm077yIbmV4dFllYXLvvIlcclxuICAgKiBAZW5fVVMgUXVpY2sgc2VsZWN0aW9uIGJ1dHRvbiwgc3VwcG9ydCB0aGlzV2VlaywgbGFzdFdlZWssIG5leHRXZWVrLCB0aGlzTW9udGgsIGxhc3RNb250aCwgbmV4dE1vbnRoLCB0aGlzWWVhciwgbGFzdFllYXIsIG5leHRZZWFyXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhEYXRhQ29udmVydCgpIHByZXNldDogWERhdGE8WERhdGVSYW5nZVByZXNldD4gPSBbXTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pel5pyf5o+Q56S65L+h5oGvXHJcbiAgICogQGVuX1VTIFBsYWNlaG9sZGVyIG9mIGRhdGUgaW5wdXRcclxuICAgKi9cclxuICBASW5wdXQoKSBvdmVycmlkZSBwbGFjZWhvbGRlcj86IHN0cmluZ1tdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpobXohJpcclxuICAgKiBAZW5fVVMgRm9vdGVyXHJcbiAgICovXHJcbiAgQElucHV0KCkgZXh0cmFGb290ZXI/OiBYVGVtcGxhdGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOeahOaXpeacn1xyXG4gICAqIEBlbl9VUyBEaXNhYmxlZCBkYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWREYXRlPzogWERhdGVQaWNrZXJEaXNhYmxlZERhdGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOeahOaXtumXtFxyXG4gICAqIEBlbl9VUyBEaXNhYmxlZCB0aW1lXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWRUaW1lPzogWERhdGVQaWNrZXJEaXNhYmxlZFRpbWU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueeCueWHu+eahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBOb2RlIGNsaWNrIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG5vZGVFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERhdGVSYW5nZSBPcHRpb25cclxuICogQHVuZG9jdW1lbnQgdHJ1ZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYRGF0ZVJhbmdlT3B0aW9uIGV4dGVuZHMgWEZvcm1PcHRpb24ge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiB0YWIg6ZSu5o6n5Yi25qyh5bqPXHJcbiAgICogQGVuX1VTIFRhYiBrZXkgY29udHJvbCBvcmRlclxyXG4gICAqL1xyXG4gIHRhYmluZGV4PzogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDml6XmnJ/mj5DnpLrkv6Hmga9cclxuICAgKiBAZW5fVVMgUGxhY2Vob2xkZXIgb2YgZGF0ZSBpbnB1dFxyXG4gICAqL1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g56aB55So5pel5pyf55qE6Ieq5a6a5LmJ57G75Z6LXHJcbiAqIEBlbl9VUyDnpoHnlKjml6XmnJ/nmoToh6rlrprkuYnnsbvlnotcclxuICovXHJcbmV4cG9ydCB0eXBlIFhEYXRlUGlja2VyRGlzYWJsZWREYXRlID0gKGN1cnJlbnQ6IERhdGUpID0+IGJvb2xlYW47XHJcblxyXG4vKipcclxuICogQHpoX0NOIOemgeeUqOaXtumXtOeahOiHquWumuS5ieexu+Wei1xyXG4gKiBAZW5fVVMg56aB55So5pe26Ze055qE6Ieq5a6a5LmJ57G75Z6LXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBYRGF0ZVBpY2tlckRpc2FibGVkVGltZSA9ICh0eXBlPzogWERhdGVQaWNrZXJSYW5nVHlwZSkgPT4gWERhdGVQaWNrZXJEaXNhYmxlZFRpbWVGbjtcclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g56aB55So5pe26Ze055qE6Ieq5a6a5LmJ5Ye95pWwXHJcbiAqIEBlbl9VUyDnpoHnlKjml7bpl7TnmoToh6rlrprkuYnlh73mlbBcclxuICovXHJcbmV4cG9ydCB0eXBlIFhEYXRlUGlja2VyRGlzYWJsZWRUaW1lRm4gPSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOWwj+aXtueahOiHquWumuS5ieWHveaVsFxyXG4gICAqIEBlbl9VUyDnpoHnlKjlsI/ml7bnmoToh6rlrprkuYnlh73mlbBcclxuICAgKi9cclxuICBkaXNhYmxlZEhvdXJzPzogKCkgPT4gbnVtYmVyW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOWIhumSn+eahOiHquWumuS5ieWHveaVsFxyXG4gICAqIEBlbl9VUyDnpoHnlKjliIbpkp/nmoToh6rlrprkuYnlh73mlbBcclxuICAgKi9cclxuICBkaXNhYmxlZE1pbnV0ZXM/OiAoKSA9PiBudW1iZXJbXTtcclxuICAvKipcclxuICAgKiBAemhfQ04g56aB55So56eS55qE6Ieq5a6a5LmJ5Ye95pWwXHJcbiAgICogQGVuX1VTIOemgeeUqOenkueahOiHquWumuS5ieWHveaVsFxyXG4gICAqL1xyXG4gIGRpc2FibGVkU2Vjb25kcz86ICgpID0+IG51bWJlcltdO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEB6aF9DTiDlv6vmjbfpgInmi6nmjInpkq5cclxuICogQGVuX1VTIFF1aWNrIHNlbGVjdGlvbiBidXR0b25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWERhdGVQaWNrZXJQcmVzZXQgZXh0ZW5kcyBYSWRlbnRpdHlQcm9wZXJ0eSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiHquWumuS5ieWHveaVsFxyXG4gICAqIEBlbl9VUyBDdXN0b20gZnVuY3Rpb25cclxuICAgKi9cclxuICBmdW5jOiAoKSA9PiBEYXRlO1xyXG59XHJcblxyXG4vKipcclxuICogQHpoX0NOIOW/q+aNt+iMg+WbtOmAieaLqeaMiemSrlxyXG4gKiBAZW5fVVMgUXVpY2sgcmFuZ2Ugc2VsZWN0aW9uIGJ1dHRvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYRGF0ZVJhbmdlUHJlc2V0IGV4dGVuZHMgWElkZW50aXR5UHJvcGVydHkge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoh6rlrprkuYnlh73mlbBcclxuICAgKiBAZW5fVVMgQ3VzdG9tIGZ1bmN0aW9uXHJcbiAgICovXHJcbiAgZnVuYzogKCkgPT4gRGF0ZVtdO1xyXG59XHJcblxyXG4vKipcclxuICogQHpoX0NOIOaXpeacn+mAieaLqeexu+Wei1xyXG4gKiBAZW5fVVMgRGF0ZSBzZWxlY3Rpb24gdHlwZVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgWERhdGVQaWNrZXJUeXBlID1cclxuICB8ICdkYXRlJ1xyXG4gIHwgJ3dlZWsnXHJcbiAgfCAnbW9udGgnXHJcbiAgfCAncXVhcnRlcidcclxuICB8ICd5ZWFyJ1xyXG4gIHwgJ2RhdGUtdGltZSdcclxuICB8ICdkYXRlLWhvdXInXHJcbiAgfCAnZGF0ZS1taW51dGUnO1xyXG5cclxuLyoqXHJcbiAqIEB6aF9DTiDml6XmnJ/mlbDmja7nsbvlnotcclxuICogQGVuX1VTIERhdGUgZGF0YSB0eXBlXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBYRGF0ZVBpY2tlck1vZGVsVHlwZSA9ICdkYXRlJyB8ICdudW1iZXInIHwgJ3N0cmluZyc7XHJcblxyXG4vKipcclxuICogRGF0ZVBpY2tlciBQb3J0YWxcclxuICogQHNlbGVjdG9yIHgtZGF0ZS1waWNrZXItcG9ydGFsXHJcbiAqIEBkZWNvcmF0b3IgY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWERhdGVQaWNrZXJQb3J0YWxQcmVmaXggPSAneC1kYXRlLXBpY2tlci1wb3J0YWwnO1xyXG5cclxuLyoqXHJcbiAqIERhdGVSYW5nZSBQb3J0YWxcclxuICogQHNlbGVjdG9yIHgtZGF0ZS1yYW5nZS1wb3J0YWxcclxuICogQGRlY29yYXRvciBjb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBYRGF0ZVJhbmdlUG9ydGFsUHJlZml4ID0gJ3gtZGF0ZS1yYW5nZS1wb3J0YWwnO1xyXG5cclxuLyoqXHJcbiAqIFBpY2tlckRhdGVcclxuICogQHNlbGVjdG9yIHgtcGlja2VyLWRhdGVcclxuICogQGRlY29yYXRvciBjb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBYUGlja2VyRGF0ZVByZWZpeCA9ICd4LXBpY2tlci1kYXRlJztcclxuXHJcbi8qKlxyXG4gKiBQaWNrZXJEYXRlIFByb3BlcnR5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6IGAke1hQaWNrZXJEYXRlUHJlZml4fS1wcm9wZXJ0eWAsIHRlbXBsYXRlOiAnJyB9KVxyXG5leHBvcnQgY2xhc3MgWFBpY2tlckRhdGVQcm9wZXJ0eSBleHRlbmRzIFhQcm9wZXJ0eSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieaLqeexu+Wei1xyXG4gICAqIEBlbl9VUyBTZWxlY3QgdHlwZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHR5cGU6IFhEYXRlUGlja2VyVHlwZSA9ICdkYXRlJztcclxuICAvKipcclxuICAgKiBAemhfQ04g5pi+56S655qE5pel5pyfXHJcbiAgICogQGVuX1VTIERhdGUgZGlzcGxheWVkXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzcGxheSA9IG5ldyBEYXRlKCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieS4reeahOaXpeacn1xyXG4gICAqIEBlbl9VUyBTZWxlY3RlZCBkYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgbW9kZWw/OiBEYXRlIHwgbnVsbDtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pel5pyf5pi+56S65qih5p2/XHJcbiAgICogQGVuX1VTIERhdGUgZGlzcGxheSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRhdGVUZW1wPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pi+56S65YiH5o2i5oyJ6ZKuXHJcbiAgICogQGVuX1VTIERpc3BsYXkgc3dpdGNoIGJ1dHRvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgc2hvd0hlYWRlcjogWEJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7TpgInmi6lcclxuICAgKiBAZW5fVVMgUmFuZ2UgcGlja2VyXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSByYW5nZVBpY2tlcj86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDkuIrkuIDlubRcclxuICAgKiBAZW5fVVMgTGFzdCB5ZWFyXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBsYXN0WWVhckJ0bjogWEJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDkuIrmnIhcclxuICAgKiBAZW5fVVMgTGFzdCBtb250aFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgbGFzdE1vbnRoQnRuOiBYQm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOS4i+S4gOW5tFxyXG4gICAqIEBlbl9VUyBOZXh0IHllYXJcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIG5leHRZZWFyQnRuOiBYQm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOS4iuaciFxyXG4gICAqIEBlbl9VUyBOZXh0IG1vbnRoXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBuZXh0TW9udGhCdG46IFhCb29sZWFuID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu0IGhvdmVyIOaViOaenFxyXG4gICAqIEBlbl9VUyBSYW5nZSBob3ZlciBzdHlsZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgcmFuZ2VIb3ZlcjogWEJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7Tml6XmnJ9cclxuICAgKiBAZW5fVVMgUmFuZ2UgZGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHJhbmdlVmFsdWU6IChudW1iZXIgfCBudWxsKVtdID0gW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+WJjemAieaLqeeahOaYr+W8gOWniy/nu5PmnZ/ml6XmnJ9cclxuICAgKiBAZW5fVVMgVGhlIGN1cnJlbnQgY2hvaWNlIGlzIHRoZSBzdGFydCAvIGVuZCBkYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmFuZ2VUeXBlITogWERhdGVQaWNrZXJSYW5nVHlwZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g56aB55So55qE5pel5pyfXHJcbiAgICogQGVuX1VTIERpc2FibGVkIGRhdGVcclxuICAgKi9cclxuICBASW5wdXQoKSBkaXNhYmxlZERhdGU/OiBYRGF0ZVBpY2tlckRpc2FibGVkRGF0ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5oup57G75Z6LXHJcbiAgICogQGVuX1VTIFNlbGVjdCB0eXBlXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHR5cGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFhEYXRlUGlja2VyVHlwZT4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5Lit55qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIFNlbGVjdGVkIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7Tlj5jljJbnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgU2NvcGUgY2hhbmdlIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHJhbmdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlW10+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieW5tOeahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBZZWFyIGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSB5ZWFyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieaciOeahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBNb250aCBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgbW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pi+56S65pel5pyf5LqL5Lu2XHJcbiAgICogQGVuX1VTIGRpc3BsYXkgZGF0ZSBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBkaXNwbGF5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7Tml6XmnJ8gbW91c2VlbnRlciDkuovku7ZcclxuICAgKiBAZW5fVVMgRGF0ZSBtb3VzZWVudGVyIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHJhbmdlVGRNb3VzZWVudGVyID0gbmV3IEV2ZW50RW1pdHRlcjxYRGF0ZUNlbGw+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOaXpeacnyBtb3VzZWxlYXZlIOS6i+S7tlxyXG4gICAqIEBlbl9VUyBEYXRlIG1vdXNlbGVhdmUgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcmFuZ2VUZE1vdXNlbGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFhEYXRlQ2VsbD4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05Lit55qE5pel5pyf54K55Ye75LqL5Lu2XHJcbiAgICogQGVuX1VTIFJhbmdlIGRhdGUgY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcmFuZ2VEYXRlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFhEYXRlQ2VsbD4oKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEB6aF9DTiDljZXkuKrml6XmnJ/mlbDmja7lr7nosaFcclxuICogQGVuX1VTIOWNleS4quaXpeacn+aVsOaNruWvueixoVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYRGF0ZUNlbGwge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDml6XmnJ9cclxuICAgKiBAZW5fVVMgRGF0ZVxyXG4gICAqL1xyXG4gIGRhdGU/OiBEYXRlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDkuIrkuKrmnIjmiJbkuIvkuKrmnIjnmoTml6XmnJ9cclxuICAgKiBAZW5fVVMgRGF0ZSBvZiB0aGUgcHJldmlvdXMgb3IgbmV4dCBtb250aFxyXG4gICAqL1xyXG4gIGlzTGFzdE9yTmV4dD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+WkqVxyXG4gICAqIEBlbl9VUyBTYW1lIGRheVxyXG4gICAqL1xyXG4gIGlzTm93PzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5b2T5pyI56ys5LiA5aSpXHJcbiAgICogQGVuX1VTIFRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoXHJcbiAgICovXHJcbiAgaXNGaXJzdERheT86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+aciOacgOWQjuS4gOWkqVxyXG4gICAqIEBlbl9VUyBUaGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoXHJcbiAgICovXHJcbiAgaXNMYXN0RGF5PzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05YaF5pel5pyfXHJcbiAgICogQGVuX1VTIOiMg+WbtOWGheaXpeacn1xyXG4gICAqL1xyXG4gIGlzSW5SYW5nZT86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOWGhSBob3ZlciDpgInkuK1cclxuICAgKiBAZW5fVVMg6IyD5Zu05YaFIGhvdmVyIOmAieS4rVxyXG4gICAqL1xyXG4gIGlzSW5SYW5nZUhvdmVyPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05YaFIGhvdmVyIOW9k+WJjeaXpeacn+W3pui+uVxyXG4gICAqIEBlbl9VUyDojIPlm7TlhoUgaG92ZXIg5b2T5YmN5pel5pyf5bem6L65XHJcbiAgICovXHJcbiAgaXNJblJhbmdlSG92ZXJMZWZ0PzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05YaFIGhvdmVyIOW9k+WJjeaXpeacn+WPs+i+uVxyXG4gICAqIEBlbl9VUyDojIPlm7TlhoUgaG92ZXIg5b2T5YmN5pel5pyf5Y+z6L65XHJcbiAgICovXHJcbiAgaXNJblJhbmdlSG92ZXJSaWdodD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieS4reW8gOWni+W3pui+uVxyXG4gICAqIEBlbl9VUyBSYW5nZSBzdGFydCBsZWZ0XHJcbiAgICovXHJcbiAgaXNSYW5nZVN0YXJ0TGVmdD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieS4reW8gOWni+WPs+i+uVxyXG4gICAqIEBlbl9VUyBSYW5nZSBzdGFydCByaWdodFxyXG4gICAqL1xyXG4gIGlzUmFuZ2VTdGFydFJpZ2h0PzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5Lit57uT5p2f5bem6L65XHJcbiAgICogQGVuX1VTIFJhbmdlIHN0YXJ0IGxlZnRcclxuICAgKi9cclxuICBpc1JhbmdlRW5kTGVmdD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieS4ree7k+adn+WPs+i+uVxyXG4gICAqIEBlbl9VUyBSYW5nZSBzdGFydCByaWdodFxyXG4gICAqL1xyXG4gIGlzUmFuZ2VFbmRSaWdodD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtCBob3ZlclxyXG4gICAqIEBlbl9VUyBSYW5nZSBob3ZlclxyXG4gICAqL1xyXG4gIGlzUmFuZ2VIb3Zlcj86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIGhvdmVyIOW9k+WJjeW8gOWni1xyXG4gICAqIEBlbl9VUyBSYW5nZSBob3ZlciBzdGFydFxyXG4gICAqL1xyXG4gIGlzUmFuZ2VIb3ZlclN0YXJ0PzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04gaG92ZXIg5b2T5YmN57uT5p2fXHJcbiAgICogQGVuX1VTIEVuZCBkYXRlXHJcbiAgICovXHJcbiAgaXNSYW5nZUhvdmVyRW5kPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04gaG92ZXIg5byA5aeL5bem6L65XHJcbiAgICogQGVuX1VTIFJhbmdlIGhvdmVyIHN0YXJ0IGxlZnRcclxuICAgKi9cclxuICBpc1JhbmdlSG92ZXJTdGFydExlZnQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBob3ZlciDlvIDlp4vlj7PovrlcclxuICAgKiBAZW5fVVMgUmFuZ2UgaG92ZXIgc3RhcnQgcmlnaHRcclxuICAgKi9cclxuICBpc1JhbmdlSG92ZXJTdGFydFJpZ2h0PzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04gaG92ZXIg57uT5p2f5bem6L65XHJcbiAgICogQGVuX1VTIFJhbmdlIGhvdmVyIGVuZCBsZWZ0XHJcbiAgICovXHJcbiAgaXNSYW5nZUhvdmVyRW5kTGVmdD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIGhvdmVyIOe7k+adn+WPs+i+uVxyXG4gICAqIEBlbl9VUyBSYW5nZSBob3ZlciBlbmQgcmlnaHRcclxuICAgKi9cclxuICBpc1JhbmdlSG92ZXJFbmRSaWdodD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+WJjemAieS4reaXpeacn1xyXG4gICAqIEBlbl9VUyBDdXJyZW50IHNlbGVjdGVkIGRhdGVcclxuICAgKi9cclxuICBpc0FjdGl2ZT86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOaXpeacn1xyXG4gICAqIEBlbl9VUyBEaXNhYmxlZCBkYXRlXHJcbiAgICovXHJcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOexu+Wei1xyXG4gICAqIEBlbl9VUyBUeXBlXHJcbiAgICovXHJcbiAgdHlwZT86IFhEYXRlUGlja2VyVHlwZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g56ys5Yeg5ZGoXHJcbiAgICogQGVuX1VTIFdlZWtcclxuICAgKi9cclxuICB3ZWVrPzogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogQHpoX0NOIOW9k+WJjemAieaLqeeahOaYr+W8gOWniy/nu5PmnZ/ml6XmnJ9cclxuICogQGVuX1VTIFRoZSBjdXJyZW50IGNob2ljZSBpcyB0aGUgc3RhcnQgLyBlbmQgZGF0ZVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgWERhdGVQaWNrZXJSYW5nVHlwZSA9ICdzdGFydCcgfCAnZW5kJztcclxuXHJcbi8qKlxyXG4gKiBQaWNrZXJNb250aFxyXG4gKiBAc2VsZWN0b3IgeC1waWNrZXItbW9udGhcclxuICogQGRlY29yYXRvciBjb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBYUGlja2VyTW9udGhQcmVmaXggPSAneC1waWNrZXItbW9udGgnO1xyXG5cclxuLyoqXHJcbiAqIFBpY2tlck1vbnRoIFByb3BlcnR5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6IGAke1hQaWNrZXJNb250aFByZWZpeH0tcHJvcGVydHlgLCB0ZW1wbGF0ZTogJycgfSlcclxuZXhwb3J0IGNsYXNzIFhQaWNrZXJNb250aFByb3BlcnR5IGV4dGVuZHMgWFByb3BlcnR5IHtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5oup57G75Z6LXHJcbiAgICogQGVuX1VTIFNlbGVjdCB0eXBlXHJcbiAgICovXHJcbiAgQElucHV0KCkgdHlwZTogWERhdGVQaWNrZXJUeXBlID0gJ2RhdGUnO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrnmoTml6XmnJ9cclxuICAgKiBAZW5fVVMgRGF0ZSBkaXNwbGF5ZWRcclxuICAgKi9cclxuICBASW5wdXQoKSBkaXNwbGF5OiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5Lit55qE5pel5pyfXHJcbiAgICogQGVuX1VTIFNlbGVjdGVkIGRhdGVcclxuICAgKi9cclxuICBASW5wdXQoKSBtb2RlbD86IERhdGUgfCBudWxsO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmnIjku73mmL7npLrmqKHmnb9cclxuICAgKiBAZW5fVVMgTW9udGggZGlzcGxheSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1vbnRoVGVtcD86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuuWIh+aNouaMiemSrlxyXG4gICAqIEBlbl9VUyBEaXNwbGF5IHN3aXRjaCBidXR0b25cclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIHNob3dIZWFkZXI6IFhCb29sZWFuID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu06YCJ5oupXHJcbiAgICogQGVuX1VTIFJhbmdlIHBpY2tlclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgcmFuZ2VQaWNrZXI/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5LiK5LiA5bm0XHJcbiAgICogQGVuX1VTIExhc3QgeWVhclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgbGFzdFllYXJCdG46IFhCb29sZWFuID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5LiL5LiA5bm0XHJcbiAgICogQGVuX1VTIE5leHQgeWVhclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgbmV4dFllYXJCdG46IFhCb29sZWFuID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05pyI5Lu9XHJcbiAgICogQGVuX1VTIFJhbmdlIGRhdGVcclxuICAgKi9cclxuICBASW5wdXQoKSByYW5nZVZhbHVlOiAobnVtYmVyIHwgbnVsbClbXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvZPliY3pgInmi6nnmoTmmK/lvIDlp4sv57uT5p2f5pel5pyfXHJcbiAgICogQGVuX1VTIFRoZSBjdXJyZW50IGNob2ljZSBpcyB0aGUgc3RhcnQgLyBlbmQgZGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHJhbmdlVHlwZSE6IFhEYXRlUGlja2VyUmFuZ1R5cGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOeahOaXpeacn1xyXG4gICAqIEBlbl9VUyBEaXNhYmxlZCBkYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWREYXRlPzogWERhdGVQaWNrZXJEaXNhYmxlZERhdGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieS4reeahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBTZWxlY3RlZCBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBtb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5oup57G75Z6LXHJcbiAgICogQGVuX1VTIFNlbGVjdCB0eXBlXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHR5cGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFhEYXRlUGlja2VyVHlwZT4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05Y+Y5YyW55qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIFNjb3BlIGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSByYW5nZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZVtdPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInlubTnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgWWVhciBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgeWVhckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInmnIjnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgTW9udGggY2hhbmdlIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuuaciOS7veS6i+S7tlxyXG4gICAqIEBlbl9VUyBkaXNwbGF5IGRhdGUgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgZGlzcGxheUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05pyI5Lu9IG1vdXNlZW50ZXIg5LqL5Lu2XHJcbiAgICogQGVuX1VTIERhdGUgbW91c2VlbnRlciBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSByYW5nZVRkTW91c2VlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8WERhdGVDZWxsPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7TmnIjku70gbW91c2VsZWF2ZSDkuovku7ZcclxuICAgKiBAZW5fVVMgRGF0ZSBtb3VzZWxlYXZlIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHJhbmdlVGRNb3VzZWxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxYRGF0ZUNlbGw+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOS4reeahOaciOS7veeCueWHu+S6i+S7tlxyXG4gICAqIEBlbl9VUyBSYW5nZSBkYXRlIGNsaWNrIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHJhbmdlRGF0ZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxYRGF0ZUNlbGw+KCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQaWNrZXJRdWFydGVyXHJcbiAqIEBzZWxlY3RvciB4LXBpY2tlci1xdWFydGVyXHJcbiAqIEBkZWNvcmF0b3IgY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWFBpY2tlclF1YXJ0ZXJQcmVmaXggPSAneC1waWNrZXItcXVhcnRlcic7XHJcblxyXG4vKipcclxuICogUGlja2VyUXVhcnRlciBQcm9wZXJ0eVxyXG4gKi9cclxuQENvbXBvbmVudCh7IHNlbGVjdG9yOiBgJHtYUGlja2VyUXVhcnRlclByZWZpeH0tcHJvcGVydHlgLCB0ZW1wbGF0ZTogJycgfSlcclxuZXhwb3J0IGNsYXNzIFhQaWNrZXJRdWFydGVyUHJvcGVydHkgZXh0ZW5kcyBYUHJvcGVydHkge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInmi6nnsbvlnotcclxuICAgKiBAZW5fVVMgU2VsZWN0IHR5cGVcclxuICAgKi9cclxuICBASW5wdXQoKSB0eXBlOiBYRGF0ZVBpY2tlclR5cGUgPSAnZGF0ZSc7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuueahOaXpeacn1xyXG4gICAqIEBlbl9VUyBEYXRlIGRpc3BsYXllZFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRpc3BsYXk6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInkuK3nmoTml6XmnJ9cclxuICAgKiBAZW5fVVMgU2VsZWN0ZWQgZGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1vZGVsPzogRGF0ZSB8IG51bGw7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWto+W6puaYvuekuuaooeadv1xyXG4gICAqIEBlbl9VUyBNb250aCBkaXNwbGF5IHRlbXBsYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcXVhcnRlclRlbXA/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrliIfmjaLmjInpkq5cclxuICAgKiBAZW5fVVMgRGlzcGxheSBzd2l0Y2ggYnV0dG9uXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBzaG93SGVhZGVyOiBYQm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOmAieaLqVxyXG4gICAqIEBlbl9VUyBSYW5nZSBwaWNrZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIHJhbmdlUGlja2VyPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOS4iuS4gOW5tFxyXG4gICAqIEBlbl9VUyBMYXN0IHllYXJcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIGxhc3RZZWFyQnRuOiBYQm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOS4i+S4gOW5tFxyXG4gICAqIEBlbl9VUyBOZXh0IHllYXJcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIG5leHRZZWFyQnRuOiBYQm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOaciOS7vVxyXG4gICAqIEBlbl9VUyBSYW5nZSBkYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmFuZ2VWYWx1ZTogKG51bWJlciB8IG51bGwpW10gPSBbXTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5b2T5YmN6YCJ5oup55qE5piv5byA5aeLL+e7k+adn+aXpeacn1xyXG4gICAqIEBlbl9VUyBUaGUgY3VycmVudCBjaG9pY2UgaXMgdGhlIHN0YXJ0IC8gZW5kIGRhdGVcclxuICAgKi9cclxuICBASW5wdXQoKSByYW5nZVR5cGUhOiBYRGF0ZVBpY2tlclJhbmdUeXBlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKjnmoTml6XmnJ9cclxuICAgKiBAZW5fVVMgRGlzYWJsZWQgZGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkRGF0ZT86IFhEYXRlUGlja2VyRGlzYWJsZWREYXRlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInkuK3nmoTkuovku7ZcclxuICAgKiBAZW5fVVMgU2VsZWN0ZWQgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieaLqeexu+Wei1xyXG4gICAqIEBlbl9VUyBTZWxlY3QgdHlwZVxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSB0eXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxYRGF0ZVBpY2tlclR5cGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOWPmOWMlueahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBTY29wZSBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcmFuZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVbXT4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5bm055qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIFllYXIgY2hhbmdlIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHllYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5pyI55qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIE1vbnRoIGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBtb250aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrlraPluqbkuovku7ZcclxuICAgKiBAZW5fVVMgZGlzcGxheSBkYXRlIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGRpc3BsYXlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOWto+W6piBtb3VzZWVudGVyIOS6i+S7tlxyXG4gICAqIEBlbl9VUyBEYXRlIG1vdXNlZW50ZXIgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcmFuZ2VUZE1vdXNlZW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFhEYXRlQ2VsbD4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05a2j5bqmIG1vdXNlbGVhdmUg5LqL5Lu2XHJcbiAgICogQGVuX1VTIERhdGUgbW91c2VsZWF2ZSBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSByYW5nZVRkTW91c2VsZWF2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8WERhdGVDZWxsPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7TkuK3nmoTlraPluqbngrnlh7vkuovku7ZcclxuICAgKiBAZW5fVVMgUmFuZ2UgZGF0ZSBjbGljayBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSByYW5nZURhdGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8WERhdGVDZWxsPigpO1xyXG59XHJcblxyXG4vKipcclxuICogRGF0ZVF1YXJ0ZXJcclxuICogQHNlbGVjdG9yIHhEYXRlUXVhcnRlclxyXG4gKiBAZGVjb3JhdG9yIHBpcGVcclxuICovXHJcbmV4cG9ydCBjb25zdCBYRGF0ZVF1YXJ0ZXJQcmVmaXggPSAneERhdGVRdWFydGVyJztcclxuXHJcbi8qKlxyXG4gKiBQaWNrZXJZZWFyXHJcbiAqIEBzZWxlY3RvciB4LXBpY2tlci15ZWFyXHJcbiAqIEBkZWNvcmF0b3IgY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWFBpY2tlclllYXJQcmVmaXggPSAneC1waWNrZXIteWVhcic7XHJcblxyXG4vKipcclxuICogUGlja2VyWWVhciBQcm9wZXJ0eVxyXG4gKi9cclxuQENvbXBvbmVudCh7IHNlbGVjdG9yOiBgJHtYUGlja2VyWWVhclByZWZpeH0tcHJvcGVydHlgLCB0ZW1wbGF0ZTogJycgfSlcclxuZXhwb3J0IGNsYXNzIFhQaWNrZXJZZWFyUHJvcGVydHkgZXh0ZW5kcyBYUHJvcGVydHkge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInmi6nnsbvlnotcclxuICAgKiBAZW5fVVMgU2VsZWN0IHR5cGVcclxuICAgKi9cclxuICBASW5wdXQoKSB0eXBlOiBYRGF0ZVBpY2tlclR5cGUgPSAnZGF0ZSc7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuueahOaXpeacn1xyXG4gICAqIEBlbl9VUyBEYXRlIGRpc3BsYXllZFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRpc3BsYXk6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInkuK3nmoTml6XmnJ9cclxuICAgKiBAZW5fVVMgU2VsZWN0ZWQgZGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1vZGVsPzogRGF0ZSB8IG51bGw7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW5tOS7veaYvuekuuaooeadv1xyXG4gICAqIEBlbl9VUyBNb250aCBkaXNwbGF5IHRlbXBsYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgeWVhclRlbXA/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrliIfmjaLmjInpkq5cclxuICAgKiBAZW5fVVMgRGlzcGxheSBzd2l0Y2ggYnV0dG9uXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBzaG93SGVhZGVyOiBYQm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOmAieaLqVxyXG4gICAqIEBlbl9VUyBSYW5nZSBwaWNrZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIHJhbmdlUGlja2VyPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOS4iuS4gOW5tFxyXG4gICAqIEBlbl9VUyBMYXN0IHllYXJcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIGxhc3RZZWFyQnRuOiBYQm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOS4i+S4gOW5tFxyXG4gICAqIEBlbl9VUyBOZXh0IHllYXJcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIG5leHRZZWFyQnRuOiBYQm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOW5tOS7vVxyXG4gICAqIEBlbl9VUyBSYW5nZSBkYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmFuZ2VWYWx1ZTogKG51bWJlciB8IG51bGwpW10gPSBbXTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5b2T5YmN6YCJ5oup55qE5piv5byA5aeLL+e7k+adn+aXpeacn1xyXG4gICAqIEBlbl9VUyBUaGUgY3VycmVudCBjaG9pY2UgaXMgdGhlIHN0YXJ0IC8gZW5kIGRhdGVcclxuICAgKi9cclxuICBASW5wdXQoKSByYW5nZVR5cGUhOiBYRGF0ZVBpY2tlclJhbmdUeXBlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKjnmoTml6XmnJ9cclxuICAgKiBAZW5fVVMgRGlzYWJsZWQgZGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkRGF0ZT86IFhEYXRlUGlja2VyRGlzYWJsZWREYXRlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInkuK3nmoTkuovku7ZcclxuICAgKiBAZW5fVVMgU2VsZWN0ZWQgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieaLqeexu+Wei1xyXG4gICAqIEBlbl9VUyBTZWxlY3QgdHlwZVxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSB0eXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxYRGF0ZVBpY2tlclR5cGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW8gOWni+W5tOS7veWPmOWMlueahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBTdGFydCB5ZWFyIGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBzdGFydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7Tlj5jljJbnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgU2NvcGUgY2hhbmdlIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHJhbmdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlW10+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieW5tOeahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBZZWFyIGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSB5ZWFyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieaciOeahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBNb250aCBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgbW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pi+56S65pyI5Lu95LqL5Lu2XHJcbiAgICogQGVuX1VTIGRpc3BsYXkgZGF0ZSBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBkaXNwbGF5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7TmnIjku70gbW91c2VlbnRlciDkuovku7ZcclxuICAgKiBAZW5fVVMgRGF0ZSBtb3VzZWVudGVyIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHJhbmdlVGRNb3VzZWVudGVyID0gbmV3IEV2ZW50RW1pdHRlcjxYRGF0ZUNlbGw+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOaciOS7vSBtb3VzZWxlYXZlIOS6i+S7tlxyXG4gICAqIEBlbl9VUyBEYXRlIG1vdXNlbGVhdmUgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcmFuZ2VUZE1vdXNlbGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFhEYXRlQ2VsbD4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05Lit55qE5pyI5Lu954K55Ye75LqL5Lu2XHJcbiAgICogQGVuX1VTIFJhbmdlIGRhdGUgY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcmFuZ2VEYXRlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFhEYXRlQ2VsbD4oKTtcclxufVxyXG4iXX0=
784
+ }] });
785
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIucHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRixPQUFPLEVBQWUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFDOztBQWMxRTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0FBQ2pELE1BQU0seUJBQXlCLEdBQUcsWUFBWSxDQUFDO0FBRS9DOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG9CQUFvQixDQUFDLHlCQUF5QixDQUFDO0lBRHhGOztRQUVFOzs7V0FHRztRQUNNLFNBQUksR0FBRyxLQUFLLENBQWtCLE1BQU0sQ0FBQyxDQUFDO1FBQy9DOzs7V0FHRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksWUFBWSxDQUFDLENBQUM7UUFDckU7OztXQUdHO1FBQ00sY0FBUyxHQUFHLEtBQUssQ0FBb0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDekc7OztXQUdHO1FBQ00sY0FBUyxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsSUFBSSxjQUFjLENBQUMsQ0FBQztRQUM5RTs7O1dBR0c7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFvQixJQUFJLENBQUMsTUFB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VG9Cb29sZWFuLCBYVG9Dc3NQaXhlbFZhbHVlLCBYVG9EYXRhQ29udmVydCB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVJlZiwgQ29tcG9uZW50LCBpbnB1dCwgbW9kZWwsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYRm9ybUNvbnRyb2xGdW5jdGlvbiwgWEZvcm1PcHRpb24gfSBmcm9tICdAbmctbmVzdC91aS9iYXNlLWZvcm0nO1xyXG5pbXBvcnQgdHlwZSB7XHJcbiAgWEJvb2xlYW4sXHJcbiAgWENvcm5lcixcclxuICBYU2l6ZSxcclxuICBYVGVtcGxhdGUsXHJcbiAgWERhdGEsXHJcbiAgWElkZW50aXR5UHJvcGVydHksXHJcbiAgWERpcmVjdGlvbixcclxuICBYQWxpZ24sXHJcbiAgWEp1c3RpZnksXHJcbiAgWE51bWJlclxyXG59IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIERhdGVQaWNrZXJcclxuICogQHNlbGVjdG9yIHgtZGF0ZS1waWNrZXJcclxuICogQGRlY29yYXRvciBjb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBYRGF0ZVBpY2tlclByZWZpeCA9ICd4LWRhdGUtcGlja2VyJztcclxuY29uc3QgWF9EQVRBX1BJQ0tFUl9DT05GSUdfTkFNRSA9ICdkYXRlUGlja2VyJztcclxuXHJcbi8qKlxyXG4gKiBEYXRlUGlja2VyIFByb3BlcnR5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6IGAke1hEYXRlUGlja2VyUHJlZml4fS1wcm9wZXJ0eWAsIHRlbXBsYXRlOiAnJyB9KVxyXG5leHBvcnQgY2xhc3MgWERhdGVQaWNrZXJQcm9wZXJ0eSBleHRlbmRzIFhGb3JtQ29udHJvbEZ1bmN0aW9uKFhfREFUQV9QSUNLRVJfQ09ORklHX05BTUUpIHtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5oup57G75Z6LXHJcbiAgICogQGVuX1VTIFNlbGVjdCB0eXBlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0PFhEYXRlUGlja2VyVHlwZT4oJ2RhdGUnKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5qC85byP5YyW57G75Z6LXHJcbiAgICogQGVuX1VTIEZvcm1hdCB0eXBlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgZm9ybWF0ID0gaW5wdXQ8c3RyaW5nPih0aGlzLmNvbmZpZz8uZm9ybWF0ID8/ICd5eXl5LU1NLWRkJyk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa4hemZpOaMiemSrlxyXG4gICAqIEBlbl9VUyBDbGVhciBidXR0b25cclxuICAgKi9cclxuICByZWFkb25seSBjbGVhcmFibGUgPSBpbnB1dDxib29sZWFuLCBYQm9vbGVhbj4odGhpcy5jb25maWc/LmNsZWFyYWJsZSA/PyB0cnVlLCB7IHRyYW5zZm9ybTogWFRvQm9vbGVhbiB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5bGV56S65pa55L2NXHJcbiAgICogQGVuX1VTIERpc3BsYXkgcG9zaXRpb25cclxuICAgKi9cclxuICByZWFkb25seSBwbGFjZW1lbnQgPSBpbnB1dDxYQ29ybmVyPih0aGlzLmNvbmZpZz8ucGxhY2VtZW50ID8/ICdib3R0b20tc3RhcnQnKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pi+56S66L655qGGXHJcbiAgICogQGVuX1VTIERpc3BsYXkgQm9yZGVyXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgYm9yZGVyZWQgPSBpbnB1dDxib29sZWFuLCBYQm9vbGVhbj4odGhpcy5jb25maWc/LmJvcmRlcmVkID8/IHRydWUsIHsgdHJhbnNmb3JtOiBYVG9Cb29sZWFuIH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlv6vmjbfpgInmi6nmjInpkq7vvIzoh6rlrprkuYnmiJbnm7TmjqXorr7nva7ku4rlpKnvvIh0b2Rhee+8iSzmmKjlpKnvvIh5ZXN0ZXJkYXnvvIks5piO5aSp77yIdG9tb3Jyb3fvvIlcclxuICAgKiBAZW5fVVMgUXVpY2sgc2VsZWN0aW9uIGJ1dHRvbiwgc3VwcG9ydCB0b2RheSwgeWVzdGVyZGF5LCB0b21vcnJvd1xyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHByZXNldCA9IGlucHV0PFhEYXRhPFhEYXRlUGlja2VyUHJlc2V0PiwgWERhdGE8WERhdGVQaWNrZXJQcmVzZXQ+PihbXSwgeyB0cmFuc2Zvcm06IFhUb0RhdGFDb252ZXJ0IH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpobXohJpcclxuICAgKiBAZW5fVVMgRm9vdGVyXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgZXh0cmFGb290ZXIgPSBpbnB1dDxYVGVtcGxhdGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOeahOaXpeacn1xyXG4gICAqIEBlbl9VUyBEaXNhYmxlZCBkYXRlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgZGlzYWJsZWREYXRlID0gaW5wdXQ8WERhdGVQaWNrZXJEaXNhYmxlZERhdGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOeahOaXtumXtFxyXG4gICAqIEBlbl9VUyBEaXNhYmxlZCB0aW1lXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgZGlzYWJsZWRUaW1lID0gaW5wdXQ8WERhdGVQaWNrZXJEaXNhYmxlZFRpbWU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWwuuWvuFxyXG4gICAqIEBlbl9VUyBTaXplXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgc2l6ZSA9IGlucHV0PFhTaXplPih0aGlzLmNvbmZpZz8uc2l6ZSA/PyAnbWVkaXVtJyk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOi+k+WFpeahhueCueWHu+agt+W8j1xyXG4gICAqIEBlbl9VUyBJbnB1dCBwb2ludGVyXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgcG9pbnRlciA9IGlucHV0PGJvb2xlYW4sIFhCb29sZWFuPihmYWxzZSwgeyB0cmFuc2Zvcm06IFhUb0Jvb2xlYW4gfSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOagh+etvlxyXG4gICAqIEBlbl9VUyBMYWJlbFxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOagh+etvuWuveW6plxyXG4gICAqIEBlbl9VUyBMYWJlbCB3aWR0aFxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGxhYmVsV2lkdGggPSBpbnB1dDxzdHJpbmcsIFhOdW1iZXI+KCcnLCB7IHRyYW5zZm9ybTogWFRvQ3NzUGl4ZWxWYWx1ZSB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5qCH562+5paH5a2X5a+56b2Q5pa55byPXHJcbiAgICogQGVuX1VTIExhYmVsIHRleHQgYWxpZ25tZW50IG1ldGhvZFxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGxhYmVsQWxpZ24gPSBpbnB1dDxYQWxpZ24+KCdzdGFydCcpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBmbGV4IOW4g+WxgOS4i+eahOWtkOWFg+e0oOawtOW5s+aOkuWIl+aWueW8j1xyXG4gICAqIEBlbl9VUyBUaGUgbGV2ZWwgb2Ygc3ViLWVsZW1lbnQgbGV2ZWwgYXJyYW5nZW1lbnQgdW5kZXIgZmxleCBsYXlvdXRcclxuICAgKi9cclxuICBvdmVycmlkZSByZWFkb25seSBqdXN0aWZ5ID0gaW5wdXQ8WEp1c3RpZnk+KCdzdGFydCcpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBmbGV4IOW4g+WxgOS4i+eahOWtkOWFg+e0oOWeguebtOaOkuWIl+aWueW8j1xyXG4gICAqIEBlbl9VUyBzdWItZWxlbWVudCB2ZXJ0aWNhbCBhcnJhbmdlbWVudCBtZXRob2QgdW5kZXIgZmxleCBsYXlvdXRcclxuICAgKi9cclxuICBvdmVycmlkZSByZWFkb25seSBhbGlnbiA9IGlucHV0PFhBbGlnbj4oJ3N0YXJ0Jyk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIGZsZXgg5biD5bGA5LiL55qE5a2Q5YWD57Sg5o6S5YiX5pa55ZCRXHJcbiAgICogQGVuX1VTIFRoZSBkaXJlY3Rpb24gb2YgdGhlIHN1Yi1lbGVtZW50IGFycmFuZ2VtZW50IHVuZGVyIGZsZXggbGF5b3V0XHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgZGlyZWN0aW9uID0gaW5wdXQ8WERpcmVjdGlvbj4oJ2NvbHVtbicpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDovpPlhaXmj5DnpLrkv6Hmga9cclxuICAgKiBAZW5fVVMgRW50ZXIgcHJvbXB0IGluZm9ybWF0aW9uXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oJycpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKhcclxuICAgKiBAZW5fVVMgRGlzYWJsZWRcclxuICAgKi9cclxuICBvdmVycmlkZSByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIFhCb29sZWFuPihmYWxzZSwgeyB0cmFuc2Zvcm06IFhUb0Jvb2xlYW4gfSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW/heWhq1xyXG4gICAqIEBlbl9VUyBSZXF1aXJlZFxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHJlcXVpcmVkID0gaW5wdXQ8Ym9vbGVhbiwgWEJvb2xlYW4+KGZhbHNlLCB7IHRyYW5zZm9ybTogWFRvQm9vbGVhbiB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5Y+q6K+7XHJcbiAgICogQGVuX1VTIFJlYWRvbmx5XHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgcmVhZG9ubHkgPSBpbnB1dDxib29sZWFuLCBYQm9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiBYVG9Cb29sZWFuIH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlgLzmqKHmnb9cclxuICAgKiBAZW5fVVMgTm9kZSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHZhbHVlVHBsID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5YC85qih5p2/5Y+C5pWwXHJcbiAgICogQGVuX1VTIE5vZGUgdGVtcGxhdGVcclxuICAgKi9cclxuICBvdmVycmlkZSByZWFkb25seSB2YWx1ZVRwbENvbnRleHQgPSBpbnB1dCgpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDliY3nva7moIfnrb5cclxuICAgKiBAZW5fVVMgQmVmb3JlIGxhYmVsXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgYmVmb3JlID0gaW5wdXQ8WFRlbXBsYXRlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlkI7nva7moIfnrb5cclxuICAgKiBAZW5fVVMgQWZ0ZXIgbGFiZWxcclxuICAgKi9cclxuICBvdmVycmlkZSByZWFkb25seSBhZnRlciA9IGlucHV0PFhUZW1wbGF0ZT4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5q2j5YiZ6aqM6K+B6KeE5YiZXHJcbiAgICogQGVuX1VTIFJlZ3VsYXIgdmVyaWZpY2F0aW9uIHJ1bGVzXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgcGF0dGVybiA9IGlucHV0PFJlZ0V4cCB8IFJlZ0V4cFtdIHwgYW55PihudWxsKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6aqM6K+B5LiN6YCa6L+H5o+Q56S65paH5a2XXHJcbiAgICogQGVuX1VTIFZlcmlmeSBub3QgcGFzcyB0aGUgcHJvbXB0IHRleHRcclxuICAgKi9cclxuICBvdmVycmlkZSByZWFkb25seSBtZXNzYWdlID0gaW5wdXQ8c3RyaW5nIHwgc3RyaW5nW10+KFtdKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5r+A5rS754q25oCBXHJcbiAgICogQGVuX1VTIEFjdGl2YXRpb24gc3RhdGVcclxuICAgKi9cclxuICBvdmVycmlkZSByZWFkb25seSBhY3RpdmUgPSBtb2RlbDxib29sZWFuPihmYWxzZSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOi+k+WFpemqjOivgeWHveaVsFxyXG4gICAqIEBlbl9VUyBFbnRlciB0aGUgdmVyaWZpY2F0aW9uIGZ1bmN0aW9uXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgaW5wdXRWYWxpZGF0b3IgPSBpbnB1dDwodmFsdWU6IGFueSkgPT4gYm9vbGVhbj4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K554K55Ye755qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIE5vZGUgY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICByZWFkb25seSBub2RlRW1pdCA9IG91dHB1dDxudW1iZXI+KCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEYXRlUGlja2VyIE9wdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYRGF0ZVBpY2tlck9wdGlvbiBleHRlbmRzIFhGb3JtT3B0aW9uIHtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5oup57G75Z6LXHJcbiAgICogQGVuX1VTIFNlbGVjdCB0eXBlXHJcbiAgICovXHJcbiAgdHlwZT86IFhEYXRlUGlja2VyVHlwZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5qC85byP5YyW57G75Z6LXHJcbiAgICogQGVuX1VTIEZvcm1hdCB0eXBlXHJcbiAgICovXHJcbiAgZm9ybWF0Pzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmuIXpmaTmjInpkq5cclxuICAgKiBAZW5fVVMgQ2xlYXIgYnV0dG9uXHJcbiAgICovXHJcbiAgY2xlYXJhYmxlPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5bGV56S65pa55L2NXHJcbiAgICogQGVuX1VTIERpc3BsYXkgcG9zaXRpb25cclxuICAgKi9cclxuICBwbGFjZW1lbnQ/OiBYQ29ybmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrovrnmoYZcclxuICAgKiBAZW5fVVMgRGlzcGxheSBCb3JkZXJcclxuICAgKi9cclxuICBib3JkZXJlZD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW/q+aNt+mAieaLqeaMiemSru+8jOiHquWumuS5ieaIluebtOaOpeiuvue9ruS7iuWkqe+8iHRvZGF577yJLOaYqOWkqe+8iHllc3RlcmRhee+8iSzmmI7lpKnvvIh0b21vcnJvd++8iVxyXG4gICAqIEBlbl9VUyBRdWljayBzZWxlY3Rpb24gYnV0dG9uLCBzdXBwb3J0IHRvZGF5LCB5ZXN0ZXJkYXksIHRvbW9ycm93XHJcbiAgICovXHJcbiAgcHJlc2V0PzogWERhdGE8WERhdGVQaWNrZXJQcmVzZXQ+O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpobXohJpcclxuICAgKiBAZW5fVVMgRm9vdGVyXHJcbiAgICovXHJcbiAgZXh0cmFGb290ZXI/OiBYVGVtcGxhdGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOeahOaXpeacn1xyXG4gICAqIEBlbl9VUyBEaXNhYmxlZCBkYXRlXHJcbiAgICovXHJcbiAgZGlzYWJsZWREYXRlPzogWERhdGVQaWNrZXJEaXNhYmxlZERhdGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOeahOaXtumXtFxyXG4gICAqIEBlbl9VUyBEaXNhYmxlZCB0aW1lXHJcbiAgICovXHJcbiAgZGlzYWJsZWRUaW1lPzogWERhdGVQaWNrZXJEaXNhYmxlZFRpbWU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWwuuWvuFxyXG4gICAqIEBlbl9VUyBTaXplXHJcbiAgICovXHJcbiAgc2l6ZT86IFhTaXplO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDovpPlhaXmoYbngrnlh7vmoLflvI9cclxuICAgKiBAZW5fVVMgSW5wdXQgcG9pbnRlclxyXG4gICAqL1xyXG4gIHBvaW50ZXI/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmoIfnrb5cclxuICAgKiBAZW5fVVMgTGFiZWxcclxuICAgKi9cclxuICBsYWJlbD86IHN0cmluZztcclxuICAvKipcclxuICAgKiBAemhfQ04g5qCH562+5a695bqmXHJcbiAgICogQGVuX1VTIExhYmVsIHdpZHRoXHJcbiAgICovXHJcbiAgbGFiZWxXaWR0aD86IHN0cmluZztcclxuICAvKipcclxuICAgKiBAemhfQ04g5qCH562+5paH5a2X5a+56b2Q5pa55byPXHJcbiAgICogQGVuX1VTIExhYmVsIHRleHQgYWxpZ25tZW50IG1ldGhvZFxyXG4gICAqL1xyXG4gIGxhYmVsQWxpZ24/OiBYQWxpZ247XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIGZsZXgg5biD5bGA5LiL55qE5a2Q5YWD57Sg5rC05bmz5o6S5YiX5pa55byPXHJcbiAgICogQGVuX1VTIFRoZSBsZXZlbCBvZiBzdWItZWxlbWVudCBsZXZlbCBhcnJhbmdlbWVudCB1bmRlciBmbGV4IGxheW91dFxyXG4gICAqL1xyXG4gIGp1c3RpZnk/OiBYSnVzdGlmeTtcclxuICAvKipcclxuICAgKiBAemhfQ04gZmxleCDluIPlsYDkuIvnmoTlrZDlhYPntKDlnoLnm7TmjpLliJfmlrnlvI9cclxuICAgKiBAZW5fVVMgc3ViLWVsZW1lbnQgdmVydGljYWwgYXJyYW5nZW1lbnQgbWV0aG9kIHVuZGVyIGZsZXggbGF5b3V0XHJcbiAgICovXHJcbiAgYWxpZ24/OiBYQWxpZ247XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIGZsZXgg5biD5bGA5LiL55qE5a2Q5YWD57Sg5o6S5YiX5pa55ZCRXHJcbiAgICogQGVuX1VTIFRoZSBkaXJlY3Rpb24gb2YgdGhlIHN1Yi1lbGVtZW50IGFycmFuZ2VtZW50IHVuZGVyIGZsZXggbGF5b3V0XHJcbiAgICovXHJcbiAgZGlyZWN0aW9uPzogWERpcmVjdGlvbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6L6T5YWl5o+Q56S65L+h5oGvXHJcbiAgICogQGVuX1VTIEVudGVyIHByb21wdCBpbmZvcm1hdGlvblxyXG4gICAqL1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKhcclxuICAgKiBAZW5fVVMgRGlzYWJsZWRcclxuICAgKi9cclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW/heWhq1xyXG4gICAqIEBlbl9VUyBSZXF1aXJlZFxyXG4gICAqL1xyXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5Y+q6K+7XHJcbiAgICogQGVuX1VTIFJlYWRvbmx5XHJcbiAgICovXHJcbiAgcmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlgLzmqKHmnb9cclxuICAgKiBAZW5fVVMgTm9kZSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIHZhbHVlVHBsPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5YC85qih5p2/5Y+C5pWwXHJcbiAgICogQGVuX1VTIE5vZGUgdGVtcGxhdGVcclxuICAgKi9cclxuICB2YWx1ZVRwbENvbnRleHQ/OiBhbnk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWJjee9ruagh+etvlxyXG4gICAqIEBlbl9VUyBCZWZvcmUgbGFiZWxcclxuICAgKi9cclxuICBiZWZvcmU/OiBYVGVtcGxhdGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWQjue9ruagh+etvlxyXG4gICAqIEBlbl9VUyBBZnRlciBsYWJlbFxyXG4gICAqL1xyXG4gIGFmdGVyPzogWFRlbXBsYXRlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmraPliJnpqozor4Hop4TliJlcclxuICAgKiBAZW5fVVMgUmVndWxhciB2ZXJpZmljYXRpb24gcnVsZXNcclxuICAgKi9cclxuICBwYXR0ZXJuPzogUmVnRXhwIHwgUmVnRXhwW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmqjOivgeS4jemAmui/h+aPkOekuuaWh+Wtl1xyXG4gICAqIEBlbl9VUyBWZXJpZnkgbm90IHBhc3MgdGhlIHByb21wdCB0ZXh0XHJcbiAgICovXHJcbiAgbWVzc2FnZT86IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmv4DmtLvnirbmgIFcclxuICAgKiBAZW5fVVMgQWN0aXZhdGlvbiBzdGF0ZVxyXG4gICAqL1xyXG4gIGFjdGl2ZT86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOi+k+WFpemqjOivgeWHveaVsFxyXG4gICAqIEBlbl9VUyBFbnRlciB0aGUgdmVyaWZpY2F0aW9uIGZ1bmN0aW9uXHJcbiAgICovXHJcbiAgaW5wdXRWYWxpZGF0b3I/OiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K554K55Ye755qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIE5vZGUgY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICBub2RlRW1pdD86ICh2YWx1ZTogbnVtYmVyKSA9PiB2b2lkO1xyXG59XHJcblxyXG4vKipcclxuICogRGF0ZVJhbmdlXHJcbiAqIEBzZWxlY3RvciB4LWRhdGUtcmFuZ2VcclxuICogQGRlY29yYXRvciBjb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBYRGF0ZVJhbmdlUHJlZml4ID0gJ3gtZGF0ZS1yYW5nZSc7XHJcbmNvbnN0IFhfREFUQV9SQU5HRV9DT05GSUdfTkFNRSA9ICdkYXRlUmFuZ2UnO1xyXG5cclxuLyoqXHJcbiAqIERhdGVSYW5nZSBQcm9wZXJ0eVxyXG4gKi9cclxuQENvbXBvbmVudCh7IHNlbGVjdG9yOiBgJHtYRGF0ZVJhbmdlUHJlZml4fS1wcm9wZXJ0eWAsIHRlbXBsYXRlOiAnJyB9KVxyXG5leHBvcnQgY2xhc3MgWERhdGVSYW5nZVByb3BlcnR5IGV4dGVuZHMgWEZvcm1Db250cm9sRnVuY3Rpb24oWF9EQVRBX1JBTkdFX0NPTkZJR19OQU1FKSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieaLqeexu+Wei1xyXG4gICAqIEBlbl9VUyBTZWxlY3QgdHlwZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBpbnB1dDxYRGF0ZVBpY2tlclR5cGU+KCdkYXRlJyk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOagvOW8j+WMluexu+Wei1xyXG4gICAqIEBlbl9VUyBGb3JtYXQgdHlwZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGZvcm1hdCA9IGlucHV0PHN0cmluZz4odGhpcy5jb25maWc/LmZvcm1hdCA/PyAneXl5eS1NTS1kZCcpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmuIXpmaTmjInpkq5cclxuICAgKiBAZW5fVVMgQ2xlYXIgYnV0dG9uXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgY2xlYXJhYmxlID0gaW5wdXQ8Ym9vbGVhbiwgWEJvb2xlYW4+KHRoaXMuY29uZmlnPy5jbGVhcmFibGUgPz8gdHJ1ZSwgeyB0cmFuc2Zvcm06IFhUb0Jvb2xlYW4gfSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWxleekuuaWueS9jVxyXG4gICAqIEBlbl9VUyBEaXNwbGF5IHBvc2l0aW9uXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcGxhY2VtZW50ID0gaW5wdXQ8WENvcm5lcj4odGhpcy5jb25maWc/LnBsYWNlbWVudCA/PyAnYm90dG9tLXN0YXJ0Jyk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuui+ueahhlxyXG4gICAqIEBlbl9VUyBEaXNwbGF5IEJvcmRlclxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGJvcmRlcmVkID0gaW5wdXQ8Ym9vbGVhbiwgWEJvb2xlYW4+KHRoaXMuY29uZmlnPy5ib3JkZXJlZCA/PyB0cnVlLCB7IHRyYW5zZm9ybTogWFRvQm9vbGVhbiB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5b+r5o236YCJ5oup5oyJ6ZKu77yM6Ieq5a6a5LmJ5oiW55u05o6l6K6+572u5pys5ZGo77yIdGhpc1dlZWvvvInjgIHkuIrlkajvvIhsYXN0V2Vla++8ieOAgeS4i+WRqO+8iG5leHRXZWVr77yJ44CB5pys5pyI77yIdGhpc01vbnRo77yJ44CB5LiK5LiA5pyI77yIbGFzdE1vbnRo77yJ44CB5LiL5LiA5pyI77yIbmV4dE1vbnRo77yJ44CB5pys5bm077yIdGhpc1llYXLvvInjgIHljrvlubTvvIhsYXN0WWVhcu+8ieOAgeaYjuW5tO+8iG5leHRZZWFy77yJXHJcbiAgICogQGVuX1VTIFF1aWNrIHNlbGVjdGlvbiBidXR0b24sIHN1cHBvcnQgdGhpc1dlZWssIGxhc3RXZWVrLCBuZXh0V2VlaywgdGhpc01vbnRoLCBsYXN0TW9udGgsIG5leHRNb250aCwgdGhpc1llYXIsIGxhc3RZZWFyLCBuZXh0WWVhclxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHByZXNldCA9IGlucHV0PFhEYXRhPFhEYXRlUmFuZ2VQcmVzZXQ+LCBYRGF0YTxYRGF0ZVJhbmdlUHJlc2V0Pj4oW10sIHsgdHJhbnNmb3JtOiBYVG9EYXRhQ29udmVydCB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6aG16ISaXHJcbiAgICogQGVuX1VTIEZvb3RlclxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGV4dHJhRm9vdGVyID0gaW5wdXQ8WFRlbXBsYXRlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKjnmoTml6XmnJ9cclxuICAgKiBAZW5fVVMgRGlzYWJsZWQgZGF0ZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGRpc2FibGVkRGF0ZSA9IGlucHV0PFhEYXRlUGlja2VyRGlzYWJsZWREYXRlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKjnmoTml7bpl7RcclxuICAgKiBAZW5fVVMgRGlzYWJsZWQgdGltZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGRpc2FibGVkVGltZSA9IGlucHV0PFhEYXRlUGlja2VyRGlzYWJsZWRUaW1lPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsLrlr7hcclxuICAgKiBAZW5fVVMgU2l6ZVxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHNpemUgPSBpbnB1dDxYU2l6ZT4odGhpcy5jb25maWc/LnNpemUgPz8gJ21lZGl1bScpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDovpPlhaXmoYbngrnlh7vmoLflvI9cclxuICAgKiBAZW5fVVMgSW5wdXQgcG9pbnRlclxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHBvaW50ZXIgPSBpbnB1dDxib29sZWFuLCBYQm9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiBYVG9Cb29sZWFuIH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmoIfnrb5cclxuICAgKiBAZW5fVVMgTGFiZWxcclxuICAgKi9cclxuICBvdmVycmlkZSByZWFkb25seSBsYWJlbCA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmoIfnrb7lrr3luqZcclxuICAgKiBAZW5fVVMgTGFiZWwgd2lkdGhcclxuICAgKi9cclxuICBvdmVycmlkZSByZWFkb25seSBsYWJlbFdpZHRoID0gaW5wdXQ8c3RyaW5nLCBYTnVtYmVyPignJywgeyB0cmFuc2Zvcm06IFhUb0Nzc1BpeGVsVmFsdWUgfSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOagh+etvuaWh+Wtl+Wvuem9kOaWueW8j1xyXG4gICAqIEBlbl9VUyBMYWJlbCB0ZXh0IGFsaWdubWVudCBtZXRob2RcclxuICAgKi9cclxuICBvdmVycmlkZSByZWFkb25seSBsYWJlbEFsaWduID0gaW5wdXQ8WEFsaWduPignc3RhcnQnKTtcclxuICAvKipcclxuICAgKiBAemhfQ04gZmxleCDluIPlsYDkuIvnmoTlrZDlhYPntKDmsLTlubPmjpLliJfmlrnlvI9cclxuICAgKiBAZW5fVVMgVGhlIGxldmVsIG9mIHN1Yi1lbGVtZW50IGxldmVsIGFycmFuZ2VtZW50IHVuZGVyIGZsZXggbGF5b3V0XHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkganVzdGlmeSA9IGlucHV0PFhKdXN0aWZ5Pignc3RhcnQnKTtcclxuICAvKipcclxuICAgKiBAemhfQ04gZmxleCDluIPlsYDkuIvnmoTlrZDlhYPntKDlnoLnm7TmjpLliJfmlrnlvI9cclxuICAgKiBAZW5fVVMgc3ViLWVsZW1lbnQgdmVydGljYWwgYXJyYW5nZW1lbnQgbWV0aG9kIHVuZGVyIGZsZXggbGF5b3V0XHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgYWxpZ24gPSBpbnB1dDxYQWxpZ24+KCdzdGFydCcpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBmbGV4IOW4g+WxgOS4i+eahOWtkOWFg+e0oOaOkuWIl+aWueWQkVxyXG4gICAqIEBlbl9VUyBUaGUgZGlyZWN0aW9uIG9mIHRoZSBzdWItZWxlbWVudCBhcnJhbmdlbWVudCB1bmRlciBmbGV4IGxheW91dFxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGRpcmVjdGlvbiA9IGlucHV0PFhEaXJlY3Rpb24+KCdjb2x1bW4nKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6L6T5YWl5o+Q56S65L+h5oGvXHJcbiAgICogQGVuX1VTIEVudGVyIHByb21wdCBpbmZvcm1hdGlvblxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nIHwgc3RyaW5nW10+KCcnKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g56aB55SoXHJcbiAgICogQGVuX1VTIERpc2FibGVkXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuLCBYQm9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiBYVG9Cb29sZWFuIH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlv4XloatcclxuICAgKiBAZW5fVVMgUmVxdWlyZWRcclxuICAgKi9cclxuICBvdmVycmlkZSByZWFkb25seSByZXF1aXJlZCA9IGlucHV0PGJvb2xlYW4sIFhCb29sZWFuPihmYWxzZSwgeyB0cmFuc2Zvcm06IFhUb0Jvb2xlYW4gfSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWPquivu1xyXG4gICAqIEBlbl9VUyBSZWFkb25seVxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbiwgWEJvb2xlYW4+KGZhbHNlLCB7IHRyYW5zZm9ybTogWFRvQm9vbGVhbiB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5YC85qih5p2/XHJcbiAgICogQGVuX1VTIE5vZGUgdGVtcGxhdGVcclxuICAgKi9cclxuICBvdmVycmlkZSByZWFkb25seSB2YWx1ZVRwbCA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWAvOaooeadv+WPguaVsFxyXG4gICAqIEBlbl9VUyBOb2RlIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgdmFsdWVUcGxDb250ZXh0ID0gaW5wdXQoKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5YmN572u5qCH562+XHJcbiAgICogQGVuX1VTIEJlZm9yZSBsYWJlbFxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGJlZm9yZSA9IGlucHV0PFhUZW1wbGF0ZT4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5ZCO572u5qCH562+XHJcbiAgICogQGVuX1VTIEFmdGVyIGxhYmVsXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgYWZ0ZXIgPSBpbnB1dDxYVGVtcGxhdGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOato+WImemqjOivgeinhOWImVxyXG4gICAqIEBlbl9VUyBSZWd1bGFyIHZlcmlmaWNhdGlvbiBydWxlc1xyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHBhdHRlcm4gPSBpbnB1dDxSZWdFeHAgfCBSZWdFeHBbXSB8IGFueT4obnVsbCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmqjOivgeS4jemAmui/h+aPkOekuuaWh+Wtl1xyXG4gICAqIEBlbl9VUyBWZXJpZnkgbm90IHBhc3MgdGhlIHByb21wdCB0ZXh0XHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgbWVzc2FnZSA9IGlucHV0PHN0cmluZyB8IHN0cmluZ1tdPihbXSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOa/gOa0u+eKtuaAgVxyXG4gICAqIEBlbl9VUyBBY3RpdmF0aW9uIHN0YXRlXHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgYWN0aXZlID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDovpPlhaXpqozor4Hlh73mlbBcclxuICAgKiBAZW5fVVMgRW50ZXIgdGhlIHZlcmlmaWNhdGlvbiBmdW5jdGlvblxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGlucHV0VmFsaWRhdG9yID0gaW5wdXQ8KHZhbHVlOiBhbnkpID0+IGJvb2xlYW4+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueeCueWHu+eahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBOb2RlIGNsaWNrIGV2ZW50XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgbm9kZUVtaXQgPSBvdXRwdXQ8bnVtYmVyW10+KCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEYXRlUmFuZ2UgT3B0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhEYXRlUmFuZ2VPcHRpb24gZXh0ZW5kcyBYRm9ybU9wdGlvbiB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieaLqeexu+Wei1xyXG4gICAqIEBlbl9VUyBTZWxlY3QgdHlwZVxyXG4gICAqL1xyXG4gIHR5cGU/OiBYRGF0ZVBpY2tlclR5cGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOagvOW8j+WMluexu+Wei1xyXG4gICAqIEBlbl9VUyBGb3JtYXQgdHlwZVxyXG4gICAqL1xyXG4gIGZvcm1hdD86IHN0cmluZztcclxuICAvKipcclxuICAgKiBAemhfQ04g5riF6Zmk5oyJ6ZKuXHJcbiAgICogQGVuX1VTIENsZWFyIGJ1dHRvblxyXG4gICAqL1xyXG4gIGNsZWFyYWJsZT86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWxleekuuaWueS9jVxyXG4gICAqIEBlbl9VUyBEaXNwbGF5IHBvc2l0aW9uXHJcbiAgICovXHJcbiAgcGxhY2VtZW50PzogWENvcm5lcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pi+56S66L655qGGXHJcbiAgICogQGVuX1VTIERpc3BsYXkgQm9yZGVyXHJcbiAgICovXHJcbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlv6vmjbfpgInmi6nmjInpkq7vvIzoh6rlrprkuYnmiJbnm7TmjqXorr7nva7mnKzlkajvvIh0aGlzV2Vla++8ieOAgeS4iuWRqO+8iGxhc3RXZWVr77yJ44CB5LiL5ZGo77yIbmV4dFdlZWvvvInjgIHmnKzmnIjvvIh0aGlzTW9udGjvvInjgIHkuIrkuIDmnIjvvIhsYXN0TW9udGjvvInjgIHkuIvkuIDmnIjvvIhuZXh0TW9udGjvvInjgIHmnKzlubTvvIh0aGlzWWVhcu+8ieOAgeWOu+W5tO+8iGxhc3RZZWFy77yJ44CB5piO5bm077yIbmV4dFllYXLvvIlcclxuICAgKiBAZW5fVVMgUXVpY2sgc2VsZWN0aW9uIGJ1dHRvbiwgc3VwcG9ydCB0aGlzV2VlaywgbGFzdFdlZWssIG5leHRXZWVrLCB0aGlzTW9udGgsIGxhc3RNb250aCwgbmV4dE1vbnRoLCB0aGlzWWVhciwgbGFzdFllYXIsIG5leHRZZWFyXHJcbiAgICovXHJcbiAgcHJlc2V0PzogWERhdGE8WERhdGVSYW5nZVByZXNldD47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmhteiEmlxyXG4gICAqIEBlbl9VUyBGb290ZXJcclxuICAgKi9cclxuICBleHRyYUZvb3Rlcj86IFhUZW1wbGF0ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g56aB55So55qE5pel5pyfXHJcbiAgICogQGVuX1VTIERpc2FibGVkIGRhdGVcclxuICAgKi9cclxuICBkaXNhYmxlZERhdGU/OiBYRGF0ZVBpY2tlckRpc2FibGVkRGF0ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g56aB55So55qE5pe26Ze0XHJcbiAgICogQGVuX1VTIERpc2FibGVkIHRpbWVcclxuICAgKi9cclxuICBkaXNhYmxlZFRpbWU/OiBYRGF0ZVBpY2tlckRpc2FibGVkVGltZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5bC65a+4XHJcbiAgICogQGVuX1VTIFNpemVcclxuICAgKi9cclxuICBzaXplPzogWFNpemU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOi+k+WFpeahhueCueWHu+agt+W8j1xyXG4gICAqIEBlbl9VUyBJbnB1dCBwb2ludGVyXHJcbiAgICovXHJcbiAgcG9pbnRlcj86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOagh+etvlxyXG4gICAqIEBlbl9VUyBMYWJlbFxyXG4gICAqL1xyXG4gIGxhYmVsPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmoIfnrb7lrr3luqZcclxuICAgKiBAZW5fVVMgTGFiZWwgd2lkdGhcclxuICAgKi9cclxuICBsYWJlbFdpZHRoPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmoIfnrb7mloflrZflr7npvZDmlrnlvI9cclxuICAgKiBAZW5fVVMgTGFiZWwgdGV4dCBhbGlnbm1lbnQgbWV0aG9kXHJcbiAgICovXHJcbiAgbGFiZWxBbGlnbj86IFhBbGlnbjtcclxuICAvKipcclxuICAgKiBAemhfQ04gZmxleCDluIPlsYDkuIvnmoTlrZDlhYPntKDmsLTlubPmjpLliJfmlrnlvI9cclxuICAgKiBAZW5fVVMgVGhlIGxldmVsIG9mIHN1Yi1lbGVtZW50IGxldmVsIGFycmFuZ2VtZW50IHVuZGVyIGZsZXggbGF5b3V0XHJcbiAgICovXHJcbiAganVzdGlmeT86IFhKdXN0aWZ5O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBmbGV4IOW4g+WxgOS4i+eahOWtkOWFg+e0oOWeguebtOaOkuWIl+aWueW8j1xyXG4gICAqIEBlbl9VUyBzdWItZWxlbWVudCB2ZXJ0aWNhbCBhcnJhbmdlbWVudCBtZXRob2QgdW5kZXIgZmxleCBsYXlvdXRcclxuICAgKi9cclxuICBhbGlnbj86IFhBbGlnbjtcclxuICAvKipcclxuICAgKiBAemhfQ04gZmxleCDluIPlsYDkuIvnmoTlrZDlhYPntKDmjpLliJfmlrnlkJFcclxuICAgKiBAZW5fVVMgVGhlIGRpcmVjdGlvbiBvZiB0aGUgc3ViLWVsZW1lbnQgYXJyYW5nZW1lbnQgdW5kZXIgZmxleCBsYXlvdXRcclxuICAgKi9cclxuICBkaXJlY3Rpb24/OiBYRGlyZWN0aW9uO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDovpPlhaXmj5DnpLrkv6Hmga9cclxuICAgKiBAZW5fVVMgRW50ZXIgcHJvbXB0IGluZm9ybWF0aW9uXHJcbiAgICovXHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICAvKipcclxuICAgKiBAemhfQ04g56aB55SoXHJcbiAgICogQGVuX1VTIERpc2FibGVkXHJcbiAgICovXHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlv4XloatcclxuICAgKiBAZW5fVVMgUmVxdWlyZWRcclxuICAgKi9cclxuICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWPquivu1xyXG4gICAqIEBlbl9VUyBSZWFkb25seVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5YC85qih5p2/XHJcbiAgICogQGVuX1VTIE5vZGUgdGVtcGxhdGVcclxuICAgKi9cclxuICB2YWx1ZVRwbD86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWAvOaooeadv+WPguaVsFxyXG4gICAqIEBlbl9VUyBOb2RlIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgdmFsdWVUcGxDb250ZXh0PzogYW55O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDliY3nva7moIfnrb5cclxuICAgKiBAZW5fVVMgQmVmb3JlIGxhYmVsXHJcbiAgICovXHJcbiAgYmVmb3JlPzogWFRlbXBsYXRlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlkI7nva7moIfnrb5cclxuICAgKiBAZW5fVVMgQWZ0ZXIgbGFiZWxcclxuICAgKi9cclxuICBhZnRlcj86IFhUZW1wbGF0ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5q2j5YiZ6aqM6K+B6KeE5YiZXHJcbiAgICogQGVuX1VTIFJlZ3VsYXIgdmVyaWZpY2F0aW9uIHJ1bGVzXHJcbiAgICovXHJcbiAgcGF0dGVybj86IFJlZ0V4cCB8IFJlZ0V4cFtdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpqozor4HkuI3pgJrov4fmj5DnpLrmloflrZdcclxuICAgKiBAZW5fVVMgVmVyaWZ5IG5vdCBwYXNzIHRoZSBwcm9tcHQgdGV4dFxyXG4gICAqL1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5r+A5rS754q25oCBXHJcbiAgICogQGVuX1VTIEFjdGl2YXRpb24gc3RhdGVcclxuICAgKi9cclxuICBhY3RpdmU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDovpPlhaXpqozor4Hlh73mlbBcclxuICAgKiBAZW5fVVMgRW50ZXIgdGhlIHZlcmlmaWNhdGlvbiBmdW5jdGlvblxyXG4gICAqL1xyXG4gIGlucHV0VmFsaWRhdG9yPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueeCueWHu+eahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBOb2RlIGNsaWNrIGV2ZW50XHJcbiAgICovXHJcbiAgbm9kZUVtaXQ6ICh2YWx1ZTogbnVtYmVyW10pID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g56aB55So5pel5pyf55qE6Ieq5a6a5LmJ57G75Z6LXHJcbiAqIEBlbl9VUyBDdXN0b20gdHlwZSBvZiBkaXNhYmxlZCBkYXRlXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBYRGF0ZVBpY2tlckRpc2FibGVkRGF0ZSA9IChjdXJyZW50OiBEYXRlKSA9PiBib29sZWFuO1xyXG5cclxuLyoqXHJcbiAqIEB6aF9DTiDnpoHnlKjml7bpl7TnmoToh6rlrprkuYnnsbvlnotcclxuICogQGVuX1VTIEN1c3RvbSB0eXBlIG9mIGRpc2FibGUgdGltZVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgWERhdGVQaWNrZXJEaXNhYmxlZFRpbWUgPSAodHlwZT86IFhEYXRlUGlja2VyUmFuZ1R5cGUpID0+IFhEYXRlUGlja2VyRGlzYWJsZWRUaW1lRm47XHJcblxyXG4vKipcclxuICogQHpoX0NOIOemgeeUqOaXtumXtOeahOiHquWumuS5ieWHveaVsFxyXG4gKiBAZW5fVVMgQ3VzdG9tIGZ1bmN0aW9uIG9mIGRpc2FibGUgdGltZVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgWERhdGVQaWNrZXJEaXNhYmxlZFRpbWVGbiA9IHtcclxuICAvKipcclxuICAgKiBAemhfQ04g56aB55So5bCP5pe255qE6Ieq5a6a5LmJ5Ye95pWwXHJcbiAgICogQGVuX1VTIERpc2FibGUgaG91ciBjdXN0b20gZnVuY3Rpb25cclxuICAgKi9cclxuICBkaXNhYmxlZEhvdXJzPzogKCkgPT4gbnVtYmVyW107XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOWIhumSn+eahOiHquWumuS5ieWHveaVsFxyXG4gICAqIEBlbl9VUyBEaXNhYmxlIHRoZSBjdXN0b20gZnVuY3Rpb24gb2YgdGhlIG1pbnV0ZVxyXG4gICAqL1xyXG4gIGRpc2FibGVkTWludXRlcz86ICgpID0+IG51bWJlcltdO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKjnp5LnmoToh6rlrprkuYnlh73mlbBcclxuICAgKiBAZW5fVVMgQ3VzdG9tIGZ1bmN0aW9uIG9mIGRpc2FibGUgc2Vjb25kc1xyXG4gICAqL1xyXG4gIGRpc2FibGVkU2Vjb25kcz86ICgpID0+IG51bWJlcltdO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEB6aF9DTiDlv6vmjbfpgInmi6nmjInpkq5cclxuICogQGVuX1VTIFF1aWNrIHNlbGVjdGlvbiBidXR0b25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWERhdGVQaWNrZXJQcmVzZXQgZXh0ZW5kcyBYSWRlbnRpdHlQcm9wZXJ0eSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiHquWumuS5ieWHveaVsFxyXG4gICAqIEBlbl9VUyBDdXN0b20gZnVuY3Rpb25cclxuICAgKi9cclxuICBmdW5jOiAoKSA9PiBEYXRlO1xyXG59XHJcblxyXG4vKipcclxuICogQHpoX0NOIOW/q+aNt+iMg+WbtOmAieaLqeaMiemSrlxyXG4gKiBAZW5fVVMgUXVpY2sgcmFuZ2Ugc2VsZWN0aW9uIGJ1dHRvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYRGF0ZVJhbmdlUHJlc2V0IGV4dGVuZHMgWElkZW50aXR5UHJvcGVydHkge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoh6rlrprkuYnlh73mlbBcclxuICAgKiBAZW5fVVMgQ3VzdG9tIGZ1bmN0aW9uXHJcbiAgICovXHJcbiAgZnVuYzogKCkgPT4gRGF0ZVtdO1xyXG59XHJcblxyXG4vKipcclxuICogQHpoX0NOIOaXpeacn+mAieaLqeexu+Wei1xyXG4gKiBAZW5fVVMgRGF0ZSBzZWxlY3Rpb24gdHlwZVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgWERhdGVQaWNrZXJUeXBlID1cclxuICB8ICdkYXRlJ1xyXG4gIHwgJ3dlZWsnXHJcbiAgfCAnbW9udGgnXHJcbiAgfCAncXVhcnRlcidcclxuICB8ICd5ZWFyJ1xyXG4gIHwgJ2RhdGUtdGltZSdcclxuICB8ICdkYXRlLWhvdXInXHJcbiAgfCAnZGF0ZS1taW51dGUnO1xyXG5cclxuLyoqXHJcbiAqIEB6aF9DTiDml6XmnJ/mlbDmja7nsbvlnotcclxuICogQGVuX1VTIERhdGUgZGF0YSB0eXBlXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBYRGF0ZVBpY2tlck1vZGVsVHlwZSA9ICdkYXRlJyB8ICdudW1iZXInIHwgJ3N0cmluZyc7XHJcblxyXG4vKipcclxuICogRGF0ZVBpY2tlciBQb3J0YWxcclxuICogQHNlbGVjdG9yIHgtZGF0ZS1waWNrZXItcG9ydGFsXHJcbiAqIEBkZWNvcmF0b3IgY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWERhdGVQaWNrZXJQb3J0YWxQcmVmaXggPSAneC1kYXRlLXBpY2tlci1wb3J0YWwnO1xyXG5cclxuLyoqXHJcbiAqIERhdGVSYW5nZSBQb3J0YWxcclxuICogQHNlbGVjdG9yIHgtZGF0ZS1yYW5nZS1wb3J0YWxcclxuICogQGRlY29yYXRvciBjb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBYRGF0ZVJhbmdlUG9ydGFsUHJlZml4ID0gJ3gtZGF0ZS1yYW5nZS1wb3J0YWwnO1xyXG5cclxuLyoqXHJcbiAqIFBpY2tlckRhdGVcclxuICogQHNlbGVjdG9yIHgtcGlja2VyLWRhdGVcclxuICogQGRlY29yYXRvciBjb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBYUGlja2VyRGF0ZVByZWZpeCA9ICd4LXBpY2tlci1kYXRlJztcclxuXHJcbi8qKlxyXG4gKiBQaWNrZXJEYXRlIFByb3BlcnR5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6IGAke1hQaWNrZXJEYXRlUHJlZml4fS1wcm9wZXJ0eWAsIHRlbXBsYXRlOiAnJyB9KVxyXG5leHBvcnQgY2xhc3MgWFBpY2tlckRhdGVQcm9wZXJ0eSBleHRlbmRzIFhQcm9wZXJ0eSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieaLqeexu+Wei1xyXG4gICAqIEBlbl9VUyBTZWxlY3QgdHlwZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBtb2RlbDxYRGF0ZVBpY2tlclR5cGU+KCdkYXRlJyk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuueahOaXpeacn1xyXG4gICAqIEBlbl9VUyBEYXRlIGRpc3BsYXllZFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGRpc3BsYXkgPSBtb2RlbDxEYXRlPihuZXcgRGF0ZSgpKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5Lit55qE5pel5pyfXHJcbiAgICogQGVuX1VTIFNlbGVjdGVkIGRhdGVcclxuICAgKi9cclxuICByZWFkb25seSBtb2RlbCA9IG1vZGVsPERhdGUgfCBudWxsPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDml6XmnJ/mmL7npLrmqKHmnb9cclxuICAgKiBAZW5fVVMgRGF0ZSBkaXNwbGF5IHRlbXBsYXRlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgZGF0ZVRlbXAgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrliIfmjaLmjInpkq5cclxuICAgKiBAZW5fVVMgRGlzcGxheSBzd2l0Y2ggYnV0dG9uXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgc2hvd0hlYWRlciA9IGlucHV0PGJvb2xlYW4sIFhCb29sZWFuPih0cnVlLCB7IHRyYW5zZm9ybTogWFRvQm9vbGVhbiB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu06YCJ5oupXHJcbiAgICogQGVuX1VTIFJhbmdlIHBpY2tlclxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHJhbmdlUGlja2VyID0gaW5wdXQ8Ym9vbGVhbiwgWEJvb2xlYW4+KGZhbHNlLCB7IHRyYW5zZm9ybTogWFRvQm9vbGVhbiB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5LiK5LiA5bm0XHJcbiAgICogQGVuX1VTIExhc3QgeWVhclxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGxhc3RZZWFyQnRuID0gaW5wdXQ8Ym9vbGVhbiwgWEJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiBYVG9Cb29sZWFuIH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDkuIrmnIhcclxuICAgKiBAZW5fVVMgTGFzdCBtb250aFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGxhc3RNb250aEJ0biA9IGlucHV0PGJvb2xlYW4sIFhCb29sZWFuPih0cnVlLCB7IHRyYW5zZm9ybTogWFRvQm9vbGVhbiB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5LiL5LiA5bm0XHJcbiAgICogQGVuX1VTIE5leHQgeWVhclxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IG5leHRZZWFyQnRuID0gaW5wdXQ8Ym9vbGVhbiwgWEJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiBYVG9Cb29sZWFuIH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDkuIrmnIhcclxuICAgKiBAZW5fVVMgTmV4dCBtb250aFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IG5leHRNb250aEJ0biA9IGlucHV0PGJvb2xlYW4sIFhCb29sZWFuPih0cnVlLCB7IHRyYW5zZm9ybTogWFRvQm9vbGVhbiB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu0IGhvdmVyIOaViOaenFxyXG4gICAqIEBlbl9VUyBSYW5nZSBob3ZlciBzdHlsZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHJhbmdlSG92ZXIgPSBpbnB1dDxib29sZWFuLCBYQm9vbGVhbj4odHJ1ZSwgeyB0cmFuc2Zvcm06IFhUb0Jvb2xlYW4gfSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOaXpeacn1xyXG4gICAqIEBlbl9VUyBSYW5nZSBkYXRlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcmFuZ2VWYWx1ZSA9IGlucHV0PChudW1iZXIgfCBudWxsKVtdPihbXSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+WJjemAieaLqeeahOaYr+W8gOWniy/nu5PmnZ/ml6XmnJ9cclxuICAgKiBAZW5fVVMgVGhlIGN1cnJlbnQgY2hvaWNlIGlzIHRoZSBzdGFydCAvIGVuZCBkYXRlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcmFuZ2VUeXBlID0gaW5wdXQ8WERhdGVQaWNrZXJSYW5nVHlwZT4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g56aB55So55qE5pel5pyfXHJcbiAgICogQGVuX1VTIERpc2FibGVkIGRhdGVcclxuICAgKi9cclxuICByZWFkb25seSBkaXNhYmxlZERhdGUgPSBpbnB1dDxYRGF0ZVBpY2tlckRpc2FibGVkRGF0ZT4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05Y+Y5YyW55qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIFNjb3BlIGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHJhbmdlQ2hhbmdlID0gb3V0cHV0PERhdGVbXT4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5bm055qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIFllYXIgY2hhbmdlIGV2ZW50XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgeWVhckNoYW5nZSA9IG91dHB1dDxudW1iZXI+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieaciOeahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBNb250aCBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICByZWFkb25seSBtb250aENoYW5nZSA9IG91dHB1dDxudW1iZXI+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOaXpeacnyBtb3VzZWVudGVyIOS6i+S7tlxyXG4gICAqIEBlbl9VUyBEYXRlIG1vdXNlZW50ZXIgZXZlbnRcclxuICAgKi9cclxuICByZWFkb25seSByYW5nZVRkTW91c2VlbnRlciA9IG91dHB1dDxYRGF0ZUNlbGw+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOaXpeacnyBtb3VzZWxlYXZlIOS6i+S7tlxyXG4gICAqIEBlbl9VUyBEYXRlIG1vdXNlbGVhdmUgZXZlbnRcclxuICAgKi9cclxuICByZWFkb25seSByYW5nZVRkTW91c2VsZWF2ZSA9IG91dHB1dDxYRGF0ZUNlbGw+KCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g5Y2V5Liq5pel5pyf5pWw5o2u5a+56LGhXHJcbiAqIEBlbl9VUyDljZXkuKrml6XmnJ/mlbDmja7lr7nosaFcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWERhdGVDZWxsIHtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pel5pyfXHJcbiAgICogQGVuX1VTIERhdGVcclxuICAgKi9cclxuICBkYXRlPzogRGF0ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5LiK5Liq5pyI5oiW5LiL5Liq5pyI55qE5pel5pyfXHJcbiAgICogQGVuX1VTIERhdGUgb2YgdGhlIHByZXZpb3VzIG9yIG5leHQgbW9udGhcclxuICAgKi9cclxuICBpc0xhc3RPck5leHQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvZPlpKlcclxuICAgKiBAZW5fVVMgU2FtZSBkYXlcclxuICAgKi9cclxuICBpc05vdz86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+aciOesrOS4gOWkqVxyXG4gICAqIEBlbl9VUyBUaGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aFxyXG4gICAqL1xyXG4gIGlzRmlyc3REYXk/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvZPmnIjmnIDlkI7kuIDlpKlcclxuICAgKiBAZW5fVVMgVGhlIGxhc3QgZGF5IG9mIHRoZSBtb250aFxyXG4gICAqL1xyXG4gIGlzTGFzdERheT86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOWGheaXpeacn1xyXG4gICAqIEBlbl9VUyDojIPlm7TlhoXml6XmnJ9cclxuICAgKi9cclxuICBpc0luUmFuZ2U/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7TlhoUgaG92ZXIg6YCJ5LitXHJcbiAgICogQGVuX1VTIOiMg+WbtOWGhSBob3ZlciDpgInkuK1cclxuICAgKi9cclxuICBpc0luUmFuZ2VIb3Zlcj86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOWGhSBob3ZlciDlvZPliY3ml6XmnJ/lt6bovrlcclxuICAgKiBAZW5fVVMg6IyD5Zu05YaFIGhvdmVyIOW9k+WJjeaXpeacn+W3pui+uVxyXG4gICAqL1xyXG4gIGlzSW5SYW5nZUhvdmVyTGVmdD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOWGhSBob3ZlciDlvZPliY3ml6XmnJ/lj7PovrlcclxuICAgKiBAZW5fVVMg6IyD5Zu05YaFIGhvdmVyIOW9k+WJjeaXpeacn+WPs+i+uVxyXG4gICAqL1xyXG4gIGlzSW5SYW5nZUhvdmVyUmlnaHQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInkuK3lvIDlp4vlt6bovrlcclxuICAgKiBAZW5fVVMgUmFuZ2Ugc3RhcnQgbGVmdFxyXG4gICAqL1xyXG4gIGlzUmFuZ2VTdGFydExlZnQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInkuK3lvIDlp4vlj7PovrlcclxuICAgKiBAZW5fVVMgUmFuZ2Ugc3RhcnQgcmlnaHRcclxuICAgKi9cclxuICBpc1JhbmdlU3RhcnRSaWdodD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieS4ree7k+adn+W3pui+uVxyXG4gICAqIEBlbl9VUyBSYW5nZSBzdGFydCBsZWZ0XHJcbiAgICovXHJcbiAgaXNSYW5nZUVuZExlZnQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInkuK3nu5PmnZ/lj7PovrlcclxuICAgKiBAZW5fVVMgUmFuZ2Ugc3RhcnQgcmlnaHRcclxuICAgKi9cclxuICBpc1JhbmdlRW5kUmlnaHQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7QgaG92ZXJcclxuICAgKiBAZW5fVVMgUmFuZ2UgaG92ZXJcclxuICAgKi9cclxuICBpc1JhbmdlSG92ZXI/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBob3ZlciDlvZPliY3lvIDlp4tcclxuICAgKiBAZW5fVVMgUmFuZ2UgaG92ZXIgc3RhcnRcclxuICAgKi9cclxuICBpc1JhbmdlSG92ZXJTdGFydD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIGhvdmVyIOW9k+WJjee7k+adn1xyXG4gICAqIEBlbl9VUyBFbmQgZGF0ZVxyXG4gICAqL1xyXG4gIGlzUmFuZ2VIb3ZlckVuZD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIGhvdmVyIOW8gOWni+W3pui+uVxyXG4gICAqIEBlbl9VUyBSYW5nZSBob3ZlciBzdGFydCBsZWZ0XHJcbiAgICovXHJcbiAgaXNSYW5nZUhvdmVyU3RhcnRMZWZ0PzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04gaG92ZXIg5byA5aeL5Y+z6L65XHJcbiAgICogQGVuX1VTIFJhbmdlIGhvdmVyIHN0YXJ0IHJpZ2h0XHJcbiAgICovXHJcbiAgaXNSYW5nZUhvdmVyU3RhcnRSaWdodD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIGhvdmVyIOe7k+adn+W3pui+uVxyXG4gICAqIEBlbl9VUyBSYW5nZSBob3ZlciBlbmQgbGVmdFxyXG4gICAqL1xyXG4gIGlzUmFuZ2VIb3ZlckVuZExlZnQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiBob3ZlciDnu5PmnZ/lj7PovrlcclxuICAgKiBAZW5fVVMgUmFuZ2UgaG92ZXIgZW5kIHJpZ2h0XHJcbiAgICovXHJcbiAgaXNSYW5nZUhvdmVyRW5kUmlnaHQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvZPliY3pgInkuK3ml6XmnJ9cclxuICAgKiBAZW5fVVMgQ3VycmVudCBzZWxlY3RlZCBkYXRlXHJcbiAgICovXHJcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKjml6XmnJ9cclxuICAgKiBAZW5fVVMgRGlzYWJsZWQgZGF0ZVxyXG4gICAqL1xyXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnsbvlnotcclxuICAgKiBAZW5fVVMgVHlwZVxyXG4gICAqL1xyXG4gIHR5cGU/OiBYRGF0ZVBpY2tlclR5cGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOesrOWHoOWRqFxyXG4gICAqIEBlbl9VUyBXZWVrXHJcbiAgICovXHJcbiAgd2Vlaz86IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEB6aF9DTiDlvZPliY3pgInmi6nnmoTmmK/lvIDlp4sv57uT5p2f5pel5pyfXHJcbiAqIEBlbl9VUyBUaGUgY3VycmVudCBjaG9pY2UgaXMgdGhlIHN0YXJ0IC8gZW5kIGRhdGVcclxuICovXHJcbmV4cG9ydCB0eXBlIFhEYXRlUGlja2VyUmFuZ1R5cGUgPSAnc3RhcnQnIHwgJ2VuZCc7XHJcblxyXG4vKipcclxuICogUGlja2VyTW9udGhcclxuICogQHNlbGVjdG9yIHgtcGlja2VyLW1vbnRoXHJcbiAqIEBkZWNvcmF0b3IgY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWFBpY2tlck1vbnRoUHJlZml4ID0gJ3gtcGlja2VyLW1vbnRoJztcclxuXHJcbi8qKlxyXG4gKiBQaWNrZXJNb250aCBQcm9wZXJ0eVxyXG4gKi9cclxuQENvbXBvbmVudCh7IHNlbGVjdG9yOiBgJHtYUGlja2VyTW9udGhQcmVmaXh9LXByb3BlcnR5YCwgdGVtcGxhdGU6ICcnIH0pXHJcbmV4cG9ydCBjbGFzcyBYUGlja2VyTW9udGhQcm9wZXJ0eSBleHRlbmRzIFhQcm9wZXJ0eSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieaLqeexu+Wei1xyXG4gICAqIEBlbl9VUyBTZWxlY3QgdHlwZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBtb2RlbDxYRGF0ZVBpY2tlclR5cGU+KCdkYXRlJyk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuueahOaXpeacn1xyXG4gICAqIEBlbl9VUyBEYXRlIGRpc3BsYXllZFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGRpc3BsYXkgPSBtb2RlbDxEYXRlPihuZXcgRGF0ZSgpKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5Lit55qE5pel5pyfXHJcbiAgICogQGVuX1VTIFNlbGVjdGVkIGRhdGVcclxuICAgKi9cclxuICByZWFkb25seSBtb2RlbCA9IG1vZGVsPERhdGUgfCBudWxsPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmnIjku73mmL7npLrmqKHmnb9cclxuICAgKiBAZW5fVVMgTW9udGggZGlzcGxheSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IG1vbnRoVGVtcCA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuuWIh+aNouaMiemSrlxyXG4gICAqIEBlbl9VUyBEaXNwbGF5IHN3aXRjaCBidXR0b25cclxuICAgKi9cclxuICByZWFkb25seSBzaG93SGVhZGVyID0gaW5wdXQ8Ym9vbGVhbiwgWEJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiBYVG9Cb29sZWFuIH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7TpgInmi6lcclxuICAgKiBAZW5fVVMgUmFuZ2UgcGlja2VyXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcmFuZ2VQaWNrZXIgPSBpbnB1dDxib29sZWFuLCBYQm9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiBYVG9Cb29sZWFuIH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDkuIrkuIDlubRcclxuICAgKiBAZW5fVVMgTGFzdCB5ZWFyXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgbGFzdFllYXJCdG4gPSBpbnB1dDxib29sZWFuLCBYQm9vbGVhbj4odHJ1ZSwgeyB0cmFuc2Zvcm06IFhUb0Jvb2xlYW4gfSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOS4i+S4gOW5tFxyXG4gICAqIEBlbl9VUyBOZXh0IHllYXJcclxuICAgKi9cclxuICByZWFkb25seSBuZXh0WWVhckJ0biA9IGlucHV0PGJvb2xlYW4sIFhCb29sZWFuPih0cnVlLCB7IHRyYW5zZm9ybTogWFRvQm9vbGVhbiB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05pyI5Lu9XHJcbiAgICogQGVuX1VTIFJhbmdlIGRhdGVcclxuICAgKi9cclxuICByZWFkb25seSByYW5nZVZhbHVlID0gaW5wdXQ8KG51bWJlciB8IG51bGwpW10+KFtdKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5b2T5YmN6YCJ5oup55qE5piv5byA5aeLL+e7k+adn+aXpeacn1xyXG4gICAqIEBlbl9VUyBUaGUgY3VycmVudCBjaG9pY2UgaXMgdGhlIHN0YXJ0IC8gZW5kIGRhdGVcclxuICAgKi9cclxuICByZWFkb25seSByYW5nZVR5cGUgPSBpbnB1dDxYRGF0ZVBpY2tlclJhbmdUeXBlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKjnmoTml6XmnJ9cclxuICAgKiBAZW5fVVMgRGlzYWJsZWQgZGF0ZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGRpc2FibGVkRGF0ZSA9IGlucHV0PFhEYXRlUGlja2VyRGlzYWJsZWREYXRlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7Tlj5jljJbnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgU2NvcGUgY2hhbmdlIGV2ZW50XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcmFuZ2VDaGFuZ2UgPSBvdXRwdXQ8RGF0ZVtdPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInlubTnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgWWVhciBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICByZWFkb25seSB5ZWFyQ2hhbmdlID0gb3V0cHV0PG51bWJlcj4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5pyI55qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIE1vbnRoIGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IG1vbnRoQ2hhbmdlID0gb3V0cHV0PG51bWJlcj4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05pyI5Lu9IG1vdXNlZW50ZXIg5LqL5Lu2XHJcbiAgICogQGVuX1VTIERhdGUgbW91c2VlbnRlciBldmVudFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHJhbmdlVGRNb3VzZWVudGVyID0gb3V0cHV0PFhEYXRlQ2VsbD4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05pyI5Lu9IG1vdXNlbGVhdmUg5LqL5Lu2XHJcbiAgICogQGVuX1VTIERhdGUgbW91c2VsZWF2ZSBldmVudFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHJhbmdlVGRNb3VzZWxlYXZlID0gb3V0cHV0PFhEYXRlQ2VsbD4oKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBpY2tlclF1YXJ0ZXJcclxuICogQHNlbGVjdG9yIHgtcGlja2VyLXF1YXJ0ZXJcclxuICogQGRlY29yYXRvciBjb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBYUGlja2VyUXVhcnRlclByZWZpeCA9ICd4LXBpY2tlci1xdWFydGVyJztcclxuXHJcbi8qKlxyXG4gKiBQaWNrZXJRdWFydGVyIFByb3BlcnR5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6IGAke1hQaWNrZXJRdWFydGVyUHJlZml4fS1wcm9wZXJ0eWAsIHRlbXBsYXRlOiAnJyB9KVxyXG5leHBvcnQgY2xhc3MgWFBpY2tlclF1YXJ0ZXJQcm9wZXJ0eSBleHRlbmRzIFhQcm9wZXJ0eSB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieaLqeexu+Wei1xyXG4gICAqIEBlbl9VUyBTZWxlY3QgdHlwZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBtb2RlbDxYRGF0ZVBpY2tlclR5cGU+KCdkYXRlJyk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuueahOaXpeacn1xyXG4gICAqIEBlbl9VUyBEYXRlIGRpc3BsYXllZFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGRpc3BsYXkgPSBtb2RlbDxEYXRlPihuZXcgRGF0ZSgpKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6YCJ5Lit55qE5pel5pyfXHJcbiAgICogQGVuX1VTIFNlbGVjdGVkIGRhdGVcclxuICAgKi9cclxuICByZWFkb25seSBtb2RlbCA9IG1vZGVsPERhdGUgfCBudWxsPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlraPluqbmmL7npLrmqKHmnb9cclxuICAgKiBAZW5fVVMgTW9udGggZGlzcGxheSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHF1YXJ0ZXJUZW1wID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pi+56S65YiH5o2i5oyJ6ZKuXHJcbiAgICogQGVuX1VTIERpc3BsYXkgc3dpdGNoIGJ1dHRvblxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHNob3dIZWFkZXIgPSBpbnB1dDxib29sZWFuLCBYQm9vbGVhbj4odHJ1ZSwgeyB0cmFuc2Zvcm06IFhUb0Jvb2xlYW4gfSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOmAieaLqVxyXG4gICAqIEBlbl9VUyBSYW5nZSBwaWNrZXJcclxuICAgKi9cclxuICByZWFkb25seSByYW5nZVBpY2tlciA9IGlucHV0PGJvb2xlYW4sIFhCb29sZWFuPihmYWxzZSwgeyB0cmFuc2Zvcm06IFhUb0Jvb2xlYW4gfSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOS4iuS4gOW5tFxyXG4gICAqIEBlbl9VUyBMYXN0IHllYXJcclxuICAgKi9cclxuICByZWFkb25seSBsYXN0WWVhckJ0biA9IGlucHV0PGJvb2xlYW4sIFhCb29sZWFuPih0cnVlLCB7IHRyYW5zZm9ybTogWFRvQm9vbGVhbiB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5LiL5LiA5bm0XHJcbiAgICogQGVuX1VTIE5leHQgeWVhclxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IG5leHRZZWFyQnRuID0gaW5wdXQ8Ym9vbGVhbiwgWEJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiBYVG9Cb29sZWFuIH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7TmnIjku71cclxuICAgKiBAZW5fVVMgUmFuZ2UgZGF0ZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHJhbmdlVmFsdWUgPSBpbnB1dDwobnVtYmVyIHwgbnVsbClbXT4oW10pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvZPliY3pgInmi6nnmoTmmK/lvIDlp4sv57uT5p2f5pel5pyfXHJcbiAgICogQGVuX1VTIFRoZSBjdXJyZW50IGNob2ljZSBpcyB0aGUgc3RhcnQgLyBlbmQgZGF0ZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHJhbmdlVHlwZSA9IGlucHV0PFhEYXRlUGlja2VyUmFuZ1R5cGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOemgeeUqOeahOaXpeacn1xyXG4gICAqIEBlbl9VUyBEaXNhYmxlZCBkYXRlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgZGlzYWJsZWREYXRlID0gaW5wdXQ8WERhdGVQaWNrZXJEaXNhYmxlZERhdGU+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOWPmOWMlueahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBTY29wZSBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICByZWFkb25seSByYW5nZUNoYW5nZSA9IG91dHB1dDxEYXRlW10+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieW5tOeahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBZZWFyIGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHllYXJDaGFuZ2UgPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInmnIjnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgTW9udGggY2hhbmdlIGV2ZW50XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgbW9udGhDaGFuZ2UgPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7TlraPluqYgbW91c2VlbnRlciDkuovku7ZcclxuICAgKiBAZW5fVVMgRGF0ZSBtb3VzZWVudGVyIGV2ZW50XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcmFuZ2VUZE1vdXNlZW50ZXIgPSBvdXRwdXQ8WERhdGVDZWxsPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7TlraPluqYgbW91c2VsZWF2ZSDkuovku7ZcclxuICAgKiBAZW5fVVMgRGF0ZSBtb3VzZWxlYXZlIGV2ZW50XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcmFuZ2VUZE1vdXNlbGVhdmUgPSBvdXRwdXQ8WERhdGVDZWxsPigpO1xyXG59XHJcblxyXG4vKipcclxuICogRGF0ZVF1YXJ0ZXJcclxuICogQHNlbGVjdG9yIHhEYXRlUXVhcnRlclxyXG4gKiBAZGVjb3JhdG9yIHBpcGVcclxuICovXHJcbmV4cG9ydCBjb25zdCBYRGF0ZVF1YXJ0ZXJQcmVmaXggPSAneERhdGVRdWFydGVyJztcclxuXHJcbi8qKlxyXG4gKiBQaWNrZXJZZWFyXHJcbiAqIEBzZWxlY3RvciB4LXBpY2tlci15ZWFyXHJcbiAqIEBkZWNvcmF0b3IgY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWFBpY2tlclllYXJQcmVmaXggPSAneC1waWNrZXIteWVhcic7XHJcblxyXG4vKipcclxuICogUGlja2VyWWVhciBQcm9wZXJ0eVxyXG4gKi9cclxuQENvbXBvbmVudCh7IHNlbGVjdG9yOiBgJHtYUGlja2VyWWVhclByZWZpeH0tcHJvcGVydHlgLCB0ZW1wbGF0ZTogJycgfSlcclxuZXhwb3J0IGNsYXNzIFhQaWNrZXJZZWFyUHJvcGVydHkgZXh0ZW5kcyBYUHJvcGVydHkge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInmi6nnsbvlnotcclxuICAgKiBAZW5fVVMgU2VsZWN0IHR5cGVcclxuICAgKi9cclxuICByZWFkb25seSB0eXBlID0gbW9kZWw8WERhdGVQaWNrZXJUeXBlPignZGF0ZScpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrnmoTml6XmnJ9cclxuICAgKiBAZW5fVVMgRGF0ZSBkaXNwbGF5ZWRcclxuICAgKi9cclxuICByZWFkb25seSBkaXNwbGF5ID0gbW9kZWw8RGF0ZT4obmV3IERhdGUoKSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieS4reeahOaXpeacn1xyXG4gICAqIEBlbl9VUyBTZWxlY3RlZCBkYXRlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgbW9kZWwgPSBtb2RlbDxEYXRlIHwgbnVsbD4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5bm05Lu95pi+56S65qih5p2/XHJcbiAgICogQGVuX1VTIE1vbnRoIGRpc3BsYXkgdGVtcGxhdGVcclxuICAgKi9cclxuICByZWFkb25seSB5ZWFyVGVtcCA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuuWIh+aNouaMiemSrlxyXG4gICAqIEBlbl9VUyBEaXNwbGF5IHN3aXRjaCBidXR0b25cclxuICAgKi9cclxuICByZWFkb25seSBzaG93SGVhZGVyID0gaW5wdXQ8Ym9vbGVhbiwgWEJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiBYVG9Cb29sZWFuIH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7TpgInmi6lcclxuICAgKiBAZW5fVVMgUmFuZ2UgcGlja2VyXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcmFuZ2VQaWNrZXIgPSBpbnB1dDxib29sZWFuLCBYQm9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiBYVG9Cb29sZWFuIH0pO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDkuIrkuIDlubRcclxuICAgKiBAZW5fVVMgTGFzdCB5ZWFyXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgbGFzdFllYXJCdG4gPSBpbnB1dDxib29sZWFuLCBYQm9vbGVhbj4odHJ1ZSwgeyB0cmFuc2Zvcm06IFhUb0Jvb2xlYW4gfSk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOS4i+S4gOW5tFxyXG4gICAqIEBlbl9VUyBOZXh0IHllYXJcclxuICAgKi9cclxuICByZWFkb25seSBuZXh0WWVhckJ0biA9IGlucHV0PGJvb2xlYW4sIFhCb29sZWFuPih0cnVlLCB7IHRyYW5zZm9ybTogWFRvQm9vbGVhbiB9KTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6IyD5Zu05bm05Lu9XHJcbiAgICogQGVuX1VTIFJhbmdlIGRhdGVcclxuICAgKi9cclxuICByZWFkb25seSByYW5nZVZhbHVlID0gaW5wdXQ8KG51bWJlciB8IG51bGwpW10+KFtdKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5b2T5YmN6YCJ5oup55qE5piv5byA5aeLL+e7k+adn+aXpeacn1xyXG4gICAqIEBlbl9VUyBUaGUgY3VycmVudCBjaG9pY2UgaXMgdGhlIHN0YXJ0IC8gZW5kIGRhdGVcclxuICAgKi9cclxuICByZWFkb25seSByYW5nZVR5cGUgPSBpbnB1dDxYRGF0ZVBpY2tlclJhbmdUeXBlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKjnmoTml6XmnJ9cclxuICAgKiBAZW5fVVMgRGlzYWJsZWQgZGF0ZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGRpc2FibGVkRGF0ZSA9IGlucHV0PFhEYXRlUGlja2VyRGlzYWJsZWREYXRlPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvIDlp4vlubTku73lj5jljJbnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgU3RhcnQgeWVhciBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICByZWFkb25seSBzdGFydENoYW5nZSA9IG91dHB1dDxudW1iZXI+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiMg+WbtOWPmOWMlueahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBTY29wZSBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICByZWFkb25seSByYW5nZUNoYW5nZSA9IG91dHB1dDxEYXRlW10+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmAieW5tOeahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBZZWFyIGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHllYXJDaGFuZ2UgPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpgInmnIjnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgTW9udGggY2hhbmdlIGV2ZW50XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgbW9udGhDaGFuZ2UgPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7TmnIjku70gbW91c2VlbnRlciDkuovku7ZcclxuICAgKiBAZW5fVVMgRGF0ZSBtb3VzZWVudGVyIGV2ZW50XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcmFuZ2VUZE1vdXNlZW50ZXIgPSBvdXRwdXQ8WERhdGVDZWxsPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDojIPlm7TmnIjku70gbW91c2VsZWF2ZSDkuovku7ZcclxuICAgKiBAZW5fVVMgRGF0ZSBtb3VzZWxlYXZlIGV2ZW50XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcmFuZ2VUZE1vdXNlbGVhdmUgPSBvdXRwdXQ8WERhdGVDZWxsPigpO1xyXG59XHJcbiJdfQ==