@sbb-esta/lyne-elements 1.12.1 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (936) hide show
  1. package/accordion/accordion.d.ts +4 -8
  2. package/accordion/accordion.d.ts.map +1 -1
  3. package/accordion.js +90 -81
  4. package/action-group/action-group.d.ts +5 -5
  5. package/action-group/action-group.d.ts.map +1 -1
  6. package/action-group.js +100 -50
  7. package/alert/alert/alert.d.ts +11 -11
  8. package/alert/alert/alert.d.ts.map +1 -1
  9. package/alert/alert-group/alert-group.d.ts +4 -4
  10. package/alert/alert-group/alert-group.d.ts.map +1 -1
  11. package/alert/alert-group.js +101 -69
  12. package/alert/alert.js +191 -104
  13. package/autocomplete/autocomplete-base-element.d.ts +3 -7
  14. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  15. package/autocomplete/autocomplete.d.ts.map +1 -1
  16. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  17. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +1 -0
  18. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -1
  19. package/autocomplete-grid/autocomplete-grid-button.js +53 -60
  20. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts.map +1 -1
  21. package/autocomplete-grid/autocomplete-grid-cell.js +20 -22
  22. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts.map +1 -1
  23. package/autocomplete-grid/autocomplete-grid-optgroup.js +31 -35
  24. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -1
  25. package/autocomplete-grid/autocomplete-grid-option.js +45 -63
  26. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts.map +1 -1
  27. package/autocomplete-grid/autocomplete-grid-row.js +23 -25
  28. package/autocomplete-grid/autocomplete-grid.js +112 -133
  29. package/autocomplete.js +283 -295
  30. package/breadcrumb/breadcrumb/breadcrumb.d.ts +1 -1
  31. package/breadcrumb/breadcrumb/breadcrumb.d.ts.map +1 -1
  32. package/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  33. package/breadcrumb/breadcrumb-group.js +107 -114
  34. package/breadcrumb/breadcrumb.js +44 -35
  35. package/button/button/button.d.ts.map +1 -1
  36. package/button/button-link/button-link.d.ts.map +1 -1
  37. package/button/button-link.js +15 -18
  38. package/button/button-static/button-static.d.ts.map +1 -1
  39. package/button/button-static.js +15 -18
  40. package/button/button.js +15 -18
  41. package/button/common/button-common.d.ts +4 -4
  42. package/button/common/button-common.d.ts.map +1 -1
  43. package/button/common.js +41 -30
  44. package/button/mini-button/mini-button-base-element.d.ts.map +1 -1
  45. package/button/mini-button/mini-button.d.ts.map +1 -1
  46. package/button/mini-button-group/mini-button-group.d.ts +2 -2
  47. package/button/mini-button-group/mini-button-group.d.ts.map +1 -1
  48. package/button/mini-button-group.js +55 -43
  49. package/button/mini-button.js +28 -32
  50. package/button/secondary-button/secondary-button.d.ts.map +1 -1
  51. package/button/secondary-button-link/secondary-button-link.d.ts.map +1 -1
  52. package/button/secondary-button-link.js +15 -18
  53. package/button/secondary-button-static/secondary-button-static.d.ts.map +1 -1
  54. package/button/secondary-button-static.js +15 -18
  55. package/button/secondary-button.js +15 -18
  56. package/button/tertiary-button/tertiary-button.d.ts.map +1 -1
  57. package/button/tertiary-button-link/tertiary-button-link.d.ts.map +1 -1
  58. package/button/tertiary-button-link.js +15 -18
  59. package/button/tertiary-button-static/tertiary-button-static.d.ts.map +1 -1
  60. package/button/tertiary-button-static.js +15 -18
  61. package/button/tertiary-button.js +15 -18
  62. package/button/transparent-button/transparent-button.d.ts.map +1 -1
  63. package/button/transparent-button-link/transparent-button-link.d.ts.map +1 -1
  64. package/button/transparent-button-link.js +15 -18
  65. package/button/transparent-button-static/transparent-button-static.d.ts.map +1 -1
  66. package/button/transparent-button-static.js +15 -18
  67. package/button/transparent-button.js +15 -18
  68. package/calendar/calendar.d.ts +7 -7
  69. package/calendar/calendar.d.ts.map +1 -1
  70. package/calendar.js +638 -692
  71. package/card/card/card.d.ts +2 -2
  72. package/card/card/card.d.ts.map +1 -1
  73. package/card/card-badge/card-badge.d.ts +1 -1
  74. package/card/card-badge/card-badge.d.ts.map +1 -1
  75. package/card/card-badge.js +45 -34
  76. package/card/card-button/card-button.d.ts.map +1 -1
  77. package/card/card-button.js +16 -16
  78. package/card/card-link/card-link.d.ts.map +1 -1
  79. package/card/card-link.js +17 -17
  80. package/card/card.js +55 -36
  81. package/card/common/card-action-common.d.ts +1 -1
  82. package/card/common/card-action-common.d.ts.map +1 -1
  83. package/card/common.js +27 -33
  84. package/checkbox/checkbox/checkbox.d.ts +3 -4
  85. package/checkbox/checkbox/checkbox.d.ts.map +1 -1
  86. package/checkbox/checkbox-group/checkbox-group.d.ts +4 -4
  87. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  88. package/checkbox/checkbox-group.js +99 -76
  89. package/checkbox/checkbox-panel/checkbox-panel.d.ts +2 -3
  90. package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  91. package/checkbox/checkbox-panel.js +51 -50
  92. package/checkbox/checkbox.js +54 -43
  93. package/checkbox/common/checkbox-common.d.ts +1 -1
  94. package/checkbox/common/checkbox-common.d.ts.map +1 -1
  95. package/checkbox/common.js +39 -24
  96. package/chip/chip.d.ts +2 -2
  97. package/chip/chip.d.ts.map +1 -1
  98. package/chip.js +45 -26
  99. package/clock/clock.d.ts +1 -1
  100. package/clock/clock.d.ts.map +1 -1
  101. package/clock.js +136 -144
  102. package/container/container/container.d.ts +3 -3
  103. package/container/container/container.d.ts.map +1 -1
  104. package/container/container.js +60 -35
  105. package/container/sticky-bar/sticky-bar.d.ts +1 -1
  106. package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  107. package/container/sticky-bar.js +55 -47
  108. package/core/a11y.js +29 -51
  109. package/core/base-elements/action-base-element.d.ts.map +1 -1
  110. package/core/base-elements/button-base-element.d.ts +2 -2
  111. package/core/base-elements/button-base-element.d.ts.map +1 -1
  112. package/core/base-elements/link-base-element.d.ts +5 -5
  113. package/core/base-elements/link-base-element.d.ts.map +1 -1
  114. package/core/base-elements.js +243 -196
  115. package/core/controllers.js +8 -13
  116. package/core/decorators/base.d.ts +14 -0
  117. package/core/decorators/base.d.ts.map +1 -0
  118. package/core/decorators/force-type.d.ts +8 -0
  119. package/core/decorators/force-type.d.ts.map +1 -0
  120. package/core/decorators/get-override.d.ts +7 -0
  121. package/core/decorators/get-override.d.ts.map +1 -0
  122. package/core/decorators/handle-distinct-change.d.ts +8 -0
  123. package/core/decorators/handle-distinct-change.d.ts.map +1 -0
  124. package/core/decorators/omit-empty-converter.d.ts +8 -0
  125. package/core/decorators/omit-empty-converter.d.ts.map +1 -0
  126. package/core/decorators.d.ts +4 -0
  127. package/core/decorators.d.ts.map +1 -1
  128. package/core/decorators.js +59 -15
  129. package/core/dom.js +1 -5
  130. package/core/eventing.js +1 -4
  131. package/core/interfaces/paginator-page.d.ts +7 -0
  132. package/core/interfaces/paginator-page.d.ts.map +1 -0
  133. package/core/interfaces.d.ts +1 -0
  134. package/core/interfaces.d.ts.map +1 -1
  135. package/core/mixins/disabled-mixin.d.ts +2 -3
  136. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  137. package/core/mixins/form-associated-checkbox-mixin.d.ts +1 -0
  138. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  139. package/core/mixins/form-associated-mixin.d.ts +6 -6
  140. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  141. package/core/mixins/named-slot-list-mixin.d.ts +1 -1
  142. package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  143. package/core/mixins/negative-mixin.d.ts +1 -1
  144. package/core/mixins/negative-mixin.d.ts.map +1 -1
  145. package/core/mixins/panel-mixin.d.ts +3 -3
  146. package/core/mixins/panel-mixin.d.ts.map +1 -1
  147. package/core/mixins/required-mixin.d.ts +2 -3
  148. package/core/mixins/required-mixin.d.ts.map +1 -1
  149. package/core/mixins.js +291 -242
  150. package/core/styles/mixins/buttons.scss +1 -1
  151. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss +4 -0
  152. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +5 -1
  153. package/core/testing/private.d.ts +1 -0
  154. package/core/testing/private.d.ts.map +1 -1
  155. package/core/testing.js +7 -13
  156. package/core.css +5 -1
  157. package/custom-elements.json +14515 -13465
  158. package/datepicker/common/datepicker-button.d.ts +2 -2
  159. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  160. package/datepicker/common.js +110 -116
  161. package/datepicker/datepicker/datepicker.d.ts +6 -6
  162. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  163. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  164. package/datepicker/datepicker-next-day.js +24 -26
  165. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  166. package/datepicker/datepicker-previous-day.js +25 -27
  167. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +6 -6
  168. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  169. package/datepicker/datepicker-toggle.js +154 -136
  170. package/datepicker/datepicker.js +248 -213
  171. package/development/accordion/accordion.d.ts +4 -8
  172. package/development/accordion/accordion.d.ts.map +1 -1
  173. package/development/accordion.js +118 -93
  174. package/development/action-group/action-group.d.ts +5 -5
  175. package/development/action-group/action-group.d.ts.map +1 -1
  176. package/development/action-group.js +138 -64
  177. package/development/alert/alert/alert.d.ts +11 -11
  178. package/development/alert/alert/alert.d.ts.map +1 -1
  179. package/development/alert/alert-group/alert-group.d.ts +4 -4
  180. package/development/alert/alert-group/alert-group.d.ts.map +1 -1
  181. package/development/alert/alert-group.js +135 -79
  182. package/development/alert/alert.js +259 -109
  183. package/development/autocomplete/autocomplete-base-element.d.ts +3 -7
  184. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  185. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  186. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  187. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +1 -0
  188. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -1
  189. package/development/autocomplete-grid/autocomplete-grid-button.js +75 -76
  190. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts.map +1 -1
  191. package/development/autocomplete-grid/autocomplete-grid-cell.js +24 -24
  192. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts.map +1 -1
  193. package/development/autocomplete-grid/autocomplete-grid-optgroup.js +38 -39
  194. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -1
  195. package/development/autocomplete-grid/autocomplete-grid-option.js +57 -73
  196. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts.map +1 -1
  197. package/development/autocomplete-grid/autocomplete-grid-row.js +28 -28
  198. package/development/autocomplete-grid/autocomplete-grid.js +142 -160
  199. package/development/autocomplete.js +394 -393
  200. package/development/breadcrumb/breadcrumb/breadcrumb.d.ts +1 -1
  201. package/development/breadcrumb/breadcrumb/breadcrumb.d.ts.map +1 -1
  202. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  203. package/development/breadcrumb/breadcrumb-group.js +130 -130
  204. package/development/breadcrumb/breadcrumb.js +53 -36
  205. package/development/button/button/button.d.ts.map +1 -1
  206. package/development/button/button-link/button-link.d.ts.map +1 -1
  207. package/development/button/button-link.js +18 -19
  208. package/development/button/button-static/button-static.d.ts.map +1 -1
  209. package/development/button/button-static.js +18 -19
  210. package/development/button/button.js +18 -19
  211. package/development/button/common/button-common.d.ts +4 -4
  212. package/development/button/common/button-common.d.ts.map +1 -1
  213. package/development/button/common.js +51 -30
  214. package/development/button/mini-button/mini-button-base-element.d.ts.map +1 -1
  215. package/development/button/mini-button/mini-button.d.ts.map +1 -1
  216. package/development/button/mini-button-group/mini-button-group.d.ts +2 -2
  217. package/development/button/mini-button-group/mini-button-group.d.ts.map +1 -1
  218. package/development/button/mini-button-group.js +77 -50
  219. package/development/button/mini-button.js +39 -38
  220. package/development/button/secondary-button/secondary-button.d.ts.map +1 -1
  221. package/development/button/secondary-button-link/secondary-button-link.d.ts.map +1 -1
  222. package/development/button/secondary-button-link.js +18 -19
  223. package/development/button/secondary-button-static/secondary-button-static.d.ts.map +1 -1
  224. package/development/button/secondary-button-static.js +18 -19
  225. package/development/button/secondary-button.js +18 -19
  226. package/development/button/tertiary-button/tertiary-button.d.ts.map +1 -1
  227. package/development/button/tertiary-button-link/tertiary-button-link.d.ts.map +1 -1
  228. package/development/button/tertiary-button-link.js +18 -19
  229. package/development/button/tertiary-button-static/tertiary-button-static.d.ts.map +1 -1
  230. package/development/button/tertiary-button-static.js +18 -19
  231. package/development/button/tertiary-button.js +18 -19
  232. package/development/button/transparent-button/transparent-button.d.ts.map +1 -1
  233. package/development/button/transparent-button-link/transparent-button-link.d.ts.map +1 -1
  234. package/development/button/transparent-button-link.js +18 -19
  235. package/development/button/transparent-button-static/transparent-button-static.d.ts.map +1 -1
  236. package/development/button/transparent-button-static.js +18 -19
  237. package/development/button/transparent-button.js +18 -19
  238. package/development/calendar/calendar.d.ts +7 -7
  239. package/development/calendar/calendar.d.ts.map +1 -1
  240. package/development/calendar.js +768 -766
  241. package/development/card/card/card.d.ts +2 -2
  242. package/development/card/card/card.d.ts.map +1 -1
  243. package/development/card/card-badge/card-badge.d.ts +1 -1
  244. package/development/card/card-badge/card-badge.d.ts.map +1 -1
  245. package/development/card/card-badge.js +65 -45
  246. package/development/card/card-button/card-button.d.ts.map +1 -1
  247. package/development/card/card-button.js +23 -20
  248. package/development/card/card-link/card-link.d.ts.map +1 -1
  249. package/development/card/card-link.js +23 -20
  250. package/development/card/card.js +72 -41
  251. package/development/card/common/card-action-common.d.ts +1 -1
  252. package/development/card/common/card-action-common.d.ts.map +1 -1
  253. package/development/card/common.js +74 -73
  254. package/development/checkbox/checkbox/checkbox.d.ts +3 -4
  255. package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
  256. package/development/checkbox/checkbox-group/checkbox-group.d.ts +4 -4
  257. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  258. package/development/checkbox/checkbox-group.js +139 -92
  259. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +2 -3
  260. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  261. package/development/checkbox/checkbox-panel.js +68 -60
  262. package/development/checkbox/checkbox.js +69 -46
  263. package/development/checkbox/common/checkbox-common.d.ts +1 -1
  264. package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
  265. package/development/checkbox/common.js +65 -46
  266. package/development/chip/chip.d.ts +2 -2
  267. package/development/chip/chip.d.ts.map +1 -1
  268. package/development/chip.js +64 -33
  269. package/development/clock/clock.d.ts +1 -1
  270. package/development/clock/clock.d.ts.map +1 -1
  271. package/development/clock.js +203 -201
  272. package/development/container/container/container.d.ts +3 -3
  273. package/development/container/container/container.d.ts.map +1 -1
  274. package/development/container/container.js +86 -45
  275. package/development/container/sticky-bar/sticky-bar.d.ts +1 -1
  276. package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  277. package/development/container/sticky-bar.js +76 -58
  278. package/development/core/a11y.js +40 -62
  279. package/development/core/base-elements/action-base-element.d.ts.map +1 -1
  280. package/development/core/base-elements/button-base-element.d.ts +2 -2
  281. package/development/core/base-elements/button-base-element.d.ts.map +1 -1
  282. package/development/core/base-elements/link-base-element.d.ts +5 -5
  283. package/development/core/base-elements/link-base-element.d.ts.map +1 -1
  284. package/development/core/base-elements.js +329 -226
  285. package/development/core/config.js +1 -1
  286. package/development/core/controllers.js +13 -21
  287. package/development/core/datetime.js +1 -1
  288. package/development/core/decorators/base.d.ts +14 -0
  289. package/development/core/decorators/base.d.ts.map +1 -0
  290. package/development/core/decorators/force-type.d.ts +8 -0
  291. package/development/core/decorators/force-type.d.ts.map +1 -0
  292. package/development/core/decorators/get-override.d.ts +7 -0
  293. package/development/core/decorators/get-override.d.ts.map +1 -0
  294. package/development/core/decorators/handle-distinct-change.d.ts +8 -0
  295. package/development/core/decorators/handle-distinct-change.d.ts.map +1 -0
  296. package/development/core/decorators/omit-empty-converter.d.ts +8 -0
  297. package/development/core/decorators/omit-empty-converter.d.ts.map +1 -0
  298. package/development/core/decorators.d.ts +4 -0
  299. package/development/core/decorators.d.ts.map +1 -1
  300. package/development/core/decorators.js +69 -5
  301. package/development/core/dom.js +2 -6
  302. package/development/core/eventing.js +2 -5
  303. package/development/core/i18n.js +1 -1
  304. package/development/core/interfaces/paginator-page.d.ts +7 -0
  305. package/development/core/interfaces/paginator-page.d.ts.map +1 -0
  306. package/development/core/interfaces.d.ts +1 -0
  307. package/development/core/interfaces.d.ts.map +1 -1
  308. package/development/core/mixins/disabled-mixin.d.ts +2 -3
  309. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  310. package/development/core/mixins/form-associated-checkbox-mixin.d.ts +1 -0
  311. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  312. package/development/core/mixins/form-associated-mixin.d.ts +6 -6
  313. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  314. package/development/core/mixins/named-slot-list-mixin.d.ts +1 -1
  315. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  316. package/development/core/mixins/negative-mixin.d.ts +1 -1
  317. package/development/core/mixins/negative-mixin.d.ts.map +1 -1
  318. package/development/core/mixins/panel-mixin.d.ts +3 -3
  319. package/development/core/mixins/panel-mixin.d.ts.map +1 -1
  320. package/development/core/mixins/required-mixin.d.ts +2 -3
  321. package/development/core/mixins/required-mixin.d.ts.map +1 -1
  322. package/development/core/mixins.js +573 -478
  323. package/development/core/observers.js +1 -1
  324. package/development/core/overlay.js +1 -1
  325. package/development/core/testing/private.d.ts +1 -0
  326. package/development/core/testing/private.d.ts.map +1 -1
  327. package/development/core/testing.js +16 -22
  328. package/development/datepicker/common/datepicker-button.d.ts +2 -2
  329. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  330. package/development/datepicker/common.js +144 -142
  331. package/development/datepicker/datepicker/datepicker.d.ts +6 -6
  332. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  333. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  334. package/development/datepicker/datepicker-next-day.js +33 -33
  335. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  336. package/development/datepicker/datepicker-previous-day.js +33 -33
  337. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +6 -6
  338. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  339. package/development/datepicker/datepicker-toggle.js +227 -174
  340. package/development/datepicker/datepicker.js +327 -249
  341. package/development/dialog/dialog/dialog.d.ts +1 -1
  342. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  343. package/development/dialog/dialog-actions/dialog-actions.d.ts.map +1 -1
  344. package/development/dialog/dialog-actions.js +21 -20
  345. package/development/dialog/dialog-content/dialog-content.d.ts.map +1 -1
  346. package/development/dialog/dialog-content.js +22 -21
  347. package/development/dialog/dialog-title/dialog-title.d.ts +3 -3
  348. package/development/dialog/dialog-title/dialog-title.d.ts.map +1 -1
  349. package/development/dialog/dialog-title.js +121 -66
  350. package/development/dialog/dialog.js +205 -191
  351. package/development/divider/divider.d.ts +1 -1
  352. package/development/divider/divider.d.ts.map +1 -1
  353. package/development/divider.js +55 -36
  354. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +4 -4
  355. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  356. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts.map +1 -1
  357. package/development/expansion-panel/expansion-panel-content.js +25 -25
  358. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
  359. package/development/expansion-panel/expansion-panel-header.js +56 -63
  360. package/development/expansion-panel/expansion-panel.js +227 -182
  361. package/development/file-selector/file-selector.d.ts +26 -15
  362. package/development/file-selector/file-selector.d.ts.map +1 -1
  363. package/development/file-selector.js +305 -172
  364. package/development/flip-card/flip-card/flip-card.d.ts +2 -2
  365. package/development/flip-card/flip-card/flip-card.d.ts.map +1 -1
  366. package/development/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  367. package/development/flip-card/flip-card-details.js +39 -39
  368. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts +1 -1
  369. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -1
  370. package/development/flip-card/flip-card-summary.js +57 -38
  371. package/development/flip-card/flip-card.js +110 -78
  372. package/development/footer/footer.d.ts +4 -4
  373. package/development/footer/footer.d.ts.map +1 -1
  374. package/development/footer.js +103 -41
  375. package/development/form-error/form-error.d.ts.map +1 -1
  376. package/development/form-error.js +29 -28
  377. package/development/form-field/form-field/form-field.d.ts +10 -10
  378. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  379. package/development/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  380. package/development/form-field/form-field-clear.js +51 -51
  381. package/development/form-field/form-field.js +439 -328
  382. package/development/header/common/header-action-common.d.ts +2 -2
  383. package/development/header/common/header-action-common.d.ts.map +1 -1
  384. package/development/header/common.js +95 -28
  385. package/development/header/header/header.d.ts +4 -4
  386. package/development/header/header/header.d.ts.map +1 -1
  387. package/development/header/header-button/header-button.d.ts.map +1 -1
  388. package/development/header/header-button.js +19 -18
  389. package/development/header/header-link/header-link.d.ts.map +1 -1
  390. package/development/header/header-link.js +19 -16
  391. package/development/header/header.js +198 -140
  392. package/development/icon/icon-base.d.ts +3 -4
  393. package/development/icon/icon-base.d.ts.map +1 -1
  394. package/development/icon/icon-name-mixin.d.ts +1 -1
  395. package/development/icon/icon-name-mixin.d.ts.map +1 -1
  396. package/development/icon/icon.d.ts +2 -2
  397. package/development/icon/icon.d.ts.map +1 -1
  398. package/development/icon.js +258 -157
  399. package/development/image/image.d.ts +17 -17
  400. package/development/image/image.d.ts.map +1 -1
  401. package/development/image.js +584 -216
  402. package/development/journey-header/journey-header.d.ts +5 -5
  403. package/development/journey-header/journey-header.d.ts.map +1 -1
  404. package/development/journey-header.js +115 -43
  405. package/development/lead-container/lead-container.d.ts.map +1 -1
  406. package/development/lead-container.js +22 -21
  407. package/development/link/block-link/block-link.d.ts.map +1 -1
  408. package/development/link/block-link-button/block-link-button.d.ts.map +1 -1
  409. package/development/link/block-link-button.js +19 -18
  410. package/development/link/block-link-static/block-link-static.d.ts.map +1 -1
  411. package/development/link/block-link-static.js +19 -18
  412. package/development/link/block-link.js +19 -18
  413. package/development/link/common/block-link-common.d.ts +4 -3
  414. package/development/link/common/block-link-common.d.ts.map +1 -1
  415. package/development/link/common/link-common.d.ts +1 -1
  416. package/development/link/common/link-common.d.ts.map +1 -1
  417. package/development/link/common.js +81 -51
  418. package/development/link/link/link.d.ts.map +1 -1
  419. package/development/link/link-button/link-button.d.ts.map +1 -1
  420. package/development/link/link-button.js +19 -18
  421. package/development/link/link-static/link-static.d.ts.map +1 -1
  422. package/development/link/link-static.js +19 -18
  423. package/development/link/link.js +19 -18
  424. package/development/link-list/common/link-list-base.d.ts +3 -3
  425. package/development/link-list/common/link-list-base.d.ts.map +1 -1
  426. package/development/link-list/common.js +97 -48
  427. package/development/link-list/link-list/link-list.d.ts +2 -2
  428. package/development/link-list/link-list/link-list.d.ts.map +1 -1
  429. package/development/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -1
  430. package/development/link-list/link-list-anchor.js +18 -17
  431. package/development/link-list/link-list.js +60 -28
  432. package/development/loading-indicator/loading-indicator.d.ts +3 -3
  433. package/development/loading-indicator/loading-indicator.d.ts.map +1 -1
  434. package/development/loading-indicator.js +83 -45
  435. package/development/logo/logo.d.ts +2 -2
  436. package/development/logo/logo.d.ts.map +1 -1
  437. package/development/logo.js +64 -32
  438. package/development/map-container/map-container.d.ts +2 -2
  439. package/development/map-container/map-container.d.ts.map +1 -1
  440. package/development/map-container.js +107 -75
  441. package/development/menu/common/menu-action-common.d.ts +2 -2
  442. package/development/menu/common/menu-action-common.d.ts.map +1 -1
  443. package/development/menu/common.js +41 -20
  444. package/development/menu/menu/menu.d.ts +1 -1
  445. package/development/menu/menu/menu.d.ts.map +1 -1
  446. package/development/menu/menu-button/menu-button.d.ts.map +1 -1
  447. package/development/menu/menu-button.js +19 -18
  448. package/development/menu/menu-link/menu-link.d.ts.map +1 -1
  449. package/development/menu/menu-link.js +19 -18
  450. package/development/menu/menu.js +261 -241
  451. package/development/message/message.d.ts +2 -2
  452. package/development/message/message.d.ts.map +1 -1
  453. package/development/message.js +65 -32
  454. package/development/navigation/common/navigation-action-common.d.ts +1 -1
  455. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  456. package/development/navigation/common.js +63 -52
  457. package/development/navigation/navigation/navigation.d.ts +2 -2
  458. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  459. package/development/navigation/navigation-button/navigation-button.d.ts.map +1 -1
  460. package/development/navigation/navigation-button.js +19 -18
  461. package/development/navigation/navigation-link/navigation-link.d.ts.map +1 -1
  462. package/development/navigation/navigation-link.js +19 -18
  463. package/development/navigation/navigation-list/navigation-list.d.ts +1 -1
  464. package/development/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  465. package/development/navigation/navigation-list.js +64 -41
  466. package/development/navigation/navigation-marker/navigation-marker.d.ts +1 -1
  467. package/development/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  468. package/development/navigation/navigation-marker.js +108 -91
  469. package/development/navigation/navigation-section/navigation-section.d.ts +3 -3
  470. package/development/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  471. package/development/navigation/navigation-section.js +282 -236
  472. package/development/navigation/navigation.js +278 -254
  473. package/development/notification/notification.d.ts +6 -6
  474. package/development/notification/notification.d.ts.map +1 -1
  475. package/development/notification.js +212 -146
  476. package/development/option/optgroup/optgroup-base-element.d.ts +3 -3
  477. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  478. package/development/option/optgroup/optgroup.d.ts.map +1 -1
  479. package/development/option/optgroup.js +187 -142
  480. package/development/option/option/option-base-element.d.ts +7 -7
  481. package/development/option/option/option-base-element.d.ts.map +1 -1
  482. package/development/option/option/option.d.ts.map +1 -1
  483. package/development/option/option.js +392 -296
  484. package/development/overlay/overlay-base-element.d.ts +1 -1
  485. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  486. package/development/overlay/overlay.d.ts +4 -4
  487. package/development/overlay/overlay.d.ts.map +1 -1
  488. package/development/overlay.js +260 -207
  489. package/development/paginator/common/paginator-common.d.ts +26 -0
  490. package/development/paginator/common/paginator-common.d.ts.map +1 -0
  491. package/development/paginator/common.d.ts +2 -0
  492. package/development/paginator/common.d.ts.map +1 -0
  493. package/development/paginator/common.js +189 -0
  494. package/development/paginator/compact-paginator/compact-paginator.d.ts +20 -0
  495. package/development/paginator/compact-paginator/compact-paginator.d.ts.map +1 -0
  496. package/development/paginator/compact-paginator.d.ts +2 -0
  497. package/development/paginator/compact-paginator.d.ts.map +1 -0
  498. package/development/paginator/compact-paginator.js +96 -0
  499. package/development/paginator/paginator/paginator.d.ts +51 -0
  500. package/development/paginator/paginator/paginator.d.ts.map +1 -0
  501. package/development/paginator/paginator.d.ts +1 -90
  502. package/development/paginator/paginator.d.ts.map +1 -1
  503. package/development/paginator/paginator.js +449 -0
  504. package/development/paginator.d.ts +2 -0
  505. package/development/paginator.d.ts.map +1 -1
  506. package/development/paginator.js +4 -519
  507. package/development/popover/popover/popover.d.ts +6 -7
  508. package/development/popover/popover/popover.d.ts.map +1 -1
  509. package/development/popover/popover-trigger/popover-trigger.d.ts.map +1 -1
  510. package/development/popover/popover-trigger.js +29 -30
  511. package/development/popover/popover.js +358 -303
  512. package/development/radio-button/common/radio-button-common.d.ts +1 -1
  513. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  514. package/development/radio-button/common.js +170 -127
  515. package/development/radio-button/radio-button/radio-button.d.ts +2 -6
  516. package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
  517. package/development/radio-button/radio-button-group/radio-button-group.d.ts +6 -6
  518. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  519. package/development/radio-button/radio-button-group.js +269 -199
  520. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +2 -6
  521. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  522. package/development/radio-button/radio-button-panel.js +60 -48
  523. package/development/radio-button/radio-button.js +54 -40
  524. package/development/screen-reader-only/screen-reader-only.d.ts.map +1 -1
  525. package/development/screen-reader-only.js +22 -21
  526. package/development/select/select.d.ts +17 -9
  527. package/development/select/select.d.ts.map +1 -1
  528. package/development/select.js +557 -524
  529. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +3 -3
  530. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  531. package/development/selection-expansion-panel.js +223 -193
  532. package/development/signet/signet.d.ts +2 -2
  533. package/development/signet/signet.d.ts.map +1 -1
  534. package/development/signet.js +65 -33
  535. package/development/skiplink-list/skiplink-list.d.ts +2 -2
  536. package/development/skiplink-list/skiplink-list.d.ts.map +1 -1
  537. package/development/skiplink-list.js +74 -41
  538. package/development/slider/slider.d.ts +7 -5
  539. package/development/slider/slider.d.ts.map +1 -1
  540. package/development/slider.js +260 -181
  541. package/development/status/status.d.ts +3 -3
  542. package/development/status/status.d.ts.map +1 -1
  543. package/development/status.js +96 -51
  544. package/development/stepper/step/step.d.ts.map +1 -1
  545. package/development/stepper/step-label/step-label.d.ts.map +1 -1
  546. package/development/stepper/step-label.js +86 -90
  547. package/development/stepper/step.js +122 -126
  548. package/development/stepper/stepper/stepper.d.ts +3 -3
  549. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  550. package/development/stepper/stepper.js +291 -241
  551. package/development/table/table-wrapper/table-wrapper.d.ts.map +1 -1
  552. package/development/table/table-wrapper.js +37 -39
  553. package/development/tabs/tab/tab.d.ts.map +1 -1
  554. package/development/tabs/tab-group/tab-group.d.ts +2 -2
  555. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  556. package/development/tabs/tab-group.js +296 -279
  557. package/development/tabs/tab-label/tab-label.d.ts +3 -3
  558. package/development/tabs/tab-label/tab-label.d.ts.map +1 -1
  559. package/development/tabs/tab-label.js +83 -37
  560. package/development/tabs/tab.js +40 -39
  561. package/development/tag/tag/tag.d.ts +3 -5
  562. package/development/tag/tag/tag.d.ts.map +1 -1
  563. package/development/tag/tag-group/tag-group.d.ts +3 -3
  564. package/development/tag/tag-group/tag-group.d.ts.map +1 -1
  565. package/development/tag/tag-group.js +143 -88
  566. package/development/tag/tag.js +126 -89
  567. package/development/teaser/teaser.d.ts +4 -4
  568. package/development/teaser/teaser.d.ts.map +1 -1
  569. package/development/teaser-hero/teaser-hero.d.ts +3 -3
  570. package/development/teaser-hero/teaser-hero.d.ts.map +1 -1
  571. package/development/teaser-hero.js +83 -36
  572. package/development/teaser-product/common/teaser-product-common.d.ts +1 -1
  573. package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  574. package/development/teaser-product/common.js +51 -26
  575. package/development/teaser-product/teaser-product/teaser-product.d.ts.map +1 -1
  576. package/development/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -1
  577. package/development/teaser-product/teaser-product-static.js +18 -19
  578. package/development/teaser-product/teaser-product.js +18 -19
  579. package/development/teaser.js +94 -40
  580. package/development/time-input/time-input.d.ts +1 -1
  581. package/development/time-input/time-input.d.ts.map +1 -1
  582. package/development/time-input.js +225 -219
  583. package/development/timetable-occupancy/timetable-occupancy.d.ts +2 -2
  584. package/development/timetable-occupancy/timetable-occupancy.d.ts.map +1 -1
  585. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +1 -1
  586. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  587. package/development/timetable-occupancy-icon.js +78 -57
  588. package/development/timetable-occupancy.js +67 -35
  589. package/development/title/title-base.d.ts +3 -3
  590. package/development/title/title-base.d.ts.map +1 -1
  591. package/development/title/title.d.ts.map +1 -1
  592. package/development/title.js +106 -58
  593. package/development/toast/toast.d.ts +4 -4
  594. package/development/toast/toast.d.ts.map +1 -1
  595. package/development/toast.js +204 -146
  596. package/development/toggle/toggle/toggle.d.ts +3 -5
  597. package/development/toggle/toggle/toggle.d.ts.map +1 -1
  598. package/development/toggle/toggle-option/toggle-option.d.ts +2 -2
  599. package/development/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  600. package/development/toggle/toggle-option.js +127 -93
  601. package/development/toggle/toggle.js +200 -163
  602. package/development/toggle-check/toggle-check.d.ts +4 -3
  603. package/development/toggle-check/toggle-check.d.ts.map +1 -1
  604. package/development/toggle-check.js +87 -49
  605. package/development/train/train/train.d.ts +5 -5
  606. package/development/train/train/train.d.ts.map +1 -1
  607. package/development/train/train-blocked-passage/train-blocked-passage.d.ts.map +1 -1
  608. package/development/train/train-blocked-passage.js +22 -21
  609. package/development/train/train-formation/train-formation.d.ts +2 -2
  610. package/development/train/train-formation/train-formation.d.ts.map +1 -1
  611. package/development/train/train-formation.js +113 -90
  612. package/development/train/train-wagon/train-wagon.d.ts +7 -9
  613. package/development/train/train-wagon/train-wagon.d.ts.map +1 -1
  614. package/development/train/train-wagon.js +166 -87
  615. package/development/train/train.js +142 -75
  616. package/development/visual-checkbox/visual-checkbox.d.ts +3 -3
  617. package/development/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  618. package/development/visual-checkbox.js +79 -36
  619. package/dialog/dialog/dialog.d.ts +1 -1
  620. package/dialog/dialog/dialog.d.ts.map +1 -1
  621. package/dialog/dialog-actions/dialog-actions.d.ts.map +1 -1
  622. package/dialog/dialog-actions.js +18 -19
  623. package/dialog/dialog-content/dialog-content.d.ts.map +1 -1
  624. package/dialog/dialog-content.js +17 -18
  625. package/dialog/dialog-title/dialog-title.d.ts +3 -3
  626. package/dialog/dialog-title/dialog-title.d.ts.map +1 -1
  627. package/dialog/dialog-title.js +98 -66
  628. package/dialog/dialog.js +120 -114
  629. package/divider/divider.d.ts +1 -1
  630. package/divider/divider.d.ts.map +1 -1
  631. package/divider.js +41 -30
  632. package/expansion-panel/expansion-panel/expansion-panel.d.ts +4 -4
  633. package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  634. package/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts.map +1 -1
  635. package/expansion-panel/expansion-panel-content.js +20 -22
  636. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
  637. package/expansion-panel/expansion-panel-header.js +53 -61
  638. package/expansion-panel/expansion-panel.js +145 -130
  639. package/file-selector/file-selector.d.ts +26 -15
  640. package/file-selector/file-selector.d.ts.map +1 -1
  641. package/file-selector.js +227 -153
  642. package/flip-card/flip-card/flip-card.d.ts +2 -2
  643. package/flip-card/flip-card/flip-card.d.ts.map +1 -1
  644. package/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  645. package/flip-card/flip-card-details.js +36 -38
  646. package/flip-card/flip-card-summary/flip-card-summary.d.ts +1 -1
  647. package/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -1
  648. package/flip-card/flip-card-summary.js +42 -31
  649. package/flip-card/flip-card.js +88 -69
  650. package/footer/footer.d.ts +4 -4
  651. package/footer/footer.d.ts.map +1 -1
  652. package/footer.js +78 -37
  653. package/form-error/form-error.d.ts.map +1 -1
  654. package/form-error.js +24 -25
  655. package/form-field/form-field/form-field.d.ts +10 -10
  656. package/form-field/form-field/form-field.d.ts.map +1 -1
  657. package/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  658. package/form-field/form-field-clear.js +39 -41
  659. package/form-field/form-field.js +295 -239
  660. package/header/common/header-action-common.d.ts +2 -2
  661. package/header/common/header-action-common.d.ts.map +1 -1
  662. package/header/common.js +36 -21
  663. package/header/header/header.d.ts +4 -4
  664. package/header/header/header.d.ts.map +1 -1
  665. package/header/header-button/header-button.d.ts.map +1 -1
  666. package/header/header-button.js +14 -16
  667. package/header/header-link/header-link.d.ts.map +1 -1
  668. package/header/header-link.js +14 -14
  669. package/header/header.js +138 -109
  670. package/icon/icon-base.d.ts +3 -4
  671. package/icon/icon-base.d.ts.map +1 -1
  672. package/icon/icon-name-mixin.d.ts +1 -1
  673. package/icon/icon-name-mixin.d.ts.map +1 -1
  674. package/icon/icon.d.ts +2 -2
  675. package/icon/icon.d.ts.map +1 -1
  676. package/icon.js +230 -165
  677. package/image/image.d.ts +17 -17
  678. package/image/image.d.ts.map +1 -1
  679. package/image.js +465 -195
  680. package/index.d.ts +3 -1
  681. package/index.js +3 -1
  682. package/journey-header/journey-header.d.ts +5 -5
  683. package/journey-header/journey-header.d.ts.map +1 -1
  684. package/journey-header.js +89 -49
  685. package/lead-container/lead-container.d.ts.map +1 -1
  686. package/lead-container.js +17 -18
  687. package/link/block-link/block-link.d.ts.map +1 -1
  688. package/link/block-link-button/block-link-button.d.ts.map +1 -1
  689. package/link/block-link-button.js +15 -17
  690. package/link/block-link-static/block-link-static.d.ts.map +1 -1
  691. package/link/block-link-static.js +14 -16
  692. package/link/block-link.js +15 -17
  693. package/link/common/block-link-common.d.ts +4 -3
  694. package/link/common/block-link-common.d.ts.map +1 -1
  695. package/link/common/link-common.d.ts +1 -1
  696. package/link/common/link-common.d.ts.map +1 -1
  697. package/link/common.js +64 -46
  698. package/link/link/link.d.ts.map +1 -1
  699. package/link/link-button/link-button.d.ts.map +1 -1
  700. package/link/link-button.js +15 -17
  701. package/link/link-static/link-static.d.ts.map +1 -1
  702. package/link/link-static.js +15 -17
  703. package/link/link.js +15 -17
  704. package/link-list/common/link-list-base.d.ts +3 -3
  705. package/link-list/common/link-list-base.d.ts.map +1 -1
  706. package/link-list/common.js +72 -44
  707. package/link-list/link-list/link-list.d.ts +2 -2
  708. package/link-list/link-list/link-list.d.ts.map +1 -1
  709. package/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -1
  710. package/link-list/link-list-anchor.js +15 -16
  711. package/link-list/link-list.js +43 -24
  712. package/loading-indicator/loading-indicator.d.ts +3 -3
  713. package/loading-indicator/loading-indicator.d.ts.map +1 -1
  714. package/loading-indicator.js +61 -36
  715. package/logo/logo.d.ts +2 -2
  716. package/logo/logo.d.ts.map +1 -1
  717. package/logo.js +47 -27
  718. package/map-container/map-container.d.ts +2 -2
  719. package/map-container/map-container.d.ts.map +1 -1
  720. package/map-container.js +84 -65
  721. package/menu/common/menu-action-common.d.ts +2 -2
  722. package/menu/common/menu-action-common.d.ts.map +1 -1
  723. package/menu/common.js +37 -22
  724. package/menu/menu/menu.d.ts +1 -1
  725. package/menu/menu/menu.d.ts.map +1 -1
  726. package/menu/menu-button/menu-button.d.ts.map +1 -1
  727. package/menu/menu-button.js +14 -16
  728. package/menu/menu-link/menu-link.d.ts.map +1 -1
  729. package/menu/menu-link.js +15 -17
  730. package/menu/menu.js +175 -170
  731. package/message/message.d.ts +2 -2
  732. package/message/message.d.ts.map +1 -1
  733. package/message.js +47 -27
  734. package/navigation/common/navigation-action-common.d.ts +1 -1
  735. package/navigation/common/navigation-action-common.d.ts.map +1 -1
  736. package/navigation/common.js +38 -33
  737. package/navigation/navigation/navigation.d.ts +2 -2
  738. package/navigation/navigation/navigation.d.ts.map +1 -1
  739. package/navigation/navigation-button/navigation-button.d.ts.map +1 -1
  740. package/navigation/navigation-button.js +14 -16
  741. package/navigation/navigation-link/navigation-link.d.ts.map +1 -1
  742. package/navigation/navigation-link.js +14 -16
  743. package/navigation/navigation-list/navigation-list.d.ts +1 -1
  744. package/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  745. package/navigation/navigation-list.js +48 -35
  746. package/navigation/navigation-marker/navigation-marker.d.ts +1 -1
  747. package/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  748. package/navigation/navigation-marker.js +77 -69
  749. package/navigation/navigation-section/navigation-section.d.ts +3 -3
  750. package/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  751. package/navigation/navigation-section.js +192 -171
  752. package/navigation/navigation.js +185 -181
  753. package/notification/notification.d.ts +6 -6
  754. package/notification/notification.d.ts.map +1 -1
  755. package/notification.js +147 -116
  756. package/option/optgroup/optgroup-base-element.d.ts +3 -3
  757. package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  758. package/option/optgroup/optgroup.d.ts.map +1 -1
  759. package/option/optgroup.js +131 -112
  760. package/option/option/option-base-element.d.ts +7 -7
  761. package/option/option/option-base-element.d.ts.map +1 -1
  762. package/option/option/option.d.ts.map +1 -1
  763. package/option/option.js +295 -252
  764. package/overlay/overlay-base-element.d.ts +1 -1
  765. package/overlay/overlay-base-element.d.ts.map +1 -1
  766. package/overlay/overlay.d.ts +4 -4
  767. package/overlay/overlay.d.ts.map +1 -1
  768. package/overlay.js +194 -165
  769. package/package.json +19 -3
  770. package/paginator/common/paginator-common.d.ts +26 -0
  771. package/paginator/common/paginator-common.d.ts.map +1 -0
  772. package/paginator/common.d.ts +2 -0
  773. package/paginator/common.d.ts.map +1 -0
  774. package/paginator/common.js +145 -0
  775. package/paginator/compact-paginator/compact-paginator.d.ts +20 -0
  776. package/paginator/compact-paginator/compact-paginator.d.ts.map +1 -0
  777. package/paginator/compact-paginator.d.ts +2 -0
  778. package/paginator/compact-paginator.d.ts.map +1 -0
  779. package/paginator/compact-paginator.js +40 -0
  780. package/paginator/paginator/paginator.d.ts +51 -0
  781. package/paginator/paginator/paginator.d.ts.map +1 -0
  782. package/paginator/paginator.d.ts +1 -90
  783. package/paginator/paginator.d.ts.map +1 -1
  784. package/paginator/paginator.js +171 -0
  785. package/paginator.d.ts +2 -0
  786. package/paginator.d.ts.map +1 -1
  787. package/paginator.js +3 -263
  788. package/popover/popover/popover.d.ts +6 -7
  789. package/popover/popover/popover.d.ts.map +1 -1
  790. package/popover/popover-trigger/popover-trigger.d.ts.map +1 -1
  791. package/popover/popover-trigger.js +26 -29
  792. package/popover/popover.js +230 -208
  793. package/radio-button/common/radio-button-common.d.ts +1 -1
  794. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  795. package/radio-button/common.js +67 -43
  796. package/radio-button/radio-button/radio-button.d.ts +2 -6
  797. package/radio-button/radio-button/radio-button.d.ts.map +1 -1
  798. package/radio-button/radio-button-group/radio-button-group.d.ts +6 -6
  799. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  800. package/radio-button/radio-button-group.js +192 -156
  801. package/radio-button/radio-button-panel/radio-button-panel.d.ts +2 -6
  802. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  803. package/radio-button/radio-button-panel.js +49 -45
  804. package/radio-button/radio-button.js +43 -37
  805. package/screen-reader-only/screen-reader-only.d.ts.map +1 -1
  806. package/screen-reader-only.js +17 -18
  807. package/select/select.d.ts +17 -9
  808. package/select/select.d.ts.map +1 -1
  809. package/select.js +377 -373
  810. package/selection-expansion-panel/selection-expansion-panel.d.ts +3 -3
  811. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  812. package/selection-expansion-panel.js +157 -148
  813. package/signet/signet.d.ts +2 -2
  814. package/signet/signet.d.ts.map +1 -1
  815. package/signet.js +48 -28
  816. package/skiplink-list/skiplink-list.d.ts +2 -2
  817. package/skiplink-list/skiplink-list.d.ts.map +1 -1
  818. package/skiplink-list.js +54 -36
  819. package/slider/slider.d.ts +7 -5
  820. package/slider/slider.d.ts.map +1 -1
  821. package/slider.js +197 -155
  822. package/standard-theme.css +5 -1
  823. package/status/status.d.ts +3 -3
  824. package/status/status.d.ts.map +1 -1
  825. package/status.js +71 -46
  826. package/stepper/step/step.d.ts.map +1 -1
  827. package/stepper/step-label/step-label.d.ts.map +1 -1
  828. package/stepper/step-label.js +69 -75
  829. package/stepper/step.js +99 -104
  830. package/stepper/stepper/stepper.d.ts +3 -3
  831. package/stepper/stepper/stepper.d.ts.map +1 -1
  832. package/stepper/stepper.js +208 -188
  833. package/table/table-wrapper/table-wrapper.d.ts.map +1 -1
  834. package/table/table-wrapper.js +32 -36
  835. package/tabs/tab/tab.d.ts.map +1 -1
  836. package/tabs/tab-group/tab-group.d.ts +2 -2
  837. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  838. package/tabs/tab-group.js +200 -193
  839. package/tabs/tab-label/tab-label.d.ts +3 -3
  840. package/tabs/tab-label/tab-label.d.ts.map +1 -1
  841. package/tabs/tab-label.js +65 -37
  842. package/tabs/tab.js +34 -35
  843. package/tag/tag/tag.d.ts +3 -5
  844. package/tag/tag/tag.d.ts.map +1 -1
  845. package/tag/tag-group/tag-group.d.ts +3 -3
  846. package/tag/tag-group/tag-group.d.ts.map +1 -1
  847. package/tag/tag-group.js +107 -75
  848. package/tag/tag.js +92 -73
  849. package/teaser/teaser.d.ts +4 -4
  850. package/teaser/teaser.d.ts.map +1 -1
  851. package/teaser-hero/teaser-hero.d.ts +3 -3
  852. package/teaser-hero/teaser-hero.d.ts.map +1 -1
  853. package/teaser-hero.js +66 -38
  854. package/teaser-product/common/teaser-product-common.d.ts +1 -1
  855. package/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  856. package/teaser-product/common.js +36 -21
  857. package/teaser-product/teaser-product/teaser-product.d.ts.map +1 -1
  858. package/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -1
  859. package/teaser-product/teaser-product-static.js +14 -17
  860. package/teaser-product/teaser-product.js +14 -17
  861. package/teaser.js +69 -37
  862. package/time-input/time-input.d.ts +1 -1
  863. package/time-input/time-input.d.ts.map +1 -1
  864. package/time-input.js +160 -166
  865. package/timetable-occupancy/timetable-occupancy.d.ts +2 -2
  866. package/timetable-occupancy/timetable-occupancy.d.ts.map +1 -1
  867. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +1 -1
  868. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  869. package/timetable-occupancy-icon.js +60 -48
  870. package/timetable-occupancy.js +55 -38
  871. package/title/title-base.d.ts +3 -3
  872. package/title/title-base.d.ts.map +1 -1
  873. package/title/title.d.ts.map +1 -1
  874. package/title.js +81 -53
  875. package/toast/toast.d.ts +4 -4
  876. package/toast/toast.d.ts.map +1 -1
  877. package/toast.js +156 -123
  878. package/toggle/toggle/toggle.d.ts +3 -5
  879. package/toggle/toggle/toggle.d.ts.map +1 -1
  880. package/toggle/toggle-option/toggle-option.d.ts +2 -2
  881. package/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  882. package/toggle/toggle-option.js +89 -72
  883. package/toggle/toggle.js +139 -122
  884. package/toggle-check/toggle-check.d.ts +4 -3
  885. package/toggle-check/toggle-check.d.ts.map +1 -1
  886. package/toggle-check.js +63 -41
  887. package/train/train/train.d.ts +5 -5
  888. package/train/train/train.d.ts.map +1 -1
  889. package/train/train-blocked-passage/train-blocked-passage.d.ts.map +1 -1
  890. package/train/train-blocked-passage.js +17 -18
  891. package/train/train-formation/train-formation.d.ts +2 -2
  892. package/train/train-formation/train-formation.d.ts.map +1 -1
  893. package/train/train-formation.js +96 -87
  894. package/train/train-wagon/train-wagon.d.ts +7 -9
  895. package/train/train-wagon/train-wagon.d.ts.map +1 -1
  896. package/train/train-wagon.js +150 -110
  897. package/train/train.js +108 -71
  898. package/visual-checkbox/visual-checkbox.d.ts +3 -3
  899. package/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  900. package/visual-checkbox.js +59 -32
  901. package/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts +0 -2
  902. package/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts.map +0 -1
  903. package/button/mini-button-group/index.d.ts +0 -2
  904. package/button/mini-button-group/index.d.ts.map +0 -1
  905. package/development/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts +0 -2
  906. package/development/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts.map +0 -1
  907. package/development/button/mini-button-group/index.d.ts +0 -2
  908. package/development/button/mini-button-group/index.d.ts.map +0 -1
  909. package/development/flip-card/flip-card/index.d.ts +0 -2
  910. package/development/flip-card/flip-card/index.d.ts.map +0 -1
  911. package/development/flip-card/flip-card-details/index.d.ts +0 -2
  912. package/development/flip-card/flip-card-details/index.d.ts.map +0 -1
  913. package/development/flip-card/flip-card-summary/index.d.ts +0 -2
  914. package/development/flip-card/flip-card-summary/index.d.ts.map +0 -1
  915. package/development/link-list/link-list-anchor/index.d.ts +0 -2
  916. package/development/link-list/link-list-anchor/index.d.ts.map +0 -1
  917. package/development/paginator/index.d.ts +0 -2
  918. package/development/paginator/index.d.ts.map +0 -1
  919. package/development/radio-button/radio-button-panel/index.d.ts +0 -2
  920. package/development/radio-button/radio-button-panel/index.d.ts.map +0 -1
  921. package/development/tabs/tab/index.d.ts +0 -2
  922. package/development/tabs/tab/index.d.ts.map +0 -1
  923. package/flip-card/flip-card/index.d.ts +0 -2
  924. package/flip-card/flip-card/index.d.ts.map +0 -1
  925. package/flip-card/flip-card-details/index.d.ts +0 -2
  926. package/flip-card/flip-card-details/index.d.ts.map +0 -1
  927. package/flip-card/flip-card-summary/index.d.ts +0 -2
  928. package/flip-card/flip-card-summary/index.d.ts.map +0 -1
  929. package/link-list/link-list-anchor/index.d.ts +0 -2
  930. package/link-list/link-list-anchor/index.d.ts.map +0 -1
  931. package/paginator/index.d.ts +0 -2
  932. package/paginator/index.d.ts.map +0 -1
  933. package/radio-button/radio-button-panel/index.d.ts +0 -2
  934. package/radio-button/radio-button-panel/index.d.ts.map +0 -1
  935. package/tabs/tab/index.d.ts +0 -2
  936. package/tabs/tab/index.d.ts.map +0 -1
