primeng 18.0.0 → 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 (318) hide show
  1. package/accordion/accordion.d.ts +7 -7
  2. package/autocomplete/autocomplete.d.ts +21 -8
  3. package/badge/badge.d.ts +1 -3
  4. package/basecomponent/basecomponent.d.ts +2 -5
  5. package/blockui/blockui.d.ts +10 -5
  6. package/breadcrumb/breadcrumb.d.ts +9 -6
  7. package/button/button.d.ts +10 -4
  8. package/calendar/calendar.d.ts +29 -15
  9. package/card/card.d.ts +12 -5
  10. package/carousel/carousel.d.ts +10 -4
  11. package/cascadeselect/cascadeselect.d.ts +18 -8
  12. package/checkbox/checkbox.d.ts +8 -4
  13. package/chip/chip.d.ts +9 -7
  14. package/confirmdialog/confirmdialog.d.ts +14 -5
  15. package/confirmpopup/confirmpopup.d.ts +11 -5
  16. package/contextmenu/contextmenu.d.ts +10 -6
  17. package/datepicker/datepicker.d.ts +25 -11
  18. package/dialog/dialog.d.ts +15 -4
  19. package/divider/divider.d.ts +1 -1
  20. package/dock/dock.d.ts +7 -4
  21. package/drawer/drawer.d.ts +18 -10
  22. package/dropdown/dropdown.d.ts +4 -3
  23. package/dynamicdialog/dynamicdialog.d.ts +1 -0
  24. package/editor/editor.d.ts +7 -3
  25. package/esm2022/accordion/accordion.mjs +58 -43
  26. package/esm2022/autocomplete/autocomplete.mjs +153 -92
  27. package/esm2022/badge/badge.mjs +39 -32
  28. package/esm2022/basecomponent/basecomponent.mjs +3 -26
  29. package/esm2022/blockui/blockui.mjs +38 -18
  30. package/esm2022/breadcrumb/breadcrumb.mjs +50 -32
  31. package/esm2022/button/button.mjs +55 -28
  32. package/esm2022/calendar/calendar.mjs +199 -136
  33. package/esm2022/card/card.mjs +96 -46
  34. package/esm2022/carousel/carousel.mjs +74 -42
  35. package/esm2022/cascadeselect/cascadeselect.mjs +100 -62
  36. package/esm2022/checkbox/checkbox.mjs +32 -14
  37. package/esm2022/chip/chip.mjs +117 -96
  38. package/esm2022/confirmdialog/confirmdialog.mjs +96 -57
  39. package/esm2022/confirmpopup/confirmpopup.mjs +57 -29
  40. package/esm2022/contextmenu/contextmenu.mjs +51 -20
  41. package/esm2022/datepicker/datepicker.mjs +199 -158
  42. package/esm2022/dialog/dialog.mjs +98 -52
  43. package/esm2022/divider/divider.mjs +2 -4
  44. package/esm2022/dock/dock.mjs +31 -13
  45. package/esm2022/drawer/drawer.mjs +112 -70
  46. package/esm2022/dropdown/dropdown.mjs +13 -5
  47. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +13 -13
  48. package/esm2022/dynamicdialog/dynamicdialog.mjs +9 -5
  49. package/esm2022/editor/editor.mjs +27 -11
  50. package/esm2022/fieldset/fieldset.mjs +61 -33
  51. package/esm2022/fileupload/fileupload.mjs +139 -89
  52. package/esm2022/galleria/galleria.mjs +18 -9
  53. package/esm2022/image/image.mjs +113 -66
  54. package/esm2022/imagecompare/imagecompare.mjs +31 -11
  55. package/esm2022/inplace/inplace.mjs +49 -24
  56. package/esm2022/inputmask/inputmask.mjs +30 -14
  57. package/esm2022/inputmask/style/inputmaskstyle.mjs +2 -2
  58. package/esm2022/inputnumber/inputnumber.mjs +55 -47
  59. package/esm2022/inputotp/inputotp.mjs +30 -11
  60. package/esm2022/listbox/listbox.mjs +137 -78
  61. package/esm2022/megamenu/megamenu.mjs +105 -59
  62. package/esm2022/menu/menu.mjs +26 -26
  63. package/esm2022/menubar/menubar.mjs +70 -35
  64. package/esm2022/message/message.mjs +50 -26
  65. package/esm2022/messages/messages.mjs +13 -4
  66. package/esm2022/metergroup/metergroup.mjs +63 -31
  67. package/esm2022/multiselect/multiselect.mjs +247 -156
  68. package/esm2022/orderlist/orderlist.mjs +125 -70
  69. package/esm2022/organizationchart/organizationchart.mjs +30 -14
  70. package/esm2022/overlay/overlay.mjs +27 -7
  71. package/esm2022/overlaypanel/overlaypanel.mjs +33 -10
  72. package/esm2022/paginator/paginator.mjs +92 -60
  73. package/esm2022/panel/panel.mjs +160 -100
  74. package/esm2022/panelmenu/panelmenu.mjs +55 -32
  75. package/esm2022/password/password.mjs +88 -49
  76. package/esm2022/picklist/picklist.mjs +363 -259
  77. package/esm2022/popover/popover.mjs +29 -12
  78. package/esm2022/progressbar/progressbar.mjs +27 -9
  79. package/esm2022/rating/rating.mjs +46 -22
  80. package/esm2022/scroller/scroller.mjs +47 -37
  81. package/esm2022/scrollpanel/scrollpanel.mjs +28 -9
  82. package/esm2022/scrolltop/scrolltop.mjs +17 -10
  83. package/esm2022/select/select.mjs +198 -119
  84. package/esm2022/selectbutton/selectbutton.mjs +26 -11
  85. package/esm2022/sidebar/sidebar.mjs +82 -60
  86. package/esm2022/speeddial/speeddial.mjs +54 -29
  87. package/esm2022/splitbutton/splitbutton.mjs +41 -18
  88. package/esm2022/splitter/splitter.mjs +5 -5
  89. package/esm2022/stepper/stepper.mjs +27 -13
  90. package/esm2022/table/table.mjs +107 -96
  91. package/esm2022/tabmenu/tabmenu.mjs +54 -27
  92. package/esm2022/tabs/tablist.mjs +28 -20
  93. package/esm2022/tabview/tabview.mjs +106 -54
  94. package/esm2022/tag/tag.mjs +68 -44
  95. package/esm2022/tieredmenu/tieredmenu.mjs +44 -21
  96. package/esm2022/timeline/timeline.mjs +41 -17
  97. package/esm2022/toast/toast.mjs +31 -9
  98. package/esm2022/togglebutton/togglebutton.mjs +45 -30
  99. package/esm2022/toggleswitch/toggleswitch.mjs +28 -9
  100. package/esm2022/toolbar/toolbar.mjs +47 -21
  101. package/esm2022/tooltip/tooltip.mjs +35 -70
  102. package/esm2022/tree/tree.mjs +114 -99
  103. package/esm2022/treeselect/treeselect.mjs +156 -89
  104. package/esm2022/treetable/treetable.mjs +31 -12
  105. package/esm2022/usestyle/usestyle.mjs +2 -2
  106. package/fesm2022/primeng-accordion.mjs +57 -42
  107. package/fesm2022/primeng-accordion.mjs.map +1 -1
  108. package/fesm2022/primeng-autocomplete.mjs +152 -91
  109. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  110. package/fesm2022/primeng-badge.mjs +38 -31
  111. package/fesm2022/primeng-badge.mjs.map +1 -1
  112. package/fesm2022/primeng-basecomponent.mjs +2 -25
  113. package/fesm2022/primeng-basecomponent.mjs.map +1 -1
  114. package/fesm2022/primeng-blockui.mjs +37 -17
  115. package/fesm2022/primeng-blockui.mjs.map +1 -1
  116. package/fesm2022/primeng-breadcrumb.mjs +49 -31
  117. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  118. package/fesm2022/primeng-button.mjs +54 -27
  119. package/fesm2022/primeng-button.mjs.map +1 -1
  120. package/fesm2022/primeng-calendar.mjs +198 -135
  121. package/fesm2022/primeng-calendar.mjs.map +1 -1
  122. package/fesm2022/primeng-card.mjs +95 -45
  123. package/fesm2022/primeng-card.mjs.map +1 -1
  124. package/fesm2022/primeng-carousel.mjs +73 -41
  125. package/fesm2022/primeng-carousel.mjs.map +1 -1
  126. package/fesm2022/primeng-cascadeselect.mjs +99 -61
  127. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  128. package/fesm2022/primeng-checkbox.mjs +31 -13
  129. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  130. package/fesm2022/primeng-chip.mjs +116 -95
  131. package/fesm2022/primeng-chip.mjs.map +1 -1
  132. package/fesm2022/primeng-confirmdialog.mjs +95 -56
  133. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  134. package/fesm2022/primeng-confirmpopup.mjs +56 -28
  135. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  136. package/fesm2022/primeng-contextmenu.mjs +50 -19
  137. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  138. package/fesm2022/primeng-datepicker.mjs +198 -157
  139. package/fesm2022/primeng-datepicker.mjs.map +1 -1
  140. package/fesm2022/primeng-dialog.mjs +97 -51
  141. package/fesm2022/primeng-dialog.mjs.map +1 -1
  142. package/fesm2022/primeng-divider.mjs +1 -3
  143. package/fesm2022/primeng-divider.mjs.map +1 -1
  144. package/fesm2022/primeng-dock.mjs +30 -12
  145. package/fesm2022/primeng-dock.mjs.map +1 -1
  146. package/fesm2022/primeng-drawer.mjs +111 -69
  147. package/fesm2022/primeng-drawer.mjs.map +1 -1
  148. package/fesm2022/primeng-dropdown.mjs +12 -4
  149. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  150. package/fesm2022/primeng-dynamicdialog.mjs +20 -16
  151. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  152. package/fesm2022/primeng-editor.mjs +26 -10
  153. package/fesm2022/primeng-editor.mjs.map +1 -1
  154. package/fesm2022/primeng-fieldset.mjs +60 -32
  155. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  156. package/fesm2022/primeng-fileupload.mjs +138 -88
  157. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  158. package/fesm2022/primeng-galleria.mjs +17 -8
  159. package/fesm2022/primeng-galleria.mjs.map +1 -1
  160. package/fesm2022/primeng-image.mjs +112 -65
  161. package/fesm2022/primeng-image.mjs.map +1 -1
  162. package/fesm2022/primeng-imagecompare.mjs +30 -10
  163. package/fesm2022/primeng-imagecompare.mjs.map +1 -1
  164. package/fesm2022/primeng-inplace.mjs +48 -23
  165. package/fesm2022/primeng-inplace.mjs.map +1 -1
  166. package/fesm2022/primeng-inputmask.mjs +30 -14
  167. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  168. package/fesm2022/primeng-inputnumber.mjs +54 -46
  169. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  170. package/fesm2022/primeng-inputotp.mjs +29 -10
  171. package/fesm2022/primeng-inputotp.mjs.map +1 -1
  172. package/fesm2022/primeng-listbox.mjs +136 -77
  173. package/fesm2022/primeng-listbox.mjs.map +1 -1
  174. package/fesm2022/primeng-megamenu.mjs +104 -58
  175. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  176. package/fesm2022/primeng-menu.mjs +25 -25
  177. package/fesm2022/primeng-menu.mjs.map +1 -1
  178. package/fesm2022/primeng-menubar.mjs +69 -34
  179. package/fesm2022/primeng-menubar.mjs.map +1 -1
  180. package/fesm2022/primeng-message.mjs +49 -25
  181. package/fesm2022/primeng-message.mjs.map +1 -1
  182. package/fesm2022/primeng-messages.mjs +12 -3
  183. package/fesm2022/primeng-messages.mjs.map +1 -1
  184. package/fesm2022/primeng-metergroup.mjs +62 -30
  185. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  186. package/fesm2022/primeng-multiselect.mjs +246 -155
  187. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  188. package/fesm2022/primeng-orderlist.mjs +124 -69
  189. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  190. package/fesm2022/primeng-organizationchart.mjs +29 -13
  191. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  192. package/fesm2022/primeng-overlay.mjs +26 -6
  193. package/fesm2022/primeng-overlay.mjs.map +1 -1
  194. package/fesm2022/primeng-overlaypanel.mjs +32 -9
  195. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  196. package/fesm2022/primeng-paginator.mjs +91 -59
  197. package/fesm2022/primeng-paginator.mjs.map +1 -1
  198. package/fesm2022/primeng-panel.mjs +159 -99
  199. package/fesm2022/primeng-panel.mjs.map +1 -1
  200. package/fesm2022/primeng-panelmenu.mjs +54 -31
  201. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  202. package/fesm2022/primeng-password.mjs +87 -48
  203. package/fesm2022/primeng-password.mjs.map +1 -1
  204. package/fesm2022/primeng-picklist.mjs +362 -258
  205. package/fesm2022/primeng-picklist.mjs.map +1 -1
  206. package/fesm2022/primeng-popover.mjs +28 -11
  207. package/fesm2022/primeng-popover.mjs.map +1 -1
  208. package/fesm2022/primeng-progressbar.mjs +26 -8
  209. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  210. package/fesm2022/primeng-rating.mjs +45 -21
  211. package/fesm2022/primeng-rating.mjs.map +1 -1
  212. package/fesm2022/primeng-scroller.mjs +46 -36
  213. package/fesm2022/primeng-scroller.mjs.map +1 -1
  214. package/fesm2022/primeng-scrollpanel.mjs +27 -8
  215. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  216. package/fesm2022/primeng-scrolltop.mjs +16 -9
  217. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  218. package/fesm2022/primeng-select.mjs +197 -118
  219. package/fesm2022/primeng-select.mjs.map +1 -1
  220. package/fesm2022/primeng-selectbutton.mjs +25 -10
  221. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  222. package/fesm2022/primeng-sidebar.mjs +81 -59
  223. package/fesm2022/primeng-sidebar.mjs.map +1 -1
  224. package/fesm2022/primeng-speeddial.mjs +53 -28
  225. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  226. package/fesm2022/primeng-splitbutton.mjs +40 -17
  227. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  228. package/fesm2022/primeng-splitter.mjs +4 -4
  229. package/fesm2022/primeng-splitter.mjs.map +1 -1
  230. package/fesm2022/primeng-stepper.mjs +26 -12
  231. package/fesm2022/primeng-stepper.mjs.map +1 -1
  232. package/fesm2022/primeng-table.mjs +106 -95
  233. package/fesm2022/primeng-table.mjs.map +1 -1
  234. package/fesm2022/primeng-tabmenu.mjs +53 -26
  235. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  236. package/fesm2022/primeng-tabs.mjs +27 -19
  237. package/fesm2022/primeng-tabs.mjs.map +1 -1
  238. package/fesm2022/primeng-tabview.mjs +106 -54
  239. package/fesm2022/primeng-tabview.mjs.map +1 -1
  240. package/fesm2022/primeng-tag.mjs +67 -43
  241. package/fesm2022/primeng-tag.mjs.map +1 -1
  242. package/fesm2022/primeng-tieredmenu.mjs +43 -20
  243. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  244. package/fesm2022/primeng-timeline.mjs +40 -16
  245. package/fesm2022/primeng-timeline.mjs.map +1 -1
  246. package/fesm2022/primeng-toast.mjs +30 -8
  247. package/fesm2022/primeng-toast.mjs.map +1 -1
  248. package/fesm2022/primeng-togglebutton.mjs +44 -29
  249. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  250. package/fesm2022/primeng-toggleswitch.mjs +27 -8
  251. package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
  252. package/fesm2022/primeng-toolbar.mjs +46 -20
  253. package/fesm2022/primeng-toolbar.mjs.map +1 -1
  254. package/fesm2022/primeng-tooltip.mjs +35 -70
  255. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  256. package/fesm2022/primeng-tree.mjs +114 -99
  257. package/fesm2022/primeng-tree.mjs.map +1 -1
  258. package/fesm2022/primeng-treeselect.mjs +155 -88
  259. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  260. package/fesm2022/primeng-treetable.mjs +30 -11
  261. package/fesm2022/primeng-treetable.mjs.map +1 -1
  262. package/fesm2022/primeng-usestyle.mjs +1 -1
  263. package/fesm2022/primeng-usestyle.mjs.map +1 -1
  264. package/fieldset/fieldset.d.ts +12 -6
  265. package/fileupload/fileupload.d.ts +19 -8
  266. package/galleria/galleria.d.ts +3 -2
  267. package/image/image.d.ts +18 -7
  268. package/imagecompare/imagecompare.d.ts +7 -2
  269. package/inplace/inplace.d.ts +12 -6
  270. package/inputmask/inputmask.d.ts +8 -4
  271. package/inputnumber/inputnumber.d.ts +11 -6
  272. package/inputotp/inputotp.d.ts +7 -2
  273. package/listbox/listbox.d.ts +17 -4
  274. package/megamenu/megamenu.d.ts +16 -7
  275. package/menu/menu.d.ts +6 -6
  276. package/menubar/menubar.d.ts +13 -6
  277. package/message/message.d.ts +10 -4
  278. package/messages/messages.d.ts +4 -3
  279. package/metergroup/metergroup.d.ts +11 -3
  280. package/multiselect/multiselect.d.ts +36 -17
  281. package/orderlist/orderlist.d.ts +23 -11
  282. package/organizationchart/organizationchart.d.ts +6 -4
  283. package/overlay/overlay.d.ts +6 -3
  284. package/overlaypanel/overlaypanel.d.ts +6 -3
  285. package/package.json +215 -215
  286. package/paginator/paginator.d.ts +15 -8
  287. package/panel/panel.d.ts +14 -5
  288. package/panelmenu/panelmenu.d.ts +8 -4
  289. package/password/password.d.ts +15 -7
  290. package/picklist/picklist.d.ts +23 -3
  291. package/popover/popover.d.ts +8 -5
  292. package/progressbar/progressbar.d.ts +7 -3
  293. package/rating/rating.d.ts +11 -5
  294. package/scroller/scroller.d.ts +9 -4
  295. package/scrollpanel/scrollpanel.d.ts +7 -3
  296. package/scrolltop/scrolltop.d.ts +7 -4
  297. package/select/select.d.ts +31 -13
  298. package/selectbutton/selectbutton.d.ts +7 -3
  299. package/sidebar/sidebar.d.ts +9 -2
  300. package/speeddial/speeddial.d.ts +9 -4
  301. package/splitbutton/splitbutton.d.ts +9 -5
  302. package/splitter/splitter.d.ts +4 -4
  303. package/stepper/stepper.d.ts +8 -3
  304. package/table/table.d.ts +2 -2
  305. package/tabmenu/tabmenu.d.ts +12 -7
  306. package/tabs/tablist.d.ts +6 -2
  307. package/tabview/tabview.d.ts +16 -7
  308. package/tag/tag.d.ts +8 -9
  309. package/tieredmenu/tieredmenu.d.ts +10 -6
  310. package/timeline/timeline.d.ts +7 -2
  311. package/toast/toast.d.ts +7 -3
  312. package/togglebutton/togglebutton.d.ts +8 -3
  313. package/toggleswitch/toggleswitch.d.ts +6 -2
  314. package/toolbar/toolbar.d.ts +9 -4
  315. package/tooltip/tooltip.d.ts +2 -1
  316. package/tree/tree.d.ts +23 -10
  317. package/treeselect/treeselect.d.ts +26 -12
  318. package/treetable/treetable.d.ts +7 -5
