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
@@ -1,15 +1,19 @@
1
- import { Component, Input, ViewChild, ContentChildren, NgModule, EventEmitter, Output, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, Inject, PLATFORM_ID } from '@angular/core';
2
- import { PrimeTemplate, SharedModule, Header, Footer } from 'primeng/api';
3
- import { RippleModule } from 'primeng/ripple';
4
1
  import { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';
5
- import { UniqueComponentId } from 'primeng/utils';
6
- import { ChevronRightIcon } from 'primeng/icons/chevronright';
7
- import { ChevronLeftIcon } from 'primeng/icons/chevronleft';
2
+ import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, EventEmitter, Inject, Input, NgModule, Output, PLATFORM_ID, ViewChild, ViewEncapsulation } from '@angular/core';
3
+ import { Footer, Header, PrimeTemplate, SharedModule } from 'primeng/api';
8
4
  import { ChevronDownIcon } from 'primeng/icons/chevrondown';
5
+ import { ChevronLeftIcon } from 'primeng/icons/chevronleft';
6
+ import { ChevronRightIcon } from 'primeng/icons/chevronright';
9
7
  import { ChevronUpIcon } from 'primeng/icons/chevronup';
8
+ import { RippleModule } from 'primeng/ripple';
9
+ import { UniqueComponentId } from 'primeng/utils';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@angular/common";
12
12
  import * as i2 from "primeng/ripple";
13
+ /**
14
+ * Carousel is a content slider featuring various customization options.
15
+ * @group Components
16
+ */
13
17
  class Carousel {
14
18
  el;
15
19
  zone;
@@ -17,6 +21,11 @@ class Carousel {
17
21
  renderer;
18
22
  document;
19
23
  platformId;
24
+ /**
25
+ * Index of the first item.
26
+ * @defaultValue 0
27
+ * @group Props
28
+ */
20
29
  get page() {
21
30
  return this._page;
22
31
  }
@@ -35,38 +44,115 @@ class Carousel {
35
44
  }
36
45
  this._page = val;
37
46
  }
47
+ /**
48
+ * Number of items per page.
49
+ * @defaultValue 1
50
+ * @group Props
51
+ */
38
52
  get numVisible() {
39
53
  return this._numVisible;
40
54
  }
41
55
  set numVisible(val) {
42
56
  this._numVisible = val;
43
57
  }
58
+ /**
59
+ * Number of items to scroll.
60
+ * @defaultValue 1
61
+ * @group Props
62
+ */
44
63
  get numScroll() {
45
64
  return this._numVisible;
46
65
  }
47
66
  set numScroll(val) {
48
67
  this._numScroll = val;
49
68
  }
69
+ /**
70
+ * An array of options for responsive design.
71
+ * @see {CarouselResponsiveOptions}
72
+ * @group Props
73
+ */
50
74
  responsiveOptions;
75
+ /**
76
+ * Specifies the layout of the component.
77
+ * @group Props
78
+ */
51
79
  orientation = 'horizontal';
80
+ /**
81
+ * Height of the viewport in vertical layout.
82
+ * @group Props
83
+ */
52
84
  verticalViewPortHeight = '300px';
85
+ /**
86
+ * Style class of main content.
87
+ * @group Props
88
+ */
53
89
  contentClass = '';
90
+ /**
91
+ * Style class of the indicator items.
92
+ * @group Props
93
+ */
54
94
  indicatorsContentClass = '';
95
+ /**
96
+ * Inline style of the indicator items.
97
+ * @group Props
98
+ */
55
99
  indicatorsContentStyle;
100
+ /**
101
+ * Style class of the indicators.
102
+ * @group Props
103
+ */
56
104
  indicatorStyleClass = '';
105
+ /**
106
+ * Style of the indicators.
107
+ * @group Props
108
+ */
57
109
  indicatorStyle;
110
+ /**
111
+ * An array of objects to display.
112
+ * @defaultValue null
113
+ * @group Props
114
+ */
58
115
  get value() {
59
116
  return this._value;
60
117
  }
61
118
  set value(val) {
62
119
  this._value = val;
63
120
  }
121
+ /**
122
+ * Defines if scrolling would be infinite.
123
+ * @group Props
124
+ */
64
125
  circular = false;
126
+ /**
127
+ * Whether to display indicator container.
128
+ * @group Props
129
+ */
65
130
  showIndicators = true;
131
+ /**
132
+ * Whether to display navigation buttons in container.
133
+ * @group Props
134
+ */
66
135
  showNavigators = true;
136
+ /**
137
+ * Time in milliseconds to scroll items automatically.
138
+ * @group Props
139
+ */
67
140
  autoplayInterval = 0;
141
+ /**
142
+ * Inline style of the component.
143
+ * @group Props
144
+ */
68
145
  style;
146
+ /**
147
+ * Style class of the viewport container.
148
+ * @group Props
149
+ */
69
150
  styleClass;
151
+ /**
152
+ * Callback to invoke after scroll.
153
+ * @param {CarouselPageEvent} event - Custom page event.
154
+ * @group Emits
155
+ */
70
156
  onPage = new EventEmitter();
71
157
  itemsContainer;
72
158
  headerFacet;
@@ -155,7 +241,7 @@ class Carousel {
155
241
  if (this.responsiveOptions) {
156
242
  this.bindDocumentListeners();
157
243
  }
158
- this.templates.forEach((item) => {
244
+ this.templates?.forEach((item) => {
159
245
  switch (item.getType()) {
160
246
  case 'item':
161
247
  this.itemTemplate = item.template;
@@ -510,8 +596,8 @@ class Carousel {
510
596
  this.stopAutoplay();
511
597
  }
512
598
  }
513
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Carousel, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
514
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: Carousel, selector: "p-carousel", inputs: { page: "page", numVisible: "numVisible", numScroll: "numScroll", responsiveOptions: "responsiveOptions", orientation: "orientation", verticalViewPortHeight: "verticalViewPortHeight", contentClass: "contentClass", indicatorsContentClass: "indicatorsContentClass", indicatorsContentStyle: "indicatorsContentStyle", indicatorStyleClass: "indicatorStyleClass", indicatorStyle: "indicatorStyle", value: "value", circular: "circular", showIndicators: "showIndicators", showNavigators: "showNavigators", autoplayInterval: "autoplayInterval", style: "style", styleClass: "styleClass" }, outputs: { onPage: "onPage" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "itemsContainer", first: true, predicate: ["itemsContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
599
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: Carousel, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
600
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: Carousel, selector: "p-carousel", inputs: { page: "page", numVisible: "numVisible", numScroll: "numScroll", responsiveOptions: "responsiveOptions", orientation: "orientation", verticalViewPortHeight: "verticalViewPortHeight", contentClass: "contentClass", indicatorsContentClass: "indicatorsContentClass", indicatorsContentStyle: "indicatorsContentStyle", indicatorStyleClass: "indicatorStyleClass", indicatorStyle: "indicatorStyle", value: "value", circular: "circular", showIndicators: "showIndicators", showNavigators: "showNavigators", autoplayInterval: "autoplayInterval", style: "style", styleClass: "styleClass" }, outputs: { onPage: "onPage" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "itemsContainer", first: true, predicate: ["itemsContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
515
601
  <div [attr.id]="id" [ngClass]="{ 'p-carousel p-component': true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical() }" [ngStyle]="style" [class]="styleClass">
516
602
  <div class="p-carousel-header" *ngIf="headerFacet || headerTemplate">
517
603
  <ng-content select="p-header"></ng-content>
@@ -584,7 +670,7 @@ class Carousel {
584
670
  `, isInline: true, styles: [".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.Ripple; }), selector: "[pRipple]" }, { kind: "component", type: i0.forwardRef(function () { return ChevronRightIcon; }), selector: "ChevronRightIcon" }, { kind: "component", type: i0.forwardRef(function () { return ChevronLeftIcon; }), selector: "ChevronLeftIcon" }, { kind: "component", type: i0.forwardRef(function () { return ChevronDownIcon; }), selector: "ChevronDownIcon" }, { kind: "component", type: i0.forwardRef(function () { return ChevronUpIcon; }), selector: "ChevronUpIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
585
671
  }
586
672
  export { Carousel };
587
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Carousel, decorators: [{
673
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: Carousel, decorators: [{
588
674
  type: Component,
589
675
  args: [{ selector: 'p-carousel', template: `
590
676
  <div [attr.id]="id" [ngClass]="{ 'p-carousel p-component': true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical() }" [ngStyle]="style" [class]="styleClass">
@@ -717,12 +803,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
717
803
  args: [PrimeTemplate]
718
804
  }] } });
719
805
  class CarouselModule {
720
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: CarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
721
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: CarouselModule, declarations: [Carousel], imports: [CommonModule, SharedModule, RippleModule, ChevronRightIcon, ChevronLeftIcon, ChevronDownIcon, ChevronUpIcon], exports: [CommonModule, Carousel, SharedModule] });
722
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: CarouselModule, imports: [CommonModule, SharedModule, RippleModule, ChevronRightIcon, ChevronLeftIcon, ChevronDownIcon, ChevronUpIcon, CommonModule, SharedModule] });
806
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: CarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
807
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.2", ngImport: i0, type: CarouselModule, declarations: [Carousel], imports: [CommonModule, SharedModule, RippleModule, ChevronRightIcon, ChevronLeftIcon, ChevronDownIcon, ChevronUpIcon], exports: [CommonModule, Carousel, SharedModule] });
808
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: CarouselModule, imports: [CommonModule, SharedModule, RippleModule, ChevronRightIcon, ChevronLeftIcon, ChevronDownIcon, ChevronUpIcon, CommonModule, SharedModule] });
723
809
  }
724
810
  export { CarouselModule };
725
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: CarouselModule, decorators: [{
811
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: CarouselModule, decorators: [{
726
812
  type: NgModule,
727
813
  args: [{
728
814
  imports: [CommonModule, SharedModule, RippleModule, ChevronRightIcon, ChevronLeftIcon, ChevronDownIcon, ChevronUpIcon],
@@ -730,4 +816,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
730
816
  declarations: [Carousel]
731
817
  }]
732
818
  }] });
