@sbb-esta/lyne-elements 1.6.0 → 1.8.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 (609) hide show
  1. package/accordion/accordion.d.ts +0 -1
  2. package/action-group/action-group.d.ts +0 -1
  3. package/alert/alert/alert.d.ts +0 -1
  4. package/alert/alert-group/alert-group.d.ts +0 -1
  5. package/alert/alert.js +1 -1
  6. package/autocomplete/autocomplete-base-element.d.ts +0 -1
  7. package/autocomplete/autocomplete.d.ts +0 -1
  8. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  9. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +0 -1
  10. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts +0 -1
  11. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +0 -1
  12. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +0 -1
  13. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts +0 -1
  14. package/autocomplete.js +1 -1
  15. package/breadcrumb/breadcrumb/breadcrumb.d.ts +0 -1
  16. package/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts +0 -1
  17. package/breadcrumb/breadcrumb-group.js +2 -2
  18. package/breadcrumb/breadcrumb.js +11 -11
  19. package/button/button/button.d.ts +0 -1
  20. package/button/button-link/button-link.d.ts +0 -1
  21. package/button/button-static/button-static.d.ts +0 -1
  22. package/button/common/button-common.d.ts +0 -1
  23. package/button/mini-button/mini-button-base-element.d.ts +0 -1
  24. package/button/mini-button/mini-button.d.ts +0 -1
  25. package/button/mini-button-group/index.d.ts +2 -0
  26. package/button/mini-button-group/index.d.ts.map +1 -0
  27. package/button/mini-button-group/mini-button-group.d.ts +28 -0
  28. package/button/mini-button-group/mini-button-group.d.ts.map +1 -0
  29. package/button/mini-button-group.d.ts +2 -0
  30. package/button/mini-button-group.d.ts.map +1 -0
  31. package/button/mini-button-group.js +47 -0
  32. package/button/secondary-button/secondary-button.d.ts +0 -1
  33. package/button/secondary-button-link/secondary-button-link.d.ts +0 -1
  34. package/button/secondary-button-static/secondary-button-static.d.ts +0 -1
  35. package/button/tertiary-button/tertiary-button.d.ts +0 -1
  36. package/button/tertiary-button-link/tertiary-button-link.d.ts +0 -1
  37. package/button/tertiary-button-static/tertiary-button-static.d.ts +0 -1
  38. package/button/transparent-button/transparent-button.d.ts +0 -1
  39. package/button/transparent-button-link/transparent-button-link.d.ts +0 -1
  40. package/button/transparent-button-static/transparent-button-static.d.ts +0 -1
  41. package/button.d.ts +1 -0
  42. package/button.d.ts.map +1 -1
  43. package/button.js +1 -0
  44. package/calendar/calendar.d.ts +5 -3
  45. package/calendar/calendar.d.ts.map +1 -1
  46. package/calendar.js +73 -66
  47. package/card/card/card.d.ts +0 -1
  48. package/card/card-badge/card-badge.d.ts +0 -1
  49. package/card/card-button/card-button.d.ts +0 -1
  50. package/card/card-link/card-link.d.ts +0 -1
  51. package/card/card.js +1 -1
  52. package/card/common/card-action-common.d.ts +0 -1
  53. package/checkbox/checkbox/checkbox.d.ts +0 -1
  54. package/checkbox/checkbox-group/checkbox-group.d.ts +0 -1
  55. package/checkbox/checkbox-panel/checkbox-panel.d.ts +0 -1
  56. package/checkbox/common/checkbox-common.d.ts +0 -1
  57. package/chip/chip.d.ts +0 -1
  58. package/chip.js +1 -1
  59. package/clock/clock.d.ts +0 -1
  60. package/clock/clock.d.ts.map +1 -1
  61. package/container/container/container.d.ts +1 -1
  62. package/container/container/container.d.ts.map +1 -1
  63. package/container/container.js +21 -16
  64. package/container/sticky-bar/sticky-bar.d.ts +0 -1
  65. package/container/sticky-bar.js +5 -5
  66. package/core/a11y/focus-visible-within-controller.d.ts +0 -1
  67. package/core/base-elements/action-base-element.d.ts +0 -1
  68. package/core/base-elements/button-base-element.d.ts +0 -1
  69. package/core/base-elements/link-base-element.d.ts +0 -1
  70. package/core/base-elements/open-close-base-element.d.ts +10 -1
  71. package/core/base-elements/open-close-base-element.d.ts.map +1 -1
  72. package/core/base-elements.js +4 -0
  73. package/core/config/config.d.ts +0 -1
  74. package/core/controllers/connected-abort-controller.d.ts +0 -1
  75. package/core/controllers/inert-controller.d.ts +18 -0
  76. package/core/controllers/inert-controller.d.ts.map +1 -0
  77. package/core/controllers/language-controller.d.ts +0 -1
  78. package/core/controllers/slot-state-controller.d.ts +0 -1
  79. package/core/controllers.d.ts +1 -0
  80. package/core/controllers.d.ts.map +1 -1
  81. package/core/controllers.js +67 -23
  82. package/core/datetime/native-date-adapter.d.ts +0 -1
  83. package/core/decorators/host-attributes.d.ts +0 -1
  84. package/core/decorators/slot-state.d.ts +0 -1
  85. package/core/dom/ssr.d.ts +0 -1
  86. package/core/eventing/form-element-handlers.d.ts +0 -1
  87. package/core/i18n/i18n.d.ts +0 -1
  88. package/core/i18n.js +1 -1
  89. package/core/images.d.ts.map +1 -1
  90. package/core/mixins/disabled-mixin.d.ts +0 -1
  91. package/core/mixins/form-associated-checkbox-mixin.d.ts +0 -1
  92. package/core/mixins/form-associated-mixin.d.ts +0 -1
  93. package/core/mixins/hydration-mixin.d.ts +0 -1
  94. package/core/mixins/named-slot-list-mixin.d.ts +7 -2
  95. package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  96. package/core/mixins/negative-mixin.d.ts +0 -1
  97. package/core/mixins/panel-mixin.d.ts +0 -1
  98. package/core/mixins/required-mixin.d.ts +0 -1
  99. package/core/mixins/update-scheduler-mixin.d.ts +0 -1
  100. package/core/mixins.js +100 -88
  101. package/core/overlay/overlay.d.ts +0 -14
  102. package/core/overlay/overlay.d.ts.map +1 -1
  103. package/core/overlay.js +36 -86
  104. package/core/styles/core.scss +21 -19
  105. package/core/styles/mixins/link.scss +9 -6
  106. package/core/styles/mixins/lists.scss +5 -5
  107. package/core/styles/mixins/pearl-chain-bullet.scss +14 -9
  108. package/core/styles/mixins/table.scss +19 -17
  109. package/core/testing/mocha-extensions.d.ts +0 -1
  110. package/core/testing/wait-for-image-ready.d.ts +0 -1
  111. package/core/testing/wait-for-render.d.ts +0 -1
  112. package/core.css +10 -8
  113. package/custom-elements.json +3533 -1027
  114. package/datepicker/common/datepicker-button.d.ts +0 -1
  115. package/datepicker/datepicker/datepicker.d.ts +0 -1
  116. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts +0 -1
  117. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +0 -1
  118. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +4 -1
  119. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  120. package/datepicker/datepicker-toggle.js +51 -41
  121. package/development/accordion/accordion.d.ts +0 -1
  122. package/development/action-group/action-group.d.ts +0 -1
  123. package/development/alert/alert/alert.d.ts +0 -1
  124. package/development/alert/alert-group/alert-group.d.ts +0 -1
  125. package/development/alert/alert.js +1 -1
  126. package/development/autocomplete/autocomplete-base-element.d.ts +0 -1
  127. package/development/autocomplete/autocomplete.d.ts +0 -1
  128. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  129. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +0 -1
  130. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts +0 -1
  131. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +0 -1
  132. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +0 -1
  133. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts +0 -1
  134. package/development/autocomplete.js +7 -5
  135. package/development/breadcrumb/breadcrumb/breadcrumb.d.ts +0 -1
  136. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts +0 -1
  137. package/development/breadcrumb/breadcrumb-group.js +4 -4
  138. package/development/breadcrumb/breadcrumb.js +8 -6
  139. package/development/button/button/button.d.ts +0 -1
  140. package/development/button/button-link/button-link.d.ts +0 -1
  141. package/development/button/button-static/button-static.d.ts +0 -1
  142. package/development/button/common/button-common.d.ts +0 -1
  143. package/development/button/mini-button/mini-button-base-element.d.ts +0 -1
  144. package/development/button/mini-button/mini-button.d.ts +0 -1
  145. package/development/button/mini-button-group/index.d.ts +2 -0
  146. package/development/button/mini-button-group/index.d.ts.map +1 -0
  147. package/development/button/mini-button-group/mini-button-group.d.ts +28 -0
  148. package/development/button/mini-button-group/mini-button-group.d.ts.map +1 -0
  149. package/development/button/mini-button-group.d.ts +2 -0
  150. package/development/button/mini-button-group.d.ts.map +1 -0
  151. package/development/button/mini-button-group.js +142 -0
  152. package/development/button/secondary-button/secondary-button.d.ts +0 -1
  153. package/development/button/secondary-button-link/secondary-button-link.d.ts +0 -1
  154. package/development/button/secondary-button-static/secondary-button-static.d.ts +0 -1
  155. package/development/button/tertiary-button/tertiary-button.d.ts +0 -1
  156. package/development/button/tertiary-button-link/tertiary-button-link.d.ts +0 -1
  157. package/development/button/tertiary-button-static/tertiary-button-static.d.ts +0 -1
  158. package/development/button/transparent-button/transparent-button.d.ts +0 -1
  159. package/development/button/transparent-button-link/transparent-button-link.d.ts +0 -1
  160. package/development/button/transparent-button-static/transparent-button-static.d.ts +0 -1
  161. package/development/button.d.ts +1 -0
  162. package/development/button.d.ts.map +1 -1
  163. package/development/button.js +2 -1
  164. package/development/calendar/calendar.d.ts +5 -3
  165. package/development/calendar/calendar.d.ts.map +1 -1
  166. package/development/calendar.js +38 -22
  167. package/development/card/card/card.d.ts +0 -1
  168. package/development/card/card-badge/card-badge.d.ts +0 -1
  169. package/development/card/card-button/card-button.d.ts +0 -1
  170. package/development/card/card-link/card-link.d.ts +0 -1
  171. package/development/card/card.js +3 -3
  172. package/development/card/common/card-action-common.d.ts +0 -1
  173. package/development/checkbox/checkbox/checkbox.d.ts +0 -1
  174. package/development/checkbox/checkbox-group/checkbox-group.d.ts +0 -1
  175. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +0 -1
  176. package/development/checkbox/common/checkbox-common.d.ts +0 -1
  177. package/development/chip/chip.d.ts +0 -1
  178. package/development/chip.js +4 -2
  179. package/development/clock/clock.d.ts +0 -1
  180. package/development/clock/clock.d.ts.map +1 -1
  181. package/development/clock.js +1 -1
  182. package/development/container/container/container.d.ts +1 -1
  183. package/development/container/container/container.d.ts.map +1 -1
  184. package/development/container/container.js +44 -4
  185. package/development/container/sticky-bar/sticky-bar.d.ts +0 -1
  186. package/development/container/sticky-bar.js +1 -4
  187. package/development/core/a11y/focus-visible-within-controller.d.ts +0 -1
  188. package/development/core/base-elements/action-base-element.d.ts +0 -1
  189. package/development/core/base-elements/button-base-element.d.ts +0 -1
  190. package/development/core/base-elements/link-base-element.d.ts +0 -1
  191. package/development/core/base-elements/open-close-base-element.d.ts +10 -1
  192. package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
  193. package/development/core/base-elements.js +5 -1
  194. package/development/core/config/config.d.ts +0 -1
  195. package/development/core/controllers/connected-abort-controller.d.ts +0 -1
  196. package/development/core/controllers/inert-controller.d.ts +18 -0
  197. package/development/core/controllers/inert-controller.d.ts.map +1 -0
  198. package/development/core/controllers/language-controller.d.ts +0 -1
  199. package/development/core/controllers/slot-state-controller.d.ts +0 -1
  200. package/development/core/controllers.d.ts +1 -0
  201. package/development/core/controllers.d.ts.map +1 -1
  202. package/development/core/controllers.js +90 -1
  203. package/development/core/datetime/native-date-adapter.d.ts +0 -1
  204. package/development/core/decorators/host-attributes.d.ts +0 -1
  205. package/development/core/decorators/slot-state.d.ts +0 -1
  206. package/development/core/dom/ssr.d.ts +0 -1
  207. package/development/core/eventing/form-element-handlers.d.ts +0 -1
  208. package/development/core/i18n/i18n.d.ts +0 -1
  209. package/development/core/i18n.js +2 -2
  210. package/development/core/images.d.ts.map +1 -1
  211. package/development/core/mixins/disabled-mixin.d.ts +0 -1
  212. package/development/core/mixins/form-associated-checkbox-mixin.d.ts +0 -1
  213. package/development/core/mixins/form-associated-mixin.d.ts +0 -1
  214. package/development/core/mixins/hydration-mixin.d.ts +0 -1
  215. package/development/core/mixins/named-slot-list-mixin.d.ts +7 -2
  216. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  217. package/development/core/mixins/negative-mixin.d.ts +0 -1
  218. package/development/core/mixins/panel-mixin.d.ts +0 -1
  219. package/development/core/mixins/required-mixin.d.ts +0 -1
  220. package/development/core/mixins/update-scheduler-mixin.d.ts +0 -1
  221. package/development/core/mixins.js +24 -12
  222. package/development/core/overlay/overlay.d.ts +0 -14
  223. package/development/core/overlay/overlay.d.ts.map +1 -1
  224. package/development/core/overlay.js +1 -87
  225. package/development/core/testing/mocha-extensions.d.ts +0 -1
  226. package/development/core/testing/wait-for-image-ready.d.ts +0 -1
  227. package/development/core/testing/wait-for-render.d.ts +0 -1
  228. package/development/datepicker/common/datepicker-button.d.ts +0 -1
  229. package/development/datepicker/datepicker/datepicker.d.ts +0 -1
  230. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts +0 -1
  231. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +0 -1
  232. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +4 -1
  233. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  234. package/development/datepicker/datepicker-toggle.js +20 -3
  235. package/development/dialog/dialog/dialog.d.ts +0 -1
  236. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  237. package/development/dialog/dialog-actions/dialog-actions.d.ts +0 -1
  238. package/development/dialog/dialog-content/dialog-content.d.ts +0 -1
  239. package/development/dialog/dialog-content.js +8 -6
  240. package/development/dialog/dialog-title/dialog-title.d.ts +0 -1
  241. package/development/dialog/dialog.js +9 -6
  242. package/development/divider/divider.d.ts +0 -1
  243. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +0 -1
  244. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts +0 -1
  245. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +0 -1
  246. package/development/expansion-panel/expansion-panel-header.js +1 -1
  247. package/development/file-selector/file-selector.d.ts +0 -1
  248. package/development/flip-card/flip-card/flip-card.d.ts +22 -7
  249. package/development/flip-card/flip-card/flip-card.d.ts.map +1 -1
  250. package/development/flip-card/flip-card-details/flip-card-details.d.ts +0 -1
  251. package/development/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  252. package/development/flip-card/flip-card-details.js +28 -9
  253. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts +0 -1
  254. package/development/flip-card/flip-card-summary.js +8 -1
  255. package/development/flip-card/flip-card.js +132 -32
  256. package/development/footer/footer.d.ts +0 -1
  257. package/development/footer.js +1 -1
  258. package/development/form-error/form-error.d.ts +0 -1
  259. package/development/form-error.js +4 -4
  260. package/development/form-field/form-field/form-field.d.ts +1 -2
  261. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  262. package/development/form-field/form-field-clear/form-field-clear.d.ts +0 -1
  263. package/development/form-field/form-field.js +74 -29
  264. package/development/header/common/header-action-common.d.ts +0 -1
  265. package/development/header/common.js +2 -2
  266. package/development/header/header/header.d.ts +0 -1
  267. package/development/header/header-button/header-button.d.ts +0 -1
  268. package/development/header/header-link/header-link.d.ts +0 -1
  269. package/development/header/header.js +2 -2
  270. package/development/icon/icon-base.d.ts +0 -1
  271. package/development/icon/icon-name-mixin.d.ts +0 -1
  272. package/development/icon/icon.d.ts +0 -1
  273. package/development/image/image.d.ts +0 -1
  274. package/development/image.js +2 -2
  275. package/development/journey-header/journey-header.d.ts +0 -1
  276. package/development/lead-container/lead-container.d.ts +0 -1
  277. package/development/lead-container.js +6 -2
  278. package/development/link/block-link/block-link.d.ts +0 -1
  279. package/development/link/block-link-button/block-link-button.d.ts +0 -1
  280. package/development/link/block-link-static/block-link-static.d.ts +0 -1
  281. package/development/link/common/block-link-common.d.ts +0 -1
  282. package/development/link/common/inline-link-common.d.ts +0 -1
  283. package/development/link/common/link-common.d.ts +0 -1
  284. package/development/link/common.js +9 -7
  285. package/development/link/link/link.d.ts +0 -1
  286. package/development/link/link-button/link-button.d.ts +0 -1
  287. package/development/link/link-static/link-static.d.ts +0 -1
  288. package/development/link-list/common/link-list-base.d.ts +27 -0
  289. package/development/link-list/common/link-list-base.d.ts.map +1 -0
  290. package/development/link-list/common.d.ts +2 -0
  291. package/development/link-list/common.d.ts.map +1 -0
  292. package/development/link-list/common.js +113 -0
  293. package/development/link-list/link-list/link-list.d.ts +22 -0
  294. package/development/link-list/link-list/link-list.d.ts.map +1 -0
  295. package/development/link-list/link-list-anchor/index.d.ts +2 -0
  296. package/development/link-list/link-list-anchor/index.d.ts.map +1 -0
  297. package/development/link-list/link-list-anchor/link-list-anchor.d.ts +17 -0
  298. package/development/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -0
  299. package/development/link-list/link-list-anchor.d.ts +2 -0
  300. package/development/link-list/link-list-anchor.d.ts.map +1 -0
  301. package/development/link-list/link-list-anchor.js +91 -0
  302. package/development/link-list/link-list.d.ts +1 -38
  303. package/development/link-list/link-list.d.ts.map +1 -1
  304. package/development/link-list/link-list.js +194 -0
  305. package/development/link-list.d.ts +2 -0
  306. package/development/link-list.d.ts.map +1 -1
  307. package/development/link-list.js +4 -260
  308. package/development/loading-indicator/loading-indicator.d.ts +0 -1
  309. package/development/logo/logo.d.ts +0 -1
  310. package/development/logo.js +2 -2
  311. package/development/map-container/map-container.d.ts +0 -1
  312. package/development/map-container.js +13 -11
  313. package/development/menu/common/menu-action-common.d.ts +0 -1
  314. package/development/menu/menu/menu.d.ts +1 -1
  315. package/development/menu/menu/menu.d.ts.map +1 -1
  316. package/development/menu/menu-button/menu-button.d.ts +0 -1
  317. package/development/menu/menu-link/menu-link.d.ts +0 -1
  318. package/development/menu/menu.js +13 -14
  319. package/development/message/message.d.ts +0 -1
  320. package/development/navigation/common/navigation-action-common.d.ts +0 -1
  321. package/development/navigation/navigation/navigation.d.ts +1 -1
  322. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  323. package/development/navigation/navigation-button/navigation-button.d.ts +0 -1
  324. package/development/navigation/navigation-link/navigation-link.d.ts +0 -1
  325. package/development/navigation/navigation-list/navigation-list.d.ts +0 -1
  326. package/development/navigation/navigation-marker/navigation-marker.d.ts +0 -1
  327. package/development/navigation/navigation-section/navigation-section.d.ts +0 -1
  328. package/development/navigation/navigation-section.js +7 -5
  329. package/development/navigation/navigation.js +18 -19
  330. package/development/notification/notification.d.ts +0 -1
  331. package/development/option/optgroup/optgroup-base-element.d.ts +0 -1
  332. package/development/option/optgroup/optgroup.d.ts +0 -1
  333. package/development/option/option/option-base-element.d.ts +0 -1
  334. package/development/option/option/option.d.ts +0 -1
  335. package/development/overlay/overlay-base-element.d.ts +2 -2
  336. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  337. package/development/overlay/overlay.d.ts +0 -1
  338. package/development/overlay/overlay.d.ts.map +1 -1
  339. package/development/overlay.js +13 -13
  340. package/development/popover/popover/popover.d.ts +0 -1
  341. package/development/popover/popover/popover.d.ts.map +1 -1
  342. package/development/popover/popover-trigger/popover-trigger.d.ts +0 -1
  343. package/development/popover/popover-trigger.js +3 -3
  344. package/development/popover/popover.js +6 -4
  345. package/development/radio-button/common/radio-button-common.d.ts +0 -1
  346. package/development/radio-button/common.js +6 -6
  347. package/development/radio-button/radio-button/radio-button.d.ts +0 -1
  348. package/development/radio-button/radio-button-group/radio-button-group.d.ts +0 -1
  349. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +0 -1
  350. package/development/screen-reader-only/screen-reader-only.d.ts +0 -1
  351. package/development/select/select.d.ts +0 -1
  352. package/development/select.js +7 -5
  353. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +0 -1
  354. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  355. package/development/selection-expansion-panel.js +6 -2
  356. package/development/signet/signet.d.ts +0 -1
  357. package/development/signet.js +1 -1
  358. package/development/skiplink-list/skiplink-list.d.ts +0 -1
  359. package/development/slider/slider.d.ts +0 -1
  360. package/development/slider.js +4 -4
  361. package/development/status/status.d.ts +0 -1
  362. package/development/stepper/step/step.d.ts +0 -1
  363. package/development/stepper/step-label/step-label.d.ts +0 -1
  364. package/development/stepper/stepper/stepper.d.ts +0 -1
  365. package/development/table/table-wrapper/table-wrapper.d.ts +0 -1
  366. package/development/tabs/tab/tab.d.ts +0 -1
  367. package/development/tabs/tab-group/tab-group.d.ts +0 -1
  368. package/development/tabs/tab-label/tab-label.d.ts +0 -1
  369. package/development/tabs/tab-label.js +10 -10
  370. package/development/tag/tag/tag.d.ts +0 -1
  371. package/development/tag/tag-group/tag-group.d.ts +0 -1
  372. package/development/tag/tag.js +3 -3
  373. package/development/teaser/teaser.d.ts +0 -1
  374. package/development/teaser-hero/teaser-hero.d.ts +27 -0
  375. package/development/teaser-hero/teaser-hero.d.ts.map +1 -0
  376. package/development/teaser-hero.d.ts +2 -0
  377. package/development/teaser-hero.d.ts.map +1 -0
  378. package/development/teaser-hero.js +207 -0
  379. package/development/teaser-product/common/teaser-product-common.d.ts +7 -0
  380. package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -0
  381. package/development/teaser-product/common.d.ts +2 -0
  382. package/development/teaser-product/common.d.ts.map +1 -0
  383. package/development/teaser-product/common.js +219 -0
  384. package/development/teaser-product/teaser-product/teaser-product.d.ts +22 -0
  385. package/development/teaser-product/teaser-product/teaser-product.d.ts.map +1 -0
  386. package/development/teaser-product/teaser-product-static/teaser-product-static.d.ts +22 -0
  387. package/development/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -0
  388. package/development/teaser-product/teaser-product-static.d.ts +2 -0
  389. package/development/teaser-product/teaser-product-static.d.ts.map +1 -0
  390. package/development/teaser-product/teaser-product-static.js +25 -0
  391. package/development/teaser-product/teaser-product.d.ts +2 -0
  392. package/development/teaser-product/teaser-product.d.ts.map +1 -0
  393. package/development/teaser-product/teaser-product.js +80 -0
  394. package/development/teaser-product.d.ts +4 -0
  395. package/development/teaser-product.d.ts.map +1 -0
  396. package/development/teaser-product.js +4 -0
  397. package/development/time-input/time-input.d.ts +0 -1
  398. package/development/timetable-occupancy/timetable-occupancy.d.ts +0 -1
  399. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +0 -1
  400. package/development/timetable-occupancy.js +1 -1
  401. package/development/title/title-base.d.ts +0 -1
  402. package/development/title/title.d.ts +0 -1
  403. package/development/toast/toast.d.ts +0 -1
  404. package/development/toggle/toggle/toggle.d.ts +2 -2
  405. package/development/toggle/toggle/toggle.d.ts.map +1 -1
  406. package/development/toggle/toggle-option/toggle-option.d.ts +0 -1
  407. package/development/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  408. package/development/toggle/toggle-option.js +3 -2
  409. package/development/toggle/toggle.js +8 -8
  410. package/development/toggle-check/toggle-check.d.ts +0 -1
  411. package/development/train/train/train.d.ts +0 -1
  412. package/development/train/train-blocked-passage/train-blocked-passage.d.ts +0 -1
  413. package/development/train/train-blocked-passage.js +1 -1
  414. package/development/train/train-formation/train-formation.d.ts +0 -1
  415. package/development/train/train-formation.js +9 -7
  416. package/development/train/train-wagon/train-wagon.d.ts +0 -1
  417. package/development/train/train-wagon.js +1 -1
  418. package/development/train/train.js +1 -1
  419. package/development/visual-checkbox/visual-checkbox.d.ts +0 -1
  420. package/development/visual-checkbox.js +1 -1
  421. package/dialog/dialog/dialog.d.ts +0 -1
  422. package/dialog/dialog/dialog.d.ts.map +1 -1
  423. package/dialog/dialog-actions/dialog-actions.d.ts +0 -1
  424. package/dialog/dialog-content/dialog-content.d.ts +0 -1
  425. package/dialog/dialog-content.js +1 -1
  426. package/dialog/dialog-title/dialog-title.d.ts +0 -1
  427. package/dialog/dialog.js +11 -12
  428. package/divider/divider.d.ts +0 -1
  429. package/expansion-panel/expansion-panel/expansion-panel.d.ts +0 -1
  430. package/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts +0 -1
  431. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +0 -1
  432. package/expansion-panel/expansion-panel-header.js +1 -1
  433. package/file-selector/file-selector.d.ts +0 -1
  434. package/flip-card/flip-card/flip-card.d.ts +22 -7
  435. package/flip-card/flip-card/flip-card.d.ts.map +1 -1
  436. package/flip-card/flip-card-details/flip-card-details.d.ts +0 -1
  437. package/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  438. package/flip-card/flip-card-details.js +19 -17
  439. package/flip-card/flip-card-summary/flip-card-summary.d.ts +0 -1
  440. package/flip-card/flip-card-summary.js +13 -13
  441. package/flip-card/flip-card.js +68 -35
  442. package/footer/footer.d.ts +0 -1
  443. package/footer.js +1 -1
  444. package/form-error/form-error.d.ts +0 -1
  445. package/form-error.js +1 -1
  446. package/form-field/form-field/form-field.d.ts +1 -2
  447. package/form-field/form-field/form-field.d.ts.map +1 -1
  448. package/form-field/form-field-clear/form-field-clear.d.ts +0 -1
  449. package/form-field/form-field.js +22 -22
  450. package/header/common/header-action-common.d.ts +0 -1
  451. package/header/common.js +1 -1
  452. package/header/header/header.d.ts +0 -1
  453. package/header/header-button/header-button.d.ts +0 -1
  454. package/header/header-link/header-link.d.ts +0 -1
  455. package/header/header.js +1 -1
  456. package/icon/icon-base.d.ts +0 -1
  457. package/icon/icon-name-mixin.d.ts +0 -1
  458. package/icon/icon.d.ts +0 -1
  459. package/image/image.d.ts +0 -1
  460. package/image.js +25 -25
  461. package/index.d.ts +11 -1
  462. package/index.js +11 -1
  463. package/journey-header/journey-header.d.ts +0 -1
  464. package/lead-container/lead-container.d.ts +0 -1
  465. package/lead-container.js +1 -1
  466. package/link/block-link/block-link.d.ts +0 -1
  467. package/link/block-link-button/block-link-button.d.ts +0 -1
  468. package/link/block-link-static/block-link-static.d.ts +0 -1
  469. package/link/common/block-link-common.d.ts +0 -1
  470. package/link/common/inline-link-common.d.ts +0 -1
  471. package/link/common/link-common.d.ts +0 -1
  472. package/link/common.js +6 -6
  473. package/link/link/link.d.ts +0 -1
  474. package/link/link-button/link-button.d.ts +0 -1
  475. package/link/link-static/link-static.d.ts +0 -1
  476. package/link-list/common/link-list-base.d.ts +27 -0
  477. package/link-list/common/link-list-base.d.ts.map +1 -0
  478. package/link-list/common.d.ts +2 -0
  479. package/link-list/common.d.ts.map +1 -0
  480. package/link-list/common.js +59 -0
  481. package/link-list/link-list/link-list.d.ts +22 -0
  482. package/link-list/link-list/link-list.d.ts.map +1 -0
  483. package/link-list/link-list-anchor/index.d.ts +2 -0
  484. package/link-list/link-list-anchor/index.d.ts.map +1 -0
  485. package/link-list/link-list-anchor/link-list-anchor.d.ts +17 -0
  486. package/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -0
  487. package/link-list/link-list-anchor.d.ts +2 -0
  488. package/link-list/link-list-anchor.d.ts.map +1 -0
  489. package/link-list/link-list-anchor.js +18 -0
  490. package/link-list/link-list.d.ts +1 -38
  491. package/link-list/link-list.d.ts.map +1 -1
  492. package/link-list/link-list.js +27 -0
  493. package/link-list.d.ts +2 -0
  494. package/link-list.d.ts.map +1 -1
  495. package/link-list.js +3 -66
  496. package/loading-indicator/loading-indicator.d.ts +0 -1
  497. package/logo/logo.d.ts +0 -1
  498. package/logo.js +1 -1
  499. package/map-container/map-container.d.ts +0 -1
  500. package/map-container.js +1 -1
  501. package/menu/common/menu-action-common.d.ts +0 -1
  502. package/menu/menu/menu.d.ts +1 -1
  503. package/menu/menu/menu.d.ts.map +1 -1
  504. package/menu/menu-button/menu-button.d.ts +0 -1
  505. package/menu/menu-link/menu-link.d.ts +0 -1
  506. package/menu/menu.js +30 -30
  507. package/message/message.d.ts +0 -1
  508. package/navigation/common/navigation-action-common.d.ts +0 -1
  509. package/navigation/navigation/navigation.d.ts +1 -1
  510. package/navigation/navigation/navigation.d.ts.map +1 -1
  511. package/navigation/navigation-button/navigation-button.d.ts +0 -1
  512. package/navigation/navigation-link/navigation-link.d.ts +0 -1
  513. package/navigation/navigation-list/navigation-list.d.ts +0 -1
  514. package/navigation/navigation-marker/navigation-marker.d.ts +0 -1
  515. package/navigation/navigation-section/navigation-section.d.ts +0 -1
  516. package/navigation/navigation-section.js +1 -1
  517. package/navigation/navigation.js +37 -37
  518. package/notification/notification.d.ts +0 -1
  519. package/option/optgroup/optgroup-base-element.d.ts +0 -1
  520. package/option/optgroup/optgroup.d.ts +0 -1
  521. package/option/option/option-base-element.d.ts +0 -1
  522. package/option/option/option.d.ts +0 -1
  523. package/overlay/overlay-base-element.d.ts +2 -2
  524. package/overlay/overlay-base-element.d.ts.map +1 -1
  525. package/overlay/overlay.d.ts +0 -1
  526. package/overlay/overlay.d.ts.map +1 -1
  527. package/overlay.js +44 -45
  528. package/package.json +46 -1
  529. package/popover/popover/popover.d.ts +0 -1
  530. package/popover/popover/popover.d.ts.map +1 -1
  531. package/popover/popover-trigger/popover-trigger.d.ts +0 -1
  532. package/popover/popover-trigger.js +1 -1
  533. package/popover/popover.js +2 -2
  534. package/radio-button/common/radio-button-common.d.ts +0 -1
  535. package/radio-button/common.js +1 -1
  536. package/radio-button/radio-button/radio-button.d.ts +0 -1
  537. package/radio-button/radio-button-group/radio-button-group.d.ts +0 -1
  538. package/radio-button/radio-button-panel/radio-button-panel.d.ts +0 -1
  539. package/screen-reader-only/screen-reader-only.d.ts +0 -1
  540. package/select/select.d.ts +0 -1
  541. package/select.js +1 -1
  542. package/selection-expansion-panel/selection-expansion-panel.d.ts +0 -1
  543. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  544. package/signet/signet.d.ts +0 -1
  545. package/signet.js +1 -1
  546. package/skiplink-list/skiplink-list.d.ts +0 -1
  547. package/slider/slider.d.ts +0 -1
  548. package/slider.js +1 -1
  549. package/standard-theme.css +19 -13
  550. package/status/status.d.ts +0 -1
  551. package/stepper/step/step.d.ts +0 -1
  552. package/stepper/step-label/step-label.d.ts +0 -1
  553. package/stepper/stepper/stepper.d.ts +0 -1
  554. package/table/table-wrapper/table-wrapper.d.ts +0 -1
  555. package/tabs/tab/tab.d.ts +0 -1
  556. package/tabs/tab-group/tab-group.d.ts +0 -1
  557. package/tabs/tab-label/tab-label.d.ts +0 -1
  558. package/tabs/tab-label.js +1 -1
  559. package/tag/tag/tag.d.ts +0 -1
  560. package/tag/tag-group/tag-group.d.ts +0 -1
  561. package/tag/tag.js +1 -1
  562. package/teaser/teaser.d.ts +0 -1
  563. package/teaser-hero/teaser-hero.d.ts +27 -0
  564. package/teaser-hero/teaser-hero.d.ts.map +1 -0
  565. package/teaser-hero.d.ts +2 -0
  566. package/teaser-hero.d.ts.map +1 -0
  567. package/teaser-hero.js +58 -0
  568. package/teaser-product/common/teaser-product-common.d.ts +7 -0
  569. package/teaser-product/common/teaser-product-common.d.ts.map +1 -0
  570. package/teaser-product/common.d.ts +2 -0
  571. package/teaser-product/common.d.ts.map +1 -0
  572. package/teaser-product/common.js +38 -0
  573. package/teaser-product/teaser-product/teaser-product.d.ts +22 -0
  574. package/teaser-product/teaser-product/teaser-product.d.ts.map +1 -0
  575. package/teaser-product/teaser-product-static/teaser-product-static.d.ts +22 -0
  576. package/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -0
  577. package/teaser-product/teaser-product-static.d.ts +2 -0
  578. package/teaser-product/teaser-product-static.d.ts.map +1 -0
  579. package/teaser-product/teaser-product-static.js +19 -0
  580. package/teaser-product/teaser-product.d.ts +2 -0
  581. package/teaser-product/teaser-product.d.ts.map +1 -0
  582. package/teaser-product/teaser-product.js +21 -0
  583. package/teaser-product.d.ts +4 -0
  584. package/teaser-product.d.ts.map +1 -0
  585. package/teaser-product.js +3 -0
  586. package/time-input/time-input.d.ts +0 -1
  587. package/timetable-occupancy/timetable-occupancy.d.ts +0 -1
  588. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +0 -1
  589. package/timetable-occupancy.js +1 -1
  590. package/title/title-base.d.ts +0 -1
  591. package/title/title.d.ts +0 -1
  592. package/toast/toast.d.ts +0 -1
  593. package/toggle/toggle/toggle.d.ts +2 -2
  594. package/toggle/toggle/toggle.d.ts.map +1 -1
  595. package/toggle/toggle-option/toggle-option.d.ts +0 -1
  596. package/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  597. package/toggle/toggle-option.js +8 -8
  598. package/toggle/toggle.js +21 -22
  599. package/toggle-check/toggle-check.d.ts +0 -1
  600. package/train/train/train.d.ts +0 -1
  601. package/train/train-blocked-passage/train-blocked-passage.d.ts +0 -1
  602. package/train/train-blocked-passage.js +1 -1
  603. package/train/train-formation/train-formation.d.ts +0 -1
  604. package/train/train-formation.js +1 -1
  605. package/train/train-wagon/train-wagon.d.ts +0 -1
  606. package/train/train-wagon.js +1 -1
  607. package/train/train.js +1 -1
  608. package/visual-checkbox/visual-checkbox.d.ts +0 -1
  609. package/visual-checkbox.js +1 -1
