primeng 17.10.0 → 17.12.0

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 (436) hide show
  1. package/api/translation.d.ts +1 -0
  2. package/calendar/calendar.d.ts +2 -2
  3. package/chip/chip.d.ts +9 -2
  4. package/chips/chips.d.ts +4 -0
  5. package/confirmdialog/confirmdialog.d.ts +1 -0
  6. package/dialog/dialog.d.ts +1 -1
  7. package/dynamicdialog/dynamicdialog-ref.d.ts +1 -1
  8. package/esm2022/accordion/accordion.mjs +10 -10
  9. package/esm2022/animate/animate.mjs +7 -7
  10. package/esm2022/animateonscroll/animateonscroll.mjs +7 -7
  11. package/esm2022/api/confirmationservice.mjs +3 -3
  12. package/esm2022/api/contextmenuservice.mjs +3 -3
  13. package/esm2022/api/filterservice.mjs +3 -3
  14. package/esm2022/api/messageservice.mjs +3 -3
  15. package/esm2022/api/overlayservice.mjs +3 -3
  16. package/esm2022/api/primengconfig.mjs +6 -5
  17. package/esm2022/api/shared.mjs +13 -13
  18. package/esm2022/api/translation.mjs +1 -1
  19. package/esm2022/api/treedragdropservice.mjs +3 -3
  20. package/esm2022/autocomplete/autocomplete.mjs +11 -8
  21. package/esm2022/autofocus/autofocus.mjs +7 -7
  22. package/esm2022/avatar/avatar.mjs +7 -7
  23. package/esm2022/avatargroup/avatargroup.mjs +7 -7
  24. package/esm2022/badge/badge.mjs +10 -10
  25. package/esm2022/baseicon/baseicon.mjs +3 -3
  26. package/esm2022/blockui/blockui.mjs +7 -7
  27. package/esm2022/breadcrumb/breadcrumb.mjs +7 -7
  28. package/esm2022/button/button.mjs +10 -10
  29. package/esm2022/buttongroup/buttongroup.mjs +7 -7
  30. package/esm2022/calendar/calendar.mjs +29 -18
  31. package/esm2022/card/card.mjs +7 -7
  32. package/esm2022/carousel/carousel.mjs +7 -7
  33. package/esm2022/cascadeselect/cascadeselect.mjs +12 -11
  34. package/esm2022/chart/chart.mjs +7 -7
  35. package/esm2022/checkbox/checkbox.mjs +7 -7
  36. package/esm2022/chip/chip.mjs +49 -18
  37. package/esm2022/chips/chips.mjs +12 -8
  38. package/esm2022/colorpicker/colorpicker.mjs +7 -7
  39. package/esm2022/confirmdialog/confirmdialog.mjs +13 -12
  40. package/esm2022/confirmpopup/confirmpopup.mjs +7 -7
  41. package/esm2022/contextmenu/contextmenu.mjs +13 -13
  42. package/esm2022/dataview/dataview.mjs +10 -10
  43. package/esm2022/defer/defer.mjs +7 -7
  44. package/esm2022/dialog/dialog.mjs +13 -13
  45. package/esm2022/divider/divider.mjs +7 -7
  46. package/esm2022/dock/dock.mjs +7 -7
  47. package/esm2022/dragdrop/dragdrop.mjs +10 -10
  48. package/esm2022/dropdown/dropdown.mjs +12 -14
  49. package/esm2022/dynamicdialog/dialogservice.mjs +3 -3
  50. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +2 -2
  51. package/esm2022/dynamicdialog/dynamicdialog.mjs +10 -10
  52. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +3 -3
  53. package/esm2022/editor/editor.mjs +7 -7
  54. package/esm2022/fieldset/fieldset.mjs +7 -7
  55. package/esm2022/fileupload/fileupload.mjs +9 -9
  56. package/esm2022/floatlabel/floatlabel.mjs +7 -7
  57. package/esm2022/focustrap/focustrap.mjs +7 -7
  58. package/esm2022/galleria/galleria.mjs +19 -19
  59. package/esm2022/iconfield/iconfield.mjs +7 -7
  60. package/esm2022/icons/angledoubledown/angledoubledown.mjs +3 -3
  61. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +3 -3
  62. package/esm2022/icons/angledoubleright/angledoubleright.mjs +3 -3
  63. package/esm2022/icons/angledoubleup/angledoubleup.mjs +3 -3
  64. package/esm2022/icons/angledown/angledown.mjs +3 -3
  65. package/esm2022/icons/angleleft/angleleft.mjs +3 -3
  66. package/esm2022/icons/angleright/angleright.mjs +3 -3
  67. package/esm2022/icons/angleup/angleup.mjs +3 -3
  68. package/esm2022/icons/arrowdown/arrowdown.mjs +3 -3
  69. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +3 -3
  70. package/esm2022/icons/arrowdownright/arrowdownright.mjs +3 -3
  71. package/esm2022/icons/arrowleft/arrowleft.mjs +3 -3
  72. package/esm2022/icons/arrowright/arrowright.mjs +3 -3
  73. package/esm2022/icons/arrowup/arrowup.mjs +3 -3
  74. package/esm2022/icons/ban/ban.mjs +3 -3
  75. package/esm2022/icons/bars/bars.mjs +3 -3
  76. package/esm2022/icons/calendar/calendar.mjs +3 -3
  77. package/esm2022/icons/caretleft/caretleft.mjs +3 -3
  78. package/esm2022/icons/caretright/caretright.mjs +3 -3
  79. package/esm2022/icons/check/check.mjs +3 -3
  80. package/esm2022/icons/chevrondown/chevrondown.mjs +3 -3
  81. package/esm2022/icons/chevronleft/chevronleft.mjs +3 -3
  82. package/esm2022/icons/chevronright/chevronright.mjs +3 -3
  83. package/esm2022/icons/chevronup/chevronup.mjs +3 -3
  84. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +3 -3
  85. package/esm2022/icons/eye/eye.mjs +3 -3
  86. package/esm2022/icons/eyeslash/eyeslash.mjs +3 -3
  87. package/esm2022/icons/filter/filter.mjs +3 -3
  88. package/esm2022/icons/filterslash/filterslash.mjs +3 -3
  89. package/esm2022/icons/home/home.mjs +3 -3
  90. package/esm2022/icons/infocircle/infocircle.mjs +3 -3
  91. package/esm2022/icons/minus/minus.mjs +3 -3
  92. package/esm2022/icons/pencil/pencil.mjs +3 -3
  93. package/esm2022/icons/plus/plus.mjs +3 -3
  94. package/esm2022/icons/refresh/refresh.mjs +3 -3
  95. package/esm2022/icons/search/search.mjs +3 -3
  96. package/esm2022/icons/searchminus/searchminus.mjs +3 -3
  97. package/esm2022/icons/searchplus/searchplus.mjs +3 -3
  98. package/esm2022/icons/sortalt/sortalt.mjs +3 -3
  99. package/esm2022/icons/sortamountdown/sortamountdown.mjs +3 -3
  100. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +3 -3
  101. package/esm2022/icons/spinner/spinner.mjs +3 -3
  102. package/esm2022/icons/star/star.mjs +3 -3
  103. package/esm2022/icons/starfill/starfill.mjs +3 -3
  104. package/esm2022/icons/thlarge/thlarge.mjs +3 -3
  105. package/esm2022/icons/times/times.mjs +3 -3
  106. package/esm2022/icons/timescircle/timescircle.mjs +3 -3
  107. package/esm2022/icons/trash/trash.mjs +3 -3
  108. package/esm2022/icons/undo/undo.mjs +3 -3
  109. package/esm2022/icons/upload/upload.mjs +3 -3
  110. package/esm2022/icons/windowmaximize/windowmaximize.mjs +3 -3
  111. package/esm2022/icons/windowminimize/windowminimize.mjs +3 -3
  112. package/esm2022/image/image.mjs +7 -7
  113. package/esm2022/inplace/inplace.mjs +13 -13
  114. package/esm2022/inputgroup/inputgroup.mjs +7 -7
  115. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +7 -7
  116. package/esm2022/inputicon/inputicon.mjs +7 -7
  117. package/esm2022/inputmask/inputmask.mjs +7 -7
  118. package/esm2022/inputnumber/inputnumber.interface.mjs +1 -1
  119. package/esm2022/inputnumber/inputnumber.mjs +13 -12
  120. package/esm2022/inputotp/inputotp.interface.mjs +2 -0
  121. package/esm2022/inputotp/inputotp.mjs +359 -0
  122. package/esm2022/inputotp/primeng-inputotp.mjs +5 -0
  123. package/esm2022/inputotp/public_api.mjs +3 -0
  124. package/esm2022/inputswitch/inputswitch.mjs +7 -7
  125. package/esm2022/inputtext/inputtext.mjs +7 -7
  126. package/esm2022/inputtextarea/inputtextarea.mjs +7 -7
  127. package/esm2022/keyfilter/keyfilter.mjs +7 -7
  128. package/esm2022/knob/knob.mjs +7 -7
  129. package/esm2022/listbox/listbox.mjs +10 -9
  130. package/esm2022/megamenu/megamenu.mjs +10 -10
  131. package/esm2022/menu/menu.mjs +13 -13
  132. package/esm2022/menubar/menubar.mjs +25 -20
  133. package/esm2022/message/message.mjs +7 -7
  134. package/esm2022/messages/messages.mjs +17 -8
  135. package/esm2022/metergroup/metergroup.mjs +11 -11
  136. package/esm2022/multiselect/multiselect.mjs +18 -15
  137. package/esm2022/orderlist/orderlist.mjs +7 -7
  138. package/esm2022/organizationchart/organizationchart.mjs +10 -10
  139. package/esm2022/overlay/overlay.mjs +7 -7
  140. package/esm2022/overlaypanel/overlaypanel.mjs +7 -7
  141. package/esm2022/paginator/paginator.mjs +7 -7
  142. package/esm2022/panel/panel.mjs +7 -7
  143. package/esm2022/panelmenu/panelmenu.mjs +20 -21
  144. package/esm2022/password/password.mjs +13 -13
  145. package/esm2022/picklist/picklist.mjs +27 -50
  146. package/esm2022/progressbar/progressbar.mjs +7 -7
  147. package/esm2022/progressspinner/progressspinner.mjs +7 -7
  148. package/esm2022/radiobutton/radiobutton.mjs +10 -10
  149. package/esm2022/rating/rating.mjs +7 -7
  150. package/esm2022/ripple/ripple.mjs +7 -7
  151. package/esm2022/scroller/scroller.mjs +7 -7
  152. package/esm2022/scrollpanel/scrollpanel.mjs +7 -7
  153. package/esm2022/scrolltop/scrolltop.mjs +7 -7
  154. package/esm2022/selectbutton/selectbutton.mjs +7 -7
  155. package/esm2022/sidebar/sidebar.mjs +7 -7
  156. package/esm2022/skeleton/skeleton.mjs +7 -7
  157. package/esm2022/slidemenu/slidemenu.mjs +10 -10
  158. package/esm2022/slider/slider.mjs +7 -7
  159. package/esm2022/speeddial/speeddial.mjs +7 -7
  160. package/esm2022/spinner/spinner.mjs +7 -7
  161. package/esm2022/splitbutton/splitbutton.mjs +7 -7
  162. package/esm2022/splitter/splitter.mjs +7 -7
  163. package/esm2022/stepper/primeng-stepper.mjs +5 -0
  164. package/esm2022/stepper/public_api.mjs +3 -0
  165. package/esm2022/stepper/stepper.interface.mjs +2 -0
  166. package/esm2022/stepper/stepper.mjs +685 -0
  167. package/esm2022/steps/steps.mjs +10 -16
  168. package/esm2022/styleclass/styleclass.mjs +7 -7
  169. package/esm2022/table/table.mjs +143 -101
  170. package/esm2022/tabmenu/tabmenu.mjs +7 -7
  171. package/esm2022/tabview/tabview.mjs +10 -10
  172. package/esm2022/tag/tag.mjs +7 -7
  173. package/esm2022/terminal/terminal.mjs +7 -7
  174. package/esm2022/terminal/terminalservice.mjs +3 -3
  175. package/esm2022/tieredmenu/tieredmenu.mjs +22 -13
  176. package/esm2022/timeline/timeline.mjs +7 -7
  177. package/esm2022/toast/toast.mjs +10 -10
  178. package/esm2022/togglebutton/togglebutton.mjs +7 -7
  179. package/esm2022/toolbar/toolbar.mjs +7 -7
  180. package/esm2022/tooltip/tooltip.mjs +7 -7
  181. package/esm2022/tree/tree.mjs +16 -11
  182. package/esm2022/treeselect/treeselect.mjs +19 -16
  183. package/esm2022/treetable/treetable.mjs +55 -55
  184. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +7 -7
  185. package/esm2022/virtualscroller/virtualscroller.mjs +7 -7
  186. package/fesm2022/primeng-accordion.mjs +10 -10
  187. package/fesm2022/primeng-animate.mjs +7 -7
  188. package/fesm2022/primeng-animateonscroll.mjs +7 -7
  189. package/fesm2022/primeng-api.mjs +36 -35
  190. package/fesm2022/primeng-api.mjs.map +1 -1
  191. package/fesm2022/primeng-autocomplete.mjs +10 -7
  192. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  193. package/fesm2022/primeng-autofocus.mjs +7 -7
  194. package/fesm2022/primeng-avatar.mjs +7 -7
  195. package/fesm2022/primeng-avatargroup.mjs +7 -7
  196. package/fesm2022/primeng-badge.mjs +10 -10
  197. package/fesm2022/primeng-baseicon.mjs +3 -3
  198. package/fesm2022/primeng-blockui.mjs +7 -7
  199. package/fesm2022/primeng-breadcrumb.mjs +7 -7
  200. package/fesm2022/primeng-button.mjs +10 -10
  201. package/fesm2022/primeng-buttongroup.mjs +7 -7
  202. package/fesm2022/primeng-calendar.mjs +28 -17
  203. package/fesm2022/primeng-calendar.mjs.map +1 -1
  204. package/fesm2022/primeng-card.mjs +7 -7
  205. package/fesm2022/primeng-carousel.mjs +7 -7
  206. package/fesm2022/primeng-cascadeselect.mjs +11 -10
  207. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  208. package/fesm2022/primeng-chart.mjs +7 -7
  209. package/fesm2022/primeng-checkbox.mjs +7 -7
  210. package/fesm2022/primeng-chip.mjs +48 -17
  211. package/fesm2022/primeng-chip.mjs.map +1 -1
  212. package/fesm2022/primeng-chips.mjs +11 -7
  213. package/fesm2022/primeng-chips.mjs.map +1 -1
  214. package/fesm2022/primeng-colorpicker.mjs +7 -7
  215. package/fesm2022/primeng-confirmdialog.mjs +12 -11
  216. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  217. package/fesm2022/primeng-confirmpopup.mjs +7 -7
  218. package/fesm2022/primeng-contextmenu.mjs +12 -12
  219. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  220. package/fesm2022/primeng-dataview.mjs +10 -10
  221. package/fesm2022/primeng-defer.mjs +7 -7
  222. package/fesm2022/primeng-dialog.mjs +12 -12
  223. package/fesm2022/primeng-dialog.mjs.map +1 -1
  224. package/fesm2022/primeng-divider.mjs +7 -7
  225. package/fesm2022/primeng-dock.mjs +7 -7
  226. package/fesm2022/primeng-dragdrop.mjs +10 -10
  227. package/fesm2022/primeng-dropdown.mjs +11 -13
  228. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  229. package/fesm2022/primeng-dynamicdialog.mjs +16 -16
  230. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  231. package/fesm2022/primeng-editor.mjs +7 -7
  232. package/fesm2022/primeng-fieldset.mjs +7 -7
  233. package/fesm2022/primeng-fileupload.mjs +8 -8
  234. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  235. package/fesm2022/primeng-floatlabel.mjs +7 -7
  236. package/fesm2022/primeng-focustrap.mjs +7 -7
  237. package/fesm2022/primeng-galleria.mjs +19 -19
  238. package/fesm2022/primeng-iconfield.mjs +7 -7
  239. package/fesm2022/primeng-icons-angledoubledown.mjs +3 -3
  240. package/fesm2022/primeng-icons-angledoubleleft.mjs +3 -3
  241. package/fesm2022/primeng-icons-angledoubleright.mjs +3 -3
  242. package/fesm2022/primeng-icons-angledoubleup.mjs +3 -3
  243. package/fesm2022/primeng-icons-angledown.mjs +3 -3
  244. package/fesm2022/primeng-icons-angleleft.mjs +3 -3
  245. package/fesm2022/primeng-icons-angleright.mjs +3 -3
  246. package/fesm2022/primeng-icons-angleup.mjs +3 -3
  247. package/fesm2022/primeng-icons-arrowdown.mjs +3 -3
  248. package/fesm2022/primeng-icons-arrowdownleft.mjs +3 -3
  249. package/fesm2022/primeng-icons-arrowdownright.mjs +3 -3
  250. package/fesm2022/primeng-icons-arrowleft.mjs +3 -3
  251. package/fesm2022/primeng-icons-arrowright.mjs +3 -3
  252. package/fesm2022/primeng-icons-arrowup.mjs +3 -3
  253. package/fesm2022/primeng-icons-ban.mjs +3 -3
  254. package/fesm2022/primeng-icons-bars.mjs +3 -3
  255. package/fesm2022/primeng-icons-calendar.mjs +3 -3
  256. package/fesm2022/primeng-icons-caretleft.mjs +3 -3
  257. package/fesm2022/primeng-icons-caretright.mjs +3 -3
  258. package/fesm2022/primeng-icons-check.mjs +3 -3
  259. package/fesm2022/primeng-icons-chevrondown.mjs +3 -3
  260. package/fesm2022/primeng-icons-chevronleft.mjs +3 -3
  261. package/fesm2022/primeng-icons-chevronright.mjs +3 -3
  262. package/fesm2022/primeng-icons-chevronup.mjs +3 -3
  263. package/fesm2022/primeng-icons-exclamationtriangle.mjs +3 -3
  264. package/fesm2022/primeng-icons-eye.mjs +3 -3
  265. package/fesm2022/primeng-icons-eyeslash.mjs +3 -3
  266. package/fesm2022/primeng-icons-filter.mjs +3 -3
  267. package/fesm2022/primeng-icons-filterslash.mjs +3 -3
  268. package/fesm2022/primeng-icons-home.mjs +3 -3
  269. package/fesm2022/primeng-icons-infocircle.mjs +3 -3
  270. package/fesm2022/primeng-icons-minus.mjs +3 -3
  271. package/fesm2022/primeng-icons-pencil.mjs +3 -3
  272. package/fesm2022/primeng-icons-plus.mjs +3 -3
  273. package/fesm2022/primeng-icons-refresh.mjs +3 -3
  274. package/fesm2022/primeng-icons-search.mjs +3 -3
  275. package/fesm2022/primeng-icons-searchminus.mjs +3 -3
  276. package/fesm2022/primeng-icons-searchplus.mjs +3 -3
  277. package/fesm2022/primeng-icons-sortalt.mjs +3 -3
  278. package/fesm2022/primeng-icons-sortamountdown.mjs +3 -3
  279. package/fesm2022/primeng-icons-sortamountupalt.mjs +3 -3
  280. package/fesm2022/primeng-icons-spinner.mjs +3 -3
  281. package/fesm2022/primeng-icons-star.mjs +3 -3
  282. package/fesm2022/primeng-icons-starfill.mjs +3 -3
  283. package/fesm2022/primeng-icons-thlarge.mjs +3 -3
  284. package/fesm2022/primeng-icons-times.mjs +3 -3
  285. package/fesm2022/primeng-icons-timescircle.mjs +3 -3
  286. package/fesm2022/primeng-icons-trash.mjs +3 -3
  287. package/fesm2022/primeng-icons-undo.mjs +3 -3
  288. package/fesm2022/primeng-icons-upload.mjs +3 -3
  289. package/fesm2022/primeng-icons-windowmaximize.mjs +3 -3
  290. package/fesm2022/primeng-icons-windowminimize.mjs +3 -3
  291. package/fesm2022/primeng-image.mjs +7 -7
  292. package/fesm2022/primeng-inplace.mjs +13 -13
  293. package/fesm2022/primeng-inputgroup.mjs +7 -7
  294. package/fesm2022/primeng-inputgroupaddon.mjs +7 -7
  295. package/fesm2022/primeng-inputicon.mjs +7 -7
  296. package/fesm2022/primeng-inputmask.mjs +7 -7
  297. package/fesm2022/primeng-inputnumber.mjs +12 -11
  298. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  299. package/fesm2022/primeng-inputotp.mjs +366 -0
  300. package/fesm2022/primeng-inputotp.mjs.map +1 -0
  301. package/fesm2022/primeng-inputswitch.mjs +7 -7
  302. package/fesm2022/primeng-inputtext.mjs +7 -7
  303. package/fesm2022/primeng-inputtextarea.mjs +7 -7
  304. package/fesm2022/primeng-keyfilter.mjs +7 -7
  305. package/fesm2022/primeng-knob.mjs +7 -7
  306. package/fesm2022/primeng-listbox.mjs +9 -8
  307. package/fesm2022/primeng-listbox.mjs.map +1 -1
  308. package/fesm2022/primeng-megamenu.mjs +10 -10
  309. package/fesm2022/primeng-menu.mjs +13 -13
  310. package/fesm2022/primeng-menubar.mjs +24 -19
  311. package/fesm2022/primeng-menubar.mjs.map +1 -1
  312. package/fesm2022/primeng-message.mjs +7 -7
  313. package/fesm2022/primeng-messages.mjs +16 -7
  314. package/fesm2022/primeng-messages.mjs.map +1 -1
  315. package/fesm2022/primeng-metergroup.mjs +10 -10
  316. package/fesm2022/primeng-metergroup.mjs.map +1 -1
  317. package/fesm2022/primeng-multiselect.mjs +17 -14
  318. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  319. package/fesm2022/primeng-orderlist.mjs +7 -7
  320. package/fesm2022/primeng-organizationchart.mjs +10 -10
  321. package/fesm2022/primeng-overlay.mjs +7 -7
  322. package/fesm2022/primeng-overlaypanel.mjs +7 -7
  323. package/fesm2022/primeng-paginator.mjs +7 -7
  324. package/fesm2022/primeng-panel.mjs +7 -7
  325. package/fesm2022/primeng-panelmenu.mjs +19 -20
  326. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  327. package/fesm2022/primeng-password.mjs +13 -13
  328. package/fesm2022/primeng-picklist.mjs +26 -49
  329. package/fesm2022/primeng-picklist.mjs.map +1 -1
  330. package/fesm2022/primeng-progressbar.mjs +7 -7
  331. package/fesm2022/primeng-progressspinner.mjs +7 -7
  332. package/fesm2022/primeng-radiobutton.mjs +10 -10
  333. package/fesm2022/primeng-rating.mjs +7 -7
  334. package/fesm2022/primeng-ripple.mjs +7 -7
  335. package/fesm2022/primeng-scroller.mjs +7 -7
  336. package/fesm2022/primeng-scrollpanel.mjs +7 -7
  337. package/fesm2022/primeng-scrolltop.mjs +7 -7
  338. package/fesm2022/primeng-selectbutton.mjs +7 -7
  339. package/fesm2022/primeng-sidebar.mjs +7 -7
  340. package/fesm2022/primeng-skeleton.mjs +7 -7
  341. package/fesm2022/primeng-slidemenu.mjs +10 -10
  342. package/fesm2022/primeng-slider.mjs +7 -7
  343. package/fesm2022/primeng-speeddial.mjs +7 -7
  344. package/fesm2022/primeng-spinner.mjs +7 -7
  345. package/fesm2022/primeng-splitbutton.mjs +7 -7
  346. package/fesm2022/primeng-splitter.mjs +7 -7
  347. package/fesm2022/primeng-stepper.mjs +692 -0
  348. package/fesm2022/primeng-stepper.mjs.map +1 -0
  349. package/fesm2022/primeng-steps.mjs +9 -15
  350. package/fesm2022/primeng-steps.mjs.map +1 -1
  351. package/fesm2022/primeng-styleclass.mjs +7 -7
  352. package/fesm2022/primeng-table.mjs +142 -100
  353. package/fesm2022/primeng-table.mjs.map +1 -1
  354. package/fesm2022/primeng-tabmenu.mjs +7 -7
  355. package/fesm2022/primeng-tabview.mjs +10 -10
  356. package/fesm2022/primeng-tag.mjs +7 -7
  357. package/fesm2022/primeng-terminal.mjs +10 -10
  358. package/fesm2022/primeng-tieredmenu.mjs +21 -12
  359. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  360. package/fesm2022/primeng-timeline.mjs +7 -7
  361. package/fesm2022/primeng-toast.mjs +10 -10
  362. package/fesm2022/primeng-togglebutton.mjs +7 -7
  363. package/fesm2022/primeng-toolbar.mjs +7 -7
  364. package/fesm2022/primeng-tooltip.mjs +7 -7
  365. package/fesm2022/primeng-tree.mjs +15 -10
  366. package/fesm2022/primeng-tree.mjs.map +1 -1
  367. package/fesm2022/primeng-treeselect.mjs +18 -15
  368. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  369. package/fesm2022/primeng-treetable.mjs +55 -55
  370. package/fesm2022/primeng-tristatecheckbox.mjs +7 -7
  371. package/fesm2022/primeng-virtualscroller.mjs +7 -7
  372. package/inputnumber/inputnumber.interface.d.ts +1 -1
  373. package/inputotp/index.d.ts +5 -0
  374. package/inputotp/inputotp.d.ts +115 -0
  375. package/inputotp/inputotp.interface.d.ts +65 -0
  376. package/inputotp/public_api.d.ts +2 -0
  377. package/menubar/menubar.d.ts +1 -0
  378. package/messages/messages.d.ts +7 -1
  379. package/package.json +77 -65
  380. package/picklist/picklist.d.ts +2 -3
  381. package/resources/components/inputotp/inputotp.css +3 -0
  382. package/resources/components/stepper/stepper.css +9 -0
  383. package/resources/themes/arya-blue/theme.css +395 -439
  384. package/resources/themes/arya-green/theme.css +395 -439
  385. package/resources/themes/arya-orange/theme.css +395 -439
  386. package/resources/themes/arya-purple/theme.css +395 -439
  387. package/resources/themes/bootstrap4-dark-blue/theme.css +395 -440
  388. package/resources/themes/bootstrap4-dark-purple/theme.css +395 -440
  389. package/resources/themes/bootstrap4-light-blue/theme.css +395 -440
  390. package/resources/themes/bootstrap4-light-purple/theme.css +395 -440
  391. package/resources/themes/fluent-light/theme.css +400 -466
  392. package/resources/themes/lara-dark-blue/theme.css +397 -455
  393. package/resources/themes/lara-dark-indigo/theme.css +397 -455
  394. package/resources/themes/lara-dark-purple/theme.css +397 -455
  395. package/resources/themes/lara-dark-teal/theme.css +397 -455
  396. package/resources/themes/lara-light-blue/theme.css +405 -460
  397. package/resources/themes/lara-light-indigo/theme.css +405 -460
  398. package/resources/themes/lara-light-purple/theme.css +405 -460
  399. package/resources/themes/lara-light-teal/theme.css +405 -460
  400. package/resources/themes/luna-amber/theme.css +408 -453
  401. package/resources/themes/luna-blue/theme.css +408 -453
  402. package/resources/themes/luna-green/theme.css +408 -453
  403. package/resources/themes/luna-pink/theme.css +408 -453
  404. package/resources/themes/md-dark-deeppurple/theme.css +555 -698
  405. package/resources/themes/md-dark-indigo/theme.css +555 -698
  406. package/resources/themes/md-light-deeppurple/theme.css +416 -559
  407. package/resources/themes/md-light-indigo/theme.css +416 -559
  408. package/resources/themes/mdc-dark-deeppurple/theme.css +555 -698
  409. package/resources/themes/mdc-dark-indigo/theme.css +555 -698
  410. package/resources/themes/mdc-light-deeppurple/theme.css +416 -559
  411. package/resources/themes/mdc-light-indigo/theme.css +416 -559
  412. package/resources/themes/mira/theme.css +402 -477
  413. package/resources/themes/nano/theme.css +395 -437
  414. package/resources/themes/nova/theme.css +395 -441
  415. package/resources/themes/nova-accent/theme.css +395 -438
  416. package/resources/themes/nova-alt/theme.css +395 -441
  417. package/resources/themes/rhea/theme.css +395 -438
  418. package/resources/themes/saga-blue/theme.css +395 -439
  419. package/resources/themes/saga-green/theme.css +395 -439
  420. package/resources/themes/saga-orange/theme.css +395 -439
  421. package/resources/themes/saga-purple/theme.css +395 -439
  422. package/resources/themes/soho-dark/theme.css +426 -473
  423. package/resources/themes/soho-light/theme.css +400 -449
  424. package/resources/themes/tailwind-light/theme.css +425 -482
  425. package/resources/themes/vela-blue/theme.css +395 -439
  426. package/resources/themes/vela-green/theme.css +395 -439
  427. package/resources/themes/vela-orange/theme.css +395 -439
  428. package/resources/themes/vela-purple/theme.css +395 -439
  429. package/resources/themes/viva-dark/theme.css +400 -463
  430. package/resources/themes/viva-light/theme.css +400 -463
  431. package/stepper/index.d.ts +5 -0
  432. package/stepper/public_api.d.ts +2 -0
  433. package/stepper/stepper.d.ts +125 -0
  434. package/stepper/stepper.interface.d.ts +26 -0
  435. package/table/table.d.ts +8 -2
  436. package/tieredmenu/tieredmenu.d.ts +1 -0