@@ -1,7 +1,7 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, inject, Input, NgModule, Output, ViewEncapsulation } from '@angular/core';
2
+ import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, ContentChildren, EventEmitter, forwardRef, inject, Input, NgModule, Output, ViewEncapsulation } from '@angular/core';
3
3
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { SharedModule } from 'primeng/api';
4
+ import { PrimeTemplate, SharedModule } from 'primeng/api';
5
5
  import { AutoFocus } from 'primeng/autofocus';
6
6
  import { BaseComponent } from 'primeng/basecomponent';
7
7
  import { InputText } from 'primeng/inputtext';
@@ -34,7 +34,7 @@ function InputOtp_ng_container_0_ng_container_2_Template(rf, ctx) { if (rf & 1)
34
34
  const i_r2 = i0.ɵɵnextContext().$implicit;
35
35
  const ctx_r2 = i0.ɵɵnextContext();
36
36
  i0.ɵɵadvance();
37
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.inputTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c1, ctx_r2.getToken(i_r2 - 1), ctx_r2.getTemplateEvents(i_r2 - 1), i_r2));
37
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.inputTemplate || ctx_r2._inputTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c1, ctx_r2.getToken(i_r2 - 1), ctx_r2.getTemplateEvents(i_r2 - 1), i_r2));
38
38
  } }