@@ -2,7 +2,6 @@ import { PropertyValues, TemplateResult } from 'lit';
2
2
  import { SbbButtonBaseElement } from '../../core/base-elements.js';
3
3
  import { DateAdapter } from '../../core/datetime.js';
4
4
  import { SbbDatepickerElement, SbbInputUpdateEvent } from '../datepicker.js';
5
-
6
5
  declare const SbbDatepickerButton_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbNegativeMixinType> & typeof SbbButtonBaseElement;
7
6
  export declare abstract class SbbDatepickerButton<T = Date> extends SbbDatepickerButton_base {
8
7
  /** Datepicker reference. */
@@ -3,7 +3,6 @@ import { DateAdapter } from '../../core/datetime.js';
3
3
  import { SbbDateLike } from '../../core/interfaces.js';
4
4
  import { SbbDatepickerButton } from '../common.js';
5
5
  import { SbbDatepickerToggleElement } from '../datepicker-toggle.js';
6
-
7
6
  export interface SbbInputUpdateEvent {
8
7
  disabled?: boolean;
9
8
  readonly?: boolean;
@@ -1,7 +1,6 @@
1
1
  import { CSSResultGroup } from 'lit';
2
2
  import { SbbDatepickerButton } from '../common.js';
3
3
  import { findNextAvailableDate, SbbInputUpdateEvent } from '../datepicker.js';
4
-
5
4
  /**
6
5
  * Combined with a `sbb-datepicker`, it can be used to move the date ahead.
7
6
  */
@@ -1,7 +1,6 @@
1
1
  import { CSSResultGroup } from 'lit';
2
2
  import { SbbDatepickerButton } from '../common.js';
3
3
  import { findPreviousAvailableDate, SbbInputUpdateEvent } from '../datepicker.js';
4
-
5
4
  /**
6
5
  * Combined with a `sbb-datepicker`, it can be used to move the date back.
7
6
  */
@@ -1,6 +1,6 @@
1
1
  import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit';
2
+ import { CalendarView } from '../../calendar.js';
2
3
  import { SbbDatepickerElement } from '../datepicker.js';
3
-
4
4
  declare const SbbDatepickerToggleElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbNegativeMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbHydrationMixinType> & typeof LitElement;
5
5
  /**
6
6
  * Combined with a `sbb-datepicker`, it can be used to select a date from a `sbb-calendar`.
@@ -9,6 +9,8 @@ export declare class SbbDatepickerToggleElement<T = Date> extends SbbDatepickerT
9
9
  static styles: CSSResultGroup;
10
10
  /** Datepicker reference. */
11
11
  datePicker?: string | SbbDatepickerElement;
12
+ /** The initial view of calendar which should be displayed on opening. */
13
+ view: CalendarView;
12
14
  private _disabled;
13
15
  private _min;
14
16
  private _max;
@@ -19,6 +21,7 @@ export declare class SbbDatepickerToggleElement<T = Date> extends SbbDatepickerT
19
21
  private _popoverElement;
20
22
  private _datePickerController;
21
23
  private _language;
24
+ private _abort;
22
25
  constructor();
23
26
  /**
24
27
  * Opens the calendar.
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker-toggle.d.ts","sourceRoot":"","sources":["../../../../src/elements/datepicker/datepicker-toggle/datepicker-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAkB,UAAU,EAAW,MAAM,KAAK,CAAC;AAW1D,OAAO,KAAK,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAC;AAKlF,OAAO,mBAAmB,CAAC;AAC3B,OAAO,kBAAkB,CAAC;;AAE1B;;GAEG;AACH,qBAIa,0BAA0B,CAAC,CAAC,GAAG,IAAI,CAAE,SAAQ,+BAEzD;IACC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,4BAA4B;IACmB,UAAU,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAEjF,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,IAAI,CAA4C;IAExD,OAAO,CAAC,IAAI,CAA4C;IAExD,OAAO,CAAC,eAAe,CAAS;IAEzC,OAAO,CAAC,kBAAkB,CAA6C;IAEvE,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,CAAC,eAAe,CAA4B;IAEnD,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,qBAAqB,CAAmB;IAEhD,OAAO,CAAC,SAAS,CAAmC;;IASpD;;OAEG;IACI,IAAI,IAAI,IAAI;IAOH,iBAAiB,IAAI,IAAI;IAYzB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQzD,oBAAoB,IAAI,IAAI;IAK5C,OAAO,CAAC,KAAK;IAyCb,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,eAAe;cAgBJ,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAMzE,OAAO,CAAC,eAAe;cAIJ,MAAM,IAAI,cAAc;CAyC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uBAAuB,EAAE,0BAA0B,CAAC;KACrD;CACF"}
1
+ {"version":3,"file":"datepicker-toggle.d.ts","sourceRoot":"","sources":["../../../../src/elements/datepicker/datepicker-toggle/datepicker-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAkB,UAAU,EAAW,MAAM,KAAK,CAAC;AAI1D,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,mBAAmB,CAAC;AAO1E,OAAO,KAAK,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAC;AAKlF,OAAO,mBAAmB,CAAC;AAC3B,OAAO,kBAAkB,CAAC;;AAE1B;;GAEG;AACH,qBAIa,0BAA0B,CAAC,CAAC,GAAG,IAAI,CAAE,SAAQ,+BAEzD;IACC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,4BAA4B;IACmB,UAAU,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAE1F,yEAAyE;IACtD,IAAI,EAAE,YAAY,CAAS;IAErC,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,IAAI,CAA4C;IAExD,OAAO,CAAC,IAAI,CAA4C;IAExD,OAAO,CAAC,eAAe,CAAS;IAEzC,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,qBAAqB,CAAmB;IAChD,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,MAAM,CAAyC;;IASvD;;OAEG;IACI,IAAI,IAAI,IAAI;IAOH,iBAAiB,IAAI,IAAI;IAsBzB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQzD,oBAAoB,IAAI,IAAI;IAK5C,OAAO,CAAC,KAAK;IAyCb,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,eAAe;cAgBJ,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAMzE,OAAO,CAAC,eAAe;cAIJ,MAAM,IAAI,cAAc;CA2C5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uBAAuB,EAAE,0BAA0B,CAAC;KACrD;CACF"}
@@ -1,25 +1,25 @@
1
- import { css as _, LitElement as p, isServer as h, html as m, nothing as b } from "lit";
2
- import { property as g, state as d, customElement as E } from "lit/decorators.js";
1
+ import { css as p, LitElement as b, isServer as h, html as m, nothing as g } from "lit";
2
+ import { property as _, state as d, customElement as E } from "lit/decorators.js";
3
3
  import { ref as c } from "lit/directives/ref.js";
4
- import { sbbInputModalityDetector as u } from "../core/a11y.js";
5
- import { SbbLanguageController as f } from "../core/controllers.js";
6
- import { hostAttributes as k } from "../core/decorators.js";
7
- import { i18nShowCalendar as P } from "../core/i18n.js";
8
- import { SbbNegativeMixin as v, SbbHydrationMixin as C } from "../core/mixins.js";
9
- import { getDatePicker as w, datepickerControlRegisteredEventFactory as y } from "./datepicker.js";
4
+ import { sbbInputModalityDetector as f } from "../core/a11y.js";
5
+ import { SbbLanguageController as u, SbbConnectedAbortController as k } from "../core/controllers.js";
6
+ import { hostAttributes as P } from "../core/decorators.js";
7
+ import { i18nShowCalendar as v } from "../core/i18n.js";
8
+ import { SbbNegativeMixin as C, SbbHydrationMixin as w } from "../core/mixins.js";
9
+ import { getDatePicker as y, datepickerControlRegisteredEventFactory as $ } from "./datepicker.js";
10
10
  import "../calendar.js";
11
11
  import "../popover.js";
12
- const $ = _`*,:before,:after{box-sizing:border-box}:host{--sbb-datepicker-control-radius: var(--sbb-border-radius-4x);--sbb-datepicker-control-color: var(--sbb-color-black);display:inline-flex}sbb-popover-trigger{color:var(--sbb-datepicker-control-color);height:unset}sbb-icon{color:var(--sbb-color-graphite)}`;
13
- var x = Object.defineProperty, D = Object.getOwnPropertyDescriptor, o = (e, t, i, s) => {
14
- for (var a = s > 1 ? void 0 : s ? D(t, i) : t, l = e.length - 1, r; l >= 0; l--)
15
- (r = e[l]) && (a = (s ? r(t, i, a) : r(a)) || a);
16
- return s && a && x(t, i, a), a;
12
+ const x = p`*,:before,:after{box-sizing:border-box}:host{--sbb-datepicker-control-radius: var(--sbb-border-radius-4x);--sbb-datepicker-control-color: var(--sbb-color-black);display:inline-flex}sbb-popover-trigger{color:var(--sbb-datepicker-control-color);height:unset}sbb-icon{color:var(--sbb-color-graphite)}`;
13
+ var D = Object.defineProperty, A = Object.getOwnPropertyDescriptor, l = (e, t, i, n) => {
14
+ for (var a = n > 1 ? void 0 : n ? A(t, i) : t, o = e.length - 1, r; o >= 0; o--)
15
+ (r = e[o]) && (a = (n ? r(t, i, a) : r(a)) || a);
16
+ return n && a && D(t, i, a), a;
17
17
  };
18
- let n = class extends v(
19
- C(p)
18
+ let s = class extends C(
19
+ w(b)
20
20
  ) {
21
21
  constructor() {
22
- super(), this._disabled = !1, this._min = null, this._max = null, this._renderCalendar = !1, this._language = new f(this), h || this.hydrationComplete.then(() => this._renderCalendar = !0);
22
+ super(), this.view = "day", this._disabled = !1, this._min = null, this._max = null, this._renderCalendar = !1, this._language = new u(this), this._abort = new k(this), h || this.hydrationComplete.then(() => this._renderCalendar = !0);
23
23
  }
24
24
  /**
25
25
  * Opens the calendar.
@@ -31,7 +31,13 @@ let n = class extends v(
31
31
  var t, i;
32
32
  super.connectedCallback(), this.datePicker || this._init();
33
33
  const e = ((t = this.closest) == null ? void 0 : t.call(this, "sbb-form-field")) ?? ((i = this.closest) == null ? void 0 : i.call(this, "[data-form-field]"));
34
- e && (this.negative = e.hasAttribute("negative"));
34
+ e && (this.negative = e.hasAttribute("negative")), this.addEventListener(
35
+ "click",
36
+ (n) => {
37
+ n.composedPath()[0] === this && this.open();
38
+ },
39
+ { signal: this._abort.signal }
40
+ );
35
41
  }
36
42
  willUpdate(e) {
37
43
  super.willUpdate(e), e.has("datePicker") && this._init(this.datePicker);
@@ -41,8 +47,8 @@ let n = class extends v(
41
47
  super.disconnectedCallback(), (e = this._datePickerController) == null || e.abort();
42
48
  }
43
49
  _init(e) {
44
- var t, i, s, a, l;
45
- if ((t = this._datePickerController) == null || t.abort(), this._datePickerController = new AbortController(), this._datePickerElement = w(this, e), !this._datePickerElement) {
50
+ var t, i, n, a, o;
51
+ if ((t = this._datePickerController) == null || t.abort(), this._datePickerController = new AbortController(), this._datePickerElement = y(this, e), !this._datePickerElement) {
46
52
  (i = this.parentElement) == null || i.addEventListener(
47
53
  "inputUpdated",
48
54
  (r) => this._init(r.target),
@@ -50,7 +56,7 @@ let n = class extends v(
50
56
  );
51
57
  return;
52
58
  }
53
- (s = this._datePickerElement) == null || s.addEventListener(
59
+ (n = this._datePickerElement) == null || n.addEventListener(
54
60
  "inputUpdated",
55
61
  (r) => {
56
62
  this._datePickerElement = r.target, this._disabled = !!(r.detail.disabled || r.detail.readonly), this._min = r.detail.min, this._max = r.detail.max;
@@ -62,11 +68,11 @@ let n = class extends v(
62
68
  {
63
69
  signal: this._datePickerController.signal
64
70
  }
65
- ), (l = this._datePickerElement) == null || l.addEventListener(
71
+ ), (o = this._datePickerElement) == null || o.addEventListener(
66
72
  "datePickerUpdated",
67
73
  (r) => this._configureCalendar(this._calendarElement, r.target),
68
74
  { signal: this._datePickerController.signal }
69
- ), this._datePickerElement.dispatchEvent(y());
75
+ ), this._datePickerElement.dispatchEvent($());
70
76
  }
71
77
  _configureCalendar(e, t) {
72
78
  !e || !t || (e.wide = t.wide, e.now = this._nowOrUndefined(), e.dateFilter = t.dateFilter);
@@ -90,7 +96,7 @@ let n = class extends v(
90
96
  return m`
91
97
  <sbb-popover-trigger
92
98
  icon-name="calendar-small"
93
- aria-label=${P[this._language.current]}
99
+ aria-label=${v[this._language.current]}
94
100
  ?disabled=${!h && (!this._datePickerElement || this._disabled)}
95
101
  ?negative=${this.negative}
96
102
  data-icon-small
@@ -99,13 +105,14 @@ let n = class extends v(
99
105
  <sbb-popover
100
106
  @willOpen=${() => this._calendarElement.resetPosition()}
101
107
  @didOpen=${() => {
102
- u.mostRecentModality === "keyboard" && this._calendarElement.focus();
108
+ f.mostRecentModality === "keyboard" && this._calendarElement.focus();
103
109
  }}
104
110
  .trigger=${this._triggerElement}
105
111
  hide-close-button
106
112
  ${c((i) => this._popoverElement = i)}
107
113
  >
108
114
  ${this._renderCalendar ? m`<sbb-calendar
115
+ .view=${this.view}
109
116
  .min=${this._min}
110
117
  .max=${this._max}
111
118
  .now=${this._nowOrUndefined()}
@@ -117,33 +124,36 @@ let n = class extends v(
117
124
  ${c(
118
125
  (i) => this._assignCalendar(i)
119
126
  )}
120
- ></sbb-calendar>` : b}
127
+ ></sbb-calendar>` : g}
121
128
  </sbb-popover>
122
129
  `;
123
130
  }
124
131
  };
125
- n.styles = $;
126
- o([
127
- g({ attribute: "date-picker" })
128
- ], n.prototype, "datePicker", 2);
129
- o([
132
+ s.styles = x;
133
+ l([
134
+ _({ attribute: "date-picker" })
135
+ ], s.prototype, "datePicker", 2);
136
+ l([
137
+ _()
138
+ ], s.prototype, "view", 2);
139
+ l([
130
140
  d()
131
- ], n.prototype, "_disabled", 2);
132
- o([
141
+ ], s.prototype, "_disabled", 2);
142
+ l([
133
143
  d()
134
- ], n.prototype, "_min", 2);
135
- o([
144
+ ], s.prototype, "_min", 2);
145
+ l([
136
146
  d()
137
- ], n.prototype, "_max", 2);
138
- o([
147
+ ], s.prototype, "_max", 2);
148
+ l([
139
149
  d()
140
- ], n.prototype, "_renderCalendar", 2);
141
- n = o([
150
+ ], s.prototype, "_renderCalendar", 2);
151
+ s = l([
142
152
  E("sbb-datepicker-toggle"),
143
- k({
153
+ P({
144
154
  slot: "prefix"
145
155
  })
146
- ], n);
156
+ ], s);
147
157
  export {
148
- n as SbbDatepickerToggleElement
158
+ s as SbbDatepickerToggleElement
149
159
  };
@@ -1,6 +1,5 @@
1
1
  import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit';
2
2
  import { SbbTitleLevel } from '../title.js';
3
-
4
3
  declare const SbbAccordionElement_base: import('../core/mixins.js').AbstractConstructor<import('../core/mixins.js').SbbHydrationMixinType> & typeof LitElement;
5
4
  /**
6
5
  * It can be used as a container for one or more `sbb-expansion-panel` component.
@@ -2,7 +2,6 @@ import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit'
2
2
  import { SbbButtonSize } from '../button.js';
3
3
  import { SbbHorizontalFrom, SbbOrientation } from '../core/interfaces.js';
4
4
  import { SbbLinkSize } from '../link.js';
5
-
6
5
  /**
7
6
  * It can be used as a container for one or more action element, like `sbb-button` or `sbb-block-link`.
8
7
  *
@@ -1,7 +1,6 @@
1
1
  import { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
2
2
  import { LinkTargetType, SbbOpenCloseBaseElement } from '../../core/base-elements.js';
3
3
  import { SbbTitleLevel } from '../../title.js';
4
-
5
4
  declare const SbbAlertElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../icon.js').SbbIconNameMixinType> & typeof SbbOpenCloseBaseElement;
6
5
  /**
7
6
  * It displays messages which require user's attention.
@@ -1,6 +1,5 @@
1
1
  import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
2
2
  import { SbbTitleLevel } from '../../title.js';
3
-
4
3
  declare const SbbAlertGroupElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbHydrationMixinType> & typeof LitElement;
5
4
  /**
6
5
  * It can be used as a container for one or more `sbb-alert` component.
@@ -36,6 +36,7 @@ const style = css`/**
36
36
  }
37
37
 
38
38
  :host {
39
+ display: block;
39
40
  --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);
40
41
  --sbb-alert-background-color: var(--sbb-color-midnight);
41
42
  --sbb-alert-border-radius: var(--sbb-border-radius-4x);
@@ -50,7 +51,6 @@ const style = css`/**
50
51
  var(--sbb-animation-duration-6x)
51
52
  );
52
53
  --sbb-alert-timing-function: ease-in;
53
- display: block;
54
54
  }
55
55
  @media (min-width: calc(52.5rem)) {
56
56
  :host {
@@ -2,7 +2,6 @@ import { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
2
2
  import { SbbOpenCloseBaseElement } from '../core/base-elements.js';
3
3
  import { SbbConnectedAbortController } from '../core/controllers.js';
4
4
  import { SbbOptionBaseElement } from '../option.js';
5
-
6
5
  declare const SbbAutocompleteBaseElement_base: import('../core/mixins.js').AbstractConstructor<import('../core/mixins.js').SbbNegativeMixinType> & import('../core/mixins.js').AbstractConstructor<import('../core/mixins.js').SbbHydrationMixinType> & typeof SbbOpenCloseBaseElement;
7
6
  export declare abstract class SbbAutocompleteBaseElement extends SbbAutocompleteBaseElement_base {
8
7
  static styles: CSSResultGroup;
@@ -1,6 +1,5 @@
1
1
  import { SbbOptionElement } from '../option.js';
2
2
  import { SbbAutocompleteBaseElement } from './autocomplete-base-element.js';
3
-
4
3
  /**
5
4
  * Combined with a native input, it displays a panel with a list of available options.
6
5
  *
@@ -1,6 +1,5 @@
1
1
  import { SbbAutocompleteBaseElement } from '../../autocomplete.js';
2
2
  import { SbbAutocompleteGridOptionElement } from '../autocomplete-grid-option.js';
3
-
4
3
  /**
5
4
  * Combined with a native input, it displays a panel with a list of available options with connected buttons.
6
5
  *
@@ -1,7 +1,6 @@
1
1
  import { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
2
2
  import { SbbActionBaseElement } from '../../core/base-elements.js';
3
3
  import { SbbAutocompleteGridOptionElement } from '../autocomplete-grid-option.js';
4
-
5
4
  declare const SbbAutocompleteGridButtonElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbDisabledMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbNegativeMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../icon.js').SbbIconNameMixinType> & typeof SbbActionBaseElement;
6
5
  /**
7
6
  * It displays an icon-only button that can be used in `sbb-autocomplete-grid`.
@@ -1,5 +1,4 @@
1
1
  import { CSSResultGroup, LitElement, TemplateResult } from 'lit';
2
-
3
2
  /**
4
3
  * A wrapper component for autocomplete-grid action button.
5
4
  *
@@ -1,7 +1,6 @@
1
1
  import { SbbOptgroupBaseElement } from '../../option/optgroup.js';
2
2
  import { SbbAutocompleteGridOptionElement } from '../autocomplete-grid-option.js';
3
3
  import { SbbAutocompleteGridElement } from '../autocomplete-grid.js';
4
-
5
4
  /**
6
5
  * It can be used as a container for one or more `sbb-autocomplete-grid-option`.
7
6
  *
@@ -1,7 +1,6 @@
1
1
  import { CSSResultGroup, PropertyValues } from 'lit';
2
2
  import { EventEmitter } from '../../core/eventing.js';
3
3
  import { SbbOptionBaseElement } from '../../option.js';
4
-
5
4
  export declare const autocompleteGridOptionId: string;
6
5
  /**
7
6
  * It displays an option item which can be used in `sbb-autocomplete-grid`.
@@ -1,5 +1,4 @@
1
1
  import { CSSResultGroup, LitElement, TemplateResult } from 'lit';
2
-
3
2
  /**
4
3
  * The component is used as a wrapper for options and action buttons.
5
4
  *
@@ -231,9 +231,6 @@ const style = css`/**
231
231
  }
232
232
 
233
233
  .sbb-autocomplete__options {
234
- --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);
235
- /* Scrollbar itself */
236
- /* Hide button (top and bottom of the scrollbar) */
237
234
  background-color: var(--sbb-options-panel-background-color);
238
235
  padding-block: var(--sbb-spacing-fixed-3x);
239
236
  padding-inline: 0;
@@ -245,7 +242,9 @@ const style = css`/**
245
242
  animation-name: var(--sbb-options-panel-animation-name);
246
243
  animation-duration: var(--sbb-options-panel-animation-duration);
247
244
  animation-timing-function: var(--sbb-options-panel-animation-timing-function);
248
- pointer-events: var(--sbb-options-pointer-events);
245
+ --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);
246
+ /* Scrollbar itself */
247
+ /* Hide button (top and bottom of the scrollbar) */
249
248
  }
250
249
  .sbb-autocomplete__options::-webkit-scrollbar {
251
250
  width: var(--sbb-scrollbar-width);
@@ -274,6 +273,9 @@ const style = css`/**
274
273
  scrollbar-color: var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent);
275
274
  }
276
275
  }
276
+ .sbb-autocomplete__options {
277
+ pointer-events: var(--sbb-options-pointer-events);
278
+ }
277
279
  @media (forced-colors: active) {
278
280
  .sbb-autocomplete__options {
279
281
  border: var(--sbb-border-width-1x) solid CanvasText;
@@ -747,4 +749,4 @@ export {
747
749
  SbbAutocompleteBaseElement,
748
750
  SbbAutocompleteElement
749
751
  };
750
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQudHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBpc1NlcnZlcixcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIH0gZnJvbSAnLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBmaW5kUmVmZXJlbmNlZEVsZW1lbnQsIGlzU2FmYXJpIH0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgU2JiTmVnYXRpdmVNaXhpbiwgU2JiSHlkcmF0aW9uTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQge1xuICBpc0V2ZW50T25FbGVtZW50LFxuICBvdmVybGF5R2FwRml4Q29ybmVycyxcbiAgcmVtb3ZlQXJpYUNvbWJvQm94QXR0cmlidXRlcyxcbiAgc2V0T3ZlcmxheVBvc2l0aW9uLFxufSBmcm9tICcuLi9jb3JlL292ZXJsYXkuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcHRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oXG4gIFNiYkh5ZHJhdGlvbk1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQgd2hlcmUgdGhlIGF1dG9jb21wbGV0ZSB3aWxsIGF0dGFjaDsgYWNjZXB0cyBib3RoIGFuIGVsZW1lbnQncyBpZCBvciBhbiBIVE1MRWxlbWVudC5cbiAgICogSWYgbm90IHNldCwgaXQgd2lsbCBzZWFyY2ggZm9yIHRoZSBmaXJzdCAnc2JiLWZvcm0tZmllbGQnIGFuY2VzdG9yLlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIG9yaWdpbj86IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgYXV0b2NvbXBsZXRlIG9wZW5pbmc7IGFjY2VwdHMgYm90aCBhbiBlbGVtZW50J3MgaWQgb3IgYW4gSFRNTEVsZW1lbnQuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBhdXRvY29tcGxldGUgd2lsbCBvcGVuIG9uIGZvY3VzLCBjbGljaywgaW5wdXQgb3IgYEFycm93RG93bmAga2V5cHJlc3Mgb2YgdGhlICd0cmlnZ2VyJyBlbGVtZW50LlxuICAgKiBJZiBub3Qgc2V0LCB3aWxsIHNlYXJjaCBmb3IgdGhlIGZpcnN0ICdpbnB1dCcgY2hpbGQgb2YgYSAnc2JiLWZvcm0tZmllbGQnIGFuY2VzdG9yLlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIHRyaWdnZXI/OiBzdHJpbmcgfCBIVE1MSW5wdXRFbGVtZW50O1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpY29uIHNwYWNlIGlzIHByZXNlcnZlZCB3aGVuIG5vIGljb24gaXMgc2V0LiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwcmVzZXJ2ZS1pY29uLXNwYWNlJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgcHJlc2VydmVJY29uU3BhY2U/OiBib29sZWFuO1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBlbGVtZW50IHdoZXJlIGF1dG9jb21wbGV0ZSBvdmVybGF5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICBwdWJsaWMgZ2V0IG9yaWdpbkVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIGlmICghdGhpcy5fb3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luRWxlbWVudCA9IHRoaXMuX2ZpbmRPcmlnaW5FbGVtZW50KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9vcmlnaW5FbGVtZW50O1xuICB9XG4gIHByaXZhdGUgX29yaWdpbkVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcblxuICAvKiogUmV0dXJucyB0aGUgdHJpZ2dlciBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IHRyaWdnZXJFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyRWxlbWVudDtcbiAgfVxuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcmxheUlkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYW5lbFJvbGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfb3ZlcmxheSE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vcHRpb25Db250YWluZXIhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2RpZExvYWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkJhc2VFbGVtZW50W107XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzeW5jTmVnYXRpdmUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZXNldEFjdGl2ZUVsZW1lbnQoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG9uT3B0aW9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkO1xuXG4gIC8qKiBPcGVucyB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgfHwgIXRoaXMuX292ZXJsYXkgfHwgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCB8fCB0aGlzLl9yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKTtcbiAgfVxuXG4gIC8qKiBDbG9zZXMgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMud2lsbENsb3NlLmVtaXQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5hYm9ydCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgaWYgKGFyaWFSb2xlT25Ib3N0KSB7XG4gICAgICB0aGlzLmlkIHx8PSB0aGlzLm92ZXJsYXlJZDtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5hYm9ydC5zaWduYWw7XG4gICAgY29uc3QgZm9ybUZpZWxkID0gdGhpcy5jbG9zZXN0KCdzYmItZm9ybS1maWVsZCcpID8/IHRoaXMuY2xvc2VzdCgnW2RhdGEtZm9ybS1maWVsZF0nKTtcblxuICAgIGlmIChmb3JtRmllbGQpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSBmb3JtRmllbGQuaGFzQXR0cmlidXRlKCduZWdhdGl2ZScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9kaWRMb2FkKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICAgIH1cbiAgICB0aGlzLnN5bmNOZWdhdGl2ZSgpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLm9uT3B0aW9uQ2xpY2soZSksIHsgc2lnbmFsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdvcmlnaW4nKSkge1xuICAgICAgdGhpcy5fcmVzZXRPcmlnaW5DbGlja0xpc3RlbmVyKHRoaXMub3JpZ2luLCBjaGFuZ2VkUHJvcGVydGllcy5nZXQoJ29yaWdpbicpKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygndHJpZ2dlcicpKSB7XG4gICAgICB0aGlzLl9yZXNldFRyaWdnZXJDbGlja0xpc3RlbmVyKHRoaXMudHJpZ2dlciwgY2hhbmdlZFByb3BlcnRpZXMuZ2V0KCd0cmlnZ2VyJykpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLnN5bmNOZWdhdGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIHRoaXMuX2NvbXBvbmVudFNldHVwKCk7XG4gICAgdGhpcy5fZGlkTG9hZCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl90cmlnZ2VyRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgLyoqIFdoZW4gYW4gb3B0aW9uIGlzIHNlbGVjdGVkLCB1cGRhdGUgdGhlIGlucHV0IHZhbHVlIGFuZCBjbG9zZSB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwcm90ZWN0ZWQgb25PcHRpb25TZWxlY3RlZChldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uQmFzZUVsZW1lbnQ7XG4gICAgaWYgKCF0YXJnZXQuc2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEZXNlbGVjdCB0aGUgcHJldmlvdXMgb3B0aW9uc1xuICAgIHRoaXMub3B0aW9uc1xuICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uaWQgIT09IHRhcmdldC5pZCAmJiBvcHRpb24uc2VsZWN0ZWQpXG4gICAgICAuZm9yRWFjaCgob3B0aW9uKSA9PiAob3B0aW9uLnNlbGVjdGVkID0gZmFsc2UpKTtcblxuICAgIGlmICh0aGlzLnRyaWdnZXJFbGVtZW50KSB7XG4gICAgICAvLyBTZXQgdGhlIG9wdGlvbiB2YWx1ZVxuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC52YWx1ZSA9IHRhcmdldC52YWx1ZSBhcyBzdHJpbmc7XG5cbiAgICAgIC8vIE1hbnVhbGx5IHRyaWdnZXIgdGhlIGNoYW5nZSBldmVudHNcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9oaWdobGlnaHRPcHRpb25zKHRoaXMudHJpZ2dlckVsZW1lbnQ/LnZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgYXV0b2NvbXBsZXRlIHNob3VsZCBpbmhlcml0ICdyZWFkb25seScgc3RhdGUgZnJvbSB0aGUgdHJpZ2dlci4gKi9cbiAgcHJpdmF0ZSBnZXQgX3JlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJFbGVtZW50Py5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgPz8gZmFsc2U7XG4gIH1cblxuICAvKiogUmVtb3ZlcyB0cmlnZ2VyIGNsaWNrIGxpc3RlbmVyIG9uIHRyaWdnZXIgY2hhbmdlLiAqL1xuICBwcml2YXRlIF9yZXNldE9yaWdpbkNsaWNrTGlzdGVuZXIoXG4gICAgbmV3VmFsdWU/OiBzdHJpbmcgfCBIVE1MRWxlbWVudCxcbiAgICBvbGRWYWx1ZT86IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuICApOiB2b2lkIHtcbiAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZW1vdmVzIHRyaWdnZXIgY2xpY2sgbGlzdGVuZXIgb24gdHJpZ2dlciBjaGFuZ2UuICovXG4gIHByaXZhdGUgX3Jlc2V0VHJpZ2dlckNsaWNrTGlzdGVuZXIoXG4gICAgbmV3VmFsdWU/OiBzdHJpbmcgfCBIVE1MRWxlbWVudCxcbiAgICBvbGRWYWx1ZT86IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuICApOiB2b2lkIHtcbiAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBvbmVudFNldHVwKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl90cmlnZ2VyRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuXG4gICAgdGhpcy5fb3JpZ2luRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLW9wdGlvbi1wYW5lbC1vcmlnaW4tYm9yZGVybGVzcycsXG4gICAgICAhIXRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5oYXNBdHRyaWJ1dGUoJ2JvcmRlcmxlc3MnKSxcbiAgICApO1xuXG4gICAgdGhpcy5fYmluZFRvKHRoaXMuX2dldFRyaWdnZXJFbGVtZW50KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBlbGVtZW50IHdoZXJlIHRoZSBhdXRvY29tcGxldGUgd2lsbCBiZSBhdHRhY2hlZC5cbiAgICogQHJldHVybnMgJ29yaWdpbicgb3IgdGhlIGZpcnN0ICdzYmItZm9ybS1maWVsZCcgYW5jZXN0b3IuXG4gICAqL1xuICBwcml2YXRlIF9maW5kT3JpZ2luRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgbGV0IHJlc3VsdDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgcmVzdWx0ID0gdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk/LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I/LignI292ZXJsYXktYW5jaG9yJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGZpbmRSZWZlcmVuY2VkRWxlbWVudCh0aGlzLm9yaWdpbik7XG4gICAgfVxuXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBmaW5kIHRoZSBvcmlnaW4gZWxlbWVudC4gUGxlYXNlIHNwZWNpZnkgYSB2YWxpZCBlbGVtZW50IG9yIHJlYWQgdGhlIFwib3JpZ2luXCIgcHJvcCBkb2N1bWVudGF0aW9uJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgYXV0b2NvbXBsZXRlIG9wZW5pbmcuXG4gICAqIEByZXR1cm5zICd0cmlnZ2VyJyBvciB0aGUgZmlyc3QgJ2lucHV0JyBpbnNpZGUgdGhlIG9yaWdpbiBlbGVtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0VHJpZ2dlckVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgaWYgKCF0aGlzLnRyaWdnZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKT8ucXVlcnlTZWxlY3RvcignaW5wdXQnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGZpbmRSZWZlcmVuY2VkRWxlbWVudDxIVE1MSW5wdXRFbGVtZW50Pih0aGlzLnRyaWdnZXIpO1xuXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBmaW5kIHRoZSB0cmlnZ2VyIGVsZW1lbnQuIFBsZWFzZSBzcGVjaWZ5IGEgdmFsaWQgZWxlbWVudCBvciByZWFkIHRoZSBcInRyaWdnZXJcIiBwcm9wIGRvY3VtZW50YXRpb24nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYmluZFRvKHRyaWdnZXJFbGVtOiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKCF0cmlnZ2VyRWxlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IGF0dHJpYnV0ZXMgdG8gdGhlIG9sZCB0cmlnZ2VyIGFuZCBhZGQgdGhlbSB0byB0aGUgbmV3IG9uZVxuICAgIHRoaXMuX3JlbW92ZVRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMudHJpZ2dlckVsZW1lbnQpO1xuICAgIHRoaXMuc2V0VHJpZ2dlckF0dHJpYnV0ZXModHJpZ2dlckVsZW0pO1xuXG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyRWxlbTtcblxuICAgIHRoaXMuX3NldHVwVHJpZ2dlckV2ZW50cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBUcmlnZ2VyRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX3RyaWdnZXJFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gT3BlbiB0aGUgb3ZlcmxheSBvbiBmb2N1cywgY2xpY2ssIGlucHV0IGFuZCBgQXJyb3dEb3duYCBldmVudFxuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnaW5wdXQnLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB0aGlzLl9oaWdobGlnaHRPcHRpb25zKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl90cmlnZ2VyRXZlbnRzQ29udHJvbGxlci5zaWduYWwgfSxcbiAgICApO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMuX2Nsb3NlZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCksXG4gICAgICB7IHNpZ25hbDogdGhpcy5fdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNldCBvdmVybGF5IHBvc2l0aW9uLCB3aWR0aCBhbmQgbWF4IGhlaWdodFxuICBwcml2YXRlIF9zZXRPdmVybGF5UG9zaXRpb24oKTogdm9pZCB7XG4gICAgc2V0T3ZlcmxheVBvc2l0aW9uKFxuICAgICAgdGhpcy5fb3ZlcmxheSxcbiAgICAgIHRoaXMub3JpZ2luRWxlbWVudCxcbiAgICAgIHRoaXMuX29wdGlvbkNvbnRhaW5lcixcbiAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1hdXRvY29tcGxldGVfX2NvbnRhaW5lcicpISxcbiAgICAgIHRoaXMsXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBPbiBvcGVuL2Nsb3NlIGFuaW1hdGlvbiBlbmQuXG4gICAqICBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAgKiAgVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuX29uT3BlbkFuaW1hdGlvbkVuZCgpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX29uQ2xvc2VBbmltYXRpb25FbmQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbk9wZW5BbmltYXRpb25FbmQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIHRoaXMuX2F0dGFjaE9wZW5QYW5lbEV2ZW50cygpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG4gICAgdGhpcy5kaWRPcGVuLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uQ2xvc2VBbmltYXRpb25FbmQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICAgIHRoaXMucmVzZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgdGhpcy5fb3B0aW9uQ29udGFpbmVyLnNjcm9sbFRvcCA9IDA7XG4gICAgdGhpcy5kaWRDbG9zZS5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hPcGVuUGFuZWxFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIFJlY2FsY3VsYXRlIHRoZSBvdmVybGF5IHBvc2l0aW9uIG9uIHNjcm9sbCBhbmQgd2luZG93IHJlc2l6ZVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgYXV0b2NvbXBsZXRlIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGV2KSA9PiB0aGlzLl9wb2ludGVyRG93bkxpc3RlbmVyKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgKGV2KSA9PiB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljayhldiksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICAvLyBLZXlib2FyZCBpbnRlcmFjdGlvbnNcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLm9wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCksXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgcG9pbnRlcmRvd24gZXZlbnQgdGFyZ2V0IGlzIHRyaWdnZXJlZCBvbiB0aGUgbWVudS5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ID0gaXNFdmVudE9uRWxlbWVudCh0aGlzLl9vdmVybGF5LCBldmVudCk7XG4gIH07XG5cbiAgLy8gSWYgdGhlIGNsaWNrIGlzIG91dHNpZGUgdGhlIGF1dG9jb21wbGV0ZSwgY2xvc2VzIHRoZSBwYW5lbC5cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgJiZcbiAgICAgICFpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KSAmJlxuICAgICAgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5vcmlnaW5FbGVtZW50LCBldmVudClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfY2xvc2VkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIaWdobGlnaHQgdGhlIHNlYXJjaGVkIHRleHQgb24gdGhlIG9wdGlvbnMuICovXG4gIHByaXZhdGUgX2hpZ2hsaWdodE9wdGlvbnMoc2VhcmNoVGVybT86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChzZWFyY2hUZXJtID09PSBudWxsIHx8IHNlYXJjaFRlcm0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiBvcHRpb24uaGlnaGxpZ2h0KHNlYXJjaFRlcm0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZVRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ/OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgcmVtb3ZlQXJpYUNvbWJvQm94QXR0cmlidXRlcyhlbGVtZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2dhcC1maXhcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2dhcC1maXhcIj4ke292ZXJsYXlHYXBGaXhDb3JuZXJzKCl9PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25BbmltYXRpb25FbmR9XG4gICAgICAgICAgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19wYW5lbFwiXG4gICAgICAgICAgP2RhdGEtb3Blbj0ke3RoaXMuc3RhdGUgPT09ICdvcGVuZWQnIHx8IHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJ31cbiAgICAgICAgICAke3JlZigob3ZlcmxheVJlZj86IEVsZW1lbnQpID0+ICh0aGlzLl9vdmVybGF5ID0gb3ZlcmxheVJlZiBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19vcHRpb25zXCJcbiAgICAgICAgICAgICAgcm9sZT0keyFhcmlhUm9sZU9uSG9zdCA/IHRoaXMucGFuZWxSb2xlIDogbm90aGluZ31cbiAgICAgICAgICAgICAgaWQ9JHshYXJpYVJvbGVPbkhvc3QgPyB0aGlzLm92ZXJsYXlJZCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7cmVmKChjb250YWluZXJSZWYpID0+ICh0aGlzLl9vcHRpb25Db250YWluZXIgPSBjb250YWluZXJSZWYgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG4iLCJpbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4IH0gZnJvbSAnLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGdldERvY3VtZW50V3JpdGluZ01vZGUsIGlzU2FmYXJpIH0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgc2V0QXJpYUNvbWJvQm94QXR0cmlidXRlcyB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdEdyb3VwRWxlbWVudCwgU2JiT3B0aW9uRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi5qcyc7XG5cbmltcG9ydCB7IFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LmpzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogT24gU2FmYXJpLCB0aGUgYXJpYSByb2xlICdsaXN0Ym94JyBtdXN0IGJlIG9uIHRoZSBob3N0IGVsZW1lbnQsIG9yIGVsc2UgVm9pY2VPdmVyIHdvbid0IHdvcmsgYXQgYWxsLlxuICogT24gdGhlIG90aGVyIGhhbmQsIEpBV1MgYW5kIE5WREEgbmVlZCB0aGUgcm9sZSB0byBiZSBcImNsb3NlclwiIHRvIHRoZSBvcHRpb25zLCBvciBlbHNlIG9wdGdyb3VwcyB3b24ndCB3b3JrLlxuICovXG5jb25zdCBhcmlhUm9sZU9uSG9zdCA9IGlzU2FmYXJpO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBuYXRpdmUgaW5wdXQsIGl0IGRpc3BsYXlzIGEgcGFuZWwgd2l0aCBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1vcHRpb25gIG9yIGBzYmItb3B0Z3JvdXBgIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAgc3RhcnRzIHRoZSBvcGVuaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1hdXRvY29tcGxldGVgIGlzIG9wZW5lZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IHdpbGxDbG9zZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItYXV0b2NvbXBsZXRlYCBpcyBjbG9zZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItYXV0b2NvbXBsZXRlLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1hdXRvY29tcGxldGUnKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgZGlyOiBnZXREb2N1bWVudFdyaXRpbmdNb2RlKCksXG4gIHJvbGU6IGFyaWFSb2xlT25Ib3N0ID8gJ2xpc3Rib3gnIDogbnVsbCxcbn0pXG5leHBvcnQgY2xhc3MgU2JiQXV0b2NvbXBsZXRlRWxlbWVudCBleHRlbmRzIFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IHtcbiAgcHJvdGVjdGVkIG92ZXJsYXlJZCA9IGBzYmItYXV0b2NvbXBsZXRlLSR7KytuZXh0SWR9YDtcbiAgcHJvdGVjdGVkIHBhbmVsUm9sZSA9ICdsaXN0Ym94JztcbiAgcHJpdmF0ZSBfYWN0aXZlSXRlbUluZGV4ID0gLTE7XG5cbiAgcHJvdGVjdGVkIGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1vcHRpb24nKSA/PyBbXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25PcHRpb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIChldmVudC50YXJnZXQgYXMgRWxlbWVudCkubG9jYWxOYW1lICE9PSAnc2JiLW9wdGlvbicgfHxcbiAgICAgIChldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uRWxlbWVudCkuZGlzYWJsZWRcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5hYm9ydC5zaWduYWw7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ29wdGlvblNlbGVjdGlvbkNoYW5nZScsXG4gICAgICAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+IHRoaXMub25PcHRpb25TZWxlY3RlZChlKSxcbiAgICAgIHsgc2lnbmFsIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW5jTmVnYXRpdmUoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1kaXZpZGVyJykuZm9yRWFjaCgoZGl2aWRlcikgPT4gKGRpdmlkZXIubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlKSk7XG5cbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJPcHRpb25FbGVtZW50IHwgU2JiT3B0R3JvdXBFbGVtZW50PihcbiAgICAgICdzYmItb3B0aW9uLCBzYmItb3B0Z3JvdXAnLFxuICAgICkuZm9yRWFjaCgoZWxlbWVudCkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbmVnYXRpdmUnLCB0aGlzLm5lZ2F0aXZlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIHRoaXMuc2VsZWN0QnlLZXlib2FyZCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0QnlLZXlib2FyZCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVPcHRpb24gPSB0aGlzLm9wdGlvbnNbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcblxuICAgIGlmIChhY3RpdmVPcHRpb24pIHtcbiAgICAgIGFjdGl2ZU9wdGlvbi5zZXRTZWxlY3RlZFZpYVVzZXJJbnRlcmFjdGlvbih0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoXG4gICAgICAob3B0KSA9PiAhb3B0LmRpc2FibGVkICYmICFvcHQuaGFzQXR0cmlidXRlKCdkYXRhLWdyb3VwLWRpc2FibGVkJyksXG4gICAgKTtcblxuICAgIC8vIEdldCBhbmQgYWN0aXZhdGUgdGhlIG5leHQgYWN0aXZlIG9wdGlvblxuICAgIGNvbnN0IG5leHQgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50LCB0aGlzLl9hY3RpdmVJdGVtSW5kZXgsIGZpbHRlcmVkT3B0aW9ucy5sZW5ndGgpO1xuICAgIGNvbnN0IG5leHRBY3RpdmVPcHRpb24gPSBmaWx0ZXJlZE9wdGlvbnNbbmV4dF07XG4gICAgbmV4dEFjdGl2ZU9wdGlvbi5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgbmV4dEFjdGl2ZU9wdGlvbi5pZCk7XG4gICAgbmV4dEFjdGl2ZU9wdGlvbi5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XG5cbiAgICAvLyBSZXNldCB0aGUgcHJldmlvdXMgYWN0aXZlIG9wdGlvblxuICAgIGNvbnN0IGxhc3RBY3RpdmVPcHRpb24gPSBmaWx0ZXJlZE9wdGlvbnNbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcbiAgICBpZiAobGFzdEFjdGl2ZU9wdGlvbikge1xuICAgICAgbGFzdEFjdGl2ZU9wdGlvbi5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSBuZXh0O1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0QWN0aXZlRWxlbWVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5vcHRpb25zW3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF07XG5cbiAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgYWN0aXZlRWxlbWVudC5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlSXRlbUluZGV4ID0gLTE7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRUcmlnZ2VyQXR0cmlidXRlcyhlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgc2V0QXJpYUNvbWJvQm94QXR0cmlidXRlcyhlbGVtZW50LCBhcmlhUm9sZU9uSG9zdCA/IHRoaXMuaWQgOiB0aGlzLm92ZXJsYXlJZCwgZmFsc2UpO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItYXV0b2NvbXBsZXRlJzogU2JiQXV0b2NvbXBsZXRlRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImFyaWFSb2xlT25Ib3N0IiwiX19kZWNvcmF0ZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QkEsTUFBTUEsbUJBQWlCO0FBRWhCLE1BQWUsOEJBQWYsTUFBZSxvQ0FBbUM7QUFBQSxFQUN2RCxrQkFBa0IsdUJBQXVCO0FBQzNDLEVBQUU7QUFBQSxFQUZLLGNBQUE7QUFBQSxVQUFBLEdBQUEsU0FBQTtBQXVDSyxTQUFBLFFBQVEsSUFBSSw0QkFBNEIsSUFBSTtBQUt0RCxTQUFRLFdBQVc7QUFDbkIsU0FBUSw0QkFBcUM7QUFnVHJDLFNBQUEsdUJBQXVCLENBQUMsVUFBOEI7QUFDNUQsV0FBSyw0QkFBNEIsaUJBQWlCLEtBQUssVUFBVSxLQUFLO0FBQUEsSUFBQTtBQUloRSxTQUFBLHdCQUF3QixDQUFDLFVBQThCO0FBQzdELFVBQ0UsQ0FBQyxLQUFLLDZCQUNOLENBQUMsaUJBQWlC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
752
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQudHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBpc1NlcnZlcixcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIH0gZnJvbSAnLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBmaW5kUmVmZXJlbmNlZEVsZW1lbnQsIGlzU2FmYXJpIH0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgU2JiTmVnYXRpdmVNaXhpbiwgU2JiSHlkcmF0aW9uTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQge1xuICBpc0V2ZW50T25FbGVtZW50LFxuICBvdmVybGF5R2FwRml4Q29ybmVycyxcbiAgcmVtb3ZlQXJpYUNvbWJvQm94QXR0cmlidXRlcyxcbiAgc2V0T3ZlcmxheVBvc2l0aW9uLFxufSBmcm9tICcuLi9jb3JlL292ZXJsYXkuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcHRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oXG4gIFNiYkh5ZHJhdGlvbk1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQgd2hlcmUgdGhlIGF1dG9jb21wbGV0ZSB3aWxsIGF0dGFjaDsgYWNjZXB0cyBib3RoIGFuIGVsZW1lbnQncyBpZCBvciBhbiBIVE1MRWxlbWVudC5cbiAgICogSWYgbm90IHNldCwgaXQgd2lsbCBzZWFyY2ggZm9yIHRoZSBmaXJzdCAnc2JiLWZvcm0tZmllbGQnIGFuY2VzdG9yLlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIG9yaWdpbj86IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgYXV0b2NvbXBsZXRlIG9wZW5pbmc7IGFjY2VwdHMgYm90aCBhbiBlbGVtZW50J3MgaWQgb3IgYW4gSFRNTEVsZW1lbnQuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBhdXRvY29tcGxldGUgd2lsbCBvcGVuIG9uIGZvY3VzLCBjbGljaywgaW5wdXQgb3IgYEFycm93RG93bmAga2V5cHJlc3Mgb2YgdGhlICd0cmlnZ2VyJyBlbGVtZW50LlxuICAgKiBJZiBub3Qgc2V0LCB3aWxsIHNlYXJjaCBmb3IgdGhlIGZpcnN0ICdpbnB1dCcgY2hpbGQgb2YgYSAnc2JiLWZvcm0tZmllbGQnIGFuY2VzdG9yLlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIHRyaWdnZXI/OiBzdHJpbmcgfCBIVE1MSW5wdXRFbGVtZW50O1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpY29uIHNwYWNlIGlzIHByZXNlcnZlZCB3aGVuIG5vIGljb24gaXMgc2V0LiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwcmVzZXJ2ZS1pY29uLXNwYWNlJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgcHJlc2VydmVJY29uU3BhY2U/OiBib29sZWFuO1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBlbGVtZW50IHdoZXJlIGF1dG9jb21wbGV0ZSBvdmVybGF5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICBwdWJsaWMgZ2V0IG9yaWdpbkVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIGlmICghdGhpcy5fb3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luRWxlbWVudCA9IHRoaXMuX2ZpbmRPcmlnaW5FbGVtZW50KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9vcmlnaW5FbGVtZW50O1xuICB9XG4gIHByaXZhdGUgX29yaWdpbkVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcblxuICAvKiogUmV0dXJucyB0aGUgdHJpZ2dlciBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IHRyaWdnZXJFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyRWxlbWVudDtcbiAgfVxuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcmxheUlkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYW5lbFJvbGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfb3ZlcmxheSE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vcHRpb25Db250YWluZXIhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2RpZExvYWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkJhc2VFbGVtZW50W107XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzeW5jTmVnYXRpdmUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZXNldEFjdGl2ZUVsZW1lbnQoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG9uT3B0aW9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkO1xuXG4gIC8qKiBPcGVucyB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgfHwgIXRoaXMuX292ZXJsYXkgfHwgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCB8fCB0aGlzLl9yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKTtcbiAgfVxuXG4gIC8qKiBDbG9zZXMgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMud2lsbENsb3NlLmVtaXQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5hYm9ydCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgaWYgKGFyaWFSb2xlT25Ib3N0KSB7XG4gICAgICB0aGlzLmlkIHx8PSB0aGlzLm92ZXJsYXlJZDtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5hYm9ydC5zaWduYWw7XG4gICAgY29uc3QgZm9ybUZpZWxkID0gdGhpcy5jbG9zZXN0KCdzYmItZm9ybS1maWVsZCcpID8/IHRoaXMuY2xvc2VzdCgnW2RhdGEtZm9ybS1maWVsZF0nKTtcblxuICAgIGlmIChmb3JtRmllbGQpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSBmb3JtRmllbGQuaGFzQXR0cmlidXRlKCduZWdhdGl2ZScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9kaWRMb2FkKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICAgIH1cbiAgICB0aGlzLnN5bmNOZWdhdGl2ZSgpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLm9uT3B0aW9uQ2xpY2soZSksIHsgc2lnbmFsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdvcmlnaW4nKSkge1xuICAgICAgdGhpcy5fcmVzZXRPcmlnaW5DbGlja0xpc3RlbmVyKHRoaXMub3JpZ2luLCBjaGFuZ2VkUHJvcGVydGllcy5nZXQoJ29yaWdpbicpKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygndHJpZ2dlcicpKSB7XG4gICAgICB0aGlzLl9yZXNldFRyaWdnZXJDbGlja0xpc3RlbmVyKHRoaXMudHJpZ2dlciwgY2hhbmdlZFByb3BlcnRpZXMuZ2V0KCd0cmlnZ2VyJykpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLnN5bmNOZWdhdGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIHRoaXMuX2NvbXBvbmVudFNldHVwKCk7XG4gICAgdGhpcy5fZGlkTG9hZCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl90cmlnZ2VyRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgLyoqIFdoZW4gYW4gb3B0aW9uIGlzIHNlbGVjdGVkLCB1cGRhdGUgdGhlIGlucHV0IHZhbHVlIGFuZCBjbG9zZSB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwcm90ZWN0ZWQgb25PcHRpb25TZWxlY3RlZChldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uQmFzZUVsZW1lbnQ7XG4gICAgaWYgKCF0YXJnZXQuc2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEZXNlbGVjdCB0aGUgcHJldmlvdXMgb3B0aW9uc1xuICAgIHRoaXMub3B0aW9uc1xuICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uaWQgIT09IHRhcmdldC5pZCAmJiBvcHRpb24uc2VsZWN0ZWQpXG4gICAgICAuZm9yRWFjaCgob3B0aW9uKSA9PiAob3B0aW9uLnNlbGVjdGVkID0gZmFsc2UpKTtcblxuICAgIGlmICh0aGlzLnRyaWdnZXJFbGVtZW50KSB7XG4gICAgICAvLyBTZXQgdGhlIG9wdGlvbiB2YWx1ZVxuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC52YWx1ZSA9IHRhcmdldC52YWx1ZSBhcyBzdHJpbmc7XG5cbiAgICAgIC8vIE1hbnVhbGx5IHRyaWdnZXIgdGhlIGNoYW5nZSBldmVudHNcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9oaWdobGlnaHRPcHRpb25zKHRoaXMudHJpZ2dlckVsZW1lbnQ/LnZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgYXV0b2NvbXBsZXRlIHNob3VsZCBpbmhlcml0ICdyZWFkb25seScgc3RhdGUgZnJvbSB0aGUgdHJpZ2dlci4gKi9cbiAgcHJpdmF0ZSBnZXQgX3JlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJFbGVtZW50Py5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgPz8gZmFsc2U7XG4gIH1cblxuICAvKiogUmVtb3ZlcyB0cmlnZ2VyIGNsaWNrIGxpc3RlbmVyIG9uIHRyaWdnZXIgY2hhbmdlLiAqL1xuICBwcml2YXRlIF9yZXNldE9yaWdpbkNsaWNrTGlzdGVuZXIoXG4gICAgbmV3VmFsdWU/OiBzdHJpbmcgfCBIVE1MRWxlbWVudCxcbiAgICBvbGRWYWx1ZT86IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuICApOiB2b2lkIHtcbiAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZW1vdmVzIHRyaWdnZXIgY2xpY2sgbGlzdGVuZXIgb24gdHJpZ2dlciBjaGFuZ2UuICovXG4gIHByaXZhdGUgX3Jlc2V0VHJpZ2dlckNsaWNrTGlzdGVuZXIoXG4gICAgbmV3VmFsdWU/OiBzdHJpbmcgfCBIVE1MRWxlbWVudCxcbiAgICBvbGRWYWx1ZT86IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuICApOiB2b2lkIHtcbiAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBvbmVudFNldHVwKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl90cmlnZ2VyRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuXG4gICAgdGhpcy5fb3JpZ2luRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLW9wdGlvbi1wYW5lbC1vcmlnaW4tYm9yZGVybGVzcycsXG4gICAgICAhIXRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5oYXNBdHRyaWJ1dGUoJ2JvcmRlcmxlc3MnKSxcbiAgICApO1xuXG4gICAgdGhpcy5fYmluZFRvKHRoaXMuX2dldFRyaWdnZXJFbGVtZW50KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBlbGVtZW50IHdoZXJlIHRoZSBhdXRvY29tcGxldGUgd2lsbCBiZSBhdHRhY2hlZC5cbiAgICogQHJldHVybnMgJ29yaWdpbicgb3IgdGhlIGZpcnN0ICdzYmItZm9ybS1maWVsZCcgYW5jZXN0b3IuXG4gICAqL1xuICBwcml2YXRlIF9maW5kT3JpZ2luRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgbGV0IHJlc3VsdDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgcmVzdWx0ID0gdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk/LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I/LignI292ZXJsYXktYW5jaG9yJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGZpbmRSZWZlcmVuY2VkRWxlbWVudCh0aGlzLm9yaWdpbik7XG4gICAgfVxuXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBmaW5kIHRoZSBvcmlnaW4gZWxlbWVudC4gUGxlYXNlIHNwZWNpZnkgYSB2YWxpZCBlbGVtZW50IG9yIHJlYWQgdGhlIFwib3JpZ2luXCIgcHJvcCBkb2N1bWVudGF0aW9uJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgYXV0b2NvbXBsZXRlIG9wZW5pbmcuXG4gICAqIEByZXR1cm5zICd0cmlnZ2VyJyBvciB0aGUgZmlyc3QgJ2lucHV0JyBpbnNpZGUgdGhlIG9yaWdpbiBlbGVtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0VHJpZ2dlckVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgaWYgKCF0aGlzLnRyaWdnZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKT8ucXVlcnlTZWxlY3RvcignaW5wdXQnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGZpbmRSZWZlcmVuY2VkRWxlbWVudDxIVE1MSW5wdXRFbGVtZW50Pih0aGlzLnRyaWdnZXIpO1xuXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBmaW5kIHRoZSB0cmlnZ2VyIGVsZW1lbnQuIFBsZWFzZSBzcGVjaWZ5IGEgdmFsaWQgZWxlbWVudCBvciByZWFkIHRoZSBcInRyaWdnZXJcIiBwcm9wIGRvY3VtZW50YXRpb24nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYmluZFRvKHRyaWdnZXJFbGVtOiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKCF0cmlnZ2VyRWxlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IGF0dHJpYnV0ZXMgdG8gdGhlIG9sZCB0cmlnZ2VyIGFuZCBhZGQgdGhlbSB0byB0aGUgbmV3IG9uZVxuICAgIHRoaXMuX3JlbW92ZVRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMudHJpZ2dlckVsZW1lbnQpO1xuICAgIHRoaXMuc2V0VHJpZ2dlckF0dHJpYnV0ZXModHJpZ2dlckVsZW0pO1xuXG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyRWxlbTtcblxuICAgIHRoaXMuX3NldHVwVHJpZ2dlckV2ZW50cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBUcmlnZ2VyRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX3RyaWdnZXJFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gT3BlbiB0aGUgb3ZlcmxheSBvbiBmb2N1cywgY2xpY2ssIGlucHV0IGFuZCBgQXJyb3dEb3duYCBldmVudFxuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnaW5wdXQnLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB0aGlzLl9oaWdobGlnaHRPcHRpb25zKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl90cmlnZ2VyRXZlbnRzQ29udHJvbGxlci5zaWduYWwgfSxcbiAgICApO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMuX2Nsb3NlZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCksXG4gICAgICB7IHNpZ25hbDogdGhpcy5fdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNldCBvdmVybGF5IHBvc2l0aW9uLCB3aWR0aCBhbmQgbWF4IGhlaWdodFxuICBwcml2YXRlIF9zZXRPdmVybGF5UG9zaXRpb24oKTogdm9pZCB7XG4gICAgc2V0T3ZlcmxheVBvc2l0aW9uKFxuICAgICAgdGhpcy5fb3ZlcmxheSxcbiAgICAgIHRoaXMub3JpZ2luRWxlbWVudCxcbiAgICAgIHRoaXMuX29wdGlvbkNvbnRhaW5lcixcbiAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1hdXRvY29tcGxldGVfX2NvbnRhaW5lcicpISxcbiAgICAgIHRoaXMsXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBPbiBvcGVuL2Nsb3NlIGFuaW1hdGlvbiBlbmQuXG4gICAqICBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAgKiAgVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuX29uT3BlbkFuaW1hdGlvbkVuZCgpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX29uQ2xvc2VBbmltYXRpb25FbmQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbk9wZW5BbmltYXRpb25FbmQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIHRoaXMuX2F0dGFjaE9wZW5QYW5lbEV2ZW50cygpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG4gICAgdGhpcy5kaWRPcGVuLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uQ2xvc2VBbmltYXRpb25FbmQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICAgIHRoaXMucmVzZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgdGhpcy5fb3B0aW9uQ29udGFpbmVyLnNjcm9sbFRvcCA9IDA7XG4gICAgdGhpcy5kaWRDbG9zZS5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hPcGVuUGFuZWxFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIFJlY2FsY3VsYXRlIHRoZSBvdmVybGF5IHBvc2l0aW9uIG9uIHNjcm9sbCBhbmQgd2luZG93IHJlc2l6ZVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgYXV0b2NvbXBsZXRlIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGV2KSA9PiB0aGlzLl9wb2ludGVyRG93bkxpc3RlbmVyKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgKGV2KSA9PiB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljayhldiksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICAvLyBLZXlib2FyZCBpbnRlcmFjdGlvbnNcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLm9wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCksXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgcG9pbnRlcmRvd24gZXZlbnQgdGFyZ2V0IGlzIHRyaWdnZXJlZCBvbiB0aGUgbWVudS5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ID0gaXNFdmVudE9uRWxlbWVudCh0aGlzLl9vdmVybGF5LCBldmVudCk7XG4gIH07XG5cbiAgLy8gSWYgdGhlIGNsaWNrIGlzIG91dHNpZGUgdGhlIGF1dG9jb21wbGV0ZSwgY2xvc2VzIHRoZSBwYW5lbC5cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgJiZcbiAgICAgICFpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KSAmJlxuICAgICAgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5vcmlnaW5FbGVtZW50LCBldmVudClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfY2xvc2VkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIaWdobGlnaHQgdGhlIHNlYXJjaGVkIHRleHQgb24gdGhlIG9wdGlvbnMuICovXG4gIHByaXZhdGUgX2hpZ2hsaWdodE9wdGlvbnMoc2VhcmNoVGVybT86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChzZWFyY2hUZXJtID09PSBudWxsIHx8IHNlYXJjaFRlcm0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiBvcHRpb24uaGlnaGxpZ2h0KHNlYXJjaFRlcm0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZVRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ/OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgcmVtb3ZlQXJpYUNvbWJvQm94QXR0cmlidXRlcyhlbGVtZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2dhcC1maXhcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2dhcC1maXhcIj4ke292ZXJsYXlHYXBGaXhDb3JuZXJzKCl9PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25BbmltYXRpb25FbmR9XG4gICAgICAgICAgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19wYW5lbFwiXG4gICAgICAgICAgP2RhdGEtb3Blbj0ke3RoaXMuc3RhdGUgPT09ICdvcGVuZWQnIHx8IHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJ31cbiAgICAgICAgICAke3JlZigob3ZlcmxheVJlZj86IEVsZW1lbnQpID0+ICh0aGlzLl9vdmVybGF5ID0gb3ZlcmxheVJlZiBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19vcHRpb25zXCJcbiAgICAgICAgICAgICAgcm9sZT0keyFhcmlhUm9sZU9uSG9zdCA/IHRoaXMucGFuZWxSb2xlIDogbm90aGluZ31cbiAgICAgICAgICAgICAgaWQ9JHshYXJpYVJvbGVPbkhvc3QgPyB0aGlzLm92ZXJsYXlJZCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7cmVmKChjb250YWluZXJSZWYpID0+ICh0aGlzLl9vcHRpb25Db250YWluZXIgPSBjb250YWluZXJSZWYgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG4iLCJpbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4IH0gZnJvbSAnLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGdldERvY3VtZW50V3JpdGluZ01vZGUsIGlzU2FmYXJpIH0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgc2V0QXJpYUNvbWJvQm94QXR0cmlidXRlcyB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdEdyb3VwRWxlbWVudCwgU2JiT3B0aW9uRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi5qcyc7XG5cbmltcG9ydCB7IFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LmpzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogT24gU2FmYXJpLCB0aGUgYXJpYSByb2xlICdsaXN0Ym94JyBtdXN0IGJlIG9uIHRoZSBob3N0IGVsZW1lbnQsIG9yIGVsc2UgVm9pY2VPdmVyIHdvbid0IHdvcmsgYXQgYWxsLlxuICogT24gdGhlIG90aGVyIGhhbmQsIEpBV1MgYW5kIE5WREEgbmVlZCB0aGUgcm9sZSB0byBiZSBcImNsb3NlclwiIHRvIHRoZSBvcHRpb25zLCBvciBlbHNlIG9wdGdyb3VwcyB3b24ndCB3b3JrLlxuICovXG5jb25zdCBhcmlhUm9sZU9uSG9zdCA9IGlzU2FmYXJpO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBuYXRpdmUgaW5wdXQsIGl0IGRpc3BsYXlzIGEgcGFuZWwgd2l0aCBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1vcHRpb25gIG9yIGBzYmItb3B0Z3JvdXBgIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAgc3RhcnRzIHRoZSBvcGVuaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1hdXRvY29tcGxldGVgIGlzIG9wZW5lZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IHdpbGxDbG9zZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItYXV0b2NvbXBsZXRlYCBpcyBjbG9zZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItYXV0b2NvbXBsZXRlLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1hdXRvY29tcGxldGUnKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgZGlyOiBnZXREb2N1bWVudFdyaXRpbmdNb2RlKCksXG4gIHJvbGU6IGFyaWFSb2xlT25Ib3N0ID8gJ2xpc3Rib3gnIDogbnVsbCxcbn0pXG5leHBvcnQgY2xhc3MgU2JiQXV0b2NvbXBsZXRlRWxlbWVudCBleHRlbmRzIFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IHtcbiAgcHJvdGVjdGVkIG92ZXJsYXlJZCA9IGBzYmItYXV0b2NvbXBsZXRlLSR7KytuZXh0SWR9YDtcbiAgcHJvdGVjdGVkIHBhbmVsUm9sZSA9ICdsaXN0Ym94JztcbiAgcHJpdmF0ZSBfYWN0aXZlSXRlbUluZGV4ID0gLTE7XG5cbiAgcHJvdGVjdGVkIGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1vcHRpb24nKSA/PyBbXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25PcHRpb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIChldmVudC50YXJnZXQgYXMgRWxlbWVudCkubG9jYWxOYW1lICE9PSAnc2JiLW9wdGlvbicgfHxcbiAgICAgIChldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uRWxlbWVudCkuZGlzYWJsZWRcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5hYm9ydC5zaWduYWw7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ29wdGlvblNlbGVjdGlvbkNoYW5nZScsXG4gICAgICAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+IHRoaXMub25PcHRpb25TZWxlY3RlZChlKSxcbiAgICAgIHsgc2lnbmFsIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW5jTmVnYXRpdmUoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1kaXZpZGVyJykuZm9yRWFjaCgoZGl2aWRlcikgPT4gKGRpdmlkZXIubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlKSk7XG5cbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJPcHRpb25FbGVtZW50IHwgU2JiT3B0R3JvdXBFbGVtZW50PihcbiAgICAgICdzYmItb3B0aW9uLCBzYmItb3B0Z3JvdXAnLFxuICAgICkuZm9yRWFjaCgoZWxlbWVudCkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbmVnYXRpdmUnLCB0aGlzLm5lZ2F0aXZlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIHRoaXMuc2VsZWN0QnlLZXlib2FyZCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0QnlLZXlib2FyZCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVPcHRpb24gPSB0aGlzLm9wdGlvbnNbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcblxuICAgIGlmIChhY3RpdmVPcHRpb24pIHtcbiAgICAgIGFjdGl2ZU9wdGlvbi5zZXRTZWxlY3RlZFZpYVVzZXJJbnRlcmFjdGlvbih0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoXG4gICAgICAob3B0KSA9PiAhb3B0LmRpc2FibGVkICYmICFvcHQuaGFzQXR0cmlidXRlKCdkYXRhLWdyb3VwLWRpc2FibGVkJyksXG4gICAgKTtcblxuICAgIC8vIEdldCBhbmQgYWN0aXZhdGUgdGhlIG5leHQgYWN0aXZlIG9wdGlvblxuICAgIGNvbnN0IG5leHQgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50LCB0aGlzLl9hY3RpdmVJdGVtSW5kZXgsIGZpbHRlcmVkT3B0aW9ucy5sZW5ndGgpO1xuICAgIGNvbnN0IG5leHRBY3RpdmVPcHRpb24gPSBmaWx0ZXJlZE9wdGlvbnNbbmV4dF07XG4gICAgbmV4dEFjdGl2ZU9wdGlvbi5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgbmV4dEFjdGl2ZU9wdGlvbi5pZCk7XG4gICAgbmV4dEFjdGl2ZU9wdGlvbi5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XG5cbiAgICAvLyBSZXNldCB0aGUgcHJldmlvdXMgYWN0aXZlIG9wdGlvblxuICAgIGNvbnN0IGxhc3RBY3RpdmVPcHRpb24gPSBmaWx0ZXJlZE9wdGlvbnNbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcbiAgICBpZiAobGFzdEFjdGl2ZU9wdGlvbikge1xuICAgICAgbGFzdEFjdGl2ZU9wdGlvbi5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSBuZXh0O1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0QWN0aXZlRWxlbWVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5vcHRpb25zW3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF07XG5cbiAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgYWN0aXZlRWxlbWVudC5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlSXRlbUluZGV4ID0gLTE7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRUcmlnZ2VyQXR0cmlidXRlcyhlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgc2V0QXJpYUNvbWJvQm94QXR0cmlidXRlcyhlbGVtZW50LCBhcmlhUm9sZU9uSG9zdCA/IHRoaXMuaWQgOiB0aGlzLm92ZXJsYXlJZCwgZmFsc2UpO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItYXV0b2NvbXBsZXRlJzogU2JiQXV0b2NvbXBsZXRlRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImFyaWFSb2xlT25Ib3N0IiwiX19kZWNvcmF0ZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZCQSxNQUFNQSxtQkFBaUI7QUFFaEIsTUFBZSw4QkFBZixNQUFlLG9DQUFtQztBQUFBLEVBQ3ZELGtCQUFrQix1QkFBdUI7QUFDM0MsRUFBRTtBQUFBLEVBRkssY0FBQTtBQUFBLFVBQUEsR0FBQSxTQUFBO0FBdUNLLFNBQUEsUUFBUSxJQUFJLDRCQUE0QixJQUFJO0FBS3RELFNBQVEsV0FBVztBQUNuQixTQUFRLDRCQUFxQztBQWdUckMsU0FBQSx1QkFBdUIsQ0FBQyxVQUE4QjtBQUM1RCxXQUFLLDRCQUE0QixpQkFBaUIsS0FBSyxVQUFVLEtBQUs7QUFBQSxJQUFBO0FBSWhFLFNBQUEsd0JBQXdCLENBQUMsVUFBOEI7QUFDN0QsVUFDRSxDQUFDLEtBQUssNkJBQ04sQ0FBQyxpQkFB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
@@ -1,6 +1,5 @@
1
1
  import { CSSResultGroup, TemplateResult } from 'lit';
2
2
  import { SbbLinkBaseElement } from '../../core/base-elements.js';
3
-
4
3
  declare const SbbBreadcrumbElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../icon.js').SbbIconNameMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbHydrationMixinType> & typeof SbbLinkBaseElement;
5
4
  /**
6
5
  * It displays a link to a page; used within a `sbb-breadcrumb-group` it can display the path to the current page.
@@ -1,7 +1,6 @@
1
1
  import { CSSResultGroup, LitElement, PropertyValues, TemplateResult } from 'lit';
2
2
  import { WithListChildren } from '../../core/mixins.js';
3
3
  import { SbbBreadcrumbElement } from '../breadcrumb.js';
4
-
5
4
  declare const SbbBreadcrumbGroupElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbNamedSlotListMixinType<SbbBreadcrumbElement>> & typeof LitElement;
6
5
  /**
7
6
  * It can be used as a container for one or more `sbb-breadcrumb` component.