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,1289 +0,0 @@
1
- import { animate, style, transition, trigger } from '@angular/animations';
2
- import { DOCUMENT, isPlatformBrowser } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Inject, Input, Output, PLATFORM_ID, ViewChild, ViewEncapsulation, booleanAttribute, effect, forwardRef, input, numberAttribute, signal } from '@angular/core';
4
- import { CaxTemplate } from 'cax-design-system/api';
5
- import { ConnectedOverlayScrollHandler, DomHandler } from 'cax-design-system/dom';
6
- import { ObjectUtils, UniqueComponentId, ZIndexUtils } from 'cax-design-system/utils';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
- import * as i2 from "@angular/router";
10
- import * as i3 from "cax-design-system/tooltip";
11
- import * as i4 from "cax-design-system/icons/angleright";
12
- import * as i5 from "cax-design-system/api";
13
- export class TieredMenuSub {
14
- el;
15
- renderer;
16
- tieredMenu;
17
- items;
18
- itemTemplate;
19
- root = false;
20
- autoDisplay;
21
- autoZIndex = true;
22
- baseZIndex = 0;
23
- popup;
24
- menuId;
25
- ariaLabel;
26
- ariaLabelledBy;
27
- level = 0;
28
- focusedItemId;
29
- activeItemPath = input([]);
30
- tabindex = 0;
31
- itemClick = new EventEmitter();
32
- itemMouseEnter = new EventEmitter();
33
- menuFocus = new EventEmitter();
34
- menuBlur = new EventEmitter();
35
- menuKeydown = new EventEmitter();
36
- sublistViewChild;
37
- constructor(el, renderer, tieredMenu) {
38
- this.el = el;
39
- this.renderer = renderer;
40
- this.tieredMenu = tieredMenu;
41
- effect(() => {
42
- const path = this.activeItemPath();
43
- if (ObjectUtils.isNotEmpty(path)) {
44
- this.positionSubmenu();
45
- }
46
- });
47
- }
48
- positionSubmenu() {
49
- if (isPlatformBrowser(this.tieredMenu.platformId)) {
50
- const sublist = this.sublistViewChild && this.sublistViewChild.nativeElement;
51
- if (sublist) {
52
- const parentItem = sublist.parentElement.parentElement;
53
- const containerOffset = DomHandler.getOffset(parentItem);
54
- const viewport = DomHandler.getViewport();
55
- const sublistWidth = sublist.offsetParent ? sublist.offsetWidth : DomHandler.getOuterWidth(sublist);
56
- const itemOuterWidth = DomHandler.getOuterWidth(parentItem.children[0]);
57
- const sublistFlippedClass = 'cax-submenu-list-flipped';
58
- if (parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth > viewport.width - DomHandler.calculateScrollbarWidth()) {
59
- DomHandler.addClass(sublist, sublistFlippedClass);
60
- }
61
- else if (DomHandler.hasClass(sublist, sublistFlippedClass)) {
62
- DomHandler.removeClass(sublist, sublistFlippedClass);
63
- }
64
- }
65
- }
66
- }
67
- getItemProp(processedItem, name, params = null) {
68
- return processedItem && processedItem.item ? ObjectUtils.getItemValue(processedItem.item[name], params) : undefined;
69
- }
70
- getItemId(processedItem) {
71
- return processedItem.item?.id ?? `${this.menuId}_${processedItem.key}`;
72
- }
73
- getItemKey(processedItem) {
74
- return this.getItemId(processedItem);
75
- }
76
- getItemClass(processedItem) {
77
- return {
78
- ...this.getItemProp(processedItem, 'class'),
79
- 'cax-menuitem': true,
80
- 'cax-highlight': this.isItemActive(processedItem),
81
- 'cax-menuitem-active': this.isItemActive(processedItem),
82
- 'cax-focus': this.isItemFocused(processedItem),
83
- 'cax-disabled': this.isItemDisabled(processedItem)
84
- };
85
- }
86
- getItemLabel(processedItem) {
87
- return this.getItemProp(processedItem, 'label');
88
- }
89
- getSeparatorItemClass(processedItem) {
90
- return {
91
- ...this.getItemProp(processedItem, 'class'),
92
- 'cax-menuitem-separator': true
93
- };
94
- }
95
- getAriaSetSize() {
96
- return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;
97
- }
98
- getAriaPosInset(index) {
99
- return (index -
100
- this.items.slice(0, index).filter((processedItem) => {
101
- const isItemVisible = this.isItemVisible(processedItem);
102
- const isVisibleSeparator = isItemVisible && this.getItemProp(processedItem, 'separator');
103
- return !isItemVisible || isVisibleSeparator;
104
- }).length +
105
- 1);
106
- }
107
- isItemVisible(processedItem) {
108
- return this.getItemProp(processedItem, 'visible') !== false;
109
- }
110
- isItemActive(processedItem) {
111
- if (this.activeItemPath()) {
112
- return this.activeItemPath().some((path) => path.key === processedItem.key);
113
- }
114
- }
115
- isItemDisabled(processedItem) {
116
- return this.getItemProp(processedItem, 'disabled');
117
- }
118
- isItemFocused(processedItem) {
119
- return this.focusedItemId === this.getItemId(processedItem);
120
- }
121
- isItemGroup(processedItem) {
122
- return ObjectUtils.isNotEmpty(processedItem.items);
123
- }
124
- onItemMouseEnter(param) {
125
- if (this.autoDisplay) {
126
- const { event, processedItem } = param;
127
- this.itemMouseEnter.emit({ originalEvent: event, processedItem });
128
- }
129
- }
130
- onItemClick(event, processedItem) {
131
- this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });
132
- this.itemClick.emit({ originalEvent: event, processedItem, isFocus: true });
133
- }
134
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TieredMenuSub, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: forwardRef(() => TieredMenu) }], target: i0.ɵɵFactoryTarget.Component });
135
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.9", type: TieredMenuSub, selector: "cax-tieredMenuSub", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: "itemTemplate", publicName: "itemTemplate", isSignal: false, isRequired: false, transformFunction: null }, root: { classPropertyName: "root", publicName: "root", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, autoDisplay: { classPropertyName: "autoDisplay", publicName: "autoDisplay", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, autoZIndex: { classPropertyName: "autoZIndex", publicName: "autoZIndex", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, baseZIndex: { classPropertyName: "baseZIndex", publicName: "baseZIndex", isSignal: false, isRequired: false, transformFunction: numberAttribute }, popup: { classPropertyName: "popup", publicName: "popup", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, menuId: { classPropertyName: "menuId", publicName: "menuId", isSignal: false, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: false, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: false, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: false, isRequired: false, transformFunction: numberAttribute }, focusedItemId: { classPropertyName: "focusedItemId", publicName: "focusedItemId", isSignal: false, isRequired: false, transformFunction: null }, activeItemPath: { classPropertyName: "activeItemPath", publicName: "activeItemPath", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: false, isRequired: false, transformFunction: numberAttribute } }, outputs: { itemClick: "itemClick", itemMouseEnter: "itemMouseEnter", menuFocus: "menuFocus", menuBlur: "menuBlur", menuKeydown: "menuKeydown" }, host: { classAttribute: "cax-element" }, viewQueries: [{ propertyName: "sublistViewChild", first: true, predicate: ["sublist"], descendants: true, static: true }], ngImport: i0, template: `
136
- <ul
137
- #sublist
138
- role="menu"
139
- [ngClass]="{ 'cax-submenu-list': !root, 'cax-tieredmenu-root-list': root }"
140
- [id]="menuId + '_list'"
141
- [tabindex]="tabindex"
142
- [attr.aria-label]="ariaLabel"
143
- [attr.aria-labelledBy]="ariaLabelledBy"
144
- [attr.aria-activedescendant]="focusedItemId"
145
- [attr.aria-orientation]="'vertical'"
146
- [attr.data-pc-section]="'menu'"
147
- (keydown)="menuKeydown.emit($event)"
148
- (focus)="menuFocus.emit($event)"
149
- (blur)="menuBlur.emit($event)"
150
- >
151
- <ng-template ngFor let-processedItem [ngForOf]="items" let-index="index">
152
- <li
153
- *ngIf="isItemVisible(processedItem) && getItemProp(processedItem, 'separator')"
154
- [attr.id]="getItemId(processedItem)"
155
- [ngStyle]="getItemProp(processedItem, 'style')"
156
- [ngClass]="getSeparatorItemClass(processedItem)"
157
- role="separator"
158
- [attr.data-pc-section]="'separator'"
159
- ></li>
160
- <li
161
- #listItem
162
- *ngIf="isItemVisible(processedItem) && !getItemProp(processedItem, 'separator')"
163
- role="menuitem"
164
- [attr.id]="getItemId(processedItem)"
165
- [attr.data-pc-section]="'menuitem'"
166
- [attr.data-cax-highlight]="isItemActive(processedItem)"
167
- [attr.data-cax-focused]="isItemFocused(processedItem)"
168
- [attr.data-cax-disabled]="isItemDisabled(processedItem)"
169
- [attr.aria-label]="getItemLabel(processedItem)"
170
- [attr.aria-disabled]="isItemDisabled(processedItem) || undefined"
171
- [attr.aria-haspopup]="isItemGroup(processedItem) && !getItemProp(processedItem, 'to') ? 'menu' : undefined"
172
- [attr.aria-expanded]="isItemGroup(processedItem) ? isItemActive(processedItem) : undefined"
173
- [attr.aria-setsize]="getAriaSetSize()"
174
- [attr.aria-posinset]="getAriaPosInset(index)"
175
- [ngStyle]="getItemProp(processedItem, 'style')"
176
- [ngClass]="getItemClass(processedItem)"
177
- [class]="getItemProp(processedItem, 'styleClass')"
178
- [caxTooltip]="getItemProp(processedItem, 'tooltip')"
179
- [tooltipOptions]="getItemProp(processedItem, 'tooltipOptions')"
180
- >
181
- <div [attr.data-pc-section]="'content'" class="cax-menuitem-content" (click)="onItemClick($event, processedItem)" (mouseenter)="onItemMouseEnter({ $event, processedItem })">
182
- <ng-container *ngIf="!itemTemplate">
183
- <a
184
- *ngIf="!getItemProp(processedItem, 'routerLink')"
185
- [attr.href]="getItemProp(processedItem, 'url')"
186
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
187
- [attr.data-pc-section]="'action'"
188
- [target]="getItemProp(processedItem, 'target')"
189
- [ngClass]="{ 'cax-menuitem-link': true, 'cax-disabled': getItemProp(processedItem, 'disabled') }"
190
- [attr.tabindex]="-1"
191
- pRipple
192
- >
193
- <span
194
- *ngIf="getItemProp(processedItem, 'icon')"
195
- class="cax-menuitem-icon"
196
- [ngClass]="getItemProp(processedItem, 'icon')"
197
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
198
- [attr.data-pc-section]="'icon'"
199
- [attr.tabindex]="-1"
200
- >
201
- </span>
202
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="cax-menuitem-text" [attr.data-pc-section]="'label'">
203
- {{ getItemLabel(processedItem) }}
204
- </span>
205
- <ng-template #htmlLabel>
206
- <span class="cax-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
207
- </ng-template>
208
- <span class="cax-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
209
-
210
- <ng-container *ngIf="isItemGroup(processedItem)">
211
- <AngleRightIcon *ngIf="!tieredMenu.submenuIconTemplate" [styleClass]="'cax-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
212
- <ng-template *ngTemplateOutlet="tieredMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
213
- </ng-container>
214
- </a>
215
- <a
216
- *ngIf="getItemProp(processedItem, 'routerLink')"
217
- [routerLink]="getItemProp(processedItem, 'routerLink')"
218
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
219
- [attr.tabindex]="-1"
220
- [attr.data-pc-section]="'action'"
221
- [queryParams]="getItemProp(processedItem, 'queryParams')"
222
- [routerLinkActive]="'cax-menuitem-link-active'"
223
- [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
224
- [target]="getItemProp(processedItem, 'target')"
225
- [ngClass]="{ 'cax-menuitem-link': true, 'cax-disabled': getItemProp(processedItem, 'disabled') }"
226
- [fragment]="getItemProp(processedItem, 'fragment')"
227
- [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
228
- [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
229
- [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
230
- [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
231
- [state]="getItemProp(processedItem, 'state')"
232
- pRipple
233
- >
234
- <span
235
- *ngIf="getItemProp(processedItem, 'icon')"
236
- class="cax-menuitem-icon"
237
- [ngClass]="getItemProp(processedItem, 'icon')"
238
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
239
- [attr.data-pc-section]="'icon'"
240
- [attr.aria-hidden]="true"
241
- [attr.tabindex]="-1"
242
- >
243
- </span>
244
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="cax-menuitem-text" [attr.data-pc-section]="'label'">
245
- {{ getItemLabel(processedItem) }}
246
- </span>
247
- <ng-template #htmlLabel>
248
- <span class="cax-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
249
- </ng-template>
250
- <span class="cax-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
251
-
252
- <ng-container *ngIf="isItemGroup(processedItem)">
253
- <AngleRightIcon *ngIf="!tieredMenu.submenuIconTemplate" [styleClass]="'cax-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
254
- <ng-template *ngTemplateOutlet="tieredMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
255
- </ng-container>
256
- </a>
257
- </ng-container>
258
- <ng-container *ngIf="itemTemplate">
259
- <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: processedItem.item, hasSubmenu: getItemProp(processedItem, 'items') }"></ng-template>
260
- </ng-container>
261
- </div>
262
-
263
- <cax-tieredMenuSub
264
- *ngIf="isItemVisible(processedItem) && isItemGroup(processedItem)"
265
- [items]="processedItem.items"
266
- [itemTemplate]="itemTemplate"
267
- [autoDisplay]="autoDisplay"
268
- [menuId]="menuId"
269
- [activeItemPath]="activeItemPath()"
270
- [focusedItemId]="focusedItemId"
271
- [ariaLabelledBy]="getItemId(processedItem)"
272
- [level]="level + 1"
273
- (itemClick)="itemClick.emit($event)"
274
- (itemMouseEnter)="onItemMouseEnter($event)"
275
- ></cax-tieredMenuSub>
276
- </li>
277
- </ng-template>
278
- </ul>
279
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i3.Tooltip, selector: "[caxTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "caxTooltip", "tooltipDisabled", "tooltipOptions", "linkUrl", "linkText"] }, { kind: "component", type: i4.AngleRightIcon, selector: "AngleRightIcon" }, { kind: "component", type: TieredMenuSub, selector: "cax-tieredMenuSub", inputs: ["items", "itemTemplate", "root", "autoDisplay", "autoZIndex", "baseZIndex", "popup", "menuId", "ariaLabel", "ariaLabelledBy", "level", "focusedItemId", "activeItemPath", "tabindex"], outputs: ["itemClick", "itemMouseEnter", "menuFocus", "menuBlur", "menuKeydown"] }], encapsulation: i0.ViewEncapsulation.None });
280
- }
281
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TieredMenuSub, decorators: [{
282
- type: Component,
283
- args: [{
284
- selector: 'cax-tieredMenuSub',
285
- template: `
286
- <ul
287
- #sublist
288
- role="menu"
289
- [ngClass]="{ 'cax-submenu-list': !root, 'cax-tieredmenu-root-list': root }"
290
- [id]="menuId + '_list'"
291
- [tabindex]="tabindex"
292
- [attr.aria-label]="ariaLabel"
293
- [attr.aria-labelledBy]="ariaLabelledBy"
294
- [attr.aria-activedescendant]="focusedItemId"
295
- [attr.aria-orientation]="'vertical'"
296
- [attr.data-pc-section]="'menu'"
297
- (keydown)="menuKeydown.emit($event)"
298
- (focus)="menuFocus.emit($event)"
299
- (blur)="menuBlur.emit($event)"
300
- >
301
- <ng-template ngFor let-processedItem [ngForOf]="items" let-index="index">
302
- <li
303
- *ngIf="isItemVisible(processedItem) && getItemProp(processedItem, 'separator')"
304
- [attr.id]="getItemId(processedItem)"
305
- [ngStyle]="getItemProp(processedItem, 'style')"
306
- [ngClass]="getSeparatorItemClass(processedItem)"
307
- role="separator"
308
- [attr.data-pc-section]="'separator'"
309
- ></li>
310
- <li
311
- #listItem
312
- *ngIf="isItemVisible(processedItem) && !getItemProp(processedItem, 'separator')"
313
- role="menuitem"
314
- [attr.id]="getItemId(processedItem)"
315
- [attr.data-pc-section]="'menuitem'"
316
- [attr.data-cax-highlight]="isItemActive(processedItem)"
317
- [attr.data-cax-focused]="isItemFocused(processedItem)"
318
- [attr.data-cax-disabled]="isItemDisabled(processedItem)"
319
- [attr.aria-label]="getItemLabel(processedItem)"
320
- [attr.aria-disabled]="isItemDisabled(processedItem) || undefined"
321
- [attr.aria-haspopup]="isItemGroup(processedItem) && !getItemProp(processedItem, 'to') ? 'menu' : undefined"
322
- [attr.aria-expanded]="isItemGroup(processedItem) ? isItemActive(processedItem) : undefined"
323
- [attr.aria-setsize]="getAriaSetSize()"
324
- [attr.aria-posinset]="getAriaPosInset(index)"
325
- [ngStyle]="getItemProp(processedItem, 'style')"
326
- [ngClass]="getItemClass(processedItem)"
327
- [class]="getItemProp(processedItem, 'styleClass')"
328
- [caxTooltip]="getItemProp(processedItem, 'tooltip')"
329
- [tooltipOptions]="getItemProp(processedItem, 'tooltipOptions')"
330
- >
331
- <div [attr.data-pc-section]="'content'" class="cax-menuitem-content" (click)="onItemClick($event, processedItem)" (mouseenter)="onItemMouseEnter({ $event, processedItem })">
332
- <ng-container *ngIf="!itemTemplate">
333
- <a
334
- *ngIf="!getItemProp(processedItem, 'routerLink')"
335
- [attr.href]="getItemProp(processedItem, 'url')"
336
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
337
- [attr.data-pc-section]="'action'"
338
- [target]="getItemProp(processedItem, 'target')"
339
- [ngClass]="{ 'cax-menuitem-link': true, 'cax-disabled': getItemProp(processedItem, 'disabled') }"
340
- [attr.tabindex]="-1"
341
- pRipple
342
- >
343
- <span
344
- *ngIf="getItemProp(processedItem, 'icon')"
345
- class="cax-menuitem-icon"
346
- [ngClass]="getItemProp(processedItem, 'icon')"
347
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
348
- [attr.data-pc-section]="'icon'"
349
- [attr.tabindex]="-1"
350
- >
351
- </span>
352
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="cax-menuitem-text" [attr.data-pc-section]="'label'">
353
- {{ getItemLabel(processedItem) }}
354
- </span>
355
- <ng-template #htmlLabel>
356
- <span class="cax-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
357
- </ng-template>
358
- <span class="cax-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
359
-
360
- <ng-container *ngIf="isItemGroup(processedItem)">
361
- <AngleRightIcon *ngIf="!tieredMenu.submenuIconTemplate" [styleClass]="'cax-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
362
- <ng-template *ngTemplateOutlet="tieredMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
363
- </ng-container>
364
- </a>
365
- <a
366
- *ngIf="getItemProp(processedItem, 'routerLink')"
367
- [routerLink]="getItemProp(processedItem, 'routerLink')"
368
- [attr.data-automationid]="getItemProp(processedItem, 'automationId')"
369
- [attr.tabindex]="-1"
370
- [attr.data-pc-section]="'action'"
371
- [queryParams]="getItemProp(processedItem, 'queryParams')"
372
- [routerLinkActive]="'cax-menuitem-link-active'"
373
- [routerLinkActiveOptions]="getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false }"
374
- [target]="getItemProp(processedItem, 'target')"
375
- [ngClass]="{ 'cax-menuitem-link': true, 'cax-disabled': getItemProp(processedItem, 'disabled') }"
376
- [fragment]="getItemProp(processedItem, 'fragment')"
377
- [queryParamsHandling]="getItemProp(processedItem, 'queryParamsHandling')"
378
- [preserveFragment]="getItemProp(processedItem, 'preserveFragment')"
379
- [skipLocationChange]="getItemProp(processedItem, 'skipLocationChange')"
380
- [replaceUrl]="getItemProp(processedItem, 'replaceUrl')"
381
- [state]="getItemProp(processedItem, 'state')"
382
- pRipple
383
- >
384
- <span
385
- *ngIf="getItemProp(processedItem, 'icon')"
386
- class="cax-menuitem-icon"
387
- [ngClass]="getItemProp(processedItem, 'icon')"
388
- [ngStyle]="getItemProp(processedItem, 'iconStyle')"
389
- [attr.data-pc-section]="'icon'"
390
- [attr.aria-hidden]="true"
391
- [attr.tabindex]="-1"
392
- >
393
- </span>
394
- <span *ngIf="getItemProp(processedItem, 'escape'); else htmlLabel" class="cax-menuitem-text" [attr.data-pc-section]="'label'">
395
- {{ getItemLabel(processedItem) }}
396
- </span>
397
- <ng-template #htmlLabel>
398
- <span class="cax-menuitem-text" [innerHTML]="getItemLabel(processedItem)" [attr.data-pc-section]="'label'"></span>
399
- </ng-template>
400
- <span class="cax-menuitem-badge" *ngIf="getItemProp(processedItem, 'badge')" [ngClass]="getItemProp(processedItem, 'badgeStyleClass')">{{ getItemProp(processedItem, 'badge') }}</span>
401
-
402
- <ng-container *ngIf="isItemGroup(processedItem)">
403
- <AngleRightIcon *ngIf="!tieredMenu.submenuIconTemplate" [styleClass]="'cax-submenu-icon'" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true" />
404
- <ng-template *ngTemplateOutlet="tieredMenu.submenuIconTemplate" [attr.data-pc-section]="'submenuicon'" [attr.aria-hidden]="true"></ng-template>
405
- </ng-container>
406
- </a>
407
- </ng-container>
408
- <ng-container *ngIf="itemTemplate">
409
- <ng-template *ngTemplateOutlet="itemTemplate; context: { $implicit: processedItem.item, hasSubmenu: getItemProp(processedItem, 'items') }"></ng-template>
410
- </ng-container>
411
- </div>
412
-
413
- <cax-tieredMenuSub
414
- *ngIf="isItemVisible(processedItem) && isItemGroup(processedItem)"
415
- [items]="processedItem.items"
416
- [itemTemplate]="itemTemplate"
417
- [autoDisplay]="autoDisplay"
418
- [menuId]="menuId"
419
- [activeItemPath]="activeItemPath()"
420
- [focusedItemId]="focusedItemId"
421
- [ariaLabelledBy]="getItemId(processedItem)"
422
- [level]="level + 1"
423
- (itemClick)="itemClick.emit($event)"
424
- (itemMouseEnter)="onItemMouseEnter($event)"
425
- ></cax-tieredMenuSub>
426
- </li>
427
- </ng-template>
428
- </ul>
429
- `,
430
- encapsulation: ViewEncapsulation.None,
431
- host: {
432
- class: 'cax-element'
433
- }
434
- }]
435
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: TieredMenu, decorators: [{
436
- type: Inject,
437
- args: [forwardRef(() => TieredMenu)]
438
- }] }], propDecorators: { items: [{
439
- type: Input
440
- }], itemTemplate: [{
441
- type: Input
442
- }], root: [{
443
- type: Input,
444
- args: [{ transform: booleanAttribute }]
445
- }], autoDisplay: [{
446
- type: Input,
447
- args: [{ transform: booleanAttribute }]
448
- }], autoZIndex: [{
449
- type: Input,
450
- args: [{ transform: booleanAttribute }]
451
- }], baseZIndex: [{
452
- type: Input,
453
- args: [{ transform: numberAttribute }]
454
- }], popup: [{
455
- type: Input,
456
- args: [{ transform: booleanAttribute }]
457
- }], menuId: [{
458
- type: Input
459
- }], ariaLabel: [{
460
- type: Input
461
- }], ariaLabelledBy: [{
462
- type: Input
463
- }], level: [{
464
- type: Input,
465
- args: [{ transform: numberAttribute }]
466
- }], focusedItemId: [{
467
- type: Input
468
- }], tabindex: [{
469
- type: Input,
470
- args: [{ transform: numberAttribute }]
471
- }], itemClick: [{
472
- type: Output
473
- }], itemMouseEnter: [{
474
- type: Output
475
- }], menuFocus: [{
476
- type: Output
477
- }], menuBlur: [{
478
- type: Output
479
- }], menuKeydown: [{
480
- type: Output
481
- }], sublistViewChild: [{
482
- type: ViewChild,
483
- args: ['sublist', { static: true }]
484
- }] } });
485
- /**
486
- * TieredMenu displays submenus in nested overlays.
487
- * @group Components
488
- */
489
- export class TieredMenu {
490
- document;
491
- platformId;
492
- el;
493
- renderer;
494
- cd;
495
- config;
496
- overlayService;
497
- /**
498
- * An array of menuitems.
499
- * @group Props
500
- */
501
- set model(value) {
502
- this._model = value;
503
- this._processedItems = this.createProcessedItems(this._model || []);
504
- }
505
- get model() {
506
- return this._model;
507
- }
508
- /**
509
- * Defines if menu would displayed as a popup.
510
- * @group Props
511
- */
512
- popup;
513
- /**
514
- * Inline style of the component.
515
- * @group Props
516
- */
517
- style;
518
- /**
519
- * Style class of the component.
520
- * @group Props
521
- */
522
- styleClass;
523
- /**
524
- * Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element.
525
- * @group Props
526
- */
527
- appendTo;
528
- /**
529
- * Whether to automatically manage layering.
530
- * @group Props
531
- */
532
- autoZIndex = true;
533
- /**
534
- * Base zIndex value to use in layering.
535
- * @group Props
536
- */
537
- baseZIndex = 0;
538
- /**
539
- * Whether to show a root submenu on mouse over.
540
- * @defaultValue true
541
- * @group Props
542
- */
543
- autoDisplay = true;
544
- /**
545
- * Transition options of the show animation.
546
- * @group Props
547
- */
548
- showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
549
- /**
550
- * Transition options of the hide animation.
551
- * @group Props
552
- */
553
- hideTransitionOptions = '.1s linear';
554
- /**
555
- * Current id state as a string.
556
- * @group Props
557
- */
558
- id;
559
- /**
560
- * Defines a string value that labels an interactive element.
561
- * @group Props
562
- */
563
- ariaLabel;
564
- /**
565
- * Identifier of the underlying input element.
566
- * @group Props
567
- */
568
- ariaLabelledBy;
569
- /**
570
- * When present, it specifies that the component should be disabled.
571
- * @group Props
572
- */
573
- disabled = false;
574
- /**
575
- * Index of the element in tabbing order.
576
- * @group Props
577
- */
578
- tabindex = 0;
579
- /**
580
- * Callback to invoke when overlay menu is shown.
581
- * @group Emits
582
- */
583
- onShow = new EventEmitter();
584
- /**
585
- * Callback to invoke when overlay menu is hidden.
586
- * @group Emits
587
- */
588
- onHide = new EventEmitter();
589
- templates;
590
- rootmenu;
591
- containerViewChild;
592
- submenuIconTemplate;
593
- itemTemplate;
594
- container;
595
- outsideClickListener;
596
- resizeListener;
597
- scrollHandler;
598
- target;
599
- relatedTarget;
600
- visible;
601
- relativeAlign;
602
- dirty = false;
603
- focused = false;
604
- activeItemPath = signal([]);
605
- number = signal(0);
606
- focusedItemInfo = signal({ index: -1, level: 0, parentKey: '', item: null });
607
- searchValue = '';
608
- searchTimeout;
609
- _processedItems;
610
- _model;
611
- get visibleItems() {
612
- const processedItem = this.activeItemPath().find((p) => p.key === this.focusedItemInfo().parentKey);
613
- return processedItem ? processedItem.items : this.processedItems;
614
- }
615
- get processedItems() {
616
- if (!this._processedItems || !this._processedItems.length) {
617
- this._processedItems = this.createProcessedItems(this.model || []);
618
- }
619
- return this._processedItems;
620
- }
621
- get focusedItemId() {
622
- const focusedItemInfo = this.focusedItemInfo();
623
- return focusedItemInfo.item?.id ? focusedItemInfo.item.id : focusedItemInfo.index !== -1 ? `${this.id}${ObjectUtils.isNotEmpty(focusedItemInfo.parentKey) ? '_' + focusedItemInfo.parentKey : ''}_${focusedItemInfo.index}` : null;
624
- }
625
- constructor(document, platformId, el, renderer, cd, config, overlayService) {
626
- this.document = document;
627
- this.platformId = platformId;
628
- this.el = el;
629
- this.renderer = renderer;
630
- this.cd = cd;
631
- this.config = config;
632
- this.overlayService = overlayService;
633
- effect(() => {
634
- const path = this.activeItemPath();
635
- if (ObjectUtils.isNotEmpty(path)) {
636
- this.bindOutsideClickListener();
637
- this.bindResizeListener();
638
- }
639
- else {
640
- this.unbindOutsideClickListener();
641
- this.unbindResizeListener();
642
- }
643
- });
644
- }
645
- ngOnInit() {
646
- this.id = this.id || UniqueComponentId();
647
- }
648
- ngAfterContentInit() {
649
- this.templates?.forEach((item) => {
650
- switch (item.getType()) {
651
- case 'submenuicon':
652
- this.submenuIconTemplate = item.template;
653
- break;
654
- case 'item':
655
- this.itemTemplate = item.template;
656
- break;
657
- default:
658
- this.itemTemplate = item.template;
659
- break;
660
- }
661
- });
662
- }
663
- createProcessedItems(items, level = 0, parent = {}, parentKey = '') {
664
- const processedItems = [];
665
- items &&
666
- items.forEach((item, index) => {
667
- const key = (parentKey !== '' ? parentKey + '_' : '') + index;
668
- const newItem = {
669
- item,
670
- index,
671
- level,
672
- key,
673
- parent,
674
- parentKey
675
- };
676
- newItem['items'] = this.createProcessedItems(item.items, level + 1, newItem, key);
677
- processedItems.push(newItem);
678
- });
679
- return processedItems;
680
- }
681
- getItemProp(item, name) {
682
- return item ? ObjectUtils.getItemValue(item[name]) : undefined;
683
- }
684
- getProccessedItemLabel(processedItem) {
685
- return processedItem ? this.getItemLabel(processedItem.item) : undefined;
686
- }
687
- getItemLabel(item) {
688
- return this.getItemProp(item, 'label');
689
- }
690
- isProcessedItemGroup(processedItem) {
691
- return processedItem && ObjectUtils.isNotEmpty(processedItem.items);
692
- }
693
- isSelected(processedItem) {
694
- return this.activeItemPath().some((p) => p.key === processedItem.key);
695
- }
696
- isValidSelectedItem(processedItem) {
697
- return this.isValidItem(processedItem) && this.isSelected(processedItem);
698
- }
699
- isValidItem(processedItem) {
700
- return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item) && this.isItemVisible(processedItem.item);
701
- }
702
- isItemDisabled(item) {
703
- return this.getItemProp(item, 'disabled');
704
- }
705
- isItemVisible(item) {
706
- return this.getItemProp(item, 'visible') !== false;
707
- }
708
- isItemSeparator(item) {
709
- return this.getItemProp(item, 'separator');
710
- }
711
- isItemMatched(processedItem) {
712
- return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());
713
- }
714
- isProccessedItemGroup(processedItem) {
715
- return processedItem && ObjectUtils.isNotEmpty(processedItem.items);
716
- }
717
- onOverlayClick(event) {
718
- if (this.popup) {
719
- this.overlayService.add({
720
- originalEvent: event,
721
- target: this.el.nativeElement
722
- });
723
- }
724
- }
725
- onItemClick(event) {
726
- const { originalEvent, processedItem } = event;
727
- const grouped = this.isProcessedItemGroup(processedItem);
728
- const root = ObjectUtils.isEmpty(processedItem.parent);
729
- const selected = this.isSelected(processedItem);
730
- if (selected) {
731
- const { index, key, level, parentKey, item } = processedItem;
732
- this.activeItemPath.set(this.activeItemPath().filter((p) => key !== p.key && key.startsWith(p.key)));
733
- this.focusedItemInfo.set({ index, level, parentKey, item });
734
- this.dirty = true;
735
- DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);
736
- }
737
- else {
738
- if (grouped) {
739
- this.onItemChange(event);
740
- }
741
- else {
742
- const rootProcessedItem = root ? processedItem : this.activeItemPath().find((p) => p.parentKey === '');
743
- this.hide(originalEvent);
744
- this.changeFocusedItemIndex(originalEvent, rootProcessedItem ? rootProcessedItem.index : -1);
745
- DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);
746
- }
747
- }
748
- }
749
- onItemMouseEnter(event) {
750
- if (!DomHandler.isTouchDevice()) {
751
- if (this.autoDisplay) {
752
- this.dirty = true;
753
- }
754
- if (this.dirty) {
755
- this.onItemChange(event);
756
- }
757
- }
758
- else {
759
- this.onItemChange({ event, processedItem: event.processedItem, focus: this.autoDisplay });
760
- }
761
- }
762
- onKeyDown(event) {
763
- const metaKey = event.metaKey || event.ctrlKey;
764
- switch (event.code) {
765
- case 'ArrowDown':
766
- this.onArrowDownKey(event);
767
- break;
768
- case 'ArrowUp':
769
- this.onArrowUpKey(event);
770
- break;
771
- case 'ArrowLeft':
772
- this.onArrowLeftKey(event);
773
- break;
774
- case 'ArrowRight':
775
- this.onArrowRightKey(event);
776
- break;
777
- case 'Home':
778
- this.onHomeKey(event);
779
- break;
780
- case 'End':
781
- this.onEndKey(event);
782
- break;
783
- case 'Space':
784
- this.onSpaceKey(event);
785
- break;
786
- case 'Enter':
787
- this.onEnterKey(event);
788
- break;
789
- case 'Escape':
790
- this.onEscapeKey(event);
791
- break;
792
- case 'Tab':
793
- this.onTabKey(event);
794
- break;
795
- case 'PageDown':
796
- case 'PageUp':
797
- case 'Backspace':
798
- case 'ShiftLeft':
799
- case 'ShiftRight':
800
- //NOOP
801
- break;
802
- default:
803
- if (!metaKey && ObjectUtils.isPrintableCharacter(event.key)) {
804
- this.searchItems(event, event.key);
805
- }
806
- break;
807
- }
808
- }
809
- onArrowDownKey(event) {
810
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();
811
- this.changeFocusedItemIndex(event, itemIndex);
812
- event.preventDefault();
813
- }
814
- onArrowRightKey(event) {
815
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
816
- const grouped = this.isProccessedItemGroup(processedItem);
817
- const item = processedItem?.item;
818
- if (grouped) {
819
- this.onItemChange({ originalEvent: event, processedItem });
820
- this.focusedItemInfo.set({ index: -1, parentKey: processedItem.key, item });
821
- this.searchValue = '';
822
- this.onArrowDownKey(event);
823
- }
824
- event.preventDefault();
825
- }
826
- onArrowUpKey(event) {
827
- if (event.altKey) {
828
- if (this.focusedItemInfo().index !== -1) {
829
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
830
- const grouped = this.isProccessedItemGroup(processedItem);
831
- !grouped && this.onItemChange({ originalEvent: event, processedItem });
832
- }
833
- this.popup && this.hide(event, true);
834
- event.preventDefault();
835
- }
836
- else {
837
- const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();
838
- this.changeFocusedItemIndex(event, itemIndex);
839
- event.preventDefault();
840
- }
841
- }
842
- onArrowLeftKey(event) {
843
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
844
- const parentItem = this.activeItemPath().find((p) => p.key === processedItem.parentKey);
845
- const root = ObjectUtils.isEmpty(processedItem.parent);
846
- if (!root) {
847
- this.focusedItemInfo.set({ index: -1, parentKey: parentItem ? parentItem.parentKey : '', item: processedItem.item });
848
- this.searchValue = '';
849
- this.onArrowDownKey(event);
850
- }
851
- const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== this.focusedItemInfo().parentKey);
852
- this.activeItemPath.set(activeItemPath);
853
- event.preventDefault();
854
- }
855
- onHomeKey(event) {
856
- this.changeFocusedItemIndex(event, this.findFirstItemIndex());
857
- event.preventDefault();
858
- }
859
- onEndKey(event) {
860
- this.changeFocusedItemIndex(event, this.findLastItemIndex());
861
- event.preventDefault();
862
- }
863
- onSpaceKey(event) {
864
- this.onEnterKey(event);
865
- }
866
- onEscapeKey(event) {
867
- this.hide(event, true);
868
- this.focusedItemInfo().index = this.findFirstFocusedItemIndex();
869
- event.preventDefault();
870
- }
871
- onTabKey(event) {
872
- if (this.focusedItemInfo().index !== -1) {
873
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
874
- const grouped = this.isProccessedItemGroup(processedItem);
875
- !grouped && this.onItemChange({ originalEvent: event, processedItem });
876
- }
877
- this.hide();
878
- }
879
- onEnterKey(event) {
880
- if (this.focusedItemInfo().index !== -1) {
881
- const element = DomHandler.findSingle(this.rootmenu.el.nativeElement, `li[id="${`${this.focusedItemId}`}"]`);
882
- const anchorElement = element && DomHandler.findSingle(element, 'a[data-pc-section="action"]');
883
- anchorElement ? anchorElement.click() : element && element.click();
884
- if (!this.popup) {
885
- const processedItem = this.visibleItems[this.focusedItemInfo().index];
886
- const grouped = this.isProccessedItemGroup(processedItem);
887
- !grouped && (this.focusedItemInfo().index = this.findFirstFocusedItemIndex());
888
- }
889
- }
890
- event.preventDefault();
891
- }
892
- onItemChange(event) {
893
- const { processedItem, isFocus } = event;
894
- if (ObjectUtils.isEmpty(processedItem))
895
- return;
896
- const { index, key, level, parentKey, items, item } = processedItem;
897
- const grouped = ObjectUtils.isNotEmpty(items);
898
- const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== parentKey && p.parentKey !== key);
899
- grouped && activeItemPath.push(processedItem);
900
- this.focusedItemInfo.set({ index, level, parentKey, item });
901
- this.activeItemPath.set(activeItemPath);
902
- grouped && (this.dirty = true);
903
- isFocus && DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);
904
- }
905
- onMenuFocus(event) {
906
- this.focused = true;
907
- if (this.focusedItemInfo().index === -1 && !this.popup) {
908
- // this.onArrowDownKey(event);
909
- }
910
- }
911
- onMenuBlur(event) {
912
- this.focused = false;
913
- this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });
914
- this.searchValue = '';
915
- this.dirty = false;
916
- }
917
- onOverlayAnimationStart(event) {
918
- switch (event.toState) {
919
- case 'visible':
920
- if (this.popup) {
921
- this.container = event.element;
922
- this.moveOnTop();
923
- this.onShow.emit({});
924
- this.appendOverlay();
925
- this.alignOverlay();
926
- this.bindOutsideClickListener();
927
- this.bindResizeListener();
928
- this.bindScrollListener();
929
- DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);
930
- this.scrollInView();
931
- }
932
- break;
933
- case 'void':
934
- this.onOverlayHide();
935
- this.onHide.emit({});
936
- break;
937
- }
938
- }
939
- alignOverlay() {
940
- if (this.relativeAlign)
941
- DomHandler.relativePosition(this.container, this.target);
942
- else
943
- DomHandler.absolutePosition(this.container, this.target);
944
- }
945
- onOverlayAnimationEnd(event) {
946
- switch (event.toState) {
947
- case 'void':
948
- ZIndexUtils.clear(event.element);
949
- break;
950
- }
951
- }
952
- appendOverlay() {
953
- if (this.appendTo) {
954
- if (this.appendTo === 'body')
955
- this.renderer.appendChild(this.document.body, this.container);
956
- else
957
- DomHandler.appendChild(this.container, this.appendTo);
958
- }
959
- }
960
- restoreOverlayAppend() {
961
- if (this.container && this.appendTo) {
962
- this.renderer.appendChild(this.el.nativeElement, this.container);
963
- }
964
- }
965
- moveOnTop() {
966
- if (this.autoZIndex) {
967
- ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);
968
- }
969
- }
970
- /**
971
- * Hides the popup menu.
972
- * @group Method
973
- */
974
- hide(event, isFocus) {
975
- if (this.popup) {
976
- this.onHide.emit({});
977
- this.visible = false;
978
- }
979
- this.activeItemPath.set([]);
980
- this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '' });
981
- isFocus && DomHandler.focus(this.relatedTarget || this.target || this.rootmenu.sublistViewChild.nativeElement);
982
- this.dirty = false;
983
- }
984
- /**
985
- * Toggles the visibility of the popup menu.
986
- * @param {Event} event - Browser event.
987
- * @group Method
988
- */
989
- toggle(event) {
990
- this.visible ? this.hide(event, true) : this.show(event);
991
- }
992
- /**
993
- * Displays the popup menu.
994
- * @param {Event} even - Browser event.
995
- * @group Method
996
- */
997
- show(event, isFocus) {
998
- if (this.popup) {
999
- this.visible = true;
1000
- this.target = this.target || event.currentTarget;
1001
- this.relatedTarget = event.relatedTarget || null;
1002
- this.relativeAlign = event?.relativeAlign || null;
1003
- }
1004
- this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '' });
1005
- isFocus && DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);
1006
- this.cd.markForCheck();
1007
- }
1008
- searchItems(event, char) {
1009
- this.searchValue = (this.searchValue || '') + char;
1010
- let itemIndex = -1;
1011
- let matched = false;
1012
- if (this.focusedItemInfo().index !== -1) {
1013
- itemIndex = this.visibleItems.slice(this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem));
1014
- itemIndex = itemIndex === -1 ? this.visibleItems.slice(0, this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo().index;
1015
- }
1016
- else {
1017
- itemIndex = this.visibleItems.findIndex((processedItem) => this.isItemMatched(processedItem));
1018
- }
1019
- if (itemIndex !== -1) {
1020
- matched = true;
1021
- }
1022
- if (itemIndex === -1 && this.focusedItemInfo().index === -1) {
1023
- itemIndex = this.findFirstFocusedItemIndex();
1024
- }
1025
- if (itemIndex !== -1) {
1026
- this.changeFocusedItemIndex(event, itemIndex);
1027
- }
1028
- if (this.searchTimeout) {
1029
- clearTimeout(this.searchTimeout);
1030
- }
1031
- this.searchTimeout = setTimeout(() => {
1032
- this.searchValue = '';
1033
- this.searchTimeout = null;
1034
- }, 500);
1035
- return matched;
1036
- }
1037
- findLastFocusedItemIndex() {
1038
- const selectedIndex = this.findSelectedItemIndex();
1039
- return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;
1040
- }
1041
- findLastItemIndex() {
1042
- return ObjectUtils.findLastIndex(this.visibleItems, (processedItem) => this.isValidItem(processedItem));
1043
- }
1044
- findPrevItemIndex(index) {
1045
- const matchedItemIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleItems.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;
1046
- return matchedItemIndex > -1 ? matchedItemIndex : index;
1047
- }
1048
- findNextItemIndex(index) {
1049
- const matchedItemIndex = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;
1050
- return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;
1051
- }
1052
- findFirstFocusedItemIndex() {
1053
- const selectedIndex = this.findSelectedItemIndex();
1054
- return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;
1055
- }
1056
- findFirstItemIndex() {
1057
- return this.visibleItems.findIndex((processedItem) => this.isValidItem(processedItem));
1058
- }
1059
- findSelectedItemIndex() {
1060
- return this.visibleItems.findIndex((processedItem) => this.isValidSelectedItem(processedItem));
1061
- }
1062
- changeFocusedItemIndex(event, index) {
1063
- if (this.focusedItemInfo().index !== index) {
1064
- const focusedItemInfo = this.focusedItemInfo();
1065
- this.focusedItemInfo.set({ ...focusedItemInfo, item: this.visibleItems[index].item, index });
1066
- this.scrollInView();
1067
- }
1068
- }
1069
- scrollInView(index = -1) {
1070
- const id = index !== -1 ? `${this.id}_${index}` : this.focusedItemId;
1071
- const element = DomHandler.findSingle(this.rootmenu.el.nativeElement, `li[id="${id}"]`);
1072
- if (element) {
1073
- element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });
1074
- }
1075
- }
1076
- bindScrollListener() {
1077
- if (!this.scrollHandler) {
1078
- this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, (event) => {
1079
- if (this.visible) {
1080
- this.hide(event, true);
1081
- }
1082
- });
1083
- }
1084
- this.scrollHandler.bindScrollListener();
1085
- }
1086
- unbindScrollListener() {
1087
- if (this.scrollHandler) {
1088
- this.scrollHandler.unbindScrollListener();
1089
- this.scrollHandler = null;
1090
- }
1091
- }
1092
- bindResizeListener() {
1093
- if (isPlatformBrowser(this.platformId)) {
1094
- if (!this.resizeListener) {
1095
- this.resizeListener = this.renderer.listen(this.document.defaultView, 'resize', (event) => {
1096
- if (!DomHandler.isTouchDevice()) {
1097
- this.hide(event, true);
1098
- }
1099
- });
1100
- }
1101
- }
1102
- }
1103
- bindOutsideClickListener() {
1104
- if (isPlatformBrowser(this.platformId)) {
1105
- if (!this.outsideClickListener) {
1106
- this.outsideClickListener = this.renderer.listen(this.document, 'click', (event) => {
1107
- const isOutsideContainer = this.containerViewChild && !this.containerViewChild.nativeElement.contains(event.target);
1108
- const isOutsideTarget = this.popup ? !(this.target && (this.target === event.target || this.target.contains(event.target))) : true;
1109
- if (isOutsideContainer && isOutsideTarget) {
1110
- this.hide();
1111
- }
1112
- });
1113
- }
1114
- }
1115
- }
1116
- unbindOutsideClickListener() {
1117
- if (this.outsideClickListener) {
1118
- document.removeEventListener('click', this.outsideClickListener);
1119
- this.outsideClickListener = null;
1120
- }
1121
- }
1122
- unbindResizeListener() {
1123
- if (this.resizeListener) {
1124
- this.resizeListener();
1125
- this.resizeListener = null;
1126
- }
1127
- }
1128
- onOverlayHide() {
1129
- this.unbindOutsideClickListener();
1130
- this.unbindResizeListener();
1131
- this.unbindScrollListener();
1132
- if (!this.cd.destroyed) {
1133
- this.target = null;
1134
- }
1135
- }
1136
- ngOnDestroy() {
1137
- if (this.popup) {
1138
- if (this.scrollHandler) {
1139
- this.scrollHandler.destroy();
1140
- this.scrollHandler = null;
1141
- }
1142
- if (this.container && this.autoZIndex) {
1143
- ZIndexUtils.clear(this.container);
1144
- }
1145
- this.restoreOverlayAppend();
1146
- this.onOverlayHide();
1147
- }
1148
- }
1149
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TieredMenu, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.caxConfig }, { token: i5.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
1150
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: TieredMenu, selector: "cax-tieredMenu", inputs: { model: "model", popup: ["popup", "popup", booleanAttribute], style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: ["autoZIndex", "autoZIndex", booleanAttribute], baseZIndex: ["baseZIndex", "baseZIndex", numberAttribute], autoDisplay: ["autoDisplay", "autoDisplay", booleanAttribute], showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", disabled: ["disabled", "disabled", booleanAttribute], tabindex: ["tabindex", "tabindex", numberAttribute] }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "cax-element" }, queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "rootmenu", first: true, predicate: ["rootmenu"], descendants: true }, { propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
1151
- <div
1152
- #container
1153
- [attr.data-pc-section]="'root'"
1154
- [attr.data-pc-name]="'tieredmenu'"
1155
- [id]="id"
1156
- [ngClass]="{ 'cax-tieredmenu cax-component': true, 'cax-tieredmenu-overlay': popup }"
1157
- [class]="styleClass"
1158
- [ngStyle]="style"
1159
- (click)="onOverlayClick($event)"
1160
- [@overlayAnimation]="{ value: 'visible', params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions } }"
1161
- [@.disabled]="popup !== true"
1162
- (@overlayAnimation.start)="onOverlayAnimationStart($event)"
1163
- (@overlayAnimation.done)="onOverlayAnimationEnd($event)"
1164
- *ngIf="!popup || visible"
1165
- >
1166
- <cax-tieredMenuSub
1167
- #rootmenu
1168
- [root]="true"
1169
- [items]="processedItems"
1170
- [itemTemplate]="itemTemplate"
1171
- [menuId]="id"
1172
- [tabindex]="!disabled ? tabindex : -1"
1173
- [ariaLabel]="ariaLabel"
1174
- [ariaLabelledBy]="ariaLabelledBy"
1175
- [baseZIndex]="baseZIndex"
1176
- [autoZIndex]="autoZIndex"
1177
- [autoDisplay]="autoDisplay"
1178
- [popup]="popup"
1179
- [focusedItemId]="focused ? focusedItemId : undefined"
1180
- [activeItemPath]="activeItemPath()"
1181
- (itemClick)="onItemClick($event)"
1182
- (menuFocus)="onMenuFocus($event)"
1183
- (menuBlur)="onMenuBlur($event)"
1184
- (menuKeydown)="onKeyDown($event)"
1185
- (itemMouseEnter)="onItemMouseEnter($event)"
1186
- ></cax-tieredMenuSub>
1187
- </div>
1188
- `, isInline: true, styles: ["@layer cax{.cax-tieredmenu-overlay{position:absolute;top:0;left:0}.cax-tieredmenu ul{margin:0;padding:0;list-style:none}.cax-tieredmenu .cax-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.cax-tieredmenu .cax-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.cax-tieredmenu .cax-menuitem-text{line-height:1}.cax-tieredmenu .cax-menuitem{position:relative}.cax-tieredmenu .cax-menuitem-link .cax-submenu-icon:not(svg){margin-left:auto}.cax-tieredmenu .cax-menuitem-link .cax-icon-wrapper{margin-left:auto}.cax-tieredmenu .cax-menuitem-active>cax-tieredmenusub>.cax-submenu-list{display:block;left:100%;top:0}.cax-tieredmenu .cax-menuitem-active>cax-tieredmenusub>.cax-submenu-list.cax-submenu-list-flipped{left:-100%}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: TieredMenuSub, selector: "cax-tieredMenuSub", inputs: ["items", "itemTemplate", "root", "autoDisplay", "autoZIndex", "baseZIndex", "popup", "menuId", "ariaLabel", "ariaLabelledBy", "level", "focusedItemId", "activeItemPath", "tabindex"], outputs: ["itemClick", "itemMouseEnter", "menuFocus", "menuBlur", "menuKeydown"] }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1189
- }
1190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TieredMenu, decorators: [{
1191
- type: Component,
1192
- args: [{ selector: 'cax-tieredMenu', template: `
1193
- <div
1194
- #container
1195
- [attr.data-pc-section]="'root'"
1196
- [attr.data-pc-name]="'tieredmenu'"
1197
- [id]="id"
1198
- [ngClass]="{ 'cax-tieredmenu cax-component': true, 'cax-tieredmenu-overlay': popup }"
1199
- [class]="styleClass"
1200
- [ngStyle]="style"
1201
- (click)="onOverlayClick($event)"
1202
- [@overlayAnimation]="{ value: 'visible', params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions } }"
1203
- [@.disabled]="popup !== true"
1204
- (@overlayAnimation.start)="onOverlayAnimationStart($event)"
1205
- (@overlayAnimation.done)="onOverlayAnimationEnd($event)"
1206
- *ngIf="!popup || visible"
1207
- >
1208
- <cax-tieredMenuSub
1209
- #rootmenu
1210
- [root]="true"
1211
- [items]="processedItems"
1212
- [itemTemplate]="itemTemplate"
1213
- [menuId]="id"
1214
- [tabindex]="!disabled ? tabindex : -1"
1215
- [ariaLabel]="ariaLabel"
1216
- [ariaLabelledBy]="ariaLabelledBy"
1217
- [baseZIndex]="baseZIndex"
1218
- [autoZIndex]="autoZIndex"
1219
- [autoDisplay]="autoDisplay"
1220
- [popup]="popup"
1221
- [focusedItemId]="focused ? focusedItemId : undefined"
1222
- [activeItemPath]="activeItemPath()"
1223
- (itemClick)="onItemClick($event)"
1224
- (menuFocus)="onMenuFocus($event)"
1225
- (menuBlur)="onMenuBlur($event)"
1226
- (menuKeydown)="onKeyDown($event)"
1227
- (itemMouseEnter)="onItemMouseEnter($event)"
1228
- ></cax-tieredMenuSub>
1229
- </div>
1230
- `, animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])])], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
1231
- class: 'cax-element'
1232
- }, styles: ["@layer cax{.cax-tieredmenu-overlay{position:absolute;top:0;left:0}.cax-tieredmenu ul{margin:0;padding:0;list-style:none}.cax-tieredmenu .cax-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.cax-tieredmenu .cax-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.cax-tieredmenu .cax-menuitem-text{line-height:1}.cax-tieredmenu .cax-menuitem{position:relative}.cax-tieredmenu .cax-menuitem-link .cax-submenu-icon:not(svg){margin-left:auto}.cax-tieredmenu .cax-menuitem-link .cax-icon-wrapper{margin-left:auto}.cax-tieredmenu .cax-menuitem-active>cax-tieredmenusub>.cax-submenu-list{display:block;left:100%;top:0}.cax-tieredmenu .cax-menuitem-active>cax-tieredmenusub>.cax-submenu-list.cax-submenu-list-flipped{left:-100%}}\n"] }]
1233
- }], ctorParameters: () => [{ type: Document, decorators: [{
1234
- type: Inject,
1235
- args: [DOCUMENT]
1236
- }] }, { type: undefined, decorators: [{
1237
- type: Inject,
1238
- args: [PLATFORM_ID]
1239
- }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i5.caxConfig }, { type: i5.OverlayService }], propDecorators: { model: [{
1240
- type: Input
1241
- }], popup: [{
1242
- type: Input,
1243
- args: [{ transform: booleanAttribute }]
1244
- }], style: [{
1245
- type: Input
1246
- }], styleClass: [{
1247
- type: Input
1248
- }], appendTo: [{
1249
- type: Input
1250
- }], autoZIndex: [{
1251
- type: Input,
1252
- args: [{ transform: booleanAttribute }]
1253
- }], baseZIndex: [{
1254
- type: Input,
1255
- args: [{ transform: numberAttribute }]
1256
- }], autoDisplay: [{
1257
- type: Input,
1258
- args: [{ transform: booleanAttribute }]
1259
- }], showTransitionOptions: [{
1260
- type: Input
1261
- }], hideTransitionOptions: [{
1262
- type: Input
1263
- }], id: [{
1264
- type: Input
1265
- }], ariaLabel: [{
1266
- type: Input
1267
- }], ariaLabelledBy: [{
1268
- type: Input
1269
- }], disabled: [{
1270
- type: Input,
1271
- args: [{ transform: booleanAttribute }]
1272
- }], tabindex: [{
1273
- type: Input,
1274
- args: [{ transform: numberAttribute }]
1275
- }], onShow: [{
1276
- type: Output
1277
- }], onHide: [{
1278
- type: Output
1279
- }], templates: [{
1280
- type: ContentChildren,
1281
- args: [CaxTemplate]
1282
- }], rootmenu: [{
1283
- type: ViewChild,
1284
- args: ['rootmenu']
1285
- }], containerViewChild: [{
1286
- type: ViewChild,
1287
- args: ['container']
1288
- }] } });
1289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGllcmVkbWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90aWVyZWRtZW51L3RpZXJlZG1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUVILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBSVgsU0FBUyxFQUNULGlCQUFpQixFQUVqQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLFVBQVUsRUFDVixLQUFLLEVBQ0wsZUFBZSxFQUNmLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXVDLFdBQVcsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7OztBQTBKdEYsTUFBTSxPQUFPLGFBQWE7SUEwQ1g7SUFDQTtJQUNzQztJQTNDeEMsS0FBSyxDQUFRO0lBRWIsWUFBWSxDQUEwQjtJQUVQLElBQUksR0FBd0IsS0FBSyxDQUFDO0lBRWxDLFdBQVcsQ0FBc0I7SUFFakMsVUFBVSxHQUFZLElBQUksQ0FBQztJQUU1QixVQUFVLEdBQVcsQ0FBQyxDQUFDO0lBRXRCLEtBQUssQ0FBc0I7SUFFMUQsTUFBTSxDQUFxQjtJQUUzQixTQUFTLENBQXFCO0lBRTlCLGNBQWMsQ0FBcUI7SUFFTCxLQUFLLEdBQVcsQ0FBQyxDQUFD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QUFFLGFBQWE7cUJBQ3ZCOzswQkE4SkksTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLFdBQVc7K0tBeEpWLEtBQUs7c0JBQWpCLEtBQUs7Z0JBV2tDLEtBQUs7c0JBQTVDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSzdCLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS2tDLFVBQVU7c0JBQWpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBS0MsVUFBVTtzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBTUcsV0FBVztzQkFBbEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFLN0IscUJBQXFCO3NCQUE3QixLQUFLO2dCQUtHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFLRyxFQUFFO3NCQUFWLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtrQyxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUtDLFFBQVE7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUszQixNQUFNO3NCQUFmLE1BQU07Z0JBS0csTUFBTTtzQkFBZixNQUFNO2dCQUV1QixTQUFTO3NCQUF0QyxlQUFlO3VCQUFDLFdBQVc7Z0JBRUwsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUVHLGtCQUFrQjtzQkFBekMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQsIGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIFZpZXdSZWYsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBlZmZlY3QsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbnB1dCxcbiAgICBudW1iZXJBdHRyaWJ1dGUsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudUl0ZW0sIE92ZXJsYXlTZXJ2aWNlLCBjYXhDb25maWcsIENheFRlbXBsYXRlLCBTaGFyZWRNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hcGknO1xuaW1wb3J0IHsgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXIsIERvbUhhbmRsZXIgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9kb20nO1xuaW1wb3J0IHsgTnVsbGFibGUsIFZvaWRMaXN0ZW5lciB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3RzLWhlbHBlcnMnO1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMsIFVuaXF1ZUNvbXBvbmVudElkLCBaSW5kZXhVdGlscyB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYXgtdGllcmVkTWVudVN1YicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHVsXG4gICAgICAgICAgICAjc3VibGlzdFxuICAgICAgICAgICAgcm9sZT1cIm1lbnVcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2F4LXN1Ym1lbnUtbGlzdCc6ICFyb290LCAnY2F4LXRpZXJlZG1lbnUtcm9vdC1saXN0Jzogcm9vdCB9XCJcbiAgICAgICAgICAgIFtpZF09XCJtZW51SWQgKyAnX2xpc3QnXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImZvY3VzZWRJdGVtSWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1vcmllbnRhdGlvbl09XCIndmVydGljYWwnXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbWVudSdcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwibWVudUtleWRvd24uZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJtZW51Rm9jdXMuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChibHVyKT1cIm1lbnVCbHVyLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtcHJvY2Vzc2VkSXRlbSBbbmdGb3JPZl09XCJpdGVtc1wiIGxldC1pbmRleD1cImluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNJdGVtVmlzaWJsZShwcm9jZXNzZWRJdGVtKSAmJiBnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc2VwYXJhdG9yJylcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJnZXRJdGVtSWQocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc3R5bGUnKVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFNlcGFyYXRvckl0ZW1DbGFzcyhwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJzZXBhcmF0b3JcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NlcGFyYXRvcidcIlxuICAgICAgICAgICAgICAgID48L2xpPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAjbGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW0pICYmICFnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc2VwYXJhdG9yJylcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJnZXRJdGVtSWQocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21lbnVpdGVtJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtY2F4LWhpZ2hsaWdodF09XCJpc0l0ZW1BY3RpdmUocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNheC1mb2N1c2VkXT1cImlzSXRlbUZvY3VzZWQocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNheC1kaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChwcm9jZXNzZWRJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0SXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChwcm9jZXNzZWRJdGVtKSB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImlzSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pICYmICFnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAndG8nKSA/ICdtZW51JyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSkgPyBpc0l0ZW1BY3RpdmUocHJvY2Vzc2VkSXRlbSkgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwiZ2V0QXJpYVNldFNpemUoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcG9zaW5zZXRdPVwiZ2V0QXJpYVBvc0luc2V0KGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzdHlsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0SXRlbUNsYXNzKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzdHlsZUNsYXNzJylcIlxuICAgICAgICAgICAgICAgICAgICBbY2F4VG9vbHRpcF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAndG9vbHRpcCcpXCJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBPcHRpb25zXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICd0b29sdGlwT3B0aW9ucycpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjb250ZW50J1wiIGNsYXNzPVwiY2F4LW1lbnVpdGVtLWNvbnRlbnRcIiAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LCBwcm9jZXNzZWRJdGVtKVwiIChtb3VzZWVudGVyKT1cIm9uSXRlbU1vdXNlRW50ZXIoeyAkZXZlbnQsIHByb2Nlc3NlZEl0ZW0gfSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3JvdXRlckxpbmsnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmhyZWZdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3VybCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uaWRdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2F1dG9tYXRpb25JZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidhY3Rpb24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhcmdldF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAndGFyZ2V0JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjYXgtbWVudWl0ZW0tbGluayc6IHRydWUsICdjYXgtZGlzYWJsZWQnOiBnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZGlzYWJsZWQnKSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnaWNvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2F4LW1lbnVpdGVtLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2ljb24nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnaWNvblN0eWxlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpY29uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdlc2NhcGUnKTsgZWxzZSBodG1sTGFiZWxcIiBjbGFzcz1cImNheC1tZW51aXRlbS10ZXh0XCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidsYWJlbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXgtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiZ2V0SXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW0pXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidsYWJlbCdcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2F4LW1lbnVpdGVtLWJhZGdlXCIgKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYmFkZ2UnKVwiIFtuZ0NsYXNzXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZVN0eWxlQ2xhc3MnKVwiPnt7IGdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZScpIH19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0l0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlUmlnaHRJY29uICpuZ0lmPVwiIXRpZXJlZE1lbnUuc3VibWVudUljb25UZW1wbGF0ZVwiIFtzdHlsZUNsYXNzXT1cIidjYXgtc3VibWVudS1pY29uJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWVyZWRNZW51LnN1Ym1lbnVJY29uVGVtcGxhdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3N1Ym1lbnVpY29uJ1wiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncm91dGVyTGluaycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3JvdXRlckxpbmsnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbmlkXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdhdXRvbWF0aW9uSWQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidhY3Rpb24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdxdWVyeVBhcmFtcycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiJ2NheC1tZW51aXRlbS1saW5rLWFjdGl2ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3JvdXRlckxpbmtBY3RpdmVPcHRpb25zJykgfHwgeyBleGFjdDogZmFsc2UgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3RhcmdldCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2F4LW1lbnVpdGVtLWxpbmsnOiB0cnVlLCAnY2F4LWRpc2FibGVkJzogZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2Rpc2FibGVkJykgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmcmFnbWVudF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZnJhZ21lbnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdxdWVyeVBhcmFtc0hhbmRsaW5nJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlc2VydmVGcmFnbWVudF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncHJlc2VydmVGcmFnbWVudCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NraXBMb2NhdGlvbkNoYW5nZV09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnc2tpcExvY2F0aW9uQ2hhbmdlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVwbGFjZVVybF09XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAncmVwbGFjZVVybCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzdGF0ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2ljb24nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNheC1tZW51aXRlbS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdpY29uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2ljb25TdHlsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdlc2NhcGUnKTsgZWxzZSBodG1sTGFiZWxcIiBjbGFzcz1cImNheC1tZW51aXRlbS10ZXh0XCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidsYWJlbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEl0ZW1MYWJlbChwcm9jZXNzZWRJdGVtKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXgtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiZ2V0SXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW0pXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidsYWJlbCdcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2F4LW1lbnVpdGVtLWJhZGdlXCIgKm5nSWY9XCJnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnYmFkZ2UnKVwiIFtuZ0NsYXNzXT1cImdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZVN0eWxlQ2xhc3MnKVwiPnt7IGdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdiYWRnZScpIH19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0l0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlUmlnaHRJY29uICpuZ0lmPVwiIXRpZXJlZE1lbnUuc3VibWVudUljb25UZW1wbGF0ZVwiIFtzdHlsZUNsYXNzXT1cIidjYXgtc3VibWVudS1pY29uJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc3VibWVudWljb24nXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWVyZWRNZW51LnN1Ym1lbnVJY29uVGVtcGxhdGVcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3N1Ym1lbnVpY29uJ1wiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwcm9jZXNzZWRJdGVtLml0ZW0sIGhhc1N1Ym1lbnU6IGdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdpdGVtcycpIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxjYXgtdGllcmVkTWVudVN1YlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW0pICYmIGlzSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJwcm9jZXNzZWRJdGVtLml0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvRGlzcGxheV09XCJhdXRvRGlzcGxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWVudUlkXT1cIm1lbnVJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbVBhdGhdPVwiYWN0aXZlSXRlbVBhdGgoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9jdXNlZEl0ZW1JZF09XCJmb2N1c2VkSXRlbUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJnZXRJdGVtSWQocHJvY2Vzc2VkSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xldmVsXT1cImxldmVsICsgMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbUNsaWNrKT1cIml0ZW1DbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1Nb3VzZUVudGVyKT1cIm9uSXRlbU1vdXNlRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2NheC10aWVyZWRNZW51U3ViPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3VsPlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnY2F4LWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaWVyZWRNZW51U3ViIHtcbiAgICBASW5wdXQoKSBpdGVtczogYW55W107XG5cbiAgICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJvb3Q6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvRGlzcGxheTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvWkluZGV4OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcG9wdXA6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBtZW51SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGxldmVsOiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgZm9jdXNlZEl0ZW1JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgYWN0aXZlSXRlbVBhdGggPSBpbnB1dDxhbnlbXT4oW10pO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGFiaW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBAT3V0cHV0KCkgaXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBpdGVtTW91c2VFbnRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgbWVudUZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBtZW51Qmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgbWVudUtleWRvd246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnc3VibGlzdCcsIHsgc3RhdGljOiB0cnVlIH0pIHN1Ymxpc3RWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IFRpZXJlZE1lbnUpKSBwdWJsaWMgdGllcmVkTWVudTogVGllcmVkTWVudVxuICAgICkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IHRoaXMuYWN0aXZlSXRlbVBhdGgoKTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc05vdEVtcHR5KHBhdGgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvblN1Ym1lbnUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcG9zaXRpb25TdWJtZW51KCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy50aWVyZWRNZW51LnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJsaXN0ID0gdGhpcy5zdWJsaXN0Vmlld0NoaWxkICYmIHRoaXMuc3VibGlzdFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKHN1Ymxpc3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRJdGVtID0gc3VibGlzdC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyT2Zmc2V0ID0gRG9tSGFuZGxlci5nZXRPZmZzZXQocGFyZW50SXRlbSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBEb21IYW5kbGVyLmdldFZpZXdwb3J0KCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3VibGlzdFdpZHRoID0gc3VibGlzdC5vZmZzZXRQYXJlbnQgPyBzdWJsaXN0Lm9mZnNldFdpZHRoIDogRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHN1Ymxpc3QpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1PdXRlcldpZHRoID0gRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHBhcmVudEl0ZW0uY2hpbGRyZW5bMF0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1Ymxpc3RGbGlwcGVkQ2xhc3MgPSAnY2F4LXN1Ym1lbnUtbGlzdC1mbGlwcGVkJztcbiAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQoY29udGFpbmVyT2Zmc2V0LmxlZnQsIDEwKSArIGl0ZW1PdXRlcldpZHRoICsgc3VibGlzdFdpZHRoID4gdmlld3BvcnQud2lkdGggLSBEb21IYW5kbGVyLmNhbGN1bGF0ZVNjcm9sbGJhcldpZHRoKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhzdWJsaXN0LCBzdWJsaXN0RmxpcHBlZENsYXNzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKERvbUhhbmRsZXIuaGFzQ2xhc3Moc3VibGlzdCwgc3VibGlzdEZsaXBwZWRDbGFzcykpIHtcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyhzdWJsaXN0LCBzdWJsaXN0RmxpcHBlZENsYXNzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtOiBhbnksIG5hbWU6IHN0cmluZywgcGFyYW1zOiBhbnkgfCBudWxsID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbSAmJiBwcm9jZXNzZWRJdGVtLml0ZW0gPyBPYmplY3RVdGlscy5nZXRJdGVtVmFsdWUocHJvY2Vzc2VkSXRlbS5pdGVtW25hbWVdLCBwYXJhbXMpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldEl0ZW1JZChwcm9jZXNzZWRJdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbS5pdGVtPy5pZCA/PyBgJHt0aGlzLm1lbnVJZH1fJHtwcm9jZXNzZWRJdGVtLmtleX1gO1xuICAgIH1cblxuICAgIGdldEl0ZW1LZXkocHJvY2Vzc2VkSXRlbTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbUlkKHByb2Nlc3NlZEl0ZW0pO1xuICAgIH1cblxuICAgIGdldEl0ZW1DbGFzcyhwcm9jZXNzZWRJdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2NsYXNzJyksXG4gICAgICAgICAgICAnY2F4LW1lbnVpdGVtJzogdHJ1ZSxcbiAgICAgICAgICAgICdjYXgtaGlnaGxpZ2h0JzogdGhpcy5pc0l0ZW1BY3RpdmUocHJvY2Vzc2VkSXRlbSksXG4gICAgICAgICAgICAnY2F4LW1lbnVpdGVtLWFjdGl2ZSc6IHRoaXMuaXNJdGVtQWN0aXZlKHByb2Nlc3NlZEl0ZW0pLFxuICAgICAgICAgICAgJ2NheC1mb2N1cyc6IHRoaXMuaXNJdGVtRm9jdXNlZChwcm9jZXNzZWRJdGVtKSxcbiAgICAgICAgICAgICdjYXgtZGlzYWJsZWQnOiB0aGlzLmlzSXRlbURpc2FibGVkKHByb2Nlc3NlZEl0ZW0pXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0SXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdsYWJlbCcpO1xuICAgIH1cblxuICAgIGdldFNlcGFyYXRvckl0ZW1DbGFzcyhwcm9jZXNzZWRJdGVtOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2NsYXNzJyksXG4gICAgICAgICAgICAnY2F4LW1lbnVpdGVtLXNlcGFyYXRvcic6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRBcmlhU2V0U2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzSXRlbVZpc2libGUocHJvY2Vzc2VkSXRlbSkgJiYgIXRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ3NlcGFyYXRvcicpKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZ2V0QXJpYVBvc0luc2V0KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGluZGV4IC1cbiAgICAgICAgICAgIHRoaXMuaXRlbXMuc2xpY2UoMCwgaW5kZXgpLmZpbHRlcigocHJvY2Vzc2VkSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzSXRlbVZpc2libGUgPSB0aGlzLmlzSXRlbVZpc2libGUocHJvY2Vzc2VkSXRlbSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNWaXNpYmxlU2VwYXJhdG9yID0gaXNJdGVtVmlzaWJsZSAmJiB0aGlzLmdldEl0ZW1Qcm9wKHByb2Nlc3NlZEl0ZW0sICdzZXBhcmF0b3InKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gIWlzSXRlbVZpc2libGUgfHwgaXNWaXNpYmxlU2VwYXJhdG9yO1xuICAgICAgICAgICAgfSkubGVuZ3RoICtcbiAgICAgICAgICAgIDFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1WaXNpYmxlKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAndmlzaWJsZScpICE9PSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc0l0ZW1BY3RpdmUocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUl0ZW1QYXRoKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZUl0ZW1QYXRoKCkuc29tZSgocGF0aCkgPT4gcGF0aC5rZXkgPT09IHByb2Nlc3NlZEl0ZW0ua2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzSXRlbURpc2FibGVkKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtUHJvcChwcm9jZXNzZWRJdGVtLCAnZGlzYWJsZWQnKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1Gb2N1c2VkKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkSXRlbUlkID09PSB0aGlzLmdldEl0ZW1JZChwcm9jZXNzZWRJdGVtKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1Hcm91cChwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmlzTm90RW1wdHkocHJvY2Vzc2VkSXRlbS5pdGVtcyk7XG4gICAgfVxuXG4gICAgb25JdGVtTW91c2VFbnRlcihwYXJhbTogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9EaXNwbGF5KSB7XG4gICAgICAgICAgICBjb25zdCB7IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0gPSBwYXJhbTtcbiAgICAgICAgICAgIHRoaXMuaXRlbU1vdXNlRW50ZXIuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soZXZlbnQ6IGFueSwgcHJvY2Vzc2VkSXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuZ2V0SXRlbVByb3AocHJvY2Vzc2VkSXRlbSwgJ2NvbW1hbmQnLCB7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpdGVtOiBwcm9jZXNzZWRJdGVtLml0ZW0gfSk7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgcHJvY2Vzc2VkSXRlbSwgaXNGb2N1czogdHJ1ZSB9KTtcbiAgICB9XG59XG4vKipcbiAqIFRpZXJlZE1lbnUgZGlzcGxheXMgc3VibWVudXMgaW4gbmVzdGVkIG92ZXJsYXlzLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYXgtdGllcmVkTWVudScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgI2NvbnRhaW5lclxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidyb290J1wiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBjLW5hbWVdPVwiJ3RpZXJlZG1lbnUnXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjYXgtdGllcmVkbWVudSBjYXgtY29tcG9uZW50JzogdHJ1ZSwgJ2NheC10aWVyZWRtZW51LW92ZXJsYXknOiBwb3B1cCB9XCJcbiAgICAgICAgICAgIFtjbGFzc109XCJzdHlsZUNsYXNzXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInN0eWxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk92ZXJsYXlDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtAb3ZlcmxheUFuaW1hdGlvbl09XCJ7IHZhbHVlOiAndmlzaWJsZScsIHBhcmFtczogeyBzaG93VHJhbnNpdGlvblBhcmFtczogc2hvd1RyYW5zaXRpb25PcHRpb25zLCBoaWRlVHJhbnNpdGlvblBhcmFtczogaGlkZVRyYW5zaXRpb25PcHRpb25zIH0gfVwiXG4gICAgICAgICAgICBbQC5kaXNhYmxlZF09XCJwb3B1cCAhPT0gdHJ1ZVwiXG4gICAgICAgICAgICAoQG92ZXJsYXlBbmltYXRpb24uc3RhcnQpPVwib25PdmVybGF5QW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoQG92ZXJsYXlBbmltYXRpb24uZG9uZSk9XCJvbk92ZXJsYXlBbmltYXRpb25FbmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAqbmdJZj1cIiFwb3B1cCB8fCB2aXNpYmxlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGNheC10aWVyZWRNZW51U3ViXG4gICAgICAgICAgICAgICAgI3Jvb3RtZW51XG4gICAgICAgICAgICAgICAgW3Jvb3RdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1zXT1cInByb2Nlc3NlZEl0ZW1zXCJcbiAgICAgICAgICAgICAgICBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW21lbnVJZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIiFkaXNhYmxlZCA/IHRhYmluZGV4IDogLTFcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgIFtiYXNlWkluZGV4XT1cImJhc2VaSW5kZXhcIlxuICAgICAgICAgICAgICAgIFthdXRvWkluZGV4XT1cImF1dG9aSW5kZXhcIlxuICAgICAgICAgICAgICAgIFthdXRvRGlzcGxheV09XCJhdXRvRGlzcGxheVwiXG4gICAgICAgICAgICAgICAgW3BvcHVwXT1cInBvcHVwXCJcbiAgICAgICAgICAgICAgICBbZm9jdXNlZEl0ZW1JZF09XCJmb2N1c2VkID8gZm9jdXNlZEl0ZW1JZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1QYXRoXT1cImFjdGl2ZUl0ZW1QYXRoKClcIlxuICAgICAgICAgICAgICAgIChpdGVtQ2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG1lbnVGb2N1cyk9XCJvbk1lbnVGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobWVudUJsdXIpPVwib25NZW51Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobWVudUtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChpdGVtTW91c2VFbnRlcik9XCJvbkl0ZW1Nb3VzZUVudGVyKCRldmVudClcIlxuICAgICAgICAgICAgPjwvY2F4LXRpZXJlZE1lbnVTdWI+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW3RyaWdnZXIoJ292ZXJsYXlBbmltYXRpb24nLCBbdHJhbnNpdGlvbignOmVudGVyJywgW3N0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVZKDAuOCknIH0pLCBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nKV0pLCB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKV0pXSldLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGllcmVkbWVudS5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2NheC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVGllcmVkTWVudSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBtZW51aXRlbXMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IG1vZGVsKHZhbHVlOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NlZEl0ZW1zID0gdGhpcy5jcmVhdGVQcm9jZXNzZWRJdGVtcyh0aGlzLl9tb2RlbCB8fCBbXSk7XG4gICAgfVxuICAgIGdldCBtb2RlbCgpOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGlmIG1lbnUgd291bGQgZGlzcGxheWVkIGFzIGEgcG9wdXAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHBvcHVwOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRhcmdldCBlbGVtZW50IHRvIGF0dGFjaCB0aGUgb3ZlcmxheSwgdmFsaWQgdmFsdWVzIGFyZSBcImJvZHlcIiBvciBhIGxvY2FsIG5nLXRlbXBsYXRlIHZhcmlhYmxlIG9mIGFub3RoZXIgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgVGVtcGxhdGVSZWY8YW55PiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCBhbnk7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IG1hbmFnZSBsYXllcmluZy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b1pJbmRleDogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogQmFzZSB6SW5kZXggdmFsdWUgdG8gdXNlIGluIGxheWVyaW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBzaG93IGEgcm9vdCBzdWJtZW51IG9uIG1vdXNlIG92ZXIuXG4gICAgICogQGRlZmF1bHRWYWx1ZSB0cnVlXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9EaXNwbGF5OiBib29sZWFuIHwgdW5kZWZpbmVkID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIHNob3cgYW5pbWF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xMnMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknO1xuICAgIC8qKlxuICAgICAqIFRyYW5zaXRpb24gb3B0aW9ucyBvZiB0aGUgaGlkZSBhbmltYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjFzIGxpbmVhcic7XG4gICAgLyoqXG4gICAgICogQ3VycmVudCBpZCBzdGF0ZSBhcyBhIHN0cmluZy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdmFsdWUgdGhhdCBsYWJlbHMgYW4gaW50ZXJhY3RpdmUgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJZGVudGlmaWVyIG9mIHRoZSB1bmRlcmx5aW5nIGlucHV0IGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEluZGV4IG9mIHRoZSBlbGVtZW50IGluIHRhYmJpbmcgb3JkZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGFiaW5kZXg6IG51bWJlciA9IDA7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gb3ZlcmxheSBtZW51IGlzIHNob3duLlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblNob3c6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gb3ZlcmxheSBtZW51IGlzIGhpZGRlbi5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25IaWRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihDYXhUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8Q2F4VGVtcGxhdGU+IHwgdW5kZWZpbmVkO1xuXG4gICAgQFZpZXdDaGlsZCgncm9vdG1lbnUnKSByb290bWVudTogVGllcmVkTWVudVN1YiB8IHVuZGVmaW5lZDtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lclZpZXdDaGlsZDogRWxlbWVudFJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgc3VibWVudUljb25UZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBpdGVtVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAgIG91dHNpZGVDbGlja0xpc3RlbmVyOiBWb2lkTGlzdGVuZXI7XG5cbiAgICByZXNpemVMaXN0ZW5lcjogVm9pZExpc3RlbmVyO1xuXG4gICAgc2Nyb2xsSGFuZGxlcjogTnVsbGFibGU8Q29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXI+O1xuXG4gICAgdGFyZ2V0OiBhbnk7XG5cbiAgICByZWxhdGVkVGFyZ2V0OiBhbnk7XG5cbiAgICB2aXNpYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgcmVsYXRpdmVBbGlnbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIGRpcnR5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBhY3RpdmVJdGVtUGF0aCA9IHNpZ25hbDxhbnk+KFtdKTtcblxuICAgIG51bWJlciA9IHNpZ25hbDxudW1iZXI+KDApO1xuXG4gICAgZm9jdXNlZEl0ZW1JbmZvID0gc2lnbmFsPGFueT4oeyBpbmRleDogLTEsIGxldmVsOiAwLCBwYXJlbnRLZXk6ICcnLCBpdGVtOiBudWxsIH0pO1xuXG4gICAgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gICAgc2VhcmNoVGltZW91dDogYW55O1xuXG4gICAgX3Byb2Nlc3NlZEl0ZW1zOiBhbnlbXTtcblxuICAgIF9tb2RlbDogTWVudUl0ZW1bXSB8IHVuZGVmaW5lZDtcblxuICAgIGdldCB2aXNpYmxlSXRlbXMoKSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSB0aGlzLmFjdGl2ZUl0ZW1QYXRoKCkuZmluZCgocCkgPT4gcC5rZXkgPT09IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkucGFyZW50S2V5KTtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZEl0ZW0gPyBwcm9jZXNzZWRJdGVtLml0ZW1zIDogdGhpcy5wcm9jZXNzZWRJdGVtcztcbiAgICB9XG5cbiAgICBnZXQgcHJvY2Vzc2VkSXRlbXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5fcHJvY2Vzc2VkSXRlbXMgfHwgIXRoaXMuX3Byb2Nlc3NlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc2VkSXRlbXMgPSB0aGlzLmNyZWF0ZVByb2Nlc3NlZEl0ZW1zKHRoaXMubW9kZWwgfHwgW10pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzZWRJdGVtcztcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZEl0ZW1JZCgpIHtcbiAgICAgICAgY29uc3QgZm9jdXNlZEl0ZW1JbmZvID0gdGhpcy5mb2N1c2VkSXRlbUluZm8oKTtcbiAgICAgICAgcmV0dXJuIGZvY3VzZWRJdGVtSW5mby5pdGVtPy5pZCA/IGZvY3VzZWRJdGVtSW5mby5pdGVtLmlkIDogZm9jdXNlZEl0ZW1JbmZvLmluZGV4ICE9PSAtMSA/IGAke3RoaXMuaWR9JHtPYmplY3RVdGlscy5pc05vdEVtcHR5KGZvY3VzZWRJdGVtSW5mby5wYXJlbnRLZXkpID8gJ18nICsgZm9jdXNlZEl0ZW1JbmZvLnBhcmVudEtleSA6ICcnfV8ke2ZvY3VzZWRJdGVtSW5mby5pbmRleH1gIDogbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHB1YmxpYyBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBjb25maWc6IGNheENvbmZpZyxcbiAgICAgICAgcHVibGljIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZVxuICAgICkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IHRoaXMuYWN0aXZlSXRlbVBhdGgoKTtcblxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzTm90RW1wdHkocGF0aCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmlkID0gdGhpcy5pZCB8fCBVbmlxdWVDb21wb25lbnRJZCgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzdWJtZW51aWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWVudUljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjcmVhdGVQcm9jZXNzZWRJdGVtcyhpdGVtczogYW55LCBsZXZlbDogbnVtYmVyID0gMCwgcGFyZW50OiBhbnkgPSB7fSwgcGFyZW50S2V5OiBhbnkgPSAnJykge1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtcyA9IFtdO1xuXG4gICAgICAgIGl0ZW1zICYmXG4gICAgICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IChwYXJlbnRLZXkgIT09ICcnID8gcGFyZW50S2V5ICsgJ18nIDogJycpICsgaW5kZXg7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3SXRlbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50S2V5XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIG5ld0l0ZW1bJ2l0ZW1zJ10gPSB0aGlzLmNyZWF0ZVByb2Nlc3NlZEl0ZW1zKGl0ZW0uaXRlbXMsIGxldmVsICsgMSwgbmV3SXRlbSwga2V5KTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzZWRJdGVtcy5wdXNoKG5ld0l0ZW0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZEl0ZW1zO1xuICAgIH1cblxuICAgIGdldEl0ZW1Qcm9wKGl0ZW06IGFueSwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBpdGVtID8gT2JqZWN0VXRpbHMuZ2V0SXRlbVZhbHVlKGl0ZW1bbmFtZV0pIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldFByb2NjZXNzZWRJdGVtTGFiZWwocHJvY2Vzc2VkSXRlbTogYW55KSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzZWRJdGVtID8gdGhpcy5nZXRJdGVtTGFiZWwocHJvY2Vzc2VkSXRlbS5pdGVtKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXRJdGVtTGFiZWwoaXRlbTogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1Qcm9wKGl0ZW0sICdsYWJlbCcpO1xuICAgIH1cblxuICAgIGlzUHJvY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbSAmJiBPYmplY3RVdGlscy5pc05vdEVtcHR5KHByb2Nlc3NlZEl0ZW0uaXRlbXMpO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZUl0ZW1QYXRoKCkuc29tZSgocCkgPT4gcC5rZXkgPT09IHByb2Nlc3NlZEl0ZW0ua2V5KTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkU2VsZWN0ZWRJdGVtKHByb2Nlc3NlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSXRlbShwcm9jZXNzZWRJdGVtKSAmJiB0aGlzLmlzU2VsZWN0ZWQocHJvY2Vzc2VkSXRlbSk7XG4gICAgfVxuXG4gICAgaXNWYWxpZEl0ZW0ocHJvY2Vzc2VkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXByb2Nlc3NlZEl0ZW0gJiYgIXRoaXMuaXNJdGVtRGlzYWJsZWQocHJvY2Vzc2VkSXRlbS5pdGVtKSAmJiAhdGhpcy5pc0l0ZW1TZXBhcmF0b3IocHJvY2Vzc2VkSXRlbS5pdGVtKSAmJiB0aGlzLmlzSXRlbVZpc2libGUocHJvY2Vzc2VkSXRlbS5pdGVtKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1EaXNhYmxlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbVByb3AoaXRlbSwgJ2Rpc2FibGVkJyk7XG4gICAgfVxuXG4gICAgaXNJdGVtVmlzaWJsZShpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbVByb3AoaXRlbSwgJ3Zpc2libGUnKSAhPT0gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNJdGVtU2VwYXJhdG9yKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtUHJvcChpdGVtLCAnc2VwYXJhdG9yJyk7XG4gICAgfVxuXG4gICAgaXNJdGVtTWF0Y2hlZChwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZEl0ZW0ocHJvY2Vzc2VkSXRlbSkgJiYgdGhpcy5nZXRQcm9jY2Vzc2VkSXRlbUxhYmVsKHByb2Nlc3NlZEl0ZW0pLnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCh0aGlzLnNlYXJjaFZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIGlzUHJvY2Nlc3NlZEl0ZW1Hcm91cChwcm9jZXNzZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NlZEl0ZW0gJiYgT2JqZWN0VXRpbHMuaXNOb3RFbXB0eShwcm9jZXNzZWRJdGVtLml0ZW1zKTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5wb3B1cCkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIHRhcmdldDogdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSXRlbUNsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgeyBvcmlnaW5hbEV2ZW50LCBwcm9jZXNzZWRJdGVtIH0gPSBldmVudDtcbiAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSk7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBPYmplY3RVdGlscy5pc0VtcHR5KHByb2Nlc3NlZEl0ZW0ucGFyZW50KTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQocHJvY2Vzc2VkSXRlbSk7XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICBjb25zdCB7IGluZGV4LCBrZXksIGxldmVsLCBwYXJlbnRLZXksIGl0ZW0gfSA9IHByb2Nlc3NlZEl0ZW07XG5cbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbVBhdGguc2V0KHRoaXMuYWN0aXZlSXRlbVBhdGgoKS5maWx0ZXIoKHApID0+IGtleSAhPT0gcC5rZXkgJiYga2V5LnN0YXJ0c1dpdGgocC5rZXkpKSk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleCwgbGV2ZWwsIHBhcmVudEtleSwgaXRlbSB9KTtcblxuICAgICAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmZvY3VzKHRoaXMucm9vdG1lbnUuc3VibGlzdFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChncm91cGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoZXZlbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByb290UHJvY2Vzc2VkSXRlbSA9IHJvb3QgPyBwcm9jZXNzZWRJdGVtIDogdGhpcy5hY3RpdmVJdGVtUGF0aCgpLmZpbmQoKHApID0+IHAucGFyZW50S2V5ID09PSAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKG9yaWdpbmFsRXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZEl0ZW1JbmRleChvcmlnaW5hbEV2ZW50LCByb290UHJvY2Vzc2VkSXRlbSA/IHJvb3RQcm9jZXNzZWRJdGVtLmluZGV4IDogLTEpO1xuXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5mb2N1cyh0aGlzLnJvb3RtZW51LnN1Ymxpc3RWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkl0ZW1Nb3VzZUVudGVyKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgaWYgKCFEb21IYW5kbGVyLmlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0Rpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoeyBldmVudCwgcHJvY2Vzc2VkSXRlbTogZXZlbnQucHJvY2Vzc2VkSXRlbSwgZm9jdXM6IHRoaXMuYXV0b0Rpc3BsYXkgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleTtcblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93RG93bktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd1VwS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dMZWZ0S2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93UmlnaHRLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uSG9tZUtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVuZEtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uU3BhY2VLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRXNjYXBlS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdTaGlmdExlZnQnOlxuICAgICAgICAgICAgY2FzZSAnU2hpZnRSaWdodCc6XG4gICAgICAgICAgICAgICAgLy9OT09QXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKCFtZXRhS2V5ICYmIE9iamVjdFV0aWxzLmlzUHJpbnRhYmxlQ2hhcmFjdGVyKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hJdGVtcyhldmVudCwgZXZlbnQua2V5KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXJyb3dEb3duS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xID8gdGhpcy5maW5kTmV4dEl0ZW1JbmRleCh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KSA6IHRoaXMuZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZEl0ZW1JbmRleChldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkFycm93UmlnaHRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXhdO1xuICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5pc1Byb2NjZXNzZWRJdGVtR3JvdXAocHJvY2Vzc2VkSXRlbSk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBwcm9jZXNzZWRJdGVtPy5pdGVtO1xuXG4gICAgICAgIGlmIChncm91cGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZSh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBwcm9jZXNzZWRJdGVtIH0pO1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IC0xLCBwYXJlbnRLZXk6IHByb2Nlc3NlZEl0ZW0ua2V5LCBpdGVtIH0pO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgdGhpcy5vbkFycm93RG93bktleShldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uQXJyb3dVcEtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleF07XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgIWdyb3VwZWQgJiYgdGhpcy5vbkl0ZW1DaGFuZ2UoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgcHJvY2Vzc2VkSXRlbSB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wb3B1cCAmJiB0aGlzLmhpZGUoZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xID8gdGhpcy5maW5kUHJldkl0ZW1JbmRleCh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KSA6IHRoaXMuZmluZExhc3RGb2N1c2VkSXRlbUluZGV4KCk7XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZEl0ZW1JbmRleChldmVudCwgaXRlbUluZGV4KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93TGVmdEtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleF07XG4gICAgICAgIGNvbnN0IHBhcmVudEl0ZW0gPSB0aGlzLmFjdGl2ZUl0ZW1QYXRoKCkuZmluZCgocCkgPT4gcC5rZXkgPT09IHByb2Nlc3NlZEl0ZW0ucGFyZW50S2V5KTtcbiAgICAgICAgY29uc3Qgcm9vdCA9IE9iamVjdFV0aWxzLmlzRW1wdHkocHJvY2Vzc2VkSXRlbS5wYXJlbnQpO1xuXG4gICAgICAgIGlmICghcm9vdCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IC0xLCBwYXJlbnRLZXk6IHBhcmVudEl0ZW0gPyBwYXJlbnRJdGVtLnBhcmVudEtleSA6ICcnLCBpdGVtOiBwcm9jZXNzZWRJdGVtLml0ZW0gfSk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLm9uQXJyb3dEb3duS2V5KGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW1QYXRoID0gdGhpcy5hY3RpdmVJdGVtUGF0aCgpLmZpbHRlcigocCkgPT4gcC5wYXJlbnRLZXkgIT09IHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkucGFyZW50S2V5KTtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtUGF0aC5zZXQoYWN0aXZlSXRlbVBhdGgpO1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25Ib21lS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZEl0ZW1JbmRleChldmVudCwgdGhpcy5maW5kRmlyc3RJdGVtSW5kZXgoKSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FbmRLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkSXRlbUluZGV4KGV2ZW50LCB0aGlzLmZpbmRMYXN0SXRlbUluZGV4KCkpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uU3BhY2VLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkVzY2FwZUtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLmhpZGUoZXZlbnQsIHRydWUpO1xuICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4ID0gdGhpcy5maW5kRmlyc3RGb2N1c2VkSXRlbUluZGV4KCk7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvblRhYktleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW0gPSB0aGlzLnZpc2libGVJdGVtc1t0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwZWQgPSB0aGlzLmlzUHJvY2Nlc3NlZEl0ZW1Hcm91cChwcm9jZXNzZWRJdGVtKTtcblxuICAgICAgICAgICAgIWdyb3VwZWQgJiYgdGhpcy5vbkl0ZW1DaGFuZ2UoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgcHJvY2Vzc2VkSXRlbSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIG9uRW50ZXJLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMucm9vdG1lbnUuZWwubmF0aXZlRWxlbWVudCwgYGxpW2lkPVwiJHtgJHt0aGlzLmZvY3VzZWRJdGVtSWR9YH1cIl1gKTtcbiAgICAgICAgICAgIGNvbnN0IGFuY2hvckVsZW1lbnQgPSBlbGVtZW50ICYmIERvbUhhbmRsZXIuZmluZFNpbmdsZShlbGVtZW50LCAnYVtkYXRhLXBjLXNlY3Rpb249XCJhY3Rpb25cIl0nKTtcblxuICAgICAgICAgICAgYW5jaG9yRWxlbWVudCA/IGFuY2hvckVsZW1lbnQuY2xpY2soKSA6IGVsZW1lbnQgJiYgZWxlbWVudC5jbGljaygpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMucG9wdXApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9jZXNzZWRJdGVtID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleF07XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMuaXNQcm9jY2Vzc2VkSXRlbUdyb3VwKHByb2Nlc3NlZEl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgIWdyb3VwZWQgJiYgKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggPSB0aGlzLmZpbmRGaXJzdEZvY3VzZWRJdGVtSW5kZXgoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uSXRlbUNoYW5nZShldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IHsgcHJvY2Vzc2VkSXRlbSwgaXNGb2N1cyB9ID0gZXZlbnQ7XG5cbiAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzRW1wdHkocHJvY2Vzc2VkSXRlbSkpIHJldHVybjtcblxuICAgICAgICBjb25zdCB7IGluZGV4LCBrZXksIGxldmVsLCBwYXJlbnRLZXksIGl0ZW1zLCBpdGVtIH0gPSBwcm9jZXNzZWRJdGVtO1xuICAgICAgICBjb25zdCBncm91cGVkID0gT2JqZWN0VXRpbHMuaXNOb3RFbXB0eShpdGVtcyk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW1QYXRoID0gdGhpcy5hY3RpdmVJdGVtUGF0aCgpLmZpbHRlcigocCkgPT4gcC5wYXJlbnRLZXkgIT09IHBhcmVudEtleSAmJiBwLnBhcmVudEtleSAhPT0ga2V5KTtcblxuICAgICAgICBncm91cGVkICYmIGFjdGl2ZUl0ZW1QYXRoLnB1c2gocHJvY2Vzc2VkSXRlbSk7XG4gICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IGluZGV4LCBsZXZlbCwgcGFyZW50S2V5LCBpdGVtIH0pO1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1QYXRoLnNldChhY3RpdmVJdGVtUGF0aCk7XG5cbiAgICAgICAgZ3JvdXBlZCAmJiAodGhpcy5kaXJ0eSA9IHRydWUpO1xuICAgICAgICBpc0ZvY3VzICYmIERvbUhhbmRsZXIuZm9jdXModGhpcy5yb290bWVudS5zdWJsaXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uTWVudUZvY3VzKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggPT09IC0xICYmICF0aGlzLnBvcHVwKSB7XG4gICAgICAgICAgICAvLyB0aGlzLm9uQXJyb3dEb3duS2V5KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTWVudUJsdXIoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUluZm8uc2V0KHsgaW5kZXg6IC0xLCBsZXZlbDogMCwgcGFyZW50S2V5OiAnJywgaXRlbTogbnVsbCB9KTtcbiAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25PdmVybGF5QW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIgPSBldmVudC5lbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVPblRvcCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KHt9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRPdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25PdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuZm9jdXModGhpcy5yb290bWVudS5zdWJsaXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEluVmlldygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhpZGUuZW1pdCh7fSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhbGlnbk92ZXJsYXkoKSB7XG4gICAgICAgIGlmICh0aGlzLnJlbGF0aXZlQWxpZ24pIERvbUhhbmRsZXIucmVsYXRpdmVQb3NpdGlvbih0aGlzLmNvbnRhaW5lciwgdGhpcy50YXJnZXQpO1xuICAgICAgICBlbHNlIERvbUhhbmRsZXIuYWJzb2x1dGVQb3NpdGlvbih0aGlzLmNvbnRhaW5lciwgdGhpcy50YXJnZXQpO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcihldmVudC5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGVuZE92ZXJsYXkoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKSB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSwgdGhpcy5jb250YWluZXIpO1xuICAgICAgICAgICAgZWxzZSBEb21IYW5kbGVyLmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyLCB0aGlzLmFwcGVuZFRvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVPdmVybGF5QXBwZW5kKCkge1xuICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5hcHBlbmRUbykge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVPblRvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdtZW51JywgdGhpcy5jb250YWluZXIsIHRoaXMuYmFzZVpJbmRleCArIHRoaXMuY29uZmlnLnpJbmRleC5tZW51KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSBwb3B1cCBtZW51LlxuICAgICAqIEBncm91cCBNZXRob2RcbiAgICAgKi9cbiAgICBoaWRlKGV2ZW50PywgaXNGb2N1cz86IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgICAgICAgIHRoaXMub25IaWRlLmVtaXQoe30pO1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtUGF0aC5zZXQoW10pO1xuICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSW5mby5zZXQoeyBpbmRleDogLTEsIGxldmVsOiAwLCBwYXJlbnRLZXk6ICcnIH0pO1xuXG4gICAgICAgIGlzRm9jdXMgJiYgRG9tSGFuZGxlci5mb2N1cyh0aGlzLnJlbGF0ZWRUYXJnZXQgfHwgdGhpcy50YXJnZXQgfHwgdGhpcy5yb290bWVudS5zdWJsaXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgcG9wdXAgbWVudS5cbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIEJyb3dzZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIE1ldGhvZFxuICAgICAqL1xuICAgIHRvZ2dsZShldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMudmlzaWJsZSA/IHRoaXMuaGlkZShldmVudCwgdHJ1ZSkgOiB0aGlzLnNob3coZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BsYXlzIHRoZSBwb3B1cCBtZW51LlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW4gLSBCcm93c2VyIGV2ZW50LlxuICAgICAqIEBncm91cCBNZXRob2RcbiAgICAgKi9cbiAgICBzaG93KGV2ZW50OiBhbnksIGlzRm9jdXM/KSB7XG4gICAgICAgIGlmICh0aGlzLnBvcHVwKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQgPSB0aGlzLnRhcmdldCB8fCBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdGhpcy5yZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldCB8fCBudWxsO1xuICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZUFsaWduID0gZXZlbnQ/LnJlbGF0aXZlQWxpZ24gfHwgbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IGluZGV4OiAtMSwgbGV2ZWw6IDAsIHBhcmVudEtleTogJycgfSk7XG5cbiAgICAgICAgaXNGb2N1cyAmJiBEb21IYW5kbGVyLmZvY3VzKHRoaXMucm9vdG1lbnUuc3VibGlzdFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHNlYXJjaEl0ZW1zKGV2ZW50OiBhbnksIGNoYXI6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gKHRoaXMuc2VhcmNoVmFsdWUgfHwgJycpICsgY2hhcjtcblxuICAgICAgICBsZXQgaXRlbUluZGV4ID0gLTE7XG4gICAgICAgIGxldCBtYXRjaGVkID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBpdGVtSW5kZXggPSB0aGlzLnZpc2libGVJdGVtcy5zbGljZSh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4KS5maW5kSW5kZXgoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNJdGVtTWF0Y2hlZChwcm9jZXNzZWRJdGVtKSk7XG4gICAgICAgICAgICBpdGVtSW5kZXggPSBpdGVtSW5kZXggPT09IC0xID8gdGhpcy52aXNpYmxlSXRlbXMuc2xpY2UoMCwgdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleCkuZmluZEluZGV4KChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzSXRlbU1hdGNoZWQocHJvY2Vzc2VkSXRlbSkpIDogaXRlbUluZGV4ICsgdGhpcy5mb2N1c2VkSXRlbUluZm8oKS5pbmRleDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW1JbmRleCA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbmRJbmRleCgocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc0l0ZW1NYXRjaGVkKHByb2Nlc3NlZEl0ZW0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBtYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtSW5kZXggPT09IC0xICYmIHRoaXMuZm9jdXNlZEl0ZW1JbmZvKCkuaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBpdGVtSW5kZXggPSB0aGlzLmZpbmRGaXJzdEZvY3VzZWRJdGVtSW5kZXgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRJdGVtSW5kZXgoZXZlbnQsIGl0ZW1JbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfSwgNTAwKTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZDtcbiAgICB9XG5cbiAgICBmaW5kTGFzdEZvY3VzZWRJdGVtSW5kZXgoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLmZpbmRTZWxlY3RlZEl0ZW1JbmRleCgpO1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleCA8IDAgPyB0aGlzLmZpbmRMYXN0SXRlbUluZGV4KCkgOiBzZWxlY3RlZEluZGV4O1xuICAgIH1cblxuICAgIGZpbmRMYXN0SXRlbUluZGV4KCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuZmluZExhc3RJbmRleCh0aGlzLnZpc2libGVJdGVtcywgKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNWYWxpZEl0ZW0ocHJvY2Vzc2VkSXRlbSkpO1xuICAgIH1cblxuICAgIGZpbmRQcmV2SXRlbUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZEl0ZW1JbmRleCA9IGluZGV4ID4gMCA/IE9iamVjdFV0aWxzLmZpbmRMYXN0SW5kZXgodGhpcy52aXNpYmxlSXRlbXMuc2xpY2UoMCwgaW5kZXgpLCAocHJvY2Vzc2VkSXRlbSkgPT4gdGhpcy5pc1ZhbGlkSXRlbShwcm9jZXNzZWRJdGVtKSkgOiAtMTtcblxuICAgICAgICByZXR1cm4gbWF0Y2hlZEl0ZW1JbmRleCA+IC0xID8gbWF0Y2hlZEl0ZW1JbmRleCA6IGluZGV4O1xuICAgIH1cblxuICAgIGZpbmROZXh0SXRlbUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZEl0ZW1JbmRleCA9IGluZGV4IDwgdGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoIC0gMSA/IHRoaXMudmlzaWJsZUl0ZW1zLnNsaWNlKGluZGV4ICsgMSkuZmluZEluZGV4KChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW0pKSA6IC0xO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkSXRlbUluZGV4ID4gLTEgPyBtYXRjaGVkSXRlbUluZGV4ICsgaW5kZXggKyAxIDogaW5kZXg7XG4gICAgfVxuXG4gICAgZmluZEZpcnN0Rm9jdXNlZEl0ZW1JbmRleCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuZmluZFNlbGVjdGVkSXRlbUluZGV4KCk7XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXggPCAwID8gdGhpcy5maW5kRmlyc3RJdGVtSW5kZXgoKSA6IHNlbGVjdGVkSW5kZXg7XG4gICAgfVxuXG4gICAgZmluZEZpcnN0SXRlbUluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlSXRlbXMuZmluZEluZGV4KChwcm9jZXNzZWRJdGVtKSA9PiB0aGlzLmlzVmFsaWRJdGVtKHByb2Nlc3NlZEl0ZW0pKTtcbiAgICB9XG5cbiAgICBmaW5kU2VsZWN0ZWRJdGVtSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVJdGVtcy5maW5kSW5kZXgoKHByb2Nlc3NlZEl0ZW0pID0+IHRoaXMuaXNWYWxpZFNlbGVjdGVkSXRlbShwcm9jZXNzZWRJdGVtKSk7XG4gICAgfVxuXG4gICAgY2hhbmdlRm9jdXNlZEl0ZW1JbmRleChldmVudDogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRJdGVtSW5mbygpLmluZGV4ICE9PSBpbmRleCkge1xuICAgICAgICAgICAgY29uc3QgZm9jdXNlZEl0ZW1JbmZvID0gdGhpcy5mb2N1c2VkSXRlbUluZm8oKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEl0ZW1JbmZvLnNldCh7IC4uLmZvY3VzZWRJdGVtSW5mbywgaXRlbTogdGhpcy52aXNpYmxlSXRlbXNbaW5kZXhdLml0ZW0sIGluZGV4IH0pO1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxJblZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNjcm9sbEluVmlldyhpbmRleDogbnVtYmVyID0gLTEpIHtcbiAgICAgICAgY29uc3QgaWQgPSBpbmRleCAhPT0gLTEgPyBgJHt0aGlzLmlkfV8ke2luZGV4fWAgOiB0aGlzLmZvY3VzZWRJdGVtSWQ7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5yb290bWVudS5lbC5uYXRpdmVFbGVtZW50LCBgbGlbaWQ9XCIke2lkfVwiXWApO1xuXG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3ICYmIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnLCBpbmxpbmU6ICduZWFyZXN0JyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG5ldyBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlcih0aGlzLnRhcmdldCwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHVuYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kUmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldywgJ3Jlc2l6ZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIURvbUhhbmRsZXIuaXNUb3VjaERldmljZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudCwgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzT3V0c2lkZUNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyVmlld0NoaWxkICYmICF0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzT3V0c2lkZVRhcmdldCA9IHRoaXMucG9wdXAgPyAhKHRoaXMudGFyZ2V0ICYmICh0aGlzLnRhcmdldCA9PT0gZXZlbnQudGFyZ2V0IHx8IHRoaXMudGFyZ2V0LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpKSA6IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc091dHNpZGVDb250YWluZXIgJiYgaXNPdXRzaWRlVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5SGlkZSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmRPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcblxuICAgICAgICBpZiAoISh0aGlzLmNkIGFzIFZpZXdSZWYpLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnBvcHVwKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5jb250YWluZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlc3RvcmVPdmVybGF5QXBwZW5kKCk7XG4gICAgICAgICAgICB0aGlzLm9uT3ZlcmxheUhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==