39
39
  function InputOtp_ng_container_0_Template(rf, ctx) { if (rf & 1) {
40
40
  i0.ɵɵelementContainerStart(0);
@@ -43,9 +43,9 @@ function InputOtp_ng_container_0_Template(rf, ctx) { if (rf & 1) {
43
43
  } if (rf & 2) {
44
44
  const ctx_r2 = i0.ɵɵnextContext();
45
45
  i0.ɵɵadvance();
46
- i0.ɵɵproperty("ngIf", !ctx_r2.inputTemplate);
46
+ i0.ɵɵproperty("ngIf", !ctx_r2.inputTemplate && !ctx_r2._inputTemplate);
47
47
  i0.ɵɵadvance();
48
- i0.ɵɵproperty("ngIf", ctx_r2.inputTemplate);
48
+ i0.ɵɵproperty("ngIf", ctx_r2.inputTemplate || ctx_r2._inputTemplate);
49
49
  } }
50
50
  export const INPUT_OTP_VALUE_ACCESSOR = {
51
51
  provide: NG_VALUE_ACCESSOR,
@@ -136,6 +136,8 @@ export class InputOtp extends BaseComponent {
136
136
  * @group Templates
137
137
  */
138
138
  inputTemplate;
139
+ templates;
140
+ _inputTemplate;
139
141
  tokens = [];
140
142
  onModelChange = () => { };
141
143
  onModelTouched = () => { };
@@ -147,6 +149,18 @@ export class InputOtp extends BaseComponent {
147
149
  return this.mask ? 'password' : 'text';
148
150
  }
149
151
  _componentStyle = inject(InputOtpStyle);
152
+ ngAfterContentInit() {
153
+ this.templates.forEach((item) => {
154
+ switch (item.getType()) {
155
+ case 'input':
156
+ this._inputTemplate = item.template;
157
+ break;
158
+ default:
159
+ this._inputTemplate = item.template;
160
+ break;
161
+ }
162
+ });
163
+ }
150
164
  getToken(index) {
151
165
  return this.tokens[index];
152
166
  }
@@ -304,10 +318,12 @@ export class InputOtp extends BaseComponent {
304
318
  }
305
319
  static ɵfac = /*@__PURE__*/ (() => { let ɵInputOtp_BaseFactory; return function InputOtp_Factory(__ngFactoryType__) { return (ɵInputOtp_BaseFactory || (ɵInputOtp_BaseFactory = i0.ɵɵgetInheritedFactory(InputOtp)))(__ngFactoryType__ || InputOtp); }; })();
306
320
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: InputOtp, selectors: [["p-inputOtp"], ["p-inputotp"], ["p-input-otp"]], contentQueries: function InputOtp_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
307
- i0.ɵɵcontentQuery(dirIndex, _c0, 5);
321
+ i0.ɵɵcontentQuery(dirIndex, _c0, 4);
322
+ i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);
308
323
  } if (rf & 2) {
309
324
  let _t;
310
325
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputTemplate = _t.first);
326
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);
311
327
  } }, hostAttrs: [1, "p-inputotp", "p-component"], inputs: { invalid: "invalid", disabled: "disabled", readonly: "readonly", variant: "variant", tabindex: "tabindex", length: "length", styleClass: "styleClass", mask: "mask", integerOnly: "integerOnly", autofocus: [2, "autofocus", "autofocus", booleanAttribute], size: "size" }, outputs: { onChange: "onChange", onFocus: "onFocus", onBlur: "onBlur" }, standalone: true, features: [i0.ɵɵProvidersFeature([INPUT_OTP_VALUE_ACCESSOR, InputOtpStyle]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 1, vars: 2, consts: [[4, "ngFor", "ngForOf", "ngForTrackBy"], [4, "ngIf"], ["type", "text", "pInputText", "", 1, "p-inputotp-input", 3, "input", "focus", "blur", "paste", "keydown", "value", "maxLength", "type", "pSize", "variant", "readonly", "disabled", "tabindex", "pAutoFocus", "ngClass"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"]], template: function InputOtp_Template(rf, ctx) { if (rf & 1) {
312
328
  i0.ɵɵtemplate(0, InputOtp_ng_container_0_Template, 3, 2, "ng-container", 0);
313
329
  } if (rf & 2) {
@@ -322,7 +338,7 @@ export class InputOtp extends BaseComponent {
322
338
  imports: [CommonModule, InputText, AutoFocus, SharedModule],
323
339
  template: `
324
340
  <ng-container *ngFor="let i of getRange(length); trackBy: trackByFn">
325
- <ng-container *ngIf="!inputTemplate">
341
+ <ng-container *ngIf="!inputTemplate && !_inputTemplate">
326
342
  <input
327
343
  type="text"
328
344
  pInputText
@@ -344,8 +360,8 @@ export class InputOtp extends BaseComponent {
344
360
  [ngClass]="styleClass"
345
361
  />
346
362
  </ng-container>
347
- <ng-container *ngIf="inputTemplate">
348
- <ng-container *ngTemplateOutlet="inputTemplate; context: { $implicit: getToken(i - 1), events: getTemplateEvents(i - 1), index: i }"> </ng-container>
363
+ <ng-container *ngIf="inputTemplate || _inputTemplate">
364
+ <ng-container *ngTemplateOutlet="inputTemplate || _inputTemplate; context: { $implicit: getToken(i - 1), events: getTemplateEvents(i - 1), index: i }"> </ng-container>
349
365
  </ng-container>
350
366
  </ng-container>
351
367
  `,
@@ -387,7 +403,10 @@ export class InputOtp extends BaseComponent {
387
403
  type: Output
388
404
  }], inputTemplate: [{
389
405
  type: ContentChild,
390
- args: ['input']
406
+ args: ['input', { descendants: false }]
407
+ }], templates: [{
408
+ type: ContentChildren,
409
+ args: [PrimeTemplate]
391
410
  }] }); })();
