primeng 16.0.0-rc.1 → 16.0.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 (884) hide show
  1. package/accordion/accordion.d.ts +140 -31
  2. package/accordion/accordion.interface.d.ts +49 -0
  3. package/accordion/public_api.d.ts +1 -0
  4. package/animate/animate.d.ts +15 -3
  5. package/api/blockableui.d.ts +7 -0
  6. package/api/confirmaeventtype.d.ts +3 -0
  7. package/api/confirmation.d.ts +67 -0
  8. package/api/confirmationservice.d.ts +17 -0
  9. package/api/contextmenuservice.d.ts +3 -2
  10. package/api/filtermetadata.d.ts +13 -0
  11. package/api/filterservice.d.ts +1 -20
  12. package/api/lazyloadevent.d.ts +33 -1
  13. package/api/lazyloadmeta.d.ts +19 -0
  14. package/api/megamenuitem.d.ts +90 -0
  15. package/api/menuitem.d.ts +136 -19
  16. package/api/message.d.ts +4 -0
  17. package/api/messageservice.d.ts +19 -0
  18. package/api/overlayoptions.d.ts +138 -0
  19. package/api/public_api.d.ts +4 -0
  20. package/api/scrolleroptions.d.ts +116 -0
  21. package/api/selectitem.d.ts +4 -0
  22. package/api/selectitemgroup.d.ts +4 -0
  23. package/api/shared.d.ts +2 -2
  24. package/api/sortevent.d.ts +4 -0
  25. package/api/sortmeta.d.ts +4 -0
  26. package/api/tablestate.d.ts +41 -1
  27. package/api/tooltipoptions.d.ts +63 -0
  28. package/api/translation.d.ts +4 -0
  29. package/api/treenode.d.ts +65 -7
  30. package/api/treenodedragevent.d.ts +19 -0
  31. package/api/treetablenode.d.ts +36 -0
  32. package/autocomplete/autocomplete.d.ts +373 -96
  33. package/autocomplete/autocomplete.interface.d.ts +134 -0
  34. package/autocomplete/public_api.d.ts +1 -0
  35. package/autofocus/autofocus.d.ts +9 -1
  36. package/avatar/avatar.d.ts +48 -9
  37. package/avatargroup/avatargroup.d.ts +16 -2
  38. package/badge/badge.d.ts +65 -14
  39. package/blockui/blockui.d.ts +33 -9
  40. package/blockui/blockui.interface.d.ts +11 -0
  41. package/blockui/public_api.d.ts +1 -0
  42. package/breadcrumb/breadcrumb.d.ts +44 -12
  43. package/breadcrumb/breadcrumb.interface.d.ts +27 -0
  44. package/breadcrumb/public_api.d.ts +1 -0
  45. package/button/button.d.ts +117 -23
  46. package/button/button.interface.d.ts +19 -0
  47. package/button/public_api.d.ts +1 -0
  48. package/calendar/calendar.d.ts +458 -153
  49. package/calendar/calendar.interface.d.ts +192 -0
  50. package/calendar/public_api.d.ts +1 -0
  51. package/card/card.d.ts +36 -14
  52. package/card/card.interface.d.ts +27 -0
  53. package/card/public_api.d.ts +1 -0
  54. package/carousel/carousel.d.ts +126 -32
  55. package/carousel/carousel.interface.d.ts +63 -0
  56. package/carousel/public_api.d.ts +1 -0
  57. package/cascadeselect/cascadeselect.d.ts +213 -71
  58. package/cascadeselect/cascadeselect.interface.d.ts +92 -0
  59. package/cascadeselect/public_api.d.ts +1 -0
  60. package/chart/chart.d.ts +45 -9
  61. package/checkbox/checkbox.d.ts +108 -22
  62. package/checkbox/checkbox.interface.d.ts +26 -0
  63. package/checkbox/public_api.d.ts +1 -0
  64. package/chip/chip.d.ts +59 -14
  65. package/chip/chip.interface.d.ts +15 -0
  66. package/chip/public_api.d.ts +1 -0
  67. package/chips/chips.d.ts +128 -25
  68. package/chips/chips.interface.d.ts +58 -0
  69. package/chips/public_api.d.ts +1 -0
  70. package/colorpicker/colorpicker.d.ts +138 -44
  71. package/colorpicker/colorpicker.interface.d.ts +15 -0
  72. package/colorpicker/public_api.d.ts +1 -0
  73. package/confirmdialog/confirmdialog.d.ts +176 -43
  74. package/confirmdialog/confirmdialog.interface.d.ts +23 -0
  75. package/confirmdialog/public_api.d.ts +1 -0
  76. package/confirmpopup/confirmpopup.d.ts +60 -17
  77. package/confirmpopup/confirmpopup.interface.d.ts +15 -0
  78. package/confirmpopup/public_api.d.ts +1 -0
  79. package/contextmenu/contextmenu.d.ts +87 -36
  80. package/dataview/dataview.d.ts +198 -52
  81. package/dataview/dataview.interface.d.ts +183 -0
  82. package/dataview/public_api.d.ts +1 -0
  83. package/defer/defer.d.ts +15 -5
  84. package/dialog/dialog.d.ts +245 -56
  85. package/dialog/dialog.interface.d.ts +31 -0
  86. package/dialog/public_api.d.ts +1 -0
  87. package/divider/divider.d.ts +32 -6
  88. package/dock/dock.d.ts +38 -11
  89. package/dock/dock.interface.d.ts +19 -0
  90. package/dock/public_api.d.ts +1 -0
  91. package/dragdrop/dragdrop.d.ts +78 -26
  92. package/dropdown/dropdown.d.ts +435 -136
  93. package/dropdown/dropdown.interface.d.ts +154 -0
  94. package/dropdown/public_api.d.ts +1 -0
  95. package/dynamicdialog/dialogservice.d.ts +11 -0
  96. package/dynamicdialog/dynamicdialog-config.d.ts +91 -2
  97. package/dynamicdialog/dynamicdialog-ref.d.ts +70 -0
  98. package/dynamicdialog/dynamicdialog.d.ts +22 -21
  99. package/editor/editor.d.ts +77 -17
  100. package/editor/editor.interface.d.ts +64 -0
  101. package/editor/public_api.d.ts +1 -0
  102. package/esm2022/accordion/accordion.interface.mjs +2 -0
  103. package/esm2022/accordion/accordion.mjs +142 -42
  104. package/esm2022/accordion/public_api.mjs +2 -1
  105. package/esm2022/animate/animate.mjs +20 -8
  106. package/esm2022/api/blockableui.mjs +1 -1
  107. package/esm2022/api/confirmaeventtype.mjs +4 -1
  108. package/esm2022/api/confirmation.mjs +1 -1
  109. package/esm2022/api/confirmationservice.mjs +21 -4
  110. package/esm2022/api/contextmenuservice.mjs +4 -4
  111. package/esm2022/api/filtermetadata.mjs +1 -1
  112. package/esm2022/api/filterservice.mjs +4 -4
  113. package/esm2022/api/lazyloadevent.mjs +1 -1
  114. package/esm2022/api/lazyloadmeta.mjs +2 -0
  115. package/esm2022/api/megamenuitem.mjs +1 -1
  116. package/esm2022/api/menuitem.mjs +1 -1
  117. package/esm2022/api/message.mjs +1 -1
  118. package/esm2022/api/messageservice.mjs +23 -4
  119. package/esm2022/api/overlayoptions.mjs +1 -1
  120. package/esm2022/api/overlayservice.mjs +4 -4
  121. package/esm2022/api/primengconfig.mjs +4 -4
  122. package/esm2022/api/public_api.mjs +5 -1
  123. package/esm2022/api/scrolleroptions.mjs +2 -0
  124. package/esm2022/api/selectitem.mjs +1 -1
  125. package/esm2022/api/selectitemgroup.mjs +1 -1
  126. package/esm2022/api/shared.mjs +15 -16
  127. package/esm2022/api/sortevent.mjs +1 -1
  128. package/esm2022/api/sortmeta.mjs +1 -1
  129. package/esm2022/api/tablestate.mjs +1 -1
  130. package/esm2022/api/tooltipoptions.mjs +2 -0
  131. package/esm2022/api/translation.mjs +1 -1
  132. package/esm2022/api/treedragdropservice.mjs +3 -3
  133. package/esm2022/api/treenode.mjs +1 -1
  134. package/esm2022/api/treenodedragevent.mjs +1 -1
  135. package/esm2022/api/treetablenode.mjs +2 -0
  136. package/esm2022/autocomplete/autocomplete.interface.mjs +2 -0
  137. package/esm2022/autocomplete/autocomplete.mjs +345 -75
  138. package/esm2022/autocomplete/public_api.mjs +2 -1
  139. package/esm2022/autofocus/autofocus.mjs +16 -8
  140. package/esm2022/avatar/avatar.mjs +46 -9
  141. package/esm2022/avatargroup/avatargroup.mjs +20 -8
  142. package/esm2022/badge/badge.mjs +91 -39
  143. package/esm2022/baseicon/baseicon.mjs +3 -3
  144. package/esm2022/blockui/blockui.interface.mjs +2 -0
  145. package/esm2022/blockui/blockui.mjs +48 -24
  146. package/esm2022/blockui/public_api.mjs +2 -1
  147. package/esm2022/breadcrumb/breadcrumb.interface.mjs +2 -0
  148. package/esm2022/breadcrumb/breadcrumb.mjs +41 -12
  149. package/esm2022/breadcrumb/public_api.mjs +2 -1
  150. package/esm2022/button/button.interface.mjs +2 -0
  151. package/esm2022/button/button.mjs +127 -36
  152. package/esm2022/button/public_api.mjs +2 -1
  153. package/esm2022/calendar/calendar.interface.mjs +2 -0
  154. package/esm2022/calendar/calendar.mjs +476 -156
  155. package/esm2022/calendar/public_api.mjs +2 -1
  156. package/esm2022/card/card.interface.mjs +2 -0
  157. package/esm2022/card/card.mjs +30 -10
  158. package/esm2022/card/public_api.mjs +2 -1
  159. package/esm2022/carousel/carousel.interface.mjs +2 -0
  160. package/esm2022/carousel/carousel.mjs +101 -15
  161. package/esm2022/carousel/public_api.mjs +2 -1
  162. package/esm2022/cascadeselect/cascadeselect.interface.mjs +2 -0
  163. package/esm2022/cascadeselect/cascadeselect.mjs +174 -40
  164. package/esm2022/cascadeselect/public_api.mjs +2 -1
  165. package/esm2022/chart/chart.mjs +56 -20
  166. package/esm2022/checkbox/checkbox.interface.mjs +2 -0
  167. package/esm2022/checkbox/checkbox.mjs +93 -12
  168. package/esm2022/checkbox/public_api.mjs +2 -1
  169. package/esm2022/chip/chip.interface.mjs +2 -0
  170. package/esm2022/chip/chip.mjs +53 -11
  171. package/esm2022/chip/public_api.mjs +2 -1
  172. package/esm2022/chips/chips.interface.mjs +2 -0
  173. package/esm2022/chips/chips.mjs +106 -9
  174. package/esm2022/chips/public_api.mjs +2 -1
  175. package/esm2022/colorpicker/colorpicker.interface.mjs +2 -0
  176. package/esm2022/colorpicker/colorpicker.mjs +82 -17
  177. package/esm2022/colorpicker/public_api.mjs +2 -1
  178. package/esm2022/confirmdialog/confirmdialog.interface.mjs +2 -0
  179. package/esm2022/confirmdialog/confirmdialog.mjs +153 -20
  180. package/esm2022/confirmdialog/public_api.mjs +2 -1
  181. package/esm2022/confirmpopup/confirmpopup.interface.mjs +2 -0
  182. package/esm2022/confirmpopup/confirmpopup.mjs +89 -47
  183. package/esm2022/confirmpopup/public_api.mjs +2 -1
  184. package/esm2022/contextmenu/contextmenu.mjs +96 -42
  185. package/esm2022/dataview/dataview.interface.mjs +2 -0
  186. package/esm2022/dataview/dataview.mjs +168 -28
  187. package/esm2022/dataview/public_api.mjs +2 -1
  188. package/esm2022/defer/defer.mjs +19 -10
  189. package/esm2022/dialog/dialog.interface.mjs +2 -0
  190. package/esm2022/dialog/dialog.mjs +281 -93
  191. package/esm2022/dialog/public_api.mjs +2 -1
  192. package/esm2022/divider/divider.mjs +35 -11
  193. package/esm2022/dock/dock.interface.mjs +2 -0
  194. package/esm2022/dock/dock.mjs +35 -11
  195. package/esm2022/dock/public_api.mjs +2 -1
  196. package/esm2022/dom/domhandler.mjs +2 -2
  197. package/esm2022/dragdrop/dragdrop.mjs +69 -18
  198. package/esm2022/dropdown/dropdown.interface.mjs +2 -0
  199. package/esm2022/dropdown/dropdown.mjs +394 -102
  200. package/esm2022/dropdown/public_api.mjs +2 -1
  201. package/esm2022/dynamicdialog/dialogservice.mjs +15 -4
  202. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +86 -1
  203. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +71 -1
  204. package/esm2022/dynamicdialog/dynamicdialog.mjs +11 -11
  205. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +3 -3
  206. package/esm2022/editor/editor.interface.mjs +2 -0
  207. package/esm2022/editor/editor.mjs +91 -35
  208. package/esm2022/editor/public_api.mjs +2 -1
  209. package/esm2022/fieldset/fieldset.interface.mjs +2 -0
  210. package/esm2022/fieldset/fieldset.mjs +65 -21
  211. package/esm2022/fieldset/public_api.mjs +2 -1
  212. package/esm2022/fileupload/fileupload.interface.mjs +2 -0
  213. package/esm2022/fileupload/fileupload.mjs +223 -25
  214. package/esm2022/fileupload/public_api.mjs +2 -1
  215. package/esm2022/focustrap/focustrap.mjs +17 -9
  216. package/esm2022/galleria/galleria.interface.mjs +2 -0
  217. package/esm2022/galleria/galleria.mjs +155 -37
  218. package/esm2022/galleria/public_api.mjs +2 -1
  219. package/esm2022/icons/angledoubledown/angledoubledown.mjs +3 -3
  220. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +3 -3
  221. package/esm2022/icons/angledoubleright/angledoubleright.mjs +3 -3
  222. package/esm2022/icons/angledoubleup/angledoubleup.mjs +3 -3
  223. package/esm2022/icons/angledown/angledown.mjs +3 -3
  224. package/esm2022/icons/angleleft/angleleft.mjs +3 -3
  225. package/esm2022/icons/angleright/angleright.mjs +3 -3
  226. package/esm2022/icons/angleup/angleup.mjs +3 -3
  227. package/esm2022/icons/arrowdown/arrowdown.mjs +13 -8
  228. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +3 -3
  229. package/esm2022/icons/arrowdownright/arrowdownright.mjs +3 -3
  230. package/esm2022/icons/arrowleft/arrowleft.mjs +13 -8
  231. package/esm2022/icons/arrowright/arrowright.mjs +3 -3
  232. package/esm2022/icons/arrowup/arrowup.mjs +13 -8
  233. package/esm2022/icons/ban/ban.mjs +13 -8
  234. package/esm2022/icons/bars/bars.mjs +3 -3
  235. package/esm2022/icons/calendar/calendar.mjs +3 -3
  236. package/esm2022/icons/caretleft/caretleft.mjs +3 -3
  237. package/esm2022/icons/caretright/caretright.mjs +3 -3
  238. package/esm2022/icons/check/check.mjs +3 -3
  239. package/esm2022/icons/chevrondown/chevrondown.mjs +3 -3
  240. package/esm2022/icons/chevronleft/chevronleft.mjs +3 -3
  241. package/esm2022/icons/chevronright/chevronright.mjs +3 -3
  242. package/esm2022/icons/chevronup/chevronup.mjs +3 -3
  243. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +13 -8
  244. package/esm2022/icons/eye/eye.mjs +3 -3
  245. package/esm2022/icons/eyeslash/eyeslash.mjs +13 -8
  246. package/esm2022/icons/filter/filter.mjs +13 -8
  247. package/esm2022/icons/filterslash/filterslash.mjs +13 -8
  248. package/esm2022/icons/home/home.mjs +13 -8
  249. package/esm2022/icons/infocircle/infocircle.mjs +13 -8
  250. package/esm2022/icons/minus/minus.mjs +3 -3
  251. package/esm2022/icons/pencil/pencil.mjs +13 -8
  252. package/esm2022/icons/plus/plus.mjs +13 -8
  253. package/esm2022/icons/refresh/refresh.mjs +13 -8
  254. package/esm2022/icons/search/search.mjs +13 -8
  255. package/esm2022/icons/searchminus/searchminus.mjs +13 -8
  256. package/esm2022/icons/searchplus/searchplus.mjs +13 -8
  257. package/esm2022/icons/sortalt/sortalt.mjs +13 -8
  258. package/esm2022/icons/sortamountdown/sortamountdown.mjs +13 -8
  259. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +13 -8
  260. package/esm2022/icons/spinner/spinner.mjs +13 -8
  261. package/esm2022/icons/star/star.mjs +13 -8
  262. package/esm2022/icons/starfill/starfill.mjs +13 -8
  263. package/esm2022/icons/thlarge/thlarge.mjs +13 -8
  264. package/esm2022/icons/times/times.mjs +3 -3
  265. package/esm2022/icons/timescircle/timescircle.mjs +13 -8
  266. package/esm2022/icons/trash/trash.mjs +13 -8
  267. package/esm2022/icons/undo/undo.mjs +13 -8
  268. package/esm2022/icons/upload/upload.mjs +13 -8
  269. package/esm2022/icons/windowmaximize/windowmaximize.mjs +13 -8
  270. package/esm2022/icons/windowminimize/windowminimize.mjs +13 -8
  271. package/esm2022/image/image.interface.mjs +2 -0
  272. package/esm2022/image/image.mjs +81 -16
  273. package/esm2022/image/public_api.mjs +2 -1
  274. package/esm2022/inplace/inplace.interface.mjs +2 -0
  275. package/esm2022/inplace/inplace.mjs +76 -24
  276. package/esm2022/inplace/public_api.mjs +2 -1
  277. package/esm2022/inputmask/inputmask.interface.mjs +2 -0
  278. package/esm2022/inputmask/inputmask.mjs +169 -41
  279. package/esm2022/inputmask/public_api.mjs +2 -1
  280. package/esm2022/inputnumber/inputnumber.interface.mjs +2 -0
  281. package/esm2022/inputnumber/inputnumber.mjs +243 -43
  282. package/esm2022/inputnumber/public_api.mjs +2 -1
  283. package/esm2022/inputswitch/inputswitch.interface.mjs +2 -0
  284. package/esm2022/inputswitch/inputswitch.mjs +61 -8
  285. package/esm2022/inputswitch/public_api.mjs +2 -1
  286. package/esm2022/inputtext/inputtext.mjs +9 -9
  287. package/esm2022/inputtextarea/inputtextarea.mjs +21 -8
  288. package/esm2022/keyfilter/keyfilter.mjs +34 -17
  289. package/esm2022/knob/knob.mjs +90 -18
  290. package/esm2022/listbox/listbox.interface.mjs +2 -0
  291. package/esm2022/listbox/listbox.mjs +154 -27
  292. package/esm2022/listbox/public_api.mjs +2 -1
  293. package/esm2022/megamenu/megamenu.interface.mjs +2 -0
  294. package/esm2022/megamenu/megamenu.mjs +33 -13
  295. package/esm2022/megamenu/public_api.mjs +2 -1
  296. package/esm2022/menu/menu.mjs +80 -22
  297. package/esm2022/menubar/menubar.interface.mjs +2 -0
  298. package/esm2022/menubar/menubar.mjs +71 -34
  299. package/esm2022/menubar/public_api.mjs +2 -1
  300. package/esm2022/message/message.mjs +34 -10
  301. package/esm2022/messages/messages.interface.mjs +2 -0
  302. package/esm2022/messages/messages.mjs +68 -19
  303. package/esm2022/messages/public_api.mjs +2 -1
  304. package/esm2022/multiselect/multiselect.interface.mjs +2 -0
  305. package/esm2022/multiselect/multiselect.mjs +351 -63
  306. package/esm2022/multiselect/public_api.mjs +2 -1
  307. package/esm2022/orderlist/orderlist.interface.mjs +2 -0
  308. package/esm2022/orderlist/orderlist.mjs +142 -38
  309. package/esm2022/orderlist/public_api.mjs +2 -1
  310. package/esm2022/organizationchart/organizationchart.interface.mjs +2 -0
  311. package/esm2022/organizationchart/organizationchart.mjs +71 -14
  312. package/esm2022/organizationchart/public_api.mjs +2 -1
  313. package/esm2022/overlay/overlay.mjs +123 -9
  314. package/esm2022/overlaypanel/overlaypanel.mjs +86 -14
  315. package/esm2022/paginator/paginator.interface.mjs +2 -0
  316. package/esm2022/paginator/paginator.mjs +117 -22
  317. package/esm2022/paginator/public_api.mjs +2 -1
  318. package/esm2022/panel/panel.interface.mjs +2 -0
  319. package/esm2022/panel/panel.mjs +86 -20
  320. package/esm2022/panel/public_api.mjs +2 -1
  321. package/esm2022/panelmenu/panelmenu.interface.mjs +2 -0
  322. package/esm2022/panelmenu/panelmenu.mjs +43 -19
  323. package/esm2022/panelmenu/public_api.mjs +2 -1
  324. package/esm2022/password/password.mjs +156 -24
  325. package/esm2022/picklist/picklist.interface.mjs +2 -0
  326. package/esm2022/picklist/picklist.mjs +218 -16
  327. package/esm2022/picklist/public_api.mjs +2 -1
  328. package/esm2022/progressbar/progressbar.mjs +43 -11
  329. package/esm2022/progressspinner/progressspinner.mjs +36 -12
  330. package/esm2022/radiobutton/public_api.mjs +2 -1
  331. package/esm2022/radiobutton/radiobutton.interface.mjs +2 -0
  332. package/esm2022/radiobutton/radiobutton.mjs +82 -11
  333. package/esm2022/rating/public_api.mjs +2 -1
  334. package/esm2022/rating/rating.interface.mjs +2 -0
  335. package/esm2022/rating/rating.mjs +70 -22
  336. package/esm2022/ripple/ripple.mjs +16 -12
  337. package/esm2022/scroller/public_api.mjs +2 -1
  338. package/esm2022/scroller/scroller.interface.mjs +2 -0
  339. package/esm2022/scroller/scroller.mjs +141 -20
  340. package/esm2022/scrollpanel/public_api.mjs +2 -1
  341. package/esm2022/scrollpanel/scrollpanel.interface.mjs +2 -0
  342. package/esm2022/scrollpanel/scrollpanel.mjs +34 -13
  343. package/esm2022/scrolltop/public_api.mjs +2 -1
  344. package/esm2022/scrolltop/scrolltop.interface.mjs +2 -0
  345. package/esm2022/scrolltop/scrolltop.mjs +48 -12
  346. package/esm2022/selectbutton/public_api.mjs +2 -1
  347. package/esm2022/selectbutton/selectbutton.interface.mjs +2 -0
  348. package/esm2022/selectbutton/selectbutton.mjs +68 -10
  349. package/esm2022/sidebar/public_api.mjs +2 -1
  350. package/esm2022/sidebar/sidebar.interface.mjs +2 -0
  351. package/esm2022/sidebar/sidebar.mjs +127 -50
  352. package/esm2022/skeleton/skeleton.mjs +47 -11
  353. package/esm2022/slidemenu/public_api.mjs +2 -1
  354. package/esm2022/slidemenu/slidemenu.interface.mjs +2 -0
  355. package/esm2022/slidemenu/slidemenu.mjs +113 -31
  356. package/esm2022/slider/public_api.mjs +2 -1
  357. package/esm2022/slider/slider.interface.mjs +2 -0
  358. package/esm2022/slider/slider.mjs +74 -15
  359. package/esm2022/speeddial/public_api.mjs +2 -1
  360. package/esm2022/speeddial/speeddial.interface.mjs +2 -0
  361. package/esm2022/speeddial/speeddial.mjs +124 -18
  362. package/esm2022/spinner/spinner.mjs +7 -7
  363. package/esm2022/splitbutton/public_api.mjs +2 -1
  364. package/esm2022/splitbutton/splitbutton.interface.mjs +2 -0
  365. package/esm2022/splitbutton/splitbutton.mjs +92 -18
  366. package/esm2022/splitter/public_api.mjs +2 -1
  367. package/esm2022/splitter/splitter.interface.mjs +2 -0
  368. package/esm2022/splitter/splitter.mjs +78 -24
  369. package/esm2022/steps/steps.mjs +38 -9
  370. package/esm2022/styleclass/styleclass.mjs +54 -10
  371. package/esm2022/table/public_api.mjs +2 -1
  372. package/esm2022/table/table.interface.mjs +2 -0
  373. package/esm2022/table/table.mjs +690 -220
  374. package/esm2022/tabmenu/public_api.mjs +2 -1
  375. package/esm2022/tabmenu/tabmenu.interface.mjs +2 -0
  376. package/esm2022/tabmenu/tabmenu.mjs +52 -20
  377. package/esm2022/tabview/public_api.mjs +2 -1
  378. package/esm2022/tabview/tabview.interface.mjs +2 -0
  379. package/esm2022/tabview/tabview.mjs +199 -101
  380. package/esm2022/tag/public_api.mjs +2 -1
  381. package/esm2022/tag/tag.interface.mjs +2 -0
  382. package/esm2022/tag/tag.mjs +43 -15
  383. package/esm2022/terminal/terminal.mjs +28 -8
  384. package/esm2022/terminal/terminalservice.mjs +3 -3
  385. package/esm2022/tieredmenu/public_api.mjs +2 -1
  386. package/esm2022/tieredmenu/tieredmenu.interface.mjs +2 -0
  387. package/esm2022/tieredmenu/tieredmenu.mjs +94 -23
  388. package/esm2022/timeline/public_api.mjs +2 -1
  389. package/esm2022/timeline/timeline.interface.mjs +2 -0
  390. package/esm2022/timeline/timeline.mjs +32 -8
  391. package/esm2022/toast/public_api.mjs +2 -1
  392. package/esm2022/toast/toast.interface.mjs +2 -0
  393. package/esm2022/toast/toast.mjs +96 -36
  394. package/esm2022/togglebutton/public_api.mjs +2 -1
  395. package/esm2022/togglebutton/togglebutton.interface.mjs +2 -0
  396. package/esm2022/togglebutton/togglebutton.mjs +65 -12
  397. package/esm2022/toolbar/public_api.mjs +2 -1
  398. package/esm2022/toolbar/toolbar.interface.mjs +2 -0
  399. package/esm2022/toolbar/toolbar.mjs +20 -8
  400. package/esm2022/tooltip/tooltip.mjs +99 -15
  401. package/esm2022/tree/public_api.mjs +2 -1
  402. package/esm2022/tree/tree.interface.mjs +2 -0
  403. package/esm2022/tree/tree.mjs +262 -43
  404. package/esm2022/treeselect/public_api.mjs +2 -1
  405. package/esm2022/treeselect/treeselect.interface.mjs +2 -0
  406. package/esm2022/treeselect/treeselect.mjs +221 -53
  407. package/esm2022/treetable/public_api.mjs +2 -1
  408. package/esm2022/treetable/treetable.interface.mjs +2 -0
  409. package/esm2022/treetable/treetable.mjs +506 -155
  410. package/esm2022/tristatecheckbox/public_api.mjs +2 -1
  411. package/esm2022/tristatecheckbox/tristatecheckbox.interface.mjs +2 -0
  412. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +61 -8
  413. package/esm2022/ts-helpers/primeng-ts-helpers.mjs +5 -0
  414. package/esm2022/ts-helpers/public_api.mjs +2 -0
  415. package/esm2022/ts-helpers/ts-helpers.mjs +2 -0
  416. package/esm2022/virtualscroller/public_api.mjs +2 -1
  417. package/esm2022/virtualscroller/virtualscroller.interface.mjs +2 -0
  418. package/esm2022/virtualscroller/virtualscroller.mjs +52 -11
  419. package/fesm2022/primeng-accordion.mjs +140 -40
  420. package/fesm2022/primeng-accordion.mjs.map +1 -1
  421. package/fesm2022/primeng-animate.mjs +19 -7
  422. package/fesm2022/primeng-animate.mjs.map +1 -1
  423. package/fesm2022/primeng-api.mjs +73 -34
  424. package/fesm2022/primeng-api.mjs.map +1 -1
  425. package/fesm2022/primeng-autocomplete.mjs +345 -75
  426. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  427. package/fesm2022/primeng-autofocus.mjs +15 -7
  428. package/fesm2022/primeng-autofocus.mjs.map +1 -1
  429. package/fesm2022/primeng-avatar.mjs +46 -9
  430. package/fesm2022/primeng-avatar.mjs.map +1 -1
  431. package/fesm2022/primeng-avatargroup.mjs +19 -7
  432. package/fesm2022/primeng-avatargroup.mjs.map +1 -1
  433. package/fesm2022/primeng-badge.mjs +90 -38
  434. package/fesm2022/primeng-badge.mjs.map +1 -1
  435. package/fesm2022/primeng-baseicon.mjs +3 -3
  436. package/fesm2022/primeng-blockui.mjs +48 -24
  437. package/fesm2022/primeng-blockui.mjs.map +1 -1
  438. package/fesm2022/primeng-breadcrumb.mjs +42 -13
  439. package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
  440. package/fesm2022/primeng-button.mjs +126 -35
  441. package/fesm2022/primeng-button.mjs.map +1 -1
  442. package/fesm2022/primeng-calendar.mjs +475 -155
  443. package/fesm2022/primeng-calendar.mjs.map +1 -1
  444. package/fesm2022/primeng-card.mjs +29 -9
  445. package/fesm2022/primeng-card.mjs.map +1 -1
  446. package/fesm2022/primeng-carousel.mjs +100 -14
  447. package/fesm2022/primeng-carousel.mjs.map +1 -1
  448. package/fesm2022/primeng-cascadeselect.mjs +173 -39
  449. package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
  450. package/fesm2022/primeng-chart.mjs +55 -19
  451. package/fesm2022/primeng-chart.mjs.map +1 -1
  452. package/fesm2022/primeng-checkbox.mjs +93 -12
  453. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  454. package/fesm2022/primeng-chip.mjs +53 -11
  455. package/fesm2022/primeng-chip.mjs.map +1 -1
  456. package/fesm2022/primeng-chips.mjs +105 -8
  457. package/fesm2022/primeng-chips.mjs.map +1 -1
  458. package/fesm2022/primeng-colorpicker.mjs +81 -16
  459. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  460. package/fesm2022/primeng-confirmdialog.mjs +151 -18
  461. package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
  462. package/fesm2022/primeng-confirmpopup.mjs +89 -47
  463. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  464. package/fesm2022/primeng-contextmenu.mjs +94 -40
  465. package/fesm2022/primeng-contextmenu.mjs.map +1 -1
  466. package/fesm2022/primeng-dataview.mjs +167 -27
  467. package/fesm2022/primeng-dataview.mjs.map +1 -1
  468. package/fesm2022/primeng-defer.mjs +18 -9
  469. package/fesm2022/primeng-defer.mjs.map +1 -1
  470. package/fesm2022/primeng-dialog.mjs +281 -93
  471. package/fesm2022/primeng-dialog.mjs.map +1 -1
  472. package/fesm2022/primeng-divider.mjs +34 -10
  473. package/fesm2022/primeng-divider.mjs.map +1 -1
  474. package/fesm2022/primeng-dock.mjs +35 -11
  475. package/fesm2022/primeng-dock.mjs.map +1 -1
  476. package/fesm2022/primeng-dom.mjs +1 -1
  477. package/fesm2022/primeng-dom.mjs.map +1 -1
  478. package/fesm2022/primeng-dragdrop.mjs +68 -17
  479. package/fesm2022/primeng-dragdrop.mjs.map +1 -1
  480. package/fesm2022/primeng-dropdown.mjs +394 -102
  481. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  482. package/fesm2022/primeng-dynamicdialog.mjs +180 -14
  483. package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
  484. package/fesm2022/primeng-editor.mjs +90 -35
  485. package/fesm2022/primeng-editor.mjs.map +1 -1
  486. package/fesm2022/primeng-fieldset.mjs +64 -20
  487. package/fesm2022/primeng-fieldset.mjs.map +1 -1
  488. package/fesm2022/primeng-fileupload.mjs +222 -24
  489. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  490. package/fesm2022/primeng-focustrap.mjs +16 -8
  491. package/fesm2022/primeng-focustrap.mjs.map +1 -1
  492. package/fesm2022/primeng-galleria.mjs +155 -37
  493. package/fesm2022/primeng-galleria.mjs.map +1 -1
  494. package/fesm2022/primeng-icons-angledoubledown.mjs +3 -3
  495. package/fesm2022/primeng-icons-angledoubleleft.mjs +3 -3
  496. package/fesm2022/primeng-icons-angledoubleright.mjs +3 -3
  497. package/fesm2022/primeng-icons-angledoubleup.mjs +3 -3
  498. package/fesm2022/primeng-icons-angledown.mjs +3 -3
  499. package/fesm2022/primeng-icons-angleleft.mjs +3 -3
  500. package/fesm2022/primeng-icons-angleright.mjs +3 -3
  501. package/fesm2022/primeng-icons-angleup.mjs +3 -3
  502. package/fesm2022/primeng-icons-arrowdown.mjs +12 -7
  503. package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -1
  504. package/fesm2022/primeng-icons-arrowdownleft.mjs +3 -3
  505. package/fesm2022/primeng-icons-arrowdownright.mjs +3 -3
  506. package/fesm2022/primeng-icons-arrowleft.mjs +12 -7
  507. package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -1
  508. package/fesm2022/primeng-icons-arrowright.mjs +3 -3
  509. package/fesm2022/primeng-icons-arrowup.mjs +12 -7
  510. package/fesm2022/primeng-icons-arrowup.mjs.map +1 -1
  511. package/fesm2022/primeng-icons-ban.mjs +12 -7
  512. package/fesm2022/primeng-icons-ban.mjs.map +1 -1
  513. package/fesm2022/primeng-icons-bars.mjs +3 -3
  514. package/fesm2022/primeng-icons-calendar.mjs +3 -3
  515. package/fesm2022/primeng-icons-caretleft.mjs +3 -3
  516. package/fesm2022/primeng-icons-caretright.mjs +3 -3
  517. package/fesm2022/primeng-icons-check.mjs +3 -3
  518. package/fesm2022/primeng-icons-chevrondown.mjs +3 -3
  519. package/fesm2022/primeng-icons-chevronleft.mjs +3 -3
  520. package/fesm2022/primeng-icons-chevronright.mjs +3 -3
  521. package/fesm2022/primeng-icons-chevronup.mjs +3 -3
  522. package/fesm2022/primeng-icons-exclamationtriangle.mjs +12 -7
  523. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -1
  524. package/fesm2022/primeng-icons-eye.mjs +3 -3
  525. package/fesm2022/primeng-icons-eyeslash.mjs +12 -7
  526. package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -1
  527. package/fesm2022/primeng-icons-filter.mjs +12 -7
  528. package/fesm2022/primeng-icons-filter.mjs.map +1 -1
  529. package/fesm2022/primeng-icons-filterslash.mjs +12 -7
  530. package/fesm2022/primeng-icons-filterslash.mjs.map +1 -1
  531. package/fesm2022/primeng-icons-home.mjs +12 -7
  532. package/fesm2022/primeng-icons-home.mjs.map +1 -1
  533. package/fesm2022/primeng-icons-infocircle.mjs +12 -7
  534. package/fesm2022/primeng-icons-infocircle.mjs.map +1 -1
  535. package/fesm2022/primeng-icons-minus.mjs +3 -3
  536. package/fesm2022/primeng-icons-pencil.mjs +12 -7
  537. package/fesm2022/primeng-icons-pencil.mjs.map +1 -1
  538. package/fesm2022/primeng-icons-plus.mjs +12 -7
  539. package/fesm2022/primeng-icons-plus.mjs.map +1 -1
  540. package/fesm2022/primeng-icons-refresh.mjs +12 -7
  541. package/fesm2022/primeng-icons-refresh.mjs.map +1 -1
  542. package/fesm2022/primeng-icons-search.mjs +12 -7
  543. package/fesm2022/primeng-icons-search.mjs.map +1 -1
  544. package/fesm2022/primeng-icons-searchminus.mjs +12 -7
  545. package/fesm2022/primeng-icons-searchminus.mjs.map +1 -1
  546. package/fesm2022/primeng-icons-searchplus.mjs +12 -7
  547. package/fesm2022/primeng-icons-searchplus.mjs.map +1 -1
  548. package/fesm2022/primeng-icons-sortalt.mjs +12 -7
  549. package/fesm2022/primeng-icons-sortalt.mjs.map +1 -1
  550. package/fesm2022/primeng-icons-sortamountdown.mjs +12 -7
  551. package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -1
  552. package/fesm2022/primeng-icons-sortamountupalt.mjs +12 -7
  553. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -1
  554. package/fesm2022/primeng-icons-spinner.mjs +12 -7
  555. package/fesm2022/primeng-icons-spinner.mjs.map +1 -1
  556. package/fesm2022/primeng-icons-star.mjs +12 -7
  557. package/fesm2022/primeng-icons-star.mjs.map +1 -1
  558. package/fesm2022/primeng-icons-starfill.mjs +12 -7
  559. package/fesm2022/primeng-icons-starfill.mjs.map +1 -1
  560. package/fesm2022/primeng-icons-thlarge.mjs +12 -7
  561. package/fesm2022/primeng-icons-thlarge.mjs.map +1 -1
  562. package/fesm2022/primeng-icons-times.mjs +3 -3
  563. package/fesm2022/primeng-icons-timescircle.mjs +12 -7
  564. package/fesm2022/primeng-icons-timescircle.mjs.map +1 -1
  565. package/fesm2022/primeng-icons-trash.mjs +12 -7
  566. package/fesm2022/primeng-icons-trash.mjs.map +1 -1
  567. package/fesm2022/primeng-icons-undo.mjs +12 -7
  568. package/fesm2022/primeng-icons-undo.mjs.map +1 -1
  569. package/fesm2022/primeng-icons-upload.mjs +12 -7
  570. package/fesm2022/primeng-icons-upload.mjs.map +1 -1
  571. package/fesm2022/primeng-icons-windowmaximize.mjs +12 -7
  572. package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -1
  573. package/fesm2022/primeng-icons-windowminimize.mjs +12 -7
  574. package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -1
  575. package/fesm2022/primeng-image.mjs +80 -15
  576. package/fesm2022/primeng-image.mjs.map +1 -1
  577. package/fesm2022/primeng-inplace.mjs +76 -24
  578. package/fesm2022/primeng-inplace.mjs.map +1 -1
  579. package/fesm2022/primeng-inputmask.mjs +169 -41
  580. package/fesm2022/primeng-inputmask.mjs.map +1 -1
  581. package/fesm2022/primeng-inputnumber.mjs +243 -43
  582. package/fesm2022/primeng-inputnumber.mjs.map +1 -1
  583. package/fesm2022/primeng-inputswitch.mjs +60 -7
  584. package/fesm2022/primeng-inputswitch.mjs.map +1 -1
  585. package/fesm2022/primeng-inputtext.mjs +8 -8
  586. package/fesm2022/primeng-inputtext.mjs.map +1 -1
  587. package/fesm2022/primeng-inputtextarea.mjs +20 -7
  588. package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
  589. package/fesm2022/primeng-keyfilter.mjs +33 -16
  590. package/fesm2022/primeng-keyfilter.mjs.map +1 -1
  591. package/fesm2022/primeng-knob.mjs +89 -17
  592. package/fesm2022/primeng-knob.mjs.map +1 -1
  593. package/fesm2022/primeng-listbox.mjs +153 -26
  594. package/fesm2022/primeng-listbox.mjs.map +1 -1
  595. package/fesm2022/primeng-megamenu.mjs +33 -13
  596. package/fesm2022/primeng-megamenu.mjs.map +1 -1
  597. package/fesm2022/primeng-menu.mjs +79 -21
  598. package/fesm2022/primeng-menu.mjs.map +1 -1
  599. package/fesm2022/primeng-menubar.mjs +72 -35
  600. package/fesm2022/primeng-menubar.mjs.map +1 -1
  601. package/fesm2022/primeng-message.mjs +34 -10
  602. package/fesm2022/primeng-message.mjs.map +1 -1
  603. package/fesm2022/primeng-messages.mjs +69 -20
  604. package/fesm2022/primeng-messages.mjs.map +1 -1
  605. package/fesm2022/primeng-multiselect.mjs +350 -62
  606. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  607. package/fesm2022/primeng-orderlist.mjs +141 -37
  608. package/fesm2022/primeng-orderlist.mjs.map +1 -1
  609. package/fesm2022/primeng-organizationchart.mjs +70 -13
  610. package/fesm2022/primeng-organizationchart.mjs.map +1 -1
  611. package/fesm2022/primeng-overlay.mjs +122 -8
  612. package/fesm2022/primeng-overlay.mjs.map +1 -1
  613. package/fesm2022/primeng-overlaypanel.mjs +85 -13
  614. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  615. package/fesm2022/primeng-paginator.mjs +116 -21
  616. package/fesm2022/primeng-paginator.mjs.map +1 -1
  617. package/fesm2022/primeng-panel.mjs +85 -19
  618. package/fesm2022/primeng-panel.mjs.map +1 -1
  619. package/fesm2022/primeng-panelmenu.mjs +43 -19
  620. package/fesm2022/primeng-panelmenu.mjs.map +1 -1
  621. package/fesm2022/primeng-password.mjs +156 -24
  622. package/fesm2022/primeng-password.mjs.map +1 -1
  623. package/fesm2022/primeng-picklist.mjs +217 -15
  624. package/fesm2022/primeng-picklist.mjs.map +1 -1
  625. package/fesm2022/primeng-progressbar.mjs +42 -10
  626. package/fesm2022/primeng-progressbar.mjs.map +1 -1
  627. package/fesm2022/primeng-progressspinner.mjs +36 -12
  628. package/fesm2022/primeng-progressspinner.mjs.map +1 -1
  629. package/fesm2022/primeng-radiobutton.mjs +81 -10
  630. package/fesm2022/primeng-radiobutton.mjs.map +1 -1
  631. package/fesm2022/primeng-rating.mjs +70 -22
  632. package/fesm2022/primeng-rating.mjs.map +1 -1
  633. package/fesm2022/primeng-ripple.mjs +15 -11
  634. package/fesm2022/primeng-ripple.mjs.map +1 -1
  635. package/fesm2022/primeng-scroller.mjs +141 -20
  636. package/fesm2022/primeng-scroller.mjs.map +1 -1
  637. package/fesm2022/primeng-scrollpanel.mjs +34 -13
  638. package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
  639. package/fesm2022/primeng-scrolltop.mjs +48 -12
  640. package/fesm2022/primeng-scrolltop.mjs.map +1 -1
  641. package/fesm2022/primeng-selectbutton.mjs +67 -9
  642. package/fesm2022/primeng-selectbutton.mjs.map +1 -1
  643. package/fesm2022/primeng-sidebar.mjs +126 -49
  644. package/fesm2022/primeng-sidebar.mjs.map +1 -1
  645. package/fesm2022/primeng-skeleton.mjs +47 -11
  646. package/fesm2022/primeng-skeleton.mjs.map +1 -1
  647. package/fesm2022/primeng-slidemenu.mjs +113 -31
  648. package/fesm2022/primeng-slidemenu.mjs.map +1 -1
  649. package/fesm2022/primeng-slider.mjs +73 -14
  650. package/fesm2022/primeng-slider.mjs.map +1 -1
  651. package/fesm2022/primeng-speeddial.mjs +124 -18
  652. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  653. package/fesm2022/primeng-spinner.mjs +7 -7
  654. package/fesm2022/primeng-splitbutton.mjs +92 -18
  655. package/fesm2022/primeng-splitbutton.mjs.map +1 -1
  656. package/fesm2022/primeng-splitter.mjs +77 -23
  657. package/fesm2022/primeng-splitter.mjs.map +1 -1
  658. package/fesm2022/primeng-steps.mjs +38 -9
  659. package/fesm2022/primeng-steps.mjs.map +1 -1
  660. package/fesm2022/primeng-styleclass.mjs +53 -9
  661. package/fesm2022/primeng-styleclass.mjs.map +1 -1
  662. package/fesm2022/primeng-table.mjs +689 -219
  663. package/fesm2022/primeng-table.mjs.map +1 -1
  664. package/fesm2022/primeng-tabmenu.mjs +51 -19
  665. package/fesm2022/primeng-tabmenu.mjs.map +1 -1
  666. package/fesm2022/primeng-tabview.mjs +200 -102
  667. package/fesm2022/primeng-tabview.mjs.map +1 -1
  668. package/fesm2022/primeng-tag.mjs +42 -13
  669. package/fesm2022/primeng-tag.mjs.map +1 -1
  670. package/fesm2022/primeng-terminal.mjs +30 -10
  671. package/fesm2022/primeng-terminal.mjs.map +1 -1
  672. package/fesm2022/primeng-tieredmenu.mjs +95 -24
  673. package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
  674. package/fesm2022/primeng-timeline.mjs +31 -7
  675. package/fesm2022/primeng-timeline.mjs.map +1 -1
  676. package/fesm2022/primeng-toast.mjs +97 -36
  677. package/fesm2022/primeng-toast.mjs.map +1 -1
  678. package/fesm2022/primeng-togglebutton.mjs +64 -11
  679. package/fesm2022/primeng-togglebutton.mjs.map +1 -1
  680. package/fesm2022/primeng-toolbar.mjs +19 -7
  681. package/fesm2022/primeng-toolbar.mjs.map +1 -1
  682. package/fesm2022/primeng-tooltip.mjs +98 -14
  683. package/fesm2022/primeng-tooltip.mjs.map +1 -1
  684. package/fesm2022/primeng-tree.mjs +261 -42
  685. package/fesm2022/primeng-tree.mjs.map +1 -1
  686. package/fesm2022/primeng-treeselect.mjs +221 -53
  687. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  688. package/fesm2022/primeng-treetable.mjs +505 -154
  689. package/fesm2022/primeng-treetable.mjs.map +1 -1
  690. package/fesm2022/primeng-tristatecheckbox.mjs +60 -7
  691. package/fesm2022/primeng-tristatecheckbox.mjs.map +1 -1
  692. package/fesm2022/primeng-ts-helpers.mjs +4 -0
  693. package/fesm2022/primeng-ts-helpers.mjs.map +1 -0
  694. package/fesm2022/primeng-virtualscroller.mjs +52 -11
  695. package/fesm2022/primeng-virtualscroller.mjs.map +1 -1
  696. package/fieldset/fieldset.d.ts +66 -17
  697. package/fieldset/fieldset.interface.d.ts +46 -0
  698. package/fieldset/public_api.d.ts +1 -0
  699. package/fileupload/fileupload.d.ts +260 -58
  700. package/fileupload/fileupload.interface.d.ts +156 -0
  701. package/fileupload/public_api.d.ts +1 -0
  702. package/focustrap/focustrap.d.ts +9 -1
  703. package/galleria/galleria.d.ts +189 -63
  704. package/galleria/galleria.interface.d.ts +97 -0
  705. package/galleria/public_api.d.ts +1 -0
  706. package/icons/arrowdown/arrowdown.d.ts +4 -1
  707. package/icons/arrowleft/arrowleft.d.ts +2 -0
  708. package/icons/arrowup/arrowup.d.ts +2 -0
  709. package/icons/ban/ban.d.ts +2 -0
  710. package/icons/exclamationtriangle/exclamationtriangle.d.ts +4 -1
  711. package/icons/eyeslash/eyeslash.d.ts +2 -0
  712. package/icons/filter/filter.d.ts +2 -0
  713. package/icons/filterslash/filterslash.d.ts +2 -0
  714. package/icons/home/home.d.ts +2 -0
  715. package/icons/infocircle/infocircle.d.ts +2 -0
  716. package/icons/pencil/pencil.d.ts +2 -0
  717. package/icons/plus/plus.d.ts +2 -0
  718. package/icons/refresh/refresh.d.ts +2 -0
  719. package/icons/search/search.d.ts +2 -0
  720. package/icons/searchminus/searchminus.d.ts +2 -0
  721. package/icons/searchplus/searchplus.d.ts +2 -0
  722. package/icons/sortalt/sortalt.d.ts +2 -0
  723. package/icons/sortamountdown/sortamountdown.d.ts +2 -0
  724. package/icons/sortamountupalt/sortamountupalt.d.ts +2 -0
  725. package/icons/spinner/spinner.d.ts +2 -0
  726. package/icons/star/star.d.ts +2 -0
  727. package/icons/starfill/starfill.d.ts +2 -0
  728. package/icons/thlarge/thlarge.d.ts +2 -0
  729. package/icons/timescircle/timescircle.d.ts +2 -0
  730. package/icons/trash/trash.d.ts +2 -0
  731. package/icons/undo/undo.d.ts +2 -0
  732. package/icons/upload/upload.d.ts +2 -0
  733. package/icons/windowmaximize/windowmaximize.d.ts +2 -0
  734. package/icons/windowminimize/windowminimize.d.ts +2 -0
  735. package/image/image.d.ts +93 -23
  736. package/image/image.interface.d.ts +31 -0
  737. package/image/public_api.d.ts +1 -0
  738. package/inplace/inplace.d.ts +71 -16
  739. package/inplace/inplace.interface.d.ts +19 -0
  740. package/inplace/public_api.d.ts +1 -0
  741. package/inputmask/inputmask.d.ts +190 -58
  742. package/inputmask/inputmask.interface.d.ts +19 -0
  743. package/inputmask/public_api.d.ts +1 -0
  744. package/inputnumber/inputnumber.d.ts +277 -84
  745. package/inputnumber/inputnumber.interface.d.ts +38 -0
  746. package/inputnumber/public_api.d.ts +1 -0
  747. package/inputswitch/inputswitch.d.ts +65 -13
  748. package/inputswitch/inputswitch.interface.d.ts +15 -0
  749. package/inputswitch/public_api.d.ts +1 -0
  750. package/inputtext/inputtext.d.ts +3 -2
  751. package/inputtextarea/inputtextarea.d.ts +22 -9
  752. package/keyfilter/keyfilter.d.ts +24 -7
  753. package/knob/knob.d.ts +94 -23
  754. package/listbox/listbox.d.ts +191 -62
  755. package/listbox/listbox.interface.d.ts +126 -0
  756. package/listbox/public_api.d.ts +1 -0
  757. package/megamenu/megamenu.d.ts +36 -13
  758. package/megamenu/megamenu.interface.d.ts +19 -0
  759. package/megamenu/public_api.d.ts +1 -0
  760. package/menu/menu.d.ts +82 -18
  761. package/menubar/menubar.d.ts +68 -29
  762. package/menubar/menubar.interface.d.ts +23 -0
  763. package/menubar/public_api.d.ts +1 -0
  764. package/message/message.d.ts +30 -4
  765. package/messages/messages.d.ts +63 -12
  766. package/messages/messages.interface.d.ts +11 -0
  767. package/messages/public_api.d.ts +1 -0
  768. package/multiselect/multiselect.d.ts +424 -128
  769. package/multiselect/multiselect.interface.d.ts +204 -0
  770. package/multiselect/public_api.d.ts +1 -0
  771. package/orderlist/orderlist.d.ts +156 -50
  772. package/orderlist/orderlist.interface.d.ts +110 -0
  773. package/orderlist/public_api.d.ts +1 -0
  774. package/organizationchart/organizationchart.d.ts +77 -19
  775. package/organizationchart/organizationchart.interface.d.ts +59 -0
  776. package/organizationchart/public_api.d.ts +1 -0
  777. package/overlay/overlay.d.ts +145 -19
  778. package/overlaypanel/overlaypanel.d.ts +95 -20
  779. package/package.json +183 -177
  780. package/paginator/paginator.d.ts +130 -30
  781. package/paginator/paginator.interface.d.ts +33 -0
  782. package/paginator/public_api.d.ts +1 -0
  783. package/panel/panel.d.ts +96 -27
  784. package/panel/panel.interface.d.ts +58 -0
  785. package/panel/public_api.d.ts +1 -0
  786. package/panelmenu/panelmenu.d.ts +45 -19
  787. package/panelmenu/panelmenu.interface.d.ts +11 -0
  788. package/panelmenu/public_api.d.ts +1 -0
  789. package/password/password.d.ts +202 -56
  790. package/picklist/picklist.d.ts +294 -92
  791. package/picklist/picklist.interface.d.ts +242 -0
  792. package/picklist/public_api.d.ts +1 -0
  793. package/progressbar/progressbar.d.ts +39 -5
  794. package/progressspinner/progressspinner.d.ts +29 -3
  795. package/radiobutton/public_api.d.ts +1 -0
  796. package/radiobutton/radiobutton.d.ts +97 -22
  797. package/radiobutton/radiobutton.interface.d.ts +15 -0
  798. package/rating/public_api.d.ts +1 -0
  799. package/rating/rating.d.ts +83 -22
  800. package/rating/rating.interface.d.ts +34 -0
  801. package/resources/components/button/button.css +1 -0
  802. package/resources/primeng.css +1 -0
  803. package/resources/primeng.min.css +1 -1
  804. package/ripple/ripple.d.ts +7 -2
  805. package/scroller/public_api.d.ts +1 -0
  806. package/scroller/scroller.d.ts +194 -92
  807. package/scroller/scroller.interface.d.ts +177 -0
  808. package/scrollpanel/public_api.d.ts +1 -0
  809. package/scrollpanel/scrollpanel.d.ts +45 -21
  810. package/scrollpanel/scrollpanel.interface.d.ts +11 -0
  811. package/scrolltop/public_api.d.ts +1 -0
  812. package/scrolltop/scrolltop.d.ts +50 -12
  813. package/scrolltop/scrolltop.interface.d.ts +18 -0
  814. package/selectbutton/public_api.d.ts +1 -0
  815. package/selectbutton/selectbutton.d.ts +73 -14
  816. package/selectbutton/selectbutton.interface.d.ts +45 -0
  817. package/sidebar/public_api.d.ts +1 -0
  818. package/sidebar/sidebar.d.ts +104 -24
  819. package/sidebar/sidebar.interface.d.ts +23 -0
  820. package/skeleton/skeleton.d.ts +47 -5
  821. package/slidemenu/public_api.d.ts +1 -0
  822. package/slidemenu/slidemenu.d.ts +118 -33
  823. package/slidemenu/slidemenu.interface.d.ts +15 -0
  824. package/slider/public_api.d.ts +1 -0
  825. package/slider/slider.d.ts +99 -37
  826. package/slider/slider.interface.d.ts +38 -0
  827. package/speeddial/public_api.d.ts +1 -0
  828. package/speeddial/speeddial.d.ts +145 -33
  829. package/speeddial/speeddial.interface.d.ts +11 -0
  830. package/splitbutton/public_api.d.ts +1 -0
  831. package/splitbutton/splitbutton.d.ts +102 -24
  832. package/splitbutton/splitbutton.interface.d.ts +15 -0
  833. package/splitter/public_api.d.ts +1 -0
  834. package/splitter/splitter.d.ts +91 -30
  835. package/splitter/splitter.interface.d.ts +34 -0
  836. package/steps/steps.d.ts +38 -7
  837. package/styleclass/styleclass.d.ts +62 -17
  838. package/table/public_api.d.ts +1 -0
  839. package/table/table.d.ts +804 -319
  840. package/table/table.interface.d.ts +606 -0
  841. package/tabmenu/public_api.d.ts +1 -0
  842. package/tabmenu/tabmenu.d.ts +53 -18
  843. package/tabmenu/tabmenu.interface.d.ts +32 -0
  844. package/tabview/public_api.d.ts +1 -0
  845. package/tabview/tabview.d.ts +159 -54
  846. package/tabview/tabview.interface.d.ts +49 -0
  847. package/tag/public_api.d.ts +1 -0
  848. package/tag/tag.d.ts +42 -10
  849. package/tag/tag.interface.d.ts +11 -0
  850. package/terminal/terminal.d.ts +26 -4
  851. package/tieredmenu/public_api.d.ts +1 -0
  852. package/tieredmenu/tieredmenu.d.ts +103 -34
  853. package/tieredmenu/tieredmenu.interface.d.ts +11 -0
  854. package/timeline/public_api.d.ts +1 -0
  855. package/timeline/timeline.d.ts +35 -8
  856. package/timeline/timeline.interface.d.ts +43 -0
  857. package/toast/public_api.d.ts +1 -0
  858. package/toast/toast.d.ts +93 -28
  859. package/toast/toast.interface.d.ts +40 -0
  860. package/togglebutton/public_api.d.ts +1 -0
  861. package/togglebutton/togglebutton.d.ts +65 -11
  862. package/togglebutton/togglebutton.interface.d.ts +15 -0
  863. package/toolbar/public_api.d.ts +1 -0
  864. package/toolbar/toolbar.d.ts +21 -7
  865. package/toolbar/toolbar.interface.d.ts +19 -0
  866. package/tooltip/tooltip.d.ts +123 -46
  867. package/tree/public_api.d.ts +1 -0
  868. package/tree/tree.d.ts +320 -100
  869. package/tree/tree.interface.d.ts +193 -0
  870. package/treeselect/public_api.d.ts +1 -0
  871. package/treeselect/treeselect.d.ts +262 -74
  872. package/treeselect/treeselect.interface.d.ts +108 -0
  873. package/treetable/public_api.d.ts +1 -0
  874. package/treetable/treetable.d.ts +591 -230
  875. package/treetable/treetable.interface.d.ts +465 -0
  876. package/tristatecheckbox/public_api.d.ts +1 -0
  877. package/tristatecheckbox/tristatecheckbox.d.ts +75 -17
  878. package/tristatecheckbox/tristatecheckbox.interface.d.ts +30 -0
  879. package/ts-helpers/index.d.ts +5 -0
  880. package/ts-helpers/public_api.d.ts +1 -0
  881. package/ts-helpers/ts-helpers.d.ts +4 -0
  882. package/virtualscroller/public_api.d.ts +1 -0
  883. package/virtualscroller/virtualscroller.d.ts +64 -18
  884. package/virtualscroller/virtualscroller.interface.d.ts +72 -0