@@ -1,12 +1,20 @@
1
+ var __typeError = (msg) => {
2
+ throw TypeError(msg);
3
+ };
4
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
+ import { __esDecorate, __runInitializers } from "tslib";
1
9
  import { MutationController } from "@lit-labs/observers/mutation-controller.js";
2
10
  import { ResizeController } from "@lit-labs/observers/resize-controller.js";
3
11
  import { css, html } from "lit";
4
- import { property, state, customElement } from "lit/decorators.js";
12
+ import { customElement, property, state } from "lit/decorators.js";
5
13
  import { ref } from "lit/directives/ref.js";
6
14
  import { SbbFocusHandler, setModalityOnNextFocus } from "../core/a11y.js";
7
15
  import { SbbOpenCloseBaseElement } from "../core/base-elements.js";
8
16
  import { SbbConnectedAbortController, SbbLanguageController, SbbInertController } from "../core/controllers.js";
9
- import { hostAttributes } from "../core/decorators.js";
17
+ import { hostAttributes, forceType } from "../core/decorators.js";
10
18
  import { SbbScrollHandler, findReferencedElement } from "../core/dom.js";
11
19
  import { i18nCloseNavigation } from "../core/i18n.js";
12
20
  import { SbbUpdateSchedulerMixin } from "../core/mixins.js";