@@ -44,8 +44,8 @@ export class UIMessage {
44
44
  return 'info';
45
45
  }
46
46
  }
47
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: UIMessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: UIMessage, selector: "p-message", inputs: { severity: "severity", text: "text", escape: "escape", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
47
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: UIMessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: UIMessage, selector: "p-message", inputs: { severity: "severity", text: "text", escape: "escape", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
49
49
  <div
50
50
  aria-live="polite"
51
51
  class="p-inline-message p-component p-inline-message"
@@ -72,7 +72,7 @@ export class UIMessage {
72
72
  </div>
73
73
  `, isInline: true, styles: ["@layer primeng{.p-inline-message{display:inline-flex;align-items:center;justify-content:center;vertical-align:top}.p-inline-message-icon-only .p-inline-message-text{visibility:hidden;width:0}.p-fluid .p-inline-message{display:flex}}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => i1.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(() => CheckIcon), selector: "CheckIcon" }, { kind: "component", type: i0.forwardRef(() => InfoCircleIcon), selector: "InfoCircleIcon" }, { kind: "component", type: i0.forwardRef(() => TimesCircleIcon), selector: "TimesCircleIcon" }, { kind: "component", type: i0.forwardRef(() => ExclamationTriangleIcon), selector: "ExclamationTriangleIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
74
74
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: UIMessage, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: UIMessage, decorators: [{
76
76
  type: Component,
77
77
  args: [{ selector: 'p-message', template: `
78
78
  <div
@@ -114,11 +114,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
114
114
  type: Input
115
115
  }] } });