392
411
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InputOtp, { className: "InputOtp" }); })();
393
412
  export class InputOtpModule {
@@ -403,4 +422,4 @@ export class InputOtpModule {
403
422
  }]
404
423
  }], null, null); })();
405
424
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(InputOtpModule, { imports: [InputOtp, SharedModule], exports: [InputOtp, SharedModule] }); })();
406
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRvdHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5wdXRvdHAvaW5wdXRvdHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztJQTJEMUMsNkJBQXFDO0lBQ2pDLGdDQW1CRTtJQUhFLEFBREEsQUFEQSxBQURBLEFBREEsNE9BQVMsOEJBQW9CLENBQUMsQ0FBQyxLQUFDLHFMQUN2QiwyQkFBb0IsS0FBQyxtTEFDdEIsMEJBQW1CLEtBQUMscUxBQ25CLHNCQUFlLEtBQUMseUxBQ2Qsd0JBQWlCLEtBQUM7SUFoQmpDLGlCQW1CRTs7Ozs7SUFoQkUsY0FBMEI7SUFlMUIsQUFEQSxBQU5BLEFBREEsQUFEQSxBQURBLEFBREEsQUFGQSxBQURBLEFBREEsa0RBQTBCLGdCQUNYLDBCQUNHLHNCQUVKLDJCQUNLLDZCQUNFLDZCQUNBLDZCQUNBLHlDQU1TLDhCQUNSOzs7SUFJMUIsd0JBQXFKOzs7SUFEekosNkJBQW9D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O21CQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBSzdCLElBQUk7a0JBQVosS0FBSztZQUtJLFFBQVE7a0JBQWpCLE1BQU07WUFNRyxPQUFPO2tCQUFoQixNQUFNO1lBTUcsTUFBTTtrQkFBZixNQUFNO1lBUWdCLGFBQWE7a0JBQW5DLFlBQVk7bUJBQUMsT0FBTzs7a0ZBaEZaLFFBQVE7QUFzU3JCLE1BQU0sT0FBTyxjQUFjO3dHQUFkLGNBQWM7NERBQWQsY0FBYztnRUFIYixRQUFRLEVBQUUsWUFBWSxFQUNaLFlBQVk7O2lGQUV2QixjQUFjO2NBSjFCLFFBQVE7ZUFBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDO2FBQ3BDOzt3RkFDWSxjQUFjLGNBdFNkLFFBQVEsRUFtU0csWUFBWSxhQW5TdkIsUUFBUSxFQW9TRyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIGJvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBpbmplY3QsIElucHV0LCBOZ01vZHVsZSwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQXV0b0ZvY3VzIH0gZnJvbSAncHJpbWVuZy9hdXRvZm9jdXMnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvYmFzZWNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dFRleHQgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQgeyBJbnB1dE90cFN0eWxlIH0gZnJvbSAnLi9zdHlsZS9pbnB1dG90cHN0eWxlJztcblxuZXhwb3J0IGNvbnN0IElOUFVUX09UUF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0T3RwKSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuLyoqXG4gKiBJbnB1dCBjaGFuZ2UgZXZlbnQuXG4gKiBAcHJvcGVydHkge0V2ZW50fSBvcmlnaW5hbEV2ZW50IC0gYnJvd3NlciBldmVudC5cbiAqIEBwcm9wZXJ0eSB7YW55fSAgdmFsdWUgLSB1cGRhdGVkIHZhbHVlLlxuICogQGdyb3VwIEludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0T3RwQ2hhbmdlRXZlbnQge1xuICAgIG9yaWdpbmFsRXZlbnQ6IEV2ZW50O1xuICAgIHZhbHVlOiBhbnk7XG59XG5cbi8qKlxuICogQ29udGV4dCBpbnRlcmZhY2UgZm9yIHRoZSBpbnB1dCB0ZW1wbGF0ZSBldmVudHMuXG4gKiBAcHJvcGVydHkgeyhldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpID0+IHZvaWR9IGlucHV0IC0gaW5wdXQgZXZlbnQuXG4gKiBAcHJvcGVydHkgeyhldmVudDogRXZlbnQpfSBrZXlkb3duIC0ga2V5ZG93biBldmVudC5cbiAqIEBwcm9wZXJ0eSB7KGV2ZW50OiBFdmVudCl9IGZvY3VzIC0gZm9jdXMgZXZlbnQuXG4gKiBAcHJvcGVydHkgeyhldmVudDogRXZlbnQpfSBibHVyIC0gYmx1ciBldmVudC5cbiAqIEBwcm9wZXJ0eSB7KGV2ZW50OiBFdmVudCl9IHBhc3RlIC0gcGFzdGUgZXZlbnQuXG4gKiBAZ3JvdXAgSW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRPdHBUZW1wbGF0ZUV2ZW50cyB7XG4gICAgaW5wdXQ6IChldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gICAga2V5ZG93bjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgICBmb2N1czogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgICBibHVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xuICAgIHBhc3RlOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIENvbnRleHQgb2YgdGhlIGlucHV0IHRlbXBsYXRlLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBzdHJpbmd9ICRpbXBsaWNpdCAtIHRva2VuIHZhbHVlLlxuICogQHByb3BlcnR5IHtJbnB1dE90cFRlbXBsYXRlRXZlbnRzfSBldmVudHMgLSBCcm93c2VyIGV2ZW50cyBvZiB0aGUgdGVtcGxhdGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gaW5kZXggLSBpbmRleCBvZiB0aGUgdG9rZW4uXG4gKiBAZ3JvdXAgSW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRPdHBJbnB1dFRlbXBsYXRlQ29udGV4dCB7XG4gICAgJGltcGxpY2l0OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgZXZlbnRzOiBJbnB1dE90cFRlbXBsYXRlRXZlbnRzO1xuICAgIGluZGV4OiBudW1iZXI7XG59XG5cbi8qKlxuICogSW5wdXQgT3RwIGlzIHVzZWQgdG8gZW50ZXIgb25lIHRpbWUgcGFzc3dvcmRzLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWlucHV0T3RwLCBwLWlucHV0b3RwLCBwLWlucHV0LW90cCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJbnB1dFRleHQsIEF1dG9Gb2N1cywgU2hhcmVkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpIG9mIGdldFJhbmdlKGxlbmd0aCk7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbnB1dFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0TW9kZWxWYWx1ZShpKVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImlucHV0VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1pbnB1dG90cC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIFtwU2l6ZV09XCJzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhcmlhbnRdPVwidmFyaWFudFwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudCwgaSAtIDEpXCJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dEJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtwQXV0b0ZvY3VzXT1cImdldEF1dG9mb2N1cyhpKVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBnZXRUb2tlbihpIC0gMSksIGV2ZW50czogZ2V0VGVtcGxhdGVFdmVudHMoaSAtIDEpLCBpbmRleDogaSB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtJTlBVVF9PVFBfVkFMVUVfQUNDRVNTT1IsIElucHV0T3RwU3R5bGVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdwLWlucHV0b3RwIHAtY29tcG9uZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRPdHAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBoYXZlIGludmFsaWQgc3RhdGUgc3R5bGUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IGFuIGlucHV0IGZpZWxkIGlzIHJlYWQtb25seS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5wdXQgdmFyaWFudCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHZhcmlhbnQ6ICdmaWxsZWQnIHwgJ291dGxpbmVkJyA9ICdvdXRsaW5lZCc7XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gaW5pdGlhdGUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGVuZ3RoOiBudW1iZXIgPSA0O1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBNYXNrIHBhdHRlcm4uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbWFzazogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgYW4gaW5wdXQgZmllbGQgaXMgaW50ZWdlci1vbmx5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGludGVnZXJPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IGdldCBmb2N1cyBvbiBsb2FkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNpemU6ICdsYXJnZScgfCAnc21hbGwnO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSBvbiB2YWx1ZSBjaGFuZ2UuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SW5wdXRPdHBDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElucHV0T3RwQ2hhbmdlRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIGNvbXBvbmVudCByZWNlaXZlcyBmb2N1cy5cbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIEJyb3dzZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIGNvbXBvbmVudCBsb3NlcyBmb2N1cy5cbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIEJyb3dzZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIElucHV0IHRlbXBsYXRlLlxuICAgICAqIEBwYXJhbSB7SW5wdXRPdHBJbnB1dFRlbXBsYXRlQ29udGV4dH0gY29udGV4dCAtIENvbnRleHQgb2YgdGhlIHRlbXBsYXRlXG4gICAgICogQHNlZSB7QGxpbmsgSW5wdXRPdHBJbnB1dFRlbXBsYXRlQ29udGV4dH1cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnaW5wdXQnKSBpbnB1dFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgdG9rZW5zOiBhbnkgPSBbXTtcblxuICAgIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIHZhbHVlOiBhbnk7XG5cbiAgICBnZXQgaW5wdXRNb2RlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVnZXJPbmx5ID8gJ251bWVyaWMnIDogJ3RleHQnO1xuICAgIH1cblxuICAgIGdldCBpbnB1dFR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFzayA/ICdwYXNzd29yZCcgOiAndGV4dCc7XG4gICAgfVxuXG4gICAgX2NvbXBvbmVudFN0eWxlID0gaW5qZWN0KElucHV0T3RwU3R5bGUpO1xuXG4gICAgZ2V0VG9rZW4oaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5zW2luZGV4XTtcbiAgICB9XG5cbiAgICBnZXRUZW1wbGF0ZUV2ZW50cyhpbmRleCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5wdXQ6IChldmVudCkgPT4gdGhpcy5vbklucHV0KGV2ZW50LCBpbmRleCksXG4gICAgICAgICAgICBrZXlkb3duOiAoZXZlbnQpID0+IHRoaXMub25LZXlEb3duKGV2ZW50KSxcbiAgICAgICAgICAgIGZvY3VzOiAoZXZlbnQpID0+IHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KSxcbiAgICAgICAgICAgIGJsdXI6IChldmVudCkgPT4gdGhpcy5vbkJsdXIuZW1pdChldmVudCksXG4gICAgICAgICAgICBwYXN0ZTogKGV2ZW50KSA9PiB0aGlzLm9uUGFzdGUoZXZlbnQpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25JbnB1dChldmVudCwgaW5kZXgpIHtcbiAgICAgICAgdGhpcy50b2tlbnNbaW5kZXhdID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50KTtcblxuICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAnZGVsZXRlQ29udGVudEJhY2t3YXJkJykge1xuICAgICAgICAgICAgdGhpcy5tb3ZlVG9QcmV2KGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5pbnB1dFR5cGUgPT09ICdpbnNlcnRUZXh0JyB8fCBldmVudC5pbnB1dFR5cGUgPT09ICdkZWxldGVDb250ZW50Rm9yd2FyZCcpIHtcbiAgICAgICAgICAgIHRoaXMubW92ZVRvTmV4dChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVNb2RlbChldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy50b2tlbnMuam9pbignJyk7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZShuZXdWYWx1ZSk7XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdmFsdWU6IG5ld1ZhbHVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIHRoaXMubGVuZ3RoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJycpLnNsaWNlKDAsIHRoaXMubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZVRva2VucygpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHVwZGF0ZVRva2VucygpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5zID0gWy4uLnRoaXMudmFsdWVdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VucyA9IHRoaXMudmFsdWUudG9TdHJpbmcoKS5zcGxpdCgnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRva2VucyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TW9kZWxWYWx1ZShpOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5zW2kgLSAxXSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXRBdXRvZm9jdXMoaTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdXRvZm9jdXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgbW92ZVRvUHJldihldmVudCkge1xuICAgICAgICBsZXQgcHJldklucHV0ID0gdGhpcy5maW5kUHJldklucHV0KGV2ZW50LnRhcmdldCk7XG5cbiAgICAgICAgaWYgKHByZXZJbnB1dCkge1xuICAgICAgICAgICAgcHJldklucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICBwcmV2SW5wdXQuc2VsZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlVG9OZXh0KGV2ZW50KSB7XG4gICAgICAgIGxldCBuZXh0SW5wdXQgPSB0aGlzLmZpbmROZXh0SW5wdXQoZXZlbnQudGFyZ2V0KTtcblxuICAgICAgICBpZiAobmV4dElucHV0KSB7XG4gICAgICAgICAgICBuZXh0SW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgIG5leHRJbnB1dC5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmROZXh0SW5wdXQoZWxlbWVudCkge1xuICAgICAgICBsZXQgbmV4dEVsZW1lbnQgPSBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcblxuICAgICAgICBpZiAoIW5leHRFbGVtZW50KSByZXR1cm47XG5cbiAgICAgICAgcmV0dXJuIG5leHRFbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnID8gbmV4dEVsZW1lbnQgOiB0aGlzLmZpbmROZXh0SW5wdXQobmV4dEVsZW1lbnQpO1xuICAgIH1cblxuICAgIGZpbmRQcmV2SW5wdXQoZWxlbWVudCkge1xuICAgICAgICBsZXQgcHJldkVsZW1lbnQgPSBlbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG5cbiAgICAgICAgaWYgKCFwcmV2RWxlbWVudCkgcmV0dXJuO1xuXG4gICAgICAgIHJldHVybiBwcmV2RWxlbWVudC5ub2RlTmFtZSA9PT0gJ0lOUFVUJyA/IHByZXZFbGVtZW50IDogdGhpcy5maW5kUHJldklucHV0KHByZXZFbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbklucHV0Rm9jdXMoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQudGFyZ2V0LnNlbGVjdCgpO1xuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25LZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5hbHRLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlVG9QcmV2KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlVG9QcmV2KGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlVG9OZXh0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLmludGVnZXJPbmx5ICYmICEoKGV2ZW50LmNvZGUuc3RhcnRzV2l0aCgnRGlnaXQnKSB8fCBldmVudC5jb2RlLnN0YXJ0c1dpdGgoJ051bXBhZCcpKSAmJiBOdW1iZXIoZXZlbnQua2V5KSA+PSAwICYmIE51bWJlcihldmVudC5rZXkpIDw9IDkpKSB8fCAodGhpcy50b2tlbnMuam9pbignJykubGVuZ3RoID49IHRoaXMubGVuZ3RoICYmIGV2ZW50LmNvZGUgIT09ICdEZWxldGUnKSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25QYXN0ZShldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIGxldCBwYXN0ZSA9IGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dCcpO1xuXG4gICAgICAgICAgICBpZiAocGFzdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhc3RlZENvZGUgPSBwYXN0ZS5zdWJzdHJpbmcoMCwgdGhpcy5sZW5ndGggKyAxKTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbnRlZ2VyT25seSB8fCAhaXNOYU4ocGFzdGVkQ29kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2tlbnMgPSBwYXN0ZWRDb2RlLnNwbGl0KCcnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UmFuZ2UobjogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogbiB9LCAoXywgaW5kZXgpID0+IGluZGV4ICsgMSk7XG4gICAgfVxuXG4gICAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbSW5wdXRPdHAsIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW0lucHV0T3RwLCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIElucHV0T3RwTW9kdWxlIHt9XG4iXX0=
425
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRvdHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5wdXRvdHAvaW5wdXRvdHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQTBCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVPLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztJQTREMUMsNkJBQXdEO0lBQ3BELGdDQW1CRTtJQUhFLEFBREEsQUFEQSxBQURBLEFBREEsNE9BQVMsOEJBQW9CLENBQUMsQ0FBQyxLQUFDLHFMQUN2QiwyQkFBb0IsS0FBQyxtTEFDdEIsMEJBQW1CLEtBQUMscUxBQ25CLHNCQUFlLEtBQUMseUxBQ2Qsd0JBQWlCLEtBQUM7SUFoQmpDLGlCQW1CRTs7Ozs7SUFoQkUsY0FBMEI7SUFlMUIsQUFEQSxBQU5BLEFBREEsQUFEQSxBQURBLEFBREEsQUFGQSxBQURBLEFBREEsa0RBQTBCLGdCQUNYLDBCQUNHLHNCQUVKLDJCQUNLLDZCQUNFLDZCQUNBLDZCQUNBLHlDQU1TLDhCQUNSOzs7SUFJMUIs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bW9uJztcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIGJvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIGluamVjdCwgSW5wdXQsIE5nTW9kdWxlLCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEF1dG9Gb2N1cyB9IGZyb20gJ3ByaW1lbmcvYXV0b2ZvY3VzJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdwcmltZW5nL2Jhc2Vjb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRUZXh0IH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgSW5wdXRPdHBTdHlsZSB9IGZyb20gJy4vc3R5bGUvaW5wdXRvdHBzdHlsZSc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ3ByaW1lbmcvdHMtaGVscGVycyc7XG5cbmV4cG9ydCBjb25zdCBJTlBVVF9PVFBfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dE90cCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogSW5wdXQgY2hhbmdlIGV2ZW50LlxuICogQHByb3BlcnR5IHtFdmVudH0gb3JpZ2luYWxFdmVudCAtIGJyb3dzZXIgZXZlbnQuXG4gKiBAcHJvcGVydHkge2FueX0gIHZhbHVlIC0gdXBkYXRlZCB2YWx1ZS5cbiAqIEBncm91cCBJbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dE90cENoYW5nZUV2ZW50IHtcbiAgICBvcmlnaW5hbEV2ZW50OiBFdmVudDtcbiAgICB2YWx1ZTogYW55O1xufVxuXG4vKipcbiAqIENvbnRleHQgaW50ZXJmYWNlIGZvciB0aGUgaW5wdXQgdGVtcGxhdGUgZXZlbnRzLlxuICogQHByb3BlcnR5IHsoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSA9PiB2b2lkfSBpbnB1dCAtIGlucHV0IGV2ZW50LlxuICogQHByb3BlcnR5IHsoZXZlbnQ6IEV2ZW50KX0ga2V5ZG93biAtIGtleWRvd24gZXZlbnQuXG4gKiBAcHJvcGVydHkgeyhldmVudDogRXZlbnQpfSBmb2N1cyAtIGZvY3VzIGV2ZW50LlxuICogQHByb3BlcnR5IHsoZXZlbnQ6IEV2ZW50KX0gYmx1ciAtIGJsdXIgZXZlbnQuXG4gKiBAcHJvcGVydHkgeyhldmVudDogRXZlbnQpfSBwYXN0ZSAtIHBhc3RlIGV2ZW50LlxuICogQGdyb3VwIEludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0T3RwVGVtcGxhdGVFdmVudHMge1xuICAgIGlucHV0OiAoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICAgIGtleWRvd246IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG4gICAgZm9jdXM6IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG4gICAgYmx1cjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgICBwYXN0ZTogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBDb250ZXh0IG9mIHRoZSBpbnB1dCB0ZW1wbGF0ZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgc3RyaW5nfSAkaW1wbGljaXQgLSB0b2tlbiB2YWx1ZS5cbiAqIEBwcm9wZXJ0eSB7SW5wdXRPdHBUZW1wbGF0ZUV2ZW50c30gZXZlbnRzIC0gQnJvd3NlciBldmVudHMgb2YgdGhlIHRlbXBsYXRlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGluZGV4IC0gaW5kZXggb2YgdGhlIHRva2VuLlxuICogQGdyb3VwIEludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0T3RwSW5wdXRUZW1wbGF0ZUNvbnRleHQge1xuICAgICRpbXBsaWNpdDogbnVtYmVyIHwgc3RyaW5nO1xuICAgIGV2ZW50czogSW5wdXRPdHBUZW1wbGF0ZUV2ZW50cztcbiAgICBpbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIElucHV0IE90cCBpcyB1c2VkIHRvIGVudGVyIG9uZSB0aW1lIHBhc3N3b3Jkcy5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1pbnB1dE90cCwgcC1pbnB1dG90cCwgcC1pbnB1dC1vdHAnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW5wdXRUZXh0LCBBdXRvRm9jdXMsIFNoYXJlZE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaSBvZiBnZXRSYW5nZShsZW5ndGgpOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5wdXRUZW1wbGF0ZSAmJiAhX2lucHV0VGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRNb2RlbFZhbHVlKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiaW5wdXRUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWlucHV0b3RwLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgW3BTaXplXT1cInNpemVcIlxuICAgICAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJ2YXJpYW50XCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50LCBpIC0gMSlcIlxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3BBdXRvRm9jdXNdPVwiZ2V0QXV0b2ZvY3VzKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic3R5bGVDbGFzc1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0VGVtcGxhdGUgfHwgX2lucHV0VGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZSB8fCBfaW5wdXRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGdldFRva2VuKGkgLSAxKSwgZXZlbnRzOiBnZXRUZW1wbGF0ZUV2ZW50cyhpIC0gMSksIGluZGV4OiBpIH1cIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW0lOUFVUX09UUF9WQUxVRV9BQ0NFU1NPUiwgSW5wdXRPdHBTdHlsZV0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3AtaW5wdXRvdHAgcC1jb21wb25lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dE90cCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICAvKipcbiAgICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZSBjb21wb25lbnQgc2hvdWxkIGhhdmUgaW52YWxpZCBzdGF0ZSBzdHlsZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgYW4gaW5wdXQgZmllbGQgaXMgcmVhZC1vbmx5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBpbnB1dCB2YXJpYW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdmFyaWFudDogJ2ZpbGxlZCcgfCAnb3V0bGluZWQnID0gJ291dGxpbmVkJztcbiAgICAvKipcbiAgICAgKiBJbmRleCBvZiB0aGUgZWxlbWVudCBpbiB0YWJiaW5nIG9yZGVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICAvKipcbiAgICAgKiBOdW1iZXIgb2YgY2hhcmFjdGVycyB0byBpbml0aWF0ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsZW5ndGg6IG51bWJlciA9IDQ7XG4gICAgLyoqXG4gICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGlucHV0IGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE1hc2sgcGF0dGVybi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtYXNrOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCBhbiBpbnB1dCBmaWVsZCBpcyBpbnRlZ2VyLW9ubHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaW50ZWdlck9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZSBjb21wb25lbnQgc2hvdWxkIGF1dG9tYXRpY2FsbHkgZ2V0IGZvY3VzIG9uIGxvYWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9mb2N1czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2l6ZTogJ2xhcmdlJyB8ICdzbWFsbCc7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIHZhbHVlIGNoYW5nZS5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dE90cENoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRPdHBDaGFuZ2VFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgY29tcG9uZW50IHJlY2VpdmVzIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Gb2N1czogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgY29tcG9uZW50IGxvc2VzIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogSW5wdXQgdGVtcGxhdGUuXG4gICAgICogQHBhcmFtIHtJbnB1dE90cElucHV0VGVtcGxhdGVDb250ZXh0fSBjb250ZXh0IC0gQ29udGV4dCBvZiB0aGUgdGVtcGxhdGVcbiAgICAgKiBAc2VlIHtAbGluayBJbnB1dE90cElucHV0VGVtcGxhdGVDb250ZXh0fVxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdpbnB1dCcsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGlucHV0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogTnVsbGFibGU8UXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+PjtcblxuICAgIF9pbnB1dFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgdG9rZW5zOiBhbnkgPSBbXTtcblxuICAgIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIHZhbHVlOiBhbnk7XG5cbiAgICBnZXQgaW5wdXRNb2RlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVnZXJPbmx5ID8gJ251bWVyaWMnIDogJ3RleHQnO1xuICAgIH1cblxuICAgIGdldCBpbnB1dFR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFzayA/ICdwYXNzd29yZCcgOiAndGV4dCc7XG4gICAgfVxuXG4gICAgX2NvbXBvbmVudFN0eWxlID0gaW5qZWN0KElucHV0T3RwU3R5bGUpO1xuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICAodGhpcy50ZW1wbGF0ZXMgYXMgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+KS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5wdXRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRUb2tlbihpbmRleCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnNbaW5kZXhdO1xuICAgIH1cblxuICAgIGdldFRlbXBsYXRlRXZlbnRzKGluZGV4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbnB1dDogKGV2ZW50KSA9PiB0aGlzLm9uSW5wdXQoZXZlbnQsIGluZGV4KSxcbiAgICAgICAgICAgIGtleWRvd246IChldmVudCkgPT4gdGhpcy5vbktleURvd24oZXZlbnQpLFxuICAgICAgICAgICAgZm9jdXM6IChldmVudCkgPT4gdGhpcy5vbkZvY3VzLmVtaXQoZXZlbnQpLFxuICAgICAgICAgICAgYmx1cjogKGV2ZW50KSA9PiB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KSxcbiAgICAgICAgICAgIHBhc3RlOiAoZXZlbnQpID0+IHRoaXMub25QYXN0ZShldmVudClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvbklucHV0KGV2ZW50LCBpbmRleCkge1xuICAgICAgICB0aGlzLnRva2Vuc1tpbmRleF0gPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZXZlbnQpO1xuXG4gICAgICAgIGlmIChldmVudC5pbnB1dFR5cGUgPT09ICdkZWxldGVDb250ZW50QmFja3dhcmQnKSB7XG4gICAgICAgICAgICB0aGlzLm1vdmVUb1ByZXYoZXZlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gJ2luc2VydFRleHQnIHx8IGV2ZW50LmlucHV0VHlwZSA9PT0gJ2RlbGV0ZUNvbnRlbnRGb3J3YXJkJykge1xuICAgICAgICAgICAgdGhpcy5tb3ZlVG9OZXh0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZU1vZGVsKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnRva2Vucy5qb2luKCcnKTtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKG5ld1ZhbHVlKTtcblxuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICB2YWx1ZTogbmV3VmFsdWVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgdGhpcy5sZW5ndGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWUudG9TdHJpbmcoKS5zcGxpdCgnJykuc2xpY2UoMCwgdGhpcy5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlVG9rZW5zKCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlVG9rZW5zKCkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2tlbnMgPSBbLi4udGhpcy52YWx1ZV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5zID0gdGhpcy52YWx1ZS50b1N0cmluZygpLnNwbGl0KCcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9rZW5zID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRNb2RlbFZhbHVlKGk6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnNbaSAtIDFdIHx8ICcnO1xuICAgIH1cblxuICAgIGdldEF1dG9mb2N1cyhpOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGkgPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dG9mb2N1cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBtb3ZlVG9QcmV2KGV2ZW50KSB7XG4gICAgICAgIGxldCBwcmV2SW5wdXQgPSB0aGlzLmZpbmRQcmV2SW5wdXQoZXZlbnQudGFyZ2V0KTtcblxuICAgICAgICBpZiAocHJldklucHV0KSB7XG4gICAgICAgICAgICBwcmV2SW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgIHByZXZJbnB1dC5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVUb05leHQoZXZlbnQpIHtcbiAgICAgICAgbGV0IG5leHRJbnB1dCA9IHRoaXMuZmluZE5leHRJbnB1dChldmVudC50YXJnZXQpO1xuXG4gICAgICAgIGlmIChuZXh0SW5wdXQpIHtcbiAgICAgICAgICAgIG5leHRJbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgbmV4dElucHV0LnNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZE5leHRJbnB1dChlbGVtZW50KSB7XG4gICAgICAgIGxldCBuZXh0RWxlbWVudCA9IGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgIGlmICghbmV4dEVsZW1lbnQpIHJldHVybjtcblxuICAgICAgICByZXR1cm4gbmV4dEVsZW1lbnQubm9kZU5hbWUgPT09ICdJTlBVVCcgPyBuZXh0RWxlbWVudCA6IHRoaXMuZmluZE5leHRJbnB1dChuZXh0RWxlbWVudCk7XG4gICAgfVxuXG4gICAgZmluZFByZXZJbnB1dChlbGVtZW50KSB7XG4gICAgICAgIGxldCBwcmV2RWxlbWVudCA9IGVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZztcblxuICAgICAgICBpZiAoIXByZXZFbGVtZW50KSByZXR1cm47XG5cbiAgICAgICAgcmV0dXJuIHByZXZFbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnID8gcHJldkVsZW1lbnQgOiB0aGlzLmZpbmRQcmV2SW5wdXQocHJldkVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uSW5wdXRGb2N1cyhldmVudCkge1xuICAgICAgICBldmVudC50YXJnZXQuc2VsZWN0KCk7XG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbklucHV0Qmx1cihldmVudCkge1xuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVUb1ByZXYoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVUb1ByZXYoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVUb05leHQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuaW50ZWdlck9ubHkgJiYgISgoZXZlbnQuY29kZS5zdGFydHNXaXRoKCdEaWdpdCcpIHx8IGV2ZW50LmNvZGUuc3RhcnRzV2l0aCgnTnVtcGFkJykpICYmIE51bWJlcihldmVudC5rZXkpID49IDAgJiYgTnVtYmVyKGV2ZW50LmtleSkgPD0gOSkpIHx8ICh0aGlzLnRva2Vucy5qb2luKCcnKS5sZW5ndGggPj0gdGhpcy5sZW5ndGggJiYgZXZlbnQuY29kZSAhPT0gJ0RlbGV0ZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblBhc3RlKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgbGV0IHBhc3RlID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0Jyk7XG5cbiAgICAgICAgICAgIGlmIChwYXN0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFzdGVkQ29kZSA9IHBhc3RlLnN1YnN0cmluZygwLCB0aGlzLmxlbmd0aCArIDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmludGVnZXJPbmx5IHx8ICFpc05hTihwYXN0ZWRDb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRva2VucyA9IHBhc3RlZENvZGUuc3BsaXQoJycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRSYW5nZShuOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBuIH0sIChfLCBpbmRleCkgPT4gaW5kZXggKyAxKTtcbiAgICB9XG5cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtJbnB1dE90cCwgU2hhcmVkTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbSW5wdXRPdHAsIFNoYXJlZE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRPdHBNb2R1bGUge31cbiJdfQ==