@@ -274,259 +282,272 @@ const style = css`*,
274
282
  transform: translateX(-100%);
275
283
  }
276
284
  }`;
277
- var __defProp = Object.defineProperty;
278
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
279
- var __decorateClass = (decorators, target, key, kind) => {
280
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
281
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
282
- if (decorator = decorators[i])
283
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
284
- if (kind && result) __defProp(target, key, result);
285
- return result;
286
- };
287
285
  const navigationObserverConfig = {
288
286
  subtree: true,
289
287
  attributeFilter: ["data-state"]
290
288
  };
291
289
  let nextId = 0;
292
290
  const DEBOUNCE_TIME = 150;
293
- let SbbNavigationElement = class extends SbbUpdateSchedulerMixin(SbbOpenCloseBaseElement) {
294
- constructor() {
295
- super();
296
- this._trigger = null;
297
- this._activeNavigationSection = null;
298
- this._triggerElement = null;
299
- this._abort = new SbbConnectedAbortController(this);
300
- this._language = new SbbLanguageController(this);
301
- this._inertController = new SbbInertController(this);
302
- this._focusHandler = new SbbFocusHandler();
303
- this._scrollHandler = new SbbScrollHandler();
304
- this._isPointerDownEventOnNavigation = false;
305
- this._resizeObserverTimeout = null;
306
- this._navigationResizeObserver = new ResizeController(this, {
307
- skipInitial: true,
308
- callback: () => this._onNavigationResize()
309
- });
310
- this._trapFocusFilter = (el) => {
311
- return el.nodeName !== "SBB-NAVIGATION-SECTION" || el.getAttribute("data-state") === "opened";
312
- };
313
- this._pointerDownListener = (event) => {
314
- var _a, _b;
315
- this._isPointerDownEventOnNavigation = isEventOnElement(this._navigation, event) || isEventOnElement(
316
- (_b = (_a = this.querySelector(
317
- 'sbb-navigation-section[data-state="opened"]'
318
- )) == null ? void 0 : _a.shadowRoot) == null ? void 0 : _b.querySelector("nav.sbb-navigation-section"),
319
- event
320
- );
321
- };
322
- this._closeOnBackdropClick = (event) => {
323
- if (!this._isPointerDownEventOnNavigation && !isEventOnElement(this._navigation, event)) {
324
- this.close();
291
+ let SbbNavigationElement = (() => {
292
+ var _accessibilityCloseLabel_accessor_storage, __activeNavigationSection_accessor_storage, _a;
293
+ let _classDecorators = [customElement("sbb-navigation"), hostAttributes({
294
+ role: "navigation"
295
+ })];
296
+ let _classDescriptor;
297
+ let _classExtraInitializers = [];
298
+ let _classThis;
299
+ let _classSuper = SbbUpdateSchedulerMixin(SbbOpenCloseBaseElement);
300
+ let _instanceExtraInitializers = [];
301
+ let _set_trigger_decorators;
302
+ let _accessibilityCloseLabel_decorators;
303
+ let _accessibilityCloseLabel_initializers = [];
304
+ let _accessibilityCloseLabel_extraInitializers = [];
305
+ let __activeNavigationSection_decorators;
306
+ let __activeNavigationSection_initializers = [];
307
+ let __activeNavigationSection_extraInitializers = [];
308
+ _a = class extends _classSuper {
309
+ constructor() {
310
+ super();
311
+ __privateAdd(this, _accessibilityCloseLabel_accessor_storage);
312
+ __privateAdd(this, __activeNavigationSection_accessor_storage);
313
+ this._trigger = (__runInitializers(this, _instanceExtraInitializers), null);
314
+ __privateSet(this, _accessibilityCloseLabel_accessor_storage, __runInitializers(this, _accessibilityCloseLabel_initializers, ""));
315
+ __privateSet(this, __activeNavigationSection_accessor_storage, (__runInitializers(this, _accessibilityCloseLabel_extraInitializers), __runInitializers(this, __activeNavigationSection_initializers, null)));
316
+ this._navigation = __runInitializers(this, __activeNavigationSection_extraInitializers);
317
+ this._triggerElement = null;
318
+ this._abort = new SbbConnectedAbortController(this);
319
+ this._language = new SbbLanguageController(this);
320
+ this._inertController = new SbbInertController(this);
321
+ this._focusHandler = new SbbFocusHandler();
322
+ this._scrollHandler = new SbbScrollHandler();
323
+ this._isPointerDownEventOnNavigation = false;
324
+ this._resizeObserverTimeout = null;
325
+ this._navigationResizeObserver = new ResizeController(this, {
326
+ skipInitial: true,
327
+ callback: () => this._onNavigationResize()
328
+ });
329
+ this._trapFocusFilter = (el) => {
330
+ return el.nodeName !== "SBB-NAVIGATION-SECTION" || el.getAttribute("data-state") === "opened";
331
+ };
332
+ this._pointerDownListener = (event) => {
333
+ var _a2, _b;
334
+ this._isPointerDownEventOnNavigation = isEventOnElement(this._navigation, event) || isEventOnElement((_b = (_a2 = this.querySelector('sbb-navigation-section[data-state="opened"]')) == null ? void 0 : _a2.shadowRoot) == null ? void 0 : _b.querySelector("nav.sbb-navigation-section"), event);
335
+ };
336
+ this._closeOnBackdropClick = (event) => {
337
+ if (!this._isPointerDownEventOnNavigation && !isEventOnElement(this._navigation, event)) {
338
+ this.close();
339
+ }
340
+ };
341
+ new MutationController(this, {
342
+ skipInitial: true,
343
+ config: navigationObserverConfig,
344
+ callback: (mutationsList) => this._onNavigationSectionChange(mutationsList)
345
+ });
346
+ }
347
+ /**
348
+ * The element that will trigger the navigation.
349
+ * Accepts both a string (id of an element) or an HTML element.
350
+ */
351
+ set trigger(value) {
352
+ const oldValue = this._trigger;
353
+ this._trigger = value;
354
+ this._removeTriggerClickListener(this._trigger, oldValue);
355
+ }
356
+ get trigger() {
357
+ return this._trigger;
358
+ }
359
+ /**
360
+ * This will be forwarded as aria-label to the close button element.
361
+ */
362
+ get accessibilityCloseLabel() {
363
+ return __privateGet(this, _accessibilityCloseLabel_accessor_storage);
364
+ }
365
+ set accessibilityCloseLabel(value) {
366
+ __privateSet(this, _accessibilityCloseLabel_accessor_storage, value);
367
+ }
368
+ /**
369
+ * Whether a navigation section is displayed.
370
+ */
371
+ get _activeNavigationSection() {
372
+ return __privateGet(this, __activeNavigationSection_accessor_storage);
373
+ }
374
+ set _activeNavigationSection(value) {
375
+ __privateSet(this, __activeNavigationSection_accessor_storage, value);
376
+ }
377
+ get activeNavigationSection() {
378
+ return this._activeNavigationSection;
379
+ }
380
+ /**
381
+ * Opens the navigation.
382
+ */
383
+ open() {
384
+ var _a2;
385
+ if (this.state !== "closed" || !this._navigation) {
386
+ return;
325
387
  }
326
- };
327
- new MutationController(this, {
328
- skipInitial: true,
329
- config: navigationObserverConfig,
330
- callback: (mutationsList) => this._onNavigationSectionChange(mutationsList)
331
- });
332
- }
333
- set trigger(value) {
334
- const oldValue = this._trigger;
335
- this._trigger = value;
336
- this._removeTriggerClickListener(this._trigger, oldValue);
337
- }
338
- get trigger() {
339
- return this._trigger;
340
- }
341
- get activeNavigationSection() {
342
- return this._activeNavigationSection;
343
- }
344
- /**
345
- * Opens the navigation.
346
- */
347
- open() {
348
- var _a;
349
- if (this.state !== "closed" || !this._navigation) {
350
- return;
388
+ if (!this.willOpen.emit()) {
389
+ return;
390
+ }
391
+ this.state = "opening";
392
+ this._checkActiveActions();
393
+ this._checkActiveSection();
394
+ this.startUpdate();
395
+ this._scrollHandler.disableScroll();
396
+ (_a2 = this._triggerElement) == null ? void 0 : _a2.setAttribute("aria-expanded", "true");
351
397
  }
352
- if (!this.willOpen.emit()) {
353
- return;
398
+ _checkActiveSection() {
399
+ var _a2;
400
+ const activeAction = this.querySelector("sbb-navigation-button.sbb-active");
401
+ (_a2 = activeAction == null ? void 0 : activeAction.connectedSection) == null ? void 0 : _a2.open();
354
402
  }
355
- this.state = "opening";
356
- this._checkActiveActions();
357
- this._checkActiveSection();
358
- this.startUpdate();
359
- this._scrollHandler.disableScroll();
360
- (_a = this._triggerElement) == null ? void 0 : _a.setAttribute("aria-expanded", "true");
361
- }
362
- _checkActiveSection() {
363
- var _a;
364
- const activeAction = this.querySelector(
365
- "sbb-navigation-button.sbb-active"
366
- );
367
- (_a = activeAction == null ? void 0 : activeAction.connectedSection) == null ? void 0 : _a.open();
368
- }
369
- _checkActiveActions() {
370
- const activeActions = Array.from(
371
- this.querySelectorAll(":is(sbb-navigation-button, sbb-navigation-link).sbb-active")
372
- );
373
- activeActions == null ? void 0 : activeActions.forEach((action) => {
374
- var _a;
375
- return (_a = action.marker) == null ? void 0 : _a.select(action);
376
- });
377
- }
378
- /**
379
- * Closes the navigation.
380
- */
381
- close() {
382
- var _a;
383
- if (this.state !== "opened") {
384
- return;
403
+ _checkActiveActions() {
404
+ const activeActions = Array.from(this.querySelectorAll(":is(sbb-navigation-button, sbb-navigation-link).sbb-active"));
405
+ activeActions == null ? void 0 : activeActions.forEach((action) => {
406
+ var _a2;
407
+ return (_a2 = action.marker) == null ? void 0 : _a2.select(action);
408
+ });
385
409
  }
386
- if (!this.willClose.emit()) {
387
- return;
410
+ /**
411
+ * Closes the navigation.
412
+ */
413
+ close() {
414
+ var _a2;
415
+ if (this.state !== "opened") {
416
+ return;
417
+ }
418
+ if (!this.willClose.emit()) {
419
+ return;
420
+ }
421
+ this.state = "closing";
422
+ this.startUpdate();
423
+ (_a2 = this._triggerElement) == null ? void 0 : _a2.setAttribute("aria-expanded", "false");
388
424
  }
389
- this.state = "closing";
390
- this.startUpdate();
391
- (_a = this._triggerElement) == null ? void 0 : _a.setAttribute("aria-expanded", "false");
392
- }
393
- // Removes trigger click listener on trigger change.
394
- _removeTriggerClickListener(newValue, oldValue) {
395
- var _a, _b;
396
- if (newValue !== oldValue) {
397
- (_a = this._navigationController) == null ? void 0 : _a.abort();
398
- (_b = this._windowEventsController) == null ? void 0 : _b.abort();
399
- this._configure(this.trigger);
425
+ // Removes trigger click listener on trigger change.
426
+ _removeTriggerClickListener(newValue, oldValue) {
427
+ var _a2, _b;
428
+ if (newValue !== oldValue) {
429
+ (_a2 = this._navigationController) == null ? void 0 : _a2.abort();
430
+ (_b = this._windowEventsController) == null ? void 0 : _b.abort();
431
+ this._configure(this.trigger);
432
+ }
400
433
  }
401
- }
402
- // Check if the trigger is valid and attach click event listeners.
403
- _configure(trigger) {
404
- var _a;
405
- removeAriaOverlayTriggerAttributes(this._triggerElement);
406
- if (!trigger) {
407
- return;
434
+ // Check if the trigger is valid and attach click event listeners.
435
+ _configure(trigger) {
436
+ var _a2;
437
+ removeAriaOverlayTriggerAttributes(this._triggerElement);
438
+ if (!trigger) {
439
+ return;
440
+ }
441
+ this._triggerElement = findReferencedElement(trigger);
442
+ if (!this._triggerElement) {
443
+ return;
444
+ }
445
+ setAriaOverlayTriggerAttributes(this._triggerElement, "menu", this.id, this.state);
446
+ (_a2 = this._navigationController) == null ? void 0 : _a2.abort();
447
+ this._navigationController = new AbortController();
448
+ this._triggerElement.addEventListener("click", () => this.open(), {
449
+ signal: this._navigationController.signal
450
+ });
408
451
  }
409
- this._triggerElement = findReferencedElement(trigger);
410
- if (!this._triggerElement) {
411
- return;
452
+ // In rare cases it can be that the animationEnd event is triggered twice.
453
+ // To avoid entering a corrupt state, exit when state is not expected.
454
+ _onAnimationEnd(event) {
455
+ var _a2, _b;
456
+ if (event.animationName === "open" && this.state === "opening") {
457
+ this.state = "opened";
458
+ this.didOpen.emit();
459
+ this._navigationResizeObserver.observe(this);
460
+ this._inertController.activate();
461
+ this._focusHandler.trap(this, { filter: this._trapFocusFilter });
462
+ this._attachWindowEvents();
463
+ this._setNavigationFocus();
464
+ } else if (event.animationName === "close" && this.state === "closing") {
465
+ this.state = "closed";
466
+ this._navigationContentElement.scrollTo(0, 0);
467
+ setModalityOnNextFocus(this._triggerElement);
468
+ this._inertController.deactivate();
469
+ (_a2 = this._triggerElement) == null ? void 0 : _a2.focus();
470
+ this.didClose.emit();
471
+ this._navigationResizeObserver.unobserve(this);
472
+ this._resetMarkers();
473
+ (_b = this._windowEventsController) == null ? void 0 : _b.abort();
474
+ this._focusHandler.disconnect();
475
+ this._scrollHandler.enableScroll();
476
+ }
477
+ this.completeUpdate();
412
478
  }
413
- setAriaOverlayTriggerAttributes(this._triggerElement, "menu", this.id, this.state);
414
- (_a = this._navigationController) == null ? void 0 : _a.abort();
415
- this._navigationController = new AbortController();
416
- this._triggerElement.addEventListener("click", () => this.open(), {
417
- signal: this._navigationController.signal
418
- });
419
- }
420
- // In rare cases it can be that the animationEnd event is triggered twice.
421
- // To avoid entering a corrupt state, exit when state is not expected.
422
- _onAnimationEnd(event) {
423
- var _a, _b;
424
- if (event.animationName === "open" && this.state === "opening") {
425
- this.state = "opened";
426
- this.didOpen.emit();
427
- this._navigationResizeObserver.observe(this);
428
- this._inertController.activate();
429
- this._focusHandler.trap(this, { filter: this._trapFocusFilter });
430
- this._attachWindowEvents();
431
- this._setNavigationFocus();
432
- } else if (event.animationName === "close" && this.state === "closing") {
433
- this.state = "closed";
434
- this._navigationContentElement.scrollTo(0, 0);
435
- setModalityOnNextFocus(this._triggerElement);
436
- this._inertController.deactivate();
437
- (_a = this._triggerElement) == null ? void 0 : _a.focus();
438
- this.didClose.emit();
439
- this._navigationResizeObserver.unobserve(this);
440
- this._resetMarkers();
441
- (_b = this._windowEventsController) == null ? void 0 : _b.abort();
442
- this._focusHandler.disconnect();
443
- this._scrollHandler.enableScroll();
479
+ _resetMarkers() {
480
+ const activeActions = Array.from(this.querySelectorAll(":is(sbb-navigation-button, sbb-navigation-link)[data-action-active]:not(.sbb-active)"));
481
+ activeActions == null ? void 0 : activeActions.forEach((action) => {
482
+ var _a2;
483
+ return (_a2 = action.marker) == null ? void 0 : _a2.reset();
484
+ });
444
485
  }
445
- this.completeUpdate();
446
- }
447
- _resetMarkers() {
448
- const activeActions = Array.from(
449
- this.querySelectorAll(
450
- ":is(sbb-navigation-button, sbb-navigation-link)[data-action-active]:not(.sbb-active)"
451
- )
452
- );
453
- activeActions == null ? void 0 : activeActions.forEach((action) => {
454
- var _a;
455
- return (_a = action.marker) == null ? void 0 : _a.reset();
456
- });
457
- }
458
- _attachWindowEvents() {
459
- this._windowEventsController = new AbortController();
460
- window.addEventListener("keydown", (event) => this._onKeydownEvent(event), {
461
- signal: this._windowEventsController.signal
462
- });
463
- }
464
- _handleNavigationClose(event) {
465
- const composedPathElements = event.composedPath().filter((el) => el instanceof window.HTMLElement);
466
- if (composedPathElements.some((el) => this._isCloseElement(el))) {
467
- this.close();
486
+ _attachWindowEvents() {
487
+ this._windowEventsController = new AbortController();
488
+ window.addEventListener("keydown", (event) => this._onKeydownEvent(event), {
489
+ signal: this._windowEventsController.signal
490
+ });
468
491
  }
469
- }
470
- _isCloseElement(element) {
471
- return element.nodeName === "A" || element.hasAttribute("sbb-navigation-close") && !element.hasAttribute("disabled");
472
- }
473
- // Closes the navigation on "Esc" key pressed.
474
- _onKeydownEvent(event) {
475
- if (this.state === "opened" && event.key === "Escape") {
476
- this.close();
492
+ _handleNavigationClose(event) {
493
+ const composedPathElements = event.composedPath().filter((el) => el instanceof window.HTMLElement);
494
+ if (composedPathElements.some((el) => this._isCloseElement(el))) {
495
+ this.close();
496
+ }
477
497
  }
478
- }
479
- // Set focus on the first focusable element.
480
- _setNavigationFocus() {
481
- const closeButton = this.shadowRoot.querySelector(
482
- "#sbb-navigation-close-button"
483
- );
484
- setModalityOnNextFocus(closeButton);
485
- closeButton.focus();
486
- }
487
- // Observe changes on navigation section data-state.
488
- _onNavigationSectionChange(mutationsList) {
489
- for (const mutation of mutationsList) {
490
- if (mutation.target.nodeName === "SBB-NAVIGATION-SECTION") {
491
- this._activeNavigationSection = this.querySelector(
492
- 'sbb-navigation-section[data-state="opening"], sbb-navigation-section[data-state="opened"]'
493
- );
494
- this.toggleAttribute("data-has-navigation-section", !!this._activeNavigationSection);
498
+ _isCloseElement(element) {
499
+ return element.nodeName === "A" || element.hasAttribute("sbb-navigation-close") && !element.hasAttribute("disabled");
500
+ }
501
+ // Closes the navigation on "Esc" key pressed.
502
+ _onKeydownEvent(event) {
503
+ if (this.state === "opened" && event.key === "Escape") {
504
+ this.close();
495
505
  }
496
506
  }
497
- }
498
- _onNavigationResize() {
499
- if (this.state !== "opened") {
500
- return;
507
+ // Set focus on the first focusable element.
508
+ _setNavigationFocus() {
509
+ const closeButton = this.shadowRoot.querySelector("#sbb-navigation-close-button");
510
+ setModalityOnNextFocus(closeButton);
511
+ closeButton.focus();
512
+ }
513
+ // Observe changes on navigation section data-state.
514
+ _onNavigationSectionChange(mutationsList) {
515
+ for (const mutation of mutationsList) {
516
+ if (mutation.target.nodeName === "SBB-NAVIGATION-SECTION") {
517
+ this._activeNavigationSection = this.querySelector('sbb-navigation-section[data-state="opening"], sbb-navigation-section[data-state="opened"]');
518
+ this.toggleAttribute("data-has-navigation-section", !!this._activeNavigationSection);
519
+ }
520
+ }
501
521
  }
502
- if (this._resizeObserverTimeout) {
503
- clearTimeout(this._resizeObserverTimeout);
522
+ _onNavigationResize() {
523
+ if (this.state !== "opened") {
524
+ return;
525
+ }
526
+ if (this._resizeObserverTimeout) {
527
+ clearTimeout(this._resizeObserverTimeout);
528
+ }
529
+ this.toggleAttribute("data-resize-disable-animation", true);
530
+ this._resizeObserverTimeout = setTimeout(() => this.removeAttribute("data-resize-disable-animation"), DEBOUNCE_TIME);
504
531
  }
505
- this.toggleAttribute("data-resize-disable-animation", true);
506
- this._resizeObserverTimeout = setTimeout(
507
- () => this.removeAttribute("data-resize-disable-animation"),
508
- DEBOUNCE_TIME
509
- );
510
- }
511
- connectedCallback() {
512
- super.connectedCallback();
513
- this.id || (this.id = `sbb-navigation-${nextId++}`);
514
- const signal = this._abort.signal;
515
- this.addEventListener("click", (e) => this._handleNavigationClose(e), { signal });
516
- this._configure(this.trigger);
517
- this.addEventListener("pointerup", (event) => this._closeOnBackdropClick(event), { signal });
518
- this.addEventListener("pointerdown", (event) => this._pointerDownListener(event), { signal });
519
- }
520
- disconnectedCallback() {
521
- var _a, _b;
522
- super.disconnectedCallback();
523
- (_a = this._navigationController) == null ? void 0 : _a.abort();
524
- (_b = this._windowEventsController) == null ? void 0 : _b.abort();
525
- this._focusHandler.disconnect();
526
- this._scrollHandler.enableScroll();
527
- }
528
- render() {
529
- const closeButton = html`
532
+ connectedCallback() {
533
+ super.connectedCallback();
534
+ this.id || (this.id = `sbb-navigation-${nextId++}`);
535
+ const signal = this._abort.signal;
536
+ this.addEventListener("click", (e) => this._handleNavigationClose(e), { signal });
537
+ this._configure(this.trigger);
538
+ this.addEventListener("pointerup", (event) => this._closeOnBackdropClick(event), { signal });
539
+ this.addEventListener("pointerdown", (event) => this._pointerDownListener(event), { signal });
540
+ }
541
+ disconnectedCallback() {
542
+ var _a2, _b;
543
+ super.disconnectedCallback();
544
+ (_a2 = this._navigationController) == null ? void 0 : _a2.abort();
545
+ (_b = this._windowEventsController) == null ? void 0 : _b.abort();
546
+ this._focusHandler.disconnect();
547
+ this._scrollHandler.enableScroll();
548
+ }
549
+ render() {
550
+ const closeButton = html`
530
551
  <sbb-transparent-button
531
552
  id="sbb-navigation-close-button"
532
553
  class="sbb-navigation__close"
@@ -539,7 +560,7 @@ let SbbNavigationElement = class extends SbbUpdateSchedulerMixin(SbbOpenCloseBas
539
560
  sbb-navigation-close
540
561
  ></sbb-transparent-button>
541
562
  `;
542
- return html`
563
+ return html`
543
564
  <div class="sbb-navigation__container">
544
565
  <div
545
566
  id="sbb-navigation-overlay"
@@ -560,25 +581,28 @@ let SbbNavigationElement = class extends SbbUpdateSchedulerMixin(SbbOpenCloseBas
560
581
  <slot name="navigation-section"></slot>
561
582
  </div>
562
583
  `;
563
- }
564
- };
565
- SbbNavigationElement.styles = style;
566
- __decorateClass([
567
- property()
568
- ], SbbNavigationElement.prototype, "trigger", 1);
569
- __decorateClass([
570
- property({ attribute: "accessibility-close-label" })
571
- ], SbbNavigationElement.prototype, "accessibilityCloseLabel", 2);
572
- __decorateClass([
573
- state()
574
- ], SbbNavigationElement.prototype, "_activeNavigationSection", 2);
575
- SbbNavigationElement = __decorateClass([
576
- customElement("sbb-navigation"),
577
- hostAttributes({
578
- role: "navigation"
579
- })
580
- ], SbbNavigationElement);
584
+ }
585
+ }, _accessibilityCloseLabel_accessor_storage = new WeakMap(), __activeNavigationSection_accessor_storage = new WeakMap(), _classThis = _a, (() => {
586
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
587
+ _set_trigger_decorators = [property()];
588
+ _accessibilityCloseLabel_decorators = [forceType(), property({ attribute: "accessibility-close-label" })];
589
+ __activeNavigationSection_decorators = [state()];
590
+ __esDecorate(_a, null, _set_trigger_decorators, { kind: "setter", name: "trigger", static: false, private: false, access: { has: (obj) => "trigger" in obj, set: (obj, value) => {
591
+ obj.trigger = value;
592
+ } }, metadata: _metadata }, null, _instanceExtraInitializers);
593
+ __esDecorate(_a, null, _accessibilityCloseLabel_decorators, { kind: "accessor", name: "accessibilityCloseLabel", static: false, private: false, access: { has: (obj) => "accessibilityCloseLabel" in obj, get: (obj) => obj.accessibilityCloseLabel, set: (obj, value) => {
594
+ obj.accessibilityCloseLabel = value;
595
+ } }, metadata: _metadata }, _accessibilityCloseLabel_initializers, _accessibilityCloseLabel_extraInitializers);
596
+ __esDecorate(_a, null, __activeNavigationSection_decorators, { kind: "accessor", name: "_activeNavigationSection", static: false, private: false, access: { has: (obj) => "_activeNavigationSection" in obj, get: (obj) => obj._activeNavigationSection, set: (obj, value) => {
597
+ obj._activeNavigationSection = value;
598
+ } }, metadata: _metadata }, __activeNavigationSection_initializers, __activeNavigationSection_extraInitializers);
599
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
600
+ _classThis = _classDescriptor.value;
601
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
602
+ })(), _a.styles = style, __runInitializers(_classThis, _classExtraInitializers), _a;
603
+ return _classThis;
604
+ })();
581
605
  export {
582
606
  SbbNavigationElement
583
607
  };
584
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL25hdmlnYXRpb24vbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBSZXNpemVDb250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9yZXNpemUtY29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IFNiYkZvY3VzSGFuZGxlciwgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL2NvcmUvYmFzZS1lbGVtZW50cy5qcyc7XG5pbXBvcnQge1xuICBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIsXG4gIFNiYkluZXJ0Q29udHJvbGxlcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGZpbmRSZWZlcmVuY2VkRWxlbWVudCwgU2JiU2Nyb2xsSGFuZGxlciB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IGkxOG5DbG9zZU5hdmlnYXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQge1xuICBpc0V2ZW50T25FbGVtZW50LFxuICByZW1vdmVBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzLFxuICBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzLFxufSBmcm9tICcuLi8uLi9jb3JlL292ZXJsYXkuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJOYXZpZ2F0aW9uQnV0dG9uRWxlbWVudCB9IGZyb20gJy4uL25hdmlnYXRpb24tYnV0dG9uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiTmF2aWdhdGlvbkxpbmtFbGVtZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1saW5rLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vbmF2aWdhdGlvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2J1dHRvbi90cmFuc3BhcmVudC1idXR0b24uanMnO1xuXG4vKiogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGF0dHJpYnV0ZSB0byBsb29rIGF0IGlmIGEgbmF2aWdhdGlvbiBzZWN0aW9uIGlzIGRpc3BsYXllZCAqL1xuY29uc3QgbmF2aWdhdGlvbk9ic2VydmVyQ29uZmlnOiBNdXRhdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgc3VidHJlZTogdHJ1ZSxcbiAgYXR0cmlidXRlRmlsdGVyOiBbJ2RhdGEtc3RhdGUnXSxcbn07XG5cbmxldCBuZXh0SWQgPSAwO1xuY29uc3QgREVCT1VOQ0VfVElNRSA9IDE1MDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIG5hdmlnYXRpb24gbWVudSwgd3JhcHBpbmcgb25lIG9yIG1vcmUgYHNiYi1uYXZpZ2F0aW9uLSpgIGNvbXBvbmVudHMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1uYXZpZ2F0aW9uLWJ1dHRvbmAvYHNiYi1uYXZpZ2F0aW9uLWxpbmtgIGVsZW1lbnRzIGludG8gdGhlIHNiYi1uYXZpZ2F0aW9uIG1lbnUuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLW5hdmlnYXRpb25gIGJlZ2lucyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkaWRPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItbmF2aWdhdGlvbmAgaXMgb3BlbmVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gd2lsbENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItbmF2aWdhdGlvbmAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItbmF2aWdhdGlvbmAgaXMgY2xvc2VkLlxuICogQGNzc3Byb3AgWy0tc2JiLW5hdmlnYXRpb24tei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLW5hdmlnYXRpb24nKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgcm9sZTogJ25hdmlnYXRpb24nLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJOYXZpZ2F0aW9uRWxlbWVudCBleHRlbmRzIFNiYlVwZGF0ZVNjaGVkdWxlck1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgbmF2aWdhdGlvbi5cbiAgICogQWNjZXB0cyBib3RoIGEgc3RyaW5nIChpZCBvZiBhbiBlbGVtZW50KSBvciBhbiBIVE1MIGVsZW1lbnQuXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IHRyaWdnZXIodmFsdWU6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5fdHJpZ2dlcjtcbiAgICB0aGlzLl90cmlnZ2VyID0gdmFsdWU7XG4gICAgdGhpcy5fcmVtb3ZlVHJpZ2dlckNsaWNrTGlzdGVuZXIodGhpcy5fdHJpZ2dlciwgb2xkVmFsdWUpO1xuICB9XG4gIHB1YmxpYyBnZXQgdHJpZ2dlcigpOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyO1xuICB9XG4gIHByaXZhdGUgX3RyaWdnZXI6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgY2xvc2UgYnV0dG9uIGVsZW1lbnQuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWNsb3NlLWxhYmVsJyB9KSBwdWJsaWMgYWNjZXNzaWJpbGl0eUNsb3NlTGFiZWw6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciBhIG5hdmlnYXRpb24gc2VjdGlvbiBpcyBkaXNwbGF5ZWQuXG4gICAqL1xuICBAc3RhdGUoKSBwcml2YXRlIF9hY3RpdmVOYXZpZ2F0aW9uU2VjdGlvbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgZ2V0IGFjdGl2ZU5hdmlnYXRpb25TZWN0aW9uKCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZU5hdmlnYXRpb25TZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBfbmF2aWdhdGlvbiE6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF9uYXZpZ2F0aW9uQ29udGVudEVsZW1lbnQhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX25hdmlnYXRpb25Db250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF93aW5kb3dFdmVudHNDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9hYm9ydCA9IG5ldyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfaW5lcnRDb250cm9sbGVyID0gbmV3IFNiYkluZXJ0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfZm9jdXNIYW5kbGVyID0gbmV3IFNiYkZvY3VzSGFuZGxlcigpO1xuICBwcml2YXRlIF9zY3JvbGxIYW5kbGVyID0gbmV3IFNiYlNjcm9sbEhhbmRsZXIoKTtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25OYXZpZ2F0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3Jlc2l6ZU9ic2VydmVyVGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbmF2aWdhdGlvblJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLl9vbk5hdmlnYXRpb25SZXNpemUoKSxcbiAgfSk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBuZXcgTXV0YXRpb25Db250cm9sbGVyKHRoaXMsIHtcbiAgICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgICAgY29uZmlnOiBuYXZpZ2F0aW9uT2JzZXJ2ZXJDb25maWcsXG4gICAgICBjYWxsYmFjazogKG11dGF0aW9uc0xpc3Q6IE11dGF0aW9uUmVjb3JkW10pID0+IHRoaXMuX29uTmF2aWdhdGlvblNlY3Rpb25DaGFuZ2UobXV0YXRpb25zTGlzdCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgfHwgIXRoaXMuX25hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5fY2hlY2tBY3RpdmVBY3Rpb25zKCk7XG4gICAgdGhpcy5fY2hlY2tBY3RpdmVTZWN0aW9uKCk7XG4gICAgdGhpcy5zdGFydFVwZGF0ZSgpO1xuXG4gICAgLy8gRGlzYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIG5hdmlnYXRpb25cbiAgICB0aGlzLl9zY3JvbGxIYW5kbGVyLmRpc2FibGVTY3JvbGwoKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrQWN0aXZlU2VjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVBY3Rpb24gPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnc2JiLW5hdmlnYXRpb24tYnV0dG9uLnNiYi1hY3RpdmUnLFxuICAgICkgYXMgU2JiTmF2aWdhdGlvbkJ1dHRvbkVsZW1lbnQ7XG4gICAgYWN0aXZlQWN0aW9uPy5jb25uZWN0ZWRTZWN0aW9uPy5vcGVuKCk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FjdGl2ZUFjdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlQWN0aW9ucyA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJzppcyhzYmItbmF2aWdhdGlvbi1idXR0b24sIHNiYi1uYXZpZ2F0aW9uLWxpbmspLnNiYi1hY3RpdmUnKSxcbiAgICApIGFzIChTYmJOYXZpZ2F0aW9uQnV0dG9uRWxlbWVudCB8IFNiYk5hdmlnYXRpb25MaW5rRWxlbWVudClbXTtcbiAgICBhY3RpdmVBY3Rpb25zPy5mb3JFYWNoKChhY3Rpb24pID0+IGFjdGlvbi5tYXJrZXI/LnNlbGVjdChhY3Rpb24pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLndpbGxDbG9zZS5lbWl0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnN0YXJ0VXBkYXRlKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICB9XG5cbiAgLy8gUmVtb3ZlcyB0cmlnZ2VyIGNsaWNrIGxpc3RlbmVyIG9uIHRyaWdnZXIgY2hhbmdlLlxuICBwcml2YXRlIF9yZW1vdmVUcmlnZ2VyQ2xpY2tMaXN0ZW5lcihcbiAgICBuZXdWYWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsLFxuICAgIG9sZFZhbHVlOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwsXG4gICk6IHZvaWQge1xuICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZSh0aGlzLnRyaWdnZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSB0cmlnZ2VyIGlzIHZhbGlkIGFuZCBhdHRhY2ggY2xpY2sgZXZlbnQgbGlzdGVuZXJzLlxuICBwcml2YXRlIF9jb25maWd1cmUodHJpZ2dlcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG5cbiAgICBpZiAoIXRyaWdnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IGZpbmRSZWZlcmVuY2VkRWxlbWVudCh0cmlnZ2VyKTtcblxuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnbWVudScsIHRoaXMuaWQsIHRoaXMuc3RhdGUpO1xuICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fbmF2aWdhdGlvbkNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJhcEZvY3VzRmlsdGVyID0gKGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBlbC5ub2RlTmFtZSAhPT0gJ1NCQi1OQVZJR0FUSU9OLVNFQ1RJT04nIHx8IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScpID09PSAnb3BlbmVkJztcbiAgfTtcblxuICAvLyBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgICB0aGlzLmRpZE9wZW4uZW1pdCgpO1xuICAgICAgdGhpcy5fbmF2aWdhdGlvblJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcyk7XG4gICAgICB0aGlzLl9pbmVydENvbnRyb2xsZXIuYWN0aXZhdGUoKTtcbiAgICAgIHRoaXMuX2ZvY3VzSGFuZGxlci50cmFwKHRoaXMsIHsgZmlsdGVyOiB0aGlzLl90cmFwRm9jdXNGaWx0ZXIgfSk7XG4gICAgICB0aGlzLl9hdHRhY2hXaW5kb3dFdmVudHMoKTtcbiAgICAgIHRoaXMuX3NldE5hdmlnYXRpb25Gb2N1cygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAnY2xvc2VkJztcbiAgICAgIHRoaXMuX25hdmlnYXRpb25Db250ZW50RWxlbWVudC5zY3JvbGxUbygwLCAwKTtcbiAgICAgIHNldE1vZGFsaXR5T25OZXh0Rm9jdXModGhpcy5fdHJpZ2dlckVsZW1lbnQpO1xuICAgICAgdGhpcy5faW5lcnRDb250cm9sbGVyLmRlYWN0aXZhdGUoKTtcbiAgICAgIC8vIFRvIGVuYWJsZSBmb2N1c2luZyBvdGhlciBlbGVtZW50IHRoYW4gdGhlIHRyaWdnZXIsIHdlIG5lZWQgdG8gY2FsbCBmb2N1cygpIGEgc2Vjb25kIHRpbWUuXG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgIHRoaXMuZGlkQ2xvc2UuZW1pdCgpO1xuICAgICAgdGhpcy5fbmF2aWdhdGlvblJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzKTtcbiAgICAgIHRoaXMuX3Jlc2V0TWFya2VycygpO1xuICAgICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2ZvY3VzSGFuZGxlci5kaXNjb25uZWN0KCk7XG5cbiAgICAgIC8vIEVuYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIG5hdmlnYXRpb25cbiAgICAgIHRoaXMuX3Njcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gICAgfVxuICAgIHRoaXMuY29tcGxldGVVcGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0TWFya2VycygpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVBY3Rpb25zID0gQXJyYXkuZnJvbShcbiAgICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJzppcyhzYmItbmF2aWdhdGlvbi1idXR0b24sIHNiYi1uYXZpZ2F0aW9uLWxpbmspW2RhdGEtYWN0aW9uLWFjdGl2ZV06bm90KC5zYmItYWN0aXZlKScsXG4gICAgICApLFxuICAgICkgYXMgKFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IHwgU2JiTmF2aWdhdGlvbkxpbmtFbGVtZW50KVtdO1xuICAgIGFjdGl2ZUFjdGlvbnM/LmZvckVhY2goKGFjdGlvbikgPT4gYWN0aW9uLm1hcmtlcj8ucmVzZXQoKSk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hXaW5kb3dFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5fb25LZXlkb3duRXZlbnQoZXZlbnQpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlTmF2aWdhdGlvbkNsb3NlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBvc2VkUGF0aEVsZW1lbnRzID0gZXZlbnRcbiAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgLmZpbHRlcigoZWwpID0+IGVsIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50KTtcbiAgICBpZiAoY29tcG9zZWRQYXRoRWxlbWVudHMuc29tZSgoZWwpID0+IHRoaXMuX2lzQ2xvc2VFbGVtZW50KGVsIGFzIEhUTUxFbGVtZW50KSkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0Nsb3NlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnQScgfHxcbiAgICAgIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc2JiLW5hdmlnYXRpb24tY2xvc2UnKSAmJiAhZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpXG4gICAgKTtcbiAgfVxuXG4gIC8vIENsb3NlcyB0aGUgbmF2aWdhdGlvbiBvbiBcIkVzY1wiIGtleSBwcmVzc2VkLlxuICBwcml2YXRlIF9vbktleWRvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnb3BlbmVkJyAmJiBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IGZvY3VzIG9uIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudC5cbiAgcHJpdmF0ZSBfc2V0TmF2aWdhdGlvbkZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKFxuICAgICAgJyNzYmItbmF2aWdhdGlvbi1jbG9zZS1idXR0b24nLFxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyhjbG9zZUJ1dHRvbik7XG4gICAgY2xvc2VCdXR0b24uZm9jdXMoKTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBwb2ludGVyZG93biBldmVudCB0YXJnZXQgaXMgdHJpZ2dlcmVkIG9uIHRoZSBuYXZpZ2F0aW9uLlxuICBwcml2YXRlIF9wb2ludGVyRG93bkxpc3RlbmVyID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk5hdmlnYXRpb24gPVxuICAgICAgaXNFdmVudE9uRWxlbWVudCh0aGlzLl9uYXZpZ2F0aW9uLCBldmVudCkgfHxcbiAgICAgIGlzRXZlbnRPbkVsZW1lbnQoXG4gICAgICAgIHRoaXMucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAnc2JiLW5hdmlnYXRpb24tc2VjdGlvbltkYXRhLXN0YXRlPVwib3BlbmVkXCJdJyxcbiAgICAgICAgKT8uc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcignbmF2LnNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24nKSBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgZXZlbnQsXG4gICAgICApO1xuICB9O1xuXG4gIC8vIENsb3NlIG5hdmlnYXRpb24gb24gYmFja2Ryb3AgY2xpY2suXG4gIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTmF2aWdhdGlvbiAmJiAhaXNFdmVudE9uRWxlbWVudCh0aGlzLl9uYXZpZ2F0aW9uLCBldmVudCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gT2JzZXJ2ZSBjaGFuZ2VzIG9uIG5hdmlnYXRpb24gc2VjdGlvbiBkYXRhLXN0YXRlLlxuICBwcml2YXRlIF9vbk5hdmlnYXRpb25TZWN0aW9uQ2hhbmdlKG11dGF0aW9uc0xpc3Q6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHtcbiAgICAgIGlmICgobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5ub2RlTmFtZSA9PT0gJ1NCQi1OQVZJR0FUSU9OLVNFQ1RJT04nKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZU5hdmlnYXRpb25TZWN0aW9uID0gdGhpcy5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICdzYmItbmF2aWdhdGlvbi1zZWN0aW9uW2RhdGEtc3RhdGU9XCJvcGVuaW5nXCJdLCBzYmItbmF2aWdhdGlvbi1zZWN0aW9uW2RhdGEtc3RhdGU9XCJvcGVuZWRcIl0nLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1oYXMtbmF2aWdhdGlvbi1zZWN0aW9uJywgISF0aGlzLl9hY3RpdmVOYXZpZ2F0aW9uU2VjdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25OYXZpZ2F0aW9uUmVzaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQpO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLXJlc2l6ZS1kaXNhYmxlLWFuaW1hdGlvbicsIHRydWUpO1xuXG4gICAgLy8gRGlzYWJsZSB0aGUgYW5pbWF0aW9uIHdoZW4gcmVzaXppbmcgdGhlIG5hdmlnYXRpb24gdG8gYXZvaWQgc3RyYW5nZSBoZWlnaHQgdHJhbnNpdGlvbiBlZmZlY3RzLlxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAoKSA9PiB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1yZXNpemUtZGlzYWJsZS1hbmltYXRpb24nKSxcbiAgICAgIERFQk9VTkNFX1RJTUUsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuaWQgfHw9IGBzYmItbmF2aWdhdGlvbi0ke25leHRJZCsrfWA7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gdGhpcy5faGFuZGxlTmF2aWdhdGlvbkNsb3NlKGUpLCB7IHNpZ25hbCB9KTtcbiAgICAvLyBWYWxpZGF0ZSB0cmlnZ2VyIGVsZW1lbnQgYW5kIGF0dGFjaCBldmVudCBsaXN0ZW5lcnNcbiAgICB0aGlzLl9jb25maWd1cmUodGhpcy50cmlnZ2VyKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIChldmVudCkgPT4gdGhpcy5fY2xvc2VPbkJhY2tkcm9wQ2xpY2soZXZlbnQpLCB7IHNpZ25hbCB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGV2ZW50KSA9PiB0aGlzLl9wb2ludGVyRG93bkxpc3RlbmVyKGV2ZW50KSwgeyBzaWduYWwgfSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2ZvY3VzSGFuZGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gaHRtbGBcbiAgICAgIDxzYmItdHJhbnNwYXJlbnQtYnV0dG9uXG4gICAgICAgIGlkPVwic2JiLW5hdmlnYXRpb24tY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzYmItbmF2aWdhdGlvbl9fY2xvc2VcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbCB8fCBpMThuQ2xvc2VOYXZpZ2F0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICBhcmlhLWNvbnRyb2xzPVwic2JiLW5hdmlnYXRpb24tb3ZlcmxheVwiXG4gICAgICAgIG5lZ2F0aXZlXG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgc2JiLW5hdmlnYXRpb24tY2xvc2VcbiAgICAgID48L3NiYi10cmFuc3BhcmVudC1idXR0b24+XG4gICAgYDtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGlkPVwic2JiLW5hdmlnYXRpb24tb3ZlcmxheVwiXG4gICAgICAgICAgQGFuaW1hdGlvbmVuZD0keyhldmVudDogQW5pbWF0aW9uRXZlbnQpID0+IHRoaXMuX29uQW5pbWF0aW9uRW5kKGV2ZW50KX1cbiAgICAgICAgICBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uXCJcbiAgICAgICAgICAke3JlZigobmF2aWdhdGlvblJlZj86IEVsZW1lbnQpID0+ICh0aGlzLl9uYXZpZ2F0aW9uID0gbmF2aWdhdGlvblJlZiBhcyBIVE1MRGl2RWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uX19oZWFkZXJcIj4ke2Nsb3NlQnV0dG9ufTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbmF2aWdhdGlvbl9fd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uX19jb250ZW50XCJcbiAgICAgICAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX25hdmlnYXRpb25Db250ZW50RWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNsb3QgbmFtZT1cIm5hdmlnYXRpb24tc2VjdGlvblwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1uYXZpZ2F0aW9uJzogU2JiTmF2aWdhdGlvbkVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0JBLE1BQU0sMkJBQWlEO0FBQUEsRUFDckQsU0FBUztBQUFBLEVBQ1QsaUJBQWlCLENBQUMsWUFBWTtBQUNoQztBQUVBLElBQUksU0FBUztBQUNiLE1BQU0sZ0JBQWdCO0FBa0JmLElBQU0sdUJBQU4sY0FBbUMsd0JBQXdCLHVCQUF1QixFQUFFO0FBQUEsRUFtRGxGLGNBQWM7QUFDYjtBQXBDUixTQUFRLFdBQXdDO0FBWXZDLFNBQVEsMkJBQStDO0FBUWhFLFNBQVEsa0JBQXNDO0FBR3RDLFNBQUEsU0FBUyxJQUFJLDRCQUE0QixJQUFJO0FBQzdDLFNBQUEsWUFBWSxJQUFJLHNCQUFzQixJQUFJO0FBQzFDLFNBQUEsbUJBQW1CLElBQUksbUJBQW1CLElBQUk7QUFDOUMsU0FBQSxnQkFBZ0IsSUFBSTtBQUNwQixTQUFBLGlCQUFpQixJQUFJO0FBQzdCLFNBQVEsa0NBQTJDO0FBQ25ELFNBQVEseUJBQStEO0FBQy9ELFNBQUEsNEJBQTRCLElBQUksaUJBQWlCLE1BQU07QUFBQSxN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
608
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL25hdmlnYXRpb24vbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBSZXNpemVDb250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9yZXNpemUtY29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IFNiYkZvY3VzSGFuZGxlciwgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL2NvcmUvYmFzZS1lbGVtZW50cy5qcyc7XG5pbXBvcnQge1xuICBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIsXG4gIFNiYkluZXJ0Q29udHJvbGxlcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgZmluZFJlZmVyZW5jZWRFbGVtZW50LCBTYmJTY3JvbGxIYW5kbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgaTE4bkNsb3NlTmF2aWdhdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgeyBTYmJVcGRhdGVTY2hlZHVsZXJNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7XG4gIGlzRXZlbnRPbkVsZW1lbnQsXG4gIHJlbW92ZUFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG4gIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG59IGZyb20gJy4uLy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1idXR0b24uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJOYXZpZ2F0aW9uTGlua0VsZW1lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLWxpbmsuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9uYXZpZ2F0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vYnV0dG9uL3RyYW5zcGFyZW50LWJ1dHRvbi5qcyc7XG5cbi8qKiBDb25maWd1cmF0aW9uIGZvciB0aGUgYXR0cmlidXRlIHRvIGxvb2sgYXQgaWYgYSBuYXZpZ2F0aW9uIHNlY3Rpb24gaXMgZGlzcGxheWVkICovXG5jb25zdCBuYXZpZ2F0aW9uT2JzZXJ2ZXJDb25maWc6IE11dGF0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICBzdWJ0cmVlOiB0cnVlLFxuICBhdHRyaWJ1dGVGaWx0ZXI6IFsnZGF0YS1zdGF0ZSddLFxufTtcblxubGV0IG5leHRJZCA9IDA7XG5jb25zdCBERUJPVU5DRV9USU1FID0gMTUwO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgbmF2aWdhdGlvbiBtZW51LCB3cmFwcGluZyBvbmUgb3IgbW9yZSBgc2JiLW5hdmlnYXRpb24tKmAgY29tcG9uZW50cy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBgc2JiLW5hdmlnYXRpb24tYnV0dG9uYC9gc2JiLW5hdmlnYXRpb24tbGlua2AgZWxlbWVudHMgaW50byB0aGUgc2JiLW5hdmlnYXRpb24gbWVudS5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IHdpbGxPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItbmF2aWdhdGlvbmAgYmVnaW5zIHRoZSBvcGVuaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1uYXZpZ2F0aW9uYCBpcyBvcGVuZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1uYXZpZ2F0aW9uYCBiZWdpbnMgdGhlIGNsb3NpbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGlkQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1uYXZpZ2F0aW9uYCBpcyBjbG9zZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItbmF2aWdhdGlvbi16LWluZGV4PXZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCldIC0gVG8gc3BlY2lmeSBhIGN1c3RvbSBzdGFjayBvcmRlcixcbiAqIHRoZSBgei1pbmRleGAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgdGhpcyBDU1MgdmFyaWFibGUuIFRoZSBkZWZhdWx0IGB6LWluZGV4YCBvZiB0aGVcbiAqIGNvbXBvbmVudCBpcyBzZXQgdG8gYHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleClgIHdpdGggYSB2YWx1ZSBvZiBgMTAwMGAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1uYXZpZ2F0aW9uJylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHJvbGU6ICduYXZpZ2F0aW9uJyxcbn0pXG5jbGFzcyBTYmJOYXZpZ2F0aW9uRWxlbWVudCBleHRlbmRzIFNiYlVwZGF0ZVNjaGVkdWxlck1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgbmF2aWdhdGlvbi5cbiAgICogQWNjZXB0cyBib3RoIGEgc3RyaW5nIChpZCBvZiBhbiBlbGVtZW50KSBvciBhbiBIVE1MIGVsZW1lbnQuXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IHRyaWdnZXIodmFsdWU6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5fdHJpZ2dlcjtcbiAgICB0aGlzLl90cmlnZ2VyID0gdmFsdWU7XG4gICAgdGhpcy5fcmVtb3ZlVHJpZ2dlckNsaWNrTGlzdGVuZXIodGhpcy5fdHJpZ2dlciwgb2xkVmFsdWUpO1xuICB9XG4gIHB1YmxpYyBnZXQgdHJpZ2dlcigpOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyO1xuICB9XG4gIHByaXZhdGUgX3RyaWdnZXI6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgY2xvc2UgYnV0dG9uIGVsZW1lbnQuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1jbG9zZS1sYWJlbCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIGFjY2Vzc2liaWxpdHlDbG9zZUxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogV2hldGhlciBhIG5hdmlnYXRpb24gc2VjdGlvbiBpcyBkaXNwbGF5ZWQuXG4gICAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9hY3RpdmVOYXZpZ2F0aW9uU2VjdGlvbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgZ2V0IGFjdGl2ZU5hdmlnYXRpb25TZWN0aW9uKCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZU5hdmlnYXRpb25TZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBfbmF2aWdhdGlvbiE6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF9uYXZpZ2F0aW9uQ29udGVudEVsZW1lbnQhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX25hdmlnYXRpb25Db250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF93aW5kb3dFdmVudHNDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9hYm9ydCA9IG5ldyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfaW5lcnRDb250cm9sbGVyID0gbmV3IFNiYkluZXJ0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfZm9jdXNIYW5kbGVyID0gbmV3IFNiYkZvY3VzSGFuZGxlcigpO1xuICBwcml2YXRlIF9zY3JvbGxIYW5kbGVyID0gbmV3IFNiYlNjcm9sbEhhbmRsZXIoKTtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25OYXZpZ2F0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3Jlc2l6ZU9ic2VydmVyVGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbmF2aWdhdGlvblJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLl9vbk5hdmlnYXRpb25SZXNpemUoKSxcbiAgfSk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBuZXcgTXV0YXRpb25Db250cm9sbGVyKHRoaXMsIHtcbiAgICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgICAgY29uZmlnOiBuYXZpZ2F0aW9uT2JzZXJ2ZXJDb25maWcsXG4gICAgICBjYWxsYmFjazogKG11dGF0aW9uc0xpc3Q6IE11dGF0aW9uUmVjb3JkW10pID0+IHRoaXMuX29uTmF2aWdhdGlvblNlY3Rpb25DaGFuZ2UobXV0YXRpb25zTGlzdCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgfHwgIXRoaXMuX25hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5fY2hlY2tBY3RpdmVBY3Rpb25zKCk7XG4gICAgdGhpcy5fY2hlY2tBY3RpdmVTZWN0aW9uKCk7XG4gICAgdGhpcy5zdGFydFVwZGF0ZSgpO1xuXG4gICAgLy8gRGlzYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIG5hdmlnYXRpb25cbiAgICB0aGlzLl9zY3JvbGxIYW5kbGVyLmRpc2FibGVTY3JvbGwoKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrQWN0aXZlU2VjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVBY3Rpb24gPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnc2JiLW5hdmlnYXRpb24tYnV0dG9uLnNiYi1hY3RpdmUnLFxuICAgICkgYXMgU2JiTmF2aWdhdGlvbkJ1dHRvbkVsZW1lbnQ7XG4gICAgYWN0aXZlQWN0aW9uPy5jb25uZWN0ZWRTZWN0aW9uPy5vcGVuKCk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FjdGl2ZUFjdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlQWN0aW9ucyA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJzppcyhzYmItbmF2aWdhdGlvbi1idXR0b24sIHNiYi1uYXZpZ2F0aW9uLWxpbmspLnNiYi1hY3RpdmUnKSxcbiAgICApIGFzIChTYmJOYXZpZ2F0aW9uQnV0dG9uRWxlbWVudCB8IFNiYk5hdmlnYXRpb25MaW5rRWxlbWVudClbXTtcbiAgICBhY3RpdmVBY3Rpb25zPy5mb3JFYWNoKChhY3Rpb24pID0+IGFjdGlvbi5tYXJrZXI/LnNlbGVjdChhY3Rpb24pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLndpbGxDbG9zZS5lbWl0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnN0YXJ0VXBkYXRlKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICB9XG5cbiAgLy8gUmVtb3ZlcyB0cmlnZ2VyIGNsaWNrIGxpc3RlbmVyIG9uIHRyaWdnZXIgY2hhbmdlLlxuICBwcml2YXRlIF9yZW1vdmVUcmlnZ2VyQ2xpY2tMaXN0ZW5lcihcbiAgICBuZXdWYWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsLFxuICAgIG9sZFZhbHVlOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwsXG4gICk6IHZvaWQge1xuICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZSh0aGlzLnRyaWdnZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSB0cmlnZ2VyIGlzIHZhbGlkIGFuZCBhdHRhY2ggY2xpY2sgZXZlbnQgbGlzdGVuZXJzLlxuICBwcml2YXRlIF9jb25maWd1cmUodHJpZ2dlcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG5cbiAgICBpZiAoIXRyaWdnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IGZpbmRSZWZlcmVuY2VkRWxlbWVudCh0cmlnZ2VyKTtcblxuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnbWVudScsIHRoaXMuaWQsIHRoaXMuc3RhdGUpO1xuICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fbmF2aWdhdGlvbkNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJhcEZvY3VzRmlsdGVyID0gKGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBlbC5ub2RlTmFtZSAhPT0gJ1NCQi1OQVZJR0FUSU9OLVNFQ1RJT04nIHx8IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScpID09PSAnb3BlbmVkJztcbiAgfTtcblxuICAvLyBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgICB0aGlzLmRpZE9wZW4uZW1pdCgpO1xuICAgICAgdGhpcy5fbmF2aWdhdGlvblJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcyk7XG4gICAgICB0aGlzLl9pbmVydENvbnRyb2xsZXIuYWN0aXZhdGUoKTtcbiAgICAgIHRoaXMuX2ZvY3VzSGFuZGxlci50cmFwKHRoaXMsIHsgZmlsdGVyOiB0aGlzLl90cmFwRm9jdXNGaWx0ZXIgfSk7XG4gICAgICB0aGlzLl9hdHRhY2hXaW5kb3dFdmVudHMoKTtcbiAgICAgIHRoaXMuX3NldE5hdmlnYXRpb25Gb2N1cygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAnY2xvc2VkJztcbiAgICAgIHRoaXMuX25hdmlnYXRpb25Db250ZW50RWxlbWVudC5zY3JvbGxUbygwLCAwKTtcbiAgICAgIHNldE1vZGFsaXR5T25OZXh0Rm9jdXModGhpcy5fdHJpZ2dlckVsZW1lbnQpO1xuICAgICAgdGhpcy5faW5lcnRDb250cm9sbGVyLmRlYWN0aXZhdGUoKTtcbiAgICAgIC8vIFRvIGVuYWJsZSBmb2N1c2luZyBvdGhlciBlbGVtZW50IHRoYW4gdGhlIHRyaWdnZXIsIHdlIG5lZWQgdG8gY2FsbCBmb2N1cygpIGEgc2Vjb25kIHRpbWUuXG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgIHRoaXMuZGlkQ2xvc2UuZW1pdCgpO1xuICAgICAgdGhpcy5fbmF2aWdhdGlvblJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzKTtcbiAgICAgIHRoaXMuX3Jlc2V0TWFya2VycygpO1xuICAgICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2ZvY3VzSGFuZGxlci5kaXNjb25uZWN0KCk7XG5cbiAgICAgIC8vIEVuYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIG5hdmlnYXRpb25cbiAgICAgIHRoaXMuX3Njcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gICAgfVxuICAgIHRoaXMuY29tcGxldGVVcGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0TWFya2VycygpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVBY3Rpb25zID0gQXJyYXkuZnJvbShcbiAgICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJzppcyhzYmItbmF2aWdhdGlvbi1idXR0b24sIHNiYi1uYXZpZ2F0aW9uLWxpbmspW2RhdGEtYWN0aW9uLWFjdGl2ZV06bm90KC5zYmItYWN0aXZlKScsXG4gICAgICApLFxuICAgICkgYXMgKFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IHwgU2JiTmF2aWdhdGlvbkxpbmtFbGVtZW50KVtdO1xuICAgIGFjdGl2ZUFjdGlvbnM/LmZvckVhY2goKGFjdGlvbikgPT4gYWN0aW9uLm1hcmtlcj8ucmVzZXQoKSk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hXaW5kb3dFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5fb25LZXlkb3duRXZlbnQoZXZlbnQpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlTmF2aWdhdGlvbkNsb3NlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBvc2VkUGF0aEVsZW1lbnRzID0gZXZlbnRcbiAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgLmZpbHRlcigoZWwpID0+IGVsIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50KTtcbiAgICBpZiAoY29tcG9zZWRQYXRoRWxlbWVudHMuc29tZSgoZWwpID0+IHRoaXMuX2lzQ2xvc2VFbGVtZW50KGVsIGFzIEhUTUxFbGVtZW50KSkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0Nsb3NlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnQScgfHxcbiAgICAgIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc2JiLW5hdmlnYXRpb24tY2xvc2UnKSAmJiAhZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpXG4gICAgKTtcbiAgfVxuXG4gIC8vIENsb3NlcyB0aGUgbmF2aWdhdGlvbiBvbiBcIkVzY1wiIGtleSBwcmVzc2VkLlxuICBwcml2YXRlIF9vbktleWRvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnb3BlbmVkJyAmJiBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IGZvY3VzIG9uIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudC5cbiAgcHJpdmF0ZSBfc2V0TmF2aWdhdGlvbkZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKFxuICAgICAgJyNzYmItbmF2aWdhdGlvbi1jbG9zZS1idXR0b24nLFxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyhjbG9zZUJ1dHRvbik7XG4gICAgY2xvc2VCdXR0b24uZm9jdXMoKTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBwb2ludGVyZG93biBldmVudCB0YXJnZXQgaXMgdHJpZ2dlcmVkIG9uIHRoZSBuYXZpZ2F0aW9uLlxuICBwcml2YXRlIF9wb2ludGVyRG93bkxpc3RlbmVyID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk5hdmlnYXRpb24gPVxuICAgICAgaXNFdmVudE9uRWxlbWVudCh0aGlzLl9uYXZpZ2F0aW9uLCBldmVudCkgfHxcbiAgICAgIGlzRXZlbnRPbkVsZW1lbnQoXG4gICAgICAgIHRoaXMucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAnc2JiLW5hdmlnYXRpb24tc2VjdGlvbltkYXRhLXN0YXRlPVwib3BlbmVkXCJdJyxcbiAgICAgICAgKT8uc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcignbmF2LnNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24nKSBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgZXZlbnQsXG4gICAgICApO1xuICB9O1xuXG4gIC8vIENsb3NlIG5hdmlnYXRpb24gb24gYmFja2Ryb3AgY2xpY2suXG4gIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTmF2aWdhdGlvbiAmJiAhaXNFdmVudE9uRWxlbWVudCh0aGlzLl9uYXZpZ2F0aW9uLCBldmVudCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gT2JzZXJ2ZSBjaGFuZ2VzIG9uIG5hdmlnYXRpb24gc2VjdGlvbiBkYXRhLXN0YXRlLlxuICBwcml2YXRlIF9vbk5hdmlnYXRpb25TZWN0aW9uQ2hhbmdlKG11dGF0aW9uc0xpc3Q6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHtcbiAgICAgIGlmICgobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5ub2RlTmFtZSA9PT0gJ1NCQi1OQVZJR0FUSU9OLVNFQ1RJT04nKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZU5hdmlnYXRpb25TZWN0aW9uID0gdGhpcy5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICdzYmItbmF2aWdhdGlvbi1zZWN0aW9uW2RhdGEtc3RhdGU9XCJvcGVuaW5nXCJdLCBzYmItbmF2aWdhdGlvbi1zZWN0aW9uW2RhdGEtc3RhdGU9XCJvcGVuZWRcIl0nLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1oYXMtbmF2aWdhdGlvbi1zZWN0aW9uJywgISF0aGlzLl9hY3RpdmVOYXZpZ2F0aW9uU2VjdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25OYXZpZ2F0aW9uUmVzaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQpO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLXJlc2l6ZS1kaXNhYmxlLWFuaW1hdGlvbicsIHRydWUpO1xuXG4gICAgLy8gRGlzYWJsZSB0aGUgYW5pbWF0aW9uIHdoZW4gcmVzaXppbmcgdGhlIG5hdmlnYXRpb24gdG8gYXZvaWQgc3RyYW5nZSBoZWlnaHQgdHJhbnNpdGlvbiBlZmZlY3RzLlxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAoKSA9PiB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1yZXNpemUtZGlzYWJsZS1hbmltYXRpb24nKSxcbiAgICAgIERFQk9VTkNFX1RJTUUsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuaWQgfHw9IGBzYmItbmF2aWdhdGlvbi0ke25leHRJZCsrfWA7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gdGhpcy5faGFuZGxlTmF2aWdhdGlvbkNsb3NlKGUpLCB7IHNpZ25hbCB9KTtcbiAgICAvLyBWYWxpZGF0ZSB0cmlnZ2VyIGVsZW1lbnQgYW5kIGF0dGFjaCBldmVudCBsaXN0ZW5lcnNcbiAgICB0aGlzLl9jb25maWd1cmUodGhpcy50cmlnZ2VyKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIChldmVudCkgPT4gdGhpcy5fY2xvc2VPbkJhY2tkcm9wQ2xpY2soZXZlbnQpLCB7IHNpZ25hbCB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGV2ZW50KSA9PiB0aGlzLl9wb2ludGVyRG93bkxpc3RlbmVyKGV2ZW50KSwgeyBzaWduYWwgfSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2ZvY3VzSGFuZGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gaHRtbGBcbiAgICAgIDxzYmItdHJhbnNwYXJlbnQtYnV0dG9uXG4gICAgICAgIGlkPVwic2JiLW5hdmlnYXRpb24tY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzYmItbmF2aWdhdGlvbl9fY2xvc2VcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbCB8fCBpMThuQ2xvc2VOYXZpZ2F0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICBhcmlhLWNvbnRyb2xzPVwic2JiLW5hdmlnYXRpb24tb3ZlcmxheVwiXG4gICAgICAgIG5lZ2F0aXZlXG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgc2JiLW5hdmlnYXRpb24tY2xvc2VcbiAgICAgID48L3NiYi10cmFuc3BhcmVudC1idXR0b24+XG4gICAgYDtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGlkPVwic2JiLW5hdmlnYXRpb24tb3ZlcmxheVwiXG4gICAgICAgICAgQGFuaW1hdGlvbmVuZD0keyhldmVudDogQW5pbWF0aW9uRXZlbnQpID0+IHRoaXMuX29uQW5pbWF0aW9uRW5kKGV2ZW50KX1cbiAgICAgICAgICBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uXCJcbiAgICAgICAgICAke3JlZigobmF2aWdhdGlvblJlZj86IEVsZW1lbnQpID0+ICh0aGlzLl9uYXZpZ2F0aW9uID0gbmF2aWdhdGlvblJlZiBhcyBIVE1MRGl2RWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uX19oZWFkZXJcIj4ke2Nsb3NlQnV0dG9ufTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbmF2aWdhdGlvbl9fd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uX19jb250ZW50XCJcbiAgICAgICAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX25hdmlnYXRpb25Db250ZW50RWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNsb3QgbmFtZT1cIm5hdmlnYXRpb24tc2VjdGlvblwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1uYXZpZ2F0aW9uJzogU2JiTmF2aWdhdGlvbkVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQkEsTUFBTSwyQkFBaUQ7QUFBQSxFQUNyRCxTQUFTO0FBQUEsRUFDVCxpQkFBaUIsQ0FBQyxZQUFZOztBQUdoQyxJQUFJLFNBQVM7QUFDYixNQUFNLGdCQUFnQjtJQW1CaEIsd0JBQW9CLE1BQUE7O0FBSnpCLE1BQUEsbUJBQUEsQ0FBQSxjQUFjLGdCQUFnQixHQUM5QixlQUFlO0FBQUEsSUFDZCxNQUFNO0FBQUEsRUFBQSxDQUNQLENBQUM7Ozs7b0JBQ2lDLHdCQUF3Qix1QkFBdUI7Ozs7Ozs7OztBQUF2RCxFQUFBLG1CQUFRLFlBQWdEO0FBQUEsSUFtRGpGLGNBQUE7O0FBNUJBO0FBS1M7QUFaRCxXQUFBLFlBaEJKLGtCQUFBLE1BQUEsMEJBQUEsR0FnQjRDO0FBT2hDLHlCQUFBLDJDQUFBLGtCQUFBLE1BQUEsdUNBQWtDLEVBQUU7QUFLMUIseUJBQUEsNkNBQUEsa0JBQUEsTUFBQSwwQ0FBQSxHQUFBLGtCQUFBLE1B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