@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
@@ -3,13 +3,13 @@ import { property, state, customElement } from "lit/decorators.js";
3
3
  import { ref } from "lit/directives/ref.js";
4
4
  import { SbbFocusHandler, setModalityOnNextFocus } from "../core/a11y.js";
5
5
  import { SbbOpenCloseBaseElement } from "../core/base-elements.js";
6
- import { SbbConnectedAbortController, SbbLanguageController } from "../core/controllers.js";
6
+ import { SbbConnectedAbortController, SbbLanguageController, SbbInertController } from "../core/controllers.js";
7
7
  import { hostAttributes } from "../core/decorators.js";
8
8
  import { SbbScrollHandler, findReferencedElement } from "../core/dom.js";
9
9
  import { i18nCloseNavigation } from "../core/i18n.js";
10
10
  import { SbbUpdateSchedulerMixin } from "../core/mixins.js";
11
11
  import { AgnosticMutationObserver, AgnosticResizeObserver } from "../core/observers.js";
12
- import { isEventOnElement, removeAriaOverlayTriggerAttributes, setAriaOverlayTriggerAttributes, applyInertMechanism, removeInertMechanism } from "../core/overlay.js";
12
+ import { isEventOnElement, removeAriaOverlayTriggerAttributes, setAriaOverlayTriggerAttributes } from "../core/overlay.js";
13
13
  import "../button/transparent-button.js";
14
14
  const style = css`/**
15
15
  * Better font rendering (on OS X)
@@ -58,12 +58,12 @@ const style = css`/**
58
58
  --sbb-navigation-content-transform: translateX(0);
59
59
  --sbb-navigation-width: 100%;
60
60
  --sbb-navigation-height: 100vh;
61
+ --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);
61
62
  display: block;
62
63
  position: fixed;
63
64
  inset: var(--sbb-navigation-inset);
64
65
  z-index: var(--sbb-navigation-z-index, var(--sbb-overlay-default-z-index));
65
66
  overflow: hidden;
66
- --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);
67
67
  }
68
68
  @supports (height: 100dvh) {
69
69
  :host {
@@ -235,15 +235,6 @@ const style = css`/**
235
235
  --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);
236
236
  /* Scrollbar itself */
237
237
  /* Hide button (top and bottom of the scrollbar) */
238
- display: flex;
239
- flex-direction: column;
240
- gap: var(--sbb-spacing-responsive-xxl);
241
- position: relative;
242
- height: var(--sbb-navigation-height);
243
- padding-inline: var(--sbb-navigation-padding-inline);
244
- padding-block: var(--sbb-navigation-padding-block-start) var(--sbb-navigation-padding-block-end);
245
- overflow-y: auto;
246
- transform: var(--sbb-navigation-content-transform);
247
238
  }