@@ -10,6 +10,10 @@ import * as i0 from "@angular/core";
10
10
  import * as i1 from "primeng/api";
11
11
  import * as i2 from "@angular/common";
12
12
  import * as i3 from "primeng/ripple";
13
+ /**
14
+ * OverlayPanel is a container component positioned as connected to its target.
15
+ * @group Components
16
+ */
13
17
  class OverlayPanel {
14
18
  document;
15
19
  platformId;
@@ -19,18 +23,70 @@ class OverlayPanel {
19
23
  zone;
20
24
  config;
21
25
  overlayService;
26
+ /**
27
+ * Enables to hide the overlay when outside is clicked.
28
+ * @group Props
29
+ */
22
30
  dismissable = true;
31
+ /**
32
+ * When enabled, displays a close icon at top right corner.
33
+ * @group Props
34
+ */
23
35
  showCloseIcon;
36
+ /**
37
+ * Inline style of the component.
38
+ * @group Props
39
+ */
24
40
  style;
41
+ /**
42
+ * Style class of the component.
43
+ * @group Props
44
+ */
25
45
  styleClass;
26
- appendTo = 'body';
46
+ /**
47
+ * Target element to attach the panel, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
48
+ * @group Props
49
+ */
50
+ appendTo;
51
+ /**
52
+ * Whether to automatically manage layering.
53
+ * @group Props
54
+ */
27
55
  autoZIndex = true;
56
+ /**
57
+ * Aria label of the close icon.
58
+ * @group Props
59
+ */
28
60
  ariaCloseLabel;
61
+ /**
62
+ * Base zIndex value to use in layering.
63
+ * @group Props
64
+ */
29
65
  baseZIndex = 0;
66
+ /**
67
+ * When enabled, first button receives focus on show.
68
+ * @group Props
69
+ */
30
70
  focusOnShow = true;
71
+ /**
72
+ * Transition options of the show animation.
73
+ * @group Props
74
+ */
31
75
  showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
76
+ /**
77
+ * Transition options of the hide animation.
78
+ * @group Props
79
+ */
32
80
  hideTransitionOptions = '.1s linear';
81
+ /**
82
+ * Callback to invoke when an overlay becomes visible.
83
+ * @group Emits
84
+ */
33
85
  onShow = new EventEmitter();
86
+ /**
87
+ * Callback to invoke when an overlay gets hidden.
88
+ * @group Emits
89
+ */
34
90
  onHide = new EventEmitter();
35
91
  templates;
36
92
  container;
@@ -59,7 +115,7 @@ class OverlayPanel {
59
115
  this.overlayService = overlayService;
60
116
  }
61
117
  ngAfterContentInit() {
62
- this.templates.forEach((item) => {
118
+ this.templates?.forEach((item) => {
63
119
  switch (item.getType()) {
64
120
  case 'content':
65
121
  this.contentTemplate = item.template;
@@ -81,7 +137,7 @@ class OverlayPanel {
81
137
  let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';
82
138
  const documentTarget = this.el ? this.el.nativeElement.ownerDocument : this.document;
83
139
  this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {
84
- if (!this.container.contains(event.target) && this.target !== event.target && !this.target.contains(event.target) && !this.selfClick) {
140
+ if (!this.container?.contains(event.target) && this.target !== event.target && !this.target.contains(event.target) && !this.selfClick) {
85
141
  this.zone.run(() => {
86
142
  this.hide();
87
143
  });
@@ -100,6 +156,12 @@ class OverlayPanel {
100
156
  this.selfClick = false;
101
157
  }
102
158
  }
159
+ /**
160
+ * Toggles the visibility of the panel.
161
+ * @param {Event} event - Browser event
162
+ * @param {Target} target - Target element.
163
+ * @group Method
164
+ */
103
165
  toggle(event, target) {
104
166
  if (this.isOverlayAnimationInProgress) {
105
167
  return;
@@ -116,6 +178,12 @@ class OverlayPanel {
116
178
  this.show(event, target);
117
179
  }
118
180
  }
181
+ /**
182
+ * Displays the panel.
183
+ * @param {Event} event - Browser event
184
+ * @param {Target} target - Target element.
185
+ * @group Method
186
+ */
119
187
  show(event, target) {
120
188
  target && event && event.stopPropagation();
121
189
  if (this.isOverlayAnimationInProgress) {
@@ -159,12 +227,12 @@ class OverlayPanel {
159
227
  DomHandler.absolutePosition(this.container, this.target);
160
228
  const containerOffset = DomHandler.getOffset(this.container);
161
229
  const targetOffset = DomHandler.getOffset(this.target);
162
- const borderRadius = this.document.defaultView.getComputedStyle(this.container).getPropertyValue('border-radius');
230
+ const borderRadius = this.document.defaultView?.getComputedStyle(this.container).getPropertyValue('border-radius');
163
231
  let arrowLeft = 0;
164
232
  if (containerOffset.left < targetOffset.left) {
165
233
  arrowLeft = targetOffset.left - containerOffset.left - parseFloat(borderRadius) * 2;
166
234
  }
167
- this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);
235
+ this.container?.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);
168
236
  if (containerOffset.top < targetOffset.top) {
169
237
  DomHandler.addClass(this.container, 'p-overlaypanel-flipped');
170
238
  if (this.showCloseIcon) {
@@ -226,6 +294,10 @@ class OverlayPanel {
226
294
  });
227
295
  }
228
296
  }
297
+ /**
298
+ * Hides the panel.
299
+ * @group Method
300
+ */
229
301
  hide() {
230
302
  this.overlayVisible = false;
231
303
  this.cd.markForCheck();
@@ -234,7 +306,7 @@ class OverlayPanel {
234
306
  this.hide();
235
307
  event.preventDefault();
236
308
  }
237
- onWindowResize(event) {
309
+ onWindowResize() {
238
310
  if (this.overlayVisible && !DomHandler.isTouchDevice()) {
239
311
  this.hide();
240
312
  }
@@ -298,8 +370,8 @@ class OverlayPanel {
298
370
  this.overlaySubscription.unsubscribe();
299
371
  }
300
372
  }
301
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: OverlayPanel, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
302
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: OverlayPanel, selector: "p-overlayPanel", inputs: { dismissable: "dismissable", showCloseIcon: "showCloseIcon", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", ariaCloseLabel: "ariaCloseLabel", baseZIndex: "baseZIndex", focusOnShow: "focusOnShow", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
373
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: OverlayPanel, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
374
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: OverlayPanel, selector: "p-overlayPanel", inputs: { dismissable: "dismissable", showCloseIcon: "showCloseIcon", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", ariaCloseLabel: "ariaCloseLabel", baseZIndex: "baseZIndex", focusOnShow: "focusOnShow", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
303
375
  <div
304
376
  *ngIf="render"
305
377
  [ngClass]="'p-overlaypanel p-component'"
@@ -340,7 +412,7 @@ class OverlayPanel {
340
412
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
341
413
  }
342
414
  export { OverlayPanel };
343
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: OverlayPanel, decorators: [{
415
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: OverlayPanel, decorators: [{
344
416
  type: Component,
345
417
  args: [{ selector: 'p-overlayPanel', template: `
346
418
  <div
@@ -420,12 +492,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
420
492
  args: [PrimeTemplate]
421
493
  }] } });
422
494
  class OverlayPanelModule {
423
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: OverlayPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
424
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: OverlayPanelModule, declarations: [OverlayPanel], imports: [CommonModule, RippleModule, SharedModule, TimesIcon], exports: [OverlayPanel, SharedModule] });
425
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: OverlayPanelModule, imports: [CommonModule, RippleModule, SharedModule, TimesIcon, SharedModule] });
495
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: OverlayPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
496
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.2", ngImport: i0, type: OverlayPanelModule, declarations: [OverlayPanel], imports: [CommonModule, RippleModule, SharedModule, TimesIcon], exports: [OverlayPanel, SharedModule] });
497
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: OverlayPanelModule, imports: [CommonModule, RippleModule, SharedModule, TimesIcon, SharedModule] });
426
498
  }
427
499
  export { OverlayPanelModule };
428
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: OverlayPanelModule, decorators: [{
500
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: OverlayPanelModule, decorators: [{
429
501
  type: NgModule,
430
502
  args: [{
431
503
  imports: [CommonModule, RippleModule, SharedModule, TimesIcon],
@@ -433,4 +505,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
433
505
  declarations: [OverlayPanel]
434
506
  }]
435
507
  }] });
436
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL292ZXJsYXlwYW5lbC9vdmVybGF5cGFuZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBa0IsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakcsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUdSLE1BQU0sRUFDTixXQUFXLEVBSVgsaUJBQWlCLEVBRXBCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBaUMsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFHNUMsTUEwRGEsWUFBWTtJQTREUztJQUNHO0lBQ3RCO0lBQ0E7SUFDQTtJQUNDO0lBQ0Q7SUFDQTtJQWxFRixXQUFXLEdBQVksSUFBSSxDQUFDO0lBRTVCLGFBQWEsQ0FBVTtJQUV2QixLQUFLLENBQU07SUFFWCxVQUFVLENBQVM7SUFFbkIsUUFBUSxHQUFRLE1BQU0sQ0FBQztJQUV2QixVQUFVLEdBQVksSUFBSSxDQUFDO0lBRTNCLGNBQWMsQ0FBUztJQUV2QixVQUFVLEdBQVcsQ0FBQyxDQUFDO0lBRXZC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YSxrQkFBa0I7dUdBQWxCLGtCQUFrQjt3R0FBbEIsa0JBQWtCLGlCQTdXbEIsWUFBWSxhQXlXWCxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxTQUFTLGFBeldwRCxZQUFZLEVBMFdHLFlBQVk7d0dBRzNCLGtCQUFrQixZQUpqQixZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQ3JDLFlBQVk7O1NBRzNCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQztvQkFDOUQsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztvQkFDckMsWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIEFuaW1hdGlvbkV2ZW50LCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIFZpZXdSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5U2VydmljZSwgUHJpbWVOR0NvbmZpZywgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXIsIERvbUhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBUaW1lc0ljb24gfSBmcm9tICdwcmltZW5nL2ljb25zL3RpbWVzJztcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IFpJbmRleFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLW92ZXJsYXlQYW5lbCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJyZW5kZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ3Atb3ZlcmxheXBhbmVsIHAtY29tcG9uZW50J1wiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJzdHlsZVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwic3R5bGVDbGFzc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25PdmVybGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICBbQGFuaW1hdGlvbl09XCJ7IHZhbHVlOiBvdmVybGF5VmlzaWJsZSA/ICdvcGVuJyA6ICdjbG9zZScsIHBhcmFtczogeyBzaG93VHJhbnNpdGlvblBhcmFtczogc2hvd1RyYW5zaXRpb25PcHRpb25zLCBoaWRlVHJhbnNpdGlvblBhcmFtczogaGlkZVRyYW5zaXRpb25PcHRpb25zIH0gfVwiXG4gICAgICAgICAgICAoQGFuaW1hdGlvbi5zdGFydCk9XCJvbkFuaW1hdGlvblN0YXJ0KCRldmVudClcIlxuICAgICAgICAgICAgKEBhbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkVuZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtb3ZlcmxheXBhbmVsLWNvbnRlbnRcIiAoY2xpY2spPVwib25Db250ZW50Q2xpY2soKVwiIChtb3VzZWRvd24pPVwib25Db250ZW50Q2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93Q2xvc2VJY29uXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicC1vdmVybGF5cGFuZWwtY2xvc2UgcC1saW5rXCIgKGNsaWNrKT1cIm9uQ2xvc2VDbGljaygkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwiaGlkZSgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhQ2xvc2VMYWJlbFwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgPFRpbWVzSWNvbiAqbmdJZj1cIiFjbG9zZUljb25UZW1wbGF0ZVwiIFtzdHlsZUNsYXNzXT1cIidwLW92ZXJsYXlwYW5lbC1jbG9zZS1pY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW92ZXJsYXlwYW5lbC1jbG9zZS1pY29uXCIgKm5nSWY9XCJjbG9zZUljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZUljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdhbmltYXRpb24nLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAndm9pZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZVkoMC44KScsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdjbG9zZScsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnb3BlbicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiBvcGVuJywgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JykpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZScsIGFuaW1hdGUoJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScpKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9vdmVybGF5cGFuZWwuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE92ZXJsYXlQYW5lbCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZGlzbWlzc2FibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2hvd0Nsb3NlSWNvbjogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogYW55ID0gJ2JvZHknO1xuXG4gICAgQElucHV0KCkgYXV0b1pJbmRleDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBhcmlhQ2xvc2VMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYmFzZVpJbmRleDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIGZvY3VzT25TaG93OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNob3dUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xMnMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknO1xuXG4gICAgQElucHV0KCkgaGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjFzIGxpbmVhcic7XG5cbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudDtcblxuICAgIG92ZXJsYXlWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICByZW5kZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlzT3ZlcmxheUFuaW1hdGlvbkluUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHNlbGZDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiAoKSA9PiB2b2lkIHwgbnVsbDtcblxuICAgIHRhcmdldDogYW55O1xuXG4gICAgd2lsbEhpZGU6IGJvb2xlYW47XG5cbiAgICBzY3JvbGxIYW5kbGVyOiBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlciB8IG51bGw7XG5cbiAgICBkb2N1bWVudFJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkIHwgbnVsbDtcblxuICAgIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNsb3NlSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZGVzdHJveUNhbGxiYWNrOiBGdW5jdGlvbjtcblxuICAgIG92ZXJsYXlFdmVudExpc3RlbmVyOiAoZXZlbnQ/KSA9PiB2b2lkIHwgbnVsbDtcblxuICAgIG92ZXJsYXlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgICAgICBwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnLFxuICAgICAgICBwdWJsaWMgb3ZlcmxheVNlcnZpY2U6IE92ZXJsYXlTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdjbG9zZWljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciAmJiB0aGlzLmRpc21pc3NhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRvY3VtZW50RXZlbnQgPSBEb21IYW5kbGVyLmlzSU9TKCkgPyAndG91Y2hzdGFydCcgOiAnY2xpY2snO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudFRhcmdldDogYW55ID0gdGhpcy5lbCA/IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50IDogdGhpcy5kb2N1bWVudDtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50VGFyZ2V0LCBkb2N1bWVudEV2ZW50LCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb250YWluZXIuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiB0aGlzLnRhcmdldCAhPT0gZXZlbnQudGFyZ2V0ICYmICF0aGlzLnRhcmdldC5jb250YWlucyhldmVudC50YXJnZXQpICYmICF0aGlzLnNlbGZDbGljaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxmQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnNlbGZDbGljayA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlKGV2ZW50LCB0YXJnZXQ/KSB7XG4gICAgICAgIGlmICh0aGlzLmlzT3ZlcmxheUFuaW1hdGlvbkluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNUYXJnZXRDaGFuZ2VkKGV2ZW50LCB0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95Q2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhudWxsLCB0YXJnZXQgfHwgZXZlbnQuY3VycmVudFRhcmdldCB8fCBldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93KGV2ZW50LCB0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvdyhldmVudCwgdGFyZ2V0Pykge1xuICAgICAgICB0YXJnZXQgJiYgZXZlbnQgJiYgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmlzT3ZlcmxheUFuaW1hdGlvbkluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0IHx8IGV2ZW50LmN1cnJlbnRUYXJnZXQgfHwgZXZlbnQudGFyZ2V0O1xuICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZW5kZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheUNsaWNrKGV2ZW50KSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZWxmQ2xpY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uQ29udGVudENsaWNrKCkge1xuICAgICAgICB0aGlzLnNlbGZDbGljayA9IHRydWU7XG4gICAgfVxuXG4gICAgaGFzVGFyZ2V0Q2hhbmdlZChldmVudCwgdGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhcmdldCAhPSBudWxsICYmIHRoaXMudGFyZ2V0ICE9PSAodGFyZ2V0IHx8IGV2ZW50LmN1cnJlbnRUYXJnZXQgfHwgZXZlbnQudGFyZ2V0KTtcbiAgICB9XG5cbiAgICBhcHBlbmRDb250YWluZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKSB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSwgdGhpcy5jb250YWluZXIpO1xuICAgICAgICAgICAgZWxzZSBEb21IYW5kbGVyLmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyLCB0aGlzLmFwcGVuZFRvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVBcHBlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5jb250YWluZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWxpZ24oKSB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9aSW5kZXgpIHtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLnNldCgnb3ZlcmxheScsIHRoaXMuY29udGFpbmVyLCB0aGlzLmJhc2VaSW5kZXggKyB0aGlzLmNvbmZpZy56SW5kZXgub3ZlcmxheSk7XG4gICAgICAgIH1cblxuICAgICAgICBEb21IYW5kbGVyLmFic29sdXRlUG9zaXRpb24odGhpcy5jb250YWluZXIsIHRoaXMudGFyZ2V0KTtcblxuICAgICAgICBjb25zdCBjb250YWluZXJPZmZzZXQgPSBEb21IYW5kbGVyLmdldE9mZnNldCh0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgIGNvbnN0IHRhcmdldE9mZnNldCA9IERvbUhhbmRsZXIuZ2V0T2Zmc2V0KHRoaXMudGFyZ2V0KTtcbiAgICAgICAgY29uc3QgYm9yZGVyUmFkaXVzID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuY29udGFpbmVyKS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItcmFkaXVzJyk7XG4gICAgICAgIGxldCBhcnJvd0xlZnQgPSAwO1xuXG4gICAgICAgIGlmIChjb250YWluZXJPZmZzZXQubGVmdCA8IHRhcmdldE9mZnNldC5sZWZ0KSB7XG4gICAgICAgICAgICBhcnJvd0xlZnQgPSB0YXJnZXRPZmZzZXQubGVmdCAtIGNvbnRhaW5lck9mZnNldC5sZWZ0IC0gcGFyc2VGbG9hdChib3JkZXJSYWRpdXMpICogMjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1vdmVybGF5QXJyb3dMZWZ0JywgYCR7YXJyb3dMZWZ0fXB4YCk7XG5cbiAgICAgICAgaWYgKGNvbnRhaW5lck9mZnNldC50b3AgPCB0YXJnZXRPZmZzZXQudG9wKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMuY29udGFpbmVyLCAncC1vdmVybGF5cGFuZWwtZmxpcHBlZCcpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zaG93Q2xvc2VJY29uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNvbnRhaW5lciwgJ21hcmdpbi10b3AnLCAnLTMwcHgnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC50b1N0YXRlID09PSAnb3BlbicpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyID0gZXZlbnQuZWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kQ29udGFpbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmFsaWduKCk7XG4gICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuYmluZFNjcm9sbExpc3RlbmVyKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzT25TaG93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlFdmVudExpc3RlbmVyID0gKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5jb250YWluZXIuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZkNsaWNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24gPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNsaWNrT2JzZXJ2YWJsZS5zdWJzY3JpYmUodGhpcy5vdmVybGF5RXZlbnRMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc092ZXJsYXlBbmltYXRpb25JblByb2dyZXNzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZXN0cm95Q2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95Q2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95Q2FsbGJhY2sgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdjbG9zZSc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29udGFpbmVyRGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25IaWRlLmVtaXQoe30pO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzT3ZlcmxheUFuaW1hdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBmb2N1cygpIHtcbiAgICAgICAgbGV0IGZvY3VzYWJsZSA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmNvbnRhaW5lciwgJ1thdXRvZm9jdXNdJyk7XG4gICAgICAgIGlmIChmb2N1c2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBmb2N1c2FibGUuZm9jdXMoKSwgNSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGUoKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25XaW5kb3dSZXNpemUoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUgJiYgIURvbUhhbmRsZXIuaXNUb3VjaERldmljZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3aW5kb3cgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3IGFzIFdpbmRvdztcbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih3aW5kb3csICdyZXNpemUnLCB0aGlzLm9uV2luZG93UmVzaXplLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSBuZXcgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXIodGhpcy50YXJnZXQsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29udGFpbmVyRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKCEodGhpcy5jZCBhcyBWaWV3UmVmKS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5jb250YWluZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEodGhpcy5jZCBhcyBWaWV3UmVmKS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGVzdHJveUNhbGxiYWNrID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3RvcmVBcHBlbmQoKTtcbiAgICAgICAgICAgIHRoaXMub25Db250YWluZXJEZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSaXBwbGVNb2R1bGUsIFNoYXJlZE1vZHVsZSwgVGltZXNJY29uXSxcbiAgICBleHBvcnRzOiBbT3ZlcmxheVBhbmVsLCBTaGFyZWRNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW092ZXJsYXlQYW5lbF1cbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmxheVBhbmVsTW9kdWxlIHt9XG4iXX0=
508
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL292ZXJsYXlwYW5lbC9vdmVybGF5cGFuZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBa0IsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakcsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUdSLE1BQU0sRUFDTixXQUFXLEVBSVgsaUJBQWlCLEVBRXBCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBaUMsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFHNUM7OztHQUdHO0FBQ0gsTUEwRGEsWUFBWTtJQW9HUztJQUNHO0lBQ3RCO0lBQ0E7SUFDQTtJQUNDO0lBQ0Q7SUFDQTtJQTFHWDs7O09BR0c7SUFDTSxXQUFXLEdBQVksSUFBSSxDQUFDO0lBQ3JDOzs7T0FHRztJQUNNLGFBQWEsQ0FBc0I7SUFDNUM7OztPQUdHO0lBQ00sS0FBSyxDQUE4QztJQUM1RDs7O09BR0c7SUFDTSxVQUFVLENBQXFCO0lBQ3hDOzs7T0FHRztJQUNNLFFBQVEsQ0FBZ0Y7SUFDakc7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c0JBQXRCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFLRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBS0ksTUFBTTtzQkFBZixNQUFNO2dCQUtHLE1BQU07c0JBQWYsTUFBTTtnQkFFeUIsU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhOztBQTJWbEMsTUFLYSxrQkFBa0I7dUdBQWxCLGtCQUFrQjt3R0FBbEIsa0JBQWtCLGlCQW5hbEIsWUFBWSxhQStaWCxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxTQUFTLGFBL1pwRCxZQUFZLEVBZ2FHLFlBQVk7d0dBRzNCLGtCQUFrQixZQUpqQixZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQ3JDLFlBQVk7O1NBRzNCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQztvQkFDOUQsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztvQkFDckMsWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIEFuaW1hdGlvbkV2ZW50LCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIFZpZXdSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5U2VydmljZSwgUHJpbWVOR0NvbmZpZywgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXIsIERvbUhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBUaW1lc0ljb24gfSBmcm9tICdwcmltZW5nL2ljb25zL3RpbWVzJztcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IFpJbmRleFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE51bGxhYmxlLCBWb2lkTGlzdGVuZXIgfSBmcm9tICdwcmltZW5nL3RzLWhlbHBlcnMnO1xuLyoqXG4gKiBPdmVybGF5UGFuZWwgaXMgYSBjb250YWluZXIgY29tcG9uZW50IHBvc2l0aW9uZWQgYXMgY29ubmVjdGVkIHRvIGl0cyB0YXJnZXQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Atb3ZlcmxheVBhbmVsJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInJlbmRlclwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCIncC1vdmVybGF5cGFuZWwgcC1jb21wb25lbnQnXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInN0eWxlXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJzdHlsZUNsYXNzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk92ZXJsYXlDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtAYW5pbWF0aW9uXT1cInsgdmFsdWU6IG92ZXJsYXlWaXNpYmxlID8gJ29wZW4nIDogJ2Nsb3NlJywgcGFyYW1zOiB7IHNob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsIGhpZGVUcmFuc2l0aW9uUGFyYW1zOiBoaWRlVHJhbnNpdGlvbk9wdGlvbnMgfSB9XCJcbiAgICAgICAgICAgIChAYW5pbWF0aW9uLnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoQGFuaW1hdGlvbi5kb25lKT1cIm9uQW5pbWF0aW9uRW5kKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1vdmVybGF5cGFuZWwtY29udGVudFwiIChjbGljayk9XCJvbkNvbnRlbnRDbGljaygpXCIgKG1vdXNlZG93bik9XCJvbkNvbnRlbnRDbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dDbG9zZUljb25cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwLW92ZXJsYXlwYW5lbC1jbG9zZSBwLWxpbmtcIiAoY2xpY2spPVwib25DbG9zZUNsaWNrKCRldmVudClcIiAoa2V5ZG93bi5lbnRlcik9XCJoaWRlKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFDbG9zZUxhYmVsXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICA8VGltZXNJY29uICpuZ0lmPVwiIWNsb3NlSWNvblRlbXBsYXRlXCIgW3N0eWxlQ2xhc3NdPVwiJ3Atb3ZlcmxheXBhbmVsLWNsb3NlLWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtb3ZlcmxheXBhbmVsLWNsb3NlLWljb25cIiAqbmdJZj1cImNsb3NlSWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2FuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICd2b2lkJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWSgwLjgpJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2Nsb3NlJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdvcGVuJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IG9wZW4nLCBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdvcGVuID0+IGNsb3NlJywgYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319JykpXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL292ZXJsYXlwYW5lbC5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmxheVBhbmVsIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBFbmFibGVzIHRvIGhpZGUgdGhlIG92ZXJsYXkgd2hlbiBvdXRzaWRlIGlzIGNsaWNrZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZGlzbWlzc2FibGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFdoZW4gZW5hYmxlZCwgZGlzcGxheXMgYSBjbG9zZSBpY29uIGF0IHRvcCByaWdodCBjb3JuZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2hvd0Nsb3NlSWNvbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiAgVGFyZ2V0IGVsZW1lbnQgdG8gYXR0YWNoIHRoZSBwYW5lbCwgdmFsaWQgdmFsdWVzIGFyZSBcImJvZHlcIiBvciBhIGxvY2FsIG5nLXRlbXBsYXRlIHZhcmlhYmxlIG9mIGFub3RoZXIgZWxlbWVudCAobm90ZTogdXNlIGJpbmRpbmcgd2l0aCBicmFja2V0cyBmb3IgdGVtcGxhdGUgdmFyaWFibGVzLCBlLmcuIFthcHBlbmRUb109XCJteWRpdlwiIGZvciBhIGRpdiBlbGVtZW50IGhhdmluZyAjbXlkaXYgYXMgdmFyaWFibGUgbmFtZSkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXBwZW5kVG86IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IFRlbXBsYXRlUmVmPGFueT4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHwgYW55O1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBtYW5hZ2UgbGF5ZXJpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXV0b1pJbmRleDogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogQXJpYSBsYWJlbCBvZiB0aGUgY2xvc2UgaWNvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhQ2xvc2VMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEJhc2UgekluZGV4IHZhbHVlIHRvIHVzZSBpbiBsYXllcmluZy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqIFdoZW4gZW5hYmxlZCwgZmlyc3QgYnV0dG9uIHJlY2VpdmVzIGZvY3VzIG9uIHNob3cuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZm9jdXNPblNob3c6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFRyYW5zaXRpb24gb3B0aW9ucyBvZiB0aGUgc2hvdyBhbmltYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBoaWRlIGFuaW1hdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMXMgbGluZWFyJztcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhbiBvdmVybGF5IGJlY29tZXMgdmlzaWJsZS5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhbiBvdmVybGF5IGdldHMgaGlkZGVuLlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkO1xuXG4gICAgY29udGFpbmVyOiBOdWxsYWJsZTxIVE1MRGl2RWxlbWVudD47XG5cbiAgICBvdmVybGF5VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcmVuZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBpc092ZXJsYXlBbmltYXRpb25JblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBzZWxmQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGRvY3VtZW50Q2xpY2tMaXN0ZW5lcjogVm9pZExpc3RlbmVyO1xuXG4gICAgdGFyZ2V0OiBhbnk7XG5cbiAgICB3aWxsSGlkZTogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBzY3JvbGxIYW5kbGVyOiBOdWxsYWJsZTxDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlcj47XG5cbiAgICBkb2N1bWVudFJlc2l6ZUxpc3RlbmVyOiBWb2lkTGlzdGVuZXI7XG5cbiAgICBjb250ZW50VGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgY2xvc2VJY29uVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgZGVzdHJveUNhbGxiYWNrOiBOdWxsYWJsZTxGdW5jdGlvbj47XG5cbiAgICBvdmVybGF5RXZlbnRMaXN0ZW5lcjogTnVsbGFibGU8KGV2ZW50PzogYW55KSA9PiB2b2lkPjtcblxuICAgIG92ZXJsYXlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgICAgICBwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnLFxuICAgICAgICBwdWJsaWMgb3ZlcmxheVNlcnZpY2U6IE92ZXJsYXlTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY2xvc2VpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgJiYgdGhpcy5kaXNtaXNzYWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkb2N1bWVudEV2ZW50ID0gRG9tSGFuZGxlci5pc0lPUygpID8gJ3RvdWNoc3RhcnQnIDogJ2NsaWNrJztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWwgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6IHRoaXMuZG9jdW1lbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbihkb2N1bWVudFRhcmdldCwgZG9jdW1lbnRFdmVudCwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyPy5jb250YWlucyhldmVudC50YXJnZXQpICYmIHRoaXMudGFyZ2V0ICE9PSBldmVudC50YXJnZXQgJiYgIXRoaXMudGFyZ2V0LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgIXRoaXMuc2VsZkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGZDbGljayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuc2VsZkNsaWNrID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBwYW5lbC5cbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIEJyb3dzZXIgZXZlbnRcbiAgICAgKiBAcGFyYW0ge1RhcmdldH0gdGFyZ2V0IC0gVGFyZ2V0IGVsZW1lbnQuXG4gICAgICogQGdyb3VwIE1ldGhvZFxuICAgICAqL1xuICAgIHRvZ2dsZShldmVudDogYW55LCB0YXJnZXQ/OiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPdmVybGF5QW5pbWF0aW9uSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc1RhcmdldENoYW5nZWQoZXZlbnQsIHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KG51bGwsIHRhcmdldCB8fCBldmVudC5jdXJyZW50VGFyZ2V0IHx8IGV2ZW50LnRhcmdldCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNob3coZXZlbnQsIHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgdGhlIHBhbmVsLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudFxuICAgICAqIEBwYXJhbSB7VGFyZ2V0fSB0YXJnZXQgLSBUYXJnZXQgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgTWV0aG9kXG4gICAgICovXG4gICAgc2hvdyhldmVudDogYW55LCB0YXJnZXQ/OiBhbnkpIHtcbiAgICAgICAgdGFyZ2V0ICYmIGV2ZW50ICYmIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5pc092ZXJsYXlBbmltYXRpb25JblByb2dyZXNzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldCB8fCBldmVudC5jdXJyZW50VGFyZ2V0IHx8IGV2ZW50LnRhcmdldDtcbiAgICAgICAgdGhpcy5vdmVybGF5VmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMucmVuZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VsZkNsaWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkNvbnRlbnRDbGljaygpIHtcbiAgICAgICAgdGhpcy5zZWxmQ2xpY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIGhhc1RhcmdldENoYW5nZWQoZXZlbnQ6IGFueSwgdGFyZ2V0OiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0ICE9IG51bGwgJiYgdGhpcy50YXJnZXQgIT09ICh0YXJnZXQgfHwgZXZlbnQuY3VycmVudFRhcmdldCB8fCBldmVudC50YXJnZXQpO1xuICAgIH1cblxuICAgIGFwcGVuZENvbnRhaW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcGVuZFRvID09PSAnYm9keScpIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCB0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgICAgICBlbHNlIERvbUhhbmRsZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIsIHRoaXMuYXBwZW5kVG8pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVzdG9yZUFwcGVuZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhbGlnbigpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdvdmVybGF5JywgdGhpcy5jb250YWluZXIsIHRoaXMuYmFzZVpJbmRleCArIHRoaXMuY29uZmlnLnpJbmRleC5vdmVybGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIERvbUhhbmRsZXIuYWJzb2x1dGVQb3NpdGlvbih0aGlzLmNvbnRhaW5lciwgdGhpcy50YXJnZXQpO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldCA9IERvbUhhbmRsZXIuZ2V0T2Zmc2V0KHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0T2Zmc2V0ID0gRG9tSGFuZGxlci5nZXRPZmZzZXQodGhpcy50YXJnZXQpO1xuICAgICAgICBjb25zdCBib3JkZXJSYWRpdXMgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py5nZXRDb21wdXRlZFN0eWxlKHRoaXMuY29udGFpbmVyISkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJhZGl1cycpO1xuICAgICAgICBsZXQgYXJyb3dMZWZ0ID0gMDtcblxuICAgICAgICBpZiAoY29udGFpbmVyT2Zmc2V0LmxlZnQgPCB0YXJnZXRPZmZzZXQubGVmdCkge1xuICAgICAgICAgICAgYXJyb3dMZWZ0ID0gdGFyZ2V0T2Zmc2V0LmxlZnQgLSBjb250YWluZXJPZmZzZXQubGVmdCAtIHBhcnNlRmxvYXQoYm9yZGVyUmFkaXVzISkgKiAyO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGFpbmVyPy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1vdmVybGF5QXJyb3dMZWZ0JywgYCR7YXJyb3dMZWZ0fXB4YCk7XG5cbiAgICAgICAgaWYgKGNvbnRhaW5lck9mZnNldC50b3AgPCB0YXJnZXRPZmZzZXQudG9wKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMuY29udGFpbmVyLCAncC1vdmVybGF5cGFuZWwtZmxpcHBlZCcpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zaG93Q2xvc2VJY29uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNvbnRhaW5lciwgJ21hcmdpbi10b3AnLCAnLTMwcHgnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC50b1N0YXRlID09PSAnb3BlbicpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyID0gZXZlbnQuZWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kQ29udGFpbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmFsaWduKCk7XG4gICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuYmluZFNjcm9sbExpc3RlbmVyKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzT25TaG93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlFdmVudExpc3RlbmVyID0gKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5jb250YWluZXIuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZkNsaWNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24gPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNsaWNrT2JzZXJ2YWJsZS5zdWJzY3JpYmUodGhpcy5vdmVybGF5RXZlbnRMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc092ZXJsYXlBbmltYXRpb25JblByb2dyZXNzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZXN0cm95Q2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95Q2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95Q2FsbGJhY2sgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdjbG9zZSc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29udGFpbmVyRGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25IaWRlLmVtaXQoe30pO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzT3ZlcmxheUFuaW1hdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBmb2N1cygpIHtcbiAgICAgICAgbGV0IGZvY3VzYWJsZSA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmNvbnRhaW5lciwgJ1thdXRvZm9jdXNdJyk7XG4gICAgICAgIGlmIChmb2N1c2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBmb2N1c2FibGUuZm9jdXMoKSwgNSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBIaWRlcyB0aGUgcGFuZWwuXG4gICAgICogQGdyb3VwIE1ldGhvZFxuICAgICAqL1xuICAgIGhpZGUoKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25XaW5kb3dSZXNpemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlICYmICFEb21IYW5kbGVyLmlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2luZG93ID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldyBhcyBXaW5kb3c7XG4gICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4od2luZG93LCAncmVzaXplJywgdGhpcy5vbldpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbmV3IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyKHRoaXMudGFyZ2V0LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbnRhaW5lckRlc3Ryb3koKSB7XG4gICAgICAgIGlmICghKHRoaXMuY2QgYXMgVmlld1JlZikuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLmF1dG9aSW5kZXgpIHtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMuY2QgYXMgVmlld1JlZikuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRlc3Ryb3lDYWxsYmFjayA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lcikge1xuICAgICAgICAgICAgdGhpcy5yZXN0b3JlQXBwZW5kKCk7XG4gICAgICAgICAgICB0aGlzLm9uQ29udGFpbmVyRGVzdHJveSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmlwcGxlTW9kdWxlLCBTaGFyZWRNb2R1bGUsIFRpbWVzSWNvbl0sXG4gICAgZXhwb3J0czogW092ZXJsYXlQYW5lbCwgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtPdmVybGF5UGFuZWxdXG59KVxuZXhwb3J0IGNsYXNzIE92ZXJsYXlQYW5lbE1vZHVsZSB7fVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wYWdpbmF0b3IvcGFnaW5hdG9yLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhZ2luYXRvciB9IGZyb20gJy4vcGFnaW5hdG9yJztcblxuLyoqXG4gKiBQYWdpbmF0b3Igc3RhdGUuXG4gKiBAZ3JvdXAgSW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdG9yU3RhdGUge1xuICAgIHBhZ2U/OiBudW1iZXI7XG4gICAgZmlyc3Q/OiBudW1iZXI7XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBwYWdlQ291bnQ/OiBudW1iZXI7XG59XG4vKipcbiAqIERlZmluZXMgdmFsaWQgdGVtcGxhdGVzIGluIFBhZ2luYXRvclRlbXBsYXRlcy5cbiAqIEBncm91cCBUZW1wbGF0ZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0b3JUZW1wbGF0ZXMge1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBmaXJzdCBwYWdlIGxpbmsgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKi9cbiAgICBmaXJzdHBhZ2VsaW5raWNvbigpOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBwcmV2aW91cyBwYWdlIGxpbmsgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKi9cbiAgICBwcmV2aW91c3BhZ2VsaW5raWNvbigpOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBsYXN0IHBhZ2UgbGluayBpY29uIHRlbXBsYXRlLlxuICAgICAqL1xuICAgIGxhc3RwYWdlbGlua2ljb24oKTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKipcbiAgICAgKiBDdXN0b20gbmV4dCBwYWdlIGxpbmsgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKi9cbiAgICBuZXh0cGFnZWxpbmtpY29uKCk6IFRlbXBsYXRlUmVmPGFueT47XG59XG4iXX0=