733
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBRUwsU0FBUyxFQUdULGVBQWUsRUFFZixRQUFRLEVBRVIsWUFBWSxFQUNaLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUlqQixNQUFNLEVBQ04sV0FBVyxFQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBRXhELE1BZ0ZhLFFBQVE7SUFnSkU7SUFBdUI7SUFBcUI7SUFBK0I7SUFBK0M7SUFBaUQ7SUEvSTlMLElBQWEsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsR0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDdEMsSUFBSSxJ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QUFFLGFBQWEsYUFDM0csWUFBWSxFQTNtQmIsUUFBUSxFQTJtQmlCLFlBQVk7d0dBR3JDLGNBQWMsWUFKYixZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFDM0csWUFBWSxFQUFZLFlBQVk7O1NBR3JDLGNBQWM7MkZBQWQsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQztvQkFDdEgsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUM7b0JBQy9DLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBFbGVtZW50UmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgTmdNb2R1bGUsXG4gICAgTmdab25lLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgUmVuZGVyZXIyLFxuICAgIEluamVjdCxcbiAgICBQTEFURk9STV9JRFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSwgSGVhZGVyLCBGb290ZXIgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBVbmlxdWVDb21wb25lbnRJZCB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgQ2hldnJvblJpZ2h0SWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvY2hldnJvbnJpZ2h0JztcbmltcG9ydCB7IENoZXZyb25MZWZ0SWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvY2hldnJvbmxlZnQnO1xuaW1wb3J0IHsgQ2hldnJvbkRvd25JY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucy9jaGV2cm9uZG93bic7XG5pbXBvcnQgeyBDaGV2cm9uVXBJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucy9jaGV2cm9udXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtY2Fyb3VzZWwnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW2F0dHIuaWRdPVwiaWRcIiBbbmdDbGFzc109XCJ7ICdwLWNhcm91c2VsIHAtY29tcG9uZW50JzogdHJ1ZSwgJ3AtY2Fyb3VzZWwtdmVydGljYWwnOiBpc1ZlcnRpY2FsKCksICdwLWNhcm91c2VsLWhvcml6b250YWwnOiAhaXNWZXJ0aWNhbCgpIH1cIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jYXJvdXNlbC1oZWFkZXJcIiAqbmdJZj1cImhlYWRlckZhY2V0IHx8IGhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cImNvbnRlbnRDbGFzc1wiIFtuZ0NsYXNzXT1cIidwLWNhcm91c2VsLWNvbnRlbnQnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY2Fyb3VzZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2hvd05hdmlnYXRvcnNcIiBbbmdDbGFzc109XCJ7ICdwLWNhcm91c2VsLXByZXYgcC1saW5rJzogdHJ1ZSwgJ3AtZGlzYWJsZWQnOiBpc0JhY2t3YXJkTmF2RGlzYWJsZWQoKSB9XCIgW2Rpc2FibGVkXT1cImlzQmFja3dhcmROYXZEaXNhYmxlZCgpXCIgKGNsaWNrKT1cIm5hdkJhY2t3YXJkKCRldmVudClcIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwcmV2aW91c0ljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uTGVmdEljb24gKm5nSWY9XCIhaXNWZXJ0aWNhbCgpXCIgW3N0eWxlQ2xhc3NdPVwiJ2Nhcm91c2VsLXByZXYtaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uVXBJY29uICpuZ0lmPVwiaXNWZXJ0aWNhbCgpXCIgW3N0eWxlQ2xhc3NdPVwiJ2Nhcm91c2VsLXByZXYtaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByZXZpb3VzSWNvblRlbXBsYXRlXCIgY2xhc3M9XCJwLWNhcm91c2VsLXByZXYtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZpb3VzSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNhcm91c2VsLWl0ZW1zLWNvbnRlbnRcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaXNWZXJ0aWNhbCgpID8gdmVydGljYWxWaWV3UG9ydEhlaWdodCA6ICdhdXRvJyB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNpdGVtc0NvbnRhaW5lciBjbGFzcz1cInAtY2Fyb3VzZWwtaXRlbXMtY29udGFpbmVyXCIgKHRyYW5zaXRpb25lbmQpPVwib25UcmFuc2l0aW9uRW5kKClcIiAodG91Y2hlbmQpPVwib25Ub3VjaEVuZCgkZXZlbnQpXCIgKHRvdWNoc3RhcnQpPVwib25Ub3VjaFN0YXJ0KCRldmVudClcIiAodG91Y2htb3ZlKT1cIm9uVG91Y2hNb3ZlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNsb25lZEl0ZW1zRm9yU3RhcnRpbmc7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3AtY2Fyb3VzZWwtaXRlbSBwLWNhcm91c2VsLWl0ZW0tY2xvbmVkJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwLWNhcm91c2VsLWl0ZW0tYWN0aXZlJzogdG90YWxTaGlmdGVkSXRlbXMgKiAtMSA9PT0gdmFsdWUubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3AtY2Fyb3VzZWwtaXRlbS1zdGFydCc6IDAgPT09IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3AtY2Fyb3VzZWwtaXRlbS1lbmQnOiBjbG9uZWRJdGVtc0ZvclN0YXJ0aW5nLmxlbmd0aCAtIDEgPT09IGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmFsdWU7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1jYXJvdXNlbC1pdGVtJzogdHJ1ZSwgJ3AtY2Fyb3VzZWwtaXRlbS1hY3RpdmUnOiBmaXJzdEluZGV4KCkgPD0gaW5kZXggJiYgbGFzdEluZGV4KCkgPj0gaW5kZXgsICdwLWNhcm91c2VsLWl0ZW0tc3RhcnQnOiBmaXJzdEluZGV4KCkgPT09IGluZGV4LCAncC1jYXJvdXNlbC1pdGVtLWVuZCc6IGxhc3RJbmRleCgpID09PSBpbmRleCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNsb25lZEl0ZW1zRm9yRmluaXNoaW5nOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwLWNhcm91c2VsLWl0ZW0gcC1jYXJvdXNlbC1pdGVtLWNsb25lZCc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncC1jYXJvdXNlbC1pdGVtLWFjdGl2ZSc6IHRvdGFsU2hpZnRlZEl0ZW1zICogLTEgPT09IG51bVZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncC1jYXJvdXNlbC1pdGVtLXN0YXJ0JzogMCA9PT0gaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncC1jYXJvdXNlbC1pdGVtLWVuZCc6IGNsb25lZEl0ZW1zRm9yRmluaXNoaW5nLmxlbmd0aCAtIDEgPT09IGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cInNob3dOYXZpZ2F0b3JzXCIgW25nQ2xhc3NdPVwieyAncC1jYXJvdXNlbC1uZXh0IHAtbGluayc6IHRydWUsICdwLWRpc2FibGVkJzogaXNGb3J3YXJkTmF2RGlzYWJsZWQoKSB9XCIgW2Rpc2FibGVkXT1cImlzRm9yd2FyZE5hdkRpc2FibGVkKClcIiAoY2xpY2spPVwibmF2Rm9yd2FyZCgkZXZlbnQpXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbmV4dEljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHRJY29uICpuZ0lmPVwiIWlzVmVydGljYWwoKVwiIFtzdHlsZUNsYXNzXT1cIidjYXJvdXNlbC1wcmV2LWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd25JY29uICpuZ0lmPVwiaXNWZXJ0aWNhbCgpXCIgW3N0eWxlQ2xhc3NdPVwiJ2Nhcm91c2VsLXByZXYtaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm5leHRJY29uVGVtcGxhdGVcIiBjbGFzcz1cInAtY2Fyb3VzZWwtcHJldi1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibmV4dEljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx1bCBbbmdDbGFzc109XCIncC1jYXJvdXNlbC1pbmRpY2F0b3JzIHAtcmVzZXQnXCIgW2NsYXNzXT1cImluZGljYXRvcnNDb250ZW50Q2xhc3NcIiBbbmdTdHlsZV09XCJpbmRpY2F0b3JzQ29udGVudFN0eWxlXCIgKm5nSWY9XCJzaG93SW5kaWNhdG9yc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHRvdGFsRG90IG9mIHRvdGFsRG90c0FycmF5KCk7IGxldCBpID0gaW5kZXhcIiBbbmdDbGFzc109XCJ7ICdwLWNhcm91c2VsLWluZGljYXRvcic6IHRydWUsICdwLWhpZ2hsaWdodCc6IF9wYWdlID09PSBpIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIidwLWxpbmsnXCIgKGNsaWNrKT1cIm9uRG90Q2xpY2soJGV2ZW50LCBpKVwiIFtjbGFzc109XCJpbmRpY2F0b3JTdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwiaW5kaWNhdG9yU3R5bGVcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jYXJvdXNlbC1mb290ZXJcIiAqbmdJZj1cImZvb3RlckZhY2V0IHx8IGZvb3RlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2Nhcm91c2VsLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBDYXJvdXNlbCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIEBJbnB1dCgpIGdldCBwYWdlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdlO1xuICAgIH1cbiAgICBzZXQgcGFnZSh2YWw6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5pc0NyZWF0ZWQgJiYgdmFsICE9PSB0aGlzLl9wYWdlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hdXRvcGxheUludGVydmFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wQXV0b3BsYXkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFsbG93QXV0b3BsYXkgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZhbCA+IHRoaXMuX3BhZ2UgJiYgdmFsIDw9IHRoaXMudG90YWxEb3RzKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwKC0xLCB2YWwpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwgPCB0aGlzLl9wYWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwKDEsIHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wYWdlID0gdmFsO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBudW1WaXNpYmxlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1WaXNpYmxlO1xuICAgIH1cbiAgICBzZXQgbnVtVmlzaWJsZSh2YWw6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9udW1WaXNpYmxlID0gdmFsO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBudW1TY3JvbGwoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bVZpc2libGU7XG4gICAgfVxuICAgIHNldCBudW1TY3JvbGwodmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbnVtU2Nyb2xsID0gdmFsO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHJlc3BvbnNpdmVPcHRpb25zOiBhbnlbXTtcblxuICAgIEBJbnB1dCgpIG9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xuXG4gICAgQElucHV0KCkgdmVydGljYWxWaWV3UG9ydEhlaWdodCA9ICczMDBweCc7XG5cbiAgICBASW5wdXQoKSBjb250ZW50Q2xhc3M6IHN0cmluZyA9ICcnO1xuXG4gICAgQElucHV0KCkgaW5kaWNhdG9yc0NvbnRlbnRDbGFzczogc3RyaW5nID0gJyc7XG5cbiAgICBASW5wdXQoKSBpbmRpY2F0b3JzQ29udGVudFN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBpbmRpY2F0b3JTdHlsZUNsYXNzOiBzdHJpbmcgPSAnJztcblxuICAgIEBJbnB1dCgpIGluZGljYXRvclN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBnZXQgdmFsdWUoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuICAgIHNldCB2YWx1ZSh2YWwpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWw7XG4gICAgfVxuXG4gICAgQElucHV0KCkgY2lyY3VsYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNob3dJbmRpY2F0b3JzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNob3dOYXZpZ2F0b3JzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGF1dG9wbGF5SW50ZXJ2YWw6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpIG9uUGFnZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdpdGVtc0NvbnRhaW5lcicpIGl0ZW1zQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZChIZWFkZXIpIGhlYWRlckZhY2V0O1xuXG4gICAgQENvbnRlbnRDaGlsZChGb290ZXIpIGZvb3RlckZhY2V0O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgX251bVZpc2libGU6IG51bWJlciA9IDE7XG5cbiAgICBfbnVtU2Nyb2xsOiBudW1iZXIgPSAxO1xuXG4gICAgX29sZE51bVNjcm9sbDogbnVtYmVyID0gMDtcblxuICAgIHByZXZTdGF0ZTogYW55ID0ge1xuICAgICAgICBudW1TY3JvbGw6IDAsXG4gICAgICAgIG51bVZpc2libGU6IDAsXG4gICAgICAgIHZhbHVlOiBbXVxuICAgIH07XG5cbiAgICBkZWZhdWx0TnVtU2Nyb2xsOiBudW1iZXIgPSAxO1xuXG4gICAgZGVmYXVsdE51bVZpc2libGU6IG51bWJlciA9IDE7XG5cbiAgICBfcGFnZTogbnVtYmVyID0gMDtcblxuICAgIF92YWx1ZTogYW55W107XG5cbiAgICBjYXJvdXNlbFN0eWxlOiBhbnk7XG5cbiAgICBpZDogc3RyaW5nO1xuXG4gICAgdG90YWxTaGlmdGVkSXRlbXM7XG5cbiAgICBpc1JlbWFpbmluZ0l0ZW1zQWRkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGFuaW1hdGlvblRpbWVvdXQ6IGFueTtcblxuICAgIHRyYW5zbGF0ZVRpbWVvdXQ6IGFueTtcblxuICAgIHJlbWFpbmluZ0l0ZW1zOiBudW1iZXIgPSAwO1xuXG4gICAgX2l0ZW1zOiBhbnlbXTtcblxuICAgIHN0YXJ0UG9zOiBhbnk7XG5cbiAgICBkb2N1bWVudFJlc2l6ZUxpc3RlbmVyOiBhbnk7XG5cbiAgICBjbG9uZWRJdGVtc0ZvclN0YXJ0aW5nOiBhbnlbXTtcblxuICAgIGNsb25lZEl0ZW1zRm9yRmluaXNoaW5nOiBhbnlbXTtcblxuICAgIGFsbG93QXV0b3BsYXk6IGJvb2xlYW47XG5cbiAgICBpbnRlcnZhbDogYW55O1xuXG4gICAgaXNDcmVhdGVkOiBib29sZWFuO1xuXG4gICAgc3dpcGVUaHJlc2hvbGQ6IG51bWJlciA9IDIwO1xuXG4gICAgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHByZXZpb3VzSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgbmV4dEljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHdpbmRvdzogV2luZG93O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgem9uZTogTmdab25lLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LCBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSkge1xuICAgICAgICB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zID0gdGhpcy5wYWdlICogdGhpcy5udW1TY3JvbGwgKiAtMTtcbiAgICAgICAgdGhpcy53aW5kb3cgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3IGFzIFdpbmRvdztcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2U6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS52YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2lyY3VsYXIgJiYgdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldENsb25lSXRlbXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ3JlYXRlZCkge1xuICAgICAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5udW1WaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0TnVtVmlzaWJsZSA9IHRoaXMubnVtVmlzaWJsZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NpcmN1bGFyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDbG9uZUl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVTdHlsZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5udW1TY3JvbGwpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXNwb25zaXZlT3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHROdW1TY3JvbGwgPSB0aGlzLm51bVNjcm9sbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMuaWQgPSBVbmlxdWVDb21wb25lbnRJZCgpO1xuICAgICAgICB0aGlzLmFsbG93QXV0b3BsYXkgPSAhIXRoaXMuYXV0b3BsYXlJbnRlcnZhbDtcblxuICAgICAgICBpZiAodGhpcy5jaXJjdWxhcikge1xuICAgICAgICAgICAgdGhpcy5zZXRDbG9uZUl0ZW1zKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZXNwb25zaXZlT3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0TnVtU2Nyb2xsID0gdGhpcy5fbnVtU2Nyb2xsO1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0TnVtVmlzaWJsZSA9IHRoaXMuX251bVZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0ZVN0eWxlKCk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb24oKTtcblxuICAgICAgICBpZiAodGhpcy5yZXNwb25zaXZlT3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRMaXN0ZW5lcnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3Rlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXZpb3VzaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ25leHRpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0SWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgICAgIGNvbnN0IGlzQ2lyY3VsYXIgPSB0aGlzLmlzQ2lyY3VsYXIoKTtcbiAgICAgICAgbGV0IHRvdGFsU2hpZnRlZEl0ZW1zID0gdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcztcblxuICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLml0ZW1zQ29udGFpbmVyICYmICh0aGlzLnByZXZTdGF0ZS5udW1TY3JvbGwgIT09IHRoaXMuX251bVNjcm9sbCB8fCB0aGlzLnByZXZTdGF0ZS5udW1WaXNpYmxlICE9PSB0aGlzLl9udW1WaXNpYmxlIHx8IHRoaXMucHJldlN0YXRlLnZhbHVlLmxlbmd0aCAhPT0gdGhpcy52YWx1ZS5sZW5ndGgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hdXRvcGxheUludGVydmFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wQXV0b3BsYXkoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZW1haW5pbmdJdGVtcyA9ICh0aGlzLnZhbHVlLmxlbmd0aCAtIHRoaXMuX251bVZpc2libGUpICUgdGhpcy5fbnVtU2Nyb2xsO1xuXG4gICAgICAgICAgICBsZXQgcGFnZSA9IHRoaXMuX3BhZ2U7XG4gICAgICAgICAgICBpZiAodGhpcy50b3RhbERvdHMoKSAhPT0gMCAmJiBwYWdlID49IHRoaXMudG90YWxEb3RzKCkpIHtcbiAgICAgICAgICAgICAgICBwYWdlID0gdGhpcy50b3RhbERvdHMoKSAtIDE7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFnZSA9IHBhZ2U7XG4gICAgICAgICAgICAgICAgdGhpcy5vblBhZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyA9IHBhZ2UgKiB0aGlzLl9udW1TY3JvbGwgKiAtMTtcbiAgICAgICAgICAgIGlmIChpc0NpcmN1bGFyKSB7XG4gICAgICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgLT0gdGhpcy5fbnVtVmlzaWJsZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBhZ2UgPT09IHRoaXMudG90YWxEb3RzKCkgLSAxICYmIHRoaXMucmVtYWluaW5nSXRlbXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgKz0gLTEgKiB0aGlzLnJlbWFpbmluZ0l0ZW1zICsgdGhpcy5fbnVtU2Nyb2xsO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNSZW1haW5pbmdJdGVtc0FkZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1JlbWFpbmluZ0l0ZW1zQWRkZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRvdGFsU2hpZnRlZEl0ZW1zICE9PSB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyA9IHRvdGFsU2hpZnRlZEl0ZW1zO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9vbGROdW1TY3JvbGwgPSB0aGlzLl9udW1TY3JvbGw7XG4gICAgICAgICAgICB0aGlzLnByZXZTdGF0ZS5udW1TY3JvbGwgPSB0aGlzLl9udW1TY3JvbGw7XG4gICAgICAgICAgICB0aGlzLnByZXZTdGF0ZS5udW1WaXNpYmxlID0gdGhpcy5fbnVtVmlzaWJsZTtcbiAgICAgICAgICAgIHRoaXMucHJldlN0YXRlLnZhbHVlID0gWy4uLnRoaXMuX3ZhbHVlXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudG90YWxEb3RzKCkgPiAwICYmIHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSB0aGlzLmlzVmVydGljYWwoKSA/IGB0cmFuc2xhdGUzZCgwLCAke3RvdGFsU2hpZnRlZEl0ZW1zICogKDEwMCAvIHRoaXMuX251bVZpc2libGUpfSUsIDApYCA6IGB0cmFuc2xhdGUzZCgke3RvdGFsU2hpZnRlZEl0ZW1zICogKDEwMCAvIHRoaXMuX251bVZpc2libGUpfSUsIDAsIDApYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pc0NyZWF0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5hdXRvcGxheUludGVydmFsICYmIHRoaXMuaXNBdXRvcGxheSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydEF1dG9wbGF5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNDaXJjdWxhcikge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFnZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gLTEgKiB0aGlzLl9udW1WaXNpYmxlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0b3RhbFNoaWZ0ZWRJdGVtcyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gLTEgKiB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZW1haW5pbmdJdGVtcyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1JlbWFpbmluZ0l0ZW1zQWRkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRvdGFsU2hpZnRlZEl0ZW1zICE9PSB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyA9IHRvdGFsU2hpZnRlZEl0ZW1zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlU3R5bGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5jYXJvdXNlbFN0eWxlKSB7XG4gICAgICAgICAgICB0aGlzLmNhcm91c2VsU3R5bGUgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgICAgICB0aGlzLmNhcm91c2VsU3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuaGVhZCwgdGhpcy5jYXJvdXNlbFN0eWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpbm5lckhUTUwgPSBgXG4gICAgICAgICAgICAjJHt0aGlzLmlkfSAucC1jYXJvdXNlbC1pdGVtIHtcblx0XHRcdFx0ZmxleDogMSAwICR7MTAwIC8gdGhpcy5udW1WaXNpYmxlfSVcblx0XHRcdH1cbiAgICAgICAgYDtcblxuICAgICAgICBpZiAodGhpcy5yZXNwb25zaXZlT3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaXZlT3B0aW9ucy5zb3J0KChkYXRhMSwgZGF0YTIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZTEgPSBkYXRhMS5icmVha3BvaW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlMiA9IGRhdGEyLmJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyICE9IG51bGwpIHJlc3VsdCA9IC0xO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSAhPSBudWxsICYmIHZhbHVlMiA9PSBudWxsKSByZXN1bHQgPSAxO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiA9PSBudWxsKSByZXN1bHQgPSAwO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZTIgPT09ICdzdHJpbmcnKSByZXN1bHQgPSB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIsIHVuZGVmaW5lZCwgeyBudW1lcmljOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIGVsc2UgcmVzdWx0ID0gdmFsdWUxIDwgdmFsdWUyID8gLTEgOiB2YWx1ZTEgPiB2YWx1ZTIgPyAxIDogMDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAtMSAqIHJlc3VsdDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzID0gdGhpcy5yZXNwb25zaXZlT3B0aW9uc1tpXTtcblxuICAgICAgICAgICAgICAgIGlubmVySFRNTCArPSBgXG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICR7cmVzLmJyZWFrcG9pbnR9KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAjJHt0aGlzLmlkfSAucC1jYXJvdXNlbC1pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4OiAxIDAgJHsxMDAgLyByZXMubnVtVmlzaWJsZX0lXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jYXJvdXNlbFN0eWxlLmlubmVySFRNTCA9IGlubmVySFRNTDtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVQb3NpdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIGxldCBtYXRjaGVkUmVzcG9uc2l2ZURhdGEgPSB7XG4gICAgICAgICAgICAgICAgbnVtVmlzaWJsZTogdGhpcy5kZWZhdWx0TnVtVmlzaWJsZSxcbiAgICAgICAgICAgICAgICBudW1TY3JvbGw6IHRoaXMuZGVmYXVsdE51bVNjcm9sbFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgbGV0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlc3BvbnNpdmVPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMgPSB0aGlzLnJlc3BvbnNpdmVPcHRpb25zW2ldO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChyZXMuYnJlYWtwb2ludCwgMTApID49IHdpbmRvd1dpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkUmVzcG9uc2l2ZURhdGEgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9udW1TY3JvbGwgIT09IG1hdGNoZWRSZXNwb25zaXZlRGF0YS5udW1TY3JvbGwpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFnZSA9IHRoaXMuX3BhZ2U7XG4gICAgICAgICAgICAgICAgcGFnZSA9IE1hdGguZmxvb3IoKHBhZ2UgKiB0aGlzLl9udW1TY3JvbGwpIC8gbWF0Y2hlZFJlc3BvbnNpdmVEYXRhLm51bVNjcm9sbCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgdG90YWxTaGlmdGVkSXRlbXMgPSBtYXRjaGVkUmVzcG9uc2l2ZURhdGEubnVtU2Nyb2xsICogdGhpcy5wYWdlICogLTE7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NpcmN1bGFyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgLT0gbWF0Y2hlZFJlc3BvbnNpdmVEYXRhLm51bVZpc2libGU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyA9IHRvdGFsU2hpZnRlZEl0ZW1zO1xuICAgICAgICAgICAgICAgIHRoaXMuX251bVNjcm9sbCA9IG1hdGNoZWRSZXNwb25zaXZlRGF0YS5udW1TY3JvbGw7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9wYWdlID0gcGFnZTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9udW1WaXNpYmxlICE9PSBtYXRjaGVkUmVzcG9uc2l2ZURhdGEubnVtVmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX251bVZpc2libGUgPSBtYXRjaGVkUmVzcG9uc2l2ZURhdGEubnVtVmlzaWJsZTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldENsb25lSXRlbXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldENsb25lSXRlbXMoKSB7XG4gICAgICAgIHRoaXMuY2xvbmVkSXRlbXNGb3JTdGFydGluZyA9IFtdO1xuICAgICAgICB0aGlzLmNsb25lZEl0ZW1zRm9yRmluaXNoaW5nID0gW107XG4gICAgICAgIGlmICh0aGlzLmlzQ2lyY3VsYXIoKSkge1xuICAgICAgICAgICAgdGhpcy5jbG9uZWRJdGVtc0ZvclN0YXJ0aW5nLnB1c2goLi4udGhpcy52YWx1ZS5zbGljZSgtMSAqIHRoaXMuX251bVZpc2libGUpKTtcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkSXRlbXNGb3JGaW5pc2hpbmcucHVzaCguLi50aGlzLnZhbHVlLnNsaWNlKDAsIHRoaXMuX251bVZpc2libGUpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpcnN0SW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ2lyY3VsYXIoKSA/IC0xICogKHRoaXMudG90YWxTaGlmdGVkSXRlbXMgKyB0aGlzLm51bVZpc2libGUpIDogdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyAqIC0xO1xuICAgIH1cblxuICAgIGxhc3RJbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3RJbmRleCgpICsgdGhpcy5udW1WaXNpYmxlIC0gMTtcbiAgICB9XG5cbiAgICB0b3RhbERvdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlPy5sZW5ndGggPyBNYXRoLmNlaWwoKHRoaXMudmFsdWUubGVuZ3RoIC0gdGhpcy5fbnVtVmlzaWJsZSkgLyB0aGlzLl9udW1TY3JvbGwpICsgMSA6IDA7XG4gICAgfVxuXG4gICAgdG90YWxEb3RzQXJyYXkoKSB7XG4gICAgICAgIGNvbnN0IHRvdGFsRG90cyA9IHRoaXMudG90YWxEb3RzKCk7XG4gICAgICAgIHJldHVybiB0b3RhbERvdHMgPD0gMCA/IFtdIDogQXJyYXkodG90YWxEb3RzKS5maWxsKDApO1xuICAgIH1cblxuICAgIGlzVmVydGljYWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnO1xuICAgIH1cblxuICAgIGlzQ2lyY3VsYXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNpcmN1bGFyICYmIHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPj0gdGhpcy5udW1WaXNpYmxlO1xuICAgIH1cblxuICAgIGlzQXV0b3BsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dG9wbGF5SW50ZXJ2YWwgJiYgdGhpcy5hbGxvd0F1dG9wbGF5O1xuICAgIH1cblxuICAgIGlzRm9yd2FyZE5hdkRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0VtcHR5KCkgfHwgKHRoaXMuX3BhZ2UgPj0gdGhpcy50b3RhbERvdHMoKSAtIDEgJiYgIXRoaXMuaXNDaXJjdWxhcigpKTtcbiAgICB9XG5cbiAgICBpc0JhY2t3YXJkTmF2RGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRW1wdHkoKSB8fCAodGhpcy5fcGFnZSA8PSAwICYmICF0aGlzLmlzQ2lyY3VsYXIoKSk7XG4gICAgfVxuXG4gICAgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnZhbHVlIHx8IHRoaXMudmFsdWUubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIG5hdkZvcndhcmQoZSwgaW5kZXg/KSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2lyY3VsYXIoKSB8fCB0aGlzLl9wYWdlIDwgdGhpcy50b3RhbERvdHMoKSAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcCgtMSwgaW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXV0b3BsYXlJbnRlcnZhbCkge1xuICAgICAgICAgICAgdGhpcy5zdG9wQXV0b3BsYXkoKTtcbiAgICAgICAgICAgIHRoaXMuYWxsb3dBdXRvcGxheSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGUgJiYgZS5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuYXZCYWNrd2FyZChlLCBpbmRleD8pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNDaXJjdWxhcigpIHx8IHRoaXMuX3BhZ2UgIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcCgxLCBpbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hdXRvcGxheUludGVydmFsKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BBdXRvcGxheSgpO1xuICAgICAgICAgICAgdGhpcy5hbGxvd0F1dG9wbGF5ID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZSAmJiBlLmNhbmNlbGFibGUpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRG90Q2xpY2soZSwgaW5kZXgpIHtcbiAgICAgICAgbGV0IHBhZ2UgPSB0aGlzLl9wYWdlO1xuXG4gICAgICAgIGlmICh0aGlzLmF1dG9wbGF5SW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG4gICAgICAgICAgICB0aGlzLmFsbG93QXV0b3BsYXkgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCA+IHBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubmF2Rm9yd2FyZChlLCBpbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPCBwYWdlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdkJhY2t3YXJkKGUsIGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0ZXAoZGlyLCBwYWdlKSB7XG4gICAgICAgIGxldCB0b3RhbFNoaWZ0ZWRJdGVtcyA9IHRoaXMudG90YWxTaGlmdGVkSXRlbXM7XG4gICAgICAgIGNvbnN0IGlzQ2lyY3VsYXIgPSB0aGlzLmlzQ2lyY3VsYXIoKTtcblxuICAgICAgICBpZiAocGFnZSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyA9IHRoaXMuX251bVNjcm9sbCAqIHBhZ2UgKiAtMTtcblxuICAgICAgICAgICAgaWYgKGlzQ2lyY3VsYXIpIHtcbiAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyAtPSB0aGlzLl9udW1WaXNpYmxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlzUmVtYWluaW5nSXRlbXNBZGRlZCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgKz0gdGhpcy5fbnVtU2Nyb2xsICogZGlyO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNSZW1haW5pbmdJdGVtc0FkZGVkKSB7XG4gICAgICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgKz0gdGhpcy5yZW1haW5pbmdJdGVtcyAtIHRoaXMuX251bVNjcm9sbCAqIGRpcjtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUmVtYWluaW5nSXRlbXNBZGRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgb3JpZ2luYWxTaGlmdGVkSXRlbXMgPSBpc0NpcmN1bGFyID8gdG90YWxTaGlmdGVkSXRlbXMgKyB0aGlzLl9udW1WaXNpYmxlIDogdG90YWxTaGlmdGVkSXRlbXM7XG4gICAgICAgICAgICBwYWdlID0gTWF0aC5hYnMoTWF0aC5mbG9vcihvcmlnaW5hbFNoaWZ0ZWRJdGVtcyAvIHRoaXMuX251bVNjcm9sbCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQ2lyY3VsYXIgJiYgdGhpcy5wYWdlID09PSB0aGlzLnRvdGFsRG90cygpIC0gMSAmJiBkaXIgPT09IC0xKSB7XG4gICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyA9IC0xICogKHRoaXMudmFsdWUubGVuZ3RoICsgdGhpcy5fbnVtVmlzaWJsZSk7XG4gICAgICAgICAgICBwYWdlID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChpc0NpcmN1bGFyICYmIHRoaXMucGFnZSA9PT0gMCAmJiBkaXIgPT09IDEpIHtcbiAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gMDtcbiAgICAgICAgICAgIHBhZ2UgPSB0aGlzLnRvdGFsRG90cygpIC0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChwYWdlID09PSB0aGlzLnRvdGFsRG90cygpIC0gMSAmJiB0aGlzLnJlbWFpbmluZ0l0ZW1zID4gMCkge1xuICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgKz0gdGhpcy5yZW1haW5pbmdJdGVtcyAqIC0xIC0gdGhpcy5fbnVtU2Nyb2xsICogZGlyO1xuICAgICAgICAgICAgdGhpcy5pc1JlbWFpbmluZ0l0ZW1zQWRkZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbXNDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSB0aGlzLmlzVmVydGljYWwoKSA/IGB0cmFuc2xhdGUzZCgwLCAke3RvdGFsU2hpZnRlZEl0ZW1zICogKDEwMCAvIHRoaXMuX251bVZpc2libGUpfSUsIDApYCA6IGB0cmFuc2xhdGUzZCgke3RvdGFsU2hpZnRlZEl0ZW1zICogKDEwMCAvIHRoaXMuX251bVZpc2libGUpfSUsIDAsIDApYDtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSA1MDBtcyBlYXNlIDBzJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG90YWxTaGlmdGVkSXRlbXMgPSB0b3RhbFNoaWZ0ZWRJdGVtcztcbiAgICAgICAgdGhpcy5fcGFnZSA9IHBhZ2U7XG4gICAgICAgIHRoaXMub25QYWdlLmVtaXQoe1xuICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXJ0QXV0b3BsYXkoKSB7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50b3RhbERvdHMoKSA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdlID09PSB0aGlzLnRvdGFsRG90cygpIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0ZXAoLTEsIDApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RlcCgtMSwgdGhpcy5wYWdlICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCB0aGlzLmF1dG9wbGF5SW50ZXJ2YWwpO1xuICAgIH1cblxuICAgIHN0b3BBdXRvcGxheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRyYW5zaXRpb25FbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zQ29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xuXG4gICAgICAgICAgICBpZiAoKHRoaXMucGFnZSA9PT0gMCB8fCB0aGlzLnBhZ2UgPT09IHRoaXMudG90YWxEb3RzKCkgLSAxKSAmJiB0aGlzLmlzQ2lyY3VsYXIoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSB0aGlzLmlzVmVydGljYWwoKSA/IGB0cmFuc2xhdGUzZCgwLCAke3RoaXMudG90YWxTaGlmdGVkSXRlbXMgKiAoMTAwIC8gdGhpcy5fbnVtVmlzaWJsZSl9JSwgMClgIDogYHRyYW5zbGF0ZTNkKCR7dGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyAqICgxMDAgLyB0aGlzLl9udW1WaXNpYmxlKX0lLCAwLCAwKWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRvdWNoU3RhcnQoZSkge1xuICAgICAgICBsZXQgdG91Y2hvYmogPSBlLmNoYW5nZWRUb3VjaGVzWzBdO1xuXG4gICAgICAgIHRoaXMuc3RhcnRQb3MgPSB7XG4gICAgICAgICAgICB4OiB0b3VjaG9iai5wYWdlWCxcbiAgICAgICAgICAgIHk6IHRvdWNob2JqLnBhZ2VZXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25Ub3VjaE1vdmUoZSkge1xuICAgICAgICBpZiAoZS5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25Ub3VjaEVuZChlKSB7XG4gICAgICAgIGxldCB0b3VjaG9iaiA9IGUuY2hhbmdlZFRvdWNoZXNbMF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNWZXJ0aWNhbCgpKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVBhZ2VPblRvdWNoKGUsIHRvdWNob2JqLnBhZ2VZIC0gdGhpcy5zdGFydFBvcy55KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUGFnZU9uVG91Y2goZSwgdG91Y2hvYmoucGFnZVggLSB0aGlzLnN0YXJ0UG9zLngpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlUGFnZU9uVG91Y2goZSwgZGlmZikge1xuICAgICAgICBpZiAoTWF0aC5hYnMoZGlmZikgPiB0aGlzLnN3aXBlVGhyZXNob2xkKSB7XG4gICAgICAgICAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdkZvcndhcmQoZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2QmFja3dhcmQoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMud2luZG93LCAncmVzaXplJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50TGlzdGVuZXJzKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRMaXN0ZW5lcnMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hdXRvcGxheUludGVydmFsKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BBdXRvcGxheSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNoYXJlZE1vZHVsZSwgUmlwcGxlTW9kdWxlLCBDaGV2cm9uUmlnaHRJY29uLCBDaGV2cm9uTGVmdEljb24sIENoZXZyb25Eb3duSWNvbiwgQ2hldnJvblVwSWNvbl0sXG4gICAgZXhwb3J0czogW0NvbW1vbk1vZHVsZSwgQ2Fyb3VzZWwsIFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbQ2Fyb3VzZWxdXG59KVxuZXhwb3J0IGNsYXNzIENhcm91c2VsTW9kdWxlIHt9XG4iXX0=
819
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFFUixNQUFNLEVBQ04sV0FBVyxFQUtYLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRWxEOzs7R0FHRztBQUNILE1BZ0ZhLFFBQVE7SUFnTkU7SUFBdUI7SUFBcUI7SUFBK0I7SUFBK0M7SUFBaUQ7SUEvTTlMOzs7O09BSUc7SUFDSCxJQUFhLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLEdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLENB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QkFNSSxNQUFNO3NCQUFmLE1BQU07Z0JBRXNCLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUVMLFdBQVc7c0JBQWhDLFlBQVk7dUJBQUMsTUFBTTtnQkFFRSxXQUFXO3NCQUFoQyxZQUFZO3VCQUFDLE1BQU07Z0JBRVksU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhOztBQTJoQmxDLE1BS2EsY0FBYzt1R0FBZCxjQUFjO3dHQUFkLGNBQWMsaUJBOXFCZCxRQUFRLGFBMHFCUCxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGFBQWEsYUFDM0csWUFBWSxFQTNxQmIsUUFBUSxFQTJxQmlCLFlBQVk7d0dBR3JDLGNBQWMsWUFKYixZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFDM0csWUFBWSxFQUFZLFlBQVk7O1NBR3JDLGNBQWM7MkZBQWQsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQztvQkFDdEgsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUM7b0JBQy9DLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE5nWm9uZSxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvb3RlciwgSGVhZGVyLCBQcmltZVRlbXBsYXRlLCBTaGFyZWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBDaGV2cm9uRG93bkljb24gfSBmcm9tICdwcmltZW5nL2ljb25zL2NoZXZyb25kb3duJztcbmltcG9ydCB7IENoZXZyb25MZWZ0SWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvY2hldnJvbmxlZnQnO1xuaW1wb3J0IHsgQ2hldnJvblJpZ2h0SWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvY2hldnJvbnJpZ2h0JztcbmltcG9ydCB7IENoZXZyb25VcEljb24gfSBmcm9tICdwcmltZW5nL2ljb25zL2NoZXZyb251cCc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQgeyBVbmlxdWVDb21wb25lbnRJZCB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgQ2Fyb3VzZWxQYWdlRXZlbnQsIENhcm91c2VsUmVzcG9uc2l2ZU9wdGlvbnMgfSBmcm9tICcuL2Nhcm91c2VsLmludGVyZmFjZSc7XG4vKipcbiAqIENhcm91c2VsIGlzIGEgY29udGVudCBzbGlkZXIgZmVhdHVyaW5nIHZhcmlvdXMgY3VzdG9taXphdGlvbiBvcHRpb25zLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWNhcm91c2VsJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFthdHRyLmlkXT1cImlkXCIgW25nQ2xhc3NdPVwieyAncC1jYXJvdXNlbCBwLWNvbXBvbmVudCc6IHRydWUsICdwLWNhcm91c2VsLXZlcnRpY2FsJzogaXNWZXJ0aWNhbCgpLCAncC1jYXJvdXNlbC1ob3Jpem9udGFsJzogIWlzVmVydGljYWwoKSB9XCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY2Fyb3VzZWwtaGVhZGVyXCIgKm5nSWY9XCJoZWFkZXJGYWNldCB8fCBoZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInAtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJjb250ZW50Q2xhc3NcIiBbbmdDbGFzc109XCIncC1jYXJvdXNlbC1jb250ZW50J1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNhcm91c2VsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cInNob3dOYXZpZ2F0b3JzXCIgW25nQ2xhc3NdPVwieyAncC1jYXJvdXNlbC1wcmV2IHAtbGluayc6IHRydWUsICdwLWRpc2FibGVkJzogaXNCYWNrd2FyZE5hdkRpc2FibGVkKCkgfVwiIFtkaXNhYmxlZF09XCJpc0JhY2t3YXJkTmF2RGlzYWJsZWQoKVwiIChjbGljayk9XCJuYXZCYWNrd2FyZCgkZXZlbnQpXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcHJldmlvdXNJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvbkxlZnRJY29uICpuZ0lmPVwiIWlzVmVydGljYWwoKVwiIFtzdHlsZUNsYXNzXT1cIidjYXJvdXNlbC1wcmV2LWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvblVwSWNvbiAqbmdJZj1cImlzVmVydGljYWwoKVwiIFtzdHlsZUNsYXNzXT1cIidjYXJvdXNlbC1wcmV2LWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwcmV2aW91c0ljb25UZW1wbGF0ZVwiIGNsYXNzPVwicC1jYXJvdXNlbC1wcmV2LWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmV2aW91c0ljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jYXJvdXNlbC1pdGVtcy1jb250ZW50XCIgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGlzVmVydGljYWwoKSA/IHZlcnRpY2FsVmlld1BvcnRIZWlnaHQgOiAnYXV0bycgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAjaXRlbXNDb250YWluZXIgY2xhc3M9XCJwLWNhcm91c2VsLWl0ZW1zLWNvbnRhaW5lclwiICh0cmFuc2l0aW9uZW5kKT1cIm9uVHJhbnNpdGlvbkVuZCgpXCIgKHRvdWNoZW5kKT1cIm9uVG91Y2hFbmQoJGV2ZW50KVwiICh0b3VjaHN0YXJ0KT1cIm9uVG91Y2hTdGFydCgkZXZlbnQpXCIgKHRvdWNobW92ZSk9XCJvblRvdWNoTW92ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjbG9uZWRJdGVtc0ZvclN0YXJ0aW5nOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwLWNhcm91c2VsLWl0ZW0gcC1jYXJvdXNlbC1pdGVtLWNsb25lZCc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncC1jYXJvdXNlbC1pdGVtLWFjdGl2ZSc6IHRvdGFsU2hpZnRlZEl0ZW1zICogLTEgPT09IHZhbHVlLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwLWNhcm91c2VsLWl0ZW0tc3RhcnQnOiAwID09PSBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwLWNhcm91c2VsLWl0ZW0tZW5kJzogY2xvbmVkSXRlbXNGb3JTdGFydGluZy5sZW5ndGggLSAxID09PSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZhbHVlOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtY2Fyb3VzZWwtaXRlbSc6IHRydWUsICdwLWNhcm91c2VsLWl0ZW0tYWN0aXZlJzogZmlyc3RJbmRleCgpIDw9IGluZGV4ICYmIGxhc3RJbmRleCgpID49IGluZGV4LCAncC1jYXJvdXNlbC1pdGVtLXN0YXJ0JzogZmlyc3RJbmRleCgpID09PSBpbmRleCwgJ3AtY2Fyb3VzZWwtaXRlbS1lbmQnOiBsYXN0SW5kZXgoKSA9PT0gaW5kZXggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjbG9uZWRJdGVtc0ZvckZpbmlzaGluZzsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncC1jYXJvdXNlbC1pdGVtIHAtY2Fyb3VzZWwtaXRlbS1jbG9uZWQnOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3AtY2Fyb3VzZWwtaXRlbS1hY3RpdmUnOiB0b3RhbFNoaWZ0ZWRJdGVtcyAqIC0xID09PSBudW1WaXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3AtY2Fyb3VzZWwtaXRlbS1zdGFydCc6IDAgPT09IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3AtY2Fyb3VzZWwtaXRlbS1lbmQnOiBjbG9uZWRJdGVtc0ZvckZpbmlzaGluZy5sZW5ndGggLSAxID09PSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJzaG93TmF2aWdhdG9yc1wiIFtuZ0NsYXNzXT1cInsgJ3AtY2Fyb3VzZWwtbmV4dCBwLWxpbmsnOiB0cnVlLCAncC1kaXNhYmxlZCc6IGlzRm9yd2FyZE5hdkRpc2FibGVkKCkgfVwiIFtkaXNhYmxlZF09XCJpc0ZvcndhcmROYXZEaXNhYmxlZCgpXCIgKGNsaWNrKT1cIm5hdkZvcndhcmQoJGV2ZW50KVwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5leHRJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0SWNvbiAqbmdJZj1cIiFpc1ZlcnRpY2FsKClcIiBbc3R5bGVDbGFzc109XCInY2Fyb3VzZWwtcHJldi1pY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZXZyb25Eb3duSWNvbiAqbmdJZj1cImlzVmVydGljYWwoKVwiIFtzdHlsZUNsYXNzXT1cIidjYXJvdXNlbC1wcmV2LWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJuZXh0SWNvblRlbXBsYXRlXCIgY2xhc3M9XCJwLWNhcm91c2VsLXByZXYtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm5leHRJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8dWwgW25nQ2xhc3NdPVwiJ3AtY2Fyb3VzZWwtaW5kaWNhdG9ycyBwLXJlc2V0J1wiIFtjbGFzc109XCJpbmRpY2F0b3JzQ29udGVudENsYXNzXCIgW25nU3R5bGVdPVwiaW5kaWNhdG9yc0NvbnRlbnRTdHlsZVwiICpuZ0lmPVwic2hvd0luZGljYXRvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCB0b3RhbERvdCBvZiB0b3RhbERvdHNBcnJheSgpOyBsZXQgaSA9IGluZGV4XCIgW25nQ2xhc3NdPVwieyAncC1jYXJvdXNlbC1pbmRpY2F0b3InOiB0cnVlLCAncC1oaWdobGlnaHQnOiBfcGFnZSA9PT0gaSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCIncC1saW5rJ1wiIChjbGljayk9XCJvbkRvdENsaWNrKCRldmVudCwgaSlcIiBbY2xhc3NdPVwiaW5kaWNhdG9yU3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cImluZGljYXRvclN0eWxlXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY2Fyb3VzZWwtZm9vdGVyXCIgKm5nSWY9XCJmb290ZXJGYWNldCB8fCBmb290ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInAtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9jYXJvdXNlbC5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQ2Fyb3VzZWwgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICAvKipcbiAgICAgKiBJbmRleCBvZiB0aGUgZmlyc3QgaXRlbS5cbiAgICAgKiBAZGVmYXVsdFZhbHVlIDBcbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgcGFnZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnZTtcbiAgICB9XG4gICAgc2V0IHBhZ2UodmFsOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNDcmVhdGVkICYmIHZhbCAhPT0gdGhpcy5fcGFnZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b3BsYXlJbnRlcnZhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGxvd0F1dG9wbGF5ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh2YWwgPiB0aGlzLl9wYWdlICYmIHZhbCA8PSB0aGlzLnRvdGFsRG90cygpIC0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCgtMSwgdmFsKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsIDwgdGhpcy5fcGFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCgxLCB2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcGFnZSA9IHZhbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlLlxuICAgICAqIEBkZWZhdWx0VmFsdWUgMVxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBudW1WaXNpYmxlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1WaXNpYmxlO1xuICAgIH1cbiAgICBzZXQgbnVtVmlzaWJsZSh2YWw6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9udW1WaXNpYmxlID0gdmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBOdW1iZXIgb2YgaXRlbXMgdG8gc2Nyb2xsLlxuICAgICAqIEBkZWZhdWx0VmFsdWUgMVxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCBudW1TY3JvbGwoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bVZpc2libGU7XG4gICAgfVxuICAgIHNldCBudW1TY3JvbGwodmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbnVtU2Nyb2xsID0gdmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBvcHRpb25zIGZvciByZXNwb25zaXZlIGRlc2lnbi5cbiAgICAgKiBAc2VlIHtDYXJvdXNlbFJlc3BvbnNpdmVPcHRpb25zfVxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHJlc3BvbnNpdmVPcHRpb25zOiBDYXJvdXNlbFJlc3BvbnNpdmVPcHRpb25zW10gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBsYXlvdXQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcbiAgICAvKipcbiAgICAgKiBIZWlnaHQgb2YgdGhlIHZpZXdwb3J0IGluIHZlcnRpY2FsIGxheW91dC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB2ZXJ0aWNhbFZpZXdQb3J0SGVpZ2h0OiBzdHJpbmcgPSAnMzAwcHgnO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIG1haW4gY29udGVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjb250ZW50Q2xhc3M6IHN0cmluZyA9ICcnO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBpbmRpY2F0b3IgaXRlbXMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaW5kaWNhdG9yc0NvbnRlbnRDbGFzczogc3RyaW5nID0gJyc7XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBpbmRpY2F0b3IgaXRlbXMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaW5kaWNhdG9yc0NvbnRlbnRTdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgaW5kaWNhdG9ycy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbmRpY2F0b3JTdHlsZUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgICAvKipcbiAgICAgKiBTdHlsZSBvZiB0aGUgaW5kaWNhdG9ycy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbmRpY2F0b3JTdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBvYmplY3RzIHRvIGRpc3BsYXkuXG4gICAgICogQGRlZmF1bHRWYWx1ZSBudWxsXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IHZhbHVlKCk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlIGFzIGFueVtdO1xuICAgIH1cbiAgICBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGlmIHNjcm9sbGluZyB3b3VsZCBiZSBpbmZpbml0ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjaXJjdWxhcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZGlzcGxheSBpbmRpY2F0b3IgY29udGFpbmVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dJbmRpY2F0b3JzOiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgbmF2aWdhdGlvbiBidXR0b25zIGluIGNvbnRhaW5lci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93TmF2aWdhdG9yczogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogVGltZSBpbiBtaWxsaXNlY29uZHMgdG8gc2Nyb2xsIGl0ZW1zIGF1dG9tYXRpY2FsbHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXV0b3BsYXlJbnRlcnZhbDogbnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgdmlld3BvcnQgY29udGFpbmVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2UgYWZ0ZXIgc2Nyb2xsLlxuICAgICAqIEBwYXJhbSB7Q2Fyb3VzZWxQYWdlRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHBhZ2UgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uUGFnZTogRXZlbnRFbWl0dGVyPENhcm91c2VsUGFnZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2Fyb3VzZWxQYWdlRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdpdGVtc0NvbnRhaW5lcicpIGl0ZW1zQ29udGFpbmVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZChIZWFkZXIpIGhlYWRlckZhY2V0OiBRdWVyeUxpc3Q8SGVhZGVyPiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGQoRm9vdGVyKSBmb290ZXJGYWNldDogUXVlcnlMaXN0PEZvb3Rlcj4gfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkO1xuXG4gICAgX251bVZpc2libGU6IG51bWJlciA9IDE7XG5cbiAgICBfbnVtU2Nyb2xsOiBudW1iZXIgPSAxO1xuXG4gICAgX29sZE51bVNjcm9sbDogbnVtYmVyID0gMDtcblxuICAgIHByZXZTdGF0ZTogYW55ID0ge1xuICAgICAgICBudW1TY3JvbGw6IDAsXG4gICAgICAgIG51bVZpc2libGU6IDAsXG4gICAgICAgIHZhbHVlOiBbXVxuICAgIH07XG5cbiAgICBkZWZhdWx0TnVtU2Nyb2xsOiBudW1iZXIgPSAxO1xuXG4gICAgZGVmYXVsdE51bVZpc2libGU6IG51bWJlciA9IDE7XG5cbiAgICBfcGFnZTogbnVtYmVyID0gMDtcblxuICAgIF92YWx1ZTogYW55W10gfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gICAgY2Fyb3VzZWxTdHlsZTogYW55O1xuXG4gICAgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIHRvdGFsU2hpZnRlZEl0ZW1zO1xuXG4gICAgaXNSZW1haW5pbmdJdGVtc0FkZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBhbmltYXRpb25UaW1lb3V0OiBhbnk7XG5cbiAgICB0cmFuc2xhdGVUaW1lb3V0OiBhbnk7XG5cbiAgICByZW1haW5pbmdJdGVtczogbnVtYmVyID0gMDtcblxuICAgIF9pdGVtczogYW55W10gfCB1bmRlZmluZWQ7XG5cbiAgICBzdGFydFBvczogYW55O1xuXG4gICAgZG9jdW1lbnRSZXNpemVMaXN0ZW5lcjogYW55O1xuXG4gICAgY2xvbmVkSXRlbXNGb3JTdGFydGluZzogYW55W10gfCB1bmRlZmluZWQ7XG5cbiAgICBjbG9uZWRJdGVtc0ZvckZpbmlzaGluZzogYW55W10gfCB1bmRlZmluZWQ7XG5cbiAgICBhbGxvd0F1dG9wbGF5OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgaW50ZXJ2YWw6IGFueTtcblxuICAgIGlzQ3JlYXRlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIHN3aXBlVGhyZXNob2xkOiBudW1iZXIgPSAyMDtcblxuICAgIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBwcmV2aW91c0ljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIG5leHRJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICB3aW5kb3c6IFdpbmRvdztcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHpvbmU6IE5nWm9uZSwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCwgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkpIHtcbiAgICAgICAgdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyA9IHRoaXMucGFnZSAqIHRoaXMubnVtU2Nyb2xsICogLTE7XG4gICAgICAgIHRoaXMud2luZG93ID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldyBhcyBXaW5kb3c7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2UudmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNpcmN1bGFyICYmIHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDbG9uZUl0ZW1zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0NyZWF0ZWQpIHtcbiAgICAgICAgICAgIGlmIChzaW1wbGVDaGFuZ2UubnVtVmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNpdmVPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdE51bVZpc2libGUgPSB0aGlzLm51bVZpc2libGU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDaXJjdWxhcigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Q2xvbmVJdGVtcygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlU3R5bGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzaW1wbGVDaGFuZ2UubnVtU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0TnVtU2Nyb2xsID0gdGhpcy5udW1TY3JvbGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLmlkID0gVW5pcXVlQ29tcG9uZW50SWQoKTtcbiAgICAgICAgdGhpcy5hbGxvd0F1dG9wbGF5ID0gISF0aGlzLmF1dG9wbGF5SW50ZXJ2YWw7XG5cbiAgICAgICAgaWYgKHRoaXMuY2lyY3VsYXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q2xvbmVJdGVtcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdE51bVNjcm9sbCA9IHRoaXMuX251bVNjcm9sbDtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdE51bVZpc2libGUgPSB0aGlzLl9udW1WaXNpYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jcmVhdGVTdHlsZSgpO1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uKCk7XG5cbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50TGlzdGVuZXJzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRlbXBsYXRlcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAncHJldmlvdXNpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c0ljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbmV4dGljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICAgICAgY29uc3QgaXNDaXJjdWxhciA9IHRoaXMuaXNDaXJjdWxhcigpO1xuICAgICAgICBsZXQgdG90YWxTaGlmdGVkSXRlbXMgPSB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMuaXRlbXNDb250YWluZXIgJiYgKHRoaXMucHJldlN0YXRlLm51bVNjcm9sbCAhPT0gdGhpcy5fbnVtU2Nyb2xsIHx8IHRoaXMucHJldlN0YXRlLm51bVZpc2libGUgIT09IHRoaXMuX251bVZpc2libGUgfHwgdGhpcy5wcmV2U3RhdGUudmFsdWUubGVuZ3RoICE9PSB0aGlzLnZhbHVlLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9wbGF5SW50ZXJ2YWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BBdXRvcGxheSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlbWFpbmluZ0l0ZW1zID0gKHRoaXMudmFsdWUubGVuZ3RoIC0gdGhpcy5fbnVtVmlzaWJsZSkgJSB0aGlzLl9udW1TY3JvbGw7XG5cbiAgICAgICAgICAgIGxldCBwYWdlID0gdGhpcy5fcGFnZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnRvdGFsRG90cygpICE9PSAwICYmIHBhZ2UgPj0gdGhpcy50b3RhbERvdHMoKSkge1xuICAgICAgICAgICAgICAgIHBhZ2UgPSB0aGlzLnRvdGFsRG90cygpIC0gMTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wYWdlID0gcGFnZTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gcGFnZSAqIHRoaXMuX251bVNjcm9sbCAqIC0xO1xuICAgICAgICAgICAgaWYgKGlzQ2lyY3VsYXIpIHtcbiAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyAtPSB0aGlzLl9udW1WaXNpYmxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFnZSA9PT0gdGhpcy50b3RhbERvdHMoKSAtIDEgJiYgdGhpcy5yZW1haW5pbmdJdGVtcyA+IDApIHtcbiAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyArPSAtMSAqIHRoaXMucmVtYWluaW5nSXRlbXMgKyB0aGlzLl9udW1TY3JvbGw7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1JlbWFpbmluZ0l0ZW1zQWRkZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUmVtYWluaW5nSXRlbXNBZGRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG90YWxTaGlmdGVkSXRlbXMgIT09IHRoaXMudG90YWxTaGlmdGVkSXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zID0gdG90YWxTaGlmdGVkSXRlbXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX29sZE51bVNjcm9sbCA9IHRoaXMuX251bVNjcm9sbDtcbiAgICAgICAgICAgIHRoaXMucHJldlN0YXRlLm51bVNjcm9sbCA9IHRoaXMuX251bVNjcm9sbDtcbiAgICAgICAgICAgIHRoaXMucHJldlN0YXRlLm51bVZpc2libGUgPSB0aGlzLl9udW1WaXNpYmxlO1xuICAgICAgICAgICAgdGhpcy5wcmV2U3RhdGUudmFsdWUgPSBbLi4uKHRoaXMuX3ZhbHVlIGFzIGFueVtdKV07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRvdGFsRG90cygpID4gMCAmJiB0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gdGhpcy5pc1ZlcnRpY2FsKCkgPyBgdHJhbnNsYXRlM2QoMCwgJHt0b3RhbFNoaWZ0ZWRJdGVtcyAqICgxMDAgLyB0aGlzLl9udW1WaXNpYmxlKX0lLCAwKWAgOiBgdHJhbnNsYXRlM2QoJHt0b3RhbFNoaWZ0ZWRJdGVtcyAqICgxMDAgLyB0aGlzLl9udW1WaXNpYmxlKX0lLCAwLCAwKWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaXNDcmVhdGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b3BsYXlJbnRlcnZhbCAmJiB0aGlzLmlzQXV0b3BsYXkoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRBdXRvcGxheSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQ2lyY3VsYXIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2UgPT09IDApIHtcbiAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyA9IC0xICogdGhpcy5fbnVtVmlzaWJsZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG90YWxTaGlmdGVkSXRlbXMgPT09IDApIHtcbiAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyA9IC0xICogdGhpcy52YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVtYWluaW5nSXRlbXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZW1haW5pbmdJdGVtc0FkZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0b3RhbFNoaWZ0ZWRJdGVtcyAhPT0gdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcykge1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxTaGlmdGVkSXRlbXMgPSB0b3RhbFNoaWZ0ZWRJdGVtcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZVN0eWxlKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2Fyb3VzZWxTdHlsZSkge1xuICAgICAgICAgICAgdGhpcy5jYXJvdXNlbFN0eWxlID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgdGhpcy5jYXJvdXNlbFN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmhlYWQsIHRoaXMuY2Fyb3VzZWxTdHlsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaW5uZXJIVE1MID0gYFxuICAgICAgICAgICAgIyR7dGhpcy5pZH0gLnAtY2Fyb3VzZWwtaXRlbSB7XG5cdFx0XHRcdGZsZXg6IDEgMCAkezEwMCAvIHRoaXMubnVtVmlzaWJsZX0lXG5cdFx0XHR9XG4gICAgICAgIGA7XG5cbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMuc29ydCgoZGF0YTEsIGRhdGEyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUxID0gZGF0YTEuYnJlYWtwb2ludDtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZTIgPSBkYXRhMi5icmVha3BvaW50O1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiAhPSBudWxsKSByZXN1bHQgPSAtMTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZTEgIT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbCkgcmVzdWx0ID0gMTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbCkgcmVzdWx0ID0gMDtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUxID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUyID09PSAnc3RyaW5nJykgcmVzdWx0ID0gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyLCB1bmRlZmluZWQsIHsgbnVtZXJpYzogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBlbHNlIHJlc3VsdCA9IHZhbHVlMSA8IHZhbHVlMiA/IC0xIDogdmFsdWUxID4gdmFsdWUyID8gMSA6IDA7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gLTEgKiByZXN1bHQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlc3BvbnNpdmVPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMucmVzcG9uc2l2ZU9wdGlvbnNbaV07XG5cbiAgICAgICAgICAgICAgICBpbm5lckhUTUwgKz0gYFxuICAgICAgICAgICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAke3Jlcy5icmVha3BvaW50fSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgIyR7dGhpcy5pZH0gLnAtY2Fyb3VzZWwtaXRlbSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleDogMSAwICR7MTAwIC8gcmVzLm51bVZpc2libGV9JVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2Fyb3VzZWxTdHlsZS5pbm5lckhUTUwgPSBpbm5lckhUTUw7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlUG9zaXRpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpdmVPcHRpb25zKSB7XG4gICAgICAgICAgICBsZXQgbWF0Y2hlZFJlc3BvbnNpdmVEYXRhID0ge1xuICAgICAgICAgICAgICAgIG51bVZpc2libGU6IHRoaXMuZGVmYXVsdE51bVZpc2libGUsXG4gICAgICAgICAgICAgICAgbnVtU2Nyb2xsOiB0aGlzLmRlZmF1bHROdW1TY3JvbGxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGxldCB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZXNwb25zaXZlT3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzID0gdGhpcy5yZXNwb25zaXZlT3B0aW9uc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQocmVzLmJyZWFrcG9pbnQsIDEwKSA+PSB3aW5kb3dXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZFJlc3BvbnNpdmVEYXRhID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5fbnVtU2Nyb2xsICE9PSBtYXRjaGVkUmVzcG9uc2l2ZURhdGEubnVtU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhZ2UgPSB0aGlzLl9wYWdlO1xuICAgICAgICAgICAgICAgIHBhZ2UgPSBNYXRoLmZsb29yKChwYWdlICogdGhpcy5fbnVtU2Nyb2xsKSAvIG1hdGNoZWRSZXNwb25zaXZlRGF0YS5udW1TY3JvbGwpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHRvdGFsU2hpZnRlZEl0ZW1zID0gbWF0Y2hlZFJlc3BvbnNpdmVEYXRhLm51bVNjcm9sbCAqIHRoaXMucGFnZSAqIC0xO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDaXJjdWxhcigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zIC09IG1hdGNoZWRSZXNwb25zaXZlRGF0YS5udW1WaXNpYmxlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudG90YWxTaGlmdGVkSXRlbXMgPSB0b3RhbFNoaWZ0ZWRJdGVtcztcbiAgICAgICAgICAgICAgICB0aGlzLl9udW1TY3JvbGwgPSBtYXRjaGVkUmVzcG9uc2l2ZURhdGEubnVtU2Nyb2xsO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFnZSA9IHBhZ2U7XG4gICAgICAgICAgICAgICAgdGhpcy5vblBhZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5fbnVtVmlzaWJsZSAhPT0gbWF0Y2hlZFJlc3BvbnNpdmVEYXRhLm51bVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9udW1WaXNpYmxlID0gbWF0Y2hlZFJlc3BvbnNpdmVEYXRhLm51bVZpc2libGU7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDbG9uZUl0ZW1zKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRDbG9uZUl0ZW1zKCkge1xuICAgICAgICB0aGlzLmNsb25lZEl0ZW1zRm9yU3RhcnRpbmcgPSBbXTtcbiAgICAgICAgdGhpcy5jbG9uZWRJdGVtc0ZvckZpbmlzaGluZyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5pc0NpcmN1bGFyKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkSXRlbXNGb3JTdGFydGluZy5wdXNoKC4uLnRoaXMudmFsdWUuc2xpY2UoLTEgKiB0aGlzLl9udW1WaXNpYmxlKSk7XG4gICAgICAgICAgICB0aGlzLmNsb25lZEl0ZW1zRm9yRmluaXNoaW5nLnB1c2goLi4udGhpcy52YWx1ZS5zbGljZSgwLCB0aGlzLl9udW1WaXNpYmxlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaXJzdEluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0NpcmN1bGFyKCkgPyAtMSAqICh0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zICsgdGhpcy5udW1WaXNpYmxlKSA6IHRoaXMudG90YWxTaGlmdGVkSXRlbXMgKiAtMTtcbiAgICB9XG5cbiAgICBsYXN0SW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0SW5kZXgoKSArIHRoaXMubnVtVmlzaWJsZSAtIDE7XG4gICAgfVxuXG4gICAgdG90YWxEb3RzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZT8ubGVuZ3RoID8gTWF0aC5jZWlsKCh0aGlzLnZhbHVlLmxlbmd0aCAtIHRoaXMuX251bVZpc2libGUpIC8gdGhpcy5fbnVtU2Nyb2xsKSArIDEgOiAwO1xuICAgIH1cblxuICAgIHRvdGFsRG90c0FycmF5KCkge1xuICAgICAgICBjb25zdCB0b3RhbERvdHMgPSB0aGlzLnRvdGFsRG90cygpO1xuICAgICAgICByZXR1cm4gdG90YWxEb3RzIDw9IDAgPyBbXSA6IEFycmF5KHRvdGFsRG90cykuZmlsbCgwKTtcbiAgICB9XG5cbiAgICBpc1ZlcnRpY2FsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJztcbiAgICB9XG5cbiAgICBpc0NpcmN1bGFyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaXJjdWxhciAmJiB0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID49IHRoaXMubnVtVmlzaWJsZTtcbiAgICB9XG5cbiAgICBpc0F1dG9wbGF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hdXRvcGxheUludGVydmFsICYmIHRoaXMuYWxsb3dBdXRvcGxheTtcbiAgICB9XG5cbiAgICBpc0ZvcndhcmROYXZEaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNFbXB0eSgpIHx8ICh0aGlzLl9wYWdlID49IHRoaXMudG90YWxEb3RzKCkgLSAxICYmICF0aGlzLmlzQ2lyY3VsYXIoKSk7XG4gICAgfVxuXG4gICAgaXNCYWNrd2FyZE5hdkRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0VtcHR5KCkgfHwgKHRoaXMuX3BhZ2UgPD0gMCAmJiAhdGhpcy5pc0NpcmN1bGFyKCkpO1xuICAgIH1cblxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy52YWx1ZSB8fCB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICBuYXZGb3J3YXJkKGU6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LCBpbmRleD86IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5pc0NpcmN1bGFyKCkgfHwgdGhpcy5fcGFnZSA8IHRoaXMudG90YWxEb3RzKCkgLSAxKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXAoLTEsIGluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmF1dG9wbGF5SW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG4gICAgICAgICAgICB0aGlzLmFsbG93QXV0b3BsYXkgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlICYmIGUuY2FuY2VsYWJsZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmF2QmFja3dhcmQoZTogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQsIGluZGV4PzogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2lyY3VsYXIoKSB8fCB0aGlzLl9wYWdlICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXAoMSwgaW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXV0b3BsYXlJbnRlcnZhbCkge1xuICAgICAgICAgICAgdGhpcy5zdG9wQXV0b3BsYXkoKTtcbiAgICAgICAgICAgIHRoaXMuYWxsb3dBdXRvcGxheSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGUgJiYgZS5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRvdENsaWNrKGU6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHBhZ2UgPSB0aGlzLl9wYWdlO1xuXG4gICAgICAgIGlmICh0aGlzLmF1dG9wbGF5SW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG4gICAgICAgICAgICB0aGlzLmFsbG93QXV0b3BsYXkgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCA+IHBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubmF2Rm9yd2FyZChlLCBpbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPCBwYWdlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdkJhY2t3YXJkKGUsIGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0ZXAoZGlyOiBudW1iZXIsIHBhZ2U/OiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHRvdGFsU2hpZnRlZEl0ZW1zID0gdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcztcbiAgICAgICAgY29uc3QgaXNDaXJjdWxhciA9IHRoaXMuaXNDaXJjdWxhcigpO1xuXG4gICAgICAgIGlmIChwYWdlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gdGhpcy5fbnVtU2Nyb2xsICogcGFnZSAqIC0xO1xuXG4gICAgICAgICAgICBpZiAoaXNDaXJjdWxhcikge1xuICAgICAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zIC09IHRoaXMuX251bVZpc2libGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaXNSZW1haW5pbmdJdGVtc0FkZGVkID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyArPSB0aGlzLl9udW1TY3JvbGwgKiBkaXI7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1JlbWFpbmluZ0l0ZW1zQWRkZWQpIHtcbiAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyArPSB0aGlzLnJlbWFpbmluZ0l0ZW1zIC0gdGhpcy5fbnVtU2Nyb2xsICogZGlyO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNSZW1haW5pbmdJdGVtc0FkZGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBvcmlnaW5hbFNoaWZ0ZWRJdGVtcyA9IGlzQ2lyY3VsYXIgPyB0b3RhbFNoaWZ0ZWRJdGVtcyArIHRoaXMuX251bVZpc2libGUgOiB0b3RhbFNoaWZ0ZWRJdGVtcztcbiAgICAgICAgICAgIHBhZ2UgPSBNYXRoLmFicyhNYXRoLmZsb29yKG9yaWdpbmFsU2hpZnRlZEl0ZW1zIC8gdGhpcy5fbnVtU2Nyb2xsKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNDaXJjdWxhciAmJiB0aGlzLnBhZ2UgPT09IHRoaXMudG90YWxEb3RzKCkgLSAxICYmIGRpciA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gLTEgKiAodGhpcy52YWx1ZS5sZW5ndGggKyB0aGlzLl9udW1WaXNpYmxlKTtcbiAgICAgICAgICAgIHBhZ2UgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQ2lyY3VsYXIgJiYgdGhpcy5wYWdlID09PSAwICYmIGRpciA9PT0gMSkge1xuICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgPSAwO1xuICAgICAgICAgICAgcGFnZSA9IHRoaXMudG90YWxEb3RzKCkgLSAxO1xuICAgICAgICB9IGVsc2UgaWYgKHBhZ2UgPT09IHRoaXMudG90YWxEb3RzKCkgLSAxICYmIHRoaXMucmVtYWluaW5nSXRlbXMgPiAwKSB7XG4gICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyArPSB0aGlzLnJlbWFpbmluZ0l0ZW1zICogLTEgLSB0aGlzLl9udW1TY3JvbGwgKiBkaXI7XG4gICAgICAgICAgICB0aGlzLmlzUmVtYWluaW5nSXRlbXNBZGRlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pdGVtc0NvbnRhaW5lcikge1xuICAgICAgICAgICAgdGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IHRoaXMuaXNWZXJ0aWNhbCgpID8gYHRyYW5zbGF0ZTNkKDAsICR7dG90YWxTaGlmdGVkSXRlbXMgKiAoMTAwIC8gdGhpcy5fbnVtVmlzaWJsZSl9JSwgMClgIDogYHRyYW5zbGF0ZTNkKCR7dG90YWxTaGlmdGVkSXRlbXMgKiAoMTAwIC8gdGhpcy5fbnVtVmlzaWJsZSl9JSwgMCwgMClgO1xuICAgICAgICAgICAgdGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDUwMG1zIGVhc2UgMHMnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyA9IHRvdGFsU2hpZnRlZEl0ZW1zO1xuICAgICAgICB0aGlzLl9wYWdlID0gcGFnZTtcbiAgICAgICAgdGhpcy5vblBhZ2UuZW1pdCh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhcnRBdXRvcGxheSgpIHtcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRvdGFsRG90cygpID4gMCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZ2UgPT09IHRoaXMudG90YWxEb3RzKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RlcCgtMSwgMCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGVwKC0xLCB0aGlzLnBhZ2UgKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMuYXV0b3BsYXlJbnRlcnZhbCk7XG4gICAgfVxuXG4gICAgc3RvcEF1dG9wbGF5KCkge1xuICAgICAgICBpZiAodGhpcy5pbnRlcnZhbCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVHJhbnNpdGlvbkVuZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXRlbXNDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XG5cbiAgICAgICAgICAgIGlmICgodGhpcy5wYWdlID09PSAwIHx8IHRoaXMucGFnZSA9PT0gdGhpcy50b3RhbERvdHMoKSAtIDEpICYmIHRoaXMuaXNDaXJjdWxhcigpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IHRoaXMuaXNWZXJ0aWNhbCgpID8gYHRyYW5zbGF0ZTNkKDAsICR7dGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyAqICgxMDAgLyB0aGlzLl9udW1WaXNpYmxlKX0lLCAwKWAgOiBgdHJhbnNsYXRlM2QoJHt0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zICogKDEwMCAvIHRoaXMuX251bVZpc2libGUpfSUsIDAsIDApYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVG91Y2hTdGFydChlOiBUb3VjaEV2ZW50KSB7XG4gICAgICAgIGxldCB0b3VjaG9iaiA9IGUuY2hhbmdlZFRvdWNoZXNbMF07XG5cbiAgICAgICAgdGhpcy5zdGFydFBvcyA9IHtcbiAgICAgICAgICAgIHg6IHRvdWNob2JqLnBhZ2VYLFxuICAgICAgICAgICAgeTogdG91Y2hvYmoucGFnZVlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvblRvdWNoTW92ZShlOiBUb3VjaEV2ZW50IHwgTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoZS5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25Ub3VjaEVuZChlOiBUb3VjaEV2ZW50KSB7XG4gICAgICAgIGxldCB0b3VjaG9iaiA9IGUuY2hhbmdlZFRvdWNoZXNbMF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNWZXJ0aWNhbCgpKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVBhZ2VPblRvdWNoKGUsIHRvdWNob2JqLnBhZ2VZIC0gdGhpcy5zdGFydFBvcy55KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUGFnZU9uVG91Y2goZSwgdG91Y2hvYmoucGFnZVggLSB0aGlzLnN0YXJ0UG9zLngpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlUGFnZU9uVG91Y2goZTogVG91Y2hFdmVudCB8IE1vdXNlRXZlbnQsIGRpZmY6IG51bWJlcikge1xuICAgICAgICBpZiAoTWF0aC5hYnMoZGlmZikgPiB0aGlzLnN3aXBlVGhyZXNob2xkKSB7XG4gICAgICAgICAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdkZvcndhcmQoZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2QmFja3dhcmQoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMud2luZG93LCAncmVzaXplJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50TGlzdGVuZXJzKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRMaXN0ZW5lcnMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hdXRvcGxheUludGVydmFsKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BBdXRvcGxheSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNoYXJlZE1vZHVsZSwgUmlwcGxlTW9kdWxlLCBDaGV2cm9uUmlnaHRJY29uLCBDaGV2cm9uTGVmdEljb24sIENoZXZyb25Eb3duSWNvbiwgQ2hldnJvblVwSWNvbl0sXG4gICAgZXhwb3J0czogW0NvbW1vbk1vZHVsZSwgQ2Fyb3VzZWwsIFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbQ2Fyb3VzZWxdXG59KVxuZXhwb3J0IGNsYXNzIENhcm91c2VsTW9kdWxlIHt9XG4iXX0=
@@ -1,2 +1,3 @@
1
1
  export * from './carousel';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jYXJvdXNlbC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jYXJvdXNlbCc7XG4iXX0=
2
+ export * from './carousel.interface';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jYXJvdXNlbC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Nhcm91c2VsJztcbmV4cG9ydCAqIGZyb20gJy4vY2Fyb3VzZWwuaW50ZXJmYWNlJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZXNlbGVjdC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2FzY2FkZXNlbGVjdC9jYXNjYWRlc2VsZWN0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdwcmltZW5nL292ZXJsYXknO1xuaW1wb3J0IHsgQ2FzY2FkZVNlbGVjdCB9IGZyb20gJy4vY2FzY2FkZXNlbGVjdCc7XG5cbi8qKlxuICogQ3VzdG9tIHBhbmVsIHNob3cgZXZlbnQuXG4gKiBAc2VlIHtAbGluayBDYXNjYWRlU2VsZWN0Lm9uU2hvd31cbiAqIEBncm91cCBFdmVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXNjYWRlU2VsZWN0U2hvd0V2ZW50IHtcbiAgICAvKipcbiAgICAgKiBPdmVybGF5IGVsZW1lbnQuXG4gICAgICovXG4gICAgb3ZlcmxheT86IE92ZXJsYXkgfCBFbGVtZW50UmVmIHwgVGVtcGxhdGVSZWY8YW55PiB8IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUYXJnZXQgZWxlbWVudC5cbiAgICAgKi9cbiAgICB0YXJnZXQ/OiBPdmVybGF5IHwgRWxlbWVudFJlZiB8IFRlbXBsYXRlUmVmPGFueT4gfCBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogT3ZlcmxheSBtb2RlLlxuICAgICAqL1xuICAgIG92ZXJsYXlNb2RlPzogJ21vZGFsJyB8ICdvdmVybGF5JyB8IHN0cmluZztcbn1cbi8qKlxuICogQ3VzdG9tIHBhbmVsIGhpZGUgZXZlbnQuXG4gKiBAc2VlIHtAbGluayBDYXNjYWRlU2VsZWN0Lm9uSGlkZX1cbiAqIEBleHRlbmRzIHtDYXNjYWRlU2VsZWN0U2hvd0V2ZW50fVxuICogQGdyb3VwIEV2ZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENhc2NhZGVTZWxlY3RIaWRlRXZlbnQgZXh0ZW5kcyBDYXNjYWRlU2VsZWN0U2hvd0V2ZW50IHt9XG4vKipcbiAqIEN1c3RvbSBwYW5lbCBzaG93IGV2ZW50IGVtaXRzIHJpZ2h0IGJlZm9yZSB0aGUgcGFuZWwgaXMgc2hvd24uXG4gKiBAc2VlIHtAbGluayBDYXNjYWRlU2VsZWN0Lm9uQmVmb3JlU2hvd31cbiAqIEBleHRlbmRzIHtDYXNjYWRlU2VsZWN0U2hvd0V2ZW50fVxuICogQGdyb3VwIEV2ZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENhc2NhZGVTZWxlY3RCZWZvcmVTaG93RXZlbnQgZXh0ZW5kcyBDYXNjYWRlU2VsZWN0U2hvd0V2ZW50IHt9XG4vKipcbiAqIEN1c3RvbSBwYW5lbCBoaWRlIGV2ZW50IGVtaXRzIHJpZ2h0IGJlZm9yZSB0aGUgcGFuZWwgaXMgaGlkZGVuLlxuICogQHNlZSB7QGxpbmsgQ2FzY2FkZVNlbGVjdC5vbkJlZm9yZUhpZGV9XG4gKiBAZXh0ZW5kcyB7Q2FzY2FkZVNlbGVjdFNob3dFdmVudH1cbiAqIEBncm91cCBFdmVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXNjYWRlU2VsZWN0QmVmb3JlSGlkZUV2ZW50IGV4dGVuZHMgQ2FzY2FkZVNlbGVjdFNob3dFdmVudCB7fVxuLyoqXG4gKiBEZWZpbmVzIHZhbGlkIHRlbXBsYXRlcyBpbiBDYXNjYWRlU2VsZWN0LlxuICogQGdyb3VwIFRlbXBsYXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENhc2NhZGVTZWxlY3RUZW1wbGF0ZXMge1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSB2YWx1ZSB0ZW1wbGF0ZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dCAtIHZhbHVlIGRhdGEuXG4gICAgICovXG4gICAgdmFsdWUoY29udGV4dDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogVmFsdWUuXG4gICAgICAgICAqL1xuICAgICAgICAkaW1wbGljaXQ6IGFueTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBsYWNlaG9sZGVyLlxuICAgICAgICAgKi9cbiAgICAgICAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICB9KTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IGFueTsgcGxhY2Vob2xkZXI6IHN0cmluZyB9PjtcbiAgICAvKipcbiAgICAgKiBDdXN0b20gb3B0aW9uIHRlbXBsYXRlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0IC0gb3B0aW9uIGRhdGEuXG4gICAgICovXG4gICAgb3B0aW9uKGNvbnRleHQ6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE9wdGlvbiBpbnN0YW5jZS5cbiAgICAgICAgICovXG4gICAgICAgICRpbXBsaWNpdDogYW55O1xuICAgIH0pOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogYW55IH0+O1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBkcm9wZG93biB0cmlnZ2VyIGljb24gdGVtcGxhdGUuXG4gICAgICovXG4gICAgdHJpZ2dlcmljb24oKTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKipcbiAgICAgKiBDdXN0b20gY2xlYXIgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKi9cbiAgICBjbGVhcmljb24oKTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvKipcbiAgICAgKiBDdXN0b20gb3B0aW9uIGdyb3VwIGljb24gdGVtcGxhdGUuXG4gICAgICovXG4gICAgb3B0aW9uZ3JvdXBpY29uKCk6IFRlbXBsYXRlUmVmPGFueT47XG59XG4iXX0=