248
239
  .sbb-navigation__content::-webkit-scrollbar {
249
240
  width: var(--sbb-scrollbar-width);
@@ -272,6 +263,17 @@ const style = css`/**
272
263
  scrollbar-color: var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent);
273
264
  }
274
265
  }
266
+ .sbb-navigation__content {
267
+ display: flex;
268
+ flex-direction: column;
269
+ gap: var(--sbb-spacing-responsive-xxl);
270
+ position: relative;
271
+ height: var(--sbb-navigation-height);
272
+ padding-inline: var(--sbb-navigation-padding-inline);
273
+ padding-block: var(--sbb-navigation-padding-block-start) var(--sbb-navigation-padding-block-end);
274
+ overflow-y: auto;
275
+ transform: var(--sbb-navigation-content-transform);
276
+ }
275
277
 
276
278
  ::slotted(:first-child) {
277
279
  margin-block-start: var(--sbb-navigation-list-margin-block-start);
@@ -317,6 +319,7 @@ let SbbNavigationElement = class extends SbbUpdateSchedulerMixin(SbbOpenCloseBas
317
319
  this._triggerElement = null;
318
320
  this._abort = new SbbConnectedAbortController(this);
319
321
  this._language = new SbbLanguageController(this);
322
+ this._inertController = new SbbInertController(this);
320
323
  this._focusHandler = new SbbFocusHandler();
321
324
  this._scrollHandler = new SbbScrollHandler();
322
325
  this._isPointerDownEventOnNavigation = false;
@@ -438,7 +441,7 @@ let SbbNavigationElement = class extends SbbUpdateSchedulerMixin(SbbOpenCloseBas
438
441
  this.state = "opened";
439
442
  this.didOpen.emit();
440
443
  this._navigationResizeObserver.observe(this);
441
- applyInertMechanism(this);
444
+ this._inertController.activate();
442
445
  this._focusHandler.trap(this, { filter: this._trapFocusFilter });
443
446
  this._attachWindowEvents();
444
447
  this._setNavigationFocus();
@@ -446,7 +449,7 @@ let SbbNavigationElement = class extends SbbUpdateSchedulerMixin(SbbOpenCloseBas
446
449
  this.state = "closed";
447
450
  this._navigationContentElement.scrollTo(0, 0);
448
451
  setModalityOnNextFocus(this._triggerElement);
449
- removeInertMechanism();
452
+ this._inertController.deactivate();
450
453
  (_a = this._triggerElement) == null ? void 0 : _a.focus();
451
454
  this.didClose.emit();
452
455
  this._navigationResizeObserver.unobserve(this);
@@ -530,9 +533,6 @@ let SbbNavigationElement = class extends SbbUpdateSchedulerMixin(SbbOpenCloseBas
530
533
  this._navigationObserver.observe(this, navigationObserverConfig);
531
534
  this.addEventListener("pointerup", (event) => this._closeOnBackdropClick(event), { signal });
532
535
  this.addEventListener("pointerdown", (event) => this._pointerDownListener(event), { signal });
533
- if (this.state === "opened") {
534
- applyInertMechanism(this);
535
- }
536
536
  }
537
537
  disconnectedCallback() {
538
538
  var _a, _b;
@@ -542,7 +542,6 @@ let SbbNavigationElement = class extends SbbUpdateSchedulerMixin(SbbOpenCloseBas
542
542
  this._focusHandler.disconnect();
543
543
  this._navigationObserver.disconnect();
544
544
  this._navigationResizeObserver.disconnect();
545
- removeInertMechanism();
546
545
  this._scrollHandler.enableScroll();
547
546
  }
548
547
  render() {
@@ -601,4 +600,4 @@ SbbNavigationElement = __decorateClass([
601
600
  export {
602
601
  SbbNavigationElement
603
602
  };
604
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL25hdmlnYXRpb24vbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHsgU2JiRm9jdXNIYW5kbGVyLCBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBmaW5kUmVmZXJlbmNlZEVsZW1lbnQsIFNiYlNjcm9sbEhhbmRsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBpMThuQ2xvc2VOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYlVwZGF0ZVNjaGVkdWxlck1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHsgQWdub3N0aWNNdXRhdGlvbk9ic2VydmVyLCBBZ25vc3RpY1Jlc2l6ZU9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuaW1wb3J0IHtcbiAgYXBwbHlJbmVydE1lY2hhbmlzbSxcbiAgaXNFdmVudE9uRWxlbWVudCxcbiAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyQXR0cmlidXRlcyxcbiAgcmVtb3ZlSW5lcnRNZWNoYW5pc20sXG4gIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG59IGZyb20gJy4uLy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1idXR0b24uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJOYXZpZ2F0aW9uTGlua0VsZW1lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLWxpbmsuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9uYXZpZ2F0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vYnV0dG9uL3RyYW5zcGFyZW50LWJ1dHRvbi5qcyc7XG5cbi8qKiBDb25maWd1cmF0aW9uIGZvciB0aGUgYXR0cmlidXRlIHRvIGxvb2sgYXQgaWYgYSBuYXZpZ2F0aW9uIHNlY3Rpb24gaXMgZGlzcGxheWVkICovXG5jb25zdCBuYXZpZ2F0aW9uT2JzZXJ2ZXJDb25maWc6IE11dGF0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICBzdWJ0cmVlOiB0cnVlLFxuICBhdHRyaWJ1dGVGaWx0ZXI6IFsnZGF0YS1zdGF0ZSddLFxufTtcblxubGV0IG5leHRJZCA9IDA7XG5jb25zdCBERUJPVU5DRV9USU1FID0gMTUwO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgbmF2aWdhdGlvbiBtZW51LCB3cmFwcGluZyBvbmUgb3IgbW9yZSBgc2JiLW5hdmlnYXRpb24tKmAgY29tcG9uZW50cy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBgc2JiLW5hdmlnYXRpb24tYnV0dG9uYC9gc2JiLW5hdmlnYXRpb24tbGlua2AgZWxlbWVudHMgaW50byB0aGUgc2JiLW5hdmlnYXRpb24gbWVudS5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IHdpbGxPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItbmF2aWdhdGlvbmAgYmVnaW5zIHRoZSBvcGVuaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1uYXZpZ2F0aW9uYCBpcyBvcGVuZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1uYXZpZ2F0aW9uYCBiZWdpbnMgdGhlIGNsb3NpbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGlkQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1uYXZpZ2F0aW9uYCBpcyBjbG9zZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItbmF2aWdhdGlvbi16LWluZGV4PXZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCldIC0gVG8gc3BlY2lmeSBhIGN1c3RvbSBzdGFjayBvcmRlcixcbiAqIHRoZSBgei1pbmRleGAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgdGhpcyBDU1MgdmFyaWFibGUuIFRoZSBkZWZhdWx0IGB6LWluZGV4YCBvZiB0aGVcbiAqIGNvbXBvbmVudCBpcyBzZXQgdG8gYHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleClgIHdpdGggYSB2YWx1ZSBvZiBgMTAwMGAuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItbmF2aWdhdGlvbicpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICByb2xlOiAnbmF2aWdhdGlvbicsXG59KVxuZXhwb3J0IGNsYXNzIFNiYk5hdmlnYXRpb25FbGVtZW50IGV4dGVuZHMgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBuYXZpZ2F0aW9uLlxuICAgKiBBY2NlcHRzIGJvdGggYSBzdHJpbmcgKGlkIG9mIGFuIGVsZW1lbnQpIG9yIGFuIEhUTUwgZWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgdHJpZ2dlcih2YWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLl90cmlnZ2VyO1xuICAgIHRoaXMuX3RyaWdnZXIgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZW1vdmVUcmlnZ2VyQ2xpY2tMaXN0ZW5lcih0aGlzLl90cmlnZ2VyLCBvbGRWYWx1ZSk7XG4gIH1cbiAgcHVibGljIGdldCB0cmlnZ2VyKCk6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXI7XG4gIH1cbiAgcHJpdmF0ZSBfdHJpZ2dlcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBjbG9zZSBidXR0b24gZWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktY2xvc2UtbGFiZWwnIH0pIHB1YmxpYyBhY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbDpcbiAgICB8IHN0cmluZ1xuICAgIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgbmF2aWdhdGlvbiBzZWN0aW9uIGlzIGRpc3BsYXllZC5cbiAgICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgX2FjdGl2ZU5hdmlnYXRpb25TZWN0aW9uOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBnZXQgYWN0aXZlTmF2aWdhdGlvblNlY3Rpb24oKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlTmF2aWdhdGlvblNlY3Rpb247XG4gIH1cblxuICBwcml2YXRlIF9uYXZpZ2F0aW9uITogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgX25hdmlnYXRpb25Db250ZW50RWxlbWVudCE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbmF2aWdhdGlvbkNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2Fib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9mb2N1c0hhbmRsZXIgPSBuZXcgU2JiRm9jdXNIYW5kbGVyKCk7XG4gIHByaXZhdGUgX3Njcm9sbEhhbmRsZXIgPSBuZXcgU2JiU2Nyb2xsSGFuZGxlcigpO1xuICBwcml2YXRlIF9pc1BvaW50ZXJEb3duRXZlbnRPbk5hdmlnYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXJUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9uYXZpZ2F0aW9uT2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnNMaXN0OiBNdXRhdGlvblJlY29yZFtdKSA9PlxuICAgIHRoaXMuX29uTmF2aWdhdGlvblNlY3Rpb25DaGFuZ2UobXV0YXRpb25zTGlzdCksXG4gICk7XG4gIHByaXZhdGUgX25hdmlnYXRpb25SZXNpemVPYnNlcnZlciA9IG5ldyBBZ25vc3RpY1Jlc2l6ZU9ic2VydmVyKCgpID0+IHRoaXMuX29uTmF2aWdhdGlvblJlc2l6ZSgpKTtcblxuICAvKipcbiAgICogT3BlbnMgdGhlIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgfHwgIXRoaXMuX25hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5fY2hlY2tBY3RpdmVBY3Rpb25zKCk7XG4gICAgdGhpcy5fY2hlY2tBY3RpdmVTZWN0aW9uKCk7XG4gICAgdGhpcy5zdGFydFVwZGF0ZSgpO1xuXG4gICAgLy8gRGlzYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIG5hdmlnYXRpb25cbiAgICB0aGlzLl9zY3JvbGxIYW5kbGVyLmRpc2FibGVTY3JvbGwoKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrQWN0aXZlU2VjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVBY3Rpb24gPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnc2JiLW5hdmlnYXRpb24tYnV0dG9uLnNiYi1hY3RpdmUnLFxuICAgICkgYXMgU2JiTmF2aWdhdGlvbkJ1dHRvbkVsZW1lbnQ7XG4gICAgYWN0aXZlQWN0aW9uPy5jb25uZWN0ZWRTZWN0aW9uPy5vcGVuKCk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FjdGl2ZUFjdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlQWN0aW9ucyA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJzppcyhzYmItbmF2aWdhdGlvbi1idXR0b24sIHNiYi1uYXZpZ2F0aW9uLWxpbmspLnNiYi1hY3RpdmUnKSxcbiAgICApIGFzIChTYmJOYXZpZ2F0aW9uQnV0dG9uRWxlbWVudCB8IFNiYk5hdmlnYXRpb25MaW5rRWxlbWVudClbXTtcbiAgICBhY3RpdmVBY3Rpb25zPy5mb3JFYWNoKChhY3Rpb24pID0+IGFjdGlvbi5tYXJrZXI/LnNlbGVjdChhY3Rpb24pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLndpbGxDbG9zZS5lbWl0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnN0YXJ0VXBkYXRlKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICB9XG5cbiAgLy8gUmVtb3ZlcyB0cmlnZ2VyIGNsaWNrIGxpc3RlbmVyIG9uIHRyaWdnZXIgY2hhbmdlLlxuICBwcml2YXRlIF9yZW1vdmVUcmlnZ2VyQ2xpY2tMaXN0ZW5lcihcbiAgICBuZXdWYWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsLFxuICAgIG9sZFZhbHVlOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwsXG4gICk6IHZvaWQge1xuICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZSh0aGlzLnRyaWdnZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSB0cmlnZ2VyIGlzIHZhbGlkIGFuZCBhdHRhY2ggY2xpY2sgZXZlbnQgbGlzdGVuZXJzLlxuICBwcml2YXRlIF9jb25maWd1cmUodHJpZ2dlcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG5cbiAgICBpZiAoIXRyaWdnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IGZpbmRSZWZlcmVuY2VkRWxlbWVudCh0cmlnZ2VyKTtcblxuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnbWVudScsIHRoaXMuaWQsIHRoaXMuc3RhdGUpO1xuICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fbmF2aWdhdGlvbkNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJhcEZvY3VzRmlsdGVyID0gKGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBlbC5ub2RlTmFtZSAhPT0gJ1NCQi1OQVZJR0FUSU9OLVNFQ1RJT04nIHx8IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScpID09PSAnb3BlbmVkJztcbiAgfTtcblxuICAvLyBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgICB0aGlzLmRpZE9wZW4uZW1pdCgpO1xuICAgICAgdGhpcy5fbmF2aWdhdGlvblJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcyk7XG4gICAgICBhcHBseUluZXJ0TWVjaGFuaXNtKHRoaXMpO1xuICAgICAgdGhpcy5fZm9jdXNIYW5kbGVyLnRyYXAodGhpcywgeyBmaWx0ZXI6IHRoaXMuX3RyYXBGb2N1c0ZpbHRlciB9KTtcbiAgICAgIHRoaXMuX2F0dGFjaFdpbmRvd0V2ZW50cygpO1xuICAgICAgdGhpcy5fc2V0TmF2aWdhdGlvbkZvY3VzKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJykge1xuICAgICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgICAgdGhpcy5fbmF2aWdhdGlvbkNvbnRlbnRFbGVtZW50LnNjcm9sbFRvKDAsIDApO1xuICAgICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyh0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG4gICAgICByZW1vdmVJbmVydE1lY2hhbmlzbSgpO1xuICAgICAgLy8gVG8gZW5hYmxlIGZvY3VzaW5nIG90aGVyIGVsZW1lbnQgdGhhbiB0aGUgdHJpZ2dlciwgd2UgbmVlZCB0byBjYWxsIGZvY3VzKCkgYSBzZWNvbmQgdGltZS5cbiAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5mb2N1cygpO1xuICAgICAgdGhpcy5kaWRDbG9zZS5lbWl0KCk7XG4gICAgICB0aGlzLl9uYXZpZ2F0aW9uUmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMpO1xuICAgICAgdGhpcy5fcmVzZXRNYXJrZXJzKCk7XG4gICAgICB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5fZm9jdXNIYW5kbGVyLmRpc2Nvbm5lY3QoKTtcblxuICAgICAgLy8gRW5hYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgbmF2aWdhdGlvblxuICAgICAgdGhpcy5fc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgICB9XG4gICAgdGhpcy5jb21wbGV0ZVVwZGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRNYXJrZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUFjdGlvbnMgPSBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAnOmlzKHNiYi1uYXZpZ2F0aW9uLWJ1dHRvbiwgc2JiLW5hdmlnYXRpb24tbGluaylbZGF0YS1hY3Rpb24tYWN0aXZlXTpub3QoLnNiYi1hY3RpdmUpJyxcbiAgICAgICksXG4gICAgKSBhcyAoU2JiTmF2aWdhdGlvbkJ1dHRvbkVsZW1lbnQgfCBTYmJOYXZpZ2F0aW9uTGlua0VsZW1lbnQpW107XG4gICAgYWN0aXZlQWN0aW9ucz8uZm9yRWFjaCgoYWN0aW9uKSA9PiBhY3Rpb24ubWFya2VyPy5yZXNldCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGFjaFdpbmRvd0V2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLl9vbktleWRvd25FdmVudChldmVudCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVOYXZpZ2F0aW9uQ2xvc2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9zZWRQYXRoRWxlbWVudHMgPSBldmVudFxuICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAuZmlsdGVyKChlbCkgPT4gZWwgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpO1xuICAgIGlmIChjb21wb3NlZFBhdGhFbGVtZW50cy5zb21lKChlbCkgPT4gdGhpcy5faXNDbG9zZUVsZW1lbnQoZWwgYXMgSFRNTEVsZW1lbnQpKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzQ2xvc2VFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGVsZW1lbnQubm9kZU5hbWUgPT09ICdBJyB8fFxuICAgICAgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdzYmItbmF2aWdhdGlvbi1jbG9zZScpICYmICFlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSlcbiAgICApO1xuICB9XG5cbiAgLy8gQ2xvc2VzIHRoZSBuYXZpZ2F0aW9uIG9uIFwiRXNjXCIga2V5IHByZXNzZWQuXG4gIHByaXZhdGUgX29uS2V5ZG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnICYmIGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgZm9jdXMgb24gdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50LlxuICBwcml2YXRlIF9zZXROYXZpZ2F0aW9uRm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgY2xvc2VCdXR0b24gPSB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnI3NiYi1uYXZpZ2F0aW9uLWNsb3NlLWJ1dHRvbicsXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcbiAgICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzKGNsb3NlQnV0dG9uKTtcbiAgICBjbG9zZUJ1dHRvbi5mb2N1cygpO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHBvaW50ZXJkb3duIGV2ZW50IHRhcmdldCBpcyB0cmlnZ2VyZWQgb24gdGhlIG5hdmlnYXRpb24uXG4gIHByaXZhdGUgX3BvaW50ZXJEb3duTGlzdGVuZXIgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTmF2aWdhdGlvbiA9XG4gICAgICBpc0V2ZW50T25FbGVtZW50KHRoaXMuX25hdmlnYXRpb24sIGV2ZW50KSB8fFxuICAgICAgaXNFdmVudE9uRWxlbWVudChcbiAgICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICdzYmItbmF2aWdhdGlvbi1zZWN0aW9uW2RhdGEtc3RhdGU9XCJvcGVuZWRcIl0nLFxuICAgICAgICApPy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCduYXYuc2JiLW5hdmlnYXRpb24tc2VjdGlvbicpIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICBldmVudCxcbiAgICAgICk7XG4gIH07XG5cbiAgLy8gQ2xvc2UgbmF2aWdhdGlvbiBvbiBiYWNrZHJvcCBjbGljay5cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmICghdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25OYXZpZ2F0aW9uICYmICFpc0V2ZW50T25FbGVtZW50KHRoaXMuX25hdmlnYXRpb24sIGV2ZW50KSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICAvLyBPYnNlcnZlIGNoYW5nZXMgb24gbmF2aWdhdGlvbiBzZWN0aW9uIGRhdGEtc3RhdGUuXG4gIHByaXZhdGUgX29uTmF2aWdhdGlvblNlY3Rpb25DaGFuZ2UobXV0YXRpb25zTGlzdDogTXV0YXRpb25SZWNvcmRbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zTGlzdCkge1xuICAgICAgaWYgKChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLm5vZGVOYW1lID09PSAnU0JCLU5BVklHQVRJT04tU0VDVElPTicpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlTmF2aWdhdGlvblNlY3Rpb24gPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgJ3NiYi1uYXZpZ2F0aW9uLXNlY3Rpb25bZGF0YS1zdGF0ZT1cIm9wZW5pbmdcIl0sIHNiYi1uYXZpZ2F0aW9uLXNlY3Rpb25bZGF0YS1zdGF0ZT1cIm9wZW5lZFwiXScsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWhhcy1uYXZpZ2F0aW9uLXNlY3Rpb24nLCAhIXRoaXMuX2FjdGl2ZU5hdmlnYXRpb25TZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbk5hdmlnYXRpb25SZXNpemUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Jlc2l6ZU9ic2VydmVyVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Jlc2l6ZU9ic2VydmVyVGltZW91dCk7XG4gICAgfVxuXG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtcmVzaXplLWRpc2FibGUtYW5pbWF0aW9uJywgdHJ1ZSk7XG5cbiAgICAvLyBEaXNhYmxlIHRoZSBhbmltYXRpb24gd2hlbiByZXNpemluZyB0aGUgbmF2aWdhdGlvbiB0byBhdm9pZCBzdHJhbmdlIGhlaWdodCB0cmFuc2l0aW9uIGVmZmVjdHMuXG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXJUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICgpID0+IHRoaXMucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXJlc2l6ZS1kaXNhYmxlLWFuaW1hdGlvbicpLFxuICAgICAgREVCT1VOQ0VfVElNRSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5pZCB8fD0gYHNiYi1uYXZpZ2F0aW9uLSR7bmV4dElkKyt9YDtcbiAgICBjb25zdCBzaWduYWwgPSB0aGlzLl9hYm9ydC5zaWduYWw7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB0aGlzLl9oYW5kbGVOYXZpZ2F0aW9uQ2xvc2UoZSksIHsgc2lnbmFsIH0pO1xuICAgIC8vIFZhbGlkYXRlIHRyaWdnZXIgZWxlbWVudCBhbmQgYXR0YWNoIGV2ZW50IGxpc3RlbmVyc1xuICAgIHRoaXMuX2NvbmZpZ3VyZSh0aGlzLnRyaWdnZXIpO1xuICAgIHRoaXMuX25hdmlnYXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMsIG5hdmlnYXRpb25PYnNlcnZlckNvbmZpZyk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCAoZXZlbnQpID0+IHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrKGV2ZW50KSwgeyBzaWduYWwgfSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIChldmVudCkgPT4gdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lcihldmVudCksIHsgc2lnbmFsIH0pO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnKSB7XG4gICAgICBhcHBseUluZXJ0TWVjaGFuaXNtKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fZm9jdXNIYW5kbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX25hdmlnYXRpb25SZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgcmVtb3ZlSW5lcnRNZWNoYW5pc20oKTtcbiAgICB0aGlzLl9zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2xvc2VCdXR0b24gPSBodG1sYFxuICAgICAgPHNiYi10cmFuc3BhcmVudC1idXR0b25cbiAgICAgICAgaWQ9XCJzYmItbmF2aWdhdGlvbi1jbG9zZS1idXR0b25cIlxuICAgICAgICBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uX19jbG9zZVwiXG4gICAgICAgIGFyaWEtbGFiZWw9JHt0aGlzLmFjY2Vzc2liaWxpdHlDbG9zZUxhYmVsIHx8IGkxOG5DbG9zZU5hdmlnYXRpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgIGFyaWEtY29udHJvbHM9XCJzYmItbmF2aWdhdGlvbi1vdmVybGF5XCJcbiAgICAgICAgbmVnYXRpdmVcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgaWNvbi1uYW1lPVwiY3Jvc3Mtc21hbGxcIlxuICAgICAgICBzYmItbmF2aWdhdGlvbi1jbG9zZVxuICAgICAgPjwvc2JiLXRyYW5zcGFyZW50LWJ1dHRvbj5cbiAgICBgO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLW5hdmlnYXRpb25fX2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgaWQ9XCJzYmItbmF2aWdhdGlvbi1vdmVybGF5XCJcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7KGV2ZW50OiBBbmltYXRpb25FdmVudCkgPT4gdGhpcy5fb25BbmltYXRpb25FbmQoZXZlbnQpfVxuICAgICAgICAgIGNsYXNzPVwic2JiLW5hdmlnYXRpb25cIlxuICAgICAgICAgICR7cmVmKChuYXZpZ2F0aW9uUmVmPzogRWxlbWVudCkgPT4gKHRoaXMuX25hdmlnYXRpb24gPSBuYXZpZ2F0aW9uUmVmIGFzIEhUTUxEaXZFbGVtZW50KSl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLW5hdmlnYXRpb25fX2hlYWRlclwiPiR7Y2xvc2VCdXR0b259PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uX193cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLW5hdmlnYXRpb25fX2NvbnRlbnRcIlxuICAgICAgICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fbmF2aWdhdGlvbkNvbnRlbnRFbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c2xvdCBuYW1lPVwibmF2aWdhdGlvbi1zZWN0aW9uXCI+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLW5hdmlnYXRpb24nOiBTYmJOYXZpZ2F0aW9uRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLE1BQU0sMkJBQWlEO0FBQUEsRUFDckQsU0FBUztBQUFBLEVBQ1QsaUJBQWlCLENBQUMsWUFBWTtBQUNoQztBQUVBLElBQUksU0FBUztBQUNiLE1BQU0sZ0JBQWdCO0FBa0JmLElBQU0sdUJBQU4sY0FBbUMsd0JBQXdCLHVCQUF1QixFQUFFO0FBQUEsRUFBcEYsY0FBQTtBQUFBLFVBQUEsR0FBQSxTQUFBO0FBZ0JMLFNBQVEsV0FBd0M7QUFZdkMsU0FBUSwyQkFBK0M7QUFRaEUsU0FBUSxrQkFBc0M7QUFHdEMsU0FBQSxTQUFTLElBQUksNEJBQTRCLElBQUk7QUFDN0MsU0FBQSxZQUFZLElBQUksc0JBQXNCLElBQUk7QUFDMUMsU0FBQSxnQkFBZ0IsSUFBSTtBQUNwQixTQUFBLGlCQUFpQixJQUFJO0FBQzdCLFNBQVEsa0NBQTJDO0FBQ25ELFNBQVEseUJBQStEO0FBQ3ZFLFNBQVEsc0JBQXNCLElBQUk7QUFBQSxNQUF5QixDQUFDLGtCQUMxRCxLQUFL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
603
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL25hdmlnYXRpb24vbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHsgU2JiRm9jdXNIYW5kbGVyLCBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLmpzJztcbmltcG9ydCB7XG4gIFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcixcbiAgU2JiSW5lcnRDb250cm9sbGVyLFxuICBTYmJMYW5ndWFnZUNvbnRyb2xsZXIsXG59IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgZmluZFJlZmVyZW5jZWRFbGVtZW50LCBTYmJTY3JvbGxIYW5kbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgaTE4bkNsb3NlTmF2aWdhdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgeyBTYmJVcGRhdGVTY2hlZHVsZXJNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7IEFnbm9zdGljTXV0YXRpb25PYnNlcnZlciwgQWdub3N0aWNSZXNpemVPYnNlcnZlciB9IGZyb20gJy4uLy4uL2NvcmUvb2JzZXJ2ZXJzLmpzJztcbmltcG9ydCB7XG4gIGlzRXZlbnRPbkVsZW1lbnQsXG4gIHJlbW92ZUFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG4gIHNldEFyaWFPdmVybGF5VHJpZ2dlckF0dHJpYnV0ZXMsXG59IGZyb20gJy4uLy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1idXR0b24uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJOYXZpZ2F0aW9uTGlua0VsZW1lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLWxpbmsuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9uYXZpZ2F0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vYnV0dG9uL3RyYW5zcGFyZW50LWJ1dHRvbi5qcyc7XG5cbi8qKiBDb25maWd1cmF0aW9uIGZvciB0aGUgYXR0cmlidXRlIHRvIGxvb2sgYXQgaWYgYSBuYXZpZ2F0aW9uIHNlY3Rpb24gaXMgZGlzcGxheWVkICovXG5jb25zdCBuYXZpZ2F0aW9uT2JzZXJ2ZXJDb25maWc6IE11dGF0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICBzdWJ0cmVlOiB0cnVlLFxuICBhdHRyaWJ1dGVGaWx0ZXI6IFsnZGF0YS1zdGF0ZSddLFxufTtcblxubGV0IG5leHRJZCA9IDA7XG5jb25zdCBERUJPVU5DRV9USU1FID0gMTUwO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgbmF2aWdhdGlvbiBtZW51LCB3cmFwcGluZyBvbmUgb3IgbW9yZSBgc2JiLW5hdmlnYXRpb24tKmAgY29tcG9uZW50cy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBgc2JiLW5hdmlnYXRpb24tYnV0dG9uYC9gc2JiLW5hdmlnYXRpb24tbGlua2AgZWxlbWVudHMgaW50byB0aGUgc2JiLW5hdmlnYXRpb24gbWVudS5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IHdpbGxPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItbmF2aWdhdGlvbmAgYmVnaW5zIHRoZSBvcGVuaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1uYXZpZ2F0aW9uYCBpcyBvcGVuZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1uYXZpZ2F0aW9uYCBiZWdpbnMgdGhlIGNsb3NpbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGlkQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1uYXZpZ2F0aW9uYCBpcyBjbG9zZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItbmF2aWdhdGlvbi16LWluZGV4PXZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCldIC0gVG8gc3BlY2lmeSBhIGN1c3RvbSBzdGFjayBvcmRlcixcbiAqIHRoZSBgei1pbmRleGAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgdGhpcyBDU1MgdmFyaWFibGUuIFRoZSBkZWZhdWx0IGB6LWluZGV4YCBvZiB0aGVcbiAqIGNvbXBvbmVudCBpcyBzZXQgdG8gYHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleClgIHdpdGggYSB2YWx1ZSBvZiBgMTAwMGAuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItbmF2aWdhdGlvbicpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICByb2xlOiAnbmF2aWdhdGlvbicsXG59KVxuZXhwb3J0IGNsYXNzIFNiYk5hdmlnYXRpb25FbGVtZW50IGV4dGVuZHMgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBuYXZpZ2F0aW9uLlxuICAgKiBBY2NlcHRzIGJvdGggYSBzdHJpbmcgKGlkIG9mIGFuIGVsZW1lbnQpIG9yIGFuIEhUTUwgZWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgdHJpZ2dlcih2YWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLl90cmlnZ2VyO1xuICAgIHRoaXMuX3RyaWdnZXIgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZW1vdmVUcmlnZ2VyQ2xpY2tMaXN0ZW5lcih0aGlzLl90cmlnZ2VyLCBvbGRWYWx1ZSk7XG4gIH1cbiAgcHVibGljIGdldCB0cmlnZ2VyKCk6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXI7XG4gIH1cbiAgcHJpdmF0ZSBfdHJpZ2dlcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBjbG9zZSBidXR0b24gZWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktY2xvc2UtbGFiZWwnIH0pIHB1YmxpYyBhY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbDpcbiAgICB8IHN0cmluZ1xuICAgIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgbmF2aWdhdGlvbiBzZWN0aW9uIGlzIGRpc3BsYXllZC5cbiAgICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgX2FjdGl2ZU5hdmlnYXRpb25TZWN0aW9uOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBnZXQgYWN0aXZlTmF2aWdhdGlvblNlY3Rpb24oKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlTmF2aWdhdGlvblNlY3Rpb247XG4gIH1cblxuICBwcml2YXRlIF9uYXZpZ2F0aW9uITogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgX25hdmlnYXRpb25Db250ZW50RWxlbWVudCE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbmF2aWdhdGlvbkNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2Fib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9pbmVydENvbnRyb2xsZXIgPSBuZXcgU2JiSW5lcnRDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9mb2N1c0hhbmRsZXIgPSBuZXcgU2JiRm9jdXNIYW5kbGVyKCk7XG4gIHByaXZhdGUgX3Njcm9sbEhhbmRsZXIgPSBuZXcgU2JiU2Nyb2xsSGFuZGxlcigpO1xuICBwcml2YXRlIF9pc1BvaW50ZXJEb3duRXZlbnRPbk5hdmlnYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXJUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9uYXZpZ2F0aW9uT2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnNMaXN0OiBNdXRhdGlvblJlY29yZFtdKSA9PlxuICAgIHRoaXMuX29uTmF2aWdhdGlvblNlY3Rpb25DaGFuZ2UobXV0YXRpb25zTGlzdCksXG4gICk7XG4gIHByaXZhdGUgX25hdmlnYXRpb25SZXNpemVPYnNlcnZlciA9IG5ldyBBZ25vc3RpY1Jlc2l6ZU9ic2VydmVyKCgpID0+IHRoaXMuX29uTmF2aWdhdGlvblJlc2l6ZSgpKTtcblxuICAvKipcbiAgICogT3BlbnMgdGhlIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgfHwgIXRoaXMuX25hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5fY2hlY2tBY3RpdmVBY3Rpb25zKCk7XG4gICAgdGhpcy5fY2hlY2tBY3RpdmVTZWN0aW9uKCk7XG4gICAgdGhpcy5zdGFydFVwZGF0ZSgpO1xuXG4gICAgLy8gRGlzYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIG5hdmlnYXRpb25cbiAgICB0aGlzLl9zY3JvbGxIYW5kbGVyLmRpc2FibGVTY3JvbGwoKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrQWN0aXZlU2VjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVBY3Rpb24gPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnc2JiLW5hdmlnYXRpb24tYnV0dG9uLnNiYi1hY3RpdmUnLFxuICAgICkgYXMgU2JiTmF2aWdhdGlvbkJ1dHRvbkVsZW1lbnQ7XG4gICAgYWN0aXZlQWN0aW9uPy5jb25uZWN0ZWRTZWN0aW9uPy5vcGVuKCk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FjdGl2ZUFjdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlQWN0aW9ucyA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJzppcyhzYmItbmF2aWdhdGlvbi1idXR0b24sIHNiYi1uYXZpZ2F0aW9uLWxpbmspLnNiYi1hY3RpdmUnKSxcbiAgICApIGFzIChTYmJOYXZpZ2F0aW9uQnV0dG9uRWxlbWVudCB8IFNiYk5hdmlnYXRpb25MaW5rRWxlbWVudClbXTtcbiAgICBhY3RpdmVBY3Rpb25zPy5mb3JFYWNoKChhY3Rpb24pID0+IGFjdGlvbi5tYXJrZXI/LnNlbGVjdChhY3Rpb24pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLndpbGxDbG9zZS5lbWl0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnN0YXJ0VXBkYXRlKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICB9XG5cbiAgLy8gUmVtb3ZlcyB0cmlnZ2VyIGNsaWNrIGxpc3RlbmVyIG9uIHRyaWdnZXIgY2hhbmdlLlxuICBwcml2YXRlIF9yZW1vdmVUcmlnZ2VyQ2xpY2tMaXN0ZW5lcihcbiAgICBuZXdWYWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsLFxuICAgIG9sZFZhbHVlOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwsXG4gICk6IHZvaWQge1xuICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZSh0aGlzLnRyaWdnZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSB0cmlnZ2VyIGlzIHZhbGlkIGFuZCBhdHRhY2ggY2xpY2sgZXZlbnQgbGlzdGVuZXJzLlxuICBwcml2YXRlIF9jb25maWd1cmUodHJpZ2dlcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG5cbiAgICBpZiAoIXRyaWdnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IGZpbmRSZWZlcmVuY2VkRWxlbWVudCh0cmlnZ2VyKTtcblxuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnbWVudScsIHRoaXMuaWQsIHRoaXMuc3RhdGUpO1xuICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fbmF2aWdhdGlvbkNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJhcEZvY3VzRmlsdGVyID0gKGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBlbC5ub2RlTmFtZSAhPT0gJ1NCQi1OQVZJR0FUSU9OLVNFQ1RJT04nIHx8IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScpID09PSAnb3BlbmVkJztcbiAgfTtcblxuICAvLyBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgICB0aGlzLmRpZE9wZW4uZW1pdCgpO1xuICAgICAgdGhpcy5fbmF2aWdhdGlvblJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcyk7XG4gICAgICB0aGlzLl9pbmVydENvbnRyb2xsZXIuYWN0aXZhdGUoKTtcbiAgICAgIHRoaXMuX2ZvY3VzSGFuZGxlci50cmFwKHRoaXMsIHsgZmlsdGVyOiB0aGlzLl90cmFwRm9jdXNGaWx0ZXIgfSk7XG4gICAgICB0aGlzLl9hdHRhY2hXaW5kb3dFdmVudHMoKTtcbiAgICAgIHRoaXMuX3NldE5hdmlnYXRpb25Gb2N1cygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAnY2xvc2VkJztcbiAgICAgIHRoaXMuX25hdmlnYXRpb25Db250ZW50RWxlbWVudC5zY3JvbGxUbygwLCAwKTtcbiAgICAgIHNldE1vZGFsaXR5T25OZXh0Rm9jdXModGhpcy5fdHJpZ2dlckVsZW1lbnQpO1xuICAgICAgdGhpcy5faW5lcnRDb250cm9sbGVyLmRlYWN0aXZhdGUoKTtcbiAgICAgIC8vIFRvIGVuYWJsZSBmb2N1c2luZyBvdGhlciBlbGVtZW50IHRoYW4gdGhlIHRyaWdnZXIsIHdlIG5lZWQgdG8gY2FsbCBmb2N1cygpIGEgc2Vjb25kIHRpbWUuXG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgIHRoaXMuZGlkQ2xvc2UuZW1pdCgpO1xuICAgICAgdGhpcy5fbmF2aWdhdGlvblJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzKTtcbiAgICAgIHRoaXMuX3Jlc2V0TWFya2VycygpO1xuICAgICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2ZvY3VzSGFuZGxlci5kaXNjb25uZWN0KCk7XG5cbiAgICAgIC8vIEVuYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIG5hdmlnYXRpb25cbiAgICAgIHRoaXMuX3Njcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gICAgfVxuICAgIHRoaXMuY29tcGxldGVVcGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0TWFya2VycygpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVBY3Rpb25zID0gQXJyYXkuZnJvbShcbiAgICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJzppcyhzYmItbmF2aWdhdGlvbi1idXR0b24sIHNiYi1uYXZpZ2F0aW9uLWxpbmspW2RhdGEtYWN0aW9uLWFjdGl2ZV06bm90KC5zYmItYWN0aXZlKScsXG4gICAgICApLFxuICAgICkgYXMgKFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IHwgU2JiTmF2aWdhdGlvbkxpbmtFbGVtZW50KVtdO1xuICAgIGFjdGl2ZUFjdGlvbnM/LmZvckVhY2goKGFjdGlvbikgPT4gYWN0aW9uLm1hcmtlcj8ucmVzZXQoKSk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hXaW5kb3dFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5fb25LZXlkb3duRXZlbnQoZXZlbnQpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlTmF2aWdhdGlvbkNsb3NlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBvc2VkUGF0aEVsZW1lbnRzID0gZXZlbnRcbiAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgLmZpbHRlcigoZWwpID0+IGVsIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50KTtcbiAgICBpZiAoY29tcG9zZWRQYXRoRWxlbWVudHMuc29tZSgoZWwpID0+IHRoaXMuX2lzQ2xvc2VFbGVtZW50KGVsIGFzIEhUTUxFbGVtZW50KSkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0Nsb3NlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBlbGVtZW50Lm5vZGVOYW1lID09PSAnQScgfHxcbiAgICAgIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc2JiLW5hdmlnYXRpb24tY2xvc2UnKSAmJiAhZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpXG4gICAgKTtcbiAgfVxuXG4gIC8vIENsb3NlcyB0aGUgbmF2aWdhdGlvbiBvbiBcIkVzY1wiIGtleSBwcmVzc2VkLlxuICBwcml2YXRlIF9vbktleWRvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnb3BlbmVkJyAmJiBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IGZvY3VzIG9uIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudC5cbiAgcHJpdmF0ZSBfc2V0TmF2aWdhdGlvbkZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKFxuICAgICAgJyNzYmItbmF2aWdhdGlvbi1jbG9zZS1idXR0b24nLFxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyhjbG9zZUJ1dHRvbik7XG4gICAgY2xvc2VCdXR0b24uZm9jdXMoKTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBwb2ludGVyZG93biBldmVudCB0YXJnZXQgaXMgdHJpZ2dlcmVkIG9uIHRoZSBuYXZpZ2F0aW9uLlxuICBwcml2YXRlIF9wb2ludGVyRG93bkxpc3RlbmVyID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk5hdmlnYXRpb24gPVxuICAgICAgaXNFdmVudE9uRWxlbWVudCh0aGlzLl9uYXZpZ2F0aW9uLCBldmVudCkgfHxcbiAgICAgIGlzRXZlbnRPbkVsZW1lbnQoXG4gICAgICAgIHRoaXMucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAnc2JiLW5hdmlnYXRpb24tc2VjdGlvbltkYXRhLXN0YXRlPVwib3BlbmVkXCJdJyxcbiAgICAgICAgKT8uc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcignbmF2LnNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24nKSBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgZXZlbnQsXG4gICAgICApO1xuICB9O1xuXG4gIC8vIENsb3NlIG5hdmlnYXRpb24gb24gYmFja2Ryb3AgY2xpY2suXG4gIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTmF2aWdhdGlvbiAmJiAhaXNFdmVudE9uRWxlbWVudCh0aGlzLl9uYXZpZ2F0aW9uLCBldmVudCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gT2JzZXJ2ZSBjaGFuZ2VzIG9uIG5hdmlnYXRpb24gc2VjdGlvbiBkYXRhLXN0YXRlLlxuICBwcml2YXRlIF9vbk5hdmlnYXRpb25TZWN0aW9uQ2hhbmdlKG11dGF0aW9uc0xpc3Q6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHtcbiAgICAgIGlmICgobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5ub2RlTmFtZSA9PT0gJ1NCQi1OQVZJR0FUSU9OLVNFQ1RJT04nKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZU5hdmlnYXRpb25TZWN0aW9uID0gdGhpcy5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICdzYmItbmF2aWdhdGlvbi1zZWN0aW9uW2RhdGEtc3RhdGU9XCJvcGVuaW5nXCJdLCBzYmItbmF2aWdhdGlvbi1zZWN0aW9uW2RhdGEtc3RhdGU9XCJvcGVuZWRcIl0nLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1oYXMtbmF2aWdhdGlvbi1zZWN0aW9uJywgISF0aGlzLl9hY3RpdmVOYXZpZ2F0aW9uU2VjdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25OYXZpZ2F0aW9uUmVzaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQpO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLXJlc2l6ZS1kaXNhYmxlLWFuaW1hdGlvbicsIHRydWUpO1xuXG4gICAgLy8gRGlzYWJsZSB0aGUgYW5pbWF0aW9uIHdoZW4gcmVzaXppbmcgdGhlIG5hdmlnYXRpb24gdG8gYXZvaWQgc3RyYW5nZSBoZWlnaHQgdHJhbnNpdGlvbiBlZmZlY3RzLlxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAoKSA9PiB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1yZXNpemUtZGlzYWJsZS1hbmltYXRpb24nKSxcbiAgICAgIERFQk9VTkNFX1RJTUUsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuaWQgfHw9IGBzYmItbmF2aWdhdGlvbi0ke25leHRJZCsrfWA7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gdGhpcy5faGFuZGxlTmF2aWdhdGlvbkNsb3NlKGUpLCB7IHNpZ25hbCB9KTtcbiAgICAvLyBWYWxpZGF0ZSB0cmlnZ2VyIGVsZW1lbnQgYW5kIGF0dGFjaCBldmVudCBsaXN0ZW5lcnNcbiAgICB0aGlzLl9jb25maWd1cmUodGhpcy50cmlnZ2VyKTtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLCBuYXZpZ2F0aW9uT2JzZXJ2ZXJDb25maWcpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgKGV2ZW50KSA9PiB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljayhldmVudCksIHsgc2lnbmFsIH0pO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoZXZlbnQpID0+IHRoaXMuX3BvaW50ZXJEb3duTGlzdGVuZXIoZXZlbnQpLCB7IHNpZ25hbCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX25hdmlnYXRpb25Db250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fZm9jdXNIYW5kbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX25hdmlnYXRpb25SZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gaHRtbGBcbiAgICAgIDxzYmItdHJhbnNwYXJlbnQtYnV0dG9uXG4gICAgICAgIGlkPVwic2JiLW5hdmlnYXRpb24tY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzYmItbmF2aWdhdGlvbl9fY2xvc2VcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbCB8fCBpMThuQ2xvc2VOYXZpZ2F0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICBhcmlhLWNvbnRyb2xzPVwic2JiLW5hdmlnYXRpb24tb3ZlcmxheVwiXG4gICAgICAgIG5lZ2F0aXZlXG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgc2JiLW5hdmlnYXRpb24tY2xvc2VcbiAgICAgID48L3NiYi10cmFuc3BhcmVudC1idXR0b24+XG4gICAgYDtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGlkPVwic2JiLW5hdmlnYXRpb24tb3ZlcmxheVwiXG4gICAgICAgICAgQGFuaW1hdGlvbmVuZD0keyhldmVudDogQW5pbWF0aW9uRXZlbnQpID0+IHRoaXMuX29uQW5pbWF0aW9uRW5kKGV2ZW50KX1cbiAgICAgICAgICBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uXCJcbiAgICAgICAgICAke3JlZigobmF2aWdhdGlvblJlZj86IEVsZW1lbnQpID0+ICh0aGlzLl9uYXZpZ2F0aW9uID0gbmF2aWdhdGlvblJlZiBhcyBIVE1MRGl2RWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uX19oZWFkZXJcIj4ke2Nsb3NlQnV0dG9ufTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbmF2aWdhdGlvbl9fd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uX19jb250ZW50XCJcbiAgICAgICAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX25hdmlnYXRpb25Db250ZW50RWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNsb3QgbmFtZT1cIm5hdmlnYXRpb24tc2VjdGlvblwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1uYXZpZ2F0aW9uJzogU2JiTmF2aWdhdGlvbkVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOEJBLE1BQU0sMkJBQWlEO0FBQUEsRUFDckQsU0FBUztBQUFBLEVBQ1QsaUJBQWlCLENBQUMsWUFBWTtBQUNoQztBQUVBLElBQUksU0FBUztBQUNiLE1BQU0sZ0JBQWdCO0FBa0JmLElBQU0sdUJBQU4sY0FBbUMsd0JBQXdCLHVCQUF1QixFQUFFO0FBQUEsRUFBcEYsY0FBQTtBQUFBLFVBQUEsR0FBQSxTQUFBO0FBZ0JMLFNBQVEsV0FBd0M7QUFZdkMsU0FBUSwyQkFBK0M7QUFRaEUsU0FBUSxrQkFBc0M7QUFHdEMsU0FBQSxTQUFTLElBQUksNEJBQTRCLElBQUk7QUFDN0MsU0FBQSxZQUFZLElBQUksc0JBQXNCLElBQUk7QUFDMUMsU0FBQSxtQkFBbUIsSUFBSSxtQkFBbUIsSUFBSTtBQUM5QyxTQUFBLGdCQUFnQixJQUFJO0FBQ3BCLFNBQUEsaUJBQWlCLElBQUk7QUFDN0IsU0FBUSxrQ0FBMkM7QUFDbkQsU0FBUSx5QkFBK0Q7QUFDdkUsU0FBUSxzQkFBc0IsSUFBSTtBQUFBLE1BQXlCLENBQUMsa0JBQzFELEtBQUssMkJBQTJCLGFB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
@@ -1,6 +1,5 @@
1
1
  import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit';
2
2
  import { SbbTitleLevel } from '../title.js';
3
-
4
3
  /**
5
4
  * It displays messages which require a user's attention without interrupting its tasks.
6
5
  *
@@ -1,7 +1,6 @@
1
1
  import { CSSResultGroup, LitElement, PropertyValues, TemplateResult } from 'lit';
2
2
  import { SbbAutocompleteBaseElement } from '../../autocomplete.js';
3
3
  import { SbbOptionBaseElement } from '../option.js';
4
-
5
4
  declare const SbbOptgroupBaseElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbDisabledMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbHydrationMixinType> & typeof LitElement;
6
5
  export declare abstract class SbbOptgroupBaseElement extends SbbOptgroupBaseElement_base {
7
6
  static styles: CSSResultGroup;
@@ -1,7 +1,6 @@
1
1
  import { SbbAutocompleteElement } from '../../autocomplete.js';
2
2
  import { SbbOptionElement } from '../option.js';
3
3
  import { SbbOptgroupBaseElement } from './optgroup-base-element.js';
4
-
5
4
  /**
6
5
  * It can be used as a container for one or more `sbb-option`.
7
6
  *
@@ -1,6 +1,5 @@
1
1
  import { LitElement, nothing, PropertyValues, TemplateResult } from 'lit';
2
2
  import { EventEmitter } from '../../core/eventing.js';
3
-
4
3
  declare const SbbOptionBaseElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbDisabledMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../icon.js').SbbIconNameMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbHydrationMixinType> & typeof LitElement;
5
4
  export declare abstract class SbbOptionBaseElement extends SbbOptionBaseElement_base {
6
5
  protected abstract optionId: string;
@@ -1,7 +1,6 @@
1
1
  import { CSSResultGroup, TemplateResult, nothing } from 'lit';
2
2
  import { EventEmitter } from '../../core/eventing.js';
3
3
  import { SbbOptionBaseElement } from './option-base-element.js';
4
-
5
4
  export type SbbOptionVariant = 'autocomplete' | 'select' | null;
6
5
  /**
7
6
  * It displays on option item which can be used in `sbb-select` or `sbb-autocomplete`.
@@ -1,12 +1,11 @@
1
1
  import { PropertyValues } from 'lit';
2
2
  import { SbbFocusHandler } from '../core/a11y.js';
3
3
  import { SbbOpenCloseBaseElement } from '../core/base-elements.js';
4
- import { SbbLanguageController } from '../core/controllers.js';
4
+ import { SbbInertController, SbbLanguageController } from '../core/controllers.js';
5
5
  import { SbbScrollHandler } from '../core/dom.js';
6
6
  import { EventEmitter } from '../core/eventing.js';
7
7
  import { SbbOverlayCloseEventDetails } from '../core/interfaces.js';
8
8
  import { SbbScreenReaderOnlyElement } from '../screen-reader-only.js';
9
-
10
9
  export declare const overlayRefs: SbbOverlayBaseElement[];
11
10
  declare const SbbOverlayBaseElement_base: import('../core/mixins.js').AbstractConstructor<import('../core/mixins.js').SbbNegativeMixinType> & typeof SbbOpenCloseBaseElement;
12
11
  export declare abstract class SbbOverlayBaseElement extends SbbOverlayBaseElement_base {
@@ -24,6 +23,7 @@ export declare abstract class SbbOverlayBaseElement extends SbbOverlayBaseElemen
24
23
  protected ariaLiveRefToggle: boolean;
25
24
  protected ariaLiveRef: SbbScreenReaderOnlyElement;
26
25
  protected language: SbbLanguageController;
26
+ protected inertController: SbbInertController;
27
27
  protected abstract onOverlayAnimationEnd(event: AnimationEvent): void;
28
28
  protected abstract setOverlayFocus(): void;
29
29
  protected abstract closeAttribute: string;
@@ -1 +1 @@
1
- {"version":3,"file":"overlay-base-element.d.ts","sourceRoot":"","sources":["../../../../src/elements/overlay/overlay-base-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAe,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAG3E,eAAO,MAAM,WAAW,EAAE,qBAAqB,EAAO,CAAC;;AAEvD,8BAAsB,qBAAsB,SAAQ,0BAAyC;IAC3F,kHAAkH;IAC3D,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9F,8CAA8C;IAC9C,UAAmB,QAAQ,EAAE,YAAY,CAAC,2BAA2B,CAAC,CAGpE;IAGF,SAAS,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC;IAC3C,SAAS,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC;IAC5C,SAAS,CAAC,iBAAiB,EAAG,eAAe,CAAC;IAC9C,SAAS,CAAC,qBAAqB,EAAG,eAAe,CAAC;IAClD,SAAS,CAAC,YAAY,kBAAyB;IAC/C,SAAS,CAAC,aAAa,mBAA0B;IACjD,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC;IAC3B,SAAS,CAAC,iBAAiB,UAAS;IACpC,SAAS,CAAC,WAAW,EAAG,0BAA0B,CAAC;IACnD,SAAS,CAAC,QAAQ,wBAAmC;IAErD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IACrE,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI;IAC1C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAE1C,4BAA4B;IACrB,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,GAAG;IAmBrC,iBAAiB,IAAI,IAAI;cAUtB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAO9D,oBAAoB,IAAI,IAAI;IAU5C,SAAS,CAAC,uBAAuB,IAAI,IAAI;IAkBzC,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAWpD,SAAS,CAAC,kCAAkC,IAAI,IAAI;IAKpD,SAAS,CAAC,2BAA2B,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAoBzD,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAI1C,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;CAStD"}
1
+ {"version":3,"file":"overlay-base-element.d.ts","sourceRoot":"","sources":["../../../../src/elements/overlay/overlay-base-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAe,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAG3E,eAAO,MAAM,WAAW,EAAE,qBAAqB,EAAO,CAAC;;AAEvD,8BAAsB,qBAAsB,SAAQ,0BAAyC;IAC3F,kHAAkH;IAC3D,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9F,8CAA8C;IAC9C,UAAmB,QAAQ,EAAE,YAAY,CAAC,2BAA2B,CAAC,CAGpE;IAGF,SAAS,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC;IAC3C,SAAS,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC;IAC5C,SAAS,CAAC,iBAAiB,EAAG,eAAe,CAAC;IAC9C,SAAS,CAAC,qBAAqB,EAAG,eAAe,CAAC;IAClD,SAAS,CAAC,YAAY,kBAAyB;IAC/C,SAAS,CAAC,aAAa,mBAA0B;IACjD,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC;IAC3B,SAAS,CAAC,iBAAiB,UAAS;IACpC,SAAS,CAAC,WAAW,EAAG,0BAA0B,CAAC;IACnD,SAAS,CAAC,QAAQ,wBAAmC;IACrD,SAAS,CAAC,eAAe,qBAAgC;IAEzD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IACrE,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI;IAC1C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAE1C,4BAA4B;IACrB,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,GAAG;IAmBrC,iBAAiB,IAAI,IAAI;cAMtB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAO9D,oBAAoB,IAAI,IAAI;IAS5C,SAAS,CAAC,uBAAuB,IAAI,IAAI;IAkBzC,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAWpD,SAAS,CAAC,kCAAkC,IAAI,IAAI;IAKpD,SAAS,CAAC,2BAA2B,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAoBzD,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAI1C,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;CAStD"}
@@ -1,6 +1,5 @@
1
1
  import { CSSResultGroup, TemplateResult } from 'lit';
2
2
  import { SbbOverlayBaseElement } from './overlay-base-element.js';
3
-
4
3
  /**
5
4
  * It displays an interactive overlay element.
6
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../../src/elements/overlay/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAU1D,OAAO,EAAe,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,+BAA+B,CAAC;AACvC,OAAO,iCAAiC,CAAC;AACzC,OAAO,iBAAiB,CAAC;AACzB,OAAO,0BAA0B,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,qBACa,iBAAkB,SAAQ,qBAAqB;IAC1D,OAAuB,MAAM,EAAE,cAAc,CAAS;IAGtD,gBAAgC,MAAM;;;;;;MAM3B;IAEX;;;OAGG;IACgD,QAAQ,UAAS;IAEpE,4DAA4D;IACE,UAAU,UAAS;IAEjF,wEAAwE;IACX,uBAAuB,EAChF,MAAM,GACN,SAAS,CAAC;IAEd,uEAAuE;IACX,sBAAsB,EAC9E,MAAM,GACN,SAAS,CAAC;IAEd,SAAS,CAAC,cAAc,EAAE,MAAM,CAAuB;IAEvD,iDAAiD;IACjD,OAAO,CAAC,UAAU,CAGhB;IACF,OAAO,CAAC,sBAAsB,CAA4B;IAE1D,2BAA2B;IACpB,IAAI,IAAI,IAAI;IAyBnB,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IA8B5D,SAAS,CAAC,eAAe,IAAI,IAAI;cAUd,MAAM,IAAI,cAAc;CAyD5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../../src/elements/overlay/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAS1D,OAAO,EAAe,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,+BAA+B,CAAC;AACvC,OAAO,iCAAiC,CAAC;AACzC,OAAO,iBAAiB,CAAC;AACzB,OAAO,0BAA0B,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,qBACa,iBAAkB,SAAQ,qBAAqB;IAC1D,OAAuB,MAAM,EAAE,cAAc,CAAS;IAGtD,gBAAgC,MAAM;;;;;;MAM3B;IAEX;;;OAGG;IACgD,QAAQ,UAAS;IAEpE,4DAA4D;IACE,UAAU,UAAS;IAEjF,wEAAwE;IACX,uBAAuB,EAChF,MAAM,GACN,SAAS,CAAC;IAEd,uEAAuE;IACX,sBAAsB,EAC9E,MAAM,GACN,SAAS,CAAC;IAEd,SAAS,CAAC,cAAc,EAAE,MAAM,CAAuB;IAEvD,iDAAiD;IACjD,OAAO,CAAC,UAAU,CAGhB;IACF,OAAO,CAAC,sBAAsB,CAA4B;IAE1D,2BAA2B;IACpB,IAAI,IAAI,IAAI;IAyBnB,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAgC5D,SAAS,CAAC,eAAe,IAAI,IAAI;cAUd,MAAM,IAAI,cAAc;CAyD5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
@@ -4,9 +4,8 @@ import { html, unsafeStatic } from "lit/static-html.js";
4
4
  import { SbbFocusHandler, setModalityOnNextFocus, getFirstFocusableElement } from "./core/a11y.js";
5
5
  import { EventEmitter } from "./core/eventing.js";
6
6
  import { i18nDialog, i18nCloseDialog, i18nGoBack } from "./core/i18n.js";
7
- import { applyInertMechanism, removeInertMechanism } from "./core/overlay.js";
8
7
  import { SbbOpenCloseBaseElement } from "./core/base-elements.js";
9
- import { SbbLanguageController } from "./core/controllers.js";
8
+ import { SbbLanguageController, SbbInertController } from "./core/controllers.js";
10
9
  import { SbbScrollHandler, hostContext } from "./core/dom.js";
11
10
  import { SbbNegativeMixin } from "./core/mixins.js";
12
11
  import "./button/secondary-button.js";
@@ -34,6 +33,7 @@ const _SbbOverlayBaseElement = class _SbbOverlayBaseElement2 extends SbbNegative
34
33
  this.scrollHandler = new SbbScrollHandler();
35
34
  this.ariaLiveRefToggle = false;
36
35
  this.language = new SbbLanguageController(this);
36
+ this.inertController = new SbbInertController(this);
37
37
  }
38
38
  /** Closes the component. */
39
39
  close(result, target) {
@@ -57,9 +57,6 @@ const _SbbOverlayBaseElement = class _SbbOverlayBaseElement2 extends SbbNegative
57
57
  super.connectedCallback();
58
58
  (_a = this.overlayController) == null ? void 0 : _a.abort();
59
59
  this.overlayController = new AbortController();
60
- if (this.state === "opened") {
61
- applyInertMechanism(this);
62
- }
63
60
  }
64
61
  firstUpdated(changedProperties) {
65
62
  this.ariaLiveRef = this.shadowRoot.querySelector("sbb-screen-reader-only");
@@ -72,7 +69,6 @@ const _SbbOverlayBaseElement = class _SbbOverlayBaseElement2 extends SbbNegative
72
69
  (_b = this.openOverlayController) == null ? void 0 : _b.abort();
73
70
  this.focusHandler.disconnect();
74
71
  this.removeInstanceFromGlobalCollection();
75
- removeInertMechanism();
76
72
  this.scrollHandler.enableScroll();
77
73
  }
78
74
  attachOpenOverlayEvents() {
@@ -276,9 +272,6 @@ const style = css`/**
276
272
  --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);
277
273
  /* Scrollbar itself */
278
274
  /* Hide button (top and bottom of the scrollbar) */
279
- height: 100vh;
280
- overflow: auto;
281
- -webkit-overflow-scrolling: touch;
282
275
  }
283
276
  .sbb-overlay__content::-webkit-scrollbar {
284
277
  width: var(--sbb-scrollbar-width);
@@ -307,6 +300,11 @@ const style = css`/**
307
300
  scrollbar-color: var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent);
308
301
  }
309
302
  }
303
+ .sbb-overlay__content {
304
+ height: 100vh;
305
+ overflow: auto;
306
+ -webkit-overflow-scrolling: touch;
307
+ }
310
308
 
311
309
  .sbb-overlay__content-container {
312
310
  padding-block: var(--sbb-overlay-padding-block);
@@ -391,7 +389,7 @@ let SbbOverlayElement = class extends SbbOverlayBaseElement {
391
389
  if (event.animationName === "open" && this.state === "opening") {
392
390
  this.state = "opened";
393
391
  this.didOpen.emit();
394
- applyInertMechanism(this);
392
+ this.inertController.activate();
395
393
  this.attachOpenOverlayEvents();
396
394
  this.setOverlayFocus();
397
395
  setTimeout(() => this.setAriaLiveRefContent(this.accessibilityLabel));
@@ -399,13 +397,15 @@ let SbbOverlayElement = class extends SbbOverlayBaseElement {
399
397
  } else if (event.animationName === "close" && this.state === "closing") {
400
398
  (_a = this._overlayContentElement) == null ? void 0 : _a.scrollTo(0, 0);
401
399
  this.state = "closed";
402
- removeInertMechanism();
400
+ this.inertController.deactivate();
403
401
  setModalityOnNextFocus(this.lastFocusedElement);
404
402
  (_b = this.lastFocusedElement) == null ? void 0 : _b.focus();
405
403
  (_c = this.openOverlayController) == null ? void 0 : _c.abort();
406
404
  this.focusHandler.disconnect();
407
405
  this.removeInstanceFromGlobalCollection();
408
- !overlayRefs.length && this.scrollHandler.enableScroll();
406
+ if (!overlayRefs.length) {
407
+ this.scrollHandler.enableScroll();
408
+ }
409
409
  this.didClose.emit({
410
410
  returnValue: this.returnValue,
411
411
  closeTarget: this.overlayCloseElement
@@ -503,4 +503,4 @@ export {
503
503
  SbbOverlayElement,
504
504
  overlayRefs
505
505
  };
506
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL292ZXJsYXkvb3ZlcmxheS1iYXNlLWVsZW1lbnQudHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvb3ZlcmxheS9vdmVybGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkZvY3VzSGFuZGxlciB9IGZyb20gJy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCB9IGZyb20gJy4uL2NvcmUvYmFzZS1lbGVtZW50cy5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGhvc3RDb250ZXh0LCBTYmJTY3JvbGxIYW5kbGVyIH0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGlhbG9nIH0gZnJvbSAnLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzIH0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyBhcHBseUluZXJ0TWVjaGFuaXNtLCByZW1vdmVJbmVydE1lY2hhbmlzbSB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50IH0gZnJvbSAnLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuLy8gQSBnbG9iYWwgY29sbGVjdGlvbiBvZiBleGlzdGluZyBvdmVybGF5cy5cbmV4cG9ydCBjb25zdCBvdmVybGF5UmVmczogU2JiT3ZlcmxheUJhc2VFbGVtZW50W10gPSBbXTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgcmVsZXZhbnQgbmVzdGVkIGVsZW1lbnQgdG8gZGVzY3JpYmUgdGhlIHB1cnBvc2Ugb2YgdGhlIG92ZXJsYXkuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktbGFiZWwnIH0pIHB1YmxpYyBhY2Nlc3NpYmlsaXR5TGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBpcyBjbG9zZWQuICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBkaWRDbG9zZTogRXZlbnRFbWl0dGVyPFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiT3ZlcmxheUJhc2VFbGVtZW50LmV2ZW50cy5kaWRDbG9zZSxcbiAgKTtcblxuICAvLyBUaGUgbGFzdCBlbGVtZW50IHdoaWNoIGhhZCBmb2N1cyBiZWZvcmUgdGhlIGNvbXBvbmVudCB3YXMgb3BlbmVkLlxuICBwcm90ZWN0ZWQgbGFzdEZvY3VzZWRFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByb3RlY3RlZCBvdmVybGF5Q2xvc2VFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByb3RlY3RlZCBvdmVybGF5Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJvdGVjdGVkIG9wZW5PdmVybGF5Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJvdGVjdGVkIGZvY3VzSGFuZGxlciA9IG5ldyBTYmJGb2N1c0hhbmRsZXIoKTtcbiAgcHJvdGVjdGVkIHNjcm9sbEhhbmRsZXIgPSBuZXcgU2JiU2Nyb2xsSGFuZGxlcigpO1xuICBwcm90ZWN0ZWQgcmV0dXJuVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIGFyaWFMaXZlUmVmVG9nZ2xlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBhcmlhTGl2ZVJlZiE6IFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50O1xuICBwcm90ZWN0ZWQgbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldE92ZXJsYXlGb2N1cygpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2xvc2VBdHRyaWJ1dGU6IHN0cmluZztcblxuICAvKiogQ2xvc2VzIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBhbnksIHRhcmdldD86IEhUTUxFbGVtZW50KTogYW55IHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJldHVyblZhbHVlID0gcmVzdWx0O1xuICAgIHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCA9IHRhcmdldDtcbiAgICBjb25zdCBldmVudERhdGE6IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyA9IHtcbiAgICAgIHJldHVyblZhbHVlOiB0aGlzLnJldHVyblZhbHVlLFxuICAgICAgY2xvc2VUYXJnZXQ6IHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLndpbGxDbG9zZS5lbWl0KGV2ZW50RGF0YSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5vdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLm92ZXJsYXlDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnKSB7XG4gICAgICBhcHBseUluZXJ0TWVjaGFuaXNtKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgdGhpcy5hcmlhTGl2ZVJlZiA9XG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3I8U2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnQ+KCdzYmItc2NyZWVuLXJlYWRlci1vbmx5JykhO1xuXG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMub3ZlcmxheUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMucmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpO1xuICAgIHJlbW92ZUluZXJ0TWVjaGFuaXNtKCk7XG4gICAgdGhpcy5zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGF0dGFjaE9wZW5PdmVybGF5RXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIC8vIFJlbW92ZSBvdmVybGF5IGxhYmVsIGFzIHNvb24gYXMgaXQgaXMgbm90IG5lZWRlZCBhbnkgbW9yZSB0byBwcmV2ZW50IGFjY2Vzc2luZyBpdCB3aXRoIGJyb3dzZSBtb2RlLlxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCk7XG4gICAgICAgIHRoaXMub25LZXlkb3duRXZlbnQoZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5yZW1vdmVBcmlhTGl2ZVJlZkNvbnRlbnQoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25LZXlkb3duRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgb3ZlcmxheVJlZnNbb3ZlcmxheVJlZnMubGVuZ3RoIC0gMV0uY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBvdmVybGF5UmVmcy5zcGxpY2Uob3ZlcmxheVJlZnMuaW5kZXhPZih0aGlzIGFzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCksIDEpO1xuICB9XG5cbiAgLy8gQ2xvc2UgdGhlIGNvbXBvbmVudCBvbiBjbGljayBvZiBhbnkgZWxlbWVudCB0aGF0IGhhcyB0aGUgYGNsb3NlQXR0cmlidXRlYCBhdHRyaWJ1dGUuXG4gIHByb3RlY3RlZCBjbG9zZU9uU2JiT3ZlcmxheUNsb3NlQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgb3ZlcmxheUNsb3NlRWxlbWVudCA9IGV2ZW50XG4gICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgIC5maWx0ZXIoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IGUgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpXG4gICAgICAuZmluZChcbiAgICAgICAgKHRhcmdldCkgPT4gdGFyZ2V0Lmhhc0F0dHJpYnV0ZSh0aGlzLmNsb3NlQXR0cmlidXRlKSAmJiAhdGFyZ2V0Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSxcbiAgICAgICk7XG5cbiAgICBpZiAoIW92ZXJsYXlDbG9zZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgdGFyZ2V0IGlzIGEgc3VibWlzc2lvbiBlbGVtZW50IHdpdGhpbiBhIGZvcm0gYW5kIHJldHVybiB0aGUgZm9ybSwgaWYgcHJlc2VudFxuICAgIGNvbnN0IGNsb3Nlc3RGb3JtID1cbiAgICAgIG92ZXJsYXlDbG9zZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdzdWJtaXQnXG4gICAgICAgID8gKGhvc3RDb250ZXh0KCdmb3JtJywgb3ZlcmxheUNsb3NlRWxlbWVudCkgYXMgSFRNTEZvcm1FbGVtZW50KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBvdmVybGF5UmVmc1tvdmVybGF5UmVmcy5sZW5ndGggLSAxXS5jbG9zZShjbG9zZXN0Rm9ybSwgb3ZlcmxheUNsb3NlRWxlbWVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuYXJpYUxpdmVSZWYudGV4dENvbnRlbnQgPSAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRBcmlhTGl2ZVJlZkNvbnRlbnQobGFiZWw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFyaWFMaXZlUmVmVG9nZ2xlID0gIXRoaXMuYXJpYUxpdmVSZWZUb2dnbGU7XG5cbiAgICAvLyBJZiB0aGUgdGV4dCBjb250ZW50IHJlbWFpbnMgdGhlIHNhbWUsIG9uIFZvaWNlT3ZlciB0aGUgYXJpYS1saXZlIHJlZ2lvbiBpcyBub3QgYW5ub3VuY2VkIGEgc2Vjb25kIHRpbWUuXG4gICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCByZWFkaW5nIG9uIGV2ZXJ5IG9wZW5pbmcsIHdlIHRvZ2dsZSBhbiBpbnZpc2libGUgc3BhY2UuXG4gICAgdGhpcy5hcmlhTGl2ZVJlZi50ZXh0Q29udGVudCA9IGAke2kxOG5EaWFsb2dbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX0ke1xuICAgICAgbGFiZWwgPyBgLCAke2xhYmVsfWAgOiAnJ1xuICAgIH0ke3RoaXMuYXJpYUxpdmVSZWZUb2dnbGUgPyAnwqAnIDogJyd9YDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIHVuc2FmZVN0YXRpYyB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB7IGdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudCwgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyB9IGZyb20gJy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IGkxOG5DbG9zZURpYWxvZywgaTE4bkdvQmFjayB9IGZyb20gJy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgeyBhcHBseUluZXJ0TWVjaGFuaXNtLCByZW1vdmVJbmVydE1lY2hhbmlzbSB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5cbmltcG9ydCB7IG92ZXJsYXlSZWZzLCBTYmJPdmVybGF5QmFzZUVsZW1lbnQgfSBmcm9tICcuL292ZXJsYXktYmFzZS1lbGVtZW50LmpzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL292ZXJsYXkuc2Nzcz9saXQmaW5saW5lJztcbmltcG9ydCAnLi4vYnV0dG9uL3NlY29uZGFyeS1idXR0b24uanMnO1xuaW1wb3J0ICcuLi9idXR0b24vdHJhbnNwYXJlbnQtYnV0dG9uLmpzJztcbmltcG9ydCAnLi4vY29udGFpbmVyLmpzJztcbmltcG9ydCAnLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpbnRlcmFjdGl2ZSBvdmVybGF5IGVsZW1lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBwcm92aWRlIGEgY29udGVudCBmb3IgdGhlIG92ZXJsYXkuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLW92ZXJsYXlgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkaWRPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItb3ZlcmxheWAgaXMgb3BlbmVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gd2lsbENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItb3ZlcmxheWAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzPn0gZGlkQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1vdmVybGF5YCBpcyBjbG9zZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSByZXF1ZXN0QmFja0FjdGlvbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkLlxuICogQGNzc3Byb3AgWy0tc2JiLW92ZXJsYXktei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLW92ZXJsYXknKVxuZXhwb3J0IGNsYXNzIFNiYk92ZXJsYXlFbGVtZW50IGV4dGVuZHMgU2JiT3ZlcmxheUJhc2VFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLy8gRklYTUUgdXNpbmcgLi4uc3VwZXIuZXZlbnRzIHJlcXVpcmVzOiBodHRwczovL2dpdGh1Yi5jb20vc2JiLWRlc2lnbi1zeXN0ZW1zL2x5bmUtY29tcG9uZW50cy9pc3N1ZXMvMjYwMFxuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICB3aWxsT3BlbjogJ3dpbGxPcGVuJyxcbiAgICBkaWRPcGVuOiAnZGlkT3BlbicsXG4gICAgd2lsbENsb3NlOiAnd2lsbENsb3NlJyxcbiAgICBkaWRDbG9zZTogJ2RpZENsb3NlJyxcbiAgICBiYWNrQ2xpY2s6ICdyZXF1ZXN0QmFja0FjdGlvbicsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgdGhlIG92ZXJsYXkgY29udGVudCB0byBzdHJldGNoIHRvIGZ1bGwgd2lkdGguXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb250ZW50IGhhcyB0aGUgYXBwcm9wcmlhdGUgcGFnZSBzaXplLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgZXhwYW5kZWQgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciBhIGJhY2sgYnV0dG9uIGlzIGRpc3BsYXllZCBuZXh0IHRvIHRoZSB0aXRsZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYmFjay1idXR0b24nLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBiYWNrQnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgY2xvc2UgYnV0dG9uIGVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktY2xvc2UtbGFiZWwnIH0pIHB1YmxpYyBhY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbDpcbiAgICB8IHN0cmluZ1xuICAgIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIGFzIGFyaWEtbGFiZWwgdG8gdGhlIGJhY2sgYnV0dG9uIGVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktYmFjay1sYWJlbCcgfSkgcHVibGljIGFjY2Vzc2liaWxpdHlCYWNrTGFiZWw6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgY2xvc2VBdHRyaWJ1dGU6IHN0cmluZyA9ICdzYmItb3ZlcmxheS1jbG9zZSc7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICBwcml2YXRlIF9iYWNrQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYk92ZXJsYXlFbGVtZW50LmV2ZW50cy5iYWNrQ2xpY2ssXG4gICk7XG4gIHByaXZhdGUgX292ZXJsYXlDb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogT3BlbnMgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGFzdEZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgIHRoaXMuX292ZXJsYXlDb250ZW50RWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihcbiAgICAgICcuc2JiLW92ZXJsYXlfX2NvbnRlbnQnLFxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG5cbiAgICAvLyBBZGQgdGhpcyBvdmVybGF5IHRvIHRoZSBnbG9iYWwgY29sbGVjdGlvblxuICAgIG92ZXJsYXlSZWZzLnB1c2godGhpcyBhcyBTYmJPdmVybGF5RWxlbWVudCk7XG5cbiAgICAvLyBEaXNhYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgb3ZlcmxheVxuICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kaXNhYmxlU2Nyb2xsKCk7XG4gIH1cblxuICAvLyBXYWl0IGZvciBvdmVybGF5IHRyYW5zaXRpb24gdG8gY29tcGxldGUuXG4gIC8vIEluIHJhcmUgY2FzZXMsIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByb3RlY3RlZCBvbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICAgIHRoaXMuZGlkT3Blbi5lbWl0KCk7XG4gICAgICBhcHBseUluZXJ0TWVjaGFuaXNtKHRoaXMpO1xuICAgICAgdGhpcy5hdHRhY2hPcGVuT3ZlcmxheUV2ZW50cygpO1xuICAgICAgdGhpcy5zZXRPdmVybGF5Rm9jdXMoKTtcbiAgICAgIC8vIFVzZSB0aW1lb3V0IHRvIHJlYWQgbGFiZWwgYWZ0ZXIgZm9jdXNlZCBlbGVtZW50XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0QXJpYUxpdmVSZWZDb250ZW50KHRoaXMuYWNjZXNzaWJpbGl0eUxhYmVsKSk7XG4gICAgICB0aGlzLmZvY3VzSGFuZGxlci50cmFwKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlDb250ZW50RWxlbWVudD8uc2Nyb2xsVG8oMCwgMCk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgICByZW1vdmVJbmVydE1lY2hhbmlzbSgpO1xuICAgICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyh0aGlzLmxhc3RGb2N1c2VkRWxlbWVudCk7XG4gICAgICAvLyBNYW51YWxseSBmb2N1cyBsYXN0IGZvY3VzZWQgZWxlbWVudFxuICAgICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuZm9jdXNIYW5kbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMucmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpO1xuICAgICAgLy8gRW5hYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgb3ZlcmxheSBpZiBubyBvdmVybGF5IGlzIG9wZW5cbiAgICAgICFvdmVybGF5UmVmcy5sZW5ndGggJiYgdGhpcy5zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICAgICAgdGhpcy5kaWRDbG9zZS5lbWl0KHtcbiAgICAgICAgcmV0dXJuVmFsdWU6IHRoaXMucmV0dXJuVmFsdWUsXG4gICAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgZm9jdXMgb24gdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50LlxuICBwcm90ZWN0ZWQgc2V0T3ZlcmxheUZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlID0gZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QhLmNoaWxkcmVuKS5maWx0ZXIoXG4gICAgICAgIChlKTogZSBpcyBIVE1MRWxlbWVudCA9PiBlIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50LFxuICAgICAgKSxcbiAgICApO1xuICAgIHNldE1vZGFsaXR5T25OZXh0Rm9jdXMoZmlyc3RGb2N1c2FibGUpO1xuICAgIGZpcnN0Rm9jdXNhYmxlPy5mb2N1cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgVEFHX05BTUUgPSB0aGlzLm5lZ2F0aXZlID8gJ3NiYi10cmFuc3BhcmVudC1idXR0b24nIDogJ3NiYi1zZWNvbmRhcnktYnV0dG9uJztcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGxpdC9iaW5kaW5nLXBvc2l0aW9ucyAqL1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gaHRtbGBcbiAgICAgIDwke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRSl9XG4gICAgICAgIGNsYXNzPVwic2JiLW92ZXJsYXlfX2Nsb3NlXCJcbiAgICAgICAgYXJpYS1sYWJlbD0ke3RoaXMuYWNjZXNzaWJpbGl0eUNsb3NlTGFiZWwgfHwgaTE4bkNsb3NlRGlhbG9nW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgc2JiLW92ZXJsYXktY2xvc2VcbiAgICAgID48LyR7dW5zYWZlU3RhdGljKFRBR19OQU1FKX0+XG4gICAgYDtcblxuICAgIGNvbnN0IGJhY2tCdXR0b24gPSBodG1sYFxuICAgICAgPCR7dW5zYWZlU3RhdGljKFRBR19OQU1FKX1cbiAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fYmFja1wiXG4gICAgICAgIGFyaWEtbGFiZWw9JHt0aGlzLmFjY2Vzc2liaWxpdHlCYWNrTGFiZWwgfHwgaTE4bkdvQmFja1t0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICBzaXplPVwibVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBpY29uLW5hbWU9XCJjaGV2cm9uLXNtYWxsLWxlZnQtc21hbGxcIlxuICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9iYWNrQ2xpY2suZW1pdCgpfVxuICAgICAgPjwvJHt1bnNhZmVTdGF0aWMoVEFHX05BTUUpfT5cbiAgICBgO1xuICAgIC8qIGVzbGludC1lbmFibGUgbGl0L2JpbmRpbmctcG9zaXRpb25zICovXG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fY29udGFpbmVyXCJcbiAgICAgICAgQGFuaW1hdGlvbmVuZD0keyhldmVudDogQW5pbWF0aW9uRXZlbnQpID0+IHRoaXMub25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50KX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgQGNsaWNrPSR7KGV2ZW50OiBFdmVudCkgPT4gdGhpcy5jbG9zZU9uU2JiT3ZlcmxheUNsb3NlQ2xpY2soZXZlbnQpfVxuICAgICAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fd3JhcHBlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgJHt0aGlzLmJhY2tCdXR0b24gPyBiYWNrQnV0dG9uIDogbm90aGluZ30gJHtjbG9zZUJ1dHRvbn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5X19jb250ZW50XCI+XG4gICAgICAgICAgICAgIDxzYmItY29udGFpbmVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fY29udGVudC1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgID9leHBhbmRlZD0ke3RoaXMuZXhwYW5kZWR9XG4gICAgICAgICAgICAgICAgY29sb3I9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICAgICAgIDwvc2JiLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHkgYXJpYS1saXZlPVwicG9saXRlXCI+PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1vdmVybGF5JzogU2JiT3ZlcmxheUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfU2JiT3ZlcmxheUJhc2VFbGVtZW50IiwiX19kZWNvcmF0ZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlTyxNQUFNLGNBQXVDLENBQUM7QUFFOUMsTUFBZSx5QkFBZixNQUFlQSxnQ0FBOEIsaUJBQWlCLHVCQUF1QixFQUFFO0FBQUEsRUFBdkYsY0FBQTtBQUFBLFVBQUEsR0FBQSxTQUFBO0FBS0wsU0FBbUIsV0FBc0QsSUFBSTtBQUFBLE1BQzNFO0FBQUEsTUFDQUEsd0JBQXNCLE9BQU87QUFBQSxJQUFBO0FBUXJCLFNBQUEsZUFBZSxJQUFJO0FBQ25CLFNBQUEsZ0JBQWdCLElBQUk7QUFFOUIsU0FBVSxvQkFBb0I7QUFFcEIsU0FBQSxXQUFXLElBQUksc0JBQXNCLElBQUk7QUFBQSxFQUFBO0FBQUE7QUFBQSxFQU81QyxNQUFNLFFBQWMsUUFBMkI7QUFDaEQsUUFBQSxLQUFLLFVBQVUsVUFBVTtBQUMzQjtBQUFBLElBQ0Y7QUFFQSxTQUFLLGNBQWM7QUFDbkIsU0FBSyxzQkFBc0I7QUFDM0IsVUFBTSxZQUF5QztBQUFBLE1BQzdDLGFBQWEsS0FBSztBQUFBLE1BQ2xCLGFBQWEsS0FBSztBQUFBLElBQUE7QUFHcEIsUUFBSSxDQUFDLEtBQUssVUFBVSxL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
506
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL292ZXJsYXkvb3ZlcmxheS1iYXNlLWVsZW1lbnQudHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvb3ZlcmxheS9vdmVybGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkZvY3VzSGFuZGxlciB9IGZyb20gJy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCB9IGZyb20gJy4uL2NvcmUvYmFzZS1lbGVtZW50cy5qcyc7XG5pbXBvcnQgeyBTYmJJbmVydENvbnRyb2xsZXIsIFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaG9zdENvbnRleHQsIFNiYlNjcm9sbEhhbmRsZXIgfSBmcm9tICcuLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IGkxOG5EaWFsb2cgfSBmcm9tICcuLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMgfSBmcm9tICcuLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnQgfSBmcm9tICcuLi9zY3JlZW4tcmVhZGVyLW9ubHkuanMnO1xuXG4vLyBBIGdsb2JhbCBjb2xsZWN0aW9uIG9mIGV4aXN0aW5nIG92ZXJsYXlzLlxuZXhwb3J0IGNvbnN0IG92ZXJsYXlSZWZzOiBTYmJPdmVybGF5QmFzZUVsZW1lbnRbXSA9IFtdO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiT3ZlcmxheUJhc2VFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCkge1xuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSByZWxldmFudCBuZXN0ZWQgZWxlbWVudCB0byBkZXNjcmliZSB0aGUgcHVycG9zZSBvZiB0aGUgb3ZlcmxheS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSkgcHVibGljIGFjY2Vzc2liaWxpdHlMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGlzIGNsb3NlZC4gKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGRpZENsb3NlOiBFdmVudEVtaXR0ZXI8U2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzPiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJPdmVybGF5QmFzZUVsZW1lbnQuZXZlbnRzLmRpZENsb3NlLFxuICApO1xuXG4gIC8vIFRoZSBsYXN0IGVsZW1lbnQgd2hpY2ggaGFkIGZvY3VzIGJlZm9yZSB0aGUgY29tcG9uZW50IHdhcyBvcGVuZWQuXG4gIHByb3RlY3RlZCBsYXN0Rm9jdXNlZEVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgcHJvdGVjdGVkIG92ZXJsYXlDbG9zZUVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgcHJvdGVjdGVkIG92ZXJsYXlDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcm90ZWN0ZWQgb3Blbk92ZXJsYXlDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcm90ZWN0ZWQgZm9jdXNIYW5kbGVyID0gbmV3IFNiYkZvY3VzSGFuZGxlcigpO1xuICBwcm90ZWN0ZWQgc2Nyb2xsSGFuZGxlciA9IG5ldyBTYmJTY3JvbGxIYW5kbGVyKCk7XG4gIHByb3RlY3RlZCByZXR1cm5WYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgYXJpYUxpdmVSZWZUb2dnbGUgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGFyaWFMaXZlUmVmITogU2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnQ7XG4gIHByb3RlY3RlZCBsYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByb3RlY3RlZCBpbmVydENvbnRyb2xsZXIgPSBuZXcgU2JiSW5lcnRDb250cm9sbGVyKHRoaXMpO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldE92ZXJsYXlGb2N1cygpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2xvc2VBdHRyaWJ1dGU6IHN0cmluZztcblxuICAvKiogQ2xvc2VzIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBhbnksIHRhcmdldD86IEhUTUxFbGVtZW50KTogYW55IHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJldHVyblZhbHVlID0gcmVzdWx0O1xuICAgIHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCA9IHRhcmdldDtcbiAgICBjb25zdCBldmVudERhdGE6IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyA9IHtcbiAgICAgIHJldHVyblZhbHVlOiB0aGlzLnJldHVyblZhbHVlLFxuICAgICAgY2xvc2VUYXJnZXQ6IHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLndpbGxDbG9zZS5lbWl0KGV2ZW50RGF0YSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5vdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLm92ZXJsYXlDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICB0aGlzLmFyaWFMaXZlUmVmID1cbiAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcjxTYmJTY3JlZW5SZWFkZXJPbmx5RWxlbWVudD4oJ3NiYi1zY3JlZW4tcmVhZGVyLW9ubHknKSE7XG5cbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5vdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLmZvY3VzSGFuZGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5yZW1vdmVJbnN0YW5jZUZyb21HbG9iYWxDb2xsZWN0aW9uKCk7XG4gICAgdGhpcy5zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGF0dGFjaE9wZW5PdmVybGF5RXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIC8vIFJlbW92ZSBvdmVybGF5IGxhYmVsIGFzIHNvb24gYXMgaXQgaXMgbm90IG5lZWRlZCBhbnkgbW9yZSB0byBwcmV2ZW50IGFjY2Vzc2luZyBpdCB3aXRoIGJyb3dzZSBtb2RlLlxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCk7XG4gICAgICAgIHRoaXMub25LZXlkb3duRXZlbnQoZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5yZW1vdmVBcmlhTGl2ZVJlZkNvbnRlbnQoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25LZXlkb3duRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgb3ZlcmxheVJlZnNbb3ZlcmxheVJlZnMubGVuZ3RoIC0gMV0uY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBvdmVybGF5UmVmcy5zcGxpY2Uob3ZlcmxheVJlZnMuaW5kZXhPZih0aGlzIGFzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCksIDEpO1xuICB9XG5cbiAgLy8gQ2xvc2UgdGhlIGNvbXBvbmVudCBvbiBjbGljayBvZiBhbnkgZWxlbWVudCB0aGF0IGhhcyB0aGUgYGNsb3NlQXR0cmlidXRlYCBhdHRyaWJ1dGUuXG4gIHByb3RlY3RlZCBjbG9zZU9uU2JiT3ZlcmxheUNsb3NlQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgb3ZlcmxheUNsb3NlRWxlbWVudCA9IGV2ZW50XG4gICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgIC5maWx0ZXIoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IGUgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpXG4gICAgICAuZmluZChcbiAgICAgICAgKHRhcmdldCkgPT4gdGFyZ2V0Lmhhc0F0dHJpYnV0ZSh0aGlzLmNsb3NlQXR0cmlidXRlKSAmJiAhdGFyZ2V0Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSxcbiAgICAgICk7XG5cbiAgICBpZiAoIW92ZXJsYXlDbG9zZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgdGFyZ2V0IGlzIGEgc3VibWlzc2lvbiBlbGVtZW50IHdpdGhpbiBhIGZvcm0gYW5kIHJldHVybiB0aGUgZm9ybSwgaWYgcHJlc2VudFxuICAgIGNvbnN0IGNsb3Nlc3RGb3JtID1cbiAgICAgIG92ZXJsYXlDbG9zZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdzdWJtaXQnXG4gICAgICAgID8gKGhvc3RDb250ZXh0KCdmb3JtJywgb3ZlcmxheUNsb3NlRWxlbWVudCkgYXMgSFRNTEZvcm1FbGVtZW50KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBvdmVybGF5UmVmc1tvdmVybGF5UmVmcy5sZW5ndGggLSAxXS5jbG9zZShjbG9zZXN0Rm9ybSwgb3ZlcmxheUNsb3NlRWxlbWVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuYXJpYUxpdmVSZWYudGV4dENvbnRlbnQgPSAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRBcmlhTGl2ZVJlZkNvbnRlbnQobGFiZWw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFyaWFMaXZlUmVmVG9nZ2xlID0gIXRoaXMuYXJpYUxpdmVSZWZUb2dnbGU7XG5cbiAgICAvLyBJZiB0aGUgdGV4dCBjb250ZW50IHJlbWFpbnMgdGhlIHNhbWUsIG9uIFZvaWNlT3ZlciB0aGUgYXJpYS1saXZlIHJlZ2lvbiBpcyBub3QgYW5ub3VuY2VkIGEgc2Vjb25kIHRpbWUuXG4gICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCByZWFkaW5nIG9uIGV2ZXJ5IG9wZW5pbmcsIHdlIHRvZ2dsZSBhbiBpbnZpc2libGUgc3BhY2UuXG4gICAgdGhpcy5hcmlhTGl2ZVJlZi50ZXh0Q29udGVudCA9IGAke2kxOG5EaWFsb2dbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX0ke1xuICAgICAgbGFiZWwgPyBgLCAke2xhYmVsfWAgOiAnJ1xuICAgIH0ke3RoaXMuYXJpYUxpdmVSZWZUb2dnbGUgPyAnwqAnIDogJyd9YDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIHVuc2FmZVN0YXRpYyB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB7IGdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudCwgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyB9IGZyb20gJy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IGkxOG5DbG9zZURpYWxvZywgaTE4bkdvQmFjayB9IGZyb20gJy4uL2NvcmUvaTE4bi5qcyc7XG5cbmltcG9ydCB7IG92ZXJsYXlSZWZzLCBTYmJPdmVybGF5QmFzZUVsZW1lbnQgfSBmcm9tICcuL292ZXJsYXktYmFzZS1lbGVtZW50LmpzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL292ZXJsYXkuc2Nzcz9saXQmaW5saW5lJztcbmltcG9ydCAnLi4vYnV0dG9uL3NlY29uZGFyeS1idXR0b24uanMnO1xuaW1wb3J0ICcuLi9idXR0b24vdHJhbnNwYXJlbnQtYnV0dG9uLmpzJztcbmltcG9ydCAnLi4vY29udGFpbmVyLmpzJztcbmltcG9ydCAnLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpbnRlcmFjdGl2ZSBvdmVybGF5IGVsZW1lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBwcm92aWRlIGEgY29udGVudCBmb3IgdGhlIG92ZXJsYXkuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLW92ZXJsYXlgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkaWRPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItb3ZlcmxheWAgaXMgb3BlbmVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gd2lsbENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItb3ZlcmxheWAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzPn0gZGlkQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1vdmVybGF5YCBpcyBjbG9zZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSByZXF1ZXN0QmFja0FjdGlvbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkLlxuICogQGNzc3Byb3AgWy0tc2JiLW92ZXJsYXktei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLW92ZXJsYXknKVxuZXhwb3J0IGNsYXNzIFNiYk92ZXJsYXlFbGVtZW50IGV4dGVuZHMgU2JiT3ZlcmxheUJhc2VFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLy8gRklYTUUgdXNpbmcgLi4uc3VwZXIuZXZlbnRzIHJlcXVpcmVzOiBodHRwczovL2dpdGh1Yi5jb20vc2JiLWRlc2lnbi1zeXN0ZW1zL2x5bmUtY29tcG9uZW50cy9pc3N1ZXMvMjYwMFxuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICB3aWxsT3BlbjogJ3dpbGxPcGVuJyxcbiAgICBkaWRPcGVuOiAnZGlkT3BlbicsXG4gICAgd2lsbENsb3NlOiAnd2lsbENsb3NlJyxcbiAgICBkaWRDbG9zZTogJ2RpZENsb3NlJyxcbiAgICBiYWNrQ2xpY2s6ICdyZXF1ZXN0QmFja0FjdGlvbicsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgdGhlIG92ZXJsYXkgY29udGVudCB0byBzdHJldGNoIHRvIGZ1bGwgd2lkdGguXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb250ZW50IGhhcyB0aGUgYXBwcm9wcmlhdGUgcGFnZSBzaXplLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgZXhwYW5kZWQgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciBhIGJhY2sgYnV0dG9uIGlzIGRpc3BsYXllZCBuZXh0IHRvIHRoZSB0aXRsZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYmFjay1idXR0b24nLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBiYWNrQnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgY2xvc2UgYnV0dG9uIGVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktY2xvc2UtbGFiZWwnIH0pIHB1YmxpYyBhY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbDpcbiAgICB8IHN0cmluZ1xuICAgIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIGFzIGFyaWEtbGFiZWwgdG8gdGhlIGJhY2sgYnV0dG9uIGVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktYmFjay1sYWJlbCcgfSkgcHVibGljIGFjY2Vzc2liaWxpdHlCYWNrTGFiZWw6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgY2xvc2VBdHRyaWJ1dGU6IHN0cmluZyA9ICdzYmItb3ZlcmxheS1jbG9zZSc7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICBwcml2YXRlIF9iYWNrQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYk92ZXJsYXlFbGVtZW50LmV2ZW50cy5iYWNrQ2xpY2ssXG4gICk7XG4gIHByaXZhdGUgX292ZXJsYXlDb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogT3BlbnMgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGFzdEZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgIHRoaXMuX292ZXJsYXlDb250ZW50RWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihcbiAgICAgICcuc2JiLW92ZXJsYXlfX2NvbnRlbnQnLFxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG5cbiAgICAvLyBBZGQgdGhpcyBvdmVybGF5IHRvIHRoZSBnbG9iYWwgY29sbGVjdGlvblxuICAgIG92ZXJsYXlSZWZzLnB1c2godGhpcyBhcyBTYmJPdmVybGF5RWxlbWVudCk7XG5cbiAgICAvLyBEaXNhYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgb3ZlcmxheVxuICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kaXNhYmxlU2Nyb2xsKCk7XG4gIH1cblxuICAvLyBXYWl0IGZvciBvdmVybGF5IHRyYW5zaXRpb24gdG8gY29tcGxldGUuXG4gIC8vIEluIHJhcmUgY2FzZXMsIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByb3RlY3RlZCBvbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICAgIHRoaXMuZGlkT3Blbi5lbWl0KCk7XG4gICAgICB0aGlzLmluZXJ0Q29udHJvbGxlci5hY3RpdmF0ZSgpO1xuICAgICAgdGhpcy5hdHRhY2hPcGVuT3ZlcmxheUV2ZW50cygpO1xuICAgICAgdGhpcy5zZXRPdmVybGF5Rm9jdXMoKTtcbiAgICAgIC8vIFVzZSB0aW1lb3V0IHRvIHJlYWQgbGFiZWwgYWZ0ZXIgZm9jdXNlZCBlbGVtZW50XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0QXJpYUxpdmVSZWZDb250ZW50KHRoaXMuYWNjZXNzaWJpbGl0eUxhYmVsKSk7XG4gICAgICB0aGlzLmZvY3VzSGFuZGxlci50cmFwKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlDb250ZW50RWxlbWVudD8uc2Nyb2xsVG8oMCwgMCk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgICB0aGlzLmluZXJ0Q29udHJvbGxlci5kZWFjdGl2YXRlKCk7XG4gICAgICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzKHRoaXMubGFzdEZvY3VzZWRFbGVtZW50KTtcbiAgICAgIC8vIE1hbnVhbGx5IGZvY3VzIGxhc3QgZm9jdXNlZCBlbGVtZW50XG4gICAgICB0aGlzLmxhc3RGb2N1c2VkRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgIHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5mb2N1c0hhbmRsZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5yZW1vdmVJbnN0YW5jZUZyb21HbG9iYWxDb2xsZWN0aW9uKCk7XG4gICAgICAvLyBFbmFibGUgc2Nyb2xsaW5nIGZvciBjb250ZW50IGJlbG93IHRoZSBvdmVybGF5IGlmIG5vIG92ZXJsYXkgaXMgb3BlblxuICAgICAgaWYgKCFvdmVybGF5UmVmcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5kaWRDbG9zZS5lbWl0KHtcbiAgICAgICAgcmV0dXJuVmFsdWU6IHRoaXMucmV0dXJuVmFsdWUsXG4gICAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgZm9jdXMgb24gdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50LlxuICBwcm90ZWN0ZWQgc2V0T3ZlcmxheUZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlID0gZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QhLmNoaWxkcmVuKS5maWx0ZXIoXG4gICAgICAgIChlKTogZSBpcyBIVE1MRWxlbWVudCA9PiBlIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50LFxuICAgICAgKSxcbiAgICApO1xuICAgIHNldE1vZGFsaXR5T25OZXh0Rm9jdXMoZmlyc3RGb2N1c2FibGUpO1xuICAgIGZpcnN0Rm9jdXNhYmxlPy5mb2N1cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgVEFHX05BTUUgPSB0aGlzLm5lZ2F0aXZlID8gJ3NiYi10cmFuc3BhcmVudC1idXR0b24nIDogJ3NiYi1zZWNvbmRhcnktYnV0dG9uJztcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGxpdC9iaW5kaW5nLXBvc2l0aW9ucyAqL1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gaHRtbGBcbiAgICAgIDwke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRSl9XG4gICAgICAgIGNsYXNzPVwic2JiLW92ZXJsYXlfX2Nsb3NlXCJcbiAgICAgICAgYXJpYS1sYWJlbD0ke3RoaXMuYWNjZXNzaWJpbGl0eUNsb3NlTGFiZWwgfHwgaTE4bkNsb3NlRGlhbG9nW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgc2JiLW92ZXJsYXktY2xvc2VcbiAgICAgID48LyR7dW5zYWZlU3RhdGljKFRBR19OQU1FKX0+XG4gICAgYDtcblxuICAgIGNvbnN0IGJhY2tCdXR0b24gPSBodG1sYFxuICAgICAgPCR7dW5zYWZlU3RhdGljKFRBR19OQU1FKX1cbiAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fYmFja1wiXG4gICAgICAgIGFyaWEtbGFiZWw9JHt0aGlzLmFjY2Vzc2liaWxpdHlCYWNrTGFiZWwgfHwgaTE4bkdvQmFja1t0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICBzaXplPVwibVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBpY29uLW5hbWU9XCJjaGV2cm9uLXNtYWxsLWxlZnQtc21hbGxcIlxuICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9iYWNrQ2xpY2suZW1pdCgpfVxuICAgICAgPjwvJHt1bnNhZmVTdGF0aWMoVEFHX05BTUUpfT5cbiAgICBgO1xuICAgIC8qIGVzbGludC1lbmFibGUgbGl0L2JpbmRpbmctcG9zaXRpb25zICovXG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fY29udGFpbmVyXCJcbiAgICAgICAgQGFuaW1hdGlvbmVuZD0keyhldmVudDogQW5pbWF0aW9uRXZlbnQpID0+IHRoaXMub25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50KX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgQGNsaWNrPSR7KGV2ZW50OiBFdmVudCkgPT4gdGhpcy5jbG9zZU9uU2JiT3ZlcmxheUNsb3NlQ2xpY2soZXZlbnQpfVxuICAgICAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fd3JhcHBlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgJHt0aGlzLmJhY2tCdXR0b24gPyBiYWNrQnV0dG9uIDogbm90aGluZ30gJHtjbG9zZUJ1dHRvbn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5X19jb250ZW50XCI+XG4gICAgICAgICAgICAgIDxzYmItY29udGFpbmVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fY29udGVudC1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgID9leHBhbmRlZD0ke3RoaXMuZXhwYW5kZWR9XG4gICAgICAgICAgICAgICAgY29sb3I9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICAgICAgIDwvc2JiLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHkgYXJpYS1saXZlPVwicG9saXRlXCI+PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1vdmVybGF5JzogU2JiT3ZlcmxheUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfU2JiT3ZlcmxheUJhc2VFbGVtZW50IiwiX19kZWNvcmF0ZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNPLE1BQU0sY0FBdUMsQ0FBQztBQUU5QyxNQUFlLHlCQUFmLE1BQWVBLGdDQUE4QixpQkFBaUIsdUJBQXVCLEVBQUU7QUFBQSxFQUF2RixjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFLTCxTQUFtQixXQUFzRCxJQUFJO0FBQUEsTUFDM0U7QUFBQSxNQUNBQSx3QkFBc0IsT0FBTztBQUFBLElBQUE7QUFRckIsU0FBQSxlQUFlLElBQUk7QUFDbkIsU0FBQSxnQkFBZ0IsSUFBSTtBQUU5QixTQUFVLG9CQUFvQjtBQUVwQixTQUFBLFdBQVcsSUFBSSxzQkFBc0IsSUFBSTtBQUN6QyxTQUFBLGtCQUFrQixJQUFJLG1CQUFtQixJQUFJO0FBQUEsRUFBQTtBQUFBO0FBQUEsRUFPaEQsTUFBTSxRQUFjLFFBQTJCO0FBQ2hELFFBQUEsS0FBSyxVQUFVLFVBQVU7QUFDM0I7QUFBQSxJQUNGO0FBRUEsU0FBSyxjQUFjO0FBQ25CLFNBQUssc0JBQXNCO0FBQzNCLFVBQU0sWUFBeUM7QUFBQSxNQUM3QyxhQUFhLEtBQUs7QUFBQSxNQUNsQixhQUFhLEtBQUs7QUFBQSxJQUFBO0FBR3BCLFFBQUksQ0FBQyxLQUFLLFVBQVUsS0FBSyxTQUFTLEdBQUc7QUFDbkM7QUFBQSxJQUNGO0FBQ0EsU0FBSyxRQUFRO0FBQ2IsU0FBSyx5QkFBeUI7QUFBQSxFQUNoQztBQUFBLEVBRWdCLG9CQUEwQjs7QUFDeEMsVUFBTSxrQkFBa0I7QUFDeEIs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
@@ -1,7 +1,6 @@
1
1
  import { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
2
2
  import { SbbOpenCloseBaseElement } from '../../core/base-elements.js';
3
3
  import { EventEmitter } from '../../core/eventing.js';
4
-
5
4
  declare const SbbPopoverElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbHydrationMixinType> & typeof SbbOpenCloseBaseElement;
6
5
  /**
7
6
  * It displays contextual information within a popover.
@@ -1 +1 @@
1
- {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../../../src/elements/popover/popover/popover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAW1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAA4B,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAahF,OAAO,kCAAkC,CAAC;;AAS1C;;;;;;;;;;;;GAYG;AACH,qBACa,iBAAkB,SAAQ,sBAA0C;IAC/E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;OAGG;IACgB,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAElD,iDAAiD;IACmB,eAAe,CAAC,EAAE,OAAO,CACrF;IAER,wDAAwD;IACQ,YAAY,EAAE,OAAO,CAAS;IAE9F,8CAA8C;IACc,SAAS,CAAC,qBAAK;IAE3E,+CAA+C;IACc,UAAU,CAAC,qBAAK;IAE7E,wEAAwE;IACX,uBAAuB,EAChF,MAAM,GACN,SAAS,CAAC;IAEd,sEAAsE;IACtE,UAAmB,SAAS,EAAE,YAAY,CAAC;QAAE,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC,CAGvE;IAEF,kDAAkD;IAClD,UAAmB,QAAQ,EAAE,YAAY,CAAC;QAAE,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC,CAGtE;IAEF,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,eAAe,CAAC,CAAqB;IAE7C,OAAO,CAAC,mBAAmB,CAAC,CAAc;IAC1C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,oBAAoB,CAAC,CAAc;IAC3C,OAAO,CAAC,4BAA4B,CAAC,CAAU;IAC/C,OAAO,CAAC,kBAAkB,CAAmB;IAC7C,OAAO,CAAC,oBAAoB,CAAmB;IAC/C,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,OAAO,CAAC,aAAa,CAAC,CAAgC;IACtD,OAAO,CAAC,SAAS,CAAmC;IAEpD,0CAA0C;IACnC,IAAI,IAAI,IAAI;IAyBnB,0BAA0B;IACnB,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI;IAgBxC,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,2BAA2B;IAWnB,iBAAiB,IAAI,IAAI;cAYtB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAYzD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS9D,oBAAoB,IAAI,IAAI;IAS5C,OAAO,CAAC,UAAU;IA8DlB,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,oBAAoB,CAE1B;IAGF,OAAO,CAAC,qBAAqB,CAS3B;IAEF,OAAO,CAAC,oBAAoB,CAM1B;IAEF,OAAO,CAAC,oBAAoB,CAM1B;IAEF,OAAO,CAAC,oBAAoB,CAI1B;IAEF,OAAO,CAAC,oBAAoB,CAI1B;IAMF,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,mBAAmB;cA6BR,MAAM,IAAI,cAAc;CAkC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
1
+ {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../../../src/elements/popover/popover/popover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAW1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAA4B,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAahF,OAAO,kCAAkC,CAAC;;AAS1C;;;;;;;;;;;;GAYG;AACH,qBACa,iBAAkB,SAAQ,sBAA0C;IAC/E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;OAGG;IACgB,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAElD,iDAAiD;IACmB,eAAe,CAAC,EAAE,OAAO,CACrF;IAER,wDAAwD;IACQ,YAAY,EAAE,OAAO,CAAS;IAE9F,8CAA8C;IACc,SAAS,CAAC,qBAAK;IAE3E,+CAA+C;IACc,UAAU,CAAC,qBAAK;IAE7E,wEAAwE;IACX,uBAAuB,EAChF,MAAM,GACN,SAAS,CAAC;IAEd,sEAAsE;IACtE,UAAmB,SAAS,EAAE,YAAY,CAAC;QAAE,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC,CAGvE;IAEF,kDAAkD;IAClD,UAAmB,QAAQ,EAAE,YAAY,CAAC;QAAE,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC,CAGtE;IAEF,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,eAAe,CAAC,CAAqB;IAE7C,OAAO,CAAC,mBAAmB,CAAC,CAAc;IAC1C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,oBAAoB,CAAC,CAAc;IAC3C,OAAO,CAAC,4BAA4B,CAAC,CAAU;IAC/C,OAAO,CAAC,kBAAkB,CAAmB;IAC7C,OAAO,CAAC,oBAAoB,CAAmB;IAC/C,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,OAAO,CAAC,aAAa,CAAC,CAAgC;IACtD,OAAO,CAAC,SAAS,CAAmC;IAEpD,0CAA0C;IACnC,IAAI,IAAI,IAAI;IAyBnB,0BAA0B;IACnB,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI;IAgBxC,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,2BAA2B;IAWnB,iBAAiB,IAAI,IAAI;cAYtB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAYzD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS9D,oBAAoB,IAAI,IAAI;IAS5C,OAAO,CAAC,UAAU;IAgElB,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,oBAAoB,CAE1B;IAGF,OAAO,CAAC,qBAAqB,CAS3B;IAEF,OAAO,CAAC,oBAAoB,CAM1B;IAEF,OAAO,CAAC,oBAAoB,CAM1B;IAEF,OAAO,CAAC,oBAAoB,CAI1B;IAEF,OAAO,CAAC,oBAAoB,CAI1B;IAMF,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,mBAAmB;cA6BR,MAAM,IAAI,cAAc;CAkC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
@@ -1,6 +1,5 @@
1
1
  import { CSSResultGroup, TemplateResult } from 'lit';
2
2
  import { SbbButtonBaseElement } from '../../core/base-elements.js';
3
-
4
3
  declare const SbbPopoverTriggerElement_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 SbbButtonBaseElement;
5
4
  /**
6
5
  * It can be used as a trigger for the `sbb-popover` component.
@@ -31,9 +31,9 @@ const style = css`/**
31
31
  }
32
32
 
33
33
  :host {
34
- --sbb-popover-color: inherit;
35
- outline: none !important;
36
34
  display: inline-block;
35
+ outline: none !important;
36
+ --sbb-popover-color: inherit;
37
37
  }
38
38
  @media (forced-colors: active) {
39
39
  :host {
@@ -62,8 +62,8 @@ const style = css`/**
62
62
  }
63
63
 
64
64
  :host([disabled]) {
65
- --sbb-popover-color: var(--sbb-color-graphite);
66
65
  pointer-events: none;
66
+ --sbb-popover-color: var(--sbb-color-graphite);
67
67
  }
68
68
  @media (forced-colors: active) {
69
69
  :host([disabled]) {