116
116
  export class MessageModule {
117
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MessageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
118
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: MessageModule, declarations: [UIMessage], imports: [CommonModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon], exports: [UIMessage] });
119
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MessageModule, imports: [CommonModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon] });
117
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MessageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
118
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: MessageModule, declarations: [UIMessage], imports: [CommonModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon], exports: [UIMessage] });
119
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MessageModule, imports: [CommonModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon] });
120
120
  }
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MessageModule, decorators: [{
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MessageModule, decorators: [{
122
122
  type: NgModule,
123
123
  args: [{
124
124
  imports: [CommonModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon],
@@ -81,6 +81,12 @@ export class Messages {
81
81
  * @group Emits
82
82
  */
83
83
  valueChange = new EventEmitter();
84
+ /**
85
+ * This function is executed when a message is closed.
86
+ * @param {Message} value - Closed message.
87
+ * @group Emits
88
+ */
89
+ onClose = new EventEmitter();
84
90
  templates;
85
91
  messages;
86
92
  messageSubscription;
@@ -142,6 +148,7 @@ export class Messages {
142
148
  }
143
149
  removeMessage(i) {
144
150
  this.messages = this.messages?.filter((msg, index) => index !== i);
151
+ this.messages[i] && this.onClose.emit(this.messages[i]);
145
152
  this.valueChange.emit(this.messages);
146
153
  }
147
154
  get icon() {
@@ -186,8 +193,8 @@ export class Messages {
186
193
  });
187
194
  this.timerSubscriptions.push(timerSubsctiption);
188
195
  }
189
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: Messages, deps: [{ token: i1.MessageService, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
190
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: Messages, selector: "p-messages", inputs: { value: "value", closable: "closable", style: "style", styleClass: "styleClass", enableService: "enableService", key: "key", escape: "escape", severity: "severity", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
196
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: Messages, deps: [{ token: i1.MessageService, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
197
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: Messages, selector: "p-messages", inputs: { value: "value", closable: "closable", style: "style", styleClass: "styleClass", enableService: "enableService", key: "key", escape: "escape", severity: "severity", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { valueChange: "valueChange", onClose: "onClose" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
191
198
  <div class="p-messages p-component" role="alert" [ngStyle]="style" [class]="styleClass" [attr.aria-atomic]="true" [attr.aria-live]="'assertive'" [attr.data-pc-name]="'message'">
192
199
  <ng-container *ngIf="!contentTemplate; else staticMessage">
193
200
  <div
@@ -235,7 +242,7 @@ export class Messages {
235
242
  ])
236
243
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
237
244
  }
238
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: Messages, decorators: [{
245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: Messages, decorators: [{
239
246
  type: Component,
240
247
  args: [{ selector: 'p-messages', template: `
241
248
  <div class="p-messages p-component" role="alert" [ngStyle]="style" [class]="styleClass" [attr.aria-atomic]="true" [attr.aria-live]="'assertive'" [attr.data-pc-name]="'message'">
@@ -310,16 +317,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
310
317
  type: Input
311
318
  }], valueChange: [{
312
319
  type: Output
320
+ }], onClose: [{
321
+ type: Output
313
322
  }], templates: [{
314
323
  type: ContentChildren,
315
324
  args: [PrimeTemplate]
316
325
  }] } });
317
326
  export class MessagesModule {
318
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MessagesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
319
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: MessagesModule, declarations: [Messages], imports: [CommonModule, RippleModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon, TimesIcon], exports: [Messages] });
320
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MessagesModule, imports: [CommonModule, RippleModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon, TimesIcon] });
327
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MessagesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
328
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: MessagesModule, declarations: [Messages], imports: [CommonModule, RippleModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon, TimesIcon], exports: [Messages] });
329
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MessagesModule, imports: [CommonModule, RippleModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon, TimesIcon] });
321
330
  }
322
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MessagesModule, decorators: [{
331
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MessagesModule, decorators: [{
323
332
  type: NgModule,
324
333
  args: [{
325
334
  imports: [CommonModule, RippleModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon, TimesIcon],
@@ -327,4 +336,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
327
336
  declarations: [Messages]
328
337
  }]
329
338
  }] });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbWVzc2FnZXMvbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW9CLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsZUFBZSxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFhLFFBQVEsRUFBRSxNQUFNLEVBQTBCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVPLE9BQU8sRUFBMkIsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBQzNDOzs7R0FHRztBQTBESCxNQUFNLE9BQU8sUUFBUTtJQXlFYztJQUF1QztJQUF1QjtJQUErQjtJQXhFNUg7OztPQUdHO0lBQ0gsSUFBYSxLQUFLLENBQUMsUUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxR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TUFBTTtnQkFFeUIsU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhOztBQXNJbEMsTUFBTSxPQUFPLGNBQWM7dUdBQWQsY0FBYzt3R0FBZCxjQUFjLGlCQW5NZCxRQUFRLGFBK0xQLFlBQVksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxhQS9MM0csUUFBUTt3R0FtTVIsY0FBYyxZQUpiLFlBQVksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsU0FBUzs7MkZBSTNHLGNBQWM7a0JBTDFCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLENBQUM7b0JBQ3JILE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFDbkIsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdNb2R1bGUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIE91dHB1dCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2UsIE1lc3NhZ2VTZXJ2aWNlLCBQcmltZVRlbXBsYXRlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgUHJpbWVOR0NvbmZpZyB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IENoZWNrSWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvY2hlY2snO1xuaW1wb3J0IHsgRXhjbGFtYXRpb25UcmlhbmdsZUljb24gfSBmcm9tICdwcmltZW5nL2ljb25zL2V4Y2xhbWF0aW9udHJpYW5nbGUnO1xuaW1wb3J0IHsgSW5mb0NpcmNsZUljb24gfSBmcm9tICdwcmltZW5nL2ljb25zL2luZm9jaXJjbGUnO1xuaW1wb3J0IHsgVGltZXNJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucy90aW1lcyc7XG5pbXBvcnQgeyBUaW1lc0NpcmNsZUljb24gfSBmcm9tICdwcmltZW5nL2ljb25zL3RpbWVzY2lyY2xlJztcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbi8qKlxuICogTWVzc2FnZXMgaXMgdXNlZCB0byBkaXNwbGF5IGFsZXJ0cyBpbmxpbmUuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbWVzc2FnZXMnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLW1lc3NhZ2VzIHAtY29tcG9uZW50XCIgcm9sZT1cImFsZXJ0XCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIFthdHRyLmFyaWEtYXRvbWljXT1cInRydWVcIiBbYXR0ci5hcmlhLWxpdmVdPVwiJ2Fzc2VydGl2ZSdcIiBbYXR0ci5kYXRhLXBjLW5hbWVdPVwiJ21lc3NhZ2UnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbnRlbnRUZW1wbGF0ZTsgZWxzZSBzdGF0aWNNZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbXNnIG9mIG1lc3NhZ2VzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidwLW1lc3NhZ2UgcC1tZXNzYWdlLScgKyBtc2cuc2V2ZXJpdHlcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiYWxlcnRcIlxuICAgICAgICAgICAgICAgICAgICBbQG1lc3NhZ2VBbmltYXRpb25dPVwieyB2YWx1ZTogJ3Zpc2libGUnLCBwYXJhbXM6IHsgc2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9ucyB9IH1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWVzc2FnZS13cmFwcGVyXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIid3cmFwcGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtc2cuaWNvblwiIFtjbGFzc109XCIncC1tZXNzYWdlLWljb24gcGkgJyArIG1zZy5pY29uXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpY29uJ1wiPiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVzc2FnZS1pY29uXCIgKm5nSWY9XCIhbXNnLmljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tJY29uICpuZ0lmPVwibXNnLnNldmVyaXR5ID09PSAnc3VjY2VzcydcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEluZm9DaXJjbGVJY29uICpuZ0lmPVwibXNnLnNldmVyaXR5ID09PSAnaW5mbydcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRpbWVzQ2lyY2xlSWNvbiAqbmdJZj1cIm1zZy5zZXZlcml0eSA9PT0gJ2Vycm9yJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhjbGFtYXRpb25UcmlhbmdsZUljb24gKm5nSWY9XCJtc2cuc2V2ZXJpdHkgPT09ICd3YXJuJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlc2NhcGU7IGVsc2UgZXNjYXBlT3V0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtc2cuc3VtbWFyeVwiIGNsYXNzPVwicC1tZXNzYWdlLXN1bW1hcnlcIiBbaW5uZXJIVE1MXT1cIm1zZy5zdW1tYXJ5XCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzdW1tYXJ5J1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1zZy5kZXRhaWxcIiBjbGFzcz1cInAtbWVzc2FnZS1kZXRhaWxcIiBbaW5uZXJIVE1MXT1cIm1zZy5kZXRhaWxcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2RldGFpbCdcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZXNjYXBlT3V0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibXNnLnN1bW1hcnlcIiBjbGFzcz1cInAtbWVzc2FnZS1zdW1tYXJ5XCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzdW1tYXJ5J1wiPnt7IG1zZy5zdW1tYXJ5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibXNnLmRldGFpbFwiIGNsYXNzPVwicC1tZXNzYWdlLWRldGFpbFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInZGV0YWlsJ1wiPnt7IG1zZy5kZXRhaWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInAtbWVzc2FnZS1jbG9zZSBwLWxpbmtcIiAoY2xpY2spPVwicmVtb3ZlTWVzc2FnZShpKVwiICpuZ0lmPVwiY2xvc2FibGVcIiB0eXBlPVwiYnV0dG9uXCIgcFJpcHBsZSBbYXR0ci5hcmlhLWxhYmVsXT1cImNsb3NlQXJpYUxhYmVsXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjbG9zZWJ1dHRvbidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGltZXNJY29uIFtzdHlsZUNsYXNzXT1cIidwLW1lc3NhZ2UtY2xvc2UtaWNvbidcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2Nsb3NlaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3N0YXRpY01lc3NhZ2U+XG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCIncC1tZXNzYWdlIHAtbWVzc2FnZS0nICsgc2V2ZXJpdHlcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWVzc2FnZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ21lc3NhZ2VBbmltYXRpb24nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0yNSUpJyB9KSwgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JyldKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFthbmltYXRlKCd7e2hpZGVUcmFuc2l0aW9uUGFyYW1zfX0nLCBzdHlsZSh7IGhlaWdodDogMCwgbWFyZ2luVG9wOiAwLCBtYXJnaW5Cb3R0b206IDAsIG1hcmdpbkxlZnQ6IDAsIG1hcmdpblJpZ2h0OiAwLCBvcGFjaXR5OiAwIH0pKV0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL21lc3NhZ2VzLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlcyBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgb2YgbWVzc2FnZXMgdG8gZGlzcGxheS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgdmFsdWUobWVzc2FnZXM6IE1lc3NhZ2VbXSkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZXM7XG4gICAgICAgIHRoaXMuc3RhcnRNZXNzYWdlTGlmZXModGhpcy5tZXNzYWdlcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlZmluZXMgaWYgbWVzc2FnZSBib3ggY2FuIGJlIGNsb3NlZCBieSB0aGUgY2xpY2sgaWNvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjbG9zYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBkaXNwbGF5aW5nIHNlcnZpY2VzIG1lc3NhZ2VzIGFyZSBlbmFibGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGVuYWJsZVNlcnZpY2U6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIElkIHRvIG1hdGNoIHRoZSBrZXkgb2YgdGhlIG1lc3NhZ2UgdG8gZW5hYmxlIHNjb3BpbmcgaW4gc2VydmljZSBiYXNlZCBtZXNzYWdpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkga2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBkaXNwbGF5aW5nIG1lc3NhZ2VzIHdvdWxkIGJlIGVzY2FwZWQgb3Igbm90LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGVzY2FwZTogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogU2V2ZXJpdHkgbGV2ZWwgb2YgdGhlIG1lc3NhZ2UuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2V2ZXJpdHk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIHNob3cgYW5pbWF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJzMwMG1zIGVhc2Utb3V0JztcbiAgICAvKipcbiAgICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIGhpZGUgYW5pbWF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJzIwMG1zIGN1YmljLWJlemllcigwLjg2LCAwLCAwLjA3LCAxKSc7XG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgICAqIEBwYXJhbSB7TWVzc2FnZVtdfSB2YWx1ZSAtIG1lc3NhZ2VzIHZhbHVlLlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPE1lc3NhZ2VbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPE1lc3NhZ2VbXT4oKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWQ7XG5cbiAgICBtZXNzYWdlczogTWVzc2FnZVtdIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAgIG1lc3NhZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIGNsZWFyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICB0aW1lclN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBjb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwdWJsaWMgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgY29uZmlnOiBQcmltZU5HQ29uZmlnKSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZVNlcnZpY2UgJiYgdGhpcy5lbmFibGVTZXJ2aWNlICYmICF0aGlzLmNvbnRlbnRUZW1wbGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU3Vic2NyaXB0aW9uID0gdGhpcy5tZXNzYWdlU2VydmljZS5tZXNzYWdlT2JzZXJ2ZXIuc3Vic2NyaWJlKChtZXNzYWdlczogTWVzc2FnZSB8IE1lc3NhZ2VbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobWVzc2FnZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcyA9IFttZXNzYWdlc107XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZE1lc3NhZ2VzID0gbWVzc2FnZXMuZmlsdGVyKChtKSA9PiB0aGlzLmtleSA9PT0gbS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlcyA/IFsuLi50aGlzLm1lc3NhZ2VzLCAuLi5maWx0ZXJlZE1lc3NhZ2VzXSA6IFsuLi5maWx0ZXJlZE1lc3NhZ2VzXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydE1lc3NhZ2VMaWZlcyhmaWx0ZXJlZE1lc3NhZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5jbGVhclN1YnNjcmlwdGlvbiA9IHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXJPYnNlcnZlci5zdWJzY3JpYmUoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMua2V5ID09PSBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFzTWVzc2FnZXMoKSB7XG4gICAgICAgIGxldCBwYXJlbnRFbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICBpZiAocGFyZW50RWwgJiYgcGFyZW50RWwub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50VGVtcGxhdGUgIT0gbnVsbCB8fCAodGhpcy5tZXNzYWdlcyAmJiB0aGlzLm1lc3NhZ2VzLmxlbmd0aCA+IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLm1lc3NhZ2VzKTtcbiAgICB9XG5cbiAgICByZW1vdmVNZXNzYWdlKGk6IG51bWJlcikge1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlcz8uZmlsdGVyKChtc2csIGluZGV4KSA9PiBpbmRleCAhPT0gaSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLm1lc3NhZ2VzKTtcbiAgICB9XG5cbiAgICBnZXQgaWNvbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3Qgc2V2ZXJpdHkgPSB0aGlzLnNldmVyaXR5IHx8ICh0aGlzLmhhc01lc3NhZ2VzKCkgPyB0aGlzLm1lc3NhZ2VzIVswXS5zZXZlcml0eSA6IG51bGwpO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc01lc3NhZ2VzKCkpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc2V2ZXJpdHkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdwaS1jaGVjayc7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdwaS1pbmZvLWNpcmNsZSc7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAncGktdGltZXMnO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnd2Fybic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAncGktZXhjbGFtYXRpb24tdHJpYW5nbGUnO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdwaS1pbmZvLWNpcmNsZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZ2V0IGNsb3NlQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEuY2xvc2UgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY2xlYXJTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb25zPy5mb3JFYWNoKChzdWJzY3JpcHRpb24pID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0TWVzc2FnZUxpZmVzKG1lc3NhZ2VzOiBNZXNzYWdlW10pOiB2b2lkIHtcbiAgICAgICAgbWVzc2FnZXM/LmZvckVhY2goKG1lc3NhZ2UpID0+IG1lc3NhZ2UubGlmZSAmJiB0aGlzLnN0YXJ0TWVzc2FnZUxpZmUobWVzc2FnZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRNZXNzYWdlTGlmZShtZXNzYWdlOiBNZXNzYWdlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRpbWVyU3Vic2N0aXB0aW9uID0gdGltZXIobWVzc2FnZS5saWZlISkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXMgPSB0aGlzLm1lc3NhZ2VzPy5maWx0ZXIoKG1zZ0VsKSA9PiBtc2dFbCAhPT0gbWVzc2FnZSk7XG4gICAgICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9ucyA9IHRoaXMudGltZXJTdWJzY3JpcHRpb25zPy5maWx0ZXIoKHRpbWVyRWwpID0+IHRpbWVyRWwgIT09IHRpbWVyU3Vic2N0aXB0aW9uKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLm1lc3NhZ2VzKTtcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9ucy5wdXNoKHRpbWVyU3Vic2N0aXB0aW9uKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmlwcGxlTW9kdWxlLCBDaGVja0ljb24sIEluZm9DaXJjbGVJY29uLCBUaW1lc0NpcmNsZUljb24sIEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uLCBUaW1lc0ljb25dLFxuICAgIGV4cG9ydHM6IFtNZXNzYWdlc10sXG4gICAgZGVjbGFyYXRpb25zOiBbTWVzc2FnZXNdXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VzTW9kdWxlIHt9XG4iXX0=
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbWVzc2FnZXMvbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW9CLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsZUFBZSxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFhLFFBQVEsRUFBRSxNQUFNLEVBQTBCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVPLE9BQU8sRUFBMkIsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBQzNDOzs7R0FHRztBQTBESCxNQUFNLE9BQU8sUUFBUTtJQStFYztJQUF1QztJQUF1QjtJQUErQjtJQTlFNUg7OztPQUdHO0lBQ0gsSUFBYSxLQUFLLENBQUMsUUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxR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QUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFLRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUtHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFNSSxXQUFXO3NCQUFwQixNQUFNO2dCQU1HLE9BQU87c0JBQWhCLE1BQU07Z0JBRXlCLFNBQVM7c0JBQXhDLGVBQWU7dUJBQUMsYUFBYTs7QUF1SWxDLE1BQU0sT0FBTyxjQUFjO3VHQUFkLGNBQWM7d0dBQWQsY0FBYyxpQkExTWQsUUFBUSxhQXNNUCxZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLFNBQVMsYUF0TTNHLFFBQVE7d0dBME1SLGNBQWMsWUFKYixZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLFNBQVM7OzJGQUkzRyxjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxDQUFDO29CQUNySCxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7b0JBQ25CLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nTW9kdWxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZXNzYWdlLCBNZXNzYWdlU2VydmljZSwgUHJpbWVUZW1wbGF0ZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBDaGVja0ljb24gfSBmcm9tICdwcmltZW5nL2ljb25zL2NoZWNrJztcbmltcG9ydCB7IEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucy9leGNsYW1hdGlvbnRyaWFuZ2xlJztcbmltcG9ydCB7IEluZm9DaXJjbGVJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucy9pbmZvY2lyY2xlJztcbmltcG9ydCB7IFRpbWVzSWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvdGltZXMnO1xuaW1wb3J0IHsgVGltZXNDaXJjbGVJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucy90aW1lc2NpcmNsZSc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG4vKipcbiAqIE1lc3NhZ2VzIGlzIHVzZWQgdG8gZGlzcGxheSBhbGVydHMgaW5saW5lLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLW1lc3NhZ2VzJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1tZXNzYWdlcyBwLWNvbXBvbmVudFwiIHJvbGU9XCJhbGVydFwiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbYXR0ci5hcmlhLWF0b21pY109XCJ0cnVlXCIgW2F0dHIuYXJpYS1saXZlXT1cIidhc3NlcnRpdmUnXCIgW2F0dHIuZGF0YS1wYy1uYW1lXT1cIidtZXNzYWdlJ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb250ZW50VGVtcGxhdGU7IGVsc2Ugc3RhdGljTWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1zZyBvZiBtZXNzYWdlczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCIncC1tZXNzYWdlIHAtbWVzc2FnZS0nICsgbXNnLnNldmVyaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImFsZXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgW0BtZXNzYWdlQW5pbWF0aW9uXT1cInsgdmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7IHNob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsIGhpZGVUcmFuc2l0aW9uUGFyYW1zOiBoaWRlVHJhbnNpdGlvbk9wdGlvbnMgfSB9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1lc3NhZ2Utd3JhcHBlclwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInd3JhcHBlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibXNnLmljb25cIiBbY2xhc3NdPVwiJ3AtbWVzc2FnZS1pY29uIHBpICcgKyBtc2cuaWNvblwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIj4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lc3NhZ2UtaWNvblwiICpuZ0lmPVwiIW1zZy5pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrSWNvbiAqbmdJZj1cIm1zZy5zZXZlcml0eSA9PT0gJ3N1Y2Nlc3MnXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmZvQ2lyY2xlSWNvbiAqbmdJZj1cIm1zZy5zZXZlcml0eSA9PT0gJ2luZm8nXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUaW1lc0NpcmNsZUljb24gKm5nSWY9XCJtc2cuc2V2ZXJpdHkgPT09ICdlcnJvcidcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEV4Y2xhbWF0aW9uVHJpYW5nbGVJY29uICpuZ0lmPVwibXNnLnNldmVyaXR5ID09PSAnd2FybidcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2ljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXNjYXBlOyBlbHNlIGVzY2FwZU91dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibXNnLnN1bW1hcnlcIiBjbGFzcz1cInAtbWVzc2FnZS1zdW1tYXJ5XCIgW2lubmVySFRNTF09XCJtc2cuc3VtbWFyeVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VtbWFyeSdcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtc2cuZGV0YWlsXCIgY2xhc3M9XCJwLW1lc3NhZ2UtZGV0YWlsXCIgW2lubmVySFRNTF09XCJtc2cuZGV0YWlsXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidkZXRhaWwnXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2VzY2FwZU91dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1zZy5zdW1tYXJ5XCIgY2xhc3M9XCJwLW1lc3NhZ2Utc3VtbWFyeVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VtbWFyeSdcIj57eyBtc2cuc3VtbWFyeSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1zZy5kZXRhaWxcIiBjbGFzcz1cInAtbWVzc2FnZS1kZXRhaWxcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2RldGFpbCdcIj57eyBtc2cuZGV0YWlsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwLW1lc3NhZ2UtY2xvc2UgcC1saW5rXCIgKGNsaWNrKT1cInJlbW92ZU1lc3NhZ2UoaSlcIiAqbmdJZj1cImNsb3NhYmxlXCIgdHlwZT1cImJ1dHRvblwiIHBSaXBwbGUgW2F0dHIuYXJpYS1sYWJlbF09XCJjbG9zZUFyaWFMYWJlbFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInY2xvc2VidXR0b24nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRpbWVzSWNvbiBbc3R5bGVDbGFzc109XCIncC1tZXNzYWdlLWNsb3NlLWljb24nXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjbG9zZWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdGF0aWNNZXNzYWdlPlxuICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiJ3AtbWVzc2FnZSBwLW1lc3NhZ2UtJyArIHNldmVyaXR5XCIgcm9sZT1cImFsZXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1lc3NhZ2Utd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdtZXNzYWdlQW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW3N0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMjUlKScgfSksIGFuaW1hdGUoJ3t7c2hvd1RyYW5zaXRpb25QYXJhbXN9fScpXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319Jywgc3R5bGUoeyBoZWlnaHQ6IDAsIG1hcmdpblRvcDogMCwgbWFyZ2luQm90dG9tOiAwLCBtYXJnaW5MZWZ0OiAwLCBtYXJnaW5SaWdodDogMCwgb3BhY2l0eTogMCB9KSldKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9tZXNzYWdlcy5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZXMgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG1lc3NhZ2VzIHRvIGRpc3BsYXkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IHZhbHVlKG1lc3NhZ2VzOiBNZXNzYWdlW10pIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IG1lc3NhZ2VzO1xuICAgICAgICB0aGlzLnN0YXJ0TWVzc2FnZUxpZmVzKHRoaXMubWVzc2FnZXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGlmIG1lc3NhZ2UgYm94IGNhbiBiZSBjbG9zZWQgYnkgdGhlIGNsaWNrIGljb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgY2xvc2FibGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZGlzcGxheWluZyBzZXJ2aWNlcyBtZXNzYWdlcyBhcmUgZW5hYmxlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBlbmFibGVTZXJ2aWNlOiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBJZCB0byBtYXRjaCB0aGUga2V5IG9mIHRoZSBtZXNzYWdlIHRvIGVuYWJsZSBzY29waW5nIGluIHNlcnZpY2UgYmFzZWQgbWVzc2FnaW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZGlzcGxheWluZyBtZXNzYWdlcyB3b3VsZCBiZSBlc2NhcGVkIG9yIG5vdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBlc2NhcGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFNldmVyaXR5IGxldmVsIG9mIHRoZSBtZXNzYWdlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldmVyaXR5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBzaG93IGFuaW1hdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICczMDBtcyBlYXNlLW91dCc7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBoaWRlIGFuaW1hdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcyMDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknO1xuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy5cbiAgICAgKiBAcGFyYW0ge01lc3NhZ2VbXX0gdmFsdWUgLSBtZXNzYWdlcyB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNZXNzYWdlW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxNZXNzYWdlW10+KCk7XG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCB3aGVuIGEgbWVzc2FnZSBpcyBjbG9zZWQuXG4gICAgICogQHBhcmFtIHtNZXNzYWdlfSB2YWx1ZSAtIENsb3NlZCBtZXNzYWdlLlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8TWVzc2FnZT4gPSBuZXcgRXZlbnRFbWl0dGVyPE1lc3NhZ2U+KCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkO1xuXG4gICAgbWVzc2FnZXM6IE1lc3NhZ2VbXSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgICBtZXNzYWdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICBjbGVhclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICAgdGltZXJTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgY29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHVibGljIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGNvbmZpZzogUHJpbWVOR0NvbmZpZykge31cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VTZXJ2aWNlICYmIHRoaXMuZW5hYmxlU2VydmljZSAmJiAhdGhpcy5jb250ZW50VGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVN1YnNjcmlwdGlvbiA9IHRoaXMubWVzc2FnZVNlcnZpY2UubWVzc2FnZU9ic2VydmVyLnN1YnNjcmliZSgobWVzc2FnZXM6IE1lc3NhZ2UgfCBNZXNzYWdlW10pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobWVzc2FnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG1lc3NhZ2VzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMgPSBbbWVzc2FnZXNdO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRNZXNzYWdlcyA9IG1lc3NhZ2VzLmZpbHRlcigobSkgPT4gdGhpcy5rZXkgPT09IG0ua2V5KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMubWVzc2FnZXMgPyBbLi4udGhpcy5tZXNzYWdlcywgLi4uZmlsdGVyZWRNZXNzYWdlc10gOiBbLi4uZmlsdGVyZWRNZXNzYWdlc107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRNZXNzYWdlTGlmZXMoZmlsdGVyZWRNZXNzYWdlcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb24gPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNsZWFyT2JzZXJ2ZXIuc3Vic2NyaWJlKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmtleSA9PT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhc01lc3NhZ2VzKCkge1xuICAgICAgICBsZXQgcGFyZW50RWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgaWYgKHBhcmVudEVsICYmIHBhcmVudEVsLm9mZnNldFBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudFRlbXBsYXRlICE9IG51bGwgfHwgKHRoaXMubWVzc2FnZXMgJiYgdGhpcy5tZXNzYWdlcy5sZW5ndGggPiAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5tZXNzYWdlcyk7XG4gICAgfVxuXG4gICAgcmVtb3ZlTWVzc2FnZShpOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMubWVzc2FnZXM/LmZpbHRlcigobXNnLCBpbmRleCkgPT4gaW5kZXggIT09IGkpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VzW2ldICYmIHRoaXMub25DbG9zZS5lbWl0KHRoaXMubWVzc2FnZXNbaV0pO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5tZXNzYWdlcyk7XG4gICAgfVxuXG4gICAgZ2V0IGljb24oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHNldmVyaXR5ID0gdGhpcy5zZXZlcml0eSB8fCAodGhpcy5oYXNNZXNzYWdlcygpID8gdGhpcy5tZXNzYWdlcyFbMF0uc2V2ZXJpdHkgOiBudWxsKTtcblxuICAgICAgICBpZiAodGhpcy5oYXNNZXNzYWdlcygpKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHNldmVyaXR5KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAncGktY2hlY2snO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAncGktaW5mby1jaXJjbGUnO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3BpLXRpbWVzJztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3dhcm4nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3BpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAncGktaW5mby1jaXJjbGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGdldCBjbG9zZUFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLmNsb3NlIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNsZWFyU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9ucz8uZm9yRWFjaCgoc3Vic2NyaXB0aW9uKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydE1lc3NhZ2VMaWZlcyhtZXNzYWdlczogTWVzc2FnZVtdKTogdm9pZCB7XG4gICAgICAgIG1lc3NhZ2VzPy5mb3JFYWNoKChtZXNzYWdlKSA9PiBtZXNzYWdlLmxpZmUgJiYgdGhpcy5zdGFydE1lc3NhZ2VMaWZlKG1lc3NhZ2UpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0TWVzc2FnZUxpZmUobWVzc2FnZTogTWVzc2FnZSk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lclN1YnNjdGlwdGlvbiA9IHRpbWVyKG1lc3NhZ2UubGlmZSEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlcz8uZmlsdGVyKChtc2dFbCkgPT4gbXNnRWwgIT09IG1lc3NhZ2UpO1xuICAgICAgICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbnMgPSB0aGlzLnRpbWVyU3Vic2NyaXB0aW9ucz8uZmlsdGVyKCh0aW1lckVsKSA9PiB0aW1lckVsICE9PSB0aW1lclN1YnNjdGlwdGlvbik7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5tZXNzYWdlcyk7XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbnMucHVzaCh0aW1lclN1YnNjdGlwdGlvbik7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJpcHBsZU1vZHVsZSwgQ2hlY2tJY29uLCBJbmZvQ2lyY2xlSWNvbiwgVGltZXNDaXJjbGVJY29uLCBFeGNsYW1hdGlvblRyaWFuZ2xlSWNvbiwgVGltZXNJY29uXSxcbiAgICBleHBvcnRzOiBbTWVzc2FnZXNdLFxuICAgIGRlY2xhcmF0aW9uczogW01lc3NhZ2VzXVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlc01vZHVsZSB7fVxuIl19
@@ -20,8 +20,8 @@ export class MeterGroupLabel {
20
20
  };
21
21
  }
22
22
  parentInstance = inject(forwardRef(() => MeterGroup));
23
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroupLabel, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: MeterGroupLabel, selector: "p-meterGroupLabel", inputs: { value: "value", labelPosition: "labelPosition", labelOrientation: "labelOrientation", min: "min", max: "max", iconTemplate: "iconTemplate" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
23
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MeterGroupLabel, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: MeterGroupLabel, selector: "p-meterGroupLabel", inputs: { value: "value", labelPosition: "labelPosition", labelOrientation: "labelOrientation", min: "min", max: "max", iconTemplate: "iconTemplate" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
25
25
  <ol [ngClass]="labelClass">
26
26
  <li *ngFor="let labelItem of value; let index = index; trackBy: parentInstance.trackByFn" class="p-metergroup-label">
27
27
  <ng-container *ngIf="!iconTemplate">
@@ -34,7 +34,7 @@ export class MeterGroupLabel {
34
34
  </ol>
35
35
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroupLabel, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MeterGroupLabel, decorators: [{
38
38
  type: Component,
39
39
  args: [{
40
40
  selector: 'p-meterGroupLabel',
@@ -186,8 +186,8 @@ export class MeterGroup {
186
186
  trackByFn(index) {
187
187
  return index;
188
188
  }
189
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
190
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: MeterGroup, selector: "p-meterGroup", inputs: { value: "value", min: "min", max: "max", orientation: "orientation", labelPosition: "labelPosition", labelOrientation: "labelOrientation", style: "style", styleClass: "styleClass" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
189
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MeterGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
190
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: MeterGroup, selector: "p-meterGroup", inputs: { value: "value", min: "min", max: "max", orientation: "orientation", labelPosition: "labelPosition", labelOrientation: "labelOrientation", style: "style", styleClass: "styleClass" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
191
191
  <div #container [ngClass]="containerClass" role="meter" [attr.aria-valuemin]="min" [attr.aria-valuemax]="max" [attr.aria-valuenow]="totalPercent()" [ngStyle]="style" [class]="styleClass">
192
192
  @if(labelPosition ==='start') {
193
193
  <p-meterGroupLabel *ngIf="!labelTemplate" [value]="value" [labelPosition]="labelPosition" [labelOrientation]="labelOrientation" [min]="min" [max]="max" [iconTemplate]="iconTemplate" />
@@ -211,7 +211,7 @@ export class MeterGroup {
211
211
  </div>
212
212
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: MeterGroupLabel, selector: "p-meterGroupLabel", inputs: ["value", "labelPosition", "labelOrientation", "min", "max", "iconTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
213
213
  }
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroup, decorators: [{
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MeterGroup, decorators: [{
215
215
  type: Component,
216
216
  args: [{
217
217
  selector: 'p-meterGroup',
@@ -262,11 +262,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
262
262
  args: [PrimeTemplate]
263
263
  }] } });
264
264
  export class MeterGroupModule {
265
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
266
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: MeterGroupModule, declarations: [MeterGroup, MeterGroupLabel], imports: [CommonModule, SharedModule], exports: [MeterGroup, SharedModule] });
267
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroupModule, imports: [CommonModule, SharedModule, SharedModule] });
265
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MeterGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
266
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: MeterGroupModule, declarations: [MeterGroup, MeterGroupLabel], imports: [CommonModule, SharedModule], exports: [MeterGroup, SharedModule] });
267
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MeterGroupModule, imports: [CommonModule, SharedModule, SharedModule] });
268
268
  }
269
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: MeterGroupModule, decorators: [{
269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MeterGroupModule, decorators: [{
270
270
  type: NgModule,
271
271
  args: [{
272
272
  imports: [CommonModule, SharedModule],
@@ -274,4 +274,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
274
274
  declarations: [MeterGroup, MeterGroupLabel]
275
275
  }]
276
276
  }] });
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0ZXJncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZXRlcmdyb3VwL21ldGVyZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBcUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hPLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQWtCekMsTUFBTSxPQUFPLGVBQWU7SUFDZixLQUFLLEdBQVUsSUFBSSxDQUFDO0lBRXBCLGFBQWEsR0FBb0IsS0FBSyxDQUFDO0lBRXZDLGdCQUFnQixHQUE4QixZQUFZLENBQUM7SUFFM0QsR0FBRyxDQUFTO0lBRVosR0FBRyxDQUFTO0lBRVosWUFBWSxDQUErQjtJQUVwQixTQUFTLENBQXVDO0lBRWhGLElBQUksVUFBVTtRQUNWLE9BQU87WUFDSCxpQ0FBaUMsRUFBRSxJQUFJO1lBQ3ZDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxVQUFVO1lBQ3BFLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxZQUFZO1NBQzNFLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYyxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzt1R0F2QnpELGVBQWU7MkZBQWYsZUFBZSwyT0FhUCxhQUFhLDZCQTFCcEI7Ozs7Ozs7Ozs7O0tBV1Q7OzJGQUVRLGVBQWU7a0JBZjNCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFOzs7Ozs7Ozs7OztLQVdUO2lCQUNKOzhCQUVZLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsR0FBRztzQkFBWCxLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRTBCLFNBQVM7c0JBQXhDLGVBQWU7dUJBQUMsYUFBYTs7QUFZbEM7OztHQUdHO0FBNkJILE1BQU0sT0FBTyxVQUFVO0lBQ25COzs7T0FHRztJQUNNLEtBQUssQ0FBMEI7SUFDeEM7OztPQUdHO0lBQ00sR0FBRyxHQUFXLENBQUMsQ0FBQztJQUN6Qjs7O09BR0c7SUFDTSxHQUFHLEdBQVcsR0FBRyxDQUFDO0lBQzNCOzs7T0FHRztJQUNNLFdBQVcsR0FBOEIsWUFBWSxDQUFDO0lBQy9EOzs7T0FHRztJQUNNLGFBQWEsR0FBb0IsS0FBSyxDQUFDO0lBQ2hEOzs7T0FHRztJQUNNLGdCQUFnQixHQUFXLFlBQVksQ0FBQztJQUNqRDs7O09BR0c7SUFDTSxLQUFLLENBQThDO0lBQzVEOzs7T0FHRztJQUNNLFVBQVUsQ0FBcUI7SUFFUixTQUFTLENBQXVDO0lBRWhGLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU87WUFDSCwwQkFBMEIsRUFBRSxJQUFJO1lBQ2hDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWTtZQUM1RCx1QkFBdUIsRUFBRSxJQUFJLENBQUMsV0FBVyxLQUFLLFVBQVU7U0FDM0QsQ0FBQztJQUNOLENBQUM7SUFFRCxhQUFhLENBQStCO0lBRTVDLGFBQWEsQ0FBK0I7SUFFNUMsV0FBVyxDQUErQjtJQUUxQyxhQUFhLENBQStCO0lBRTVDLFlBQVksQ0FBK0I7SUFFM0MsU0FBUyxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUV6RCxlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUMxQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDcEMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbkYsQ0FBQyxDQUFDLENBQUM7SUFFSCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzdCLFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNwQixLQUFLLE9BQU87b0JBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUNuQyxNQUFNO2dCQUNWLEtBQUssT0FBTztvQkFDUixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ25DLE1BQU07Z0JBQ1YsS0FBSyxNQUFNO29CQUNQLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDbEMsTUFBTTtnQkFDVixLQUFLLE9BQU87b0JBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUNuQyxNQUFNO2dCQUNWLEtBQUssS0FBSztvQkFDTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ2pDLE1BQU07Z0JBQ1Y7b0JBQ0ksTUFBTTthQUNiO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDO1FBQ2IsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUV6RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFDRCxZQUFZLENBQUMsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDckMsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFHO1FBQ1YsT0FBTztZQUNILGVBQWUsRUFBRSxHQUFHLENBQUMsS0FBSztZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ3hFLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7U0FDMUUsQ0FBQztJQUNOLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVyQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hCLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2xCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWE7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzt1R0FwSVEsVUFBVTsyRkFBVixVQUFVLDhRQTBDRixhQUFhLGdIQXdCYSxVQUFVLDZDQTVGM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FzQlQsdW5CQXJEUSxlQUFlOzsyRkF5RGYsVUFBVTtrQkE1QnRCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXNCVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3hDOzhCQU1ZLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS0csR0FBRztzQkFBWCxLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFLRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRTBCLFNBQVM7c0JBQXhDLGVBQWU7dUJBQUMsYUFBYTs7QUFrR2xDLE1BQU0sT0FBTyxnQkFBZ0I7dUdBQWhCLGdCQUFnQjt3R0FBaEIsZ0JBQWdCLGlCQTVJaEIsVUFBVSxFQXpEVixlQUFlLGFBaU1kLFlBQVksRUFBRSxZQUFZLGFBeEkzQixVQUFVLEVBeUlHLFlBQVk7d0dBR3pCLGdCQUFnQixZQUpmLFlBQVksRUFBRSxZQUFZLEVBQ2QsWUFBWTs7MkZBR3pCLGdCQUFnQjtrQkFMNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO29CQUNuQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIElucHV0LCBOZ01vZHVsZSwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgZWZmZWN0LCBmb3J3YXJkUmVmLCBpbmplY3QsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IE1ldGVySXRlbSB9IGZyb20gJy4vbWV0ZXJncm91cC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbWV0ZXJHcm91cExhYmVsJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8b2wgW25nQ2xhc3NdPVwibGFiZWxDbGFzc1wiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBsYWJlbEl0ZW0gb2YgdmFsdWU7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiBwYXJlbnRJbnN0YW5jZS50cmFja0J5Rm5cIiBjbGFzcz1cInAtbWV0ZXJncm91cC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibGFiZWxJdGVtLmljb25cIiBbY2xhc3NdPVwibGFiZWxJdGVtLmljb25cIiBbbmdDbGFzc109XCJ7ICdwLW1ldGVyZ3JvdXAtbGFiZWwtaWNvbic6IHRydWUgfVwiIFtuZ1N0eWxlXT1cInsgY29sb3I6IGxhYmVsSXRlbS5jb2xvciB9XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFsYWJlbEl0ZW0uaWNvblwiIGNsYXNzPVwicC1tZXRlcmdyb3VwLWxhYmVsLW1hcmtlclwiIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZENvbG9yOiBsYWJlbEl0ZW0uY29sb3IgfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbGFiZWxJdGVtLCBpY29uOiBsYWJlbEl0ZW0uaWNvbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1ldGVyZ3JvdXAtbGFiZWwtdGV4dFwiPnt7IGxhYmVsSXRlbS5sYWJlbCB9fSAoe3sgcGFyZW50SW5zdGFuY2U/LnBlcmNlbnRWYWx1ZShsYWJlbEl0ZW0udmFsdWUpIH19KTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvb2w+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBNZXRlckdyb3VwTGFiZWwge1xuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnlbXSA9IG51bGw7XG5cbiAgICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAnc3RhcnQnIHwgJ2VuZCcgPSAnZW5kJztcblxuICAgIEBJbnB1dCgpIGxhYmVsT3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cbiAgICBASW5wdXQoKSBtaW46IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIG1heDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIGdldCBsYWJlbENsYXNzKCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtbGFiZWxzIHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtbGFiZWxzLXZlcnRpY2FsJzogdGhpcy5sYWJlbE9yaWVudGF0aW9uID09PSAndmVydGljYWwnLFxuICAgICAgICAgICAgJ3AtbWV0ZXJncm91cC1sYWJlbHMtaG9yaXpvbnRhbCc6IHRoaXMubGFiZWxPcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcGFyZW50SW5zdGFuY2U6IE1ldGVyR3JvdXAgPSBpbmplY3QoZm9yd2FyZFJlZigoKSA9PiBNZXRlckdyb3VwKSk7XG59XG4vKipcbiAqIE1ldGVyR3JvdXAgZGlzcGxheXMgc2NhbGFyIG1lYXN1cmVtZW50cyB3aXRoaW4gYSBrbm93biByYW5nZS5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1tZXRlckdyb3VwJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNjb250YWluZXIgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3NcIiByb2xlPVwibWV0ZXJcIiBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIm1pblwiIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCIgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ0b3RhbFBlcmNlbnQoKVwiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgIEBpZihsYWJlbFBvc2l0aW9uID09PSdzdGFydCcpIHtcbiAgICAgICAgICAgIDxwLW1ldGVyR3JvdXBMYWJlbCAqbmdJZj1cIiFsYWJlbFRlbXBsYXRlXCIgW3ZhbHVlXT1cInZhbHVlXCIgW2xhYmVsUG9zaXRpb25dPVwibGFiZWxQb3NpdGlvblwiIFtsYWJlbE9yaWVudGF0aW9uXT1cImxhYmVsT3JpZW50YXRpb25cIiBbbWluXT1cIm1pblwiIFttYXhdPVwibWF4XCIgW2ljb25UZW1wbGF0ZV09XCJpY29uVGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSwgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQoKSwgcGVyY2VudGFnZXM6IHBlcmNlbnRhZ2VzKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXJ0VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSwgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQoKSwgcGVyY2VudGFnZXM6IHBlcmNlbnRhZ2VzKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWV0ZXJncm91cC1tZXRlcnNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZXRlckl0ZW0gb2YgdmFsdWU7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1ldGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtZXRlckl0ZW0sIGluZGV4OiBpbmRleCwgb3JpZW50YXRpb246IHRoaXMub3JpZW50YXRpb24sIGNsYXNzOiAncC1tZXRlcmdyb3VwLW1ldGVyJywgc2l6ZTogcGVyY2VudFZhbHVlKG1ldGVySXRlbS52YWx1ZSksIHRvdGFsUGVyY2VudDogdG90YWxQZXJjZW50KCkgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZXRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWV0ZXJncm91cC1tZXRlclwiIFtuZ1N0eWxlXT1cIm1ldGVyU3R5bGUobWV0ZXJJdGVtKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbmRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZhbHVlLCB0b3RhbFBlcmNlbnQ6IHRvdGFsUGVyY2VudCgpLCBwZXJjZW50YWdlczogcGVyY2VudGFnZXMoKSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICBAaWYobGFiZWxQb3NpdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgIDxwLW1ldGVyR3JvdXBMYWJlbCAqbmdJZj1cIiFsYWJlbFRlbXBsYXRlXCIgW3ZhbHVlXT1cInZhbHVlXCIgW2xhYmVsUG9zaXRpb25dPVwibGFiZWxQb3NpdGlvblwiIFtsYWJlbE9yaWVudGF0aW9uXT1cImxhYmVsT3JpZW50YXRpb25cIiBbbWluXT1cIm1pblwiIFttYXhdPVwibWF4XCIgW2ljb25UZW1wbGF0ZV09XCJpY29uVGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSwgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQoKSwgcGVyY2VudGFnZXM6IHBlcmNlbnRhZ2VzKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTWV0ZXJHcm91cCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgdmFsdWUgb2YgdGhlIG1ldGVyZ3JvdXAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdmFsdWU6IE1ldGVySXRlbVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE1pbmludW0gYm91bmRhcnkgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbWluOiBudW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gYm91bmRhcnkgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXIgPSAxMDA7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBsYXlvdXQgb2YgdGhlIGNvbXBvbmVudCwgdmFsaWQgdmFsdWVzIGFyZSAnaG9yaXpvbnRhbCcgYW5kICd2ZXJ0aWNhbCcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBsYWJlbCBwb3NpdGlvbiBvZiB0aGUgY29tcG9uZW50LCB2YWxpZCB2YWx1ZXMgYXJlICdzdGFydCcgYW5kICdlbmQnLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGxhYmVsUG9zaXRpb246ICdzdGFydCcgfCAnZW5kJyA9ICdlbmQnO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgbGFiZWwgb3JpZW50YXRpb24gb2YgdGhlIGNvbXBvbmVudCwgdmFsaWQgdmFsdWVzIGFyZSAnaG9yaXpvbnRhbCcgYW5kICd2ZXJ0aWNhbCcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGFiZWxPcmllbnRhdGlvbjogc3RyaW5nID0gJ2hvcml6b250YWwnO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkO1xuXG4gICAgZ2V0IHZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJztcbiAgICB9XG5cbiAgICBnZXQgY29udGFpbmVyQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC1tZXRlcmdyb3VwIHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtaG9yaXpvbnRhbCc6IHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyxcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtdmVydGljYWwnOiB0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbGFiZWxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIG1ldGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBlbmRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIHN0YXJ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBpY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBjb250YWluZXIgPSB2aWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KTtcblxuICAgIGNvbnRhaW5lckVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IF9jb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcigpO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBEb21IYW5kbGVyLmdldE91dGVySGVpZ2h0KF9jb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMudmVydGljYWwgJiYgKHRoaXMuY29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnKTtcbiAgICB9KTtcblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdsYWJlbCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWxUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21ldGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBlcmNlbnQobWV0ZXIgPSAwKSB7XG4gICAgICAgIGNvbnN0IHBlcmNlbnRPZkl0ZW0gPSAoKG1ldGVyIC0gdGhpcy5taW4pIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pKSAqIDEwMDtcblxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIHBlcmNlbnRPZkl0ZW0pKSk7XG4gICAgfVxuICAgIHBlcmNlbnRWYWx1ZShtZXRlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5wZXJjZW50KG1ldGVyKSArICclJztcbiAgICB9XG4gICAgbWV0ZXJTdHlsZSh2YWwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdmFsLmNvbG9yLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiB0aGlzLnBlcmNlbnRWYWx1ZSh2YWwudmFsdWUpLFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIHRoaXMucGVyY2VudFZhbHVlKHZhbC52YWx1ZSlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB0b3RhbFBlcmNlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlcmNlbnQodGhpcy52YWx1ZS5yZWR1Y2UoKHRvdGFsLCB2YWwpID0+IHRvdGFsICsgdmFsLnZhbHVlLCAwKSk7XG4gICAgfVxuXG4gICAgcGVyY2VudGFnZXMoKSB7XG4gICAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgICBjb25zdCBzdW1zQXJyYXkgPSBbXTtcblxuICAgICAgICB0aGlzLnZhbHVlLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN1bSArPSBpdGVtLnZhbHVlO1xuICAgICAgICAgICAgc3Vtc0FycmF5LnB1c2goc3VtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN1bXNBcnJheTtcbiAgICB9XG5cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTWV0ZXJHcm91cCwgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtNZXRlckdyb3VwLCBNZXRlckdyb3VwTGFiZWxdXG59KVxuZXhwb3J0IGNsYXNzIE1ldGVyR3JvdXBNb2R1bGUge31cbiJdfQ==
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0ZXJncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZXRlcmdyb3VwL21ldGVyZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBMEIsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JOLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQWtCekMsTUFBTSxPQUFPLGVBQWU7SUFDZixLQUFLLEdBQVUsSUFBSSxDQUFDO0lBRXBCLGFBQWEsR0FBb0IsS0FBSyxDQUFDO0lBRXZDLGdCQUFnQixHQUE4QixZQUFZLENBQUM7SUFFM0QsR0FBRyxDQUFTO0lBRVosR0FBRyxDQUFTO0lBRVosWUFBWSxDQUErQjtJQUVwQixTQUFTLENBQXVDO0lBRWhGLElBQUksVUFBVTtRQUNWLE9BQU87WUFDSCxpQ0FBaUMsRUFBRSxJQUFJO1lBQ3ZDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxVQUFVO1lBQ3BFLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxZQUFZO1NBQzNFLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYyxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzt1R0F2QnpELGVBQWU7MkZBQWYsZUFBZSwyT0FhUCxhQUFhLDZCQTFCcEI7Ozs7Ozs7Ozs7O0tBV1Q7OzJGQUVRLGVBQWU7a0JBZjNCLFNB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QUFVLEVBQUUsWUFBWSxDQUFDO29CQUNuQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIElucHV0LCBOZ01vZHVsZSwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24sIGVmZmVjdCwgZm9yd2FyZFJlZiwgaW5qZWN0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IERvbUhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBNZXRlckl0ZW0gfSBmcm9tICcuL21ldGVyZ3JvdXAuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLW1ldGVyR3JvdXBMYWJlbCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG9sIFtuZ0NsYXNzXT1cImxhYmVsQ2xhc3NcIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbGFiZWxJdGVtIG9mIHZhbHVlOyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogcGFyZW50SW5zdGFuY2UudHJhY2tCeUZuXCIgY2xhc3M9XCJwLW1ldGVyZ3JvdXAtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImxhYmVsSXRlbS5pY29uXCIgW2NsYXNzXT1cImxhYmVsSXRlbS5pY29uXCIgW25nQ2xhc3NdPVwieyAncC1tZXRlcmdyb3VwLWxhYmVsLWljb24nOiB0cnVlIH1cIiBbbmdTdHlsZV09XCJ7IGNvbG9yOiBsYWJlbEl0ZW0uY29sb3IgfVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbGFiZWxJdGVtLmljb25cIiBjbGFzcz1cInAtbWV0ZXJncm91cC1sYWJlbC1tYXJrZXJcIiBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmRDb2xvcjogbGFiZWxJdGVtLmNvbG9yIH1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGxhYmVsSXRlbSwgaWNvbjogbGFiZWxJdGVtLmljb24gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZXRlcmdyb3VwLWxhYmVsLXRleHRcIj57eyBsYWJlbEl0ZW0ubGFiZWwgfX0gKHt7IHBhcmVudEluc3RhbmNlPy5wZXJjZW50VmFsdWUobGFiZWxJdGVtLnZhbHVlKSB9fSk8L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L29sPlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgTWV0ZXJHcm91cExhYmVsIHtcbiAgICBASW5wdXQoKSB2YWx1ZTogYW55W10gPSBudWxsO1xuXG4gICAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ3N0YXJ0JyB8ICdlbmQnID0gJ2VuZCc7XG5cbiAgICBASW5wdXQoKSBsYWJlbE9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuXG4gICAgQElucHV0KCkgbWluOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtYXg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWQ7XG5cbiAgICBnZXQgbGFiZWxDbGFzcygpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC1tZXRlcmdyb3VwLWxhYmVscyBwLWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAncC1tZXRlcmdyb3VwLWxhYmVscy12ZXJ0aWNhbCc6IHRoaXMubGFiZWxPcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyxcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtbGFiZWxzLWhvcml6b250YWwnOiB0aGlzLmxhYmVsT3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHBhcmVudEluc3RhbmNlOiBNZXRlckdyb3VwID0gaW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gTWV0ZXJHcm91cCkpO1xufVxuLyoqXG4gKiBNZXRlckdyb3VwIGRpc3BsYXlzIHNjYWxhciBtZWFzdXJlbWVudHMgd2l0aGluIGEga25vd24gcmFuZ2UuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbWV0ZXJHcm91cCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzXCIgcm9sZT1cIm1ldGVyXCIgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIiBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIm1heFwiIFthdHRyLmFyaWEtdmFsdWVub3ddPVwidG90YWxQZXJjZW50KClcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICBAaWYobGFiZWxQb3NpdGlvbiA9PT0nc3RhcnQnKSB7XG4gICAgICAgICAgICA8cC1tZXRlckdyb3VwTGFiZWwgKm5nSWY9XCIhbGFiZWxUZW1wbGF0ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiIFtsYWJlbFBvc2l0aW9uXT1cImxhYmVsUG9zaXRpb25cIiBbbGFiZWxPcmllbnRhdGlvbl09XCJsYWJlbE9yaWVudGF0aW9uXCIgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIFtpY29uVGVtcGxhdGVdPVwiaWNvblRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdmFsdWUsIHRvdGFsUGVyY2VudDogdG90YWxQZXJjZW50KCksIHBlcmNlbnRhZ2VzOiBwZXJjZW50YWdlcygpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGFydFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdmFsdWUsIHRvdGFsUGVyY2VudDogdG90YWxQZXJjZW50KCksIHBlcmNlbnRhZ2VzOiBwZXJjZW50YWdlcygpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1ldGVyZ3JvdXAtbWV0ZXJzXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWV0ZXJJdGVtIG9mIHZhbHVlOyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZXRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbWV0ZXJJdGVtLCBpbmRleDogaW5kZXgsIG9yaWVudGF0aW9uOiB0aGlzLm9yaWVudGF0aW9uLCBjbGFzczogJ3AtbWV0ZXJncm91cC1tZXRlcicsIHNpemU6IHBlcmNlbnRWYWx1ZShtZXRlckl0ZW0udmFsdWUpLCB0b3RhbFBlcmNlbnQ6IHRvdGFsUGVyY2VudCgpIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWV0ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1ldGVyZ3JvdXAtbWV0ZXJcIiBbbmdTdHlsZV09XCJtZXRlclN0eWxlKG1ldGVySXRlbSlcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW5kVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSwgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQoKSwgcGVyY2VudGFnZXM6IHBlcmNlbnRhZ2VzKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgQGlmKGxhYmVsUG9zaXRpb24gPT09ICdlbmQnKSB7XG4gICAgICAgICAgICA8cC1tZXRlckdyb3VwTGFiZWwgKm5nSWY9XCIhbGFiZWxUZW1wbGF0ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiIFtsYWJlbFBvc2l0aW9uXT1cImxhYmVsUG9zaXRpb25cIiBbbGFiZWxPcmllbnRhdGlvbl09XCJsYWJlbE9yaWVudGF0aW9uXCIgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIFtpY29uVGVtcGxhdGVdPVwiaWNvblRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdmFsdWUsIHRvdGFsUGVyY2VudDogdG90YWxQZXJjZW50KCksIHBlcmNlbnRhZ2VzOiBwZXJjZW50YWdlcygpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE1ldGVyR3JvdXAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICAvKipcbiAgICAgKiBDdXJyZW50IHZhbHVlIG9mIHRoZSBtZXRlcmdyb3VwLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHZhbHVlOiBNZXRlckl0ZW1bXSB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBNaW5pbnVtIGJvdW5kYXJ5IHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1pbjogbnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKiBNYXhpbXVtIGJvdW5kYXJ5IHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1heDogbnVtYmVyID0gMTAwO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgbGF5b3V0IG9mIHRoZSBjb21wb25lbnQsIHZhbGlkIHZhbHVlcyBhcmUgJ2hvcml6b250YWwnIGFuZCAndmVydGljYWwnLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgbGFiZWwgcG9zaXRpb24gb2YgdGhlIGNvbXBvbmVudCwgdmFsaWQgdmFsdWVzIGFyZSAnc3RhcnQnIGFuZCAnZW5kJy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAnc3RhcnQnIHwgJ2VuZCcgPSAnZW5kJztcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIGxhYmVsIG9yaWVudGF0aW9uIG9mIHRoZSBjb21wb25lbnQsIHZhbGlkIHZhbHVlcyBhcmUgJ2hvcml6b250YWwnIGFuZCAndmVydGljYWwnLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGxhYmVsT3JpZW50YXRpb246IHN0cmluZyA9ICdob3Jpem9udGFsJztcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIGdldCB2ZXJ0aWNhbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCc7XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3AtbWV0ZXJncm91cCBwLWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAncC1tZXRlcmdyb3VwLWhvcml6b250YWwnOiB0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcsXG4gICAgICAgICAgICAncC1tZXRlcmdyb3VwLXZlcnRpY2FsJzogdGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGxhYmVsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBtZXRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgZW5kVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBzdGFydFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgaWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgY29udGFpbmVyID0gdmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSk7XG5cbiAgICBjb250YWluZXJFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBfY29udGFpbmVyID0gdGhpcy5jb250YWluZXIoKTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gRG9tSGFuZGxlci5nZXRPdXRlckhlaWdodChfY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnZlcnRpY2FsICYmICh0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4Jyk7XG4gICAgfSk7XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnbGFiZWwnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtZXRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWV0ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2ljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwZXJjZW50KG1ldGVyID0gMCkge1xuICAgICAgICBjb25zdCBwZXJjZW50T2ZJdGVtID0gKChtZXRlciAtIHRoaXMubWluKSAvICh0aGlzLm1heCAtIHRoaXMubWluKSkgKiAxMDA7XG5cbiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwLCBwZXJjZW50T2ZJdGVtKSkpO1xuICAgIH1cbiAgICBwZXJjZW50VmFsdWUobWV0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVyY2VudChtZXRlcikgKyAnJSc7XG4gICAgfVxuICAgIG1ldGVyU3R5bGUodmFsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHZhbC5jb2xvcixcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYgdGhpcy5wZXJjZW50VmFsdWUodmFsLnZhbHVlKSxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiB0aGlzLnBlcmNlbnRWYWx1ZSh2YWwudmFsdWUpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdG90YWxQZXJjZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wZXJjZW50KHRoaXMudmFsdWUucmVkdWNlKCh0b3RhbCwgdmFsKSA9PiB0b3RhbCArIHZhbC52YWx1ZSwgMCkpO1xuICAgIH1cblxuICAgIHBlcmNlbnRhZ2VzKCkge1xuICAgICAgICBsZXQgc3VtID0gMDtcbiAgICAgICAgY29uc3Qgc3Vtc0FycmF5ID0gW107XG5cbiAgICAgICAgdGhpcy52YWx1ZS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzdW0gKz0gaXRlbS52YWx1ZTtcbiAgICAgICAgICAgIHN1bXNBcnJheS5wdXNoKHN1bSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzdW1zQXJyYXk7XG4gICAgfVxuXG4gICAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW01ldGVyR3JvdXAsIFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbTWV0ZXJHcm91cCwgTWV0ZXJHcm91cExhYmVsXVxufSlcbmV4cG9ydCBjbGFzcyBNZXRlckdyb3VwTW9kdWxlIHt9XG4iXX0=