cax-design-system 2.8.1 → 2.8.2

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 (1723) hide show
  1. package/README.md +1 -1
  2. package/accordion/index.d.ts +286 -3
  3. package/animate/index.d.ts +41 -3
  4. package/animateonscroll/index.d.ts +75 -3
  5. package/api/index.d.ts +1856 -3
  6. package/autocomplete/index.d.ts +799 -3
  7. package/autofocus/index.d.ts +29 -3
  8. package/avatar/index.d.ts +80 -3
  9. package/avatargroup/index.d.ts +30 -3
  10. package/badge/index.d.ts +67 -5
  11. package/baseicon/index.d.ts +18 -5
  12. package/blockui/index.d.ts +77 -3
  13. package/breadcrumb/index.d.ts +105 -3
  14. package/button/index.d.ts +170 -3
  15. package/buttongroup/index.d.ts +14 -5
  16. package/calendar/index.d.ts +935 -3
  17. package/card/index.d.ts +92 -3
  18. package/carousel/index.d.ts +290 -3
  19. package/cascadeselect/index.d.ts +564 -3
  20. package/cax-design-system-2.8.2.tgz +0 -0
  21. package/chart/index.d.ts +88 -3
  22. package/checkbox/index.d.ts +204 -3
  23. package/chip/index.d.ts +63 -3
  24. package/chips/index.d.ts +305 -3
  25. package/colorpicker/index.d.ts +265 -3
  26. package/commentbox/index.d.ts +138 -5
  27. package/confirmdialog/index.d.ts +336 -3
  28. package/confirmpopup/index.d.ts +148 -3
  29. package/contextmenu/index.d.ts +261 -3
  30. package/dataview/index.d.ts +457 -3
  31. package/defer/index.d.ts +40 -3
  32. package/dialog/index.d.ts +411 -3
  33. package/divider/index.d.ts +56 -3
  34. package/dock/index.d.ts +136 -3
  35. package/dom/index.d.ts +105 -3
  36. package/dragdrop/index.d.ts +120 -3
  37. package/dropdown/index.d.ts +818 -3
  38. package/dynamicdialog/index.d.ts +490 -3
  39. package/editor/index.d.ts +177 -3
  40. package/fesm2022/cax-design-system-accordion.mjs +2 -2
  41. package/fesm2022/cax-design-system-accordion.mjs.map +1 -1
  42. package/fesm2022/cax-design-system-animate.mjs +1 -1
  43. package/fesm2022/cax-design-system-animate.mjs.map +1 -1
  44. package/fesm2022/cax-design-system-animateonscroll.mjs +1 -1
  45. package/fesm2022/cax-design-system-animateonscroll.mjs.map +1 -1
  46. package/fesm2022/cax-design-system-api.mjs +1 -1
  47. package/fesm2022/cax-design-system-api.mjs.map +1 -1
  48. package/fesm2022/cax-design-system-autocomplete.mjs +1 -1
  49. package/fesm2022/cax-design-system-autocomplete.mjs.map +1 -1
  50. package/fesm2022/cax-design-system-autofocus.mjs +1 -1
  51. package/fesm2022/cax-design-system-autofocus.mjs.map +1 -1
  52. package/fesm2022/cax-design-system-avatar.mjs +1 -1
  53. package/fesm2022/cax-design-system-avatar.mjs.map +1 -1
  54. package/fesm2022/cax-design-system-avatargroup.mjs +1 -1
  55. package/fesm2022/cax-design-system-avatargroup.mjs.map +1 -1
  56. package/fesm2022/cax-design-system-badge.mjs +1 -1
  57. package/fesm2022/cax-design-system-badge.mjs.map +1 -1
  58. package/fesm2022/cax-design-system-baseicon.mjs +1 -1
  59. package/fesm2022/cax-design-system-baseicon.mjs.map +1 -1
  60. package/fesm2022/cax-design-system-blockui.mjs +1 -1
  61. package/fesm2022/cax-design-system-blockui.mjs.map +1 -1
  62. package/fesm2022/cax-design-system-breadcrumb.mjs +1 -1
  63. package/fesm2022/cax-design-system-breadcrumb.mjs.map +1 -1
  64. package/fesm2022/cax-design-system-button.mjs +1 -1
  65. package/fesm2022/cax-design-system-button.mjs.map +1 -1
  66. package/fesm2022/cax-design-system-buttongroup.mjs +1 -1
  67. package/fesm2022/cax-design-system-buttongroup.mjs.map +1 -1
  68. package/fesm2022/cax-design-system-calendar.mjs +3 -3
  69. package/fesm2022/cax-design-system-calendar.mjs.map +1 -1
  70. package/fesm2022/cax-design-system-card.mjs +1 -1
  71. package/fesm2022/cax-design-system-card.mjs.map +1 -1
  72. package/fesm2022/cax-design-system-carousel.mjs +1 -1
  73. package/fesm2022/cax-design-system-carousel.mjs.map +1 -1
  74. package/fesm2022/cax-design-system-cascadeselect.mjs +1 -1
  75. package/fesm2022/cax-design-system-cascadeselect.mjs.map +1 -1
  76. package/fesm2022/cax-design-system-chart.mjs +1 -1
  77. package/fesm2022/cax-design-system-chart.mjs.map +1 -1
  78. package/fesm2022/cax-design-system-checkbox.mjs +1 -1
  79. package/fesm2022/cax-design-system-checkbox.mjs.map +1 -1
  80. package/fesm2022/cax-design-system-chip.mjs +1 -1
  81. package/fesm2022/cax-design-system-chip.mjs.map +1 -1
  82. package/fesm2022/cax-design-system-chips.mjs +2 -2
  83. package/fesm2022/cax-design-system-chips.mjs.map +1 -1
  84. package/fesm2022/cax-design-system-colorpicker.mjs +1 -1
  85. package/fesm2022/cax-design-system-colorpicker.mjs.map +1 -1
  86. package/fesm2022/cax-design-system-commentbox.mjs +3 -3
  87. package/fesm2022/cax-design-system-commentbox.mjs.map +1 -1
  88. package/fesm2022/cax-design-system-confirmdialog.mjs +1 -1
  89. package/fesm2022/cax-design-system-confirmdialog.mjs.map +1 -1
  90. package/fesm2022/cax-design-system-confirmpopup.mjs +2 -2
  91. package/fesm2022/cax-design-system-confirmpopup.mjs.map +1 -1
  92. package/fesm2022/cax-design-system-contextmenu.mjs +1 -1
  93. package/fesm2022/cax-design-system-contextmenu.mjs.map +1 -1
  94. package/fesm2022/cax-design-system-dataview.mjs +1 -1
  95. package/fesm2022/cax-design-system-dataview.mjs.map +1 -1
  96. package/fesm2022/cax-design-system-defer.mjs +1 -1
  97. package/fesm2022/cax-design-system-defer.mjs.map +1 -1
  98. package/fesm2022/cax-design-system-dialog.mjs +1 -1
  99. package/fesm2022/cax-design-system-dialog.mjs.map +1 -1
  100. package/fesm2022/cax-design-system-divider.mjs +1 -1
  101. package/fesm2022/cax-design-system-divider.mjs.map +1 -1
  102. package/fesm2022/cax-design-system-dock.mjs +1 -1
  103. package/fesm2022/cax-design-system-dock.mjs.map +1 -1
  104. package/fesm2022/cax-design-system-dom.mjs.map +1 -1
  105. package/fesm2022/cax-design-system-dragdrop.mjs +1 -1
  106. package/fesm2022/cax-design-system-dragdrop.mjs.map +1 -1
  107. package/fesm2022/cax-design-system-dropdown.mjs +4 -4
  108. package/fesm2022/cax-design-system-dropdown.mjs.map +1 -1
  109. package/fesm2022/cax-design-system-dynamicdialog.mjs +1 -1
  110. package/fesm2022/cax-design-system-dynamicdialog.mjs.map +1 -1
  111. package/fesm2022/cax-design-system-editor.mjs +1 -1
  112. package/fesm2022/cax-design-system-editor.mjs.map +1 -1
  113. package/fesm2022/cax-design-system-fieldset.mjs +2 -2
  114. package/fesm2022/cax-design-system-fieldset.mjs.map +1 -1
  115. package/fesm2022/cax-design-system-fileupload.mjs +1 -1
  116. package/fesm2022/cax-design-system-fileupload.mjs.map +1 -1
  117. package/fesm2022/cax-design-system-floatlabel.mjs +1 -1
  118. package/fesm2022/cax-design-system-floatlabel.mjs.map +1 -1
  119. package/fesm2022/cax-design-system-focustrap.mjs +1 -1
  120. package/fesm2022/cax-design-system-focustrap.mjs.map +1 -1
  121. package/fesm2022/cax-design-system-galleria.mjs +1 -1
  122. package/fesm2022/cax-design-system-galleria.mjs.map +1 -1
  123. package/fesm2022/cax-design-system-iconfield.mjs +1 -1
  124. package/fesm2022/cax-design-system-iconfield.mjs.map +1 -1
  125. package/fesm2022/cax-design-system-icons-angledoubledown.mjs.map +1 -1
  126. package/fesm2022/cax-design-system-icons-angledoubleleft.mjs.map +1 -1
  127. package/fesm2022/cax-design-system-icons-angledoubleright.mjs.map +1 -1
  128. package/fesm2022/cax-design-system-icons-angledoubleup.mjs.map +1 -1
  129. package/fesm2022/cax-design-system-icons-angledown.mjs.map +1 -1
  130. package/fesm2022/cax-design-system-icons-angleleft.mjs.map +1 -1
  131. package/fesm2022/cax-design-system-icons-angleright.mjs.map +1 -1
  132. package/fesm2022/cax-design-system-icons-angleup.mjs.map +1 -1
  133. package/fesm2022/cax-design-system-icons-arrowdown.mjs.map +1 -1
  134. package/fesm2022/cax-design-system-icons-arrowdownleft.mjs.map +1 -1
  135. package/fesm2022/cax-design-system-icons-arrowdownright.mjs.map +1 -1
  136. package/fesm2022/cax-design-system-icons-arrowleft.mjs.map +1 -1
  137. package/fesm2022/cax-design-system-icons-arrowright.mjs.map +1 -1
  138. package/fesm2022/cax-design-system-icons-arrowup.mjs.map +1 -1
  139. package/fesm2022/cax-design-system-icons-ban.mjs.map +1 -1
  140. package/fesm2022/cax-design-system-icons-bars.mjs.map +1 -1
  141. package/fesm2022/cax-design-system-icons-blank.mjs.map +1 -1
  142. package/fesm2022/cax-design-system-icons-calendar.mjs.map +1 -1
  143. package/fesm2022/cax-design-system-icons-caretleft.mjs.map +1 -1
  144. package/fesm2022/cax-design-system-icons-caretright.mjs.map +1 -1
  145. package/fesm2022/cax-design-system-icons-check.mjs.map +1 -1
  146. package/fesm2022/cax-design-system-icons-chevrondown.mjs.map +1 -1
  147. package/fesm2022/cax-design-system-icons-chevronleft.mjs.map +1 -1
  148. package/fesm2022/cax-design-system-icons-chevronright.mjs.map +1 -1
  149. package/fesm2022/cax-design-system-icons-chevronup.mjs.map +1 -1
  150. package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs.map +1 -1
  151. package/fesm2022/cax-design-system-icons-eye.mjs.map +1 -1
  152. package/fesm2022/cax-design-system-icons-eyeslash.mjs.map +1 -1
  153. package/fesm2022/cax-design-system-icons-filter.mjs.map +1 -1
  154. package/fesm2022/cax-design-system-icons-filterslash.mjs.map +1 -1
  155. package/fesm2022/cax-design-system-icons-home.mjs.map +1 -1
  156. package/fesm2022/cax-design-system-icons-infocircle.mjs.map +1 -1
  157. package/fesm2022/cax-design-system-icons-minus.mjs.map +1 -1
  158. package/fesm2022/cax-design-system-icons-pencil.mjs.map +1 -1
  159. package/fesm2022/cax-design-system-icons-plus.mjs.map +1 -1
  160. package/fesm2022/cax-design-system-icons-refresh.mjs.map +1 -1
  161. package/fesm2022/cax-design-system-icons-search.mjs.map +1 -1
  162. package/fesm2022/cax-design-system-icons-searchminus.mjs.map +1 -1
  163. package/fesm2022/cax-design-system-icons-searchplus.mjs.map +1 -1
  164. package/fesm2022/cax-design-system-icons-sortalt.mjs.map +1 -1
  165. package/fesm2022/cax-design-system-icons-sortamountdown.mjs.map +1 -1
  166. package/fesm2022/cax-design-system-icons-sortamountupalt.mjs.map +1 -1
  167. package/fesm2022/cax-design-system-icons-spinner.mjs.map +1 -1
  168. package/fesm2022/cax-design-system-icons-star.mjs.map +1 -1
  169. package/fesm2022/cax-design-system-icons-starfill.mjs.map +1 -1
  170. package/fesm2022/cax-design-system-icons-thlarge.mjs.map +1 -1
  171. package/fesm2022/cax-design-system-icons-times.mjs.map +1 -1
  172. package/fesm2022/cax-design-system-icons-timescircle.mjs.map +1 -1
  173. package/fesm2022/cax-design-system-icons-trash.mjs.map +1 -1
  174. package/fesm2022/cax-design-system-icons-undo.mjs.map +1 -1
  175. package/fesm2022/cax-design-system-icons-upload.mjs.map +1 -1
  176. package/fesm2022/cax-design-system-icons-windowmaximize.mjs.map +1 -1
  177. package/fesm2022/cax-design-system-icons-windowminimize.mjs.map +1 -1
  178. package/fesm2022/cax-design-system-image.mjs +2 -2
  179. package/fesm2022/cax-design-system-image.mjs.map +1 -1
  180. package/fesm2022/cax-design-system-inplace.mjs +1 -1
  181. package/fesm2022/cax-design-system-inplace.mjs.map +1 -1
  182. package/fesm2022/cax-design-system-inputgroup.mjs +1 -1
  183. package/fesm2022/cax-design-system-inputgroup.mjs.map +1 -1
  184. package/fesm2022/cax-design-system-inputgroupaddon.mjs +1 -1
  185. package/fesm2022/cax-design-system-inputgroupaddon.mjs.map +1 -1
  186. package/fesm2022/cax-design-system-inputicon.mjs +1 -1
  187. package/fesm2022/cax-design-system-inputicon.mjs.map +1 -1
  188. package/fesm2022/cax-design-system-inputmask.mjs +1 -1
  189. package/fesm2022/cax-design-system-inputmask.mjs.map +1 -1
  190. package/fesm2022/cax-design-system-inputnumber.mjs +1 -1
  191. package/fesm2022/cax-design-system-inputnumber.mjs.map +1 -1
  192. package/fesm2022/cax-design-system-inputotp.mjs +1 -1
  193. package/fesm2022/cax-design-system-inputotp.mjs.map +1 -1
  194. package/fesm2022/cax-design-system-inputswitch.mjs +1 -1
  195. package/fesm2022/cax-design-system-inputswitch.mjs.map +1 -1
  196. package/fesm2022/cax-design-system-inputtext.mjs +1 -1
  197. package/fesm2022/cax-design-system-inputtext.mjs.map +1 -1
  198. package/fesm2022/cax-design-system-inputtextarea.mjs +1 -1
  199. package/fesm2022/cax-design-system-inputtextarea.mjs.map +1 -1
  200. package/fesm2022/cax-design-system-keyfilter.mjs +1 -1
  201. package/fesm2022/cax-design-system-keyfilter.mjs.map +1 -1
  202. package/fesm2022/cax-design-system-knob.mjs +1 -1
  203. package/fesm2022/cax-design-system-knob.mjs.map +1 -1
  204. package/fesm2022/cax-design-system-listbox.mjs +1 -1
  205. package/fesm2022/cax-design-system-listbox.mjs.map +1 -1
  206. package/fesm2022/cax-design-system-logo.mjs +1 -1
  207. package/fesm2022/cax-design-system-logo.mjs.map +1 -1
  208. package/fesm2022/cax-design-system-megamenu.mjs +1 -1
  209. package/fesm2022/cax-design-system-megamenu.mjs.map +1 -1
  210. package/fesm2022/cax-design-system-menu.mjs +3 -3
  211. package/fesm2022/cax-design-system-menu.mjs.map +1 -1
  212. package/fesm2022/cax-design-system-menubar.mjs +1 -1
  213. package/fesm2022/cax-design-system-menubar.mjs.map +1 -1
  214. package/fesm2022/cax-design-system-message.mjs +1 -1
  215. package/fesm2022/cax-design-system-message.mjs.map +1 -1
  216. package/fesm2022/cax-design-system-messages.mjs +2 -2
  217. package/fesm2022/cax-design-system-messages.mjs.map +1 -1
  218. package/fesm2022/cax-design-system-metergroup.mjs +1 -1
  219. package/fesm2022/cax-design-system-metergroup.mjs.map +1 -1
  220. package/fesm2022/cax-design-system-multiselect.mjs +1 -1
  221. package/fesm2022/cax-design-system-multiselect.mjs.map +1 -1
  222. package/fesm2022/cax-design-system-navigation.mjs +3 -3
  223. package/fesm2022/cax-design-system-navigation.mjs.map +1 -1
  224. package/fesm2022/cax-design-system-orderlist.mjs +1 -1
  225. package/fesm2022/cax-design-system-orderlist.mjs.map +1 -1
  226. package/fesm2022/cax-design-system-organizationchart.mjs +2 -2
  227. package/fesm2022/cax-design-system-organizationchart.mjs.map +1 -1
  228. package/fesm2022/cax-design-system-overlay.mjs +2 -2
  229. package/fesm2022/cax-design-system-overlay.mjs.map +1 -1
  230. package/fesm2022/cax-design-system-overlaypanel.mjs +3 -3
  231. package/fesm2022/cax-design-system-overlaypanel.mjs.map +1 -1
  232. package/fesm2022/cax-design-system-paginator.mjs +1 -1
  233. package/fesm2022/cax-design-system-paginator.mjs.map +1 -1
  234. package/fesm2022/cax-design-system-panel.mjs +2 -2
  235. package/fesm2022/cax-design-system-panel.mjs.map +1 -1
  236. package/fesm2022/cax-design-system-panelmenu.mjs +2 -2
  237. package/fesm2022/cax-design-system-panelmenu.mjs.map +1 -1
  238. package/fesm2022/cax-design-system-password.mjs +1 -1
  239. package/fesm2022/cax-design-system-password.mjs.map +1 -1
  240. package/fesm2022/cax-design-system-picklist.mjs +1 -1
  241. package/fesm2022/cax-design-system-picklist.mjs.map +1 -1
  242. package/fesm2022/cax-design-system-progressbar.mjs +1 -1
  243. package/fesm2022/cax-design-system-progressbar.mjs.map +1 -1
  244. package/fesm2022/cax-design-system-progressspinner.mjs +1 -1
  245. package/fesm2022/cax-design-system-progressspinner.mjs.map +1 -1
  246. package/fesm2022/cax-design-system-radiobutton.mjs +1 -1
  247. package/fesm2022/cax-design-system-radiobutton.mjs.map +1 -1
  248. package/fesm2022/cax-design-system-rating.mjs +1 -1
  249. package/fesm2022/cax-design-system-rating.mjs.map +1 -1
  250. package/fesm2022/cax-design-system-ripple.mjs +1 -1
  251. package/fesm2022/cax-design-system-ripple.mjs.map +1 -1
  252. package/fesm2022/cax-design-system-scroller.mjs +2 -2
  253. package/fesm2022/cax-design-system-scroller.mjs.map +1 -1
  254. package/fesm2022/cax-design-system-scrollpanel.mjs +1 -1
  255. package/fesm2022/cax-design-system-scrollpanel.mjs.map +1 -1
  256. package/fesm2022/cax-design-system-scrolltop.mjs +2 -2
  257. package/fesm2022/cax-design-system-scrolltop.mjs.map +1 -1
  258. package/fesm2022/cax-design-system-selectbutton.mjs +1 -1
  259. package/fesm2022/cax-design-system-selectbutton.mjs.map +1 -1
  260. package/fesm2022/cax-design-system-sidebar.mjs +4 -4
  261. package/fesm2022/cax-design-system-sidebar.mjs.map +1 -1
  262. package/fesm2022/cax-design-system-skeleton.mjs +1 -1
  263. package/fesm2022/cax-design-system-skeleton.mjs.map +1 -1
  264. package/fesm2022/cax-design-system-slidemenu.mjs +1 -1
  265. package/fesm2022/cax-design-system-slidemenu.mjs.map +1 -1
  266. package/fesm2022/cax-design-system-slider.mjs +1 -1
  267. package/fesm2022/cax-design-system-slider.mjs.map +1 -1
  268. package/fesm2022/cax-design-system-speeddial.mjs +1 -1
  269. package/fesm2022/cax-design-system-speeddial.mjs.map +1 -1
  270. package/fesm2022/cax-design-system-spinner.mjs +1 -1
  271. package/fesm2022/cax-design-system-spinner.mjs.map +1 -1
  272. package/fesm2022/cax-design-system-splitbutton.mjs +1 -1
  273. package/fesm2022/cax-design-system-splitbutton.mjs.map +1 -1
  274. package/fesm2022/cax-design-system-splitter.mjs +1 -1
  275. package/fesm2022/cax-design-system-splitter.mjs.map +1 -1
  276. package/fesm2022/cax-design-system-stepper.mjs +2 -2
  277. package/fesm2022/cax-design-system-stepper.mjs.map +1 -1
  278. package/fesm2022/cax-design-system-steps.mjs +1 -1
  279. package/fesm2022/cax-design-system-steps.mjs.map +1 -1
  280. package/fesm2022/cax-design-system-styleclass.mjs +1 -1
  281. package/fesm2022/cax-design-system-styleclass.mjs.map +1 -1
  282. package/fesm2022/cax-design-system-table.mjs +1 -1
  283. package/fesm2022/cax-design-system-table.mjs.map +1 -1
  284. package/fesm2022/cax-design-system-tableconfiguration.mjs +19 -11
  285. package/fesm2022/cax-design-system-tableconfiguration.mjs.map +1 -1
  286. package/fesm2022/cax-design-system-tabmenu.mjs +1 -1
  287. package/fesm2022/cax-design-system-tabmenu.mjs.map +1 -1
  288. package/fesm2022/cax-design-system-tabview.mjs +1 -1
  289. package/fesm2022/cax-design-system-tabview.mjs.map +1 -1
  290. package/fesm2022/cax-design-system-tag.mjs +1 -1
  291. package/fesm2022/cax-design-system-tag.mjs.map +1 -1
  292. package/fesm2022/cax-design-system-terminal.mjs +1 -1
  293. package/fesm2022/cax-design-system-terminal.mjs.map +1 -1
  294. package/fesm2022/cax-design-system-tieredmenu.mjs +1 -1
  295. package/fesm2022/cax-design-system-tieredmenu.mjs.map +1 -1
  296. package/fesm2022/cax-design-system-timeline.mjs +1 -1
  297. package/fesm2022/cax-design-system-timeline.mjs.map +1 -1
  298. package/fesm2022/cax-design-system-toast.mjs +2 -2
  299. package/fesm2022/cax-design-system-toast.mjs.map +1 -1
  300. package/fesm2022/cax-design-system-togglebutton.mjs +1 -1
  301. package/fesm2022/cax-design-system-togglebutton.mjs.map +1 -1
  302. package/fesm2022/cax-design-system-toggleswitch.mjs +1 -1
  303. package/fesm2022/cax-design-system-toggleswitch.mjs.map +1 -1
  304. package/fesm2022/cax-design-system-toolbar.mjs +1 -1
  305. package/fesm2022/cax-design-system-toolbar.mjs.map +1 -1
  306. package/fesm2022/cax-design-system-tooltip.mjs +1 -1
  307. package/fesm2022/cax-design-system-tooltip.mjs.map +1 -1
  308. package/fesm2022/cax-design-system-tree.mjs +1 -1
  309. package/fesm2022/cax-design-system-tree.mjs.map +1 -1
  310. package/fesm2022/cax-design-system-treeselect.mjs +1 -1
  311. package/fesm2022/cax-design-system-treeselect.mjs.map +1 -1
  312. package/fesm2022/cax-design-system-treetable.mjs +1 -1
  313. package/fesm2022/cax-design-system-treetable.mjs.map +1 -1
  314. package/fesm2022/cax-design-system-tristatecheckbox.mjs +2 -2
  315. package/fesm2022/cax-design-system-tristatecheckbox.mjs.map +1 -1
  316. package/fesm2022/cax-design-system-upload.mjs +1 -1
  317. package/fesm2022/cax-design-system-upload.mjs.map +1 -1
  318. package/fesm2022/cax-design-system-utils.mjs.map +1 -1
  319. package/fesm2022/cax-design-system-virtualscroller.mjs +1 -1
  320. package/fesm2022/cax-design-system-virtualscroller.mjs.map +1 -1
  321. package/fieldset/index.d.ts +140 -3
  322. package/fileupload/index.d.ts +606 -3
  323. package/floatlabel/index.d.ts +19 -3
  324. package/focustrap/index.d.ts +35 -3
  325. package/galleria/index.d.ts +502 -3
  326. package/iconfield/index.d.ts +26 -3
  327. package/icons/angledoubledown/index.d.ts +9 -5
  328. package/icons/angledoubleleft/index.d.ts +9 -5
  329. package/icons/angledoubleright/index.d.ts +9 -5
  330. package/icons/angledoubleup/index.d.ts +9 -5
  331. package/icons/angledown/index.d.ts +9 -5
  332. package/icons/angleleft/index.d.ts +9 -5
  333. package/icons/angleright/index.d.ts +9 -5
  334. package/icons/angleup/index.d.ts +9 -5
  335. package/icons/arrowdown/index.d.ts +12 -5
  336. package/icons/arrowdownleft/index.d.ts +9 -5
  337. package/icons/arrowdownright/index.d.ts +9 -5
  338. package/icons/arrowleft/index.d.ts +11 -5
  339. package/icons/arrowright/index.d.ts +9 -5
  340. package/icons/arrowup/index.d.ts +11 -5
  341. package/icons/ban/index.d.ts +11 -5
  342. package/icons/bars/index.d.ts +9 -5
  343. package/icons/blank/index.d.ts +9 -5
  344. package/icons/calendar/index.d.ts +9 -5
  345. package/icons/caretleft/index.d.ts +9 -5
  346. package/icons/caretright/index.d.ts +9 -5
  347. package/icons/check/index.d.ts +9 -5
  348. package/icons/chevrondown/index.d.ts +9 -5
  349. package/icons/chevronleft/index.d.ts +9 -5
  350. package/icons/chevronright/index.d.ts +9 -5
  351. package/icons/chevronup/index.d.ts +9 -5
  352. package/icons/exclamationtriangle/index.d.ts +12 -5
  353. package/icons/eye/index.d.ts +9 -5
  354. package/icons/eyeslash/index.d.ts +11 -5
  355. package/icons/filter/index.d.ts +11 -5
  356. package/icons/filterslash/index.d.ts +11 -5
  357. package/icons/home/index.d.ts +11 -5
  358. package/icons/infocircle/index.d.ts +11 -5
  359. package/icons/minus/index.d.ts +9 -5
  360. package/icons/pencil/index.d.ts +11 -5
  361. package/icons/plus/index.d.ts +11 -5
  362. package/icons/refresh/index.d.ts +11 -5
  363. package/icons/search/index.d.ts +11 -5
  364. package/icons/searchminus/index.d.ts +11 -5
  365. package/icons/searchplus/index.d.ts +11 -5
  366. package/icons/sortalt/index.d.ts +11 -5
  367. package/icons/sortamountdown/index.d.ts +11 -5
  368. package/icons/sortamountupalt/index.d.ts +11 -5
  369. package/icons/spinner/index.d.ts +11 -5
  370. package/icons/star/index.d.ts +11 -5
  371. package/icons/starfill/index.d.ts +11 -5
  372. package/icons/thlarge/index.d.ts +11 -5
  373. package/icons/times/index.d.ts +9 -5
  374. package/icons/timescircle/index.d.ts +11 -5
  375. package/icons/trash/index.d.ts +11 -5
  376. package/icons/undo/index.d.ts +11 -5
  377. package/icons/upload/index.d.ts +11 -5
  378. package/icons/windowmaximize/index.d.ts +11 -5
  379. package/icons/windowminimize/index.d.ts +11 -5
  380. package/image/index.d.ts +228 -3
  381. package/index.d.ts +2 -5
  382. package/inplace/index.d.ts +130 -3
  383. package/inputgroup/index.d.ts +48 -3
  384. package/inputgroupaddon/index.d.ts +35 -3
  385. package/inputicon/index.d.ts +22 -3
  386. package/inputmask/index.d.ts +304 -3
  387. package/inputnumber/index.d.ts +443 -3
  388. package/inputotp/index.d.ts +189 -3
  389. package/inputswitch/index.d.ts +123 -3
  390. package/inputtext/index.d.ts +76 -5
  391. package/inputtextarea/index.d.ts +112 -3
  392. package/keyfilter/index.d.ts +65 -3
  393. package/knob/index.d.ts +179 -3
  394. package/listbox/index.d.ts +620 -3
  395. package/logo/index.d.ts +20 -5
  396. package/megamenu/index.d.ts +230 -3
  397. package/menu/index.d.ts +222 -3
  398. package/menubar/index.d.ts +290 -3
  399. package/message/index.d.ts +53 -3
  400. package/messages/index.d.ts +140 -3
  401. package/metergroup/index.d.ts +224 -3
  402. package/multiselect/index.d.ts +974 -3
  403. package/navigation/index.d.ts +105 -5
  404. package/orderlist/index.d.ts +381 -3
  405. package/organizationchart/index.d.ts +192 -3
  406. package/overlay/index.d.ts +246 -3
  407. package/overlaypanel/index.d.ts +170 -3
  408. package/package.json +229 -569
  409. package/paginator/index.d.ts +249 -3
  410. package/panel/index.d.ts +185 -3
  411. package/panelmenu/index.d.ts +249 -3
  412. package/password/index.d.ts +342 -3
  413. package/picklist/index.d.ts +696 -3
  414. package/progressbar/index.d.ts +61 -3
  415. package/progressspinner/index.d.ts +58 -3
  416. package/radiobutton/index.d.ts +173 -3
  417. package/rating/index.d.ts +181 -3
  418. package/resources/cax.min.scss +1 -1
  419. package/resources/cax.scss +1 -0
  420. package/resources/components/menu/menu.scss +1 -0
  421. package/resources/components/navigation/navigation.scss +1 -0
  422. package/resources/components/tableconfiguration/tableconfiguration.scss +10 -0
  423. package/ripple/index.d.ts +37 -3
  424. package/scroller/index.d.ts +528 -3
  425. package/scrollpanel/index.d.ts +116 -3
  426. package/scrolltop/index.d.ts +117 -3
  427. package/selectbutton/index.d.ts +184 -3
  428. package/sidebar/index.d.ts +213 -3
  429. package/skeleton/index.d.ts +69 -3
  430. package/slidemenu/index.d.ts +339 -3
  431. package/slider/index.d.ts +214 -3
  432. package/speeddial/index.d.ts +319 -3
  433. package/spinner/index.d.ts +93 -5
  434. package/splitbutton/index.d.ts +264 -3
  435. package/splitter/index.d.ts +201 -3
  436. package/stepper/index.d.ts +145 -3
  437. package/steps/index.d.ts +87 -3
  438. package/styleclass/index.d.ts +109 -3
  439. package/table/index.d.ts +2556 -3
  440. package/tableconfiguration/index.d.ts +25 -5
  441. package/tabmenu/index.d.ts +160 -3
  442. package/tabview/index.d.ts +357 -3
  443. package/tag/index.d.ts +82 -3
  444. package/terminal/index.d.ts +68 -3
  445. package/tieredmenu/index.d.ts +307 -3
  446. package/timeline/index.d.ts +100 -3
  447. package/toast/index.d.ts +202 -3
  448. package/togglebutton/index.d.ts +150 -3
  449. package/toggleswitch/index.d.ts +25 -5
  450. package/toolbar/index.d.ts +64 -3
  451. package/tooltip/index.d.ts +218 -3
  452. package/tree/index.d.ts +673 -3
  453. package/treeselect/index.d.ts +517 -3
  454. package/treetable/index.d.ts +1461 -3
  455. package/tristatecheckbox/index.d.ts +155 -3
  456. package/ts-helpers/index.d.ts +6 -5
  457. package/upload/index.d.ts +81 -5
  458. package/utils/index.d.ts +35 -5
  459. package/virtualscroller/index.d.ts +161 -3
  460. package/accordion/accordion.d.ts +0 -224
  461. package/accordion/accordion.interface.d.ts +0 -49
  462. package/accordion/accordion.module.d.ts +0 -13
  463. package/accordion/public_api.d.ts +0 -3
  464. package/animate/animate.d.ts +0 -40
  465. package/animate/public_api.d.ts +0 -1
  466. package/animateonscroll/animateonscroll.d.ts +0 -75
  467. package/animateonscroll/public_api.d.ts +0 -1
  468. package/api/blockableui.d.ts +0 -10
  469. package/api/caxconfig.d.ts +0 -24
  470. package/api/confirmaeventtype.d.ts +0 -8
  471. package/api/confirmation.d.ts +0 -96
  472. package/api/confirmationservice.d.ts +0 -30
  473. package/api/contextmenuservice.d.ts +0 -11
  474. package/api/filtermatchmode.d.ts +0 -22
  475. package/api/filtermetadata.d.ts +0 -18
  476. package/api/filteroperator.d.ts +0 -4
  477. package/api/filterservice.d.ts +0 -10
  478. package/api/lazyloadevent.d.ts +0 -47
  479. package/api/lazyloadmeta.d.ts +0 -19
  480. package/api/megamenuitem.d.ts +0 -130
  481. package/api/menuitem.d.ts +0 -176
  482. package/api/message.d.ts +0 -30
  483. package/api/messageservice.d.ts +0 -32
  484. package/api/overlayoptions.d.ts +0 -188
  485. package/api/overlayservice.d.ts +0 -9
  486. package/api/primeicons.d.ts +0 -313
  487. package/api/public_api.d.ts +0 -34
  488. package/api/scrolleroptions.d.ts +0 -116
  489. package/api/selectitem.d.ts +0 -12
  490. package/api/selectitemgroup.d.ts +0 -10
  491. package/api/shared.d.ts +0 -24
  492. package/api/sortevent.d.ts +0 -12
  493. package/api/sortmeta.d.ts +0 -8
  494. package/api/tablestate.d.ts +0 -60
  495. package/api/themegeneratorservice.d.ts +0 -12
  496. package/api/tooltipoptions.d.ts +0 -69
  497. package/api/translation.d.ts +0 -135
  498. package/api/translationkeys.d.ts +0 -50
  499. package/api/treedragdropservice.d.ts +0 -12
  500. package/api/treenode.d.ts +0 -91
  501. package/api/treenodedragevent.d.ts +0 -27
  502. package/api/treetablenode.d.ts +0 -36
  503. package/autocomplete/autocomplete.d.ts +0 -616
  504. package/autocomplete/autocomplete.interface.d.ts +0 -164
  505. package/autocomplete/autocomplete.module.d.ts +0 -20
  506. package/autocomplete/public_api.d.ts +0 -3
  507. package/autofocus/autofocus.d.ts +0 -28
  508. package/autofocus/public_api.d.ts +0 -1
  509. package/avatar/avatar.d.ts +0 -73
  510. package/avatar/avatar.module.d.ts +0 -7
  511. package/avatar/public_api.d.ts +0 -2
  512. package/avatargroup/avatargroup.d.ts +0 -21
  513. package/avatargroup/avatargroup.module.d.ts +0 -9
  514. package/avatargroup/public_api.d.ts +0 -2
  515. package/badge/badge.d.ts +0 -21
  516. package/badge/badge.directive.d.ts +0 -35
  517. package/badge/badge.module.d.ts +0 -10
  518. package/badge/public_api.d.ts +0 -3
  519. package/baseicon/baseicon.d.ts +0 -15
  520. package/baseicon/public_api.d.ts +0 -1
  521. package/blockui/blockui.d.ts +0 -64
  522. package/blockui/blockui.interface.d.ts +0 -11
  523. package/blockui/public_api.d.ts +0 -2
  524. package/breadcrumb/breadcrumb.d.ts +0 -55
  525. package/breadcrumb/breadcrumb.interface.d.ts +0 -38
  526. package/breadcrumb/breadcrumb.module.d.ts +0 -13
  527. package/breadcrumb/public_api.d.ts +0 -3
  528. package/button/button.d.ts +0 -85
  529. package/button/button.directive.d.ts +0 -49
  530. package/button/button.interface.d.ts +0 -30
  531. package/button/button.module.d.ts +0 -9
  532. package/button/public_api.d.ts +0 -4
  533. package/buttongroup/buttongroup.d.ts +0 -11
  534. package/buttongroup/public_api.d.ts +0 -1
  535. package/calendar/calendar.d.ts +0 -722
  536. package/calendar/calendar.interface.d.ts +0 -204
  537. package/calendar/calendar.module.d.ts +0 -9
  538. package/calendar/public_api.d.ts +0 -3
  539. package/card/card.d.ts +0 -53
  540. package/card/card.interface.d.ts +0 -27
  541. package/card/card.module.d.ts +0 -11
  542. package/card/public_api.d.ts +0 -3
  543. package/carousel/carousel.d.ts +0 -227
  544. package/carousel/carousel.interface.d.ts +0 -63
  545. package/carousel/public_api.d.ts +0 -2
  546. package/cascadeselect/cascadeselect.d.ts +0 -435
  547. package/cascadeselect/cascadeselect.interface.d.ts +0 -115
  548. package/cascadeselect/cascadeselect.module.d.ts +0 -15
  549. package/cascadeselect/public_api.d.ts +0 -3
  550. package/chart/chart.d.ts +0 -87
  551. package/chart/public_api.d.ts +0 -1
  552. package/checkbox/checkbox.d.ts +0 -168
  553. package/checkbox/checkbox.interface.d.ts +0 -26
  554. package/checkbox/checkbox.module.d.ts +0 -10
  555. package/checkbox/public_api.d.ts +0 -3
  556. package/chip/chip.d.ts +0 -38
  557. package/chip/chip.interface.d.ts +0 -15
  558. package/chip/chip.module.d.ts +0 -10
  559. package/chip/public_api.d.ts +0 -3
  560. package/chips/chips.d.ts +0 -233
  561. package/chips/chips.interface.d.ts +0 -58
  562. package/chips/chips.module.d.ts +0 -14
  563. package/chips/public_api.d.ts +0 -3
  564. package/colorpicker/colorpicker.d.ts +0 -240
  565. package/colorpicker/colorpicker.interface.d.ts +0 -15
  566. package/colorpicker/colorpicker.module.d.ts +0 -9
  567. package/colorpicker/public_api.d.ts +0 -3
  568. package/commentbox/commentbox.d.ts +0 -120
  569. package/commentbox/commentbox.module.d.ts +0 -17
  570. package/commentbox/public_api.d.ts +0 -2
  571. package/confirmdialog/confirmdialog.d.ts +0 -281
  572. package/confirmdialog/confirmdialog.interface.d.ts +0 -39
  573. package/confirmdialog/confirmdialog.module.d.ts +0 -15
  574. package/confirmdialog/public_api.d.ts +0 -3
  575. package/confirmpopup/confirmpopup.d.ts +0 -119
  576. package/confirmpopup/confirmpopup.interface.d.ts +0 -27
  577. package/confirmpopup/public_api.d.ts +0 -2
  578. package/contextmenu/contextmenu.d.ts +0 -260
  579. package/contextmenu/public_api.d.ts +0 -1
  580. package/dataview/dataview.d.ts +0 -274
  581. package/dataview/dataview.interface.d.ts +0 -183
  582. package/dataview/public_api.d.ts +0 -2
  583. package/defer/defer.d.ts +0 -39
  584. package/defer/public_api.d.ts +0 -1
  585. package/dialog/dialog.d.ts +0 -364
  586. package/dialog/dialog.interface.d.ts +0 -31
  587. package/dialog/dialog.module.d.ts +0 -15
  588. package/dialog/public_api.d.ts +0 -3
  589. package/divider/divider.d.ts +0 -49
  590. package/divider/divider.module.d.ts +0 -7
  591. package/divider/public_api.d.ts +0 -2
  592. package/dock/dock.d.ts +0 -115
  593. package/dock/dock.interface.d.ts +0 -19
  594. package/dock/public_api.d.ts +0 -2
  595. package/dom/connectedoverlayscrollhandler.d.ts +0 -9
  596. package/dom/domhandler.d.ts +0 -95
  597. package/dom/public_api.d.ts +0 -2
  598. package/dragdrop/dragdrop.d.ts +0 -112
  599. package/dragdrop/dragdrop.module.d.ts +0 -8
  600. package/dragdrop/public_api.d.ts +0 -2
  601. package/dropdown/dropdown-item.d.ts +0 -30
  602. package/dropdown/dropdown.d.ts +0 -628
  603. package/dropdown/dropdown.interface.d.ts +0 -154
  604. package/dropdown/dropdown.module.d.ts +0 -11
  605. package/dropdown/public_api.d.ts +0 -4
  606. package/dynamicdialog/dialogservice.d.ts +0 -35
  607. package/dynamicdialog/dynamicdialog-config.d.ts +0 -221
  608. package/dynamicdialog/dynamicdialog-injector.d.ts +0 -7
  609. package/dynamicdialog/dynamicdialog-ref.d.ts +0 -101
  610. package/dynamicdialog/dynamicdialog.d.ts +0 -124
  611. package/dynamicdialog/dynamicdialogcontent.d.ts +0 -8
  612. package/dynamicdialog/public_api.d.ts +0 -6
  613. package/editor/editor.d.ts +0 -104
  614. package/editor/editor.interface.d.ts +0 -64
  615. package/editor/editor.module.d.ts +0 -9
  616. package/editor/public_api.d.ts +0 -3
  617. package/esm2022/accordion/accordion.interface.mjs +0 -2
  618. package/esm2022/accordion/accordion.mjs +0 -598
  619. package/esm2022/accordion/accordion.module.mjs +0 -23
  620. package/esm2022/accordion/cax-design-system-accordion.mjs +0 -5
  621. package/esm2022/accordion/public_api.mjs +0 -4
  622. package/esm2022/animate/animate.mjs +0 -101
  623. package/esm2022/animate/cax-design-system-animate.mjs +0 -5
  624. package/esm2022/animate/public_api.mjs +0 -2
  625. package/esm2022/animateonscroll/animateonscroll.mjs +0 -185
  626. package/esm2022/animateonscroll/cax-design-system-animateonscroll.mjs +0 -5
  627. package/esm2022/animateonscroll/public_api.mjs +0 -2
  628. package/esm2022/api/blockableui.mjs +0 -2
  629. package/esm2022/api/cax-design-system-api.mjs +0 -5
  630. package/esm2022/api/caxconfig.mjs +0 -163
  631. package/esm2022/api/confirmaeventtype.mjs +0 -10
  632. package/esm2022/api/confirmation.mjs +0 -2
  633. package/esm2022/api/confirmationservice.mjs +0 -43
  634. package/esm2022/api/contextmenuservice.mjs +0 -22
  635. package/esm2022/api/filtermatchmode.mjs +0 -23
  636. package/esm2022/api/filtermetadata.mjs +0 -2
  637. package/esm2022/api/filteroperator.mjs +0 -5
  638. package/esm2022/api/filterservice.mjs +0 -225
  639. package/esm2022/api/lazyloadevent.mjs +0 -2
  640. package/esm2022/api/lazyloadmeta.mjs +0 -2
  641. package/esm2022/api/megamenuitem.mjs +0 -2
  642. package/esm2022/api/menuitem.mjs +0 -2
  643. package/esm2022/api/message.mjs +0 -2
  644. package/esm2022/api/messageservice.mjs +0 -47
  645. package/esm2022/api/overlayoptions.mjs +0 -2
  646. package/esm2022/api/overlayservice.mjs +0 -19
  647. package/esm2022/api/primeicons.mjs +0 -314
  648. package/esm2022/api/public_api.mjs +0 -35
  649. package/esm2022/api/scrolleroptions.mjs +0 -2
  650. package/esm2022/api/selectitem.mjs +0 -2
  651. package/esm2022/api/selectitemgroup.mjs +0 -2
  652. package/esm2022/api/shared.mjs +0 -65
  653. package/esm2022/api/sortevent.mjs +0 -2
  654. package/esm2022/api/sortmeta.mjs +0 -2
  655. package/esm2022/api/tablestate.mjs +0 -2
  656. package/esm2022/api/themegeneratorservice.mjs +0 -109
  657. package/esm2022/api/tooltipoptions.mjs +0 -2
  658. package/esm2022/api/translation.mjs +0 -2
  659. package/esm2022/api/translationkeys.mjs +0 -51
  660. package/esm2022/api/treedragdropservice.mjs +0 -21
  661. package/esm2022/api/treenode.mjs +0 -2
  662. package/esm2022/api/treenodedragevent.mjs +0 -2
  663. package/esm2022/api/treetablenode.mjs +0 -2
  664. package/esm2022/autocomplete/autocomplete.interface.mjs +0 -2
  665. package/esm2022/autocomplete/autocomplete.mjs +0 -1462
  666. package/esm2022/autocomplete/autocomplete.module.mjs +0 -30
  667. package/esm2022/autocomplete/cax-design-system-autocomplete.mjs +0 -5
  668. package/esm2022/autocomplete/public_api.mjs +0 -4
  669. package/esm2022/autofocus/autofocus.mjs +0 -78
  670. package/esm2022/autofocus/cax-design-system-autofocus.mjs +0 -5
  671. package/esm2022/autofocus/public_api.mjs +0 -2
  672. package/esm2022/avatar/avatar.mjs +0 -104
  673. package/esm2022/avatar/avatar.module.mjs +0 -16
  674. package/esm2022/avatar/cax-design-system-avatar.mjs +0 -5
  675. package/esm2022/avatar/public_api.mjs +0 -3
  676. package/esm2022/avatargroup/avatargroup.mjs +0 -32
  677. package/esm2022/avatargroup/avatargroup.module.mjs +0 -19
  678. package/esm2022/avatargroup/cax-design-system-avatargroup.mjs +0 -5
  679. package/esm2022/avatargroup/public_api.mjs +0 -3
  680. package/esm2022/badge/badge.directive.mjs +0 -193
  681. package/esm2022/badge/badge.mjs +0 -50
  682. package/esm2022/badge/badge.module.mjs +0 -20
  683. package/esm2022/badge/cax-design-system-badge.mjs +0 -5
  684. package/esm2022/badge/public_api.mjs +0 -4
  685. package/esm2022/baseicon/baseicon.mjs +0 -45
  686. package/esm2022/baseicon/cax-design-system-baseicon.mjs +0 -5
  687. package/esm2022/baseicon/public_api.mjs +0 -2
  688. package/esm2022/blockui/blockui.interface.mjs +0 -2
  689. package/esm2022/blockui/blockui.mjs +0 -206
  690. package/esm2022/blockui/cax-design-system-blockui.mjs +0 -5
  691. package/esm2022/blockui/public_api.mjs +0 -3
  692. package/esm2022/breadcrumb/breadcrumb.interface.mjs +0 -2
  693. package/esm2022/breadcrumb/breadcrumb.mjs +0 -120
  694. package/esm2022/breadcrumb/breadcrumb.module.mjs +0 -23
  695. package/esm2022/breadcrumb/cax-design-system-breadcrumb.mjs +0 -5
  696. package/esm2022/breadcrumb/public_api.mjs +0 -4
  697. package/esm2022/button/button.directive.mjs +0 -259
  698. package/esm2022/button/button.interface.mjs +0 -2
  699. package/esm2022/button/button.mjs +0 -190
  700. package/esm2022/button/button.module.mjs +0 -18
  701. package/esm2022/button/cax-design-system-button.mjs +0 -5
  702. package/esm2022/button/public_api.mjs +0 -5
  703. package/esm2022/buttongroup/buttongroup.mjs +0 -38
  704. package/esm2022/buttongroup/cax-design-system-buttongroup.mjs +0 -5
  705. package/esm2022/buttongroup/public_api.mjs +0 -2
  706. package/esm2022/calendar/calendar.interface.mjs +0 -2
  707. package/esm2022/calendar/calendar.mjs +0 -3242
  708. package/esm2022/calendar/calendar.module.mjs +0 -18
  709. package/esm2022/calendar/cax-design-system-calendar.mjs +0 -5
  710. package/esm2022/calendar/public_api.mjs +0 -4
  711. package/esm2022/card/card.interface.mjs +0 -2
  712. package/esm2022/card/card.mjs +0 -117
  713. package/esm2022/card/card.module.mjs +0 -21
  714. package/esm2022/card/cax-design-system-card.mjs +0 -5
  715. package/esm2022/card/public_api.mjs +0 -4
  716. package/esm2022/carousel/carousel.interface.mjs +0 -2
  717. package/esm2022/carousel/carousel.mjs +0 -968
  718. package/esm2022/carousel/cax-design-system-carousel.mjs +0 -5
  719. package/esm2022/carousel/public_api.mjs +0 -3
  720. package/esm2022/cascadeselect/cascadeselect.interface.mjs +0 -2
  721. package/esm2022/cascadeselect/cascadeselect.mjs +0 -1135
  722. package/esm2022/cascadeselect/cascadeselect.module.mjs +0 -25
  723. package/esm2022/cascadeselect/cax-design-system-cascadeselect.mjs +0 -5
  724. package/esm2022/cascadeselect/public_api.mjs +0 -4
  725. package/esm2022/cax-design-system.mjs +0 -5
  726. package/esm2022/chart/cax-design-system-chart.mjs +0 -5
  727. package/esm2022/chart/chart.mjs +0 -236
  728. package/esm2022/chart/public_api.mjs +0 -2
  729. package/esm2022/checkbox/cax-design-system-checkbox.mjs +0 -5
  730. package/esm2022/checkbox/checkbox.interface.mjs +0 -2
  731. package/esm2022/checkbox/checkbox.mjs +0 -318
  732. package/esm2022/checkbox/checkbox.module.mjs +0 -20
  733. package/esm2022/checkbox/public_api.mjs +0 -4
  734. package/esm2022/chip/cax-design-system-chip.mjs +0 -5
  735. package/esm2022/chip/chip.interface.mjs +0 -2
  736. package/esm2022/chip/chip.mjs +0 -90
  737. package/esm2022/chip/chip.module.mjs +0 -20
  738. package/esm2022/chip/public_api.mjs +0 -4
  739. package/esm2022/chips/cax-design-system-chips.mjs +0 -5
  740. package/esm2022/chips/chips.interface.mjs +0 -2
  741. package/esm2022/chips/chips.mjs +0 -610
  742. package/esm2022/chips/chips.module.mjs +0 -23
  743. package/esm2022/chips/public_api.mjs +0 -4
  744. package/esm2022/colorpicker/cax-design-system-colorpicker.mjs +0 -5
  745. package/esm2022/colorpicker/colorpicker.interface.mjs +0 -2
  746. package/esm2022/colorpicker/colorpicker.mjs +0 -715
  747. package/esm2022/colorpicker/colorpicker.module.mjs +0 -19
  748. package/esm2022/colorpicker/public_api.mjs +0 -4
  749. package/esm2022/commentbox/cax-design-system-commentbox.mjs +0 -5
  750. package/esm2022/commentbox/commentbox.mjs +0 -575
  751. package/esm2022/commentbox/commentbox.module.mjs +0 -27
  752. package/esm2022/commentbox/public_api.mjs +0 -3
  753. package/esm2022/confirmdialog/cax-design-system-confirmdialog.mjs +0 -5
  754. package/esm2022/confirmdialog/confirmdialog.interface.mjs +0 -2
  755. package/esm2022/confirmdialog/confirmdialog.mjs +0 -720
  756. package/esm2022/confirmdialog/confirmdialog.module.mjs +0 -25
  757. package/esm2022/confirmdialog/public_api.mjs +0 -4
  758. package/esm2022/confirmpopup/cax-design-system-confirmpopup.mjs +0 -5
  759. package/esm2022/confirmpopup/confirmpopup.interface.mjs +0 -2
  760. package/esm2022/confirmpopup/confirmpopup.mjs +0 -499
  761. package/esm2022/confirmpopup/public_api.mjs +0 -3
  762. package/esm2022/contextmenu/cax-design-system-contextmenu.mjs +0 -5
  763. package/esm2022/contextmenu/contextmenu.mjs +0 -1304
  764. package/esm2022/contextmenu/public_api.mjs +0 -2
  765. package/esm2022/dataview/cax-design-system-dataview.mjs +0 -5
  766. package/esm2022/dataview/dataview.interface.mjs +0 -2
  767. package/esm2022/dataview/dataview.mjs +0 -723
  768. package/esm2022/dataview/public_api.mjs +0 -3
  769. package/esm2022/defer/cax-design-system-defer.mjs +0 -5
  770. package/esm2022/defer/defer.mjs +0 -111
  771. package/esm2022/defer/public_api.mjs +0 -2
  772. package/esm2022/dialog/cax-design-system-dialog.mjs +0 -5
  773. package/esm2022/dialog/dialog.interface.mjs +0 -2
  774. package/esm2022/dialog/dialog.mjs +0 -959
  775. package/esm2022/dialog/dialog.module.mjs +0 -25
  776. package/esm2022/dialog/public_api.mjs +0 -4
  777. package/esm2022/divider/cax-design-system-divider.mjs +0 -5
  778. package/esm2022/divider/divider.mjs +0 -69
  779. package/esm2022/divider/divider.module.mjs +0 -16
  780. package/esm2022/divider/public_api.mjs +0 -3
  781. package/esm2022/dock/cax-design-system-dock.mjs +0 -5
  782. package/esm2022/dock/dock.interface.mjs +0 -2
  783. package/esm2022/dock/dock.mjs +0 -431
  784. package/esm2022/dock/public_api.mjs +0 -3
  785. package/esm2022/dom/cax-design-system-dom.mjs +0 -5
  786. package/esm2022/dom/connectedoverlayscrollhandler.mjs +0 -30
  787. package/esm2022/dom/domhandler.mjs +0 -722
  788. package/esm2022/dom/public_api.mjs +0 -3
  789. package/esm2022/dragdrop/cax-design-system-dragdrop.mjs +0 -5
  790. package/esm2022/dragdrop/dragdrop.mjs +0 -309
  791. package/esm2022/dragdrop/dragdrop.module.mjs +0 -18
  792. package/esm2022/dragdrop/public_api.mjs +0 -3
  793. package/esm2022/dropdown/cax-design-system-dropdown.mjs +0 -5
  794. package/esm2022/dropdown/dropdown-item.mjs +0 -72
  795. package/esm2022/dropdown/dropdown.interface.mjs +0 -2
  796. package/esm2022/dropdown/dropdown.mjs +0 -1599
  797. package/esm2022/dropdown/dropdown.module.mjs +0 -20
  798. package/esm2022/dropdown/public_api.mjs +0 -5
  799. package/esm2022/dynamicdialog/cax-design-system-dynamicdialog.mjs +0 -5
  800. package/esm2022/dynamicdialog/dialogservice.mjs +0 -102
  801. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +0 -187
  802. package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +0 -15
  803. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +0 -119
  804. package/esm2022/dynamicdialog/dynamicdialog.mjs +0 -696
  805. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +0 -20
  806. package/esm2022/dynamicdialog/public_api.mjs +0 -7
  807. package/esm2022/editor/cax-design-system-editor.mjs +0 -5
  808. package/esm2022/editor/editor.interface.mjs +0 -2
  809. package/esm2022/editor/editor.mjs +0 -281
  810. package/esm2022/editor/editor.module.mjs +0 -19
  811. package/esm2022/editor/public_api.mjs +0 -4
  812. package/esm2022/fieldset/cax-design-system-fieldset.mjs +0 -5
  813. package/esm2022/fieldset/fieldset.interface.mjs +0 -2
  814. package/esm2022/fieldset/fieldset.mjs +0 -297
  815. package/esm2022/fieldset/public_api.mjs +0 -3
  816. package/esm2022/fileupload/cax-design-system-fileupload.mjs +0 -5
  817. package/esm2022/fileupload/fileupload.interface.mjs +0 -2
  818. package/esm2022/fileupload/fileupload.mjs +0 -1188
  819. package/esm2022/fileupload/public_api.mjs +0 -3
  820. package/esm2022/floatlabel/cax-design-system-floatlabel.mjs +0 -5
  821. package/esm2022/floatlabel/floatlabel.mjs +0 -28
  822. package/esm2022/floatlabel/floatlabel.module.mjs +0 -20
  823. package/esm2022/floatlabel/public_api.mjs +0 -3
  824. package/esm2022/focustrap/cax-design-system-focustrap.mjs +0 -5
  825. package/esm2022/focustrap/focustrap.mjs +0 -103
  826. package/esm2022/focustrap/public_api.mjs +0 -2
  827. package/esm2022/galleria/cax-design-system-galleria.mjs +0 -5
  828. package/esm2022/galleria/galleria.interface.mjs +0 -2
  829. package/esm2022/galleria/galleria.mjs +0 -1668
  830. package/esm2022/galleria/public_api.mjs +0 -3
  831. package/esm2022/iconfield/cax-design-system-iconfield.mjs +0 -5
  832. package/esm2022/iconfield/iconfield.mjs +0 -44
  833. package/esm2022/iconfield/public_api.mjs +0 -2
  834. package/esm2022/icons/angledoubledown/angledoubledown.mjs +0 -35
  835. package/esm2022/icons/angledoubledown/cax-design-system-icons-angledoubledown.mjs +0 -5
  836. package/esm2022/icons/angledoubledown/public_api.mjs +0 -2
  837. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +0 -35
  838. package/esm2022/icons/angledoubleleft/cax-design-system-icons-angledoubleleft.mjs +0 -5
  839. package/esm2022/icons/angledoubleleft/public_api.mjs +0 -2
  840. package/esm2022/icons/angledoubleright/angledoubleright.mjs +0 -35
  841. package/esm2022/icons/angledoubleright/cax-design-system-icons-angledoubleright.mjs +0 -5
  842. package/esm2022/icons/angledoubleright/public_api.mjs +0 -2
  843. package/esm2022/icons/angledoubleup/angledoubleup.mjs +0 -35
  844. package/esm2022/icons/angledoubleup/cax-design-system-icons-angledoubleup.mjs +0 -5
  845. package/esm2022/icons/angledoubleup/public_api.mjs +0 -2
  846. package/esm2022/icons/angledown/angledown.mjs +0 -31
  847. package/esm2022/icons/angledown/cax-design-system-icons-angledown.mjs +0 -5
  848. package/esm2022/icons/angledown/public_api.mjs +0 -2
  849. package/esm2022/icons/angleleft/angleleft.mjs +0 -31
  850. package/esm2022/icons/angleleft/cax-design-system-icons-angleleft.mjs +0 -5
  851. package/esm2022/icons/angleleft/public_api.mjs +0 -2
  852. package/esm2022/icons/angleright/angleright.mjs +0 -31
  853. package/esm2022/icons/angleright/cax-design-system-icons-angleright.mjs +0 -5
  854. package/esm2022/icons/angleright/public_api.mjs +0 -2
  855. package/esm2022/icons/angleup/angleup.mjs +0 -31
  856. package/esm2022/icons/angleup/cax-design-system-icons-angleup.mjs +0 -5
  857. package/esm2022/icons/angleup/public_api.mjs +0 -2
  858. package/esm2022/icons/arrowdown/arrowdown.mjs +0 -54
  859. package/esm2022/icons/arrowdown/cax-design-system-icons-arrowdown.mjs +0 -5
  860. package/esm2022/icons/arrowdown/public_api.mjs +0 -2
  861. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +0 -31
  862. package/esm2022/icons/arrowdownleft/cax-design-system-icons-arrowdownleft.mjs +0 -5
  863. package/esm2022/icons/arrowdownleft/public_api.mjs +0 -2
  864. package/esm2022/icons/arrowdownright/arrowdownright.mjs +0 -31
  865. package/esm2022/icons/arrowdownright/cax-design-system-icons-arrowdownright.mjs +0 -5
  866. package/esm2022/icons/arrowdownright/public_api.mjs +0 -2
  867. package/esm2022/icons/arrowleft/arrowleft.mjs +0 -54
  868. package/esm2022/icons/arrowleft/cax-design-system-icons-arrowleft.mjs +0 -5
  869. package/esm2022/icons/arrowleft/public_api.mjs +0 -2
  870. package/esm2022/icons/arrowright/arrowright.mjs +0 -35
  871. package/esm2022/icons/arrowright/cax-design-system-icons-arrowright.mjs +0 -5
  872. package/esm2022/icons/arrowright/public_api.mjs +0 -2
  873. package/esm2022/icons/arrowup/arrowup.mjs +0 -54
  874. package/esm2022/icons/arrowup/cax-design-system-icons-arrowup.mjs +0 -5
  875. package/esm2022/icons/arrowup/public_api.mjs +0 -2
  876. package/esm2022/icons/ban/ban.mjs +0 -50
  877. package/esm2022/icons/ban/cax-design-system-icons-ban.mjs +0 -5
  878. package/esm2022/icons/ban/public_api.mjs +0 -2
  879. package/esm2022/icons/bars/bars.mjs +0 -35
  880. package/esm2022/icons/bars/cax-design-system-icons-bars.mjs +0 -5
  881. package/esm2022/icons/bars/public_api.mjs +0 -2
  882. package/esm2022/icons/blank/blank.mjs +0 -25
  883. package/esm2022/icons/blank/cax-design-system-icons-blank.mjs +0 -5
  884. package/esm2022/icons/blank/public_api.mjs +0 -2
  885. package/esm2022/icons/calendar/calendar.mjs +0 -31
  886. package/esm2022/icons/calendar/cax-design-system-icons-calendar.mjs +0 -5
  887. package/esm2022/icons/calendar/public_api.mjs +0 -2
  888. package/esm2022/icons/caretleft/caretleft.mjs +0 -31
  889. package/esm2022/icons/caretleft/cax-design-system-icons-caretleft.mjs +0 -5
  890. package/esm2022/icons/caretleft/public_api.mjs +0 -2
  891. package/esm2022/icons/caretright/caretright.mjs +0 -31
  892. package/esm2022/icons/caretright/cax-design-system-icons-caretright.mjs +0 -5
  893. package/esm2022/icons/caretright/public_api.mjs +0 -2
  894. package/esm2022/icons/check/cax-design-system-icons-check.mjs +0 -5
  895. package/esm2022/icons/check/check.mjs +0 -31
  896. package/esm2022/icons/check/public_api.mjs +0 -2
  897. package/esm2022/icons/chevrondown/cax-design-system-icons-chevrondown.mjs +0 -5
  898. package/esm2022/icons/chevrondown/chevrondown.mjs +0 -31
  899. package/esm2022/icons/chevrondown/public_api.mjs +0 -2
  900. package/esm2022/icons/chevronleft/cax-design-system-icons-chevronleft.mjs +0 -5
  901. package/esm2022/icons/chevronleft/chevronleft.mjs +0 -31
  902. package/esm2022/icons/chevronleft/public_api.mjs +0 -2
  903. package/esm2022/icons/chevronright/cax-design-system-icons-chevronright.mjs +0 -5
  904. package/esm2022/icons/chevronright/chevronright.mjs +0 -31
  905. package/esm2022/icons/chevronright/public_api.mjs +0 -2
  906. package/esm2022/icons/chevronup/cax-design-system-icons-chevronup.mjs +0 -5
  907. package/esm2022/icons/chevronup/chevronup.mjs +0 -31
  908. package/esm2022/icons/chevronup/public_api.mjs +0 -2
  909. package/esm2022/icons/exclamationtriangle/cax-design-system-icons-exclamationtriangle.mjs +0 -5
  910. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +0 -66
  911. package/esm2022/icons/exclamationtriangle/public_api.mjs +0 -2
  912. package/esm2022/icons/eye/cax-design-system-icons-eye.mjs +0 -5
  913. package/esm2022/icons/eye/eye.mjs +0 -35
  914. package/esm2022/icons/eye/public_api.mjs +0 -2
  915. package/esm2022/icons/eyeslash/cax-design-system-icons-eyeslash.mjs +0 -5
  916. package/esm2022/icons/eyeslash/eyeslash.mjs +0 -54
  917. package/esm2022/icons/eyeslash/public_api.mjs +0 -2
  918. package/esm2022/icons/filter/cax-design-system-icons-filter.mjs +0 -5
  919. package/esm2022/icons/filter/filter.mjs +0 -50
  920. package/esm2022/icons/filter/public_api.mjs +0 -2
  921. package/esm2022/icons/filterslash/cax-design-system-icons-filterslash.mjs +0 -5
  922. package/esm2022/icons/filterslash/filterslash.mjs +0 -54
  923. package/esm2022/icons/filterslash/public_api.mjs +0 -2
  924. package/esm2022/icons/home/cax-design-system-icons-home.mjs +0 -5
  925. package/esm2022/icons/home/home.mjs +0 -54
  926. package/esm2022/icons/home/public_api.mjs +0 -2
  927. package/esm2022/icons/infocircle/cax-design-system-icons-infocircle.mjs +0 -5
  928. package/esm2022/icons/infocircle/infocircle.mjs +0 -54
  929. package/esm2022/icons/infocircle/public_api.mjs +0 -2
  930. package/esm2022/icons/minus/cax-design-system-icons-minus.mjs +0 -5
  931. package/esm2022/icons/minus/minus.mjs +0 -32
  932. package/esm2022/icons/minus/public_api.mjs +0 -2
  933. package/esm2022/icons/pencil/cax-design-system-icons-pencil.mjs +0 -5
  934. package/esm2022/icons/pencil/pencil.mjs +0 -50
  935. package/esm2022/icons/pencil/public_api.mjs +0 -2
  936. package/esm2022/icons/plus/cax-design-system-icons-plus.mjs +0 -5
  937. package/esm2022/icons/plus/plus.mjs +0 -50
  938. package/esm2022/icons/plus/public_api.mjs +0 -2
  939. package/esm2022/icons/refresh/cax-design-system-icons-refresh.mjs +0 -5
  940. package/esm2022/icons/refresh/public_api.mjs +0 -2
  941. package/esm2022/icons/refresh/refresh.mjs +0 -54
  942. package/esm2022/icons/search/cax-design-system-icons-search.mjs +0 -5
  943. package/esm2022/icons/search/public_api.mjs +0 -2
  944. package/esm2022/icons/search/search.mjs +0 -54
  945. package/esm2022/icons/searchminus/cax-design-system-icons-searchminus.mjs +0 -5
  946. package/esm2022/icons/searchminus/public_api.mjs +0 -2
  947. package/esm2022/icons/searchminus/searchminus.mjs +0 -54
  948. package/esm2022/icons/searchplus/cax-design-system-icons-searchplus.mjs +0 -5
  949. package/esm2022/icons/searchplus/public_api.mjs +0 -2
  950. package/esm2022/icons/searchplus/searchplus.mjs +0 -54
  951. package/esm2022/icons/sortalt/cax-design-system-icons-sortalt.mjs +0 -5
  952. package/esm2022/icons/sortalt/public_api.mjs +0 -2
  953. package/esm2022/icons/sortalt/sortalt.mjs +0 -62
  954. package/esm2022/icons/sortamountdown/cax-design-system-icons-sortamountdown.mjs +0 -5
  955. package/esm2022/icons/sortamountdown/public_api.mjs +0 -2
  956. package/esm2022/icons/sortamountdown/sortamountdown.mjs +0 -50
  957. package/esm2022/icons/sortamountupalt/cax-design-system-icons-sortamountupalt.mjs +0 -5
  958. package/esm2022/icons/sortamountupalt/public_api.mjs +0 -2
  959. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +0 -50
  960. package/esm2022/icons/spinner/cax-design-system-icons-spinner.mjs +0 -5
  961. package/esm2022/icons/spinner/public_api.mjs +0 -2
  962. package/esm2022/icons/spinner/spinner.mjs +0 -50
  963. package/esm2022/icons/star/cax-design-system-icons-star.mjs +0 -5
  964. package/esm2022/icons/star/public_api.mjs +0 -2
  965. package/esm2022/icons/star/star.mjs +0 -50
  966. package/esm2022/icons/starfill/cax-design-system-icons-starfill.mjs +0 -5
  967. package/esm2022/icons/starfill/public_api.mjs +0 -2
  968. package/esm2022/icons/starfill/starfill.mjs +0 -50
  969. package/esm2022/icons/thlarge/cax-design-system-icons-thlarge.mjs +0 -5
  970. package/esm2022/icons/thlarge/public_api.mjs +0 -2
  971. package/esm2022/icons/thlarge/thlarge.mjs +0 -54
  972. package/esm2022/icons/times/cax-design-system-icons-times.mjs +0 -5
  973. package/esm2022/icons/times/public_api.mjs +0 -2
  974. package/esm2022/icons/times/times.mjs +0 -31
  975. package/esm2022/icons/timescircle/cax-design-system-icons-timescircle.mjs +0 -5
  976. package/esm2022/icons/timescircle/public_api.mjs +0 -2
  977. package/esm2022/icons/timescircle/timescircle.mjs +0 -54
  978. package/esm2022/icons/trash/cax-design-system-icons-trash.mjs +0 -5
  979. package/esm2022/icons/trash/public_api.mjs +0 -2
  980. package/esm2022/icons/trash/trash.mjs +0 -54
  981. package/esm2022/icons/undo/cax-design-system-icons-undo.mjs +0 -5
  982. package/esm2022/icons/undo/public_api.mjs +0 -2
  983. package/esm2022/icons/undo/undo.mjs +0 -54
  984. package/esm2022/icons/upload/cax-design-system-icons-upload.mjs +0 -5
  985. package/esm2022/icons/upload/public_api.mjs +0 -2
  986. package/esm2022/icons/upload/upload.mjs +0 -54
  987. package/esm2022/icons/windowmaximize/cax-design-system-icons-windowmaximize.mjs +0 -5
  988. package/esm2022/icons/windowmaximize/public_api.mjs +0 -2
  989. package/esm2022/icons/windowmaximize/windowmaximize.mjs +0 -54
  990. package/esm2022/icons/windowminimize/cax-design-system-icons-windowminimize.mjs +0 -5
  991. package/esm2022/icons/windowminimize/public_api.mjs +0 -2
  992. package/esm2022/icons/windowminimize/windowminimize.mjs +0 -54
  993. package/esm2022/image/cax-design-system-image.mjs +0 -5
  994. package/esm2022/image/image.interface.mjs +0 -2
  995. package/esm2022/image/image.mjs +0 -418
  996. package/esm2022/image/image.module.mjs +0 -17
  997. package/esm2022/image/public_api.mjs +0 -4
  998. package/esm2022/inplace/cax-design-system-inplace.mjs +0 -5
  999. package/esm2022/inplace/inplace.interface.mjs +0 -2
  1000. package/esm2022/inplace/inplace.mjs +0 -243
  1001. package/esm2022/inplace/public_api.mjs +0 -3
  1002. package/esm2022/inputgroup/cax-design-system-inputgroup.mjs +0 -5
  1003. package/esm2022/inputgroup/inputgroup.mjs +0 -55
  1004. package/esm2022/inputgroup/inputgroup.module.mjs +0 -25
  1005. package/esm2022/inputgroup/public_api.mjs +0 -3
  1006. package/esm2022/inputgroupaddon/cax-design-system-inputgroupaddon.mjs +0 -5
  1007. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +0 -32
  1008. package/esm2022/inputgroupaddon/inputgroupaddon.module.mjs +0 -24
  1009. package/esm2022/inputgroupaddon/public_api.mjs +0 -3
  1010. package/esm2022/inputicon/cax-design-system-inputicon.mjs +0 -5
  1011. package/esm2022/inputicon/inputicon.mjs +0 -38
  1012. package/esm2022/inputicon/public_api.mjs +0 -2
  1013. package/esm2022/inputmask/cax-design-system-inputmask.mjs +0 -5
  1014. package/esm2022/inputmask/inputmask.interface.mjs +0 -2
  1015. package/esm2022/inputmask/inputmask.mjs +0 -848
  1016. package/esm2022/inputmask/inputmask.module.mjs +0 -22
  1017. package/esm2022/inputmask/public_api.mjs +0 -4
  1018. package/esm2022/inputnumber/cax-design-system-inputnumber.mjs +0 -5
  1019. package/esm2022/inputnumber/inputnumber.interface.mjs +0 -2
  1020. package/esm2022/inputnumber/inputnumber.mjs +0 -1296
  1021. package/esm2022/inputnumber/inputnumber.module.mjs +0 -17
  1022. package/esm2022/inputnumber/public_api.mjs +0 -4
  1023. package/esm2022/inputotp/cax-design-system-inputotp.mjs +0 -5
  1024. package/esm2022/inputotp/inputotp.interface.mjs +0 -2
  1025. package/esm2022/inputotp/inputotp.mjs +0 -381
  1026. package/esm2022/inputotp/public_api.mjs +0 -3
  1027. package/esm2022/inputswitch/cax-design-system-inputswitch.mjs +0 -5
  1028. package/esm2022/inputswitch/inputswitch.interface.mjs +0 -2
  1029. package/esm2022/inputswitch/inputswitch.mjs +0 -244
  1030. package/esm2022/inputswitch/public_api.mjs +0 -3
  1031. package/esm2022/inputtext/cax-design-system-inputtext.mjs +0 -5
  1032. package/esm2022/inputtext/inputtext.component.mjs +0 -132
  1033. package/esm2022/inputtext/inputtext.directive.mjs +0 -76
  1034. package/esm2022/inputtext/inputtext.module.mjs +0 -20
  1035. package/esm2022/inputtext/public_api.mjs +0 -4
  1036. package/esm2022/inputtextarea/cax-design-system-inputtextarea.mjs +0 -5
  1037. package/esm2022/inputtextarea/inputtextarea.component.mjs +0 -155
  1038. package/esm2022/inputtextarea/inputtextarea.directive.mjs +0 -121
  1039. package/esm2022/inputtextarea/inputtextarea.module.mjs +0 -20
  1040. package/esm2022/inputtextarea/public_api.mjs +0 -4
  1041. package/esm2022/keyfilter/cax-design-system-keyfilter.mjs +0 -5
  1042. package/esm2022/keyfilter/keyfilter.interface.mjs +0 -2
  1043. package/esm2022/keyfilter/keyfilter.mjs +0 -265
  1044. package/esm2022/keyfilter/public_api.mjs +0 -3
  1045. package/esm2022/knob/cax-design-system-knob.mjs +0 -5
  1046. package/esm2022/knob/knob.mjs +0 -464
  1047. package/esm2022/knob/public_api.mjs +0 -2
  1048. package/esm2022/listbox/cax-design-system-listbox.mjs +0 -5
  1049. package/esm2022/listbox/listbox.interface.mjs +0 -2
  1050. package/esm2022/listbox/listbox.mjs +0 -1555
  1051. package/esm2022/listbox/public_api.mjs +0 -3
  1052. package/esm2022/logo/cax-design-system-logo.mjs +0 -5
  1053. package/esm2022/logo/logo.mjs +0 -45
  1054. package/esm2022/logo/logo.module.mjs +0 -16
  1055. package/esm2022/logo/public_api.mjs +0 -3
  1056. package/esm2022/megamenu/cax-design-system-megamenu.mjs +0 -5
  1057. package/esm2022/megamenu/megamenu.interface.mjs +0 -2
  1058. package/esm2022/megamenu/megamenu.mjs +0 -1190
  1059. package/esm2022/megamenu/public_api.mjs +0 -3
  1060. package/esm2022/menu/cax-design-system-menu.mjs +0 -5
  1061. package/esm2022/menu/menu.mjs +0 -626
  1062. package/esm2022/menu/menu.module.mjs +0 -22
  1063. package/esm2022/menu/public_api.mjs +0 -3
  1064. package/esm2022/menubar/cax-design-system-menubar.mjs +0 -5
  1065. package/esm2022/menubar/menubar.interface.mjs +0 -2
  1066. package/esm2022/menubar/menubar.mjs +0 -1249
  1067. package/esm2022/menubar/public_api.mjs +0 -3
  1068. package/esm2022/message/cax-design-system-message.mjs +0 -5
  1069. package/esm2022/message/message.mjs +0 -112
  1070. package/esm2022/message/public_api.mjs +0 -2
  1071. package/esm2022/messages/cax-design-system-messages.mjs +0 -5
  1072. package/esm2022/messages/messages.interface.mjs +0 -2
  1073. package/esm2022/messages/messages.mjs +0 -283
  1074. package/esm2022/messages/messages.module.mjs +0 -17
  1075. package/esm2022/messages/public_api.mjs +0 -4
  1076. package/esm2022/metergroup/cax-design-system-metergroup.mjs +0 -5
  1077. package/esm2022/metergroup/metergroup.interface.mjs +0 -2
  1078. package/esm2022/metergroup/metergroup.mjs +0 -280
  1079. package/esm2022/metergroup/public_api.mjs +0 -3
  1080. package/esm2022/multiselect/cax-design-system-multiselect.mjs +0 -5
  1081. package/esm2022/multiselect/multiselect.interface.mjs +0 -2
  1082. package/esm2022/multiselect/multiselect.mjs +0 -1875
  1083. package/esm2022/multiselect/multiselect.module.mjs +0 -30
  1084. package/esm2022/multiselect/public_api.mjs +0 -4
  1085. package/esm2022/navigation/cax-design-system-navigation.mjs +0 -5
  1086. package/esm2022/navigation/navigation.interface.mjs +0 -2
  1087. package/esm2022/navigation/navigation.mjs +0 -399
  1088. package/esm2022/navigation/navigation.module.mjs +0 -16
  1089. package/esm2022/navigation/public_api.mjs +0 -3
  1090. package/esm2022/orderlist/cax-design-system-orderlist.mjs +0 -5
  1091. package/esm2022/orderlist/orderlist.interface.mjs +0 -2
  1092. package/esm2022/orderlist/orderlist.mjs +0 -993
  1093. package/esm2022/orderlist/public_api.mjs +0 -3
  1094. package/esm2022/organizationchart/cax-design-system-organizationchart.mjs +0 -5
  1095. package/esm2022/organizationchart/organizationchart.interface.mjs +0 -2
  1096. package/esm2022/organizationchart/organizationchart.mjs +0 -416
  1097. package/esm2022/organizationchart/public_api.mjs +0 -3
  1098. package/esm2022/overlay/cax-design-system-overlay.mjs +0 -5
  1099. package/esm2022/overlay/overlay.mjs +0 -579
  1100. package/esm2022/overlay/overlay.module.mjs +0 -17
  1101. package/esm2022/overlay/public_api.mjs +0 -3
  1102. package/esm2022/overlaypanel/cax-design-system-overlaypanel.mjs +0 -5
  1103. package/esm2022/overlaypanel/overlaypanel.mjs +0 -470
  1104. package/esm2022/overlaypanel/overlaypanel.module.mjs +0 -17
  1105. package/esm2022/overlaypanel/public_api.mjs +0 -3
  1106. package/esm2022/paginator/cax-design-system-paginator.mjs +0 -5
  1107. package/esm2022/paginator/paginator.interface.mjs +0 -2
  1108. package/esm2022/paginator/paginator.mjs +0 -437
  1109. package/esm2022/paginator/paginator.module.mjs +0 -27
  1110. package/esm2022/paginator/public_api.mjs +0 -4
  1111. package/esm2022/panel/cax-design-system-panel.mjs +0 -5
  1112. package/esm2022/panel/panel.interface.mjs +0 -2
  1113. package/esm2022/panel/panel.mjs +0 -393
  1114. package/esm2022/panel/public_api.mjs +0 -3
  1115. package/esm2022/panelmenu/cax-design-system-panelmenu.mjs +0 -5
  1116. package/esm2022/panelmenu/panelmenu.interface.mjs +0 -2
  1117. package/esm2022/panelmenu/panelmenu.mjs +0 -1276
  1118. package/esm2022/panelmenu/public_api.mjs +0 -3
  1119. package/esm2022/password/cax-design-system-password.mjs +0 -5
  1120. package/esm2022/password/password.mjs +0 -1017
  1121. package/esm2022/password/public_api.mjs +0 -2
  1122. package/esm2022/picklist/cax-design-system-picklist.mjs +0 -5
  1123. package/esm2022/picklist/picklist.interface.mjs +0 -2
  1124. package/esm2022/picklist/picklist.mjs +0 -1909
  1125. package/esm2022/picklist/public_api.mjs +0 -3
  1126. package/esm2022/progressbar/cax-design-system-progressbar.mjs +0 -5
  1127. package/esm2022/progressbar/progressbar.mjs +0 -86
  1128. package/esm2022/progressbar/progressbar.module.mjs +0 -18
  1129. package/esm2022/progressbar/public_api.mjs +0 -3
  1130. package/esm2022/progressspinner/cax-design-system-progressspinner.mjs +0 -5
  1131. package/esm2022/progressspinner/progressspinner.mjs +0 -112
  1132. package/esm2022/progressspinner/progressspinner.module.mjs +0 -18
  1133. package/esm2022/progressspinner/public_api.mjs +0 -3
  1134. package/esm2022/public_api.mjs +0 -2
  1135. package/esm2022/radiobutton/cax-design-system-radiobutton.mjs +0 -5
  1136. package/esm2022/radiobutton/public_api.mjs +0 -4
  1137. package/esm2022/radiobutton/radiobutton.interface.mjs +0 -2
  1138. package/esm2022/radiobutton/radiobutton.mjs +0 -284
  1139. package/esm2022/radiobutton/radiobutton.module.mjs +0 -16
  1140. package/esm2022/rating/cax-design-system-rating.mjs +0 -5
  1141. package/esm2022/rating/public_api.mjs +0 -3
  1142. package/esm2022/rating/rating.interface.mjs +0 -2
  1143. package/esm2022/rating/rating.mjs +0 -388
  1144. package/esm2022/ripple/cax-design-system-ripple.mjs +0 -5
  1145. package/esm2022/ripple/public_api.mjs +0 -3
  1146. package/esm2022/ripple/ripple.mjs +0 -129
  1147. package/esm2022/ripple/ripple.module.mjs +0 -16
  1148. package/esm2022/scroller/cax-design-system-scroller.mjs +0 -5
  1149. package/esm2022/scroller/public_api.mjs +0 -4
  1150. package/esm2022/scroller/scroller.interface.mjs +0 -2
  1151. package/esm2022/scroller/scroller.mjs +0 -981
  1152. package/esm2022/scroller/scroller.module.mjs +0 -17
  1153. package/esm2022/scrollpanel/cax-design-system-scrollpanel.mjs +0 -5
  1154. package/esm2022/scrollpanel/public_api.mjs +0 -3
  1155. package/esm2022/scrollpanel/scrollpanel.interface.mjs +0 -2
  1156. package/esm2022/scrollpanel/scrollpanel.mjs +0 -501
  1157. package/esm2022/scrolltop/cax-design-system-scrolltop.mjs +0 -5
  1158. package/esm2022/scrolltop/public_api.mjs +0 -3
  1159. package/esm2022/scrolltop/scrolltop.interface.mjs +0 -2
  1160. package/esm2022/scrolltop/scrolltop.mjs +0 -282
  1161. package/esm2022/selectbutton/cax-design-system-selectbutton.mjs +0 -5
  1162. package/esm2022/selectbutton/public_api.mjs +0 -4
  1163. package/esm2022/selectbutton/selectbutton.interface.mjs +0 -2
  1164. package/esm2022/selectbutton/selectbutton.mjs +0 -303
  1165. package/esm2022/selectbutton/selectbutton.module.mjs +0 -21
  1166. package/esm2022/sidebar/cax-design-system-sidebar.mjs +0 -5
  1167. package/esm2022/sidebar/public_api.mjs +0 -4
  1168. package/esm2022/sidebar/sidebar.interface.mjs +0 -2
  1169. package/esm2022/sidebar/sidebar.mjs +0 -488
  1170. package/esm2022/sidebar/sidebar.module.mjs +0 -21
  1171. package/esm2022/skeleton/cax-design-system-skeleton.mjs +0 -5
  1172. package/esm2022/skeleton/public_api.mjs +0 -3
  1173. package/esm2022/skeleton/skeleton.mjs +0 -87
  1174. package/esm2022/skeleton/skeleton.module.mjs +0 -18
  1175. package/esm2022/slidemenu/cax-design-system-slidemenu.mjs +0 -5
  1176. package/esm2022/slidemenu/public_api.mjs +0 -3
  1177. package/esm2022/slidemenu/slidemenu.interface.mjs +0 -2
  1178. package/esm2022/slidemenu/slidemenu.mjs +0 -1501
  1179. package/esm2022/slider/cax-design-system-slider.mjs +0 -5
  1180. package/esm2022/slider/public_api.mjs +0 -3
  1181. package/esm2022/slider/slider.interface.mjs +0 -2
  1182. package/esm2022/slider/slider.mjs +0 -796
  1183. package/esm2022/speeddial/cax-design-system-speeddial.mjs +0 -5
  1184. package/esm2022/speeddial/public_api.mjs +0 -4
  1185. package/esm2022/speeddial/speeddial.interface.mjs +0 -2
  1186. package/esm2022/speeddial/speeddial.mjs +0 -611
  1187. package/esm2022/speeddial/speeddial.module.mjs +0 -24
  1188. package/esm2022/spinner/cax-design-system-spinner.mjs +0 -5
  1189. package/esm2022/spinner/public_api.mjs +0 -2
  1190. package/esm2022/spinner/spinner.mjs +0 -447
  1191. package/esm2022/splitbutton/cax-design-system-splitbutton.mjs +0 -5
  1192. package/esm2022/splitbutton/public_api.mjs +0 -4
  1193. package/esm2022/splitbutton/splitbutton.interface.mjs +0 -2
  1194. package/esm2022/splitbutton/splitbutton.mjs +0 -369
  1195. package/esm2022/splitbutton/splitbutton.module.mjs +0 -23
  1196. package/esm2022/splitter/cax-design-system-splitter.mjs +0 -5
  1197. package/esm2022/splitter/public_api.mjs +0 -4
  1198. package/esm2022/splitter/splitter.interface.mjs +0 -2
  1199. package/esm2022/splitter/splitter.mjs +0 -490
  1200. package/esm2022/splitter/splitter.module.mjs +0 -19
  1201. package/esm2022/stepper/cax-design-system-stepper.mjs +0 -5
  1202. package/esm2022/stepper/public_api.mjs +0 -3
  1203. package/esm2022/stepper/stepper.interface.mjs +0 -2
  1204. package/esm2022/stepper/stepper.mjs +0 -677
  1205. package/esm2022/steps/cax-design-system-steps.mjs +0 -5
  1206. package/esm2022/steps/public_api.mjs +0 -3
  1207. package/esm2022/steps/steps.mjs +0 -207
  1208. package/esm2022/steps/steps.module.mjs +0 -20
  1209. package/esm2022/styleclass/cax-design-system-styleclass.mjs +0 -5
  1210. package/esm2022/styleclass/public_api.mjs +0 -2
  1211. package/esm2022/styleclass/styleclass.mjs +0 -316
  1212. package/esm2022/table/cax-design-system-table.mjs +0 -5
  1213. package/esm2022/table/columnfilter.interface.mjs +0 -2
  1214. package/esm2022/table/components/cell-editor/cell-editor.mjs +0 -52
  1215. package/esm2022/table/components/column-filter/column-filter.mjs +0 -865
  1216. package/esm2022/table/components/column-filter-form-element/column-filter-form-element.mjs +0 -107
  1217. package/esm2022/table/components/sort-icon/sort-icon.mjs +0 -78
  1218. package/esm2022/table/components/table-body/table-body.mjs +0 -152
  1219. package/esm2022/table/components/table-checkbox/table-checkbox.mjs +0 -83
  1220. package/esm2022/table/components/table-header-checkbox/table-header-checkbox.mjs +0 -92
  1221. package/esm2022/table/components/table-radio-button/table-radio-button.mjs +0 -79
  1222. package/esm2022/table/directives/cancel-editable-row.directive.mjs +0 -32
  1223. package/esm2022/table/directives/cell-highlight.directive.mjs +0 -42
  1224. package/esm2022/table/directives/content-menu-row.directive.mjs +0 -70
  1225. package/esm2022/table/directives/dynamic-column-width.directive.mjs +0 -34
  1226. package/esm2022/table/directives/editable-column.directive.mjs +0 -344
  1227. package/esm2022/table/directives/editable-row.directive.mjs +0 -32
  1228. package/esm2022/table/directives/frozen-column.directive.mjs +0 -77
  1229. package/esm2022/table/directives/init-editable-row.directive.mjs +0 -32
  1230. package/esm2022/table/directives/reorderable-column.directive.mjs +0 -115
  1231. package/esm2022/table/directives/reorderable-row-handle.directive.mjs +0 -25
  1232. package/esm2022/table/directives/reorderable-row.directive.mjs +0 -122
  1233. package/esm2022/table/directives/resizable-column.directive.mjs +0 -123
  1234. package/esm2022/table/directives/row-group-header.directive.mjs +0 -26
  1235. package/esm2022/table/directives/row-toggler.directive.mjs +0 -42
  1236. package/esm2022/table/directives/save-editable-row.directive.mjs +0 -32
  1237. package/esm2022/table/directives/selectable-row-double-click.directive.mjs +0 -71
  1238. package/esm2022/table/directives/selectable-row.directive.mjs +0 -243
  1239. package/esm2022/table/directives/sortable-column.directive.mjs +0 -90
  1240. package/esm2022/table/public_api.mjs +0 -31
  1241. package/esm2022/table/table.interface.mjs +0 -2
  1242. package/esm2022/table/table.mjs +0 -2799
  1243. package/esm2022/table/table.module.mjs +0 -157
  1244. package/esm2022/table/table.service.mjs +0 -42
  1245. package/esm2022/tableconfiguration/cax-design-system-tableconfiguration.mjs +0 -5
  1246. package/esm2022/tableconfiguration/public_api.mjs +0 -3
  1247. package/esm2022/tableconfiguration/tableconfiguration.mjs +0 -60
  1248. package/esm2022/tableconfiguration/tableconfiguration.module.mjs +0 -16
  1249. package/esm2022/tabmenu/cax-design-system-tabmenu.mjs +0 -5
  1250. package/esm2022/tabmenu/public_api.mjs +0 -3
  1251. package/esm2022/tabmenu/tabmenu.interface.mjs +0 -2
  1252. package/esm2022/tabmenu/tabmenu.mjs +0 -576
  1253. package/esm2022/tabview/cax-design-system-tabview.mjs +0 -5
  1254. package/esm2022/tabview/public_api.mjs +0 -4
  1255. package/esm2022/tabview/tabview.interface.mjs +0 -2
  1256. package/esm2022/tabview/tabview.mjs +0 -913
  1257. package/esm2022/tabview/tabview.module.mjs +0 -25
  1258. package/esm2022/tag/cax-design-system-tag.mjs +0 -5
  1259. package/esm2022/tag/public_api.mjs +0 -4
  1260. package/esm2022/tag/tag.interface.mjs +0 -2
  1261. package/esm2022/tag/tag.mjs +0 -95
  1262. package/esm2022/tag/tag.module.mjs +0 -19
  1263. package/esm2022/terminal/cax-design-system-terminal.mjs +0 -5
  1264. package/esm2022/terminal/public_api.mjs +0 -3
  1265. package/esm2022/terminal/terminal.mjs +0 -143
  1266. package/esm2022/terminal/terminalservice.mjs +0 -25
  1267. package/esm2022/tieredmenu/cax-design-system-tieredmenu.mjs +0 -5
  1268. package/esm2022/tieredmenu/public_api.mjs +0 -4
  1269. package/esm2022/tieredmenu/tieredmenu.interface.mjs +0 -2
  1270. package/esm2022/tieredmenu/tieredmenu.mjs +0 -1289
  1271. package/esm2022/tieredmenu/tiredmenu.module.mjs +0 -23
  1272. package/esm2022/timeline/cax-design-system-timeline.mjs +0 -5
  1273. package/esm2022/timeline/public_api.mjs +0 -4
  1274. package/esm2022/timeline/timeline.interface.mjs +0 -2
  1275. package/esm2022/timeline/timeline.mjs +0 -83
  1276. package/esm2022/timeline/timeline.module.mjs +0 -19
  1277. package/esm2022/toast/cax-design-system-toast.mjs +0 -5
  1278. package/esm2022/toast/public_api.mjs +0 -4
  1279. package/esm2022/toast/toast.interface.mjs +0 -2
  1280. package/esm2022/toast/toast.mjs +0 -324
  1281. package/esm2022/toast/toast.module.mjs +0 -18
  1282. package/esm2022/toast/toastitem.mjs +0 -170
  1283. package/esm2022/togglebutton/cax-design-system-togglebutton.mjs +0 -5
  1284. package/esm2022/togglebutton/public_api.mjs +0 -3
  1285. package/esm2022/togglebutton/togglebutton.interface.mjs +0 -2
  1286. package/esm2022/togglebutton/togglebutton.mjs +0 -274
  1287. package/esm2022/toggleswitch/cax-design-system-toggleswitch.mjs +0 -5
  1288. package/esm2022/toggleswitch/public_api.mjs +0 -3
  1289. package/esm2022/toggleswitch/toggleswitch.mjs +0 -37
  1290. package/esm2022/toggleswitch/toggleswitch.module.mjs +0 -19
  1291. package/esm2022/toolbar/cax-design-system-toolbar.mjs +0 -5
  1292. package/esm2022/toolbar/public_api.mjs +0 -3
  1293. package/esm2022/toolbar/toolbar.interface.mjs +0 -2
  1294. package/esm2022/toolbar/toolbar.mjs +0 -111
  1295. package/esm2022/tooltip/cax-design-system-tooltip.mjs +0 -5
  1296. package/esm2022/tooltip/public_api.mjs +0 -3
  1297. package/esm2022/tooltip/tooltip.mjs +0 -889
  1298. package/esm2022/tooltip/tooltip.module.mjs +0 -20
  1299. package/esm2022/tree/cax-design-system-tree.mjs +0 -5
  1300. package/esm2022/tree/public_api.mjs +0 -4
  1301. package/esm2022/tree/tree.interface.mjs +0 -2
  1302. package/esm2022/tree/tree.mjs +0 -1544
  1303. package/esm2022/tree/tree.module.mjs +0 -31
  1304. package/esm2022/treeselect/cax-design-system-treeselect.mjs +0 -5
  1305. package/esm2022/treeselect/public_api.mjs +0 -4
  1306. package/esm2022/treeselect/treeselect.interface.mjs +0 -2
  1307. package/esm2022/treeselect/treeselect.mjs +0 -865
  1308. package/esm2022/treeselect/treeselect.module.mjs +0 -26
  1309. package/esm2022/treetable/cax-design-system-treetable.mjs +0 -5
  1310. package/esm2022/treetable/public_api.mjs +0 -3
  1311. package/esm2022/treetable/treetable.interface.mjs +0 -2
  1312. package/esm2022/treetable/treetable.mjs +0 -4111
  1313. package/esm2022/tristatecheckbox/cax-design-system-tristatecheckbox.mjs +0 -5
  1314. package/esm2022/tristatecheckbox/public_api.mjs +0 -4
  1315. package/esm2022/tristatecheckbox/tristatecheckbox.interface.mjs +0 -2
  1316. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +0 -215
  1317. package/esm2022/tristatecheckbox/tristatecheckbox.module.mjs +0 -17
  1318. package/esm2022/ts-helpers/cax-design-system-ts-helpers.mjs +0 -5
  1319. package/esm2022/ts-helpers/public_api.mjs +0 -2
  1320. package/esm2022/ts-helpers/ts-helpers.mjs +0 -2
  1321. package/esm2022/upload/cax-design-system-upload.mjs +0 -5
  1322. package/esm2022/upload/public_api.mjs +0 -3
  1323. package/esm2022/upload/upload.component.mjs +0 -367
  1324. package/esm2022/upload/upload.component.module.mjs +0 -21
  1325. package/esm2022/utils/cax-design-system-utils.mjs +0 -5
  1326. package/esm2022/utils/objectutils.mjs +0 -258
  1327. package/esm2022/utils/public_api.mjs +0 -5
  1328. package/esm2022/utils/uniquecomponentid.mjs +0 -6
  1329. package/esm2022/utils/zindexutils.mjs +0 -35
  1330. package/esm2022/virtualscroller/cax-design-system-virtualscroller.mjs +0 -5
  1331. package/esm2022/virtualscroller/public_api.mjs +0 -3
  1332. package/esm2022/virtualscroller/virtualscroller.interface.mjs +0 -2
  1333. package/esm2022/virtualscroller/virtualscroller.mjs +0 -215
  1334. package/fieldset/fieldset.d.ts +0 -93
  1335. package/fieldset/fieldset.interface.d.ts +0 -46
  1336. package/fieldset/public_api.d.ts +0 -2
  1337. package/fileupload/fileupload.d.ts +0 -380
  1338. package/fileupload/fileupload.interface.d.ts +0 -226
  1339. package/fileupload/public_api.d.ts +0 -2
  1340. package/floatlabel/floatlabel.d.ts +0 -9
  1341. package/floatlabel/floatlabel.module.d.ts +0 -10
  1342. package/floatlabel/public_api.d.ts +0 -2
  1343. package/focustrap/focustrap.d.ts +0 -34
  1344. package/focustrap/public_api.d.ts +0 -1
  1345. package/galleria/galleria.d.ts +0 -404
  1346. package/galleria/galleria.interface.d.ts +0 -97
  1347. package/galleria/public_api.d.ts +0 -2
  1348. package/iconfield/iconfield.d.ts +0 -25
  1349. package/iconfield/public_api.d.ts +0 -1
  1350. package/icons/angledoubledown/angledoubledown.d.ts +0 -6
  1351. package/icons/angledoubledown/public_api.d.ts +0 -1
  1352. package/icons/angledoubleleft/angledoubleleft.d.ts +0 -6
  1353. package/icons/angledoubleleft/public_api.d.ts +0 -1
  1354. package/icons/angledoubleright/angledoubleright.d.ts +0 -6
  1355. package/icons/angledoubleright/public_api.d.ts +0 -1
  1356. package/icons/angledoubleup/angledoubleup.d.ts +0 -6
  1357. package/icons/angledoubleup/public_api.d.ts +0 -1
  1358. package/icons/angledown/angledown.d.ts +0 -6
  1359. package/icons/angledown/public_api.d.ts +0 -1
  1360. package/icons/angleleft/angleleft.d.ts +0 -6
  1361. package/icons/angleleft/public_api.d.ts +0 -1
  1362. package/icons/angleright/angleright.d.ts +0 -6
  1363. package/icons/angleright/public_api.d.ts +0 -1
  1364. package/icons/angleup/angleup.d.ts +0 -6
  1365. package/icons/angleup/public_api.d.ts +0 -1
  1366. package/icons/arrowdown/arrowdown.d.ts +0 -9
  1367. package/icons/arrowdown/public_api.d.ts +0 -1
  1368. package/icons/arrowdownleft/arrowdownleft.d.ts +0 -6
  1369. package/icons/arrowdownleft/public_api.d.ts +0 -1
  1370. package/icons/arrowdownright/arrowdownright.d.ts +0 -6
  1371. package/icons/arrowdownright/public_api.d.ts +0 -1
  1372. package/icons/arrowleft/arrowleft.d.ts +0 -8
  1373. package/icons/arrowleft/public_api.d.ts +0 -1
  1374. package/icons/arrowright/arrowright.d.ts +0 -6
  1375. package/icons/arrowright/public_api.d.ts +0 -1
  1376. package/icons/arrowup/arrowup.d.ts +0 -8
  1377. package/icons/arrowup/public_api.d.ts +0 -1
  1378. package/icons/ban/ban.d.ts +0 -8
  1379. package/icons/ban/public_api.d.ts +0 -1
  1380. package/icons/bars/bars.d.ts +0 -6
  1381. package/icons/bars/public_api.d.ts +0 -1
  1382. package/icons/blank/blank.d.ts +0 -6
  1383. package/icons/blank/public_api.d.ts +0 -1
  1384. package/icons/calendar/calendar.d.ts +0 -6
  1385. package/icons/calendar/public_api.d.ts +0 -1
  1386. package/icons/caretleft/caretleft.d.ts +0 -6
  1387. package/icons/caretleft/public_api.d.ts +0 -1
  1388. package/icons/caretright/caretright.d.ts +0 -6
  1389. package/icons/caretright/public_api.d.ts +0 -1
  1390. package/icons/check/check.d.ts +0 -6
  1391. package/icons/check/public_api.d.ts +0 -1
  1392. package/icons/chevrondown/chevrondown.d.ts +0 -6
  1393. package/icons/chevrondown/public_api.d.ts +0 -1
  1394. package/icons/chevronleft/chevronleft.d.ts +0 -6
  1395. package/icons/chevronleft/public_api.d.ts +0 -1
  1396. package/icons/chevronright/chevronright.d.ts +0 -6
  1397. package/icons/chevronright/public_api.d.ts +0 -1
  1398. package/icons/chevronup/chevronup.d.ts +0 -6
  1399. package/icons/chevronup/public_api.d.ts +0 -1
  1400. package/icons/exclamationtriangle/exclamationtriangle.d.ts +0 -9
  1401. package/icons/exclamationtriangle/public_api.d.ts +0 -1
  1402. package/icons/eye/eye.d.ts +0 -6
  1403. package/icons/eye/public_api.d.ts +0 -1
  1404. package/icons/eyeslash/eyeslash.d.ts +0 -8
  1405. package/icons/eyeslash/public_api.d.ts +0 -1
  1406. package/icons/filter/filter.d.ts +0 -8
  1407. package/icons/filter/public_api.d.ts +0 -1
  1408. package/icons/filterslash/filterslash.d.ts +0 -8
  1409. package/icons/filterslash/public_api.d.ts +0 -1
  1410. package/icons/home/home.d.ts +0 -8
  1411. package/icons/home/public_api.d.ts +0 -1
  1412. package/icons/infocircle/infocircle.d.ts +0 -8
  1413. package/icons/infocircle/public_api.d.ts +0 -1
  1414. package/icons/minus/minus.d.ts +0 -6
  1415. package/icons/minus/public_api.d.ts +0 -1
  1416. package/icons/pencil/pencil.d.ts +0 -8
  1417. package/icons/pencil/public_api.d.ts +0 -1
  1418. package/icons/plus/plus.d.ts +0 -8
  1419. package/icons/plus/public_api.d.ts +0 -1
  1420. package/icons/refresh/public_api.d.ts +0 -1
  1421. package/icons/refresh/refresh.d.ts +0 -8
  1422. package/icons/search/public_api.d.ts +0 -1
  1423. package/icons/search/search.d.ts +0 -8
  1424. package/icons/searchminus/public_api.d.ts +0 -1
  1425. package/icons/searchminus/searchminus.d.ts +0 -8
  1426. package/icons/searchplus/public_api.d.ts +0 -1
  1427. package/icons/searchplus/searchplus.d.ts +0 -8
  1428. package/icons/sortalt/public_api.d.ts +0 -1
  1429. package/icons/sortalt/sortalt.d.ts +0 -8
  1430. package/icons/sortamountdown/public_api.d.ts +0 -1
  1431. package/icons/sortamountdown/sortamountdown.d.ts +0 -8
  1432. package/icons/sortamountupalt/public_api.d.ts +0 -1
  1433. package/icons/sortamountupalt/sortamountupalt.d.ts +0 -8
  1434. package/icons/spinner/public_api.d.ts +0 -1
  1435. package/icons/spinner/spinner.d.ts +0 -8
  1436. package/icons/star/public_api.d.ts +0 -1
  1437. package/icons/star/star.d.ts +0 -8
  1438. package/icons/starfill/public_api.d.ts +0 -1
  1439. package/icons/starfill/starfill.d.ts +0 -8
  1440. package/icons/thlarge/public_api.d.ts +0 -1
  1441. package/icons/thlarge/thlarge.d.ts +0 -8
  1442. package/icons/times/public_api.d.ts +0 -1
  1443. package/icons/times/times.d.ts +0 -6
  1444. package/icons/timescircle/public_api.d.ts +0 -1
  1445. package/icons/timescircle/timescircle.d.ts +0 -8
  1446. package/icons/trash/public_api.d.ts +0 -1
  1447. package/icons/trash/trash.d.ts +0 -8
  1448. package/icons/undo/public_api.d.ts +0 -1
  1449. package/icons/undo/undo.d.ts +0 -8
  1450. package/icons/upload/public_api.d.ts +0 -1
  1451. package/icons/upload/upload.d.ts +0 -8
  1452. package/icons/windowmaximize/public_api.d.ts +0 -1
  1453. package/icons/windowmaximize/windowmaximize.d.ts +0 -8
  1454. package/icons/windowminimize/public_api.d.ts +0 -1
  1455. package/icons/windowminimize/windowminimize.d.ts +0 -8
  1456. package/image/image.d.ts +0 -188
  1457. package/image/image.interface.d.ts +0 -31
  1458. package/image/image.module.d.ts +0 -8
  1459. package/image/public_api.d.ts +0 -3
  1460. package/inplace/inplace.d.ts +0 -109
  1461. package/inplace/inplace.interface.d.ts +0 -19
  1462. package/inplace/public_api.d.ts +0 -2
  1463. package/inputgroup/inputgroup.d.ts +0 -33
  1464. package/inputgroup/inputgroup.module.d.ts +0 -15
  1465. package/inputgroup/public_api.d.ts +0 -2
  1466. package/inputgroupaddon/inputgroupaddon.d.ts +0 -21
  1467. package/inputgroupaddon/inputgroupaddon.module.d.ts +0 -14
  1468. package/inputgroupaddon/public_api.d.ts +0 -2
  1469. package/inputicon/inputicon.d.ts +0 -21
  1470. package/inputicon/public_api.d.ts +0 -1
  1471. package/inputmask/inputmask.d.ts +0 -273
  1472. package/inputmask/inputmask.interface.d.ts +0 -19
  1473. package/inputmask/inputmask.module.d.ts +0 -12
  1474. package/inputmask/public_api.d.ts +0 -3
  1475. package/inputnumber/inputnumber.d.ts +0 -397
  1476. package/inputnumber/inputnumber.interface.d.ts +0 -38
  1477. package/inputnumber/inputnumber.module.d.ts +0 -8
  1478. package/inputnumber/public_api.d.ts +0 -3
  1479. package/inputotp/inputotp.d.ts +0 -123
  1480. package/inputotp/inputotp.interface.d.ts +0 -65
  1481. package/inputotp/public_api.d.ts +0 -2
  1482. package/inputswitch/inputswitch.d.ts +0 -106
  1483. package/inputswitch/inputswitch.interface.d.ts +0 -15
  1484. package/inputswitch/public_api.d.ts +0 -2
  1485. package/inputtext/inputtext.component.d.ts +0 -43
  1486. package/inputtext/inputtext.directive.d.ts +0 -25
  1487. package/inputtext/inputtext.module.d.ts +0 -10
  1488. package/inputtext/public_api.d.ts +0 -3
  1489. package/inputtextarea/inputtextarea.component.d.ts +0 -57
  1490. package/inputtextarea/inputtextarea.directive.d.ts +0 -47
  1491. package/inputtextarea/inputtextarea.module.d.ts +0 -10
  1492. package/inputtextarea/public_api.d.ts +0 -3
  1493. package/keyfilter/keyfilter.d.ts +0 -58
  1494. package/keyfilter/keyfilter.interface.d.ts +0 -5
  1495. package/keyfilter/public_api.d.ts +0 -2
  1496. package/knob/knob.d.ts +0 -178
  1497. package/knob/public_api.d.ts +0 -1
  1498. package/listbox/listbox.d.ts +0 -463
  1499. package/listbox/listbox.interface.d.ts +0 -156
  1500. package/listbox/public_api.d.ts +0 -2
  1501. package/logo/logo.d.ts +0 -11
  1502. package/logo/logo.module.d.ts +0 -7
  1503. package/logo/public_api.d.ts +0 -2
  1504. package/megamenu/megamenu.d.ts +0 -198
  1505. package/megamenu/megamenu.interface.d.ts +0 -31
  1506. package/megamenu/public_api.d.ts +0 -2
  1507. package/menu/menu.d.ts +0 -210
  1508. package/menu/menu.module.d.ts +0 -12
  1509. package/menu/public_api.d.ts +0 -2
  1510. package/menubar/menubar.d.ts +0 -248
  1511. package/menubar/menubar.interface.d.ts +0 -40
  1512. package/menubar/public_api.d.ts +0 -2
  1513. package/message/message.d.ts +0 -52
  1514. package/message/public_api.d.ts +0 -1
  1515. package/messages/messages.d.ts +0 -115
  1516. package/messages/messages.interface.d.ts +0 -18
  1517. package/messages/messages.module.d.ts +0 -8
  1518. package/messages/public_api.d.ts +0 -3
  1519. package/metergroup/metergroup.d.ts +0 -101
  1520. package/metergroup/metergroup.interface.d.ts +0 -122
  1521. package/metergroup/public_api.d.ts +0 -2
  1522. package/multiselect/multiselect.d.ts +0 -710
  1523. package/multiselect/multiselect.interface.d.ts +0 -247
  1524. package/multiselect/multiselect.module.d.ts +0 -20
  1525. package/multiselect/public_api.d.ts +0 -3
  1526. package/navigation/navigation.d.ts +0 -70
  1527. package/navigation/navigation.interface.d.ts +0 -26
  1528. package/navigation/navigation.module.d.ts +0 -7
  1529. package/navigation/public_api.d.ts +0 -2
  1530. package/orderlist/orderlist.d.ts +0 -270
  1531. package/orderlist/orderlist.interface.d.ts +0 -110
  1532. package/orderlist/public_api.d.ts +0 -2
  1533. package/organizationchart/organizationchart.d.ts +0 -132
  1534. package/organizationchart/organizationchart.interface.d.ts +0 -59
  1535. package/organizationchart/public_api.d.ts +0 -2
  1536. package/overlay/overlay.d.ts +0 -238
  1537. package/overlay/overlay.module.d.ts +0 -8
  1538. package/overlay/public_api.d.ts +0 -2
  1539. package/overlaypanel/overlaypanel.d.ts +0 -162
  1540. package/overlaypanel/overlaypanel.module.d.ts +0 -8
  1541. package/overlaypanel/public_api.d.ts +0 -2
  1542. package/paginator/paginator.d.ts +0 -195
  1543. package/paginator/paginator.interface.d.ts +0 -37
  1544. package/paginator/paginator.module.d.ts +0 -17
  1545. package/paginator/public_api.d.ts +0 -3
  1546. package/panel/panel.d.ts +0 -126
  1547. package/panel/panel.interface.d.ts +0 -58
  1548. package/panel/public_api.d.ts +0 -2
  1549. package/panelmenu/panelmenu.d.ts +0 -225
  1550. package/panelmenu/panelmenu.interface.d.ts +0 -23
  1551. package/panelmenu/public_api.d.ts +0 -2
  1552. package/password/password.d.ts +0 -342
  1553. package/password/public_api.d.ts +0 -1
  1554. package/picklist/picklist.d.ts +0 -453
  1555. package/picklist/picklist.interface.d.ts +0 -242
  1556. package/picklist/public_api.d.ts +0 -2
  1557. package/progressbar/progressbar.d.ts +0 -54
  1558. package/progressbar/progressbar.module.d.ts +0 -8
  1559. package/progressbar/public_api.d.ts +0 -2
  1560. package/progressspinner/progressspinner.d.ts +0 -50
  1561. package/progressspinner/progressspinner.module.d.ts +0 -8
  1562. package/progressspinner/public_api.d.ts +0 -2
  1563. package/public_api.d.ts +0 -2
  1564. package/radiobutton/public_api.d.ts +0 -3
  1565. package/radiobutton/radiobutton.d.ts +0 -150
  1566. package/radiobutton/radiobutton.interface.d.ts +0 -15
  1567. package/radiobutton/radiobutton.module.d.ts +0 -7
  1568. package/rating/public_api.d.ts +0 -2
  1569. package/rating/rating.d.ts +0 -146
  1570. package/rating/rating.interface.d.ts +0 -34
  1571. package/ripple/public_api.d.ts +0 -2
  1572. package/ripple/ripple.d.ts +0 -30
  1573. package/ripple/ripple.module.d.ts +0 -7
  1574. package/scroller/public_api.d.ts +0 -3
  1575. package/scroller/scroller.d.ts +0 -343
  1576. package/scroller/scroller.interface.d.ts +0 -177
  1577. package/scroller/scroller.module.d.ts +0 -8
  1578. package/scrollpanel/public_api.d.ts +0 -2
  1579. package/scrollpanel/scrollpanel.d.ts +0 -103
  1580. package/scrollpanel/scrollpanel.interface.d.ts +0 -11
  1581. package/scrolltop/public_api.d.ts +0 -2
  1582. package/scrolltop/scrolltop.d.ts +0 -97
  1583. package/scrolltop/scrolltop.interface.d.ts +0 -18
  1584. package/selectbutton/public_api.d.ts +0 -3
  1585. package/selectbutton/selectbutton.d.ts +0 -128
  1586. package/selectbutton/selectbutton.interface.d.ts +0 -45
  1587. package/selectbutton/selectbutton.module.d.ts +0 -11
  1588. package/sidebar/public_api.d.ts +0 -3
  1589. package/sidebar/sidebar.d.ts +0 -173
  1590. package/sidebar/sidebar.interface.d.ts +0 -27
  1591. package/sidebar/sidebar.module.d.ts +0 -12
  1592. package/skeleton/public_api.d.ts +0 -2
  1593. package/skeleton/skeleton.d.ts +0 -61
  1594. package/skeleton/skeleton.module.d.ts +0 -8
  1595. package/slidemenu/public_api.d.ts +0 -2
  1596. package/slidemenu/slidemenu.d.ts +0 -322
  1597. package/slidemenu/slidemenu.interface.d.ts +0 -15
  1598. package/slider/public_api.d.ts +0 -2
  1599. package/slider/slider.d.ts +0 -174
  1600. package/slider/slider.interface.d.ts +0 -38
  1601. package/speeddial/public_api.d.ts +0 -3
  1602. package/speeddial/speeddial.d.ts +0 -277
  1603. package/speeddial/speeddial.interface.d.ts +0 -28
  1604. package/speeddial/speeddial.module.d.ts +0 -14
  1605. package/spinner/public_api.d.ts +0 -1
  1606. package/spinner/spinner.d.ts +0 -90
  1607. package/splitbutton/public_api.d.ts +0 -3
  1608. package/splitbutton/splitbutton.d.ts +0 -222
  1609. package/splitbutton/splitbutton.interface.d.ts +0 -30
  1610. package/splitbutton/splitbutton.module.d.ts +0 -13
  1611. package/splitter/public_api.d.ts +0 -3
  1612. package/splitter/splitter.d.ts +0 -158
  1613. package/splitter/splitter.interface.d.ts +0 -34
  1614. package/splitter/splitter.module.d.ts +0 -9
  1615. package/stepper/public_api.d.ts +0 -2
  1616. package/stepper/stepper.d.ts +0 -117
  1617. package/stepper/stepper.interface.d.ts +0 -26
  1618. package/steps/public_api.d.ts +0 -2
  1619. package/steps/steps.d.ts +0 -77
  1620. package/steps/steps.module.d.ts +0 -10
  1621. package/styleclass/public_api.d.ts +0 -1
  1622. package/styleclass/styleclass.d.ts +0 -108
  1623. package/table/columnfilter.interface.d.ts +0 -247
  1624. package/table/components/cell-editor/cell-editor.d.ts +0 -20
  1625. package/table/components/column-filter/column-filter.d.ts +0 -291
  1626. package/table/components/column-filter-form-element/column-filter-form-element.d.ts +0 -37
  1627. package/table/components/sort-icon/sort-icon.d.ts +0 -22
  1628. package/table/components/table-body/table-body.d.ts +0 -36
  1629. package/table/components/table-checkbox/table-checkbox.d.ts +0 -32
  1630. package/table/components/table-header-checkbox/table-header-checkbox.d.ts +0 -29
  1631. package/table/components/table-radio-button/table-radio-button.d.ts +0 -29
  1632. package/table/directives/cancel-editable-row.directive.d.ts +0 -11
  1633. package/table/directives/cell-highlight.directive.d.ts +0 -14
  1634. package/table/directives/content-menu-row.directive.d.ts +0 -22
  1635. package/table/directives/dynamic-column-width.directive.d.ts +0 -12
  1636. package/table/directives/editable-column.directive.d.ts +0 -40
  1637. package/table/directives/editable-row.directive.d.ts +0 -12
  1638. package/table/directives/frozen-column.directive.d.ts +0 -16
  1639. package/table/directives/init-editable-row.directive.d.ts +0 -11
  1640. package/table/directives/reorderable-column.directive.d.ts +0 -32
  1641. package/table/directives/reorderable-row-handle.directive.d.ts +0 -9
  1642. package/table/directives/reorderable-row.directive.d.ts +0 -34
  1643. package/table/directives/resizable-column.directive.d.ts +0 -35
  1644. package/table/directives/row-group-header.directive.d.ts +0 -9
  1645. package/table/directives/row-toggler.directive.d.ts +0 -13
  1646. package/table/directives/save-editable-row.directive.d.ts +0 -11
  1647. package/table/directives/selectable-row-double-click.directive.d.ts +0 -22
  1648. package/table/directives/selectable-row.directive.d.ts +0 -37
  1649. package/table/directives/sortable-column.directive.d.ts +0 -24
  1650. package/table/public_api.d.ts +0 -30
  1651. package/table/table.d.ts +0 -871
  1652. package/table/table.interface.d.ts +0 -623
  1653. package/table/table.module.d.ts +0 -34
  1654. package/table/table.service.d.ts +0 -24
  1655. package/tableconfiguration/public_api.d.ts +0 -2
  1656. package/tableconfiguration/tableconfiguration.d.ts +0 -15
  1657. package/tableconfiguration/tableconfiguration.module.d.ts +0 -7
  1658. package/tabmenu/public_api.d.ts +0 -2
  1659. package/tabmenu/tabmenu.d.ts +0 -126
  1660. package/tabmenu/tabmenu.interface.d.ts +0 -32
  1661. package/tabview/public_api.d.ts +0 -3
  1662. package/tabview/tabview.d.ts +0 -293
  1663. package/tabview/tabview.interface.d.ts +0 -49
  1664. package/tabview/tabview.module.d.ts +0 -15
  1665. package/tag/public_api.d.ts +0 -3
  1666. package/tag/tag.d.ts +0 -61
  1667. package/tag/tag.interface.d.ts +0 -11
  1668. package/tag/tag.module.d.ts +0 -9
  1669. package/terminal/public_api.d.ts +0 -2
  1670. package/terminal/terminal.d.ts +0 -56
  1671. package/terminal/terminalservice.d.ts +0 -11
  1672. package/tieredmenu/public_api.d.ts +0 -3
  1673. package/tieredmenu/tieredmenu.d.ts +0 -266
  1674. package/tieredmenu/tieredmenu.interface.d.ts +0 -27
  1675. package/tieredmenu/tiredmenu.module.d.ts +0 -13
  1676. package/timeline/public_api.d.ts +0 -3
  1677. package/timeline/timeline.d.ts +0 -47
  1678. package/timeline/timeline.interface.d.ts +0 -43
  1679. package/timeline/timeline.module.d.ts +0 -9
  1680. package/toast/public_api.d.ts +0 -3
  1681. package/toast/toast.d.ts +0 -142
  1682. package/toast/toast.interface.d.ts +0 -52
  1683. package/toast/toast.module.d.ts +0 -9
  1684. package/toast/toastitem.d.ts +0 -37
  1685. package/togglebutton/public_api.d.ts +0 -2
  1686. package/togglebutton/togglebutton.d.ts +0 -115
  1687. package/togglebutton/togglebutton.interface.d.ts +0 -34
  1688. package/toggleswitch/public_api.d.ts +0 -2
  1689. package/toggleswitch/toggleswitch.d.ts +0 -14
  1690. package/toggleswitch/toggleswitch.module.d.ts +0 -9
  1691. package/toolbar/public_api.d.ts +0 -2
  1692. package/toolbar/toolbar.d.ts +0 -43
  1693. package/toolbar/toolbar.interface.d.ts +0 -19
  1694. package/tooltip/public_api.d.ts +0 -2
  1695. package/tooltip/tooltip.d.ts +0 -208
  1696. package/tooltip/tooltip.module.d.ts +0 -10
  1697. package/tree/public_api.d.ts +0 -3
  1698. package/tree/tree.d.ts +0 -461
  1699. package/tree/tree.interface.d.ts +0 -193
  1700. package/tree/tree.module.d.ts +0 -21
  1701. package/treeselect/public_api.d.ts +0 -3
  1702. package/treeselect/treeselect.d.ts +0 -394
  1703. package/treeselect/treeselect.interface.d.ts +0 -108
  1704. package/treeselect/treeselect.module.d.ts +0 -16
  1705. package/treetable/public_api.d.ts +0 -2
  1706. package/treetable/treetable.d.ts +0 -988
  1707. package/treetable/treetable.interface.d.ts +0 -472
  1708. package/tristatecheckbox/public_api.d.ts +0 -3
  1709. package/tristatecheckbox/tristatecheckbox.d.ts +0 -117
  1710. package/tristatecheckbox/tristatecheckbox.interface.d.ts +0 -30
  1711. package/tristatecheckbox/tristatecheckbox.module.d.ts +0 -8
  1712. package/ts-helpers/public_api.d.ts +0 -1
  1713. package/ts-helpers/ts-helpers.d.ts +0 -4
  1714. package/upload/public_api.d.ts +0 -2
  1715. package/upload/upload.component.d.ts +0 -67
  1716. package/upload/upload.component.module.d.ts +0 -11
  1717. package/utils/objectutils.d.ts +0 -24
  1718. package/utils/public_api.d.ts +0 -4
  1719. package/utils/uniquecomponentid.d.ts +0 -2
  1720. package/utils/zindexutils.d.ts +0 -7
  1721. package/virtualscroller/public_api.d.ts +0 -2
  1722. package/virtualscroller/virtualscroller.d.ts +0 -89
  1723. package/virtualscroller/virtualscroller.interface.d.ts +0 -72
@@ -1,1909 +0,0 @@
1
- import { CDK_DRAG_CONFIG, DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
2
- import { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Inject, Input, NgModule, Output, PLATFORM_ID, ViewChild, ViewEncapsulation, booleanAttribute, numberAttribute } from '@angular/core';
4
- import { CaxTemplate, SharedModule } from 'cax-design-system/api';
5
- import { ButtonModule } from 'cax-design-system/button';
6
- import { DomHandler } from 'cax-design-system/dom';
7
- import { AngleDoubleDownIcon } from 'cax-design-system/icons/angledoubledown';
8
- import { AngleDoubleLeftIcon } from 'cax-design-system/icons/angledoubleleft';
9
- import { AngleDoubleRightIcon } from 'cax-design-system/icons/angledoubleright';
10
- import { AngleDoubleUpIcon } from 'cax-design-system/icons/angledoubleup';
11
- import { AngleDownIcon } from 'cax-design-system/icons/angledown';
12
- import { AngleLeftIcon } from 'cax-design-system/icons/angleleft';
13
- import { AngleRightIcon } from 'cax-design-system/icons/angleright';
14
- import { AngleUpIcon } from 'cax-design-system/icons/angleup';
15
- import { HomeIcon } from 'cax-design-system/icons/home';
16
- import { SearchIcon } from 'cax-design-system/icons/search';
17
- import { RippleModule } from 'cax-design-system/ripple';
18
- import { ObjectUtils, UniqueComponentId } from 'cax-design-system/utils';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "cax-design-system/api";
21
- import * as i2 from "@angular/common";
22
- import * as i3 from "@angular/cdk/drag-drop";
23
- /**
24
- * PickList is used to reorder items between different lists.
25
- * @group Components
26
- */
27
- export class PickList {
28
- document;
29
- platformId;
30
- renderer;
31
- el;
32
- cd;
33
- filterService;
34
- config;
35
- /**
36
- * An array of objects for the source list.
37
- * @group Props
38
- */
39
- source;
40
- /**
41
- * An array of objects for the target list.
42
- * @group Props
43
- */
44
- target;
45
- /**
46
- * Text for the source list caption
47
- * @group Props
48
- */
49
- sourceHeader;
50
- /**
51
- * Index of the element in tabbing order.
52
- * @group Props
53
- */
54
- tabindex = 0;
55
- /**
56
- * Defines a string that labels the move to right button for accessibility.
57
- * @group Props
58
- */
59
- rightButtonAriaLabel;
60
- /**
61
- * Defines a string that labels the move to left button for accessibility.
62
- * @group Props
63
- */
64
- leftButtonAriaLabel;
65
- /**
66
- * Defines a string that labels the move to all right button for accessibility.
67
- * @group Props
68
- */
69
- allRightButtonAriaLabel;
70
- /**
71
- * Defines a string that labels the move to all left button for accessibility.
72
- * @group Props
73
- */
74
- allLeftButtonAriaLabel;
75
- /**
76
- * Defines a string that labels the move to up button for accessibility.
77
- * @group Props
78
- */
79
- upButtonAriaLabel;
80
- /**
81
- * Defines a string that labels the move to down button for accessibility.
82
- * @group Props
83
- */
84
- downButtonAriaLabel;
85
- /**
86
- * Defines a string that labels the move to top button for accessibility.
87
- * @group Props
88
- */
89
- topButtonAriaLabel;
90
- /**
91
- * Defines a string that labels the move to bottom button for accessibility.
92
- * @group Props
93
- */
94
- bottomButtonAriaLabel;
95
- /**
96
- * Text for the target list caption
97
- * @group Props
98
- */
99
- targetHeader;
100
- /**
101
- * When enabled orderlist adjusts its controls based on screen size.
102
- * @group Props
103
- */
104
- responsive;
105
- /**
106
- * When specified displays an input field to filter the items on keyup and decides which field to search (Accepts multiple fields with a comma).
107
- * @group Props
108
- */
109
- filterBy;
110
- /**
111
- * Locale to use in filtering. The default locale is the host environment's current locale.
112
- * @group Props
113
- */
114
- filterLocale;
115
- /**
116
- * Function to optimize the dom operations by delegating to ngForTrackBy, default algorithm checks for object identity. Use sourceTrackBy or targetTrackBy in case different algorithms are needed per list.
117
- * @group Props
118
- */
119
- trackBy = (index, item) => item;
120
- /**
121
- * Function to optimize the dom operations by delegating to ngForTrackBy in source list, default algorithm checks for object identity.
122
- * @group Props
123
- */
124
- sourceTrackBy;
125
- /**
126
- * Function to optimize the dom operations by delegating to ngForTrackBy in target list, default algorithm checks for object identity.
127
- * @group Props
128
- */
129
- targetTrackBy;
130
- /**
131
- * Whether to show filter input for source list when filterBy is enabled.
132
- * @group Props
133
- */
134
- showSourceFilter = true;
135
- /**
136
- * Whether to show filter input for target list when filterBy is enabled.
137
- * @group Props
138
- */
139
- showTargetFilter = true;
140
- /**
141
- * Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.
142
- * @group Props
143
- */
144
- metaKeySelection = false;
145
- /**
146
- * Whether to enable dragdrop based reordering.
147
- * @group Props
148
- */
149
- dragdrop = false;
150
- /**
151
- * Inline style of the component.
152
- * @group Props
153
- */
154
- style;
155
- /**
156
- * Style class of the component.
157
- * @group Props
158
- */
159
- styleClass;
160
- /**
161
- * Inline style of the source list element.
162
- * @group Props
163
- */
164
- sourceStyle;
165
- /**
166
- * Inline style of the target list element.
167
- * @group Props
168
- */
169
- targetStyle;
170
- /**
171
- * Whether to show buttons of source list.
172
- * @group Props
173
- */
174
- showSourceControls = true;
175
- /**
176
- * Whether to show buttons of target list.
177
- * @group Props
178
- */
179
- showTargetControls = true;
180
- /**
181
- * Placeholder text on source filter input.
182
- * @group Props
183
- */
184
- sourceFilterPlaceholder;
185
- /**
186
- * Placeholder text on target filter input.
187
- * @group Props
188
- */
189
- targetFilterPlaceholder;
190
- /**
191
- * When present, it specifies that the component should be disabled.
192
- * @group Props
193
- */
194
- disabled = false;
195
- /**
196
- * Defines a string that labels the filter input of source list.
197
- * @group Props
198
- */
199
- ariaSourceFilterLabel;
200
- /**
201
- * Defines a string that labels the filter input of target list.
202
- * @group Props
203
- */
204
- ariaTargetFilterLabel;
205
- /**
206
- * Defines how the items are filtered.
207
- * @group Props
208
- */
209
- filterMatchMode = 'contains';
210
- /**
211
- * Whether to displays rows with alternating colors.
212
- * @group Props
213
- */
214
- stripedRows;
215
- /**
216
- * Keeps selection on the transfer list.
217
- * @group Props
218
- */
219
- keepSelection = false;
220
- /**
221
- * Indicates the width of the screen at which the component should change its behavior.
222
- * @group Props
223
- */
224
- get breakpoint() {
225
- return this._breakpoint;
226
- }
227
- set breakpoint(value) {
228
- if (value !== this._breakpoint) {
229
- this._breakpoint = value;
230
- if (isPlatformBrowser(this.platformId)) {
231
- this.destroyMedia();
232
- this.initMedia();
233
- }
234
- }
235
- }
236
- /**
237
- * Callback to invoke when items are moved from target to source.
238
- * @param {PickListMoveToSourceEvent} event - Custom move to source event.
239
- * @group Emits
240
- */
241
- onMoveToSource = new EventEmitter();
242
- /**
243
- * Callback to invoke when all items are moved from target to source.
244
- * @param {PickListMoveAllToSourceEvent} event - Custom move all to source event.
245
- * @group Emits
246
- */
247
- onMoveAllToSource = new EventEmitter();
248
- /**
249
- * Callback to invoke when all items are moved from source to target.
250
- * @param {PickListMoveAllToTargetEvent} event - Custom move all to target event.
251
- * @group Emits
252
- */
253
- onMoveAllToTarget = new EventEmitter();
254
- /**
255
- * Callback to invoke when items are moved from source to target.
256
- * @param {PickListMoveToTargetEvent} event - Custom move to target event.
257
- * @group Emits
258
- */
259
- onMoveToTarget = new EventEmitter();
260
- /**
261
- * Callback to invoke when items are reordered within source list.
262
- * @param {PickListSourceReorderEvent} event - Custom source reorder event.
263
- * @group Emits
264
- */
265
- onSourceReorder = new EventEmitter();
266
- /**
267
- * Callback to invoke when items are reordered within target list.
268
- * @param {PickListTargetReorderEvent} event - Custom target reorder event.
269
- * @group Emits
270
- */
271
- onTargetReorder = new EventEmitter();
272
- /**
273
- * Callback to invoke when items are selected within source list.
274
- * @param {PickListSourceSelectEvent} event - Custom source select event.
275
- * @group Emits
276
- */
277
- onSourceSelect = new EventEmitter();
278
- /**
279
- * Callback to invoke when items are selected within target list.
280
- * @param {PickListTargetSelectEvent} event - Custom target select event.
281
- * @group Emits
282
- */
283
- onTargetSelect = new EventEmitter();
284
- /**
285
- * Callback to invoke when the source list is filtered
286
- * @param {PickListSourceFilterEvent} event - Custom source filter event.
287
- * @group Emits
288
- */
289
- onSourceFilter = new EventEmitter();
290
- /**
291
- * Callback to invoke when the target list is filtered
292
- * @param {PickListTargetFilterEvent} event - Custom target filter event.
293
- * @group Emits
294
- */
295
- onTargetFilter = new EventEmitter();
296
- /**
297
- * Callback to invoke when the list is focused
298
- * @param {Event} event - Browser event.
299
- * @group Emits
300
- */
301
- onFocus = new EventEmitter();
302
- /**
303
- * Callback to invoke when the list is blurred
304
- * @param {Event} event - Browser event.
305
- * @group Emits
306
- */
307
- onBlur = new EventEmitter();
308
- listViewSourceChild;
309
- listViewTargetChild;
310
- sourceFilterViewChild;
311
- targetFilterViewChild;
312
- templates;
313
- get moveUpAriaLabel() {
314
- return this.upButtonAriaLabel ? this.upButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveUp : undefined;
315
- }
316
- get moveTopAriaLabel() {
317
- return this.topButtonAriaLabel ? this.topButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveTop : undefined;
318
- }
319
- get moveDownAriaLabel() {
320
- return this.downButtonAriaLabel ? this.downButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveDown : undefined;
321
- }
322
- get moveBottomAriaLabel() {
323
- return this.bottomButtonAriaLabel ? this.bottomButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveDown : undefined;
324
- }
325
- get moveToTargetAriaLabel() {
326
- return this.rightButtonAriaLabel ? this.rightButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveToTarget : undefined;
327
- }
328
- get moveAllToTargetAriaLabel() {
329
- return this.allRightButtonAriaLabel ? this.allRightButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveAllToTarget : undefined;
330
- }
331
- get moveToSourceAriaLabel() {
332
- return this.leftButtonAriaLabel ? this.leftButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveToSource : undefined;
333
- }
334
- get moveAllToSourceAriaLabel() {
335
- return this.allLeftButtonAriaLabel ? this.allLeftButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveAllToSource : undefined;
336
- }
337
- get idSource() {
338
- return this.id + '_source';
339
- }
340
- get idTarget() {
341
- return this.id + '_target';
342
- }
343
- get focusedOptionId() {
344
- return this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : null;
345
- }
346
- _breakpoint = '960px';
347
- itemTemplate;
348
- moveTopIconTemplate;
349
- moveUpIconTemplate;
350
- moveDownIconTemplate;
351
- moveBottomIconTemplate;
352
- moveToTargetIconTemplate;
353
- moveAllToTargetIconTemplate;
354
- moveToSourceIconTemplate;
355
- moveAllToSourceIconTemplate;
356
- targetFilterIconTemplate;
357
- sourceFilterIconTemplate;
358
- visibleOptionsSource;
359
- visibleOptionsTarget;
360
- selectedItemsSource = [];
361
- selectedItemsTarget = [];
362
- reorderedListElement;
363
- movedUp;
364
- movedDown;
365
- itemTouched;
366
- styleElement;
367
- id = UniqueComponentId();
368
- filterValueSource;
369
- filterValueTarget;
370
- fromListType;
371
- emptyMessageSourceTemplate;
372
- emptyFilterMessageSourceTemplate;
373
- emptyMessageTargetTemplate;
374
- emptyFilterMessageTargetTemplate;
375
- sourceHeaderTemplate;
376
- targetHeaderTemplate;
377
- sourceFilterTemplate;
378
- targetFilterTemplate;
379
- sourceFilterOptions;
380
- targetFilterOptions;
381
- SOURCE_LIST = -1;
382
- TARGET_LIST = 1;
383
- window;
384
- media;
385
- viewChanged;
386
- focusedOptionIndex = -1;
387
- focusedOption;
388
- focused = {
389
- sourceList: false,
390
- targetList: false
391
- };
392
- mediaChangeListener;
393
- constructor(document, platformId, renderer, el, cd, filterService, config) {
394
- this.document = document;
395
- this.platformId = platformId;
396
- this.renderer = renderer;
397
- this.el = el;
398
- this.cd = cd;
399
- this.filterService = filterService;
400
- this.config = config;
401
- this.window = this.document.defaultView;
402
- }
403
- ngOnInit() {
404
- if (this.responsive) {
405
- this.createStyle();
406
- this.initMedia();
407
- }
408
- if (this.filterBy) {
409
- this.sourceFilterOptions = {
410
- filter: (value) => this.filterSource(value),
411
- reset: () => this.resetSourceFilter()
412
- };
413
- this.targetFilterOptions = {
414
- filter: (value) => this.filterTarget(value),
415
- reset: () => this.resetTargetFilter()
416
- };
417
- }
418
- }
419
- ngAfterContentInit() {
420
- this.templates.forEach((item) => {
421
- switch (item.getType()) {
422
- case 'item':
423
- this.itemTemplate = item.template;
424
- break;
425
- case 'sourceHeader':
426
- this.sourceHeaderTemplate = item.template;
427
- break;
428
- case 'targetHeader':
429
- this.targetHeaderTemplate = item.template;
430
- break;
431
- case 'sourceFilter':
432
- this.sourceFilterTemplate = item.template;
433
- break;
434
- case 'targetFilter':
435
- this.targetFilterTemplate = item.template;
436
- break;
437
- case 'emptymessagesource':
438
- this.emptyMessageSourceTemplate = item.template;
439
- break;
440
- case 'emptyfiltermessagesource':
441
- this.emptyFilterMessageSourceTemplate = item.template;
442
- break;
443
- case 'emptymessagetarget':
444
- this.emptyMessageTargetTemplate = item.template;
445
- break;
446
- case 'emptyfiltermessagetarget':
447
- this.emptyFilterMessageTargetTemplate = item.template;
448
- break;
449
- case 'moveupicon':
450
- this.moveUpIconTemplate = item.template;
451
- break;
452
- case 'movetopicon':
453
- this.moveTopIconTemplate = item.template;
454
- break;
455
- case 'movedownicon':
456
- this.moveDownIconTemplate = item.template;
457
- break;
458
- case 'movebottomicon':
459
- this.moveBottomIconTemplate = item.template;
460
- break;
461
- case 'movetotargeticon':
462
- this.moveToTargetIconTemplate = item.template;
463
- break;
464
- case 'movealltotargeticon':
465
- this.moveAllToTargetIconTemplate = item.template;
466
- break;
467
- case 'movetosourceicon':
468
- this.moveToSourceIconTemplate = item.template;
469
- break;
470
- case 'movealltosourceicon':
471
- this.moveAllToSourceIconTemplate = item.template;
472
- break;
473
- case 'targetfiltericon':
474
- this.targetFilterIconTemplate = item.template;
475
- break;
476
- case 'sourcefiltericon':
477
- this.sourceFilterIconTemplate = item.template;
478
- break;
479
- default:
480
- this.itemTemplate = item.template;
481
- break;
482
- }
483
- });
484
- }
485
- ngAfterViewChecked() {
486
- if (this.movedUp || this.movedDown) {
487
- let listItems = DomHandler.find(this.reorderedListElement, 'li.p-highlight');
488
- let listItem;
489
- if (this.movedUp)
490
- listItem = listItems[0];
491
- else
492
- listItem = listItems[listItems.length - 1];
493
- DomHandler.scrollInView(this.reorderedListElement, listItem);
494
- this.movedUp = false;
495
- this.movedDown = false;
496
- this.reorderedListElement = null;
497
- }
498
- }
499
- onItemClick(event, item, selectedItems, listType, callback, itemId) {
500
- if (this.disabled) {
501
- return;
502
- }
503
- let index = this.findIndexInList(item, selectedItems);
504
- if (itemId)
505
- this.focusedOptionIndex = itemId;
506
- let selected = index != -1;
507
- let metaSelection = this.itemTouched ? false : this.metaKeySelection;
508
- if (metaSelection) {
509
- let metaKey = event.metaKey || event.ctrlKey || event.shiftKey;
510
- if (selected && metaKey) {
511
- selectedItems = selectedItems.filter((_, i) => i !== index);
512
- }
513
- else {
514
- if (!metaKey) {
515
- selectedItems = [];
516
- }
517
- selectedItems.push(item);
518
- }
519
- }
520
- else {
521
- if (selected) {
522
- selectedItems = selectedItems.filter((_, i) => i !== index); // Creating a new array without the selected item
523
- }
524
- else {
525
- selectedItems.push(item);
526
- }
527
- }
528
- this.setSelectionList(listType, selectedItems);
529
- callback.emit({ originalEvent: event, items: selectedItems });
530
- this.itemTouched = false;
531
- }
532
- onOptionMouseDown(index, listType) {
533
- this.focused[listType === this.SOURCE_LIST ? 'sourceList' : 'targetList'] = true;
534
- this.focusedOptionIndex = index;
535
- }
536
- onSourceItemDblClick() {
537
- if (this.disabled) {
538
- return;
539
- }
540
- this.moveRight();
541
- }
542
- onTargetItemDblClick() {
543
- if (this.disabled) {
544
- return;
545
- }
546
- this.moveLeft();
547
- }
548
- onFilter(event, listType) {
549
- let query = event.target.value;
550
- if (listType === this.SOURCE_LIST)
551
- this.filterSource(query);
552
- else if (listType === this.TARGET_LIST)
553
- this.filterTarget(query);
554
- }
555
- filterSource(value = '') {
556
- this.filterValueSource = value.trim().toLocaleLowerCase(this.filterLocale);
557
- this.filter(this.source, this.SOURCE_LIST);
558
- }
559
- filterTarget(value = '') {
560
- this.filterValueTarget = value.trim().toLocaleLowerCase(this.filterLocale);
561
- this.filter(this.target, this.TARGET_LIST);
562
- }
563
- filter(data, listType) {
564
- let searchFields = this.filterBy.split(',');
565
- if (listType === this.SOURCE_LIST) {
566
- this.visibleOptionsSource = this.filterService.filter(data, searchFields, this.filterValueSource, this.filterMatchMode, this.filterLocale);
567
- this.onSourceFilter.emit({ query: this.filterValueSource, value: this.visibleOptionsSource });
568
- }
569
- else if (listType === this.TARGET_LIST) {
570
- this.visibleOptionsTarget = this.filterService.filter(data, searchFields, this.filterValueTarget, this.filterMatchMode, this.filterLocale);
571
- this.onTargetFilter.emit({ query: this.filterValueTarget, value: this.visibleOptionsTarget });
572
- }
573
- }
574
- isItemVisible(item, listType) {
575
- if (listType == this.SOURCE_LIST)
576
- return this.isVisibleInList(this.visibleOptionsSource, item, this.filterValueSource);
577
- else
578
- return this.isVisibleInList(this.visibleOptionsTarget, item, this.filterValueTarget);
579
- }
580
- isEmpty(listType) {
581
- if (listType == this.SOURCE_LIST)
582
- return this.filterValueSource ? !this.visibleOptionsSource || this.visibleOptionsSource.length === 0 : !this.source || this.source.length === 0;
583
- else
584
- return this.filterValueTarget ? !this.visibleOptionsTarget || this.visibleOptionsTarget.length === 0 : !this.target || this.target.length === 0;
585
- }
586
- isVisibleInList(data, item, filterValue) {
587
- if (filterValue && filterValue.trim().length) {
588
- for (let i = 0; i < data.length; i++) {
589
- if (item == data[i]) {
590
- return true;
591
- }
592
- }
593
- }
594
- else {
595
- return true;
596
- }
597
- }
598
- onItemTouchEnd() {
599
- if (this.disabled) {
600
- return;
601
- }
602
- this.itemTouched = true;
603
- }
604
- sortByIndexInList(items, list) {
605
- return items.sort((item1, item2) => ObjectUtils.findIndexInList(item1, list) - ObjectUtils.findIndexInList(item2, list));
606
- }
607
- moveUp(listElement, list, selectedItems, callback, listType) {
608
- if (selectedItems && selectedItems.length) {
609
- selectedItems = this.sortByIndexInList(selectedItems, list);
610
- for (let i = 0; i < selectedItems.length; i++) {
611
- let selectedItem = selectedItems[i];
612
- let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
613
- if (selectedItemIndex != 0) {
614
- let movedItem = list[selectedItemIndex];
615
- let temp = list[selectedItemIndex - 1];
616
- list[selectedItemIndex - 1] = movedItem;
617
- list[selectedItemIndex] = temp;
618
- }
619
- else {
620
- break;
621
- }
622
- }
623
- if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
624
- this.filter(list, listType);
625
- this.movedUp = true;
626
- this.reorderedListElement = listElement;
627
- callback.emit({ items: selectedItems });
628
- }
629
- }
630
- moveTop(listElement, list, selectedItems, callback, listType) {
631
- if (selectedItems && selectedItems.length) {
632
- selectedItems = this.sortByIndexInList(selectedItems, list);
633
- for (let i = 0; i < selectedItems.length; i++) {
634
- let selectedItem = selectedItems[i];
635
- let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
636
- if (selectedItemIndex != 0) {
637
- let movedItem = list.splice(selectedItemIndex, 1)[0];
638
- list.unshift(movedItem);
639
- }
640
- else {
641
- break;
642
- }
643
- }
644
- if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
645
- this.filter(list, listType);
646
- listElement.scrollTop = 0;
647
- callback.emit({ items: selectedItems });
648
- }
649
- }
650
- moveDown(listElement, list, selectedItems, callback, listType) {
651
- if (selectedItems && selectedItems.length) {
652
- selectedItems = this.sortByIndexInList(selectedItems, list);
653
- for (let i = selectedItems.length - 1; i >= 0; i--) {
654
- let selectedItem = selectedItems[i];
655
- let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
656
- if (selectedItemIndex != list.length - 1) {
657
- let movedItem = list[selectedItemIndex];
658
- let temp = list[selectedItemIndex + 1];
659
- list[selectedItemIndex + 1] = movedItem;
660
- list[selectedItemIndex] = temp;
661
- }
662
- else {
663
- break;
664
- }
665
- }
666
- if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
667
- this.filter(list, listType);
668
- this.movedDown = true;
669
- this.reorderedListElement = listElement;
670
- callback.emit({ items: selectedItems });
671
- }
672
- }
673
- moveBottom(listElement, list, selectedItems, callback, listType) {
674
- if (selectedItems && selectedItems.length) {
675
- selectedItems = this.sortByIndexInList(selectedItems, list);
676
- for (let i = selectedItems.length - 1; i >= 0; i--) {
677
- let selectedItem = selectedItems[i];
678
- let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
679
- if (selectedItemIndex != list.length - 1) {
680
- let movedItem = list.splice(selectedItemIndex, 1)[0];
681
- list.push(movedItem);
682
- }
683
- else {
684
- break;
685
- }
686
- }
687
- if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
688
- this.filter(list, listType);
689
- listElement.scrollTop = listElement.scrollHeight;
690
- callback.emit({ items: selectedItems });
691
- }
692
- }
693
- moveRight() {
694
- if (this.selectedItemsSource && this.selectedItemsSource.length) {
695
- for (let i = 0; i < this.selectedItemsSource.length; i++) {
696
- let selectedItem = this.selectedItemsSource[i];
697
- if (ObjectUtils.findIndexInList(selectedItem, this.target) == -1) {
698
- this.target?.push(this.source?.splice(ObjectUtils.findIndexInList(selectedItem, this.source), 1)[0]);
699
- if (this.visibleOptionsSource?.includes(selectedItem)) {
700
- this.visibleOptionsSource.splice(ObjectUtils.findIndexInList(selectedItem, this.visibleOptionsSource), 1);
701
- }
702
- }
703
- }
704
- this.onMoveToTarget.emit({
705
- items: this.selectedItemsSource
706
- });
707
- if (this.keepSelection) {
708
- this.selectedItemsTarget = [...this.selectedItemsTarget, ...this.selectedItemsSource];
709
- }
710
- this.selectedItemsSource = [];
711
- if (this.filterValueTarget) {
712
- this.filter(this.target, this.TARGET_LIST);
713
- }
714
- }
715
- }
716
- moveAllRight() {
717
- if (this.source) {
718
- let movedItems = [];
719
- for (let i = 0; i < this.source.length; i++) {
720
- if (this.isItemVisible(this.source[i], this.SOURCE_LIST)) {
721
- let removedItem = this.source.splice(i, 1)[0];
722
- this.target?.push(removedItem);
723
- movedItems.push(removedItem);
724
- i--;
725
- }
726
- }
727
- this.onMoveAllToTarget.emit({
728
- items: movedItems
729
- });
730
- if (this.keepSelection) {
731
- this.selectedItemsTarget = [...this.selectedItemsTarget, ...this.selectedItemsSource];
732
- }
733
- this.selectedItemsSource = [];
734
- if (this.filterValueTarget) {
735
- this.filter(this.target, this.TARGET_LIST);
736
- }
737
- this.visibleOptionsSource = [];
738
- }
739
- }
740
- moveLeft() {
741
- if (this.selectedItemsTarget && this.selectedItemsTarget.length) {
742
- for (let i = 0; i < this.selectedItemsTarget.length; i++) {
743
- let selectedItem = this.selectedItemsTarget[i];
744
- if (ObjectUtils.findIndexInList(selectedItem, this.source) == -1) {
745
- this.source?.push(this.target?.splice(ObjectUtils.findIndexInList(selectedItem, this.target), 1)[0]);
746
- if (this.visibleOptionsTarget?.includes(selectedItem)) {
747
- this.visibleOptionsTarget.splice(ObjectUtils.findIndexInList(selectedItem, this.visibleOptionsTarget), 1)[0];
748
- }
749
- }
750
- }
751
- this.onMoveToSource.emit({
752
- items: this.selectedItemsTarget
753
- });
754
- if (this.keepSelection) {
755
- this.selectedItemsSource = [...this.selectedItemsSource, ...this.selectedItemsTarget];
756
- }
757
- this.selectedItemsTarget = [];
758
- if (this.filterValueSource) {
759
- this.filter(this.source, this.SOURCE_LIST);
760
- }
761
- }
762
- }
763
- moveAllLeft() {
764
- if (this.target) {
765
- let movedItems = [];
766
- for (let i = 0; i < this.target.length; i++) {
767
- if (this.isItemVisible(this.target[i], this.TARGET_LIST)) {
768
- let removedItem = this.target.splice(i, 1)[0];
769
- this.source?.push(removedItem);
770
- movedItems.push(removedItem);
771
- i--;
772
- }
773
- }
774
- this.onMoveAllToSource.emit({
775
- items: movedItems
776
- });
777
- if (this.keepSelection) {
778
- this.selectedItemsSource = [...this.selectedItemsSource, ...this.selectedItemsTarget];
779
- }
780
- this.selectedItemsTarget = [];
781
- if (this.filterValueSource) {
782
- this.filter(this.source, this.SOURCE_LIST);
783
- }
784
- this.visibleOptionsTarget = [];
785
- }
786
- }
787
- isSelected(item, selectedItems) {
788
- return this.findIndexInList(item, selectedItems) != -1;
789
- }
790
- itemClass(item, id, selectedItems) {
791
- return {
792
- 'p-picklist-item': true,
793
- 'p-highlight': this.isSelected(item, selectedItems),
794
- 'p-focus': id === this.focusedOptionId,
795
- 'p-disabled': this.disabled
796
- };
797
- }
798
- findIndexInList(item, selectedItems) {
799
- return ObjectUtils.findIndexInList(item, selectedItems);
800
- }
801
- onDrop(event, listType) {
802
- let isTransfer = event.previousContainer !== event.container;
803
- let dropIndexes = this.getDropIndexes(event.previousIndex, event.currentIndex, listType, isTransfer, event.item.data);
804
- if (listType === this.SOURCE_LIST) {
805
- if (isTransfer) {
806
- transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
807
- let selectedItemIndex = ObjectUtils.findIndexInList(event.item.data, this.selectedItemsTarget);
808
- if (selectedItemIndex != -1) {
809
- this.selectedItemsTarget.splice(selectedItemIndex, 1);
810
- if (this.keepSelection) {
811
- this.selectedItemsTarget.push(event.item.data);
812
- }
813
- }
814
- if (this.visibleOptionsTarget)
815
- this.visibleOptionsTarget.splice(event.previousIndex, 1);
816
- this.onMoveToSource.emit({ items: [event.item.data] });
817
- }
818
- else {
819
- moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
820
- this.onSourceReorder.emit({ items: [event.item.data] });
821
- }
822
- if (this.filterValueSource) {
823
- this.filter(this.source, this.SOURCE_LIST);
824
- }
825
- }
826
- else {
827
- if (isTransfer) {
828
- transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
829
- let selectedItemIndex = ObjectUtils.findIndexInList(event.item.data, this.selectedItemsSource);
830
- if (selectedItemIndex != -1) {
831
- this.selectedItemsSource.splice(selectedItemIndex, 1);
832
- if (this.keepSelection) {
833
- this.selectedItemsTarget.push(event.item.data);
834
- }
835
- }
836
- if (this.visibleOptionsSource)
837
- this.visibleOptionsSource.splice(event.previousIndex, 1);
838
- this.onMoveToTarget.emit({ items: [event.item.data] });
839
- }
840
- else {
841
- moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
842
- this.onTargetReorder.emit({ items: [event.item.data] });
843
- }
844
- if (this.filterValueTarget) {
845
- this.filter(this.target, this.TARGET_LIST);
846
- }
847
- }
848
- }
849
- onListFocus(event, listType) {
850
- let listElement = this.getListElement(listType);
851
- const selectedFirstItem = DomHandler.findSingle(listElement, 'li.p-picklist-item.p-highlight') || DomHandler.findSingle(listElement, 'li.p-picklist-item');
852
- const findIndex = ObjectUtils.findIndexInList(selectedFirstItem, listElement.children);
853
- this.focused[listType === this.SOURCE_LIST ? 'sourceList' : 'targetList'] = true;
854
- const sourceIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : selectedFirstItem ? findIndex : -1;
855
- const filteredIndex = ObjectUtils.isNotEmpty(this.visibleOptionsSource) ? this.findIndexInList(this.source[sourceIndex], this.visibleOptionsSource) : sourceIndex;
856
- this.changeFocusedOptionIndex(filteredIndex, listType);
857
- this.onFocus.emit(event);
858
- }
859
- onListBlur(event, listType) {
860
- this.focused[listType === this.SOURCE_LIST ? 'sourceList' : 'targetList'] = false;
861
- this.focusedOptionIndex = -1;
862
- this.focusedOption = null;
863
- this.onBlur.emit(event);
864
- }
865
- getListElement(listType) {
866
- return listType === this.SOURCE_LIST ? this.listViewSourceChild?.nativeElement : this.listViewTargetChild?.nativeElement;
867
- }
868
- getListItems(listType) {
869
- let listElemet = this.getListElement(listType);
870
- return DomHandler.find(listElemet, 'li.p-picklist-item');
871
- }
872
- getLatestSelectedVisibleOptionIndex(visibleList, selectedItems) {
873
- const latestSelectedItem = [...selectedItems].reverse().find((item) => visibleList.includes(item));
874
- return latestSelectedItem !== undefined ? visibleList.indexOf(latestSelectedItem) : -1;
875
- }
876
- getVisibleList(listType) {
877
- if (listType === this.SOURCE_LIST) {
878
- return this.visibleOptionsSource && this.visibleOptionsSource.length > 0 ? this.visibleOptionsSource : this.source && this.source.length > 0 ? this.source : null;
879
- }
880
- return this.visibleOptionsTarget && this.visibleOptionsTarget.length > 0 ? this.visibleOptionsTarget : this.target && this.target.length > 0 ? this.target : null;
881
- }
882
- setSelectionList(listType, selectedItems) {
883
- if (listType === this.SOURCE_LIST) {
884
- this.selectedItemsSource = selectedItems;
885
- }
886
- else {
887
- this.selectedItemsTarget = selectedItems;
888
- }
889
- }
890
- findNextOptionIndex(index, listType) {
891
- const items = this.getListItems(listType);
892
- const matchedOptionIndex = [...items].findIndex((link) => link.id === index);
893
- return matchedOptionIndex > -1 ? matchedOptionIndex + 1 : 0;
894
- }
895
- findPrevOptionIndex(index, listType) {
896
- const items = this.getListItems(listType);
897
- const matchedOptionIndex = [...items].findIndex((link) => link.id === index);
898
- return matchedOptionIndex > -1 ? matchedOptionIndex - 1 : 0;
899
- }
900
- onItemKeyDown(event, selectedItems, callback, listType) {
901
- switch (event.code) {
902
- case 'ArrowDown':
903
- this.onArrowDownKey(event, selectedItems, callback, listType);
904
- break;
905
- case 'ArrowUp':
906
- this.onArrowUpKey(event, selectedItems, callback, listType);
907
- break;
908
- case 'Home':
909
- this.onHomeKey(event, selectedItems, callback, listType);
910
- break;
911
- case 'End':
912
- this.onEndKey(event, selectedItems, callback, listType);
913
- break;
914
- case 'Enter':
915
- this.onEnterKey(event, selectedItems, callback, listType);
916
- break;
917
- case 'Space':
918
- this.onSpaceKey(event, selectedItems, callback, listType);
919
- break;
920
- case 'KeyA':
921
- if (event.ctrlKey) {
922
- this.setSelectionList(listType, this.getVisibleList(listType));
923
- callback.emit({ items: selectedItems });
924
- event.preventDefault();
925
- }
926
- default:
927
- break;
928
- }
929
- }
930
- getFocusedOption(index, listType) {
931
- if (index === -1)
932
- return null;
933
- if (listType === this.SOURCE_LIST) {
934
- return this.visibleOptionsSource && this.visibleOptionsSource.length ? this.visibleOptionsSource[index] : this.source && this.source.length ? this.source[index] : null;
935
- }
936
- return this.visibleOptionsTarget && this.visibleOptionsTarget.length ? this.visibleOptionsTarget[index] : this.target && this.target.length ? this.target[index] : null;
937
- }
938
- changeFocusedOptionIndex(index, listType) {
939
- const items = this.getListItems(listType);
940
- if (items?.length > 0) {
941
- let order = index >= items.length ? items.length - 1 : index < 0 ? 0 : index;
942
- this.focusedOptionIndex = items[order].getAttribute('id');
943
- this.focusedOption = this.getFocusedOption(order, listType);
944
- this.scrollInView(items[order].getAttribute('id'), listType);
945
- }
946
- }
947
- scrollInView(id, listType) {
948
- const element = DomHandler.findSingle(this.getListElement(listType), `li[id="${id}"]`);
949
- if (element) {
950
- element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });
951
- }
952
- }
953
- onArrowDownKey(event, selectedItems, callback, listType) {
954
- const optionIndex = this.findNextOptionIndex(this.focusedOptionIndex, listType);
955
- this.changeFocusedOptionIndex(optionIndex, listType);
956
- if (event.shiftKey) {
957
- this.onEnterKey(event, selectedItems, callback, listType);
958
- }
959
- event.preventDefault();
960
- }
961
- onArrowUpKey(event, selectedItems, callback, listType) {
962
- const optionIndex = this.findPrevOptionIndex(this.focusedOptionIndex, listType);
963
- this.changeFocusedOptionIndex(optionIndex, listType);
964
- if (event.shiftKey) {
965
- this.onEnterKey(event, selectedItems, callback, listType);
966
- }
967
- event.preventDefault();
968
- }
969
- onEnterKey(event, selectedItems, callback, listType) {
970
- this.onItemClick(event, this.focusedOption, selectedItems, listType, callback);
971
- event.preventDefault();
972
- }
973
- onSpaceKey(event, selectedItems, callback, listType) {
974
- event.preventDefault();
975
- if (event.shiftKey && selectedItems && selectedItems.length > 0) {
976
- let visibleList = this.getVisibleList(listType);
977
- let lastSelectedIndex = this.getLatestSelectedVisibleOptionIndex(visibleList, selectedItems);
978
- if (lastSelectedIndex !== -1) {
979
- let focusedIndex = ObjectUtils.findIndexInList(this.focusedOption, visibleList);
980
- selectedItems = [...visibleList.slice(Math.min(lastSelectedIndex, focusedIndex), Math.max(lastSelectedIndex, focusedIndex) + 1)];
981
- this.setSelectionList(listType, selectedItems);
982
- callback.emit({ items: selectedItems });
983
- return;
984
- }
985
- }
986
- this.onEnterKey(event, selectedItems, callback, listType);
987
- }
988
- onHomeKey(event, selectedItems, callback, listType) {
989
- if (event.ctrlKey && event.shiftKey) {
990
- let visibleList = this.getVisibleList(listType);
991
- let focusedIndex = ObjectUtils.findIndexInList(this.focusedOption, visibleList);
992
- selectedItems = [...visibleList.slice(0, focusedIndex + 1)];
993
- this.setSelectionList(listType, selectedItems);
994
- callback.emit({ items: selectedItems });
995
- }
996
- else {
997
- this.changeFocusedOptionIndex(0, listType);
998
- }
999
- event.preventDefault();
1000
- }
1001
- onEndKey(event, selectedItems, callback, listType) {
1002
- let visibleList = this.getVisibleList(listType);
1003
- let lastIndex = visibleList && visibleList.length > 0 ? visibleList.length - 1 : null;
1004
- if (lastIndex === null)
1005
- return;
1006
- if (event.ctrlKey && event.shiftKey) {
1007
- let focusedIndex = ObjectUtils.findIndexInList(this.focusedOption, visibleList);
1008
- selectedItems = [...visibleList.slice(focusedIndex, lastIndex)];
1009
- this.setSelectionList(listType, selectedItems);
1010
- callback.emit({ items: selectedItems });
1011
- }
1012
- else {
1013
- this.changeFocusedOptionIndex(lastIndex, listType);
1014
- }
1015
- event.preventDefault();
1016
- }
1017
- getDropIndexes(fromIndex, toIndex, droppedList, isTransfer, data) {
1018
- let previousIndex, currentIndex;
1019
- if (droppedList === this.SOURCE_LIST) {
1020
- previousIndex = isTransfer ? (this.filterValueTarget ? ObjectUtils.findIndexInList(data, this.target) : fromIndex) : this.filterValueSource ? ObjectUtils.findIndexInList(data, this.source) : fromIndex;
1021
- currentIndex = this.filterValueSource ? this.findFilteredCurrentIndex(this.visibleOptionsSource, toIndex, this.source) : toIndex;
1022
- }
1023
- else {
1024
- previousIndex = isTransfer ? (this.filterValueSource ? ObjectUtils.findIndexInList(data, this.source) : fromIndex) : this.filterValueTarget ? ObjectUtils.findIndexInList(data, this.target) : fromIndex;
1025
- currentIndex = this.filterValueTarget ? this.findFilteredCurrentIndex(this.visibleOptionsTarget, toIndex, this.target) : toIndex;
1026
- }
1027
- return { previousIndex, currentIndex };
1028
- }
1029
- findFilteredCurrentIndex(visibleOptions, index, options) {
1030
- if (visibleOptions.length === index) {
1031
- let toIndex = ObjectUtils.findIndexInList(visibleOptions[index - 1], options);
1032
- return toIndex + 1;
1033
- }
1034
- else {
1035
- return ObjectUtils.findIndexInList(visibleOptions[index], options);
1036
- }
1037
- }
1038
- resetSourceFilter() {
1039
- this.visibleOptionsSource = null;
1040
- this.filterValueSource = null;
1041
- this.sourceFilterViewChild && (this.sourceFilterViewChild.nativeElement.value = '');
1042
- }
1043
- resetTargetFilter() {
1044
- this.visibleOptionsTarget = null;
1045
- this.filterValueTarget = null;
1046
- this.targetFilterViewChild && (this.targetFilterViewChild.nativeElement.value = '');
1047
- }
1048
- resetFilter() {
1049
- this.resetSourceFilter();
1050
- this.resetTargetFilter();
1051
- }
1052
- findNextItem(item) {
1053
- let nextItem = item.nextElementSibling;
1054
- if (nextItem)
1055
- return !DomHandler.hasClass(nextItem, 'p-picklist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;
1056
- else
1057
- return null;
1058
- }
1059
- findPrevItem(item) {
1060
- let prevItem = item.previousElementSibling;
1061
- if (prevItem)
1062
- return !DomHandler.hasClass(prevItem, 'p-picklist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;
1063
- else
1064
- return null;
1065
- }
1066
- initMedia() {
1067
- if (isPlatformBrowser(this.platformId)) {
1068
- this.media = this.window.matchMedia(`(max-width: ${this.breakpoint})`);
1069
- this.viewChanged = this.media.matches;
1070
- this.bindMediaChangeListener();
1071
- }
1072
- }
1073
- destroyMedia() {
1074
- this.unbindMediaChangeListener();
1075
- }
1076
- bindMediaChangeListener() {
1077
- if (this.media && !this.mediaChangeListener) {
1078
- this.mediaChangeListener = this.renderer.listen(this.media, 'change', (event) => {
1079
- this.viewChanged = event.matches;
1080
- this.cd.markForCheck();
1081
- });
1082
- }
1083
- }
1084
- unbindMediaChangeListener() {
1085
- if (this.mediaChangeListener) {
1086
- this.mediaChangeListener();
1087
- this.mediaChangeListener = null;
1088
- }
1089
- }
1090
- createStyle() {
1091
- if (isPlatformBrowser(this.platformId)) {
1092
- if (!this.styleElement) {
1093
- this.renderer.setAttribute(this.el.nativeElement.children[0], this.id, '');
1094
- this.styleElement = this.renderer.createElement('style');
1095
- this.renderer.setAttribute(this.styleElement, 'type', 'text/css');
1096
- DomHandler.setAttribute(this.styleElement, 'nonce', this.config?.csp()?.nonce);
1097
- this.renderer.appendChild(this.document.head, this.styleElement);
1098
- let innerHTML = `
1099
- @media screen and (max-width: ${this.breakpoint}) {
1100
- .p-picklist[${this.id}] {
1101
- flex-direction: column;
1102
- }
1103
-
1104
- .p-picklist[${this.id}] .p-picklist-buttons {
1105
- padding: var(--content-padding);
1106
- flex-direction: row;
1107
- }
1108
-
1109
- .p-picklist[${this.id}] .p-picklist-buttons .p-button {
1110
- margin-right: var(--inline-spacing);
1111
- margin-bottom: 0;
1112
- }
1113
-
1114
- .p-picklist[${this.id}] .p-picklist-buttons .p-button:last-child {
1115
- margin-right: 0;
1116
- }
1117
- }`;
1118
- this.renderer.setProperty(this.styleElement, 'innerHTML', innerHTML);
1119
- }
1120
- }
1121
- }
1122
- sourceMoveDisabled() {
1123
- if (this.disabled || !this.selectedItemsSource.length) {
1124
- return true;
1125
- }
1126
- }
1127
- targetMoveDisabled() {
1128
- if (this.disabled || !this.selectedItemsTarget.length) {
1129
- return true;
1130
- }
1131
- }
1132
- moveRightDisabled() {
1133
- return this.disabled || ObjectUtils.isEmpty(this.selectedItemsSource);
1134
- }
1135
- moveLeftDisabled() {
1136
- return this.disabled || ObjectUtils.isEmpty(this.selectedItemsTarget);
1137
- }
1138
- moveAllRightDisabled() {
1139
- return this.disabled || ObjectUtils.isEmpty(this.source);
1140
- }
1141
- moveAllLeftDisabled() {
1142
- return this.disabled || ObjectUtils.isEmpty(this.target);
1143
- }
1144
- destroyStyle() {
1145
- if (this.styleElement) {
1146
- this.renderer.removeChild(this.document.head, this.styleElement);
1147
- this.styleElement = null;
1148
- ``;
1149
- }
1150
- }
1151
- ngOnDestroy() {
1152
- this.destroyStyle();
1153
- this.destroyMedia();
1154
- }
1155
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PickList, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.caxConfig }], target: i0.ɵɵFactoryTarget.Component });
1156
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: PickList, selector: "p-pickList", inputs: { source: "source", target: "target", sourceHeader: "sourceHeader", tabindex: ["tabindex", "tabindex", numberAttribute], rightButtonAriaLabel: "rightButtonAriaLabel", leftButtonAriaLabel: "leftButtonAriaLabel", allRightButtonAriaLabel: "allRightButtonAriaLabel", allLeftButtonAriaLabel: "allLeftButtonAriaLabel", upButtonAriaLabel: "upButtonAriaLabel", downButtonAriaLabel: "downButtonAriaLabel", topButtonAriaLabel: "topButtonAriaLabel", bottomButtonAriaLabel: "bottomButtonAriaLabel", targetHeader: "targetHeader", responsive: ["responsive", "responsive", booleanAttribute], filterBy: "filterBy", filterLocale: "filterLocale", trackBy: "trackBy", sourceTrackBy: "sourceTrackBy", targetTrackBy: "targetTrackBy", showSourceFilter: ["showSourceFilter", "showSourceFilter", booleanAttribute], showTargetFilter: ["showTargetFilter", "showTargetFilter", booleanAttribute], metaKeySelection: ["metaKeySelection", "metaKeySelection", booleanAttribute], dragdrop: ["dragdrop", "dragdrop", booleanAttribute], style: "style", styleClass: "styleClass", sourceStyle: "sourceStyle", targetStyle: "targetStyle", showSourceControls: ["showSourceControls", "showSourceControls", booleanAttribute], showTargetControls: ["showTargetControls", "showTargetControls", booleanAttribute], sourceFilterPlaceholder: "sourceFilterPlaceholder", targetFilterPlaceholder: "targetFilterPlaceholder", disabled: ["disabled", "disabled", booleanAttribute], ariaSourceFilterLabel: "ariaSourceFilterLabel", ariaTargetFilterLabel: "ariaTargetFilterLabel", filterMatchMode: "filterMatchMode", stripedRows: ["stripedRows", "stripedRows", booleanAttribute], keepSelection: ["keepSelection", "keepSelection", booleanAttribute], breakpoint: "breakpoint" }, outputs: { onMoveToSource: "onMoveToSource", onMoveAllToSource: "onMoveAllToSource", onMoveAllToTarget: "onMoveAllToTarget", onMoveToTarget: "onMoveToTarget", onSourceReorder: "onSourceReorder", onTargetReorder: "onTargetReorder", onSourceSelect: "onSourceSelect", onTargetSelect: "onTargetSelect", onSourceFilter: "onSourceFilter", onTargetFilter: "onTargetFilter", onFocus: "onFocus", onBlur: "onBlur" }, host: { classAttribute: "cax-element" }, queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "listViewSourceChild", first: true, predicate: ["sourcelist"], descendants: true }, { propertyName: "listViewTargetChild", first: true, predicate: ["targetlist"], descendants: true }, { propertyName: "sourceFilterViewChild", first: true, predicate: ["sourceFilter"], descendants: true }, { propertyName: "targetFilterViewChild", first: true, predicate: ["targetFilter"], descendants: true }], ngImport: i0, template: `
1157
- <div [class]="styleClass" [ngStyle]="style" [ngClass]="{ 'p-picklist p-component': true, 'p-picklist-striped': stripedRows }" cdkDropListGroup [attr.data-pc-name]="'picklist'" [attr.data-pc-section]="'root'">
1158
- <div class="p-picklist-buttons p-picklist-source-controls" *ngIf="showSourceControls" [attr.data-pc-section]="'sourceControls'" [attr.data-pc-group-section]="'controls'">
1159
- <button
1160
- type="button"
1161
- [attr.aria-label]="moveUpAriaLabel"
1162
- pButton
1163
- pRipple
1164
- class="p-button-icon-only"
1165
- [disabled]="sourceMoveDisabled()"
1166
- (click)="moveUp(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
1167
- [attr.data-pc-section]="'sourceMoveUpButton'"
1168
- >
1169
- <AngleUpIcon *ngIf="!moveUpIconTemplate" [attr.data-pc-section]="'moveupicon'" />
1170
- <ng-template *ngTemplateOutlet="moveUpIconTemplate"></ng-template>
1171
- </button>
1172
- <button
1173
- type="button"
1174
- [attr.aria-label]="moveTopAriaLabel"
1175
- pButton
1176
- pRipple
1177
- class="p-button-icon-only"
1178
- [disabled]="sourceMoveDisabled()"
1179
- (click)="moveTop(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
1180
- [attr.data-pc-section]="'sourceMoveTopButton'"
1181
- >
1182
- <AngleDoubleUpIcon *ngIf="!moveTopIconTemplate" [attr.data-pc-section]="'movetopicon'" />
1183
- <ng-template *ngTemplateOutlet="moveTopIconTemplate"></ng-template>
1184
- </button>
1185
- <button
1186
- type="button"
1187
- [attr.aria-label]="moveDownAriaLabel"
1188
- pButton
1189
- pRipple
1190
- class="p-button-icon-only"
1191
- [disabled]="sourceMoveDisabled()"
1192
- (click)="moveDown(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
1193
- [attr.data-pc-section]="'sourceMoveDownButton'"
1194
- >
1195
- <AngleDownIcon *ngIf="!moveDownIconTemplate" [attr.data-pc-section]="'movedownicon'" />
1196
- <ng-template *ngTemplateOutlet="moveDownIconTemplate"></ng-template>
1197
- </button>
1198
- <button
1199
- type="button"
1200
- [attr.aria-label]="moveBottomAriaLabel"
1201
- pButton
1202
- pRipple
1203
- class="p-button-icon-only"
1204
- [disabled]="sourceMoveDisabled()"
1205
- (click)="moveBottom(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
1206
- [attr.data-pc-section]="'sourceMoveBottomButton'"
1207
- >
1208
- <AngleDoubleDownIcon *ngIf="!moveBottomIconTemplate" [attr.data-pc-section]="'movebottomicon'" />
1209
- <ng-template *ngTemplateOutlet="moveBottomIconTemplate"></ng-template>
1210
- </button>
1211
- </div>
1212
- <div class="p-picklist-list-wrapper p-picklist-source-wrapper" [attr.data-pc-section]="'sourceWrapper'" [attr.data-pc-group-section]="'listWrapper'">
1213
- <div [id]="idSource + '_header'" class="p-picklist-header" *ngIf="sourceHeader || sourceHeaderTemplate" [attr.data-pc-section]="'sourceHeader'" [attr.data-pc-group-section]="'header'">
1214
- <div class="p-picklist-title" *ngIf="!sourceHeaderTemplate">{{ sourceHeader }}</div>
1215
- <ng-container *ngTemplateOutlet="sourceHeaderTemplate"></ng-container>
1216
- </div>
1217
- <div class="p-picklist-filter-container" *ngIf="filterBy && showSourceFilter !== false" [attr.data-pc-section]="'sourceFilterContainer'">
1218
- <ng-container *ngIf="sourceFilterTemplate; else builtInSourceElement">
1219
- <ng-container *ngTemplateOutlet="sourceFilterTemplate; context: { options: sourceFilterOptions }"></ng-container>
1220
- </ng-container>
1221
- <ng-template #builtInSourceElement>
1222
- <div class="p-picklist-filter" [attr.data-pc-section]="'sourceFilter'">
1223
- <input
1224
- #sourceFilter
1225
- type="text"
1226
- role="textbox"
1227
- (keyup)="onFilter($event, SOURCE_LIST)"
1228
- class="p-picklist-filter-input p-inputtext p-component"
1229
- [disabled]="disabled"
1230
- [attr.placeholder]="sourceFilterPlaceholder"
1231
- [attr.aria-label]="ariaSourceFilterLabel"
1232
- [attr.data-pc-section]="'sourceFilterInput'"
1233
- />
1234
- <SearchIcon *ngIf="!sourceFilterIconTemplate" [styleClass]="'p-picklist-filter-icon'" [attr.data-pc-section]="'sourcefilterIcon'" />
1235
- <span class="p-picklist-filter-icon" *ngIf="sourceFilterIconTemplate" [attr.data-pc-section]="'sourcefilterIcon'">
1236
- <ng-template *ngTemplateOutlet="sourceFilterIconTemplate"></ng-template>
1237
- </span>
1238
- </div>
1239
- </ng-template>
1240
- </div>
1241
-
1242
- <ul
1243
- #sourcelist
1244
- class="p-picklist-list p-picklist-source"
1245
- [id]="idSource + '_list'"
1246
- [attr.aria-labelledby]="idSource + '_header'"
1247
- (keydown)="onItemKeyDown($event, selectedItemsSource, onSourceSelect, SOURCE_LIST)"
1248
- (focus)="onListFocus($event, SOURCE_LIST)"
1249
- (blur)="onListBlur($event, SOURCE_LIST)"
1250
- cdkDropList
1251
- [cdkDropListData]="source"
1252
- (cdkDropListDropped)="onDrop($event, SOURCE_LIST)"
1253
- [ngStyle]="sourceStyle"
1254
- role="listbox"
1255
- aria-multiselectable="true"
1256
- [attr.aria-activedescendant]="focused['sourceList'] ? focusedOptionId : undefined"
1257
- [attr.tabindex]="source && source.length > 0 ? tabindex : -1"
1258
- [attr.data-pc-section]="'sourceList'"
1259
- [attr.data-pc-group-section]="'list'"
1260
- >
1261
- <ng-template ngFor let-item [ngForOf]="source" [ngForTrackBy]="sourceTrackBy || trackBy" let-i="index" let-l="last">
1262
- <li
1263
- pRipple
1264
- cdkDrag
1265
- [id]="idSource + '_' + i"
1266
- [ngClass]="itemClass(item, idSource + '_' + i, selectedItemsSource)"
1267
- [cdkDragData]="item"
1268
- [cdkDragDisabled]="!dragdrop"
1269
- (click)="onItemClick($event, item, selectedItemsSource, SOURCE_LIST, onSourceSelect, idSource + '_' + i)"
1270
- (mousedown)="onOptionMouseDown(i, SOURCE_LIST)"
1271
- (dblclick)="onSourceItemDblClick()"
1272
- (touchend)="onItemTouchEnd()"
1273
- *ngIf="isItemVisible(item, SOURCE_LIST)"
1274
- role="option"
1275
- [attr.data-pc-section]="'item'"
1276
- [attr.aria-selected]="isSelected(item, selectedItemsSource)"
1277
- >
1278
- <ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item, index: i }"></ng-container>
1279
- </li>
1280
- </ng-template>
1281
- <ng-container *ngIf="isEmpty(SOURCE_LIST) && (emptyMessageSourceTemplate || emptyFilterMessageSourceTemplate)">
1282
- <li class="p-picklist-empty-message" *ngIf="!filterValueSource || !emptyFilterMessageSourceTemplate" [attr.data-pc-section]="'sourceEmptyMessage'">
1283
- <ng-container *ngTemplateOutlet="emptyMessageSourceTemplate"></ng-container>
1284
- </li>
1285
- <li class="p-picklist-empty-message" *ngIf="filterValueSource" [attr.data-pc-section]="'sourceEmptyMessage'">
1286
- <ng-container *ngTemplateOutlet="emptyFilterMessageSourceTemplate"></ng-container>
1287
- </li>
1288
- </ng-container>
1289
- </ul>
1290
- </div>
1291
- <div class="p-picklist-buttons p-picklist-transfer-buttons" [attr.data-pc-section]="'buttons'" [attr.data-pc-group-section]="'controls'">
1292
- <button type="button" [attr.aria-label]="moveToTargetAriaLabel" pButton pRipple class="p-button-icon-only" [disabled]="moveRightDisabled()" (click)="moveRight()" [attr.data-pc-section]="'moveToTargetButton'">
1293
- <ng-container *ngIf="!moveToTargetIconTemplate">
1294
- <AngleRightIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movetotargeticon'" />
1295
- <AngleDownIcon *ngIf="viewChanged" [attr.data-pc-section]="'movetotargeticon'" />
1296
- </ng-container>
1297
- <ng-template *ngTemplateOutlet="moveToTargetIconTemplate; context: { $implicit: viewChanged }"></ng-template>
1298
- </button>
1299
- <button type="button" [attr.aria-label]="moveAllToTargetAriaLabel" pButton pRipple class="p-button-icon-only" [disabled]="moveAllRightDisabled()" (click)="moveAllRight()" [attr.data-pc-section]="'moveAllToTargetButton'">
1300
- <ng-container *ngIf="!moveAllToTargetIconTemplate">
1301
- <AngleDoubleRightIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movealltotargeticon'" />
1302
- <AngleDoubleDownIcon *ngIf="viewChanged" [attr.data-pc-section]="'movealltotargeticon'" />
1303
- </ng-container>
1304
- <ng-template *ngTemplateOutlet="moveAllToTargetIconTemplate; context: { $implicit: viewChanged }"></ng-template>
1305
- </button>
1306
- <button type="button" [attr.aria-label]="moveToSourceAriaLabel" pButton pRipple class="p-button-icon-only" [disabled]="moveLeftDisabled()" (click)="moveLeft()" [attr.data-pc-section]="'moveToSourceButton'">
1307
- <ng-container *ngIf="!moveToSourceIconTemplate">
1308
- <AngleLeftIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movedownsourceticon'" />
1309
- <AngleUpIcon *ngIf="viewChanged" [attr.data-pc-section]="'movedownsourceticon'" />
1310
- </ng-container>
1311
- <ng-template *ngTemplateOutlet="moveToSourceIconTemplate; context: { $implicit: viewChanged }"></ng-template>
1312
- </button>
1313
- <button type="button" [attr.aria-label]="moveAllToSourceAriaLabel" pButton pRipple class="p-button-icon-only" [disabled]="moveAllLeftDisabled()" (click)="moveAllLeft()" [attr.data-pc-section]="'moveAllToSourceButton'">
1314
- <ng-container *ngIf="!moveAllToSourceIconTemplate">
1315
- <AngleDoubleLeftIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movealltosourceticon'" />
1316
- <AngleDoubleUpIcon *ngIf="viewChanged" [attr.data-pc-section]="'movealltosourceticon'" />
1317
- </ng-container>
1318
- <ng-template *ngTemplateOutlet="moveAllToSourceIconTemplate; context: { $implicit: viewChanged }"></ng-template>
1319
- </button>
1320
- </div>
1321
- <div class="p-picklist-list-wrapper p-picklist-target-wrapper" [attr.data-pc-section]="'targetWrapper'" [attr.data-pc-group-section]="'listwrapper'">
1322
- <div [id]="idTarget + '_header'" class="p-picklist-header" *ngIf="targetHeader || targetHeaderTemplate" [attr.data-pc-section]="'targetHead'" [attr.data-pc-group-section]="'header'">
1323
- <div class="p-picklist-title" *ngIf="!targetHeaderTemplate">{{ targetHeader }}</div>
1324
- <ng-container *ngTemplateOutlet="targetHeaderTemplate"></ng-container>
1325
- </div>
1326
- <div class="p-picklist-filter-container" *ngIf="filterBy && showTargetFilter !== false" [attr.data-pc-section]="'targetFilterContainer'">
1327
- <ng-container *ngIf="targetFilterTemplate; else builtInTargetElement">
1328
- <ng-container *ngTemplateOutlet="targetFilterTemplate; context: { options: targetFilterOptions }"></ng-container>
1329
- </ng-container>
1330
- <ng-template #builtInTargetElement>
1331
- <div class="p-picklist-filter" [attr.data-pc-section]="'targetFilter'">
1332
- <input
1333
- #targetFilter
1334
- type="text"
1335
- role="textbox"
1336
- (keyup)="onFilter($event, TARGET_LIST)"
1337
- class="p-picklist-filter-input p-inputtext p-component"
1338
- [disabled]="disabled"
1339
- [attr.placeholder]="targetFilterPlaceholder"
1340
- [attr.aria-label]="ariaTargetFilterLabel"
1341
- [attr.data-pc-section]="'targetFilterInput'"
1342
- />
1343
- <SearchIcon *ngIf="!targetFilterIconTemplate" [styleClass]="'p-picklist-filter-icon'" [attr.data-pc-section]="'targetfiltericon'" />
1344
- <span class="p-picklist-filter-icon" *ngIf="targetFilterIconTemplate" [attr.data-pc-section]="'targetfiltericon'">
1345
- <ng-template *ngTemplateOutlet="targetFilterIconTemplate"></ng-template>
1346
- </span>
1347
- </div>
1348
- </ng-template>
1349
- </div>
1350
- <ul
1351
- #targetlist
1352
- class="p-picklist-list p-picklist-target"
1353
- [id]="idTarget + '_list'"
1354
- [attr.aria-labelledby]="idTarget + '_header'"
1355
- (keydown)="onItemKeyDown($event, selectedItemsTarget, onTargetSelect, TARGET_LIST)"
1356
- (focus)="onListFocus($event, TARGET_LIST)"
1357
- (blur)="onListBlur($event, TARGET_LIST)"
1358
- cdkDropList
1359
- [cdkDropListData]="target"
1360
- (cdkDropListDropped)="onDrop($event, TARGET_LIST)"
1361
- [ngStyle]="targetStyle"
1362
- role="listbox"
1363
- aria-multiselectable="true"
1364
- [attr.aria-activedescendant]="focused['targetList'] ? focusedOptionId : undefined"
1365
- [attr.tabindex]="target && target.length > 0 ? tabindex : -1"
1366
- [attr.data-pc-section]="'targetList'"
1367
- [attr.data-pc-group-section]="'list'"
1368
- >
1369
- <ng-template ngFor let-item [ngForOf]="target" [ngForTrackBy]="targetTrackBy || trackBy" let-i="index" let-l="last">
1370
- <li
1371
- pRipple
1372
- cdkDrag
1373
- [id]="idTarget + '_' + i"
1374
- [ngClass]="itemClass(item, idTarget + '_' + i, selectedItemsTarget)"
1375
- [cdkDragData]="item"
1376
- [cdkDragDisabled]="!dragdrop"
1377
- (click)="onItemClick($event, item, selectedItemsTarget, TARGET_LIST, onTargetSelect, idTarget + '_' + i)"
1378
- (mousedown)="onOptionMouseDown(i, TARGET_LIST)"
1379
- (dblclick)="onTargetItemDblClick()"
1380
- (touchend)="onItemTouchEnd()"
1381
- *ngIf="isItemVisible(item, TARGET_LIST)"
1382
- role="option"
1383
- [attr.data-pc-section]="'item'"
1384
- [attr.aria-selected]="isSelected(item, selectedItemsTarget)"
1385
- >
1386
- <ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item, index: i }"></ng-container>
1387
- </li>
1388
- </ng-template>
1389
- <ng-container *ngIf="isEmpty(TARGET_LIST) && (emptyMessageTargetTemplate || emptyFilterMessageTargetTemplate)">
1390
- <li class="p-picklist-empty-message" *ngIf="!filterValueTarget || !emptyFilterMessageTargetTemplate" [attr.data-pc-section]="'targetEmptyMessage'">
1391
- <ng-container *ngTemplateOutlet="emptyMessageTargetTemplate"></ng-container>
1392
- </li>
1393
- <li class="p-picklist-empty-message" *ngIf="filterValueTarget" [attr.data-pc-section]="'targetEmptyMessage'">
1394
- <ng-container *ngTemplateOutlet="emptyFilterMessageTargetTemplate"></ng-container>
1395
- </li>
1396
- </ng-container>
1397
- </ul>
1398
- </div>
1399
- <div class="p-picklist-buttons p-picklist-target-controls" *ngIf="showTargetControls" [attr.data-pc-section]="'targetControls'" [attr.data-pc-group-section]="'controls'">
1400
- <button
1401
- type="button"
1402
- [attr.aria-label]="moveUpAriaLabel"
1403
- pButton
1404
- pRipple
1405
- class="p-button-icon-only"
1406
- [disabled]="targetMoveDisabled()"
1407
- (click)="moveUp(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
1408
- [attr.data-pc-section]="'targetMoveUpButton'"
1409
- >
1410
- <AngleUpIcon *ngIf="!moveUpIconTemplate" [attr.data-pc-section]="'moveupicon'" />
1411
- <ng-template *ngTemplateOutlet="moveUpIconTemplate"></ng-template>
1412
- </button>
1413
- <button
1414
- type="button"
1415
- [attr.aria-label]="moveTopAriaLabel"
1416
- pButton
1417
- pRipple
1418
- class="p-button-icon-only"
1419
- [disabled]="targetMoveDisabled()"
1420
- (click)="moveTop(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
1421
- [attr.data-pc-section]="'targetMoveTopButton'"
1422
- >
1423
- <AngleDoubleUpIcon *ngIf="!moveTopIconTemplate" [attr.data-pc-section]="'movetopicon'" />
1424
- <ng-template *ngTemplateOutlet="moveTopIconTemplate"></ng-template>
1425
- </button>
1426
- <button
1427
- type="button"
1428
- [attr.aria-label]="moveDownAriaLabel"
1429
- pButton
1430
- pRipple
1431
- class="p-button-icon-only"
1432
- [disabled]="targetMoveDisabled()"
1433
- (click)="moveDown(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
1434
- [attr.data-pc-section]="'targetMoveDownButton'"
1435
- >
1436
- <AngleDownIcon *ngIf="!moveDownIconTemplate" [attr.data-pc-section]="'movedownicon'" />
1437
- <ng-template *ngTemplateOutlet="moveDownIconTemplate"></ng-template>
1438
- </button>
1439
- <button
1440
- type="button"
1441
- [attr.aria-label]="moveBottomAriaLabel"
1442
- pButton
1443
- pRipple
1444
- class="p-button-icon-only"
1445
- [disabled]="targetMoveDisabled()"
1446
- (click)="moveBottom(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
1447
- [attr.data-pc-section]="'targetMoveBottomButton'"
1448
- >
1449
- <AngleDoubleDownIcon *ngIf="!moveBottomIconTemplate" [attr.data-pc-section]="'movebottomicon'" />
1450
- <ng-template *ngTemplateOutlet="moveBottomIconTemplate"></ng-template>
1451
- </button>
1452
- </div>
1453
- </div>
1454
- `, isInline: true, styles: ["@layer cax{.p-picklist{display:flex}.p-picklist-buttons{display:flex;flex-direction:column;justify-content:center}.p-picklist-list-wrapper{flex:1 1 50%}.p-picklist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-picklist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-picklist-item:not(.cdk-drag-disabled){cursor:move}.p-picklist-item.cdk-drag-placeholder{opacity:0}.p-picklist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-picklist-filter{position:relative}.p-picklist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-picklist-filter-input{width:100%}.p-picklist-list.cdk-drop-list-dragging .p-picklist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => i2.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(() => i3.CdkDropList), selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i0.forwardRef(() => i3.CdkDropListGroup), selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i0.forwardRef(() => i3.CdkDrag), selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i0.forwardRef(() => AngleDoubleDownIcon), selector: "AngleDoubleDownIcon" }, { kind: "component", type: i0.forwardRef(() => AngleDoubleLeftIcon), selector: "AngleDoubleLeftIcon" }, { kind: "component", type: i0.forwardRef(() => AngleDoubleRightIcon), selector: "AngleDoubleRightIcon" }, { kind: "component", type: i0.forwardRef(() => AngleDoubleUpIcon), selector: "AngleDoubleUpIcon" }, { kind: "component", type: i0.forwardRef(() => AngleDownIcon), selector: "AngleDownIcon" }, { kind: "component", type: i0.forwardRef(() => AngleLeftIcon), selector: "AngleLeftIcon" }, { kind: "component", type: i0.forwardRef(() => AngleRightIcon), selector: "AngleRightIcon" }, { kind: "component", type: i0.forwardRef(() => AngleUpIcon), selector: "AngleUpIcon" }, { kind: "component", type: i0.forwardRef(() => SearchIcon), selector: "SearchIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1455
- }
1456
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PickList, decorators: [{
1457
- type: Component,
1458
- args: [{ selector: 'p-pickList', template: `
1459
- <div [class]="styleClass" [ngStyle]="style" [ngClass]="{ 'p-picklist p-component': true, 'p-picklist-striped': stripedRows }" cdkDropListGroup [attr.data-pc-name]="'picklist'" [attr.data-pc-section]="'root'">
1460
- <div class="p-picklist-buttons p-picklist-source-controls" *ngIf="showSourceControls" [attr.data-pc-section]="'sourceControls'" [attr.data-pc-group-section]="'controls'">
1461
- <button
1462
- type="button"
1463
- [attr.aria-label]="moveUpAriaLabel"
1464
- pButton
1465
- pRipple
1466
- class="p-button-icon-only"
1467
- [disabled]="sourceMoveDisabled()"
1468
- (click)="moveUp(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
1469
- [attr.data-pc-section]="'sourceMoveUpButton'"
1470
- >
1471
- <AngleUpIcon *ngIf="!moveUpIconTemplate" [attr.data-pc-section]="'moveupicon'" />
1472
- <ng-template *ngTemplateOutlet="moveUpIconTemplate"></ng-template>
1473
- </button>
1474
- <button
1475
- type="button"
1476
- [attr.aria-label]="moveTopAriaLabel"
1477
- pButton
1478
- pRipple
1479
- class="p-button-icon-only"
1480
- [disabled]="sourceMoveDisabled()"
1481
- (click)="moveTop(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
1482
- [attr.data-pc-section]="'sourceMoveTopButton'"
1483
- >
1484
- <AngleDoubleUpIcon *ngIf="!moveTopIconTemplate" [attr.data-pc-section]="'movetopicon'" />
1485
- <ng-template *ngTemplateOutlet="moveTopIconTemplate"></ng-template>
1486
- </button>
1487
- <button
1488
- type="button"
1489
- [attr.aria-label]="moveDownAriaLabel"
1490
- pButton
1491
- pRipple
1492
- class="p-button-icon-only"
1493
- [disabled]="sourceMoveDisabled()"
1494
- (click)="moveDown(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
1495
- [attr.data-pc-section]="'sourceMoveDownButton'"
1496
- >
1497
- <AngleDownIcon *ngIf="!moveDownIconTemplate" [attr.data-pc-section]="'movedownicon'" />
1498
- <ng-template *ngTemplateOutlet="moveDownIconTemplate"></ng-template>
1499
- </button>
1500
- <button
1501
- type="button"
1502
- [attr.aria-label]="moveBottomAriaLabel"
1503
- pButton
1504
- pRipple
1505
- class="p-button-icon-only"
1506
- [disabled]="sourceMoveDisabled()"
1507
- (click)="moveBottom(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
1508
- [attr.data-pc-section]="'sourceMoveBottomButton'"
1509
- >
1510
- <AngleDoubleDownIcon *ngIf="!moveBottomIconTemplate" [attr.data-pc-section]="'movebottomicon'" />
1511
- <ng-template *ngTemplateOutlet="moveBottomIconTemplate"></ng-template>
1512
- </button>
1513
- </div>
1514
- <div class="p-picklist-list-wrapper p-picklist-source-wrapper" [attr.data-pc-section]="'sourceWrapper'" [attr.data-pc-group-section]="'listWrapper'">
1515
- <div [id]="idSource + '_header'" class="p-picklist-header" *ngIf="sourceHeader || sourceHeaderTemplate" [attr.data-pc-section]="'sourceHeader'" [attr.data-pc-group-section]="'header'">
1516
- <div class="p-picklist-title" *ngIf="!sourceHeaderTemplate">{{ sourceHeader }}</div>
1517
- <ng-container *ngTemplateOutlet="sourceHeaderTemplate"></ng-container>
1518
- </div>
1519
- <div class="p-picklist-filter-container" *ngIf="filterBy && showSourceFilter !== false" [attr.data-pc-section]="'sourceFilterContainer'">
1520
- <ng-container *ngIf="sourceFilterTemplate; else builtInSourceElement">
1521
- <ng-container *ngTemplateOutlet="sourceFilterTemplate; context: { options: sourceFilterOptions }"></ng-container>
1522
- </ng-container>
1523
- <ng-template #builtInSourceElement>
1524
- <div class="p-picklist-filter" [attr.data-pc-section]="'sourceFilter'">
1525
- <input
1526
- #sourceFilter
1527
- type="text"
1528
- role="textbox"
1529
- (keyup)="onFilter($event, SOURCE_LIST)"
1530
- class="p-picklist-filter-input p-inputtext p-component"
1531
- [disabled]="disabled"
1532
- [attr.placeholder]="sourceFilterPlaceholder"
1533
- [attr.aria-label]="ariaSourceFilterLabel"
1534
- [attr.data-pc-section]="'sourceFilterInput'"
1535
- />
1536
- <SearchIcon *ngIf="!sourceFilterIconTemplate" [styleClass]="'p-picklist-filter-icon'" [attr.data-pc-section]="'sourcefilterIcon'" />
1537
- <span class="p-picklist-filter-icon" *ngIf="sourceFilterIconTemplate" [attr.data-pc-section]="'sourcefilterIcon'">
1538
- <ng-template *ngTemplateOutlet="sourceFilterIconTemplate"></ng-template>
1539
- </span>
1540
- </div>
1541
- </ng-template>
1542
- </div>
1543
-
1544
- <ul
1545
- #sourcelist
1546
- class="p-picklist-list p-picklist-source"
1547
- [id]="idSource + '_list'"
1548
- [attr.aria-labelledby]="idSource + '_header'"
1549
- (keydown)="onItemKeyDown($event, selectedItemsSource, onSourceSelect, SOURCE_LIST)"
1550
- (focus)="onListFocus($event, SOURCE_LIST)"
1551
- (blur)="onListBlur($event, SOURCE_LIST)"
1552
- cdkDropList
1553
- [cdkDropListData]="source"
1554
- (cdkDropListDropped)="onDrop($event, SOURCE_LIST)"
1555
- [ngStyle]="sourceStyle"
1556
- role="listbox"
1557
- aria-multiselectable="true"
1558
- [attr.aria-activedescendant]="focused['sourceList'] ? focusedOptionId : undefined"
1559
- [attr.tabindex]="source && source.length > 0 ? tabindex : -1"
1560
- [attr.data-pc-section]="'sourceList'"
1561
- [attr.data-pc-group-section]="'list'"
1562
- >
1563
- <ng-template ngFor let-item [ngForOf]="source" [ngForTrackBy]="sourceTrackBy || trackBy" let-i="index" let-l="last">
1564
- <li
1565
- pRipple
1566
- cdkDrag
1567
- [id]="idSource + '_' + i"
1568
- [ngClass]="itemClass(item, idSource + '_' + i, selectedItemsSource)"
1569
- [cdkDragData]="item"
1570
- [cdkDragDisabled]="!dragdrop"
1571
- (click)="onItemClick($event, item, selectedItemsSource, SOURCE_LIST, onSourceSelect, idSource + '_' + i)"
1572
- (mousedown)="onOptionMouseDown(i, SOURCE_LIST)"
1573
- (dblclick)="onSourceItemDblClick()"
1574
- (touchend)="onItemTouchEnd()"
1575
- *ngIf="isItemVisible(item, SOURCE_LIST)"
1576
- role="option"
1577
- [attr.data-pc-section]="'item'"
1578
- [attr.aria-selected]="isSelected(item, selectedItemsSource)"
1579
- >
1580
- <ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item, index: i }"></ng-container>
1581
- </li>
1582
- </ng-template>
1583
- <ng-container *ngIf="isEmpty(SOURCE_LIST) && (emptyMessageSourceTemplate || emptyFilterMessageSourceTemplate)">
1584
- <li class="p-picklist-empty-message" *ngIf="!filterValueSource || !emptyFilterMessageSourceTemplate" [attr.data-pc-section]="'sourceEmptyMessage'">
1585
- <ng-container *ngTemplateOutlet="emptyMessageSourceTemplate"></ng-container>
1586
- </li>
1587
- <li class="p-picklist-empty-message" *ngIf="filterValueSource" [attr.data-pc-section]="'sourceEmptyMessage'">
1588
- <ng-container *ngTemplateOutlet="emptyFilterMessageSourceTemplate"></ng-container>
1589
- </li>
1590
- </ng-container>
1591
- </ul>
1592
- </div>
1593
- <div class="p-picklist-buttons p-picklist-transfer-buttons" [attr.data-pc-section]="'buttons'" [attr.data-pc-group-section]="'controls'">
1594
- <button type="button" [attr.aria-label]="moveToTargetAriaLabel" pButton pRipple class="p-button-icon-only" [disabled]="moveRightDisabled()" (click)="moveRight()" [attr.data-pc-section]="'moveToTargetButton'">
1595
- <ng-container *ngIf="!moveToTargetIconTemplate">
1596
- <AngleRightIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movetotargeticon'" />
1597
- <AngleDownIcon *ngIf="viewChanged" [attr.data-pc-section]="'movetotargeticon'" />
1598
- </ng-container>
1599
- <ng-template *ngTemplateOutlet="moveToTargetIconTemplate; context: { $implicit: viewChanged }"></ng-template>
1600
- </button>
1601
- <button type="button" [attr.aria-label]="moveAllToTargetAriaLabel" pButton pRipple class="p-button-icon-only" [disabled]="moveAllRightDisabled()" (click)="moveAllRight()" [attr.data-pc-section]="'moveAllToTargetButton'">
1602
- <ng-container *ngIf="!moveAllToTargetIconTemplate">
1603
- <AngleDoubleRightIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movealltotargeticon'" />
1604
- <AngleDoubleDownIcon *ngIf="viewChanged" [attr.data-pc-section]="'movealltotargeticon'" />
1605
- </ng-container>
1606
- <ng-template *ngTemplateOutlet="moveAllToTargetIconTemplate; context: { $implicit: viewChanged }"></ng-template>
1607
- </button>
1608
- <button type="button" [attr.aria-label]="moveToSourceAriaLabel" pButton pRipple class="p-button-icon-only" [disabled]="moveLeftDisabled()" (click)="moveLeft()" [attr.data-pc-section]="'moveToSourceButton'">
1609
- <ng-container *ngIf="!moveToSourceIconTemplate">
1610
- <AngleLeftIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movedownsourceticon'" />
1611
- <AngleUpIcon *ngIf="viewChanged" [attr.data-pc-section]="'movedownsourceticon'" />
1612
- </ng-container>
1613
- <ng-template *ngTemplateOutlet="moveToSourceIconTemplate; context: { $implicit: viewChanged }"></ng-template>
1614
- </button>
1615
- <button type="button" [attr.aria-label]="moveAllToSourceAriaLabel" pButton pRipple class="p-button-icon-only" [disabled]="moveAllLeftDisabled()" (click)="moveAllLeft()" [attr.data-pc-section]="'moveAllToSourceButton'">
1616
- <ng-container *ngIf="!moveAllToSourceIconTemplate">
1617
- <AngleDoubleLeftIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movealltosourceticon'" />
1618
- <AngleDoubleUpIcon *ngIf="viewChanged" [attr.data-pc-section]="'movealltosourceticon'" />
1619
- </ng-container>
1620
- <ng-template *ngTemplateOutlet="moveAllToSourceIconTemplate; context: { $implicit: viewChanged }"></ng-template>
1621
- </button>
1622
- </div>
1623
- <div class="p-picklist-list-wrapper p-picklist-target-wrapper" [attr.data-pc-section]="'targetWrapper'" [attr.data-pc-group-section]="'listwrapper'">
1624
- <div [id]="idTarget + '_header'" class="p-picklist-header" *ngIf="targetHeader || targetHeaderTemplate" [attr.data-pc-section]="'targetHead'" [attr.data-pc-group-section]="'header'">
1625
- <div class="p-picklist-title" *ngIf="!targetHeaderTemplate">{{ targetHeader }}</div>
1626
- <ng-container *ngTemplateOutlet="targetHeaderTemplate"></ng-container>
1627
- </div>
1628
- <div class="p-picklist-filter-container" *ngIf="filterBy && showTargetFilter !== false" [attr.data-pc-section]="'targetFilterContainer'">
1629
- <ng-container *ngIf="targetFilterTemplate; else builtInTargetElement">
1630
- <ng-container *ngTemplateOutlet="targetFilterTemplate; context: { options: targetFilterOptions }"></ng-container>
1631
- </ng-container>
1632
- <ng-template #builtInTargetElement>
1633
- <div class="p-picklist-filter" [attr.data-pc-section]="'targetFilter'">
1634
- <input
1635
- #targetFilter
1636
- type="text"
1637
- role="textbox"
1638
- (keyup)="onFilter($event, TARGET_LIST)"
1639
- class="p-picklist-filter-input p-inputtext p-component"
1640
- [disabled]="disabled"
1641
- [attr.placeholder]="targetFilterPlaceholder"
1642
- [attr.aria-label]="ariaTargetFilterLabel"
1643
- [attr.data-pc-section]="'targetFilterInput'"
1644
- />
1645
- <SearchIcon *ngIf="!targetFilterIconTemplate" [styleClass]="'p-picklist-filter-icon'" [attr.data-pc-section]="'targetfiltericon'" />
1646
- <span class="p-picklist-filter-icon" *ngIf="targetFilterIconTemplate" [attr.data-pc-section]="'targetfiltericon'">
1647
- <ng-template *ngTemplateOutlet="targetFilterIconTemplate"></ng-template>
1648
- </span>
1649
- </div>
1650
- </ng-template>
1651
- </div>
1652
- <ul
1653
- #targetlist
1654
- class="p-picklist-list p-picklist-target"
1655
- [id]="idTarget + '_list'"
1656
- [attr.aria-labelledby]="idTarget + '_header'"
1657
- (keydown)="onItemKeyDown($event, selectedItemsTarget, onTargetSelect, TARGET_LIST)"
1658
- (focus)="onListFocus($event, TARGET_LIST)"
1659
- (blur)="onListBlur($event, TARGET_LIST)"
1660
- cdkDropList
1661
- [cdkDropListData]="target"
1662
- (cdkDropListDropped)="onDrop($event, TARGET_LIST)"
1663
- [ngStyle]="targetStyle"
1664
- role="listbox"
1665
- aria-multiselectable="true"
1666
- [attr.aria-activedescendant]="focused['targetList'] ? focusedOptionId : undefined"
1667
- [attr.tabindex]="target && target.length > 0 ? tabindex : -1"
1668
- [attr.data-pc-section]="'targetList'"
1669
- [attr.data-pc-group-section]="'list'"
1670
- >
1671
- <ng-template ngFor let-item [ngForOf]="target" [ngForTrackBy]="targetTrackBy || trackBy" let-i="index" let-l="last">
1672
- <li
1673
- pRipple
1674
- cdkDrag
1675
- [id]="idTarget + '_' + i"
1676
- [ngClass]="itemClass(item, idTarget + '_' + i, selectedItemsTarget)"
1677
- [cdkDragData]="item"
1678
- [cdkDragDisabled]="!dragdrop"
1679
- (click)="onItemClick($event, item, selectedItemsTarget, TARGET_LIST, onTargetSelect, idTarget + '_' + i)"
1680
- (mousedown)="onOptionMouseDown(i, TARGET_LIST)"
1681
- (dblclick)="onTargetItemDblClick()"
1682
- (touchend)="onItemTouchEnd()"
1683
- *ngIf="isItemVisible(item, TARGET_LIST)"
1684
- role="option"
1685
- [attr.data-pc-section]="'item'"
1686
- [attr.aria-selected]="isSelected(item, selectedItemsTarget)"
1687
- >
1688
- <ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item, index: i }"></ng-container>
1689
- </li>
1690
- </ng-template>
1691
- <ng-container *ngIf="isEmpty(TARGET_LIST) && (emptyMessageTargetTemplate || emptyFilterMessageTargetTemplate)">
1692
- <li class="p-picklist-empty-message" *ngIf="!filterValueTarget || !emptyFilterMessageTargetTemplate" [attr.data-pc-section]="'targetEmptyMessage'">
1693
- <ng-container *ngTemplateOutlet="emptyMessageTargetTemplate"></ng-container>
1694
- </li>
1695
- <li class="p-picklist-empty-message" *ngIf="filterValueTarget" [attr.data-pc-section]="'targetEmptyMessage'">
1696
- <ng-container *ngTemplateOutlet="emptyFilterMessageTargetTemplate"></ng-container>
1697
- </li>
1698
- </ng-container>
1699
- </ul>
1700
- </div>
1701
- <div class="p-picklist-buttons p-picklist-target-controls" *ngIf="showTargetControls" [attr.data-pc-section]="'targetControls'" [attr.data-pc-group-section]="'controls'">
1702
- <button
1703
- type="button"
1704
- [attr.aria-label]="moveUpAriaLabel"
1705
- pButton
1706
- pRipple
1707
- class="p-button-icon-only"
1708
- [disabled]="targetMoveDisabled()"
1709
- (click)="moveUp(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
1710
- [attr.data-pc-section]="'targetMoveUpButton'"
1711
- >
1712
- <AngleUpIcon *ngIf="!moveUpIconTemplate" [attr.data-pc-section]="'moveupicon'" />
1713
- <ng-template *ngTemplateOutlet="moveUpIconTemplate"></ng-template>
1714
- </button>
1715
- <button
1716
- type="button"
1717
- [attr.aria-label]="moveTopAriaLabel"
1718
- pButton
1719
- pRipple
1720
- class="p-button-icon-only"
1721
- [disabled]="targetMoveDisabled()"
1722
- (click)="moveTop(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
1723
- [attr.data-pc-section]="'targetMoveTopButton'"
1724
- >
1725
- <AngleDoubleUpIcon *ngIf="!moveTopIconTemplate" [attr.data-pc-section]="'movetopicon'" />
1726
- <ng-template *ngTemplateOutlet="moveTopIconTemplate"></ng-template>
1727
- </button>
1728
- <button
1729
- type="button"
1730
- [attr.aria-label]="moveDownAriaLabel"
1731
- pButton
1732
- pRipple
1733
- class="p-button-icon-only"
1734
- [disabled]="targetMoveDisabled()"
1735
- (click)="moveDown(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
1736
- [attr.data-pc-section]="'targetMoveDownButton'"
1737
- >
1738
- <AngleDownIcon *ngIf="!moveDownIconTemplate" [attr.data-pc-section]="'movedownicon'" />
1739
- <ng-template *ngTemplateOutlet="moveDownIconTemplate"></ng-template>
1740
- </button>
1741
- <button
1742
- type="button"
1743
- [attr.aria-label]="moveBottomAriaLabel"
1744
- pButton
1745
- pRipple
1746
- class="p-button-icon-only"
1747
- [disabled]="targetMoveDisabled()"
1748
- (click)="moveBottom(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
1749
- [attr.data-pc-section]="'targetMoveBottomButton'"
1750
- >
1751
- <AngleDoubleDownIcon *ngIf="!moveBottomIconTemplate" [attr.data-pc-section]="'movebottomicon'" />
1752
- <ng-template *ngTemplateOutlet="moveBottomIconTemplate"></ng-template>
1753
- </button>
1754
- </div>
1755
- </div>
1756
- `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
1757
- class: 'cax-element'
1758
- }, styles: ["@layer cax{.p-picklist{display:flex}.p-picklist-buttons{display:flex;flex-direction:column;justify-content:center}.p-picklist-list-wrapper{flex:1 1 50%}.p-picklist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-picklist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-picklist-item:not(.cdk-drag-disabled){cursor:move}.p-picklist-item.cdk-drag-placeholder{opacity:0}.p-picklist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-picklist-filter{position:relative}.p-picklist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-picklist-filter-input{width:100%}.p-picklist-list.cdk-drop-list-dragging .p-picklist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}}\n"] }]
1759
- }], ctorParameters: () => [{ type: Document, decorators: [{
1760
- type: Inject,
1761
- args: [DOCUMENT]
1762
- }] }, { type: undefined, decorators: [{
1763
- type: Inject,
1764
- args: [PLATFORM_ID]
1765
- }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.caxConfig }], propDecorators: { source: [{
1766
- type: Input
1767
- }], target: [{
1768
- type: Input
1769
- }], sourceHeader: [{
1770
- type: Input
1771
- }], tabindex: [{
1772
- type: Input,
1773
- args: [{ transform: numberAttribute }]
1774
- }], rightButtonAriaLabel: [{
1775
- type: Input
1776
- }], leftButtonAriaLabel: [{
1777
- type: Input
1778
- }], allRightButtonAriaLabel: [{
1779
- type: Input
1780
- }], allLeftButtonAriaLabel: [{
1781
- type: Input
1782
- }], upButtonAriaLabel: [{
1783
- type: Input
1784
- }], downButtonAriaLabel: [{
1785
- type: Input
1786
- }], topButtonAriaLabel: [{
1787
- type: Input
1788
- }], bottomButtonAriaLabel: [{
1789
- type: Input
1790
- }], targetHeader: [{
1791
- type: Input
1792
- }], responsive: [{
1793
- type: Input,
1794
- args: [{ transform: booleanAttribute }]
1795
- }], filterBy: [{
1796
- type: Input
1797
- }], filterLocale: [{
1798
- type: Input
1799
- }], trackBy: [{
1800
- type: Input
1801
- }], sourceTrackBy: [{
1802
- type: Input
1803
- }], targetTrackBy: [{
1804
- type: Input
1805
- }], showSourceFilter: [{
1806
- type: Input,
1807
- args: [{ transform: booleanAttribute }]
1808
- }], showTargetFilter: [{
1809
- type: Input,
1810
- args: [{ transform: booleanAttribute }]
1811
- }], metaKeySelection: [{
1812
- type: Input,
1813
- args: [{ transform: booleanAttribute }]
1814
- }], dragdrop: [{
1815
- type: Input,
1816
- args: [{ transform: booleanAttribute }]
1817
- }], style: [{
1818
- type: Input
1819
- }], styleClass: [{
1820
- type: Input
1821
- }], sourceStyle: [{
1822
- type: Input
1823
- }], targetStyle: [{
1824
- type: Input
1825
- }], showSourceControls: [{
1826
- type: Input,
1827
- args: [{ transform: booleanAttribute }]
1828
- }], showTargetControls: [{
1829
- type: Input,
1830
- args: [{ transform: booleanAttribute }]
1831
- }], sourceFilterPlaceholder: [{
1832
- type: Input
1833
- }], targetFilterPlaceholder: [{
1834
- type: Input
1835
- }], disabled: [{
1836
- type: Input,
1837
- args: [{ transform: booleanAttribute }]
1838
- }], ariaSourceFilterLabel: [{
1839
- type: Input
1840
- }], ariaTargetFilterLabel: [{
1841
- type: Input
1842
- }], filterMatchMode: [{
1843
- type: Input
1844
- }], stripedRows: [{
1845
- type: Input,
1846
- args: [{ transform: booleanAttribute }]
1847
- }], keepSelection: [{
1848
- type: Input,
1849
- args: [{ transform: booleanAttribute }]
1850
- }], breakpoint: [{
1851
- type: Input
1852
- }], onMoveToSource: [{
1853
- type: Output
1854
- }], onMoveAllToSource: [{
1855
- type: Output
1856
- }], onMoveAllToTarget: [{
1857
- type: Output
1858
- }], onMoveToTarget: [{
1859
- type: Output
1860
- }], onSourceReorder: [{
1861
- type: Output
1862
- }], onTargetReorder: [{
1863
- type: Output
1864
- }], onSourceSelect: [{
1865
- type: Output
1866
- }], onTargetSelect: [{
1867
- type: Output
1868
- }], onSourceFilter: [{
1869
- type: Output
1870
- }], onTargetFilter: [{
1871
- type: Output
1872
- }], onFocus: [{
1873
- type: Output
1874
- }], onBlur: [{
1875
- type: Output
1876
- }], listViewSourceChild: [{
1877
- type: ViewChild,
1878
- args: ['sourcelist']
1879
- }], listViewTargetChild: [{
1880
- type: ViewChild,
1881
- args: ['targetlist']
1882
- }], sourceFilterViewChild: [{
1883
- type: ViewChild,
1884
- args: ['sourceFilter']
1885
- }], targetFilterViewChild: [{
1886
- type: ViewChild,
1887
- args: ['targetFilter']
1888
- }], templates: [{
1889
- type: ContentChildren,
1890
- args: [CaxTemplate]
1891
- }] } });
1892
- const DragConfig = {
1893
- zIndex: 1200
1894
- };
1895
- export class PickListModule {
1896
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PickListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1897
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: PickListModule, declarations: [PickList], imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule, AngleDoubleDownIcon, AngleDoubleLeftIcon, AngleDoubleRightIcon, AngleDoubleUpIcon, AngleDownIcon, AngleLeftIcon, AngleRightIcon, AngleUpIcon, SearchIcon, HomeIcon], exports: [PickList, SharedModule, DragDropModule] });
1898
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PickListModule, providers: [{ provide: CDK_DRAG_CONFIG, useValue: DragConfig }], imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule, AngleDoubleDownIcon, AngleDoubleLeftIcon, AngleDoubleRightIcon, AngleDoubleUpIcon, AngleDownIcon, AngleLeftIcon, AngleRightIcon, AngleUpIcon, SearchIcon, HomeIcon, SharedModule, DragDropModule] });
1899
- }
1900
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PickListModule, decorators: [{
1901
- type: NgModule,
1902
- args: [{
1903
- imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule, AngleDoubleDownIcon, AngleDoubleLeftIcon, AngleDoubleRightIcon, AngleDoubleUpIcon, AngleDownIcon, AngleLeftIcon, AngleRightIcon, AngleUpIcon, SearchIcon, HomeIcon],
1904
- exports: [PickList, SharedModule, DragDropModule],
1905
- declarations: [PickList],
1906
- providers: [{ provide: CDK_DRAG_CONFIG, useValue: DragConfig }]
1907
- }]
1908
- }] });
1909
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2xpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcGlja2xpc3QvcGlja2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBZSxjQUFjLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUgsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBR0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBSVgsU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTRCLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BF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QUFvQixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUNoTyxZQUFZLEVBQUUsY0FBYzs7MkZBSXZDLGNBQWM7a0JBTjFCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQztvQkFDclAsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxjQUFjLENBQUM7b0JBQ2pELFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFDeEIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQztpQkFDbEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDREtfRFJBR19DT05GSUcsIENka0RyYWdEcm9wLCBEcmFnRHJvcE1vZHVsZSwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgbnVtYmVyQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsdGVyU2VydmljZSwgY2F4Q29uZmlnLCBDYXhUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vYXBpJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2J1dHRvbic7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vZG9tJztcbmltcG9ydCB7IEFuZ2xlRG91YmxlRG93bkljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy9hbmdsZWRvdWJsZWRvd24nO1xuaW1wb3J0IHsgQW5nbGVEb3VibGVMZWZ0SWNvbiB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ljb25zL2FuZ2xlZG91YmxlbGVmdCc7XG5pbXBvcnQgeyBBbmdsZURvdWJsZVJpZ2h0SWNvbiB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ljb25zL2FuZ2xlZG91YmxlcmlnaHQnO1xuaW1wb3J0IHsgQW5nbGVEb3VibGVVcEljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy9hbmdsZWRvdWJsZXVwJztcbmltcG9ydCB7IEFuZ2xlRG93bkljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy9hbmdsZWRvd24nO1xuaW1wb3J0IHsgQW5nbGVMZWZ0SWNvbiB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ljb25zL2FuZ2xlbGVmdCc7XG5pbXBvcnQgeyBBbmdsZVJpZ2h0SWNvbiB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ljb25zL2FuZ2xlcmlnaHQnO1xuaW1wb3J0IHsgQW5nbGVVcEljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy9hbmdsZXVwJztcbmltcG9ydCB7IEhvbWVJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvaG9tZSc7XG5pbXBvcnQgeyBTZWFyY2hJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvc2VhcmNoJztcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3JpcHBsZSc7XG5pbXBvcnQgeyBOdWxsYWJsZSwgVm9pZExpc3RlbmVyIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vdHMtaGVscGVycyc7XG5pbXBvcnQgeyBPYmplY3RVdGlscywgVW5pcXVlQ29tcG9uZW50SWQgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS91dGlscyc7XG5pbXBvcnQge1xuICAgIFBpY2tMaXN0RmlsdGVyT3B0aW9ucyxcbiAgICBQaWNrTGlzdE1vdmVBbGxUb1NvdXJjZUV2ZW50LFxuICAgIFBpY2tMaXN0TW92ZUFsbFRvVGFyZ2V0RXZlbnQsXG4gICAgUGlja0xpc3RNb3ZlVG9Tb3VyY2VFdmVudCxcbiAgICBQaWNrTGlzdE1vdmVUb1RhcmdldEV2ZW50LFxuICAgIFBpY2tMaXN0U291cmNlRmlsdGVyRXZlbnQsXG4gICAgUGlja0xpc3RTb3VyY2VSZW9yZGVyRXZlbnQsXG4gICAgUGlja0xpc3RTb3VyY2VTZWxlY3RFdmVudCxcbiAgICBQaWNrTGlzdFRhcmdldEZpbHRlckV2ZW50LFxuICAgIFBpY2tMaXN0VGFyZ2V0UmVvcmRlckV2ZW50LFxuICAgIFBpY2tMaXN0VGFyZ2V0U2VsZWN0RXZlbnRcbn0gZnJvbSAnLi9waWNrbGlzdC5pbnRlcmZhY2UnO1xuLyoqXG4gKiBQaWNrTGlzdCBpcyB1c2VkIHRvIHJlb3JkZXIgaXRlbXMgYmV0d2VlbiBkaWZmZXJlbnQgbGlzdHMuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtcGlja0xpc3QnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtuZ0NsYXNzXT1cInsgJ3AtcGlja2xpc3QgcC1jb21wb25lbnQnOiB0cnVlLCAncC1waWNrbGlzdC1zdHJpcGVkJzogc3RyaXBlZFJvd3MgfVwiIGNka0Ryb3BMaXN0R3JvdXAgW2F0dHIuZGF0YS1wYy1uYW1lXT1cIidwaWNrbGlzdCdcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3Jvb3QnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1waWNrbGlzdC1idXR0b25zIHAtcGlja2xpc3Qtc291cmNlLWNvbnRyb2xzXCIgKm5nSWY9XCJzaG93U291cmNlQ29udHJvbHNcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZUNvbnRyb2xzJ1wiIFthdHRyLmRhdGEtcGMtZ3JvdXAtc2VjdGlvbl09XCInY29udHJvbHMnXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVXBBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic291cmNlTW92ZURpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZVVwKHNvdXJjZWxpc3QsIHNvdXJjZSwgc2VsZWN0ZWRJdGVtc1NvdXJjZSwgb25Tb3VyY2VSZW9yZGVyLCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZU1vdmVVcEJ1dHRvbidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFuZ2xlVXBJY29uICpuZ0lmPVwiIW1vdmVVcEljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXVwaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlVXBJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZVRvcEFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzb3VyY2VNb3ZlRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlVG9wKHNvdXJjZWxpc3QsIHNvdXJjZSwgc2VsZWN0ZWRJdGVtc1NvdXJjZSwgb25Tb3VyY2VSZW9yZGVyLCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZU1vdmVUb3BCdXR0b24nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBbmdsZURvdWJsZVVwSWNvbiAqbmdJZj1cIiFtb3ZlVG9wSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZldG9waWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlVG9wSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVEb3duQXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNvdXJjZU1vdmVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVEb3duKHNvdXJjZWxpc3QsIHNvdXJjZSwgc2VsZWN0ZWRJdGVtc1NvdXJjZSwgb25Tb3VyY2VSZW9yZGVyLCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZU1vdmVEb3duQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3duSWNvbiAqbmdJZj1cIiFtb3ZlRG93bkljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWRvd25pY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1vdmVEb3duSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVCb3R0b21BcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic291cmNlTW92ZURpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUJvdHRvbShzb3VyY2VsaXN0LCBzb3VyY2UsIHNlbGVjdGVkSXRlbXNTb3VyY2UsIG9uU291cmNlUmVvcmRlciwgU09VUkNFX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzb3VyY2VNb3ZlQm90dG9tQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3VibGVEb3duSWNvbiAqbmdJZj1cIiFtb3ZlQm90dG9tSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlYm90dG9taWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlQm90dG9tSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtbGlzdC13cmFwcGVyIHAtcGlja2xpc3Qtc291cmNlLXdyYXBwZXJcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZVdyYXBwZXInXCIgW2F0dHIuZGF0YS1wYy1ncm91cC1zZWN0aW9uXT1cIidsaXN0V3JhcHBlcidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJpZFNvdXJjZSArICdfaGVhZGVyJ1wiIGNsYXNzPVwicC1waWNrbGlzdC1oZWFkZXJcIiAqbmdJZj1cInNvdXJjZUhlYWRlciB8fCBzb3VyY2VIZWFkZXJUZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc291cmNlSGVhZGVyJ1wiIFthdHRyLmRhdGEtcGMtZ3JvdXAtc2VjdGlvbl09XCInaGVhZGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1waWNrbGlzdC10aXRsZVwiICpuZ0lmPVwiIXNvdXJjZUhlYWRlclRlbXBsYXRlXCI+e3sgc291cmNlSGVhZGVyIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb3VyY2VIZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWZpbHRlci1jb250YWluZXJcIiAqbmdJZj1cImZpbHRlckJ5ICYmIHNob3dTb3VyY2VGaWx0ZXIgIT09IGZhbHNlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzb3VyY2VGaWx0ZXJDb250YWluZXInXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzb3VyY2VGaWx0ZXJUZW1wbGF0ZTsgZWxzZSBidWlsdEluU291cmNlRWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvdXJjZUZpbHRlclRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbnM6IHNvdXJjZUZpbHRlck9wdGlvbnMgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNidWlsdEluU291cmNlRWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWZpbHRlclwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc291cmNlRmlsdGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjc291cmNlRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInRleHRib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25GaWx0ZXIoJGV2ZW50LCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtcGlja2xpc3QtZmlsdGVyLWlucHV0IHAtaW5wdXR0ZXh0IHAtY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwic291cmNlRmlsdGVyUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFTb3VyY2VGaWx0ZXJMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc291cmNlRmlsdGVySW5wdXQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uICpuZ0lmPVwiIXNvdXJjZUZpbHRlckljb25UZW1wbGF0ZVwiIFtzdHlsZUNsYXNzXT1cIidwLXBpY2tsaXN0LWZpbHRlci1pY29uJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc291cmNlZmlsdGVySWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1waWNrbGlzdC1maWx0ZXItaWNvblwiICpuZ0lmPVwic291cmNlRmlsdGVySWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzb3VyY2VmaWx0ZXJJY29uJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb3VyY2VGaWx0ZXJJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgICAgICNzb3VyY2VsaXN0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1waWNrbGlzdC1saXN0IHAtcGlja2xpc3Qtc291cmNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkU291cmNlICsgJ19saXN0J1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZFNvdXJjZSArICdfaGVhZGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSXRlbUtleURvd24oJGV2ZW50LCBzZWxlY3RlZEl0ZW1zU291cmNlLCBvblNvdXJjZVNlbGVjdCwgU09VUkNFX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uTGlzdEZvY3VzKCRldmVudCwgU09VUkNFX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25MaXN0Qmx1cigkZXZlbnQsIFNPVVJDRV9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwic291cmNlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50LCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJzb3VyY2VTdHlsZVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImZvY3VzZWRbJ3NvdXJjZUxpc3QnXSA/IGZvY3VzZWRPcHRpb25JZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInNvdXJjZSAmJiBzb3VyY2UubGVuZ3RoID4gMCA/IHRhYmluZGV4IDogLTFcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZUxpc3QnXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1ncm91cC1zZWN0aW9uXT1cIidsaXN0J1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWl0ZW0gW25nRm9yT2ZdPVwic291cmNlXCIgW25nRm9yVHJhY2tCeV09XCJzb3VyY2VUcmFja0J5IHx8IHRyYWNrQnlcIiBsZXQtaT1cImluZGV4XCIgbGV0LWw9XCJsYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZFNvdXJjZSArICdfJyArIGlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW1DbGFzcyhpdGVtLCBpZFNvdXJjZSArICdfJyArIGksIHNlbGVjdGVkSXRlbXNTb3VyY2UpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhZHJhZ2Ryb3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIGl0ZW0sIHNlbGVjdGVkSXRlbXNTb3VyY2UsIFNPVVJDRV9MSVNULCBvblNvdXJjZVNlbGVjdCwgaWRTb3VyY2UgKyAnXycgKyBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbk9wdGlvbk1vdXNlRG93bihpLCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvblNvdXJjZUl0ZW1EYmxDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG91Y2hlbmQpPVwib25JdGVtVG91Y2hFbmQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0l0ZW1WaXNpYmxlKGl0ZW0sIFNPVVJDRV9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpdGVtJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGl0ZW0sIHNlbGVjdGVkSXRlbXNTb3VyY2UpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRW1wdHkoU09VUkNFX0xJU1QpICYmIChlbXB0eU1lc3NhZ2VTb3VyY2VUZW1wbGF0ZSB8fCBlbXB0eUZpbHRlck1lc3NhZ2VTb3VyY2VUZW1wbGF0ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtcGlja2xpc3QtZW1wdHktbWVzc2FnZVwiICpuZ0lmPVwiIWZpbHRlclZhbHVlU291cmNlIHx8ICFlbXB0eUZpbHRlck1lc3NhZ2VTb3VyY2VUZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc291cmNlRW1wdHlNZXNzYWdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eU1lc3NhZ2VTb3VyY2VUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtcGlja2xpc3QtZW1wdHktbWVzc2FnZVwiICpuZ0lmPVwiZmlsdGVyVmFsdWVTb3VyY2VcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZUVtcHR5TWVzc2FnZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlGaWx0ZXJNZXNzYWdlU291cmNlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWJ1dHRvbnMgcC1waWNrbGlzdC10cmFuc2Zlci1idXR0b25zXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIididXR0b25zJ1wiIFthdHRyLmRhdGEtcGMtZ3JvdXAtc2VjdGlvbl09XCInY29udHJvbHMnXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVG9UYXJnZXRBcmlhTGFiZWxcIiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIiBbZGlzYWJsZWRdPVwibW92ZVJpZ2h0RGlzYWJsZWQoKVwiIChjbGljayk9XCJtb3ZlUmlnaHQoKVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZVRvVGFyZ2V0QnV0dG9uJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vdmVUb1RhcmdldEljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlUmlnaHRJY29uICpuZ0lmPVwiIXZpZXdDaGFuZ2VkXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZldG90YXJnZXRpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3duSWNvbiAqbmdJZj1cInZpZXdDaGFuZ2VkXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZldG90YXJnZXRpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlVG9UYXJnZXRJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2aWV3Q2hhbmdlZCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVBbGxUb1RhcmdldEFyaWFMYWJlbFwiIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiIFtkaXNhYmxlZF09XCJtb3ZlQWxsUmlnaHREaXNhYmxlZCgpXCIgKGNsaWNrKT1cIm1vdmVBbGxSaWdodCgpXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlQWxsVG9UYXJnZXRCdXR0b24nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW92ZUFsbFRvVGFyZ2V0SWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3VibGVSaWdodEljb24gKm5nSWY9XCIhdmlld0NoYW5nZWRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmVhbGx0b3RhcmdldGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZURvdWJsZURvd25JY29uICpuZ0lmPVwidmlld0NoYW5nZWRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmVhbGx0b3RhcmdldGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1vdmVBbGxUb1RhcmdldEljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZpZXdDaGFuZ2VkIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZVRvU291cmNlQXJpYUxhYmVsXCIgcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCIgW2Rpc2FibGVkXT1cIm1vdmVMZWZ0RGlzYWJsZWQoKVwiIChjbGljayk9XCJtb3ZlTGVmdCgpXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlVG9Tb3VyY2VCdXR0b24nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW92ZVRvU291cmNlSWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVMZWZ0SWNvbiAqbmdJZj1cIiF2aWV3Q2hhbmdlZFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWRvd25zb3VyY2V0aWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlVXBJY29uICpuZ0lmPVwidmlld0NoYW5nZWRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmVkb3duc291cmNldGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1vdmVUb1NvdXJjZUljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZpZXdDaGFuZ2VkIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZUFsbFRvU291cmNlQXJpYUxhYmVsXCIgcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCIgW2Rpc2FibGVkXT1cIm1vdmVBbGxMZWZ0RGlzYWJsZWQoKVwiIChjbGljayk9XCJtb3ZlQWxsTGVmdCgpXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlQWxsVG9Tb3VyY2VCdXR0b24nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW92ZUFsbFRvU291cmNlSWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3VibGVMZWZ0SWNvbiAqbmdJZj1cIiF2aWV3Q2hhbmdlZFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWFsbHRvc291cmNldGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZURvdWJsZVVwSWNvbiAqbmdJZj1cInZpZXdDaGFuZ2VkXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlYWxsdG9zb3VyY2V0aWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZUFsbFRvU291cmNlSWNvblRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdmlld0NoYW5nZWQgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWxpc3Qtd3JhcHBlciBwLXBpY2tsaXN0LXRhcmdldC13cmFwcGVyXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIid0YXJnZXRXcmFwcGVyJ1wiIFthdHRyLmRhdGEtcGMtZ3JvdXAtc2VjdGlvbl09XCInbGlzdHdyYXBwZXInXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiaWRUYXJnZXQgKyAnX2hlYWRlcidcIiBjbGFzcz1cInAtcGlja2xpc3QtaGVhZGVyXCIgKm5nSWY9XCJ0YXJnZXRIZWFkZXIgfHwgdGFyZ2V0SGVhZGVyVGVtcGxhdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldEhlYWQnXCIgW2F0dHIuZGF0YS1wYy1ncm91cC1zZWN0aW9uXT1cIidoZWFkZXInXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LXRpdGxlXCIgKm5nSWY9XCIhdGFyZ2V0SGVhZGVyVGVtcGxhdGVcIj57eyB0YXJnZXRIZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhcmdldEhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtZmlsdGVyLWNvbnRhaW5lclwiICpuZ0lmPVwiZmlsdGVyQnkgJiYgc2hvd1RhcmdldEZpbHRlciAhPT0gZmFsc2VcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldEZpbHRlckNvbnRhaW5lcidcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhcmdldEZpbHRlclRlbXBsYXRlOyBlbHNlIGJ1aWx0SW5UYXJnZXRFbGVtZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFyZ2V0RmlsdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgb3B0aW9uczogdGFyZ2V0RmlsdGVyT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2J1aWx0SW5UYXJnZXRFbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtZmlsdGVyXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIid0YXJnZXRGaWx0ZXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0YXJnZXRGaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwidGV4dGJveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJvbkZpbHRlcigkZXZlbnQsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1waWNrbGlzdC1maWx0ZXItaW5wdXQgcC1pbnB1dHRleHQgcC1jb21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJ0YXJnZXRGaWx0ZXJQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYVRhcmdldEZpbHRlckxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIid0YXJnZXRGaWx0ZXJJbnB1dCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlYXJjaEljb24gKm5nSWY9XCIhdGFyZ2V0RmlsdGVySWNvblRlbXBsYXRlXCIgW3N0eWxlQ2xhc3NdPVwiJ3AtcGlja2xpc3QtZmlsdGVyLWljb24nXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIid0YXJnZXRmaWx0ZXJpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXBpY2tsaXN0LWZpbHRlci1pY29uXCIgKm5nSWY9XCJ0YXJnZXRGaWx0ZXJJY29uVGVtcGxhdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldGZpbHRlcmljb24nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInRhcmdldEZpbHRlckljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgICAgICN0YXJnZXRsaXN0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1waWNrbGlzdC1saXN0IHAtcGlja2xpc3QtdGFyZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkVGFyZ2V0ICsgJ19saXN0J1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZFRhcmdldCArICdfaGVhZGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSXRlbUtleURvd24oJGV2ZW50LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFNlbGVjdCwgVEFSR0VUX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uTGlzdEZvY3VzKCRldmVudCwgVEFSR0VUX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25MaXN0Qmx1cigkZXZlbnQsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwidGFyZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50LCBUQVJHRVRfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ0YXJnZXRTdHlsZVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImZvY3VzZWRbJ3RhcmdldExpc3QnXSA/IGZvY3VzZWRPcHRpb25JZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhcmdldCAmJiB0YXJnZXQubGVuZ3RoID4gMCA/IHRhYmluZGV4IDogLTFcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldExpc3QnXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1ncm91cC1zZWN0aW9uXT1cIidsaXN0J1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWl0ZW0gW25nRm9yT2ZdPVwidGFyZ2V0XCIgW25nRm9yVHJhY2tCeV09XCJ0YXJnZXRUcmFja0J5IHx8IHRyYWNrQnlcIiBsZXQtaT1cImluZGV4XCIgbGV0LWw9XCJsYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZFRhcmdldCArICdfJyArIGlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW1DbGFzcyhpdGVtLCBpZFRhcmdldCArICdfJyArIGksIHNlbGVjdGVkSXRlbXNUYXJnZXQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhZHJhZ2Ryb3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIGl0ZW0sIHNlbGVjdGVkSXRlbXNUYXJnZXQsIFRBUkdFVF9MSVNULCBvblRhcmdldFNlbGVjdCwgaWRUYXJnZXQgKyAnXycgKyBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbk9wdGlvbk1vdXNlRG93bihpLCBUQVJHRVRfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvblRhcmdldEl0ZW1EYmxDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG91Y2hlbmQpPVwib25JdGVtVG91Y2hFbmQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0l0ZW1WaXNpYmxlKGl0ZW0sIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpdGVtJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGl0ZW0sIHNlbGVjdGVkSXRlbXNUYXJnZXQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRW1wdHkoVEFSR0VUX0xJU1QpICYmIChlbXB0eU1lc3NhZ2VUYXJnZXRUZW1wbGF0ZSB8fCBlbXB0eUZpbHRlck1lc3NhZ2VUYXJnZXRUZW1wbGF0ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtcGlja2xpc3QtZW1wdHktbWVzc2FnZVwiICpuZ0lmPVwiIWZpbHRlclZhbHVlVGFyZ2V0IHx8ICFlbXB0eUZpbHRlck1lc3NhZ2VUYXJnZXRUZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0RW1wdHlNZXNzYWdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eU1lc3NhZ2VUYXJnZXRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtcGlja2xpc3QtZW1wdHktbWVzc2FnZVwiICpuZ0lmPVwiZmlsdGVyVmFsdWVUYXJnZXRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldEVtcHR5TWVzc2FnZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlGaWx0ZXJNZXNzYWdlVGFyZ2V0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWJ1dHRvbnMgcC1waWNrbGlzdC10YXJnZXQtY29udHJvbHNcIiAqbmdJZj1cInNob3dUYXJnZXRDb250cm9sc1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0Q29udHJvbHMnXCIgW2F0dHIuZGF0YS1wYy1ncm91cC1zZWN0aW9uXT1cIidjb250cm9scydcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVVcEFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YXJnZXRNb3ZlRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlVXAodGFyZ2V0bGlzdCwgdGFyZ2V0LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFJlb3JkZXIsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0TW92ZVVwQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVVcEljb24gKm5nSWY9XCIhbW92ZVVwSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZldXBpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1vdmVVcEljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVG9wQXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRhcmdldE1vdmVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVUb3AodGFyZ2V0bGlzdCwgdGFyZ2V0LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFJlb3JkZXIsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0TW92ZVRvcEJ1dHRvbidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG91YmxlVXBJY29uICpuZ0lmPVwiIW1vdmVUb3BJY29uVGVtcGxhdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmV0b3BpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1vdmVUb3BJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZURvd25BcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidGFyZ2V0TW92ZURpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZURvd24odGFyZ2V0bGlzdCwgdGFyZ2V0LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFJlb3JkZXIsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0TW92ZURvd25CdXR0b24nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBbmdsZURvd25JY29uICpuZ0lmPVwiIW1vdmVEb3duSWNvblRlbXBsYXRlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlZG93bmljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZURvd25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZUJvdHRvbUFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YXJnZXRNb3ZlRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQm90dG9tKHRhcmdldGxpc3QsIHRhcmdldCwgc2VsZWN0ZWRJdGVtc1RhcmdldCwgb25UYXJnZXRSZW9yZGVyLCBUQVJHRVRfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldE1vdmVCb3R0b21CdXR0b24nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBbmdsZURvdWJsZURvd25JY29uICpuZ0lmPVwiIW1vdmVCb3R0b21JY29uVGVtcGxhdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmVib3R0b21pY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1vdmVCb3R0b21JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9waWNrbGlzdC5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnY2F4LWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBQaWNrTGlzdCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG9iamVjdHMgZm9yIHRoZSBzb3VyY2UgbGlzdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzb3VyY2U6IGFueVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG9iamVjdHMgZm9yIHRoZSB0YXJnZXQgbGlzdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXQ6IGFueVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRleHQgZm9yIHRoZSBzb3VyY2UgbGlzdCBjYXB0aW9uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc291cmNlSGVhZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0YWJpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gMDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBtb3ZlIHRvIHJpZ2h0IGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSByaWdodEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gbGVmdCBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGVmdEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gYWxsIHJpZ2h0IGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhbGxSaWdodEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gYWxsIGxlZnQgYnV0dG9uIGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFsbExlZnRCdXR0b25BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBtb3ZlIHRvIHVwIGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB1cEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gZG93biBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZG93bkJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gdG9wIGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0b3BCdXR0b25BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBtb3ZlIHRvIGJvdHRvbSBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYm90dG9tQnV0dG9uQXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCBmb3IgdGhlIHRhcmdldCBsaXN0IGNhcHRpb25cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXRIZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIGVuYWJsZWQgb3JkZXJsaXN0IGFkanVzdHMgaXRzIGNvbnRyb2xzIGJhc2VkIG9uIHNjcmVlbiBzaXplLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXNwb25zaXZlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gc3BlY2lmaWVkIGRpc3BsYXlzIGFuIGlucHV0IGZpZWxkIHRvIGZpbHRlciB0aGUgaXRlbXMgb24ga2V5dXAgYW5kIGRlY2lkZXMgd2hpY2ggZmllbGQgdG8gc2VhcmNoIChBY2NlcHRzIG11bHRpcGxlIGZpZWxkcyB3aXRoIGEgY29tbWEpLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTG9jYWxlIHRvIHVzZSBpbiBmaWx0ZXJpbmcuIFRoZSBkZWZhdWx0IGxvY2FsZSBpcyB0aGUgaG9zdCBlbnZpcm9ubWVudCdzIGN1cnJlbnQgbG9jYWxlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckxvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIG9wdGltaXplIHRoZSBkb20gb3BlcmF0aW9ucyBieSBkZWxlZ2F0aW5nIHRvIG5nRm9yVHJhY2tCeSwgZGVmYXVsdCBhbGdvcml0aG0gY2hlY2tzIGZvciBvYmplY3QgaWRlbnRpdHkuIFVzZSBzb3VyY2VUcmFja0J5IG9yIHRhcmdldFRyYWNrQnkgaW4gY2FzZSBkaWZmZXJlbnQgYWxnb3JpdGhtcyBhcmUgbmVlZGVkIHBlciBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRyYWNrQnk6IEZ1bmN0aW9uID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbTtcbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBvcHRpbWl6ZSB0aGUgZG9tIG9wZXJhdGlvbnMgYnkgZGVsZWdhdGluZyB0byBuZ0ZvclRyYWNrQnkgaW4gc291cmNlIGxpc3QsIGRlZmF1bHQgYWxnb3JpdGhtIGNoZWNrcyBmb3Igb2JqZWN0IGlkZW50aXR5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNvdXJjZVRyYWNrQnk6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIG9wdGltaXplIHRoZSBkb20gb3BlcmF0aW9ucyBieSBkZWxlZ2F0aW5nIHRvIG5nRm9yVHJhY2tCeSBpbiB0YXJnZXQgbGlzdCwgZGVmYXVsdCBhbGdvcml0aG0gY2hlY2tzIGZvciBvYmplY3QgaWRlbnRpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdGFyZ2V0VHJhY2tCeTogRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBzaG93IGZpbHRlciBpbnB1dCBmb3Igc291cmNlIGxpc3Qgd2hlbiBmaWx0ZXJCeSBpcyBlbmFibGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U291cmNlRmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgZmlsdGVyIGlucHV0IGZvciB0YXJnZXQgbGlzdCB3aGVuIGZpbHRlckJ5IGlzIGVuYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dUYXJnZXRGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgaG93IG11bHRpcGxlIGl0ZW1zIGNhbiBiZSBzZWxlY3RlZCwgd2hlbiB0cnVlIG1ldGFLZXkgbmVlZHMgdG8gYmUgcHJlc3NlZCB0byBzZWxlY3Qgb3IgdW5zZWxlY3QgYW4gaXRlbSBhbmQgd2hlbiBzZXQgdG8gZmFsc2Ugc2VsZWN0aW9uIG9mIGVhY2ggaXRlbSBjYW4gYmUgdG9nZ2xlZCBpbmRpdmlkdWFsbHkuIE9uIHRvdWNoIGVuYWJsZWQgZGV2aWNlcywgbWV0YUtleVNlbGVjdGlvbiBpcyB0dXJuZWQgb2ZmIGF1dG9tYXRpY2FsbHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG1ldGFLZXlTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBkcmFnZHJvcCBiYXNlZCByZW9yZGVyaW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkcmFnZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgc291cmNlIGxpc3QgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzb3VyY2VTdHlsZTogYW55O1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgdGFyZ2V0IGxpc3QgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXRTdHlsZTogYW55O1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBidXR0b25zIG9mIHNvdXJjZSBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U291cmNlQ29udHJvbHM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBidXR0b25zIG9mIHRhcmdldCBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93VGFyZ2V0Q29udHJvbHM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFBsYWNlaG9sZGVyIHRleHQgb24gc291cmNlIGZpbHRlciBpbnB1dC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzb3VyY2VGaWx0ZXJQbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFBsYWNlaG9sZGVyIHRleHQgb24gdGFyZ2V0IGZpbHRlciBpbnB1dC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXRGaWx0ZXJQbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgZmlsdGVyIGlucHV0IG9mIHNvdXJjZSBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFTb3VyY2VGaWx0ZXJMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIGZpbHRlciBpbnB1dCBvZiB0YXJnZXQgbGlzdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhVGFyZ2V0RmlsdGVyTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGhvdyB0aGUgaXRlbXMgYXJlIGZpbHRlcmVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlck1hdGNoTW9kZTogJ2NvbnRhaW5zJyB8ICdzdGFydHNXaXRoJyB8ICdlbmRzV2l0aCcgfCAnZXF1YWxzJyB8ICdub3RFcXVhbHMnIHwgJ2luJyB8ICdsdCcgfCAnbHRlJyB8ICdndCcgfCAnZ3RlJyA9ICdjb250YWlucyc7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBkaXNwbGF5cyByb3dzIHdpdGggYWx0ZXJuYXRpbmcgY29sb3JzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzdHJpcGVkUm93czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBLZWVwcyBzZWxlY3Rpb24gb24gdGhlIHRyYW5zZmVyIGxpc3QuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGtlZXBTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgdGhlIHdpZHRoIG9mIHRoZSBzY3JlZW4gYXQgd2hpY2ggdGhlIGNvbXBvbmVudCBzaG91bGQgY2hhbmdlIGl0cyBiZWhhdmlvci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgYnJlYWtwb2ludCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludDtcbiAgICB9XG4gICAgc2V0IGJyZWFrcG9pbnQodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuX2JyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95TWVkaWEoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRNZWRpYSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGl0ZW1zIGFyZSBtb3ZlZCBmcm9tIHRhcmdldCB0byBzb3VyY2UuXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdE1vdmVUb1NvdXJjZUV2ZW50fSBldmVudCAtIEN1c3RvbSBtb3ZlIHRvIHNvdXJjZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Nb3ZlVG9Tb3VyY2U6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdE1vdmVUb1NvdXJjZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlVG9Tb3VyY2VFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhbGwgaXRlbXMgYXJlIG1vdmVkIGZyb20gdGFyZ2V0IHRvIHNvdXJjZS5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0TW92ZUFsbFRvU291cmNlRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIG1vdmUgYWxsIHRvIHNvdXJjZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Nb3ZlQWxsVG9Tb3VyY2U6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdE1vdmVBbGxUb1NvdXJjZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlQWxsVG9Tb3VyY2VFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhbGwgaXRlbXMgYXJlIG1vdmVkIGZyb20gc291cmNlIHRvIHRhcmdldC5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0TW92ZUFsbFRvVGFyZ2V0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIG1vdmUgYWxsIHRvIHRhcmdldCBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Nb3ZlQWxsVG9UYXJnZXQ6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdE1vdmVBbGxUb1RhcmdldEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlQWxsVG9UYXJnZXRFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBpdGVtcyBhcmUgbW92ZWQgZnJvbSBzb3VyY2UgdG8gdGFyZ2V0LlxuICAgICAqIEBwYXJhbSB7UGlja0xpc3RNb3ZlVG9UYXJnZXRFdmVudH0gZXZlbnQgLSBDdXN0b20gbW92ZSB0byB0YXJnZXQgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uTW92ZVRvVGFyZ2V0OiBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlVG9UYXJnZXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpY2tMaXN0TW92ZVRvVGFyZ2V0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHJlb3JkZXJlZCB3aXRoaW4gc291cmNlIGxpc3QuXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdFNvdXJjZVJlb3JkZXJFdmVudH0gZXZlbnQgLSBDdXN0b20gc291cmNlIHJlb3JkZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uU291cmNlUmVvcmRlcjogRXZlbnRFbWl0dGVyPFBpY2tMaXN0U291cmNlUmVvcmRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RTb3VyY2VSZW9yZGVyRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHJlb3JkZXJlZCB3aXRoaW4gdGFyZ2V0IGxpc3QuXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdFRhcmdldFJlb3JkZXJFdmVudH0gZXZlbnQgLSBDdXN0b20gdGFyZ2V0IHJlb3JkZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uVGFyZ2V0UmVvcmRlcjogRXZlbnRFbWl0dGVyPFBpY2tMaXN0VGFyZ2V0UmVvcmRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RUYXJnZXRSZW9yZGVyRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHNlbGVjdGVkIHdpdGhpbiBzb3VyY2UgbGlzdC5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0U291cmNlU2VsZWN0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHNvdXJjZSBzZWxlY3QgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uU291cmNlU2VsZWN0OiBFdmVudEVtaXR0ZXI8UGlja0xpc3RTb3VyY2VTZWxlY3RFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpY2tMaXN0U291cmNlU2VsZWN0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHNlbGVjdGVkIHdpdGhpbiB0YXJnZXQgbGlzdC5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0VGFyZ2V0U2VsZWN0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHRhcmdldCBzZWxlY3QgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uVGFyZ2V0U2VsZWN0OiBFdmVudEVtaXR0ZXI8UGlja0xpc3RUYXJnZXRTZWxlY3RFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpY2tMaXN0VGFyZ2V0U2VsZWN0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIHNvdXJjZSBsaXN0IGlzIGZpbHRlcmVkXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdFNvdXJjZUZpbHRlckV2ZW50fSBldmVudCAtIEN1c3RvbSBzb3VyY2UgZmlsdGVyIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblNvdXJjZUZpbHRlcjogRXZlbnRFbWl0dGVyPFBpY2tMaXN0U291cmNlRmlsdGVyRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQaWNrTGlzdFNvdXJjZUZpbHRlckV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSB0YXJnZXQgbGlzdCBpcyBmaWx0ZXJlZFxuICAgICAqIEBwYXJhbSB7UGlja0xpc3RUYXJnZXRGaWx0ZXJFdmVudH0gZXZlbnQgLSBDdXN0b20gdGFyZ2V0IGZpbHRlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25UYXJnZXRGaWx0ZXI6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdFRhcmdldEZpbHRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RUYXJnZXRGaWx0ZXJFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSBsaXN0IGlzIGZvY3VzZWRcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIEJyb3dzZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIGxpc3QgaXMgYmx1cnJlZFxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3NvdXJjZWxpc3QnKSBsaXN0Vmlld1NvdXJjZUNoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RhcmdldGxpc3QnKSBsaXN0Vmlld1RhcmdldENoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ3NvdXJjZUZpbHRlcicpIHNvdXJjZUZpbHRlclZpZXdDaGlsZDogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCd0YXJnZXRGaWx0ZXInKSB0YXJnZXRGaWx0ZXJWaWV3Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihDYXhUZW1wbGF0ZSkgdGVtcGxhdGVzOiBOdWxsYWJsZTxRdWVyeUxpc3Q8Q2F4VGVtcGxhdGU+PjtcblxuICAgIGdldCBtb3ZlVXBBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwQnV0dG9uQXJpYUxhYmVsID8gdGhpcy51cEJ1dHRvbkFyaWFMYWJlbCA6IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm1vdmVVcCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXQgbW92ZVRvcEFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9wQnV0dG9uQXJpYUxhYmVsID8gdGhpcy50b3BCdXR0b25BcmlhTGFiZWwgOiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS5tb3ZlVG9wIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBtb3ZlRG93bkFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG93bkJ1dHRvbkFyaWFMYWJlbCA/IHRoaXMuZG93bkJ1dHRvbkFyaWFMYWJlbCA6IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm1vdmVEb3duIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBtb3ZlQm90dG9tQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ib3R0b21CdXR0b25BcmlhTGFiZWwgPyB0aGlzLmJvdHRvbUJ1dHRvbkFyaWFMYWJlbCA6IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm1vdmVEb3duIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBtb3ZlVG9UYXJnZXRBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpZ2h0QnV0dG9uQXJpYUxhYmVsID8gdGhpcy5yaWdodEJ1dHRvbkFyaWFMYWJlbCA6IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm1vdmVUb1RhcmdldCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXQgbW92ZUFsbFRvVGFyZ2V0QXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hbGxSaWdodEJ1dHRvbkFyaWFMYWJlbCA/IHRoaXMuYWxsUmlnaHRCdXR0b25BcmlhTGFiZWwgOiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS5tb3ZlQWxsVG9UYXJnZXQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVUb1NvdXJjZUFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGVmdEJ1dHRvbkFyaWFMYWJlbCA/IHRoaXMubGVmdEJ1dHRvbkFyaWFMYWJlbCA6IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm1vdmVUb1NvdXJjZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXQgbW92ZUFsbFRvU291cmNlQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hbGxMZWZ0QnV0dG9uQXJpYUxhYmVsID8gdGhpcy5hbGxMZWZ0QnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZUFsbFRvU291cmNlIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBpZFNvdXJjZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyAnX3NvdXJjZSc7XG4gICAgfVxuXG4gICAgZ2V0IGlkVGFyZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCArICdfdGFyZ2V0JztcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZE9wdGlvbklkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXggIT09IC0xID8gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXggOiBudWxsO1xuICAgIH1cblxuICAgIF9icmVha3BvaW50OiBzdHJpbmcgPSAnOTYwcHgnO1xuXG4gICAgcHVibGljIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIG1vdmVUb3BJY29uVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgbW92ZVVwSWNvblRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIG1vdmVEb3duSWNvblRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIG1vdmVCb3R0b21JY29uVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgbW92ZVRvVGFyZ2V0SWNvblRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIG1vdmVBbGxUb1RhcmdldEljb25UZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBtb3ZlVG9Tb3VyY2VJY29uVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgbW92ZUFsbFRvU291cmNlSWNvblRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIHRhcmdldEZpbHRlckljb25UZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBzb3VyY2VGaWx0ZXJJY29uVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgcHVibGljIHZpc2libGVPcHRpb25zU291cmNlOiBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgICBwdWJsaWMgdmlzaWJsZU9wdGlvbnNUYXJnZXQ6IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAgIHNlbGVjdGVkSXRlbXNTb3VyY2U6IGFueVtdID0gW107XG5cbiAgICBzZWxlY3RlZEl0ZW1zVGFyZ2V0OiBhbnlbXSA9IFtdO1xuXG4gICAgcmVvcmRlcmVkTGlzdEVsZW1lbnQ6IGFueTtcblxuICAgIG1vdmVkVXA6IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgbW92ZWREb3duOiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIGl0ZW1Ub3VjaGVkOiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIHN0eWxlRWxlbWVudDogYW55O1xuXG4gICAgaWQ6IHN0cmluZyA9IFVuaXF1ZUNvbXBvbmVudElkKCk7XG5cbiAgICBmaWx0ZXJWYWx1ZVNvdXJjZTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIGZpbHRlclZhbHVlVGFyZ2V0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgZnJvbUxpc3RUeXBlOiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgZW1wdHlNZXNzYWdlU291cmNlVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgZW1wdHlGaWx0ZXJNZXNzYWdlU291cmNlVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgZW1wdHlNZXNzYWdlVGFyZ2V0VGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgZW1wdHlGaWx0ZXJNZXNzYWdlVGFyZ2V0VGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgc291cmNlSGVhZGVyVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgdGFyZ2V0SGVhZGVyVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgc291cmNlRmlsdGVyVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgdGFyZ2V0RmlsdGVyVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgc291cmNlRmlsdGVyT3B0aW9uczogTnVsbGFibGU8UGlja0xpc3RGaWx0ZXJPcHRpb25zPjtcblxuICAgIHRhcmdldEZpbHRlck9wdGlvbnM6IE51bGxhYmxlPFBpY2tMaXN0RmlsdGVyT3B0aW9ucz47XG5cbiAgICByZWFkb25seSBTT1VSQ0VfTElTVDogbnVtYmVyID0gLTE7XG5cbiAgICByZWFkb25seSBUQVJHRVRfTElTVDogbnVtYmVyID0gMTtcblxuICAgIHdpbmRvdzogV2luZG93O1xuXG4gICAgbWVkaWE6IE1lZGlhUXVlcnlMaXN0IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAgIHZpZXdDaGFuZ2VkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgZm9jdXNlZE9wdGlvbkluZGV4OiBhbnkgPSAtMTtcblxuICAgIGZvY3VzZWRPcHRpb246IGFueSB8IHVuZGVmaW5lZDtcblxuICAgIGZvY3VzZWQ6IGFueSA9IHtcbiAgICAgICAgc291cmNlTGlzdDogZmFsc2UsXG4gICAgICAgIHRhcmdldExpc3Q6IGZhbHNlXG4gICAgfTtcblxuICAgIG1lZGlhQ2hhbmdlTGlzdGVuZXI6IFZvaWRMaXN0ZW5lcjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcbiAgICAgICAgcHVibGljIGNvbmZpZzogY2F4Q29uZmlnXG4gICAgKSB7XG4gICAgICAgIHRoaXMud2luZG93ID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldyBhcyBXaW5kb3c7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlU3R5bGUoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdE1lZGlhKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5maWx0ZXJCeSkge1xuICAgICAgICAgICAgdGhpcy5zb3VyY2VGaWx0ZXJPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIGZpbHRlcjogKHZhbHVlKSA9PiB0aGlzLmZpbHRlclNvdXJjZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAgcmVzZXQ6ICgpID0+IHRoaXMucmVzZXRTb3VyY2VGaWx0ZXIoKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy50YXJnZXRGaWx0ZXJPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIGZpbHRlcjogKHZhbHVlKSA9PiB0aGlzLmZpbHRlclRhcmdldCh2YWx1ZSksXG4gICAgICAgICAgICAgICAgcmVzZXQ6ICgpID0+IHRoaXMucmVzZXRUYXJnZXRGaWx0ZXIoKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgKHRoaXMudGVtcGxhdGVzIGFzIFF1ZXJ5TGlzdDxDYXhUZW1wbGF0ZT4pLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3NvdXJjZUhlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlSGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3RhcmdldEhlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0SGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3NvdXJjZUZpbHRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlRmlsdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3RhcmdldEZpbHRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0RmlsdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5bWVzc2FnZXNvdXJjZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlNZXNzYWdlU291cmNlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5ZmlsdGVybWVzc2FnZXNvdXJjZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlGaWx0ZXJNZXNzYWdlU291cmNlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5bWVzc2FnZXRhcmdldCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlNZXNzYWdlVGFyZ2V0VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5ZmlsdGVybWVzc2FnZXRhcmdldCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlGaWx0ZXJNZXNzYWdlVGFyZ2V0VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmV1cGljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVVcEljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbW92ZXRvcGljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVUb3BJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmVkb3duaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZURvd25JY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmVib3R0b21pY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlQm90dG9tSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZldG90YXJnZXRpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlVG9UYXJnZXRJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmVhbGx0b3RhcmdldGljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVBbGxUb1RhcmdldEljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbW92ZXRvc291cmNlaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVRvU291cmNlSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZlYWxsdG9zb3VyY2VpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlQWxsVG9Tb3VyY2VJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3RhcmdldGZpbHRlcmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldEZpbHRlckljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnc291cmNlZmlsdGVyaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlRmlsdGVySWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vdmVkVXAgfHwgdGhpcy5tb3ZlZERvd24pIHtcbiAgICAgICAgICAgIGxldCBsaXN0SXRlbXMgPSBEb21IYW5kbGVyLmZpbmQodGhpcy5yZW9yZGVyZWRMaXN0RWxlbWVudCwgJ2xpLnAtaGlnaGxpZ2h0Jyk7XG4gICAgICAgICAgICBsZXQgbGlzdEl0ZW07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm1vdmVkVXApIGxpc3RJdGVtID0gbGlzdEl0ZW1zWzBdO1xuICAgICAgICAgICAgZWxzZSBsaXN0SXRlbSA9IGxpc3RJdGVtc1tsaXN0SXRlbXMubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIERvbUhhbmRsZXIuc2Nyb2xsSW5WaWV3KHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQsIGxpc3RJdGVtKTtcbiAgICAgICAgICAgIHRoaXMubW92ZWRVcCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tb3ZlZERvd24gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soZXZlbnQ6IEV2ZW50IHwgYW55LCBpdGVtOiBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBsaXN0VHlwZTogbnVtYmVyLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGl0ZW1JZD86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5maW5kSW5kZXhJbkxpc3QoaXRlbSwgc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIGlmIChpdGVtSWQpIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4ID0gaXRlbUlkO1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSBpbmRleCAhPSAtMTtcbiAgICAgICAgbGV0IG1ldGFTZWxlY3Rpb24gPSB0aGlzLml0ZW1Ub3VjaGVkID8gZmFsc2UgOiB0aGlzLm1ldGFLZXlTZWxlY3Rpb247XG5cbiAgICAgICAgaWYgKG1ldGFTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGxldCBtZXRhS2V5ID0gKDxLZXlib2FyZEV2ZW50PmV2ZW50KS5tZXRhS2V5IHx8ICg8S2V5Ym9hcmRFdmVudD5ldmVudCkuY3RybEtleSB8fCAoPEtleWJvYXJkRXZlbnQ+ZXZlbnQpLnNoaWZ0S2V5O1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgbWV0YUtleSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZEl0ZW1zLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTsgLy8gQ3JlYXRpbmcgYSBuZXcgYXJyYXkgd2l0aG91dCB0aGUgc2VsZWN0ZWQgaXRlbVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgY2FsbGJhY2suZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcblxuICAgICAgICB0aGlzLml0ZW1Ub3VjaGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25PcHRpb25Nb3VzZURvd24oaW5kZXgsIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkW2xpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUID8gJ3NvdXJjZUxpc3QnIDogJ3RhcmdldExpc3QnXSA9IHRydWU7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4ID0gaW5kZXg7XG4gICAgfVxuXG4gICAgb25Tb3VyY2VJdGVtRGJsQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1vdmVSaWdodCgpO1xuICAgIH1cblxuICAgIG9uVGFyZ2V0SXRlbURibENsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tb3ZlTGVmdCgpO1xuICAgIH1cblxuICAgIG9uRmlsdGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCBxdWVyeSA9ICg8SFRNTElucHV0RWxlbWVudD5ldmVudC50YXJnZXQpLnZhbHVlO1xuICAgICAgICBpZiAobGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHRoaXMuZmlsdGVyU291cmNlKHF1ZXJ5KTtcbiAgICAgICAgZWxzZSBpZiAobGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpIHRoaXMuZmlsdGVyVGFyZ2V0KHF1ZXJ5KTtcbiAgICB9XG5cbiAgICBmaWx0ZXJTb3VyY2UodmFsdWU6IGFueSA9ICcnKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgPSB2YWx1ZS50cmltKCkudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgICAgICB0aGlzLmZpbHRlcig8YW55W10+dGhpcy5zb3VyY2UsIHRoaXMuU09VUkNFX0xJU1QpO1xuICAgIH1cblxuICAgIGZpbHRlclRhcmdldCh2YWx1ZTogYW55ID0gJycpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCA9IHZhbHVlLnRyaW0oKS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnRhcmdldCwgdGhpcy5UQVJHRVRfTElTVCk7XG4gICAgfVxuXG4gICAgZmlsdGVyKGRhdGE6IGFueVtdLCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCBzZWFyY2hGaWVsZHMgPSAoPHN0cmluZz50aGlzLmZpbHRlckJ5KS5zcGxpdCgnLCcpO1xuXG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIoZGF0YSwgc2VhcmNoRmllbGRzLCB0aGlzLmZpbHRlclZhbHVlU291cmNlLCB0aGlzLmZpbHRlck1hdGNoTW9kZSwgdGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgICAgICAgICAgdGhpcy5vblNvdXJjZUZpbHRlci5lbWl0KHsgcXVlcnk6IHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UsIHZhbHVlOiB0aGlzLnZpc2libGVPcHRpb25zU291cmNlIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGxpc3RUeXBlID09PSB0aGlzLlRBUkdFVF9MSVNUKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0ID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcihkYXRhLCBzZWFyY2hGaWVsZHMsIHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQsIHRoaXMuZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLm9uVGFyZ2V0RmlsdGVyLmVtaXQoeyBxdWVyeTogdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCwgdmFsdWU6IHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0l0ZW1WaXNpYmxlKGl0ZW06IGFueSwgbGlzdFR5cGU6IG51bWJlcik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAobGlzdFR5cGUgPT0gdGhpcy5TT1VSQ0VfTElTVCkgcmV0dXJuIHRoaXMuaXNWaXNpYmxlSW5MaXN0KDxhbnlbXT50aGlzLnZpc2libGVPcHRpb25zU291cmNlLCBpdGVtLCA8c3RyaW5nPnRoaXMuZmlsdGVyVmFsdWVTb3VyY2UpO1xuICAgICAgICBlbHNlIHJldHVybiB0aGlzLmlzVmlzaWJsZUluTGlzdCg8YW55W10+dGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCwgaXRlbSwgPHN0cmluZz50aGlzLmZpbHRlclZhbHVlVGFyZ2V0KTtcbiAgICB9XG5cbiAgICBpc0VtcHR5KGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGxpc3RUeXBlID09IHRoaXMuU09VUkNFX0xJU1QpIHJldHVybiB0aGlzLmZpbHRlclZhbHVlU291cmNlID8gIXRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UgfHwgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZS5sZW5ndGggPT09IDAgOiAhdGhpcy5zb3VyY2UgfHwgdGhpcy5zb3VyY2UubGVuZ3RoID09PSAwO1xuICAgICAgICBlbHNlIHJldHVybiB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID8gIXRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgfHwgdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldC5sZW5ndGggPT09IDAgOiAhdGhpcy50YXJnZXQgfHwgdGhpcy50YXJnZXQubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIGlzVmlzaWJsZUluTGlzdChkYXRhOiBhbnlbXSwgaXRlbTogYW55LCBmaWx0ZXJWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChmaWx0ZXJWYWx1ZSAmJiBmaWx0ZXJWYWx1ZS50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSA9PSBkYXRhW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtVG91Y2hFbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLml0ZW1Ub3VjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRCeUluZGV4SW5MaXN0KGl0ZW1zOiBhbnlbXSwgbGlzdDogYW55KSB7XG4gICAgICAgIHJldHVybiBpdGVtcy5zb3J0KChpdGVtMSwgaXRlbTIpID0+IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChpdGVtMSwgbGlzdCkgLSBPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3QoaXRlbTIsIGxpc3QpKTtcbiAgICB9XG5cbiAgICBtb3ZlVXAobGlzdEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBsaXN0OiBhbnlbXSwgc2VsZWN0ZWRJdGVtczogYW55W10sIGNhbGxiYWNrOiBFdmVudEVtaXR0ZXI8YW55PiwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc29ydEJ5SW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtcywgbGlzdCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIGxpc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vdmVkSXRlbSA9IGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgbGlzdFtzZWxlY3RlZEl0ZW1JbmRleCAtIDFdID0gbW92ZWRJdGVtO1xuICAgICAgICAgICAgICAgICAgICBsaXN0W3NlbGVjdGVkSXRlbUluZGV4XSA9IHRlbXA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZHJvcCAmJiAoKHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgJiYgbGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHx8ICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ICYmIGxpc3RUeXBlID09PSB0aGlzLlRBUkdFVF9MSVNUKSkpIHRoaXMuZmlsdGVyKGxpc3QsIGxpc3RUeXBlKTtcblxuICAgICAgICAgICAgdGhpcy5tb3ZlZFVwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQgPSBsaXN0RWxlbWVudDtcbiAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoeyBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVUb3AobGlzdEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBsaXN0OiBhbnlbXSwgc2VsZWN0ZWRJdGVtczogYW55W10sIGNhbGxiYWNrOiBFdmVudEVtaXR0ZXI8YW55PiwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc29ydEJ5SW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtcywgbGlzdCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIGxpc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vdmVkSXRlbSA9IGxpc3Quc3BsaWNlKHNlbGVjdGVkSXRlbUluZGV4LCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgbGlzdC51bnNoaWZ0KG1vdmVkSXRlbSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZHJvcCAmJiAoKHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgJiYgbGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHx8ICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ICYmIGxpc3RUeXBlID09PSB0aGlzLlRBUkdFVF9MSVNUKSkpIHRoaXMuZmlsdGVyKGxpc3QsIGxpc3RUeXBlKTtcblxuICAgICAgICAgICAgbGlzdEVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoeyBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVEb3duKGxpc3RFbGVtZW50OiBIVE1MRWxlbWVudCwgbGlzdDogYW55W10sIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNvcnRCeUluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbXMsIGxpc3QpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIGxpc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9IGxpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZWRJdGVtID0gbGlzdFtzZWxlY3RlZEl0ZW1JbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gbGlzdFtzZWxlY3RlZEl0ZW1JbmRleCArIDFdO1xuICAgICAgICAgICAgICAgICAgICBsaXN0W3NlbGVjdGVkSXRlbUluZGV4ICsgMV0gPSBtb3ZlZEl0ZW07XG4gICAgICAgICAgICAgICAgICAgIGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXhdID0gdGVtcDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdkcm9wICYmICgodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSAmJiBsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkgfHwgKHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgJiYgbGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpKSkgdGhpcy5maWx0ZXIobGlzdCwgbGlzdFR5cGUpO1xuXG4gICAgICAgICAgICB0aGlzLm1vdmVkRG93biA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJlb3JkZXJlZExpc3RFbGVtZW50ID0gbGlzdEVsZW1lbnQ7XG4gICAgICAgICAgICBjYWxsYmFjay5lbWl0KHsgaXRlbXM6IHNlbGVjdGVkSXRlbXMgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlQm90dG9tKGxpc3RFbGVtZW50OiBIVE1MRWxlbWVudCwgbGlzdDogYW55W10sIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNvcnRCeUluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbXMsIGxpc3QpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIGxpc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9IGxpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZWRJdGVtID0gbGlzdC5zcGxpY2Uoc2VsZWN0ZWRJdGVtSW5kZXgsIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2gobW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdkcm9wICYmICgodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSAmJiBsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkgfHwgKHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgJiYgbGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpKSkgdGhpcy5maWx0ZXIobGlzdCwgbGlzdFR5cGUpO1xuXG4gICAgICAgICAgICBsaXN0RWxlbWVudC5zY3JvbGxUb3AgPSBsaXN0RWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgICAgICBjYWxsYmFjay5lbWl0KHsgaXRlbXM6IHNlbGVjdGVkSXRlbXMgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlUmlnaHQoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlW2ldO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCB0aGlzLnRhcmdldCkgPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQ/LnB1c2godGhpcy5zb3VyY2U/LnNwbGljZShPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCB0aGlzLnNvdXJjZSksIDEpWzBdKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZT8uaW5jbHVkZXMoc2VsZWN0ZWRJdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZS5zcGxpY2UoT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSksIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uTW92ZVRvVGFyZ2V0LmVtaXQoe1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2VcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5rZWVwU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0ID0gWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCwgLi4udGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIoPGFueVtdPnRoaXMudGFyZ2V0LCB0aGlzLlRBUkdFVF9MSVNUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVBbGxSaWdodCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc291cmNlKSB7XG4gICAgICAgICAgICBsZXQgbW92ZWRJdGVtcyA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNJdGVtVmlzaWJsZSh0aGlzLnNvdXJjZVtpXSwgdGhpcy5TT1VSQ0VfTElTVCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlbW92ZWRJdGVtID0gdGhpcy5zb3VyY2Uuc3BsaWNlKGksIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldD8ucHVzaChyZW1vdmVkSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIG1vdmVkSXRlbXMucHVzaChyZW1vdmVkSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGktLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub25Nb3ZlQWxsVG9UYXJnZXQuZW1pdCh7XG4gICAgICAgICAgICAgICAgaXRlbXM6IG1vdmVkSXRlbXNcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5rZWVwU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0ID0gWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCwgLi4udGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIoPGFueVtdPnRoaXMudGFyZ2V0LCB0aGlzLlRBUkdFVF9MSVNUKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZUxlZnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0W2ldO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCB0aGlzLnNvdXJjZSkgPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2U/LnB1c2godGhpcy50YXJnZXQ/LnNwbGljZShPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCB0aGlzLnRhcmdldCksIDEpWzBdKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldD8uaW5jbHVkZXMoc2VsZWN0ZWRJdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldC5zcGxpY2UoT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCksIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uTW92ZVRvU291cmNlLmVtaXQoe1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5rZWVwU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlID0gWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSwgLi4udGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0XTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0ID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlU291cmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIoPGFueVtdPnRoaXMuc291cmNlLCB0aGlzLlNPVVJDRV9MSVNUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVBbGxMZWZ0KCkge1xuICAgICAgICBpZiAodGhpcy50YXJnZXQpIHtcbiAgICAgICAgICAgIGxldCBtb3ZlZEl0ZW1zID0gW107XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50YXJnZXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0l0ZW1WaXNpYmxlKHRoaXMudGFyZ2V0W2ldLCB0aGlzLlRBUkdFVF9MSVNUKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVtb3ZlZEl0ZW0gPSB0aGlzLnRhcmdldC5zcGxpY2UoaSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlPy5wdXNoKHJlbW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgbW92ZWRJdGVtcy5wdXNoKHJlbW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vbk1vdmVBbGxUb1NvdXJjZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBpdGVtczogbW92ZWRJdGVtc1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmtlZXBTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UgPSBbLi4udGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlLCAuLi50aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXRdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQgPSBbXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcig8YW55W10+dGhpcy5zb3VyY2UsIHRoaXMuU09VUkNFX0xJU1QpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0ID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKGl0ZW06IGFueSwgc2VsZWN0ZWRJdGVtczogYW55W10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEluZGV4SW5MaXN0KGl0ZW0sIHNlbGVjdGVkSXRlbXMpICE9IC0xO1xuICAgIH1cblxuICAgIGl0ZW1DbGFzcyhpdGVtLCBpZCwgc2VsZWN0ZWRJdGVtcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3AtcGlja2xpc3QtaXRlbSc6IHRydWUsXG4gICAgICAgICAgICAncC1oaWdobGlnaHQnOiB0aGlzLmlzU2VsZWN0ZWQoaXRlbSwgc2VsZWN0ZWRJdGVtcyksXG4gICAgICAgICAgICAncC1mb2N1cyc6IGlkID09PSB0aGlzLmZvY3VzZWRPcHRpb25JZCxcbiAgICAgICAgICAgICdwLWRpc2FibGVkJzogdGhpcy5kaXNhYmxlZFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZpbmRJbmRleEluTGlzdChpdGVtOiBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChpdGVtLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICB9XG5cbiAgICBvbkRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPiwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBsZXQgaXNUcmFuc2ZlciA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyICE9PSBldmVudC5jb250YWluZXI7XG4gICAgICAgIGxldCBkcm9wSW5kZXhlcyA9IHRoaXMuZ2V0RHJvcEluZGV4ZXMoZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4LCBsaXN0VHlwZSwgaXNUcmFuc2ZlciwgZXZlbnQuaXRlbS5kYXRhKTtcblxuICAgICAgICBpZiAobGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHtcbiAgICAgICAgICAgIGlmIChpc1RyYW5zZmVyKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIGRyb3BJbmRleGVzLnByZXZpb3VzSW5kZXgsIGRyb3BJbmRleGVzLmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbUluZGV4ID0gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KGV2ZW50Lml0ZW0uZGF0YSwgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQuc3BsaWNlKHNlbGVjdGVkSXRlbUluZGV4LCAxKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5rZWVwU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQucHVzaChldmVudC5pdGVtLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQpIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQuc3BsaWNlKGV2ZW50LnByZXZpb3VzSW5kZXgsIDEpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vdmVUb1NvdXJjZS5lbWl0KHsgaXRlbXM6IFtldmVudC5pdGVtLmRhdGFdIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGRyb3BJbmRleGVzLnByZXZpb3VzSW5kZXgsIGRyb3BJbmRleGVzLmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNvdXJjZVJlb3JkZXIuZW1pdCh7IGl0ZW1zOiBbZXZlbnQuaXRlbS5kYXRhXSB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcig8YW55W10+dGhpcy5zb3VyY2UsIHRoaXMuU09VUkNFX0xJU1QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzVHJhbnNmZXIpIHtcbiAgICAgICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgZHJvcEluZGV4ZXMucHJldmlvdXNJbmRleCwgZHJvcEluZGV4ZXMuY3VycmVudEluZGV4KTtcblxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1JbmRleCA9IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChldmVudC5pdGVtLmRhdGEsIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlLnNwbGljZShzZWxlY3RlZEl0ZW1JbmRleCwgMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0LnB1c2goZXZlbnQuaXRlbS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGVPcHRpb25zU291cmNlKSB0aGlzLnZpc2libGVPcHRpb25zU291cmNlLnNwbGljZShldmVudC5wcmV2aW91c0luZGV4LCAxKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub25Nb3ZlVG9UYXJnZXQuZW1pdCh7IGl0ZW1zOiBbZXZlbnQuaXRlbS5kYXRhXSB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBkcm9wSW5kZXhlcy5wcmV2aW91c0luZGV4LCBkcm9wSW5kZXhlcy5jdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25UYXJnZXRSZW9yZGVyLmVtaXQoeyBpdGVtczogW2V2ZW50Lml0ZW0uZGF0YV0gfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIoPGFueVtdPnRoaXMudGFyZ2V0LCB0aGlzLlRBUkdFVF9MSVNUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGlzdEZvY3VzKGV2ZW50LCBsaXN0VHlwZSkge1xuICAgICAgICBsZXQgbGlzdEVsZW1lbnQgPSB0aGlzLmdldExpc3RFbGVtZW50KGxpc3RUeXBlKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRGaXJzdEl0ZW0gPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUobGlzdEVsZW1lbnQsICdsaS5wLXBpY2tsaXN0LWl0ZW0ucC1oaWdobGlnaHQnKSB8fCBEb21IYW5kbGVyLmZpbmRTaW5nbGUobGlzdEVsZW1lbnQsICdsaS5wLXBpY2tsaXN0LWl0ZW0nKTtcbiAgICAgICAgY29uc3QgZmluZEluZGV4ID0gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkRmlyc3RJdGVtLCBsaXN0RWxlbWVudC5jaGlsZHJlbik7XG4gICAgICAgIHRoaXMuZm9jdXNlZFtsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCA/ICdzb3VyY2VMaXN0JyA6ICd0YXJnZXRMaXN0J10gPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXggIT09IC0xID8gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXggOiBzZWxlY3RlZEZpcnN0SXRlbSA/IGZpbmRJbmRleCA6IC0xO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEluZGV4ID0gT2JqZWN0VXRpbHMuaXNOb3RFbXB0eSh0aGlzLnZpc2libGVPcHRpb25zU291cmNlKSA/IHRoaXMuZmluZEluZGV4SW5MaXN0KHRoaXMuc291cmNlW3NvdXJjZUluZGV4XSwgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSkgOiBzb3VyY2VJbmRleDtcblxuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChmaWx0ZXJlZEluZGV4LCBsaXN0VHlwZSk7XG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkxpc3RCbHVyKGV2ZW50LCBsaXN0VHlwZSkge1xuICAgICAgICB0aGlzLmZvY3VzZWRbbGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QgPyAnc291cmNlTGlzdCcgOiAndGFyZ2V0TGlzdCddID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4ID0gLTE7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGdldExpc3RFbGVtZW50KGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUID8gdGhpcy5saXN0Vmlld1NvdXJjZUNoaWxkPy5uYXRpdmVFbGVtZW50IDogdGhpcy5saXN0Vmlld1RhcmdldENoaWxkPy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldExpc3RJdGVtcyhsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCBsaXN0RWxlbWV0ID0gdGhpcy5nZXRMaXN0RWxlbWVudChsaXN0VHlwZSk7XG5cbiAgICAgICAgcmV0dXJuIERvbUhhbmRsZXIuZmluZChsaXN0RWxlbWV0LCAnbGkucC1waWNrbGlzdC1pdGVtJyk7XG4gICAgfVxuXG4gICAgZ2V0TGF0ZXN0U2VsZWN0ZWRWaXNpYmxlT3B0aW9uSW5kZXgodmlzaWJsZUxpc3Q6IGFueVtdLCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGxhdGVzdFNlbGVjdGVkSXRlbSA9IFsuLi5zZWxlY3RlZEl0ZW1zXS5yZXZlcnNlKCkuZmluZCgoaXRlbSkgPT4gdmlzaWJsZUxpc3QuaW5jbHVkZXMoaXRlbSkpO1xuICAgICAgICByZXR1cm4gbGF0ZXN0U2VsZWN0ZWRJdGVtICE9PSB1bmRlZmluZWQgPyB2aXNpYmxlTGlzdC5pbmRleE9mKGxhdGVzdFNlbGVjdGVkSXRlbSkgOiAtMTtcbiAgICB9XG5cbiAgICBnZXRWaXNpYmxlTGlzdChsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UgJiYgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZS5sZW5ndGggPiAwID8gdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSA6IHRoaXMuc291cmNlICYmIHRoaXMuc291cmNlLmxlbmd0aCA+IDAgPyB0aGlzLnNvdXJjZSA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCAmJiB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0Lmxlbmd0aCA+IDAgPyB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0IDogdGhpcy50YXJnZXQgJiYgdGhpcy50YXJnZXQubGVuZ3RoID4gMCA/IHRoaXMudGFyZ2V0IDogbnVsbDtcbiAgICB9XG5cbiAgICBzZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlOiBudW1iZXIsIHNlbGVjdGVkSXRlbXM6IGFueVtdKSB7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IHNlbGVjdGVkSXRlbXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kTmV4dE9wdGlvbkluZGV4KGluZGV4OiBudW1iZXIsIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldExpc3RJdGVtcyhsaXN0VHlwZSk7XG5cbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbkluZGV4ID0gWy4uLml0ZW1zXS5maW5kSW5kZXgoKGxpbmspID0+IGxpbmsuaWQgPT09IGluZGV4KTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZE9wdGlvbkluZGV4ID4gLTEgPyBtYXRjaGVkT3B0aW9uSW5kZXggKyAxIDogMDtcbiAgICB9XG5cbiAgICBmaW5kUHJldk9wdGlvbkluZGV4KGluZGV4OiBudW1iZXIsIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldExpc3RJdGVtcyhsaXN0VHlwZSk7XG4gICAgICAgIGNvbnN0IG1hdGNoZWRPcHRpb25JbmRleCA9IFsuLi5pdGVtc10uZmluZEluZGV4KChsaW5rKSA9PiBsaW5rLmlkID09PSBpbmRleCk7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWRPcHRpb25JbmRleCA+IC0xID8gbWF0Y2hlZE9wdGlvbkluZGV4IC0gMSA6IDA7XG4gICAgfVxuXG4gICAgb25JdGVtS2V5RG93bihldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd0Rvd25LZXkoZXZlbnQsIHNlbGVjdGVkSXRlbXMsIGNhbGxiYWNrLCBsaXN0VHlwZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd1VwS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uSG9tZUtleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRW5kS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vblNwYWNlS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdLZXlBJzpcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGlvbkxpc3QobGlzdFR5cGUsIHRoaXMuZ2V0VmlzaWJsZUxpc3QobGlzdFR5cGUpKTtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suZW1pdCh7IGl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEZvY3VzZWRPcHRpb24oaW5kZXg6IG51bWJlciwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBpZiAobGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZpc2libGVPcHRpb25zU291cmNlICYmIHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UubGVuZ3RoID8gdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZVtpbmRleF0gOiB0aGlzLnNvdXJjZSAmJiB0aGlzLnNvdXJjZS5sZW5ndGggPyB0aGlzLnNvdXJjZVtpbmRleF0gOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgJiYgdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldC5sZW5ndGggPyB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0W2luZGV4XSA6IHRoaXMudGFyZ2V0ICYmIHRoaXMudGFyZ2V0Lmxlbmd0aCA/IHRoaXMudGFyZ2V0W2luZGV4XSA6IG51bGw7XG4gICAgfVxuXG4gICAgY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGluZGV4LCBsaXN0VHlwZSkge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0TGlzdEl0ZW1zKGxpc3RUeXBlKTtcbiAgICAgICAgaWYgKGl0ZW1zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgb3JkZXIgPSBpbmRleCA+PSBpdGVtcy5sZW5ndGggPyBpdGVtcy5sZW5ndGggLSAxIDogaW5kZXggPCAwID8gMCA6IGluZGV4O1xuXG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCA9IGl0ZW1zW29yZGVyXS5nZXRBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb24gPSB0aGlzLmdldEZvY3VzZWRPcHRpb24ob3JkZXIsIGxpc3RUeXBlKTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSW5WaWV3KGl0ZW1zW29yZGVyXS5nZXRBdHRyaWJ1dGUoJ2lkJyksIGxpc3RUeXBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNjcm9sbEluVmlldyhpZCwgbGlzdFR5cGUpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmdldExpc3RFbGVtZW50KGxpc3RUeXBlKSwgYGxpW2lkPVwiJHtpZH1cIl1gKTtcblxuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyAmJiBlbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JywgaW5saW5lOiAnc3RhcnQnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd0Rvd25LZXkoZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbkluZGV4ID0gdGhpcy5maW5kTmV4dE9wdGlvbkluZGV4KHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LCBsaXN0VHlwZSk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgob3B0aW9uSW5kZXgsIGxpc3RUeXBlKTtcblxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMub25FbnRlcktleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25BcnJvd1VwS2V5KGV2ZW50OiBFdmVudCB8IGFueSwgc2VsZWN0ZWRJdGVtczogYW55W10sIGNhbGxiYWNrOiBFdmVudEVtaXR0ZXI8YW55PiwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBvcHRpb25JbmRleCA9IHRoaXMuZmluZFByZXZPcHRpb25JbmRleCh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCwgbGlzdFR5cGUpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KG9wdGlvbkluZGV4LCBsaXN0VHlwZSk7XG5cbiAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICB0aGlzLm9uRW50ZXJLZXkoZXZlbnQsIHNlbGVjdGVkSXRlbXMsIGNhbGxiYWNrLCBsaXN0VHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uRW50ZXJLZXkoZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMub25JdGVtQ2xpY2soZXZlbnQsIHRoaXMuZm9jdXNlZE9wdGlvbiwgc2VsZWN0ZWRJdGVtcywgbGlzdFR5cGUsIGNhbGxiYWNrKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvblNwYWNlS2V5KGV2ZW50OiBFdmVudCB8IGFueSwgc2VsZWN0ZWRJdGVtczogYW55W10sIGNhbGxiYWNrOiBFdmVudEVtaXR0ZXI8YW55PiwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSAmJiBzZWxlY3RlZEl0ZW1zICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IHZpc2libGVMaXN0ID0gdGhpcy5nZXRWaXNpYmxlTGlzdChsaXN0VHlwZSk7XG4gICAgICAgICAgICBsZXQgbGFzdFNlbGVjdGVkSW5kZXggPSB0aGlzLmdldExhdGVzdFNlbGVjdGVkVmlzaWJsZU9wdGlvbkluZGV4KHZpc2libGVMaXN0LCBzZWxlY3RlZEl0ZW1zKTtcblxuICAgICAgICAgICAgaWYgKGxhc3RTZWxlY3RlZEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGxldCBmb2N1c2VkSW5kZXggPSBPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3QodGhpcy5mb2N1c2VkT3B0aW9uLCB2aXNpYmxlTGlzdCk7XG5cbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gWy4uLnZpc2libGVMaXN0LnNsaWNlKE1hdGgubWluKGxhc3RTZWxlY3RlZEluZGV4LCBmb2N1c2VkSW5kZXgpLCBNYXRoLm1heChsYXN0U2VsZWN0ZWRJbmRleCwgZm9jdXNlZEluZGV4KSArIDEpXTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGlvbkxpc3QobGlzdFR5cGUsIHNlbGVjdGVkSXRlbXMpO1xuXG4gICAgICAgICAgICAgICAgY2FsbGJhY2suZW1pdCh7IGl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25FbnRlcktleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICB9XG5cbiAgICBvbkhvbWVLZXkoZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICBsZXQgdmlzaWJsZUxpc3QgPSB0aGlzLmdldFZpc2libGVMaXN0KGxpc3RUeXBlKTtcbiAgICAgICAgICAgIGxldCBmb2N1c2VkSW5kZXggPSBPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3QodGhpcy5mb2N1c2VkT3B0aW9uLCB2aXNpYmxlTGlzdCk7XG5cbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBbLi4udmlzaWJsZUxpc3Quc2xpY2UoMCwgZm9jdXNlZEluZGV4ICsgMSldO1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoeyBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KDAsIGxpc3RUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FbmRLZXkoZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCB2aXNpYmxlTGlzdCA9IHRoaXMuZ2V0VmlzaWJsZUxpc3QobGlzdFR5cGUpO1xuICAgICAgICBsZXQgbGFzdEluZGV4ID0gdmlzaWJsZUxpc3QgJiYgdmlzaWJsZUxpc3QubGVuZ3RoID4gMCA/IHZpc2libGVMaXN0Lmxlbmd0aCAtIDEgOiBudWxsO1xuICAgICAgICBpZiAobGFzdEluZGV4ID09PSBudWxsKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGxldCBmb2N1c2VkSW5kZXggPSBPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3QodGhpcy5mb2N1c2VkT3B0aW9uLCB2aXNpYmxlTGlzdCk7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gWy4uLnZpc2libGVMaXN0LnNsaWNlKGZvY3VzZWRJbmRleCwgbGFzdEluZGV4KV07XG5cbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uTGlzdChsaXN0VHlwZSwgc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgICBjYWxsYmFjay5lbWl0KHsgaXRlbXM6IHNlbGVjdGVkSXRlbXMgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChsYXN0SW5kZXgsIGxpc3RUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgZ2V0RHJvcEluZGV4ZXMoZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlciwgZHJvcHBlZExpc3Q6IG51bWJlciwgaXNUcmFuc2ZlcjogYm9vbGVhbiwgZGF0YTogYW55W10gfCBhbnkpIHtcbiAgICAgICAgbGV0IHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleDtcblxuICAgICAgICBpZiAoZHJvcHBlZExpc3QgPT09IHRoaXMuU09VUkNFX0xJU1QpIHtcbiAgICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBpc1RyYW5zZmVyID8gKHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgPyBPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3QoZGF0YSwgdGhpcy50YXJnZXQpIDogZnJvbUluZGV4KSA6IHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgPyBPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3QoZGF0YSwgdGhpcy5zb3VyY2UpIDogZnJvbUluZGV4O1xuICAgICAgICAgICAgY3VycmVudEluZGV4ID0gdGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSA/IHRoaXMuZmluZEZpbHRlcmVkQ3VycmVudEluZGV4KDxhbnlbXT50aGlzLnZpc2libGVPcHRpb25zU291cmNlLCB0b0luZGV4LCB0aGlzLnNvdXJjZSkgOiB0b0luZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJldmlvdXNJbmRleCA9IGlzVHJhbnNmZXIgPyAodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSA/IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChkYXRhLCB0aGlzLnNvdXJjZSkgOiBmcm9tSW5kZXgpIDogdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCA/IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChkYXRhLCB0aGlzLnRhcmdldCkgOiBmcm9tSW5kZXg7XG4gICAgICAgICAgICBjdXJyZW50SW5kZXggPSB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID8gdGhpcy5maW5kRmlsdGVyZWRDdXJyZW50SW5kZXgoPGFueVtdPnRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQsIHRvSW5kZXgsIHRoaXMudGFyZ2V0KSA6IHRvSW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBwcmV2aW91c0luZGV4LCBjdXJyZW50SW5kZXggfTtcbiAgICB9XG5cbiAgICBmaW5kRmlsdGVyZWRDdXJyZW50SW5kZXgodmlzaWJsZU9wdGlvbnM6IGFueVtdLCBpbmRleDogbnVtYmVyLCBvcHRpb25zOiBhbnkpIHtcbiAgICAgICAgaWYgKHZpc2libGVPcHRpb25zLmxlbmd0aCA9PT0gaW5kZXgpIHtcbiAgICAgICAgICAgIGxldCB0b0luZGV4ID0gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KHZpc2libGVPcHRpb25zW2luZGV4IC0gMV0sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICByZXR1cm4gdG9JbmRleCArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KHZpc2libGVPcHRpb25zW2luZGV4XSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldFNvdXJjZUZpbHRlcigpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgPSBudWxsO1xuICAgICAgICB0aGlzLnNvdXJjZUZpbHRlclZpZXdDaGlsZCAmJiAoKDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc291cmNlRmlsdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gJycpO1xuICAgIH1cblxuICAgIHJlc2V0VGFyZ2V0RmlsdGVyKCkge1xuICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCA9IG51bGw7XG4gICAgICAgIHRoaXMudGFyZ2V0RmlsdGVyVmlld0NoaWxkICYmICgoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy50YXJnZXRGaWx0ZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJyk7XG4gICAgfVxuXG4gICAgcmVzZXRGaWx0ZXIoKSB7XG4gICAgICAgIHRoaXMucmVzZXRTb3VyY2VGaWx0ZXIoKTtcbiAgICAgICAgdGhpcy5yZXNldFRhcmdldEZpbHRlcigpO1xuICAgIH1cblxuICAgIGZpbmROZXh0SXRlbShpdGVtOiBhbnkpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgICAgICBsZXQgbmV4dEl0ZW0gPSBpdGVtLm5leHRFbGVtZW50U2libGluZztcblxuICAgICAgICBpZiAobmV4dEl0ZW0pIHJldHVybiAhRG9tSGFuZGxlci5oYXNDbGFzcyhuZXh0SXRlbSwgJ3AtcGlja2xpc3QtaXRlbScpIHx8IERvbUhhbmRsZXIuaXNIaWRkZW4obmV4dEl0ZW0pID8gdGhpcy5maW5kTmV4dEl0ZW0obmV4dEl0ZW0pIDogbmV4dEl0ZW07XG4gICAgICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZmluZFByZXZJdGVtKGl0ZW06IGFueSk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGxldCBwcmV2SXRlbSA9IGl0ZW0ucHJldmlvdXNFbGVtZW50U2libGluZztcblxuICAgICAgICBpZiAocHJldkl0ZW0pIHJldHVybiAhRG9tSGFuZGxlci5oYXNDbGFzcyhwcmV2SXRlbSwgJ3AtcGlja2xpc3QtaXRlbScpIHx8IERvbUhhbmRsZXIuaXNIaWRkZW4ocHJldkl0ZW0pID8gdGhpcy5maW5kUHJldkl0ZW0ocHJldkl0ZW0pIDogcHJldkl0ZW07XG4gICAgICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaW5pdE1lZGlhKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5tZWRpYSA9IHRoaXMud2luZG93Lm1hdGNoTWVkaWEoYChtYXgtd2lkdGg6ICR7dGhpcy5icmVha3BvaW50fSlgKTtcbiAgICAgICAgICAgIHRoaXMudmlld0NoYW5nZWQgPSB0aGlzLm1lZGlhLm1hdGNoZXM7XG4gICAgICAgICAgICB0aGlzLmJpbmRNZWRpYUNoYW5nZUxpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95TWVkaWEoKSB7XG4gICAgICAgIHRoaXMudW5iaW5kTWVkaWFDaGFuZ2VMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGJpbmRNZWRpYUNoYW5nZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5tZWRpYSAmJiAhdGhpcy5tZWRpYUNoYW5nZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm1lZGlhQ2hhbmdlTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLm1lZGlhLCAnY2hhbmdlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3Q2hhbmdlZCA9IGV2ZW50Lm1hdGNoZXM7XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kTWVkaWFDaGFuZ2VMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMubWVkaWFDaGFuZ2VMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5tZWRpYUNoYW5nZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLm1lZGlhQ2hhbmdlTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlU3R5bGUoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc3R5bGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLCB0aGlzLmlkLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5zdHlsZUVsZW1lbnQsICd0eXBlJywgJ3RleHQvY3NzJyk7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5zZXRBdHRyaWJ1dGUodGhpcy5zdHlsZUVsZW1lbnQsICdub25jZScsIHRoaXMuY29uZmlnPy5jc3AoKT8ubm9uY2UpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCB0aGlzLnN0eWxlRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgaW5uZXJIVE1MID0gYFxuICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICR7dGhpcy5icmVha3BvaW50fSkge1xuICAgICAgICAgICAgICAgICAgICAucC1waWNrbGlzdFske3RoaXMuaWR9XSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLnAtcGlja2xpc3RbJHt0aGlzLmlkfV0gLnAtcGlja2xpc3QtYnV0dG9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1jb250ZW50LXBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5wLXBpY2tsaXN0WyR7dGhpcy5pZH1dIC5wLXBpY2tsaXN0LWJ1dHRvbnMgLnAtYnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0taW5saW5lLXNwYWNpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5wLXBpY2tsaXN0WyR7dGhpcy5pZH1dIC5wLXBpY2tsaXN0LWJ1dHRvbnMgLnAtYnV0dG9uOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfWA7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuc3R5bGVFbGVtZW50LCAnaW5uZXJIVE1MJywgaW5uZXJIVE1MKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNvdXJjZU1vdmVEaXNhYmxlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGFyZ2V0TW92ZURpc2FibGVkKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlUmlnaHREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgT2JqZWN0VXRpbHMuaXNFbXB0eSh0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UpO1xuICAgIH1cblxuICAgIG1vdmVMZWZ0RGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8IE9iamVjdFV0aWxzLmlzRW1wdHkodGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0KTtcbiAgICB9XG5cbiAgICBtb3ZlQWxsUmlnaHREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgT2JqZWN0VXRpbHMuaXNFbXB0eSh0aGlzLnNvdXJjZSk7XG4gICAgfVxuXG4gICAgbW92ZUFsbExlZnREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgT2JqZWN0VXRpbHMuaXNFbXB0eSh0aGlzLnRhcmdldCk7XG4gICAgfVxuXG4gICAgZGVzdHJveVN0eWxlKCkge1xuICAgICAgICBpZiAodGhpcy5zdHlsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCB0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICBgYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTdHlsZSgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3lNZWRpYSgpO1xuICAgIH1cbn1cblxuY29uc3QgRHJhZ0NvbmZpZyA9IHtcbiAgICB6SW5kZXg6IDEyMDBcbn07XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQnV0dG9uTW9kdWxlLCBTaGFyZWRNb2R1bGUsIFJpcHBsZU1vZHVsZSwgRHJhZ0Ryb3BNb2R1bGUsIEFuZ2xlRG91YmxlRG93bkljb24sIEFuZ2xlRG91YmxlTGVmdEljb24sIEFuZ2xlRG91YmxlUmlnaHRJY29uLCBBbmdsZURvdWJsZVVwSWNvbiwgQW5nbGVEb3duSWNvbiwgQW5nbGVMZWZ0SWNvbiwgQW5nbGVSaWdodEljb24sIEFuZ2xlVXBJY29uLCBTZWFyY2hJY29uLCBIb21lSWNvbl0sXG4gICAgZXhwb3J0czogW1BpY2tMaXN0LCBTaGFyZWRNb2R1bGUsIERyYWdEcm9wTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtQaWNrTGlzdF0sXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDREtfRFJBR19DT05GSUcsIHVzZVZhbHVlOiBEcmFnQ29uZmlnIH1dXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tMaXN0TW9kdWxlIHt9XG4iXX0=