@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1779265349 → 5.0.0-next.3-dev.1779279790

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 (724) hide show
  1. package/_index.scss +6 -2
  2. package/autocomplete/autocomplete-base-element.js +1 -1
  3. package/autocomplete/autocomplete.component.js +1 -1
  4. package/{autocomplete-base-element-6leI6UF4.js → autocomplete-base-element-DjfmUS0W.js} +11 -10
  5. package/autocomplete.js +1 -1
  6. package/autocomplete.pure.js +1 -1
  7. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  8. package/{breadcrumb-group.component-XPdnV6-a.js → breadcrumb-group.component-a49dItu9.js} +23 -19
  9. package/breadcrumb.js +1 -1
  10. package/breadcrumb.pure.js +1 -1
  11. package/button/mini-button-group/mini-button-group.component.js +1 -1
  12. package/button.js +1 -1
  13. package/button.pure.js +1 -1
  14. package/calendar/calendar/calendar.component.js +1 -1
  15. package/{calendar.component-CiT0mE7S.js → calendar.component-BhUyyFtR.js} +53 -49
  16. package/calendar.js +1 -1
  17. package/calendar.pure.js +1 -1
  18. package/container/sticky-bar/sticky-bar.component.js +1 -1
  19. package/container.js +1 -1
  20. package/container.pure.js +1 -1
  21. package/core/base-elements/button-base-element.js +47 -68
  22. package/core/datetime/date-adapter.js +2 -2
  23. package/core/mixins/form-associated-checkbox-mixin.js +17 -26
  24. package/core/mixins/named-slot-list-mixin.js +14 -14
  25. package/core/styles/_index.scss +1 -12
  26. package/core/styles/_theme.scss +16 -0
  27. package/core/styles/core/functions.scss +0 -8
  28. package/core/styles/{a11y.scss → features/a11y.scss} +2 -2
  29. package/core/styles/{animation.scss → features/animation.scss} +1 -1
  30. package/core/styles/features/color-scheme.scss +11 -0
  31. package/core/styles/{core.scss → features/core.scss} +138 -171
  32. package/core/styles/{image.scss → features/image.scss} +29 -7
  33. package/core/styles/{layout.private.scss → features/layout.private.scss} +5 -4
  34. package/core/styles/{layout.scss → features/layout.scss} +1 -1
  35. package/core/styles/{lists.scss → features/lists.scss} +1 -1
  36. package/core/styles/{scrollbar.scss → features/scrollbar.scss} +1 -1
  37. package/core/styles/features/typography.private.scss +9 -0
  38. package/core/styles/{typography.scss → features/typography.scss} +2 -2
  39. package/core/styles/internals/button-reset.scss +5 -0
  40. package/core/styles/{host-scrollbar.scss → internals/host-scrollbar.scss} +1 -1
  41. package/core/styles/internals/list-reset.scss +6 -0
  42. package/core/styles/internals/popover-reset.scss +6 -0
  43. package/core/styles/{screen-reader-only.scss → internals/screen-reader-only.scss} +1 -1
  44. package/core/styles/mixins/{a11y.scss → _a11y.scss} +0 -21
  45. package/core/styles/mixins/{helpers.scss → _helpers.scss} +3 -14
  46. package/core/styles/mixins/{lists.scss → _lists.scss} +8 -12
  47. package/core/styles/mixins/{pearl-chain-bullet.scss → _pearl-chain-bullet.scss} +5 -5
  48. package/core/styles/mixins/_reset.scss +38 -0
  49. package/core/styles/mixins/{typo.scss → _typo.scss} +23 -75
  50. package/core/styles/styles.js +2 -2
  51. package/core.js +40 -42
  52. package/custom-elements.json +166 -384
  53. package/datepicker/common/datepicker-button.js +1 -1
  54. package/{datepicker-button-aYDFZ_3v.js → datepicker-button-CuoZoC6e.js} +0 -3
  55. package/datepicker.js +1 -1
  56. package/datepicker.pure.js +1 -1
  57. package/development/autocomplete/autocomplete-base-element.d.ts +0 -2
  58. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  59. package/development/autocomplete/autocomplete-base-element.js +1 -1
  60. package/development/autocomplete/autocomplete.component.js +1 -1
  61. package/development/autocomplete-base-element-CTZEg--s.js +695 -0
  62. package/development/autocomplete.js +1 -1
  63. package/development/autocomplete.pure.js +1 -1
  64. package/development/block-link-common-DNvRfeay.js +1 -1
  65. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
  66. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  67. package/development/breadcrumb-group.component-DvY1hq51.js +197 -0
  68. package/development/breadcrumb.component-D6Cd2FPo.js +1 -1
  69. package/development/breadcrumb.js +1 -1
  70. package/development/breadcrumb.pure.js +1 -1
  71. package/development/button/mini-button-group/mini-button-group.component.js +1 -1
  72. package/development/button-common-C-A7Dulr.js +1 -1
  73. package/development/button.js +1 -1
  74. package/development/button.pure.js +1 -1
  75. package/development/calendar/calendar/calendar.component.d.ts +0 -6
  76. package/development/calendar/calendar/calendar.component.d.ts.map +1 -1
  77. package/development/calendar/calendar/calendar.component.js +1 -1
  78. package/development/calendar-cell-base-element-mWRSDeWc.js +1 -1
  79. package/development/calendar.component-DnC8Zkdk.js +1478 -0
  80. package/development/calendar.js +1 -1
  81. package/development/calendar.pure.js +1 -1
  82. package/development/card.component-CL2gHoyP.js +1 -1
  83. package/development/chip-label.component-DHHNtvTt.js +1 -1
  84. package/development/{compact-paginator.component-BgkpxaaD.js → compact-paginator.component-m8MASSB7.js} +1 -1
  85. package/development/container/sticky-bar/sticky-bar.component.js +1 -1
  86. package/development/container.js +1 -1
  87. package/development/container.pure.js +1 -1
  88. package/development/core/base-elements/button-base-element.d.ts +1 -0
  89. package/development/core/base-elements/button-base-element.d.ts.map +1 -1
  90. package/development/core/base-elements/button-base-element.js +66 -92
  91. package/development/core/base-elements/element.d.ts.map +1 -1
  92. package/development/core/datetime/date-adapter.d.ts +0 -5
  93. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  94. package/development/core/datetime/date-adapter.js +2 -7
  95. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  96. package/development/core/mixins/form-associated-checkbox-mixin.js +7 -21
  97. package/development/core/mixins/form-associated-mixin.d.ts +1 -1
  98. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  99. package/development/core/mixins/form-associated-mixin.js +1 -1
  100. package/development/core/mixins/named-slot-list-mixin.js +3 -3
  101. package/development/core/styles/styles.d.ts +3 -1
  102. package/development/core/styles/styles.d.ts.map +1 -1
  103. package/development/core/styles/styles.js +2 -2
  104. package/development/core.d.ts +0 -2
  105. package/development/core.d.ts.map +1 -1
  106. package/development/core.js +3 -5
  107. package/development/date-input.component-HxRyCudr.js +1 -1
  108. package/development/datepicker/common/datepicker-button.d.ts +0 -2
  109. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  110. package/development/datepicker/common/datepicker-button.js +1 -1
  111. package/development/{datepicker-button-BAT1ebzJ.js → datepicker-button-Bb76EBYH.js} +1 -5
  112. package/development/datepicker.js +1 -1
  113. package/development/datepicker.pure.js +1 -1
  114. package/development/dialog/dialog/dialog.component.js +1 -1
  115. package/development/dialog-actions.component-e0ZTTUin.js +1 -1
  116. package/development/{dialog.component-D8B2dVck.js → dialog.component-cZ3SAujq.js} +5 -5
  117. package/development/dialog.js +1 -1
  118. package/development/dialog.pure.js +1 -1
  119. package/development/element-BAsBayf5.js +1 -1
  120. package/development/error.component-WCkiwM7_.js +1 -1
  121. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts.map +1 -1
  122. package/development/expansion-panel-header.component-gg5A_7Pz.js +1 -1
  123. package/development/expansion-panel.component-DcFrWkIt.js +1 -1
  124. package/development/file-selector/common/file-selector-common.js +1 -1
  125. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  126. package/development/file-selector-common-Dd0S0qE3.js +421 -0
  127. package/development/{file-selector-dropzone.component-B84OL4Xd.js → file-selector-dropzone.component-DWLdqMmI.js} +2 -2
  128. package/development/file-selector.js +2 -2
  129. package/development/file-selector.pure.js +2 -2
  130. package/development/flip-card/flip-card/flip-card.component.d.ts.map +1 -1
  131. package/development/flip-card/flip-card/flip-card.component.js +1 -1
  132. package/development/flip-card.component-MmiS-x-W.js +189 -0
  133. package/development/flip-card.js +1 -1
  134. package/development/flip-card.pure.js +1 -1
  135. package/development/footer.component-K2bWizjw.js +1 -1
  136. package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
  137. package/development/form-field/form-field/form-field.component.js +1 -1
  138. package/development/form-field.component-Cb58q-Ty.js +702 -0
  139. package/development/form-field.js +1 -1
  140. package/development/form-field.pure.js +1 -1
  141. package/development/header/common/header-action-common.js +1 -1
  142. package/development/header-action-common-BYB-HYtn.js +86 -0
  143. package/development/header.component-C4e7CNql.js +1 -1
  144. package/development/header.js +1 -1
  145. package/development/header.pure.js +1 -1
  146. package/development/icon/icon.component.d.ts +1 -1
  147. package/development/icon/icon.component.d.ts.map +1 -1
  148. package/development/icon/icon.component.js +5 -7
  149. package/development/inline-link-common-BV6oAtAA.js +18 -0
  150. package/development/link/common/inline-link-common.js +1 -1
  151. package/development/link-common-2RGn9Qz_.js +1 -1
  152. package/development/link-list/link-list.component.js +1 -1
  153. package/development/link-list-anchor/link-list-anchor.component.js +1 -1
  154. package/development/{link-list-anchor.component-Csb-FOQL.js → link-list-anchor.component-BMtCbCRD.js} +2 -2
  155. package/development/link-list-anchor.js +1 -1
  156. package/development/link-list-anchor.pure.js +1 -1
  157. package/development/link-list.component-CLxhjWR7.js +97 -0
  158. package/development/link-list.js +1 -1
  159. package/development/link-list.pure.js +1 -1
  160. package/development/link.js +1 -1
  161. package/development/link.pure.js +1 -1
  162. package/development/loading-indicator-circle.component-Cfjw5vyz.js +1 -1
  163. package/development/logo.component-DYKgAgq0.js +1 -1
  164. package/development/menu/common/menu-action-common.js +1 -1
  165. package/development/menu/menu/menu.component.d.ts.map +1 -1
  166. package/development/menu/menu/menu.component.js +1 -1
  167. package/development/menu-action-common-DL4t4_-J.js +32 -0
  168. package/development/menu.component-3qEIFutc.js +369 -0
  169. package/development/menu.js +2 -2
  170. package/development/menu.pure.js +2 -2
  171. package/development/message/message.component.js +1 -1
  172. package/development/{message.component-CdO5GyE2.js → message.component-BJ-84a0B.js} +2 -2
  173. package/development/message.js +1 -1
  174. package/development/message.pure.js +1 -1
  175. package/development/{mini-button-group.component-VYKZf1rq.js → mini-button-group.component-C88pIaaL.js} +2 -2
  176. package/development/mini-button-link.component-kpRsi8I2.js +1 -1
  177. package/development/navigation/navigation/navigation.component.d.ts.map +1 -1
  178. package/development/navigation/navigation/navigation.component.js +1 -1
  179. package/development/navigation/navigation-list/navigation-list.component.js +1 -1
  180. package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
  181. package/development/navigation-action-common-wrzPCkMT.js +1 -1
  182. package/development/navigation-list.component-CU-SGC8c.js +86 -0
  183. package/development/navigation-marker.component-CTk9U0kA.js +120 -0
  184. package/development/navigation-section.component-iaypc6yQ.js +1 -1
  185. package/development/navigation.component-Bu1wVUNx.js +319 -0
  186. package/development/navigation.js +3 -3
  187. package/development/navigation.pure.js +3 -3
  188. package/development/optgroup-base-element-BzfcJgxG.js +140 -0
  189. package/development/option/optgroup/optgroup-base-element.d.ts +1 -2
  190. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  191. package/development/option/optgroup/optgroup-base-element.js +1 -1
  192. package/development/option/optgroup/optgroup.component.js +1 -1
  193. package/development/option/option/option.component.js +1 -1
  194. package/development/option/option-styles.d.ts +2 -0
  195. package/development/option/option-styles.d.ts.map +1 -0
  196. package/development/option/option-styles.js +2 -0
  197. package/development/option-styles-IEQgVpCe.js +8 -0
  198. package/development/option.component-BrTjDq6X.js +131 -0
  199. package/development/option.js +5 -4
  200. package/development/option.pure.d.ts +1 -0
  201. package/development/option.pure.d.ts.map +1 -1
  202. package/development/option.pure.js +4 -3
  203. package/development/overlay/overlay-base-element.d.ts +2 -4
  204. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  205. package/development/overlay/overlay-base-element.js +8 -7
  206. package/development/overlay/overlay.component.js +1 -1
  207. package/development/{overlay.component-YSCuGeme.js → overlay.component-DywhKxO1.js} +5 -5
  208. package/development/overlay.js +1 -1
  209. package/development/overlay.pure.js +1 -1
  210. package/development/paginator/common/paginator-common.js +1 -1
  211. package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
  212. package/development/paginator/paginator/paginator.component.d.ts.map +1 -1
  213. package/development/paginator/paginator/paginator.component.js +1 -1
  214. package/development/{paginator-common-B7iba0wQ.js → paginator-common-CRchtcXc.js} +1 -1
  215. package/development/paginator.component-B8y5tVCL.js +265 -0
  216. package/development/paginator.js +3 -3
  217. package/development/paginator.pure.js +3 -3
  218. package/development/panel-mixin-DPybe45K.js +1 -1
  219. package/development/popover/popover.component.d.ts.map +1 -1
  220. package/development/popover/popover.component.js +1 -1
  221. package/development/popover.component-Ds4fNNsq.js +578 -0
  222. package/development/popover.js +1 -1
  223. package/development/popover.pure.js +1 -1
  224. package/development/radio-button/common/radio-button-common.js +1 -1
  225. package/development/radio-button/radio-button.component.js +1 -1
  226. package/development/radio-button-common-Ckz2nMS7.js +129 -0
  227. package/development/{radio-button.component-DnErH-1J.js → radio-button.component-qsLFvciH.js} +2 -2
  228. package/development/radio-button.js +2 -2
  229. package/development/radio-button.pure.js +2 -2
  230. package/development/select/select.component.d.ts.map +1 -1
  231. package/development/select/select.component.js +1 -1
  232. package/development/select.component-BE7ZMrAc.js +809 -0
  233. package/development/select.js +1 -1
  234. package/development/select.pure.js +1 -1
  235. package/development/selection-action-panel/selection-action-panel.component.js +1 -1
  236. package/development/{selection-action-panel.component-BT0HmTja.js → selection-action-panel.component-C3UlmLkJ.js} +1 -1
  237. package/development/selection-action-panel.js +1 -1
  238. package/development/selection-action-panel.pure.js +1 -1
  239. package/development/selection-expansion-panel/selection-expansion-panel.component.js +1 -1
  240. package/development/selection-expansion-panel.component-4Ron8XNy.js +186 -0
  241. package/development/selection-expansion-panel.js +1 -1
  242. package/development/selection-expansion-panel.pure.js +1 -1
  243. package/development/sidebar/common/styles.js +1 -1
  244. package/development/sidebar/sidebar/sidebar.component.js +1 -1
  245. package/development/sidebar/sidebar-close-button/sidebar-close-button.component.js +1 -1
  246. package/development/sidebar/sidebar-container/sidebar-container.component.js +1 -1
  247. package/development/sidebar/sidebar-content/sidebar-content.component.js +1 -1
  248. package/development/sidebar/sidebar-title/sidebar-title.component.js +1 -1
  249. package/development/{sidebar-close-button.component-CXnf-P5H.js → sidebar-close-button.component-ByQtC65O.js} +1 -1
  250. package/development/sidebar-container.component-BmavabUg.js +100 -0
  251. package/development/{sidebar-content.component-DbcREBUa.js → sidebar-content.component-DcsIIWpz.js} +1 -1
  252. package/development/{sidebar-title.component-BW04otyD.js → sidebar-title.component-DgJdkoiE.js} +1 -1
  253. package/development/{sidebar.component-mfXnE6WQ.js → sidebar.component-BszwyJQa.js} +1 -1
  254. package/development/sidebar.js +5 -5
  255. package/development/sidebar.pure.js +5 -5
  256. package/development/signet/signet.component.js +1 -1
  257. package/development/{signet.component-k14RJ8FA.js → signet.component-DXLTVjJS.js} +1 -1
  258. package/development/signet.js +1 -1
  259. package/development/signet.pure.js +1 -1
  260. package/development/skiplink-list/skiplink-list.component.js +1 -1
  261. package/development/skiplink-list.component-BC8rpyf9.js +129 -0
  262. package/development/skiplink-list.js +1 -1
  263. package/development/skiplink-list.pure.js +1 -1
  264. package/development/slider/slider.component.d.ts +1 -0
  265. package/development/slider/slider.component.d.ts.map +1 -1
  266. package/development/slider/slider.component.js +1 -1
  267. package/development/slider.component-Dz4Nl2ZL.js +333 -0
  268. package/development/slider.js +1 -1
  269. package/development/slider.pure.js +1 -1
  270. package/development/status/status.component.js +1 -1
  271. package/development/{status.component-B9en2l26.js → status.component-thSGiOrl.js} +1 -1
  272. package/development/status.js +1 -1
  273. package/development/status.pure.js +1 -1
  274. package/development/step-label.component-CpdXVv32.js +127 -0
  275. package/development/{step.component-B_YHm1tz.js → step.component-CfA-kmt1.js} +1 -11
  276. package/development/stepper/step/step.component.d.ts +4 -14
  277. package/development/stepper/step/step.component.d.ts.map +1 -1
  278. package/development/stepper/step/step.component.js +1 -1
  279. package/development/stepper/step-label/step-label.component.js +1 -1
  280. package/development/stepper/stepper/stepper.component.js +1 -1
  281. package/development/stepper.component-2yRFnnju.js +443 -0
  282. package/development/stepper.js +3 -3
  283. package/development/stepper.pure.js +3 -3
  284. package/development/{sticky-bar.component-BJLtRvcd.js → sticky-bar.component-DZpy1gBU.js} +2 -2
  285. package/development/{styles-WppEBrlW.js → styles-BmvNZZle.js} +1 -1
  286. package/development/styles-D8h0fqb5.js +30 -0
  287. package/development/{tab-group.component-CGMBihsQ.js → tab-group.component-DhcfjVxe.js} +1 -1
  288. package/development/{tab-label.component-CQOLO2t7.js → tab-label.component-B7YEhR1C.js} +1 -1
  289. package/development/tab-nav-bar.component-DrZ1U7lM.js +109 -0
  290. package/development/{tab.component-BVhYPy5Y.js → tab.component-COn1G0XA.js} +1 -1
  291. package/development/table/table-wrapper/table-wrapper.component.js +1 -1
  292. package/development/{table-wrapper.component-By59zmcU.js → table-wrapper.component-9Lst6dT2.js} +1 -1
  293. package/development/table.js +1 -1
  294. package/development/table.pure.js +1 -1
  295. package/development/tabs/common/styles.js +1 -1
  296. package/development/tabs/tab/tab.component.js +1 -1
  297. package/development/tabs/tab-group/tab-group.component.js +1 -1
  298. package/development/tabs/tab-label/tab-label.component.js +1 -1
  299. package/development/tabs/tab-nav-bar/tab-nav-bar.component.js +1 -1
  300. package/development/tabs.js +5 -5
  301. package/development/tabs.pure.js +5 -5
  302. package/development/tag/tag/tag.component.js +1 -1
  303. package/development/tag/tag-group/tag-group.component.js +1 -1
  304. package/development/tag-group.component-OQ3sxhZI.js +194 -0
  305. package/development/tag.component-DWOPDWwe.js +238 -0
  306. package/development/tag.js +2 -2
  307. package/development/tag.pure.js +2 -2
  308. package/development/teaser/teaser.component.js +1 -1
  309. package/development/teaser-hero/teaser-hero.component.js +1 -1
  310. package/development/{teaser-hero.component-BHMcPmdh.js → teaser-hero.component-Cp42iJGt.js} +1 -1
  311. package/development/teaser-hero.js +1 -1
  312. package/development/teaser-hero.pure.js +1 -1
  313. package/development/teaser-panel/teaser-panel.component.js +1 -1
  314. package/development/{teaser-panel.component-BRfbvmkb.js → teaser-panel.component-ptDalUEe.js} +1 -1
  315. package/development/teaser-panel.js +1 -1
  316. package/development/teaser-panel.pure.js +1 -1
  317. package/development/teaser-product/common/teaser-product-common.js +1 -1
  318. package/development/teaser-product/teaser-product/teaser-product.component.js +1 -1
  319. package/development/{teaser-product-common-DOyLdTks.js → teaser-product-common-DxBw-__I.js} +1 -1
  320. package/development/teaser-product.component-CPj4vJ2V.js +37 -0
  321. package/development/teaser-product.js +2 -2
  322. package/development/teaser-product.pure.js +2 -2
  323. package/development/teaser.component-Dgrc2jh8.js +116 -0
  324. package/development/teaser.js +1 -1
  325. package/development/teaser.pure.js +1 -1
  326. package/development/time-input/time-input.component.js +1 -1
  327. package/development/time-input.component-BFjDAfbv.js +187 -0
  328. package/development/time-input.js +1 -1
  329. package/development/time-input.pure.js +1 -1
  330. package/development/timetable-form/timetable-form/timetable-form.component.js +1 -1
  331. package/development/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
  332. package/development/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
  333. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +1 -1
  334. package/development/{timetable-form-details.component-BeuAZUQe.js → timetable-form-details.component-BFmuJ8-6.js} +1 -1
  335. package/development/{timetable-form-field.component-DC2z1Cwf.js → timetable-form-field.component-DD04XyA0.js} +1 -1
  336. package/development/{timetable-form-swap-button.component-CnbVc8Ok.js → timetable-form-swap-button.component-DphGegO6.js} +1 -1
  337. package/development/{timetable-form.component-C8DfPePn.js → timetable-form.component-EIr4B4mA.js} +1 -1
  338. package/development/timetable-form.js +4 -4
  339. package/development/timetable-form.pure.js +4 -4
  340. package/development/timetable-occupancy/timetable-occupancy.component.d.ts.map +1 -1
  341. package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
  342. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.js +1 -1
  343. package/development/timetable-occupancy-icon.component-vsXoAiKz.js +95 -0
  344. package/development/timetable-occupancy-icon.js +1 -1
  345. package/development/timetable-occupancy-icon.pure.js +1 -1
  346. package/development/timetable-occupancy.component-B0zY0RnI.js +126 -0
  347. package/development/timetable-occupancy.js +1 -1
  348. package/development/timetable-occupancy.pure.js +1 -1
  349. package/development/title/title-base.js +1 -1
  350. package/development/title/title.component.d.ts +0 -2
  351. package/development/title/title.component.d.ts.map +1 -1
  352. package/development/title/title.component.js +1 -1
  353. package/development/title-base-CPAVrsQ9.js +102 -0
  354. package/development/title.component-DCg9U2CK.js +69 -0
  355. package/development/title.js +2 -2
  356. package/development/title.pure.js +2 -2
  357. package/development/toast/toast.component.d.ts.map +1 -1
  358. package/development/toast/toast.component.js +1 -1
  359. package/development/{toast.component-DonS3uQm.js → toast.component-TvSfu5nl.js} +3 -3
  360. package/development/toast.js +1 -1
  361. package/development/toast.pure.js +1 -1
  362. package/development/toggle/toggle/toggle.component.js +1 -1
  363. package/development/toggle/toggle-option/toggle-option.component.js +1 -1
  364. package/development/toggle-check/toggle-check.component.js +1 -1
  365. package/development/{toggle-check.component-BIV7jFIc.js → toggle-check.component-CbGa5-8I.js} +1 -1
  366. package/development/toggle-check.js +1 -1
  367. package/development/toggle-check.pure.js +1 -1
  368. package/development/{toggle-option.component-DRxwLSKU.js → toggle-option.component-BxGnhJFH.js} +1 -1
  369. package/development/toggle.component-Q68IDQWX.js +243 -0
  370. package/development/toggle.js +2 -2
  371. package/development/toggle.pure.js +2 -2
  372. package/development/tooltip/tooltip.component.d.ts.map +1 -1
  373. package/development/tooltip/tooltip.component.js +1 -1
  374. package/development/tooltip.component-Baoh6M8V.js +369 -0
  375. package/development/tooltip.js +1 -1
  376. package/development/tooltip.pure.js +1 -1
  377. package/development/train/train/train.component.js +1 -1
  378. package/development/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  379. package/development/train/train-formation/train-formation.component.js +1 -1
  380. package/development/train/train-wagon-common.js +1 -1
  381. package/development/{train-blocked-passage.component-Cxd7dBDC.js → train-blocked-passage.component-C7ve-a1E.js} +1 -1
  382. package/development/{train-formation.component-BEg6OPib.js → train-formation.component-DQ_hLKNv.js} +2 -2
  383. package/development/train-wagon-common-CdckItEt.js +441 -0
  384. package/development/train.component-Bi74L6C7.js +239 -0
  385. package/development/train.js +4 -4
  386. package/development/train.pure.js +4 -4
  387. package/development/visual-checkbox/visual-checkbox.component.js +1 -1
  388. package/development/{visual-checkbox.component-Dm8DNhH2.js → visual-checkbox.component-B4_iHcsX.js} +1 -1
  389. package/development/visual-checkbox.js +1 -1
  390. package/development/visual-checkbox.pure.js +1 -1
  391. package/dialog/dialog/dialog.component.js +1 -1
  392. package/{dialog.component-CsBryhM-.js → dialog.component-D3G0AX4Y.js} +4 -4
  393. package/dialog.js +1 -1
  394. package/dialog.pure.js +1 -1
  395. package/file-selector/common/file-selector-common.js +1 -1
  396. package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  397. package/{file-selector-common-VNwWFEmM.js → file-selector-common-BNGnjK__.js} +1 -1
  398. package/{file-selector-dropzone.component-CGo6odhC.js → file-selector-dropzone.component-sE_fofSq.js} +1 -1
  399. package/file-selector.js +2 -2
  400. package/file-selector.pure.js +2 -2
  401. package/flip-card/flip-card/flip-card.component.js +1 -1
  402. package/{flip-card.component-CZ0v44Ym.js → flip-card.component-ZsA_kDPS.js} +22 -18
  403. package/flip-card.js +1 -1
  404. package/flip-card.pure.js +1 -1
  405. package/form-field/form-field/form-field.component.js +1 -1
  406. package/{form-field.component-BdfK6r2v.js → form-field.component-BoLly8qP.js} +4 -4
  407. package/form-field.js +1 -1
  408. package/form-field.pure.js +1 -1
  409. package/header/common/header-action-common.js +1 -1
  410. package/header-action-common-B-eRBjSz.js +64 -0
  411. package/header.js +1 -1
  412. package/header.pure.js +1 -1
  413. package/icon/icon.component.js +2 -5
  414. package/inline-link-common-O650N_pm.js +13 -0
  415. package/lean-off-brand-theme.css +416 -503
  416. package/lean-safety-theme.css +416 -503
  417. package/lean-theme.css +416 -503
  418. package/link/common/inline-link-common.js +1 -1
  419. package/link-list/link-list.component.js +1 -1
  420. package/link-list-anchor/link-list-anchor.component.js +1 -1
  421. package/{link-list-anchor.component-DG_HCtHH.js → link-list-anchor.component-Bjz_EKvE.js} +1 -1
  422. package/link-list-anchor.js +1 -1
  423. package/link-list-anchor.pure.js +1 -1
  424. package/{link-list.component-BNVd0a8U.js → link-list.component-Dg-7TBPC.js} +1 -1
  425. package/link-list.js +1 -1
  426. package/link-list.pure.js +1 -1
  427. package/link.js +1 -1
  428. package/link.pure.js +1 -1
  429. package/menu/common/menu-action-common.js +1 -1
  430. package/menu/menu/menu.component.js +1 -1
  431. package/{menu-action-common-Wy36tk18.js → menu-action-common-DakEXPg7.js} +1 -1
  432. package/{menu.component-DrrKSRmJ.js → menu.component-CqXsI5Cg.js} +25 -21
  433. package/menu.js +2 -2
  434. package/menu.pure.js +2 -2
  435. package/message/message.component.js +1 -1
  436. package/{message.component-CdfsCpnE.js → message.component-CORYX4KP.js} +1 -1
  437. package/message.js +1 -1
  438. package/message.pure.js +1 -1
  439. package/{mini-button-group.component-DQBU0BDm.js → mini-button-group.component-DWayyUpK.js} +1 -1
  440. package/navigation/navigation/navigation.component.js +1 -1
  441. package/navigation/navigation-list/navigation-list.component.js +1 -1
  442. package/navigation/navigation-marker/navigation-marker.component.js +1 -1
  443. package/{navigation-list.component-Cezo1tC-.js → navigation-list.component-C5y3ohH0.js} +1 -1
  444. package/{navigation-marker.component-CNsMaqpH.js → navigation-marker.component-VbvKu1TR.js} +1 -1
  445. package/{navigation.component-DLgmWh_c.js → navigation.component-DKJujMqj.js} +23 -19
  446. package/navigation.js +3 -3
  447. package/navigation.pure.js +3 -3
  448. package/off-brand-theme.css +416 -503
  449. package/{optgroup-base-element-Cxe8SIQh.js → optgroup-base-element-CBxsRPUF.js} +10 -17
  450. package/option/optgroup/optgroup-base-element.js +1 -1
  451. package/option/optgroup/optgroup.component.js +1 -1
  452. package/option/option/option.component.js +1 -1
  453. package/option/option-styles.js +2 -0
  454. package/option-styles-DcD5grSB.js +6 -0
  455. package/option.js +6 -5
  456. package/option.pure.js +5 -4
  457. package/overlay/overlay-base-element.js +24 -24
  458. package/overlay/overlay.component.js +1 -1
  459. package/{overlay.component-myJflfLY.js → overlay.component-OSLtja0_.js} +4 -4
  460. package/overlay.js +1 -1
  461. package/overlay.pure.js +1 -1
  462. package/package.json +5 -49
  463. package/paginator/common/paginator-common.js +1 -1
  464. package/paginator/compact-paginator/compact-paginator.component.js +1 -1
  465. package/paginator/paginator/paginator.component.js +1 -1
  466. package/paginator.component-Dk1xDHgW.js +212 -0
  467. package/paginator.js +3 -3
  468. package/paginator.pure.js +3 -3
  469. package/popover/popover.component.js +1 -1
  470. package/{popover.component-Dm_86bPY.js → popover.component-Bm-bx-Hs.js} +32 -32
  471. package/popover.js +1 -1
  472. package/popover.pure.js +1 -1
  473. package/radio-button/common/radio-button-common.js +1 -1
  474. package/radio-button/radio-button.component.js +1 -1
  475. package/{radio-button.component-CZ273yAb.js → radio-button.component-CGeTCfMq.js} +1 -1
  476. package/radio-button.js +2 -2
  477. package/radio-button.pure.js +2 -2
  478. package/safety-theme.css +416 -503
  479. package/select/select.component.js +1 -1
  480. package/{select.component-CLPLpFDz.js → select.component-UcWSndDu.js} +41 -39
  481. package/select.js +1 -1
  482. package/select.pure.js +1 -1
  483. package/selection-action-panel/selection-action-panel.component.js +1 -1
  484. package/selection-action-panel.js +1 -1
  485. package/selection-action-panel.pure.js +1 -1
  486. package/selection-expansion-panel/selection-expansion-panel.component.js +1 -1
  487. package/selection-expansion-panel.js +1 -1
  488. package/selection-expansion-panel.pure.js +1 -1
  489. package/sidebar/sidebar/sidebar.component.js +1 -1
  490. package/sidebar/sidebar-close-button/sidebar-close-button.component.js +1 -1
  491. package/sidebar/sidebar-container/sidebar-container.component.js +1 -1
  492. package/sidebar/sidebar-content/sidebar-content.component.js +1 -1
  493. package/sidebar/sidebar-title/sidebar-title.component.js +1 -1
  494. package/sidebar.js +5 -5
  495. package/sidebar.pure.js +5 -5
  496. package/signet/signet.component.js +1 -1
  497. package/signet.js +1 -1
  498. package/signet.pure.js +1 -1
  499. package/skiplink-list/skiplink-list.component.js +1 -1
  500. package/{skiplink-list.component-BXaqYpsI.js → skiplink-list.component-ClGb1J_H.js} +1 -1
  501. package/skiplink-list.js +1 -1
  502. package/skiplink-list.pure.js +1 -1
  503. package/slider/slider.component.js +1 -1
  504. package/{slider.component-BlUWAWJU.js → slider.component-BMkoF1l1.js} +23 -31
  505. package/slider.js +1 -1
  506. package/slider.pure.js +1 -1
  507. package/standard-theme.css +416 -503
  508. package/status/status.component.js +1 -1
  509. package/status.js +1 -1
  510. package/status.pure.js +1 -1
  511. package/stepper/step/step.component.js +1 -1
  512. package/stepper/step-label/step-label.component.js +1 -1
  513. package/stepper/stepper/stepper.component.js +1 -1
  514. package/stepper.js +3 -3
  515. package/stepper.pure.js +3 -3
  516. package/{sticky-bar.component-dmlGAZLW.js → sticky-bar.component-DtXeRUqi.js} +1 -1
  517. package/styles-DV41ClRb.js +5 -0
  518. package/{tab-nav-bar.component-FT2W0urU.js → tab-nav-bar.component-CRC6xnaX.js} +1 -1
  519. package/table/table-wrapper/table-wrapper.component.js +1 -1
  520. package/table.js +1 -1
  521. package/table.pure.js +1 -1
  522. package/tabs/common/styles.js +1 -1
  523. package/tabs/tab/tab.component.js +1 -1
  524. package/tabs/tab-group/tab-group.component.js +1 -1
  525. package/tabs/tab-label/tab-label.component.js +1 -1
  526. package/tabs/tab-nav-bar/tab-nav-bar.component.js +1 -1
  527. package/tabs.js +5 -5
  528. package/tabs.pure.js +5 -5
  529. package/tag/tag/tag.component.js +1 -1
  530. package/tag/tag-group/tag-group.component.js +1 -1
  531. package/{tag-group.component-9UfHHJ79.js → tag-group.component-wnzXwLPf.js} +1 -1
  532. package/tag.js +2 -2
  533. package/tag.pure.js +2 -2
  534. package/teaser/teaser.component.js +1 -1
  535. package/teaser-hero/teaser-hero.component.js +1 -1
  536. package/teaser-hero.js +1 -1
  537. package/teaser-hero.pure.js +1 -1
  538. package/teaser-panel/teaser-panel.component.js +1 -1
  539. package/teaser-panel.js +1 -1
  540. package/teaser-panel.pure.js +1 -1
  541. package/teaser-product/common/teaser-product-common.js +1 -1
  542. package/teaser-product/teaser-product/teaser-product.component.js +1 -1
  543. package/teaser-product.js +2 -2
  544. package/teaser-product.pure.js +2 -2
  545. package/teaser.js +1 -1
  546. package/teaser.pure.js +1 -1
  547. package/time-input/time-input.component.js +1 -1
  548. package/time-input.js +1 -1
  549. package/time-input.pure.js +1 -1
  550. package/timetable-form/timetable-form/timetable-form.component.js +1 -1
  551. package/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
  552. package/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
  553. package/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +1 -1
  554. package/timetable-form.js +4 -4
  555. package/timetable-form.pure.js +4 -4
  556. package/timetable-occupancy/timetable-occupancy.component.js +1 -1
  557. package/timetable-occupancy-icon/timetable-occupancy-icon.component.js +1 -1
  558. package/timetable-occupancy-icon.js +1 -1
  559. package/timetable-occupancy-icon.pure.js +1 -1
  560. package/{timetable-occupancy.component-DGQ20zH1.js → timetable-occupancy.component-CIkq1cT7.js} +17 -13
  561. package/timetable-occupancy.js +1 -1
  562. package/timetable-occupancy.pure.js +1 -1
  563. package/title/title-base.js +1 -1
  564. package/title/title.component.js +1 -1
  565. package/{title-base-JBhKD3ur.js → title-base-B1xzk7Zb.js} +1 -1
  566. package/{title.component-VnTeqomb.js → title.component-DTnG8op9.js} +2 -2
  567. package/title.js +2 -2
  568. package/title.pure.js +2 -2
  569. package/toast/toast.component.js +1 -1
  570. package/{toast.component-BMN90Ouu.js → toast.component-Ew5vuGXf.js} +19 -19
  571. package/toast.js +1 -1
  572. package/toast.pure.js +1 -1
  573. package/toggle/toggle/toggle.component.js +1 -1
  574. package/toggle/toggle-option/toggle-option.component.js +1 -1
  575. package/toggle-check/toggle-check.component.js +1 -1
  576. package/toggle-check.js +1 -1
  577. package/toggle-check.pure.js +1 -1
  578. package/toggle.js +2 -2
  579. package/toggle.pure.js +2 -2
  580. package/tooltip/tooltip.component.js +1 -1
  581. package/{tooltip.component-NfyDxfw7.js → tooltip.component-ihyNBI7f.js} +25 -25
  582. package/tooltip.js +1 -1
  583. package/tooltip.pure.js +1 -1
  584. package/train/train/train.component.js +1 -1
  585. package/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  586. package/train/train-formation/train-formation.component.js +1 -1
  587. package/train/train-wagon-common.js +1 -1
  588. package/{train-formation.component-DVxNBPIB.js → train-formation.component-CYqdWnkL.js} +1 -1
  589. package/{train-wagon-common-CDCsWVgi.js → train-wagon-common-C1Py1D01.js} +1 -1
  590. package/{train.component-DxadS7O8.js → train.component-DRLUjuXY.js} +1 -1
  591. package/train.js +4 -4
  592. package/train.pure.js +4 -4
  593. package/visual-checkbox/visual-checkbox.component.js +1 -1
  594. package/visual-checkbox.js +1 -1
  595. package/visual-checkbox.pure.js +1 -1
  596. package/a11y.css +0 -20
  597. package/animation.css +0 -14
  598. package/badge.css +0 -32
  599. package/core/decorators/host-attributes.js +0 -17
  600. package/core/eventing/throttle.js +0 -11
  601. package/core/styles/badge.scss +0 -3
  602. package/core/styles/mixins/badge.scss +0 -42
  603. package/core/styles/mixins/buttons.scss +0 -12
  604. package/core/styles/mixins/card.scss +0 -205
  605. package/core/styles/mixins/dev_and_debug.scss +0 -8
  606. package/core/styles/mixins/image.scss +0 -43
  607. package/core/styles/mixins/inputs.scss +0 -11
  608. package/core/styles/mixins/link.scss +0 -125
  609. package/core/styles/mixins/panel.scss +0 -80
  610. package/core/styles/mixins/popover.scss +0 -14
  611. package/core/styles/mixins/table.scss +0 -185
  612. package/core/styles/mixins/timetable-form.scss +0 -63
  613. package/core/styles/option-panel-common.global.scss +0 -11
  614. package/core/styles/option-panel-common.scss +0 -157
  615. package/core/styles/theme.scss +0 -20
  616. package/core/styles/timetable-form.scss +0 -27
  617. package/core/styles/typography.private.scss +0 -9
  618. package/core.css +0 -2713
  619. package/development/autocomplete-base-element-qnPoRLvM.js +0 -695
  620. package/development/breadcrumb-group.component-BUBfl6LV.js +0 -193
  621. package/development/calendar.component-CG96KGTg.js +0 -1469
  622. package/development/core/decorators/host-attributes.d.ts +0 -22
  623. package/development/core/decorators/host-attributes.d.ts.map +0 -1
  624. package/development/core/decorators/host-attributes.js +0 -41
  625. package/development/core/eventing/throttle.d.ts +0 -3
  626. package/development/core/eventing/throttle.d.ts.map +0 -1
  627. package/development/core/eventing/throttle.js +0 -18
  628. package/development/file-selector-common-mZ5UYxOF.js +0 -421
  629. package/development/flip-card.component-DujrPKzU.js +0 -185
  630. package/development/form-field.component-CPWBCHer.js +0 -702
  631. package/development/header-action-common-Be0XQge2.js +0 -86
  632. package/development/inline-link-common-gmt6yz3v.js +0 -18
  633. package/development/link-list.component-B90qHOUD.js +0 -97
  634. package/development/menu-action-common-DRXQc85Y.js +0 -32
  635. package/development/menu.component-Cv9wRj4H.js +0 -365
  636. package/development/navigation-list.component-Dvv-bZ2V.js +0 -86
  637. package/development/navigation-marker.component-DMqe-VlY.js +0 -120
  638. package/development/navigation.component-CqNkBvEs.js +0 -315
  639. package/development/optgroup-base-element-CLfE6pmz.js +0 -147
  640. package/development/option.component-CV6cZnJe.js +0 -131
  641. package/development/paginator.component-BwLUSpDj.js +0 -261
  642. package/development/popover.component-CKUZbWbV.js +0 -578
  643. package/development/radio-button-common-G0jLFo41.js +0 -129
  644. package/development/select.component-CUjF11sq.js +0 -807
  645. package/development/selection-expansion-panel.component-BT78Qhbf.js +0 -186
  646. package/development/sidebar-container.component-CxwDKxv9.js +0 -100
  647. package/development/skiplink-list.component-m7xm-pns.js +0 -129
  648. package/development/slider.component-D_nLTlRF.js +0 -346
  649. package/development/step-label.component-Bo7Z0w7N.js +0 -127
  650. package/development/stepper.component-BeqeUIRN.js +0 -443
  651. package/development/styles-Cctez2BS.js +0 -22
  652. package/development/tab-nav-bar.component-B_mi8GGR.js +0 -109
  653. package/development/tag-group.component-Db8prSBL.js +0 -194
  654. package/development/tag.component-DG1uxD28.js +0 -238
  655. package/development/teaser-product.component-DMyuB-cH.js +0 -37
  656. package/development/teaser.component-CF_NUbwJ.js +0 -116
  657. package/development/time-input.component-XxzRoupm.js +0 -187
  658. package/development/timetable-occupancy-icon.component-UBmyZsTO.js +0 -95
  659. package/development/timetable-occupancy.component-DMm242Fr.js +0 -122
  660. package/development/title-base-D_Rjyk_j.js +0 -102
  661. package/development/title.component-CMxYhTfw.js +0 -71
  662. package/development/toggle.component-B03k5qc1.js +0 -243
  663. package/development/tooltip.component-D8zik3p4.js +0 -369
  664. package/development/train-wagon-common-Dg-BjUtC.js +0 -441
  665. package/development/train.component-dECIGw2x.js +0 -239
  666. package/header-action-common-DuPx0U2o.js +0 -64
  667. package/inline-link-common-BqqH1ExY.js +0 -13
  668. package/layout.css +0 -30
  669. package/lists.css +0 -194
  670. package/normalize.css +0 -95
  671. package/paginator.component-DB8l-B6J.js +0 -208
  672. package/scrollbar.css +0 -124
  673. package/styles-DAMaYe4p.js +0 -5
  674. package/table.css +0 -261
  675. package/timetable-form.css +0 -73
  676. package/typography.css +0 -67
  677. /package/{compact-paginator.component-BAuShgQE.js → compact-paginator.component-B-8gf_qD.js} +0 -0
  678. /package/core/styles/{disable-animation.scss → disable-animation-extension.scss} +0 -0
  679. /package/core/styles/{node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables-as-css.scss → features/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables-as-css.scss} +0 -0
  680. /package/core/styles/{node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss → features/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss} +0 -0
  681. /package/core/styles/{normalize.scss → features/normalize.scss} +0 -0
  682. /package/core/styles/{scrollbar.private.scss → features/scrollbar.private.scss} +0 -0
  683. /package/core/styles/mixins/{animation.scss → _animation.scss} +0 -0
  684. /package/core/styles/mixins/{font-face.scss → _font-face.scss} +0 -0
  685. /package/core/styles/mixins/{layout.scss → _layout.scss} +0 -0
  686. /package/core/styles/mixins/{scrollbar.scss → _scrollbar.scss} +0 -0
  687. /package/{disable-animation.css → disable-animation-extension.css} +0 -0
  688. /package/{option.component-BeorlZT0.js → option.component-DiH8AMlV.js} +0 -0
  689. /package/{paginator-common-BWewgXga.js → paginator-common-C0Kn9ibe.js} +0 -0
  690. /package/{radio-button-common-CrIRn10q.js → radio-button-common-BDNSqXg-.js} +0 -0
  691. /package/{selection-action-panel.component-DCGJQ3Mx.js → selection-action-panel.component-Ba7N1Hgt.js} +0 -0
  692. /package/{selection-expansion-panel.component-Cu1egfTY.js → selection-expansion-panel.component-BL1FPfPM.js} +0 -0
  693. /package/{sidebar-close-button.component-8owwjvk3.js → sidebar-close-button.component-CLjOpBM2.js} +0 -0
  694. /package/{sidebar-container.component-Dcke-Uhr.js → sidebar-container.component-8filIF5E.js} +0 -0
  695. /package/{sidebar-content.component-CYupfsq_.js → sidebar-content.component-DMdjHDdq.js} +0 -0
  696. /package/{sidebar-title.component-Cf64lCJx.js → sidebar-title.component-DaIkBNY9.js} +0 -0
  697. /package/{sidebar.component-LaqQzMo2.js → sidebar.component-D_HLDNnq.js} +0 -0
  698. /package/{signet.component-3Xfke8uk.js → signet.component-6q3GxORI.js} +0 -0
  699. /package/{status.component-mel7wA1j.js → status.component-DMfZTgzz.js} +0 -0
  700. /package/{step-label.component-BGSaHafq.js → step-label.component-CjNZYk5b.js} +0 -0
  701. /package/{step.component-tJh-Pb_E.js → step.component-BCkwsZdk.js} +0 -0
  702. /package/{stepper.component-BCl77LVa.js → stepper.component-mq66fR06.js} +0 -0
  703. /package/{styles-DisU4TWi.js → styles-DWm_OYpV.js} +0 -0
  704. /package/{tab-group.component-CDhggNpe.js → tab-group.component-MEm2W7QR.js} +0 -0
  705. /package/{tab-label.component-BuF2qt1T.js → tab-label.component-BqznCfW8.js} +0 -0
  706. /package/{tab.component-D6hfhlZw.js → tab.component-DPwbvqp4.js} +0 -0
  707. /package/{table-wrapper.component-C83EYuZP.js → table-wrapper.component-LzYuAVPb.js} +0 -0
  708. /package/{tag.component-BKuxfdDi.js → tag.component-zGPaopTo.js} +0 -0
  709. /package/{teaser-hero.component-mv6HL4vm.js → teaser-hero.component-BlhffYux.js} +0 -0
  710. /package/{teaser-panel.component-qRmy2lbz.js → teaser-panel.component-BCbKgXVt.js} +0 -0
  711. /package/{teaser-product-common-J1KZ2Hlw.js → teaser-product-common-C_lgMbyC.js} +0 -0
  712. /package/{teaser-product.component-BcleFVcu.js → teaser-product.component-CQIXu7sq.js} +0 -0
  713. /package/{teaser.component-BOqCERR7.js → teaser.component-D9z78Eny.js} +0 -0
  714. /package/{time-input.component-Dw8pPYDK.js → time-input.component-CLHEoWze.js} +0 -0
  715. /package/{timetable-form-details.component-0c6h6shd.js → timetable-form-details.component-DJ3oPkQP.js} +0 -0
  716. /package/{timetable-form-field.component-Cya8n2Ms.js → timetable-form-field.component-6s8_sz9h.js} +0 -0
  717. /package/{timetable-form-swap-button.component-rI_0UYJw.js → timetable-form-swap-button.component-BY2m2_k9.js} +0 -0
  718. /package/{timetable-form.component-DVps6baq.js → timetable-form.component-Swe8BX7g.js} +0 -0
  719. /package/{timetable-occupancy-icon.component-ABh1bz-X.js → timetable-occupancy-icon.component-C44eSFOM.js} +0 -0
  720. /package/{toggle-check.component-BcQ5ht0O.js → toggle-check.component-Ce-klZJB.js} +0 -0
  721. /package/{toggle-option.component-DQcPDXyl.js → toggle-option.component-BdMfGuA-.js} +0 -0
  722. /package/{toggle.component-DARkqJol.js → toggle.component-ySmrXvjA.js} +0 -0
  723. /package/{train-blocked-passage.component-B601YYJl.js → train-blocked-passage.component-UnNCmspZ.js} +0 -0
  724. /package/{visual-checkbox.component-YhX5Qk3j.js → visual-checkbox.component-JmGORoDU.js} +0 -0
@@ -317,4 +317,4 @@ var SbbExpansionPanelElement = (() => {
317
317
  //#endregion
318
318
  export { SbbExpansionPanelElement as t };
319
319
 
320
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC1EY0ZyV2tJdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbi8vIE9wZW4vQ2xvc2UgYW5pbWF0aW9uIHZhcnNcbiRvcGVuLWFuaW0tcm93cy1mcm9tOiAwZnI7XG4kb3Blbi1hbmltLXJvd3MtdG86IDFmcjtcbiRvcGVuLWFuaW0tb3BhY2l0eS1mcm9tOiAwO1xuJG9wZW4tYW5pbS1vcGFjaXR5LXRvOiAxO1xuXG46aG9zdCB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1hbmltYXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTR4KVxuICApO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWNvbG9yOiB2YXIoLS1zYmItYm9yZGVyLWNvbG9yLTQtaW52ZXJ0ZWQpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXdpZHRoOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KTtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItY29sb3IpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWJsb2NrLXN0YXJ0LXdpZHRoOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci13aWR0aCk7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1lbmQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtc3RhcnQtc3RhcnQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtZW5kLWVuZC1yYWRpdXM6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXJhZGl1cyk7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1lbmQtc3RhcnQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJhY2tncm91bmQtY29sb3IpO1xuICBib3JkZXI6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1jb2xvcik7XG4gIGJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtY29sb3IpO1xuICBib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWJsb2NrLXN0YXJ0LXdpZHRoKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1zdGFydC1yYWRpdXMpXG4gICAgdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1lbmQtcmFkaXVzKSB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWVuZC1lbmQtcmFkaXVzKVxuICAgIHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtZW5kLXN0YXJ0LXJhZGl1cyk7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLXRpdGxlLWdhcDogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC10aXRsZS1nYXAtcyk7XG59XG5cbjpob3N0KFtzaXplPSdsJ10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLXRpdGxlLWdhcDogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC10aXRsZS1nYXAtbCk7XG59XG5cbjpob3N0KDpub3QoW3NpemVdKSkge1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtdGl0bGUtZ2FwOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLXRpdGxlLWdhcC1kZWZhdWx0KTtcbn1cblxuOmhvc3QoW2Rpc2FibGVkXSkge1xuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1jb2xvcjogR3JheVRleHQ7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogR3JheVRleHQ7XG4gIH1cbn1cblxuOmhvc3QoW2V4cGFuZGVkXSkge1xuICAtLV9zYmItZXhwYW5zaW9uLXBhbmVsLWRpc3BsYXktZXhwYW5kZWQ6IGdyaWQ7XG59XG5cbjpob3N0KDpzdGF0ZShhY2NvcmRpb24pOnN0YXRlKGFjY29yZGlvbi1maXJzdCkpIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLXN0YXJ0LWVuZC1yYWRpdXM6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXJhZGl1cyk7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1zdGFydC1yYWRpdXM6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXJhZGl1cyk7XG59XG5cbjpob3N0KDpzdGF0ZShhY2NvcmRpb24pOm5vdCg6c3RhdGUoYWNjb3JkaW9uLWZpcnN0KSkpIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogMDtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1lbmQtcmFkaXVzOiAwO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtc3RhcnQtc3RhcnQtcmFkaXVzOiAwO1xufVxuXG46aG9zdCg6c3RhdGUoYWNjb3JkaW9uKTpzdGF0ZShhY2NvcmRpb24tbGFzdCkpIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWVuZC1lbmQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtZW5kLXN0YXJ0LXJhZGl1czogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItcmFkaXVzKTtcbn1cblxuOmhvc3QoOnN0YXRlKGFjY29yZGlvbik6bm90KDpzdGF0ZShhY2NvcmRpb24tbGFzdCkpKSB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1lbmQtZW5kLXJhZGl1czogMDtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWVuZC1zdGFydC1yYWRpdXM6IDA7XG59XG5cbjpob3N0KFtjb2xvcj0nd2hpdGUnXSkge1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMSk7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zKTtcbn1cblxuOmhvc3QoW2NvbG9yPSdtaWxrJ10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMSk7XG59XG5cbjpob3N0KFtib3JkZXJsZXNzXSkge1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXdpZHRoOiAwO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogMDtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItd2lkdGg6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMXgpO1xuICAgIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXdpZHRoKTtcbiAgfVxufVxuXG46aG9zdChbYm9yZGVybGVzc106c3RhdGUoYWNjb3JkaW9uKTpub3QoOnN0YXRlKGFjY29yZGlvbi1maXJzdCkpKSB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTF4KTtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogMDtcbiAgfVxufVxuXG46aG9zdCg6bm90KFtkaXNhYmxlZF0pOnN0YXRlKHRvZ2dsZS1ob3ZlcikpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyKTtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1jb2xvcjogSGlnaGxpZ2h0O1xuICAgIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IEhpZ2hsaWdodDtcbiAgfVxufVxuXG4uc2JiLWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4uc2JiLWV4cGFuc2lvbi1wYW5lbF9fY29udGVudC13cmFwcGVyIHtcbiAgZGlzcGxheTogdmFyKC0tX3NiYi1leHBhbnNpb24tcGFuZWwtZGlzcGxheS1leHBhbmRlZCwgbm9uZSk7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogI3skb3Blbi1hbmltLXJvd3MtZnJvbX07XG4gIG9wYWNpdHk6ICN7JG9wZW4tYW5pbS1vcGFjaXR5LWZyb219O1xuXG4gIDpob3N0KDpzdGF0ZShzdGF0ZS1vcGVuZWQpKSAmIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLXRvfTtcbiAgICBvcGFjaXR5OiAjeyRvcGVuLWFuaW0tb3BhY2l0eS10b307XG4gIH1cblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtb3BlbmluZykpICYge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBvcGVuLCBvcGVuLW9wYWNpdHk7XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpO1xuICAgIGFuaW1hdGlvbi1kZWxheTogMHMsIHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgfVxuXG4gIDpob3N0KDpzdGF0ZShzdGF0ZS1jbG9zaW5nKSkgJiB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgYW5pbWF0aW9uLW5hbWU6IGNsb3NlO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1hbmltYXRpb24tZWFzaW5nKTtcbiAgfVxufVxuXG4uc2JiLWV4cGFuc2lvbi1wYW5lbF9fY29udGVudCB7XG4gIC8vIEVuYWJsZXMgb3ZlcmZsb3cgZm9yIGNvbnRlbnRcbiAgbWluLWhlaWdodDogMDtcbiAgbWluLXdpZHRoOiAwO1xufVxuXG5Aa2V5ZnJhbWVzIG9wZW4ge1xuICBmcm9tIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLWZyb219O1xuICB9XG5cbiAgdG8ge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogI3skb3Blbi1hbmltLXJvd3MtdG99O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgb3Blbi1vcGFjaXR5IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktZnJvbX07XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktdG99O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgY2xvc2Uge1xuICBmcm9tIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLXRvfTtcbiAgICBvcGFjaXR5OiAjeyRvcGVuLWFuaW0tb3BhY2l0eS10b307XG4gIH1cblxuICB0byB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAjeyRvcGVuLWFuaW0tcm93cy1mcm9tfTtcbiAgICBvcGFjaXR5OiAjeyRvcGVuLWFuaW0tb3BhY2l0eS1mcm9tfTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgaHRtbCwgbm90aGluZywgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQge1xuICBmb3JjZVR5cGUsXG4gIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uLFxuICBTYmJFbGVtZW50LFxuICB0eXBlIFNiYkhlYWRpbmdMZXZlbCxcbiAgdHlwZSBTYmJPcGVuZWRDbG9zZWRTdGF0ZSxcbiAgybVzdGF0ZUNvbnRyb2xsZXIsXG59IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJFeHBhbnNpb25QYW5lbENvbnRlbnRFbGVtZW50IH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQvZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRXhwYW5zaW9uUGFuZWxIZWFkZXJFbGVtZW50IH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsLWhlYWRlci9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2V4cGFuc2lvbi1wYW5lbC5zY3NzP2lubGluZSc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGFuIGV4cGFuZGFibGUgc3VtbWFyeS1kZXRhaWxzIHdpZGdldC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBhIGBzYmItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcmAgYW5kIGEgYHNiYi1leHBhbnNpb24tcGFuZWwtY29udGVudGAgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkV4cGFuc2lvblBhbmVsRWxlbWVudCBleHRlbmRzIFNiYkVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLWV4cGFuc2lvbi1wYW5lbCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFt1bnNhZmVDU1Moc3R5bGUpXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgYmVmb3Jlb3BlbjogJ2JlZm9yZW9wZW4nLFxuICAgIG9wZW46ICdvcGVuJyxcbiAgICBiZWZvcmVjbG9zZTogJ2JlZm9yZWNsb3NlJyxcbiAgICBjbG9zZTogJ2Nsb3NlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogSGVhZGluZyBsZXZlbDsgaWYgdW5zZXQsIGEgYGRpdmAgd2lsbCBiZSByZW5kZXJlZC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAndGl0bGUtbGV2ZWwnIH0pIHB1YmxpYyBhY2Nlc3NvciB0aXRsZUxldmVsOiBTYmJIZWFkaW5nTGV2ZWwgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHBhbmVsLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBjb2xvcjogJ3doaXRlJyB8ICdtaWxrJyA9ICd3aGl0ZSc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBhbmVsIGlzIGV4cGFuZGVkLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBzZXQgZXhwYW5kZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9leHBhbmRlZCA9IHZhbHVlO1xuICAgIHRoaXMuX29uRXhwYW5kZWRDaGFuZ2UoKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9leHBhbmRlZDtcbiAgfVxuICBwcml2YXRlIF9leHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBwYW5lbCBpcyBkaXNhYmxlZCwgc28gaXRzIGV4cGFuZGVkIHN0YXRlIGNhbid0IGJlIGNoYW5nZWQuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy5fdXBkYXRlRGlzYWJsZWRPbkhlYWRlcih0aGlzLl9kaXNhYmxlZCk7XG4gIH1cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgcGFuZWwgaGFzIG5vIGJvcmRlci4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGJvcmRlcmxlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgcyAobGVhbiB0aGVtZSBkZWZhdWx0KSBvciBsIChzdGFuZGFyZCB0aGVtZSBkZWZhdWx0KS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdsJyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUaGUgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHJpdmF0ZSBzZXQgX3N0YXRlKHN0YXRlOiBTYmJPcGVuZWRDbG9zZWRTdGF0ZSkge1xuICAgIGlmICh0aGlzLl9zdGF0ZUludGVybmFsKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBzdGF0ZS0ke3RoaXMuX3N0YXRlSW50ZXJuYWx9YCk7XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlSW50ZXJuYWwgPSBzdGF0ZTtcbiAgICBpZiAodGhpcy5fc3RhdGVJbnRlcm5hbCkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZChgc3RhdGUtJHt0aGlzLl9zdGF0ZUludGVybmFsfWApO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGdldCBfc3RhdGUoKTogU2JiT3BlbmVkQ2xvc2VkU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZUludGVybmFsO1xuICB9XG4gIHByaXZhdGUgX3N0YXRlSW50ZXJuYWwhOiBTYmJPcGVuZWRDbG9zZWRTdGF0ZTtcblxuICBwcml2YXRlIF9wcm9ncmVzc2l2ZUlkID0gYC0keysrbmV4dElkfWA7XG4gIHByaXZhdGUgX2hlYWRlclJlZj86IFNiYkV4cGFuc2lvblBhbmVsSGVhZGVyRWxlbWVudDtcbiAgcHJpdmF0ZSBfY29udGVudFJlZj86IFNiYkV4cGFuc2lvblBhbmVsQ29udGVudEVsZW1lbnQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCd0b2dnbGVleHBhbmRlZCcsIChldjogRXZlbnQpID0+IHtcbiAgICAgIGlmIChldi50YXJnZXQgPT09IHRoaXMuX2hlYWRlclJlZikge1xuICAgICAgICB0aGlzLl90b2dnbGVFeHBhbmRlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnYWNjb3JkaW9uJywgISF0aGlzLmNsb3Nlc3Q/Lignc2JiLWFjY29yZGlvbicpKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoJ2FjY29yZGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdG9nZ2xlRXhwYW5kZWQoKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25FeHBhbmRlZENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkZXJSZWY/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIFN0cmluZyh0aGlzLmV4cGFuZGVkKSk7XG4gICAgdGhpcy5fY29udGVudFJlZj8uc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIFN0cmluZyghdGhpcy5leHBhbmRlZCkpO1xuXG4gICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuX29wZW4oKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3N0YXRlID09PSAnb3BlbmVkJykge1xuICAgICAgdGhpcy5fY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gJ29wZW5pbmcnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JlZm9yZW9wZW4nKSk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAoIXRoaXMuaGFzVXBkYXRlZCB8fCB0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWV4cGFuc2lvbi1wYW5lbGAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmVmb3JlY2xvc2UnKSk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItZXhwYW5zaW9uLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIGlzIG9wZW5lZC4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdvcGVuJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIGlzIGNsb3NlZC4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjbG9zZScpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZURpc2FibGVkT25IZWFkZXIobmV3RGlzYWJsZWRWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9oZWFkZXJSZWYpIHtcbiAgICAgIHRoaXMuX2hlYWRlclJlZi5kaXNhYmxlZCA9IG5ld0Rpc2FibGVkVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20odGhpcy5jaGlsZHJlbiA/PyBbXSk7XG4gICAgY29uc3QgaGVhZGVyID0gY2hpbGRyZW4uZmluZChcbiAgICAgIChlKTogZSBpcyBTYmJFeHBhbnNpb25QYW5lbEhlYWRlckVsZW1lbnQgPT4gZS5sb2NhbE5hbWUgPT09ICdzYmItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcicsXG4gICAgKTtcbiAgICBjb25zdCBjb250ZW50ID0gY2hpbGRyZW4uZmluZChcbiAgICAgIChlKTogZSBpcyBTYmJFeHBhbnNpb25QYW5lbENvbnRlbnRFbGVtZW50ID0+IGUubG9jYWxOYW1lID09PSAnc2JiLWV4cGFuc2lvbi1wYW5lbC1jb250ZW50JyxcbiAgICApO1xuICAgIGlmICh0aGlzLl9oZWFkZXJSZWYgPT09IGhlYWRlciAmJiB0aGlzLl9jb250ZW50UmVmID09PSBjb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChoZWFkZXIgJiYgdGhpcy5faGVhZGVyUmVmICE9PSBoZWFkZXIpIHtcbiAgICAgIGhlYWRlci5pZCB8fD0gYHNiYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyJHt0aGlzLl9wcm9ncmVzc2l2ZUlkfWA7XG4gICAgICBoZWFkZXIuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgU3RyaW5nKHRoaXMuZXhwYW5kZWQpKTtcbiAgICAgIGhlYWRlci50b2dnbGVBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgdGhpcy5kaXNhYmxlZCk7XG4gICAgfVxuICAgIGlmIChjb250ZW50ICYmIHRoaXMuX2NvbnRlbnRSZWYgIT09IGNvbnRlbnQpIHtcbiAgICAgIGNvbnRlbnQuaWQgfHw9IGBzYmItZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQke3RoaXMuX3Byb2dyZXNzaXZlSWR9YDtcbiAgICAgIGNvbnRlbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIFN0cmluZyghdGhpcy5leHBhbmRlZCkpO1xuICAgIH1cblxuICAgIHRoaXMuX2hlYWRlclJlZiA9IGhlYWRlcjtcbiAgICB0aGlzLl9jb250ZW50UmVmID0gY29udGVudDtcbiAgICBpZiAodGhpcy5faGVhZGVyUmVmICYmIHRoaXMuX2NvbnRlbnRSZWYpIHtcbiAgICAgIHRoaXMuX2hlYWRlclJlZi5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCB0aGlzLl9jb250ZW50UmVmLmlkKTtcbiAgICAgIHRoaXMuX2NvbnRlbnRSZWYuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCB0aGlzLl9oZWFkZXJSZWYuaWQpO1xuICAgICAgybVzdGF0ZUNvbnRyb2xsZXIodGhpcy5fY29udGVudFJlZikudG9nZ2xlKFxuICAgICAgICAnaWNvbi1zcGFjZScsXG4gICAgICAgIMm1c3RhdGVDb250cm9sbGVyKHRoaXMuX2hlYWRlclJlZikuaGFzKCdpY29uJyksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3Blbi1vcGFjaXR5JyAmJiB0aGlzLl9zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuX3N0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXZcbiAgICAgICAgcm9sZT0ke3RoaXMudGl0bGVMZXZlbCA/ICdoZWFkaW5nJyA6IG5vdGhpbmd9XG4gICAgICAgIGFyaWEtbGV2ZWw9JHt0aGlzLnRpdGxlTGV2ZWwgfHwgbm90aGluZ31cbiAgICAgICAgY2xhc3M9XCJzYmItZXhwYW5zaW9uLXBhbmVsX19oZWFkZXJcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1leHBhbnNpb24tcGFuZWxfX2NvbnRlbnQtd3JhcHBlclwiIEBhbmltYXRpb25lbmQ9JHt0aGlzLl9vbkFuaW1hdGlvbkVuZH0+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWV4cGFuc2lvbi1wYW5lbF9fY29udGVudFwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJjb250ZW50XCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1leHBhbnNpb24tcGFuZWwnOiBTYmJFeHBhbnNpb25QYW5lbEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUNnQkEsSUFBSSxTQUFTOzs7Ozs7SUFPQSxrQ0FBd0I7bUJBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FBakMsaUNBQWlDLFlBQVU7Ozs2QkFXckQsU0FBUyxFQUFFLFdBQVcsY0FBYSxDQUFFLENBQUM7d0JBR3RDLFNBQVMsRUFBRSxTQUFTLEtBQUksQ0FBRSxDQUFDOytCQUczQixTQUFTO0lBQUUsU0FBUztJQUFNLE1BQU07R0FBTyxDQUFFLENBQUM7K0JBVzFDLFNBQVM7SUFBRSxTQUFTO0lBQU0sTUFBTTtHQUFPLENBQUUsQ0FBQzs2QkFXMUMsVUFBUyxHQUNULFNBQVM7SUFBRSxTQUFTO0lBQU0sTUFBTTtHQUFPLENBQUUsQ0FBQzt1QkFNMUMsU0FBUyxFQUFFLFNBQVMsS0FBSSxDQUFFLENBQUM7R0FuQ1ksYUFBQSxNQUFBLE1BQUEsd0JBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxnQkFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFVLE1BQUEsS0FBQSxVQUFBO01BQUEsSUFBVixhQUFVO0tBQUE7SUFBQTtJQUFBLFVBQUE7R0FBQSxHQUFBLDBCQUFBLDZCQUFBO0dBR3JDLGFBQUEsTUFBQSxNQUFBLG1CQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsV0FBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFLLE1BQUEsS0FBQSxVQUFBO01BQUEsSUFBTCxRQUFLO0tBQUE7SUFBQTtJQUFBLFVBQUE7R0FBQSxHQUFBLHFCQUFBLHdCQUFBO0dBSWxELGFBQUEsTUFBQSxNQUFBLDBCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsY0FBQTtLQUFBLE1BQUEsS0FBQSxVQUFBO01BQUEsSUFBVyxXQUFRO0tBQUE7SUFBQTtJQUFBLFVBQUE7R0FBQSxHQUFBLE1BQUEsMEJBQUE7R0FXbkIsYUFBQSxNQUFBLE1BQUEsMEJBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxjQUFBO0tBQUEsTUFBQSxLQUFBLFVBQUE7TUFBQSxJQUFXLFdBQVE7S0FBQTtJQUFBO0lBQUEsVUFBQTtHQUFBLEdBQUEsTUFBQSwwQkFBQTtHQVluQixhQUFBLE1BQUEsTUFBQSx3QkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGdCQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQVUsTUFBQSxLQUFBLFVBQUE7TUFBQSxJQUFWLGFBQVU7S0FBQTtJQUFBO0lBQUEsVUFBQTtHQUFBLEdBQUEsMEJBQUEsNkJBQUE7R0FLRyxhQUFBLE1BQUEsTUFBQSxrQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLFVBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBSSxNQUFBLEtBQUEsVUFBQTtNQUFBLElBQUosT0FBSTtLQUFBO0lBQUE7SUFBQSxVQUFBO0dBQUEsR0FBQSxvQkFBQSx1QkFBQTs7Ozs7Ozs7O0dBN0NqQixLQUFBLGNBQXNCO0VBQXNCOztHQUNyRCxLQUFBLFNBQXlCLENBQUMsVUFBVSx1QkFBSyxDQUFDO0VBQUU7O0dBQzVDLEtBQUEsU0FBUztJQUM5QixZQUFZO0lBQ1osTUFBTTtJQUNOLGFBQWE7SUFDYixPQUFPOztFQUNFO0VBRzZCOztFQUFBLElBQWdCLGFBQVU7R0FBQSxPQUFBLEtBQUE7RUFBQTtFQUExQixJQUFnQixXQUFVLE9BQUE7R0FBQSxLQUFBLCtCQUFBO0VBQUE7RUFHckM7O0VBQUEsSUFBZ0IsUUFBSztHQUFBLE9BQUEsS0FBQTtFQUFBO0VBQXJCLElBQWdCLE1BQUssT0FBQTtHQUFBLEtBQUEsMEJBQUE7RUFBQTs7RUFJbEQsSUFBVyxTQUFTLE9BQWM7R0FDaEMsS0FBSyxZQUFZO0dBQ2pCLEtBQUssa0JBQWlCO0VBQ3hCO0VBQ0EsSUFBVyxXQUFRO0dBQ2pCLE9BQU8sS0FBSztFQUNkOztFQUtBLElBQVcsU0FBUyxPQUFjO0dBQ2hDLEtBQUssWUFBWTtHQUNqQixLQUFLLHdCQUF3QixLQUFLLFNBQVM7RUFDN0M7RUFDQSxJQUFXLFdBQVE7R0FDakIsT0FBTyxLQUFLO0VBQ2Q7RUFNQTs7RUFBQSxJQUFnQixhQUFVO0dBQUEsT0FBQSxLQUFBO0VBQUE7RUFBMUIsSUFBZ0IsV0FBVSxPQUFBO0dBQUEsS0FBQSwrQkFBQTtFQUFBO0VBS0c7Ozs7RUFBQSxJQUFnQixPQUFJO0dBQUEsT0FBQSxLQUFBO0VBQUE7RUFBcEIsSUFBZ0IsS0FBSSxPQUFBO0dBQUEsS0FBQSx5QkFBQTtFQUFBOztFQUdqRCxJQUFZLE9BQU8sT0FBMkI7R0FDNUMsSUFBSSxLQUFLLGdCQUNQLEtBQUssVUFBVSxPQUFPLE9BQU8sU0FBUyxLQUFLLGdCQUFnQjtHQUU3RCxLQUFLLGlCQUFpQjtHQUN0QixJQUFJLEtBQUssZ0JBQ1AsS0FBSyxVQUFVLE9BQU8sSUFBSSxTQUFTLEtBQUssZ0JBQWdCO0VBRTVEO0VBQ0EsSUFBWSxTQUFNO0dBQ2hCLE9BQU8sS0FBSztFQUNkO0VBT0EsY0FBQTtHQUNFLE1BQUs7R0F6RGlELEtBQUEsZ0NBWDdDLGtCQUFBLE1BQUEsMEJBQUEsR0FBd0Isa0JBQUEsTUFBQSwwQkFXMEQsSUFBSTtHQUdwRCxLQUFBLDJCQUFBLGtCQUFBLE1BQUEsNkJBQUEsR0FBQSxrQkFBQSxNQUFBLHFCQUEwQixPQUFPO0dBV3RFLEtBQUEsYUFBUyxrQkFBQSxNQUFBLHdCQUFBLEdBQVk7R0FXckIsS0FBQSxZQUFxQjtHQUtiLEtBQUEsK0JBQUEsa0JBQUEsTUFBQSwwQkFBc0IsS0FBSztHQUtFLEtBQUEsMEJBQUEsa0JBQUEsTUFBQSw2QkFBQSxHQUFBLGtCQUFBLE1BQUEsb0JBQXlCLElBQUk7R0FlbEUsS0FBQSxpQkFBYyxrQkFBQSxNQUFBLHVCQUFBO0dBRWQsS0FBQSxpQkFBaUIsSUFBSSxFQUFFO0dBTzdCLEtBQUssU0FBUztHQUNkLEtBQUssbUJBQW1CLG1CQUFtQixPQUFhO0lBQ3RELElBQUksR0FBRyxXQUFXLEtBQUssWUFDckIsS0FBSyxnQkFBZTtHQUV4QixDQUFDO0VBQ0g7RUFFZ0Isb0JBQWlCO0dBQy9CLE1BQU0sa0JBQWlCO0dBQ3ZCLEtBQUssWUFBWSxhQUFhLENBQUMsQ0FBQyxLQUFLLFVBQVUsZUFBZSxDQUFDO0VBQ2pFO0VBRWdCLHVCQUFvQjtHQUNsQyxNQUFNLHFCQUFvQjtHQUMxQixLQUFLLFVBQVUsT0FBTyxPQUFPLFdBQVc7RUFDMUM7RUFFUSxrQkFBZTtHQUNyQixLQUFLLFdBQVcsQ0FBQyxLQUFLO0VBQ3hCO0VBRVEsb0JBQWlCO0dBQ3ZCLEtBQUssWUFBWSxhQUFhLGlCQUFpQixPQUFPLEtBQUssUUFBUSxDQUFDO0dBQ3BFLEtBQUssYUFBYSxhQUFhLGVBQWUsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDO0dBRXBFLElBQUksS0FBSyxVQUNQLEtBQUssTUFBSztRQUNMLElBQUksS0FBSyxXQUFXLFVBQ3pCLEtBQUssT0FBTTtFQUVmO0VBRVEsUUFBSztHQUNYLEtBQUssU0FBUzs7R0FFZCxLQUFLLGNBQWMsSUFBSSxNQUFNLFlBQVksQ0FBQztHQUkxQyxJQUFJLENBQUMsS0FBSyxjQUFjLEtBQUsseUJBQXdCLEdBQ25ELEtBQUssZUFBYztFQUV2QjtFQUVRLFNBQU07R0FDWixLQUFLLFNBQVM7O0dBRWQsS0FBSyxjQUFjLElBQUksTUFBTSxhQUFhLENBQUM7R0FJM0MsSUFBSSxLQUFLLHlCQUF3QixHQUMvQixLQUFLLGVBQWM7RUFFdkI7RUFFUSwyQkFBd0I7R0FDOUIsT0FBTyx3QkFBd0IsTUFBTSwwQ0FBMEM7RUFDakY7RUFFUSxpQkFBYztHQUNwQixLQUFLLFNBQVM7O0dBRWQsS0FBSyxjQUFjLElBQUksTUFBTSxNQUFNLENBQUM7RUFDdEM7RUFFUSxpQkFBYztHQUNwQixLQUFLLFNBQVM7O0dBRWQsS0FBSyxjQUFjLElBQUksTUFBTSxPQUFPLENBQUM7RUFDdkM7RUFFUSx3QkFBd0Isa0JBQXlCO0dBQ3ZELElBQUksS0FBSyxZQUNQLEtBQUssV0FBVyxXQUFXO0VBRS9CO0VBRVEsb0JBQWlCO0dBQ3ZCLE1BQU0sV0FBVyxNQUFNLEtBQUssS0FBSyxZQUFZLENBQUEsQ0FBRTtHQUMvQyxNQUFNLFNBQVMsU0FBUyxNQUNyQixNQUEyQyxFQUFFLGNBQWMsNEJBQTRCO0dBRTFGLE1BQU0sVUFBVSxTQUFTLE1BQ3RCLE1BQTRDLEVBQUUsY0FBYyw2QkFBNkI7R0FFNUYsSUFBSSxLQUFLLGVBQWUsVUFBVSxLQUFLLGdCQUFnQixTQUNyRDtHQUVGLElBQUksVUFBVSxLQUFLLGVBQWUsUUFBUTtJQUN4QyxPQUFPLE9BQU8sNkJBQTZCLEtBQUs7SUFDaEQsT0FBTyxhQUFhLGlCQUFpQixPQUFPLEtBQUssUUFBUSxDQUFDO0lBQzFELE9BQU8sZ0JBQWdCLFlBQVksS0FBSyxRQUFRO0dBQ2xEO0dBQ0EsSUFBSSxXQUFXLEtBQUssZ0JBQWdCLFNBQVM7SUFDM0MsUUFBUSxPQUFPLDhCQUE4QixLQUFLO0lBQ2xELFFBQVEsYUFBYSxlQUFlLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQztHQUM1RDtHQUVBLEtBQUssYUFBYTtHQUNsQixLQUFLLGNBQWM7R0FDbkIsSUFBSSxLQUFLLGNBQWMsS0FBSyxhQUFhO0lBQ3ZDLEtBQUssV0FBVyxhQUFhLGlCQUFpQixLQUFLLFlBQVksRUFBRTtJQUNqRSxLQUFLLFlBQVksYUFBYSxtQkFBbUIsS0FBSyxXQUFXLEVBQUU7SUFDbkUsaUJBQWlCLEtBQUssV0FBVyxFQUFFLE9BQ2pDLGNBQ0EsaUJBQWlCLEtBQUssVUFBVSxFQUFFLElBQUksTUFBTSxDQUFDO0dBRWpEO0VBQ0Y7RUFFUSxnQkFBZ0IsT0FBcUI7R0FDM0MsSUFBSSxNQUFNLGtCQUFrQixrQkFBa0IsS0FBSyxXQUFXLFdBQzVELEtBQUssZUFBYztRQUNkLElBQUksTUFBTSxrQkFBa0IsV0FBVyxLQUFLLFdBQVcsV0FDNUQsS0FBSyxlQUFjO0VBRXZCO0VBRW1CLFNBQU07R0FDdkIsT0FBTyxJQUFJOztlQUVBLEtBQUssYUFBYSxZQUFZLFFBQUE7cUJBQ3hCLEtBQUssY0FBYyxRQUFBOzs7MENBR0UsS0FBSyxrQkFBaUI7Ozt3RUFHUSxLQUFLLGdCQUFlOzs2Q0FFL0MsS0FBSyxrQkFBaUI7Ozs7RUFJakUifQ==
320
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC1EY0ZyV2tJdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbi8vIE9wZW4vQ2xvc2UgYW5pbWF0aW9uIHZhcnNcbiRvcGVuLWFuaW0tcm93cy1mcm9tOiAwZnI7XG4kb3Blbi1hbmltLXJvd3MtdG86IDFmcjtcbiRvcGVuLWFuaW0tb3BhY2l0eS1mcm9tOiAwO1xuJG9wZW4tYW5pbS1vcGFjaXR5LXRvOiAxO1xuXG46aG9zdCB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1hbmltYXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTR4KVxuICApO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWNvbG9yOiB2YXIoLS1zYmItYm9yZGVyLWNvbG9yLTQtaW52ZXJ0ZWQpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXdpZHRoOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KTtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItY29sb3IpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWJsb2NrLXN0YXJ0LXdpZHRoOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci13aWR0aCk7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1lbmQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtc3RhcnQtc3RhcnQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtZW5kLWVuZC1yYWRpdXM6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXJhZGl1cyk7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1lbmQtc3RhcnQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJhY2tncm91bmQtY29sb3IpO1xuICBib3JkZXI6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1jb2xvcik7XG4gIGJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtY29sb3IpO1xuICBib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWJsb2NrLXN0YXJ0LXdpZHRoKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1zdGFydC1yYWRpdXMpXG4gICAgdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1lbmQtcmFkaXVzKSB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWVuZC1lbmQtcmFkaXVzKVxuICAgIHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtZW5kLXN0YXJ0LXJhZGl1cyk7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLXRpdGxlLWdhcDogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC10aXRsZS1nYXAtcyk7XG59XG5cbjpob3N0KFtzaXplPSdsJ10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLXRpdGxlLWdhcDogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC10aXRsZS1nYXAtbCk7XG59XG5cbjpob3N0KDpub3QoW3NpemVdKSkge1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtdGl0bGUtZ2FwOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLXRpdGxlLWdhcC1kZWZhdWx0KTtcbn1cblxuOmhvc3QoW2Rpc2FibGVkXSkge1xuICBAbWVkaWEgKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSkge1xuICAgIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItY29sb3I6IEdyYXlUZXh0O1xuICAgIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IEdyYXlUZXh0O1xuICB9XG59XG5cbjpob3N0KFtleHBhbmRlZF0pIHtcbiAgLS1fc2JiLWV4cGFuc2lvbi1wYW5lbC1kaXNwbGF5LWV4cGFuZGVkOiBncmlkO1xufVxuXG46aG9zdCg6c3RhdGUoYWNjb3JkaW9uKTpzdGF0ZShhY2NvcmRpb24tZmlyc3QpKSB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1zdGFydC1lbmQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtc3RhcnQtc3RhcnQtcmFkaXVzOiB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1yYWRpdXMpO1xufVxuXG46aG9zdCg6c3RhdGUoYWNjb3JkaW9uKTpub3QoOnN0YXRlKGFjY29yZGlvbi1maXJzdCkpKSB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IDA7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtc3RhcnQtZW5kLXJhZGl1czogMDtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLXN0YXJ0LXN0YXJ0LXJhZGl1czogMDtcbn1cblxuOmhvc3QoOnN0YXRlKGFjY29yZGlvbik6c3RhdGUoYWNjb3JkaW9uLWxhc3QpKSB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1lbmQtZW5kLXJhZGl1czogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItcmFkaXVzKTtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWVuZC1zdGFydC1yYWRpdXM6IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLXJhZGl1cyk7XG59XG5cbjpob3N0KDpzdGF0ZShhY2NvcmRpb24pOm5vdCg6c3RhdGUoYWNjb3JkaW9uLWxhc3QpKSkge1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtZW5kLWVuZC1yYWRpdXM6IDA7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1lbmQtc3RhcnQtcmFkaXVzOiAwO1xufVxuXG46aG9zdChbY29sb3I9J3doaXRlJ10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTEpO1xuICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMyk7XG59XG5cbjpob3N0KFtjb2xvcj0nbWlsayddKSB7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zKTtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJhY2tncm91bmQtY29sb3ItaG92ZXI6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTEpO1xufVxuXG46aG9zdChbYm9yZGVybGVzc10pIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci13aWR0aDogMDtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IDA7XG4gIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gIEBtZWRpYSAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSB7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci13aWR0aDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCk7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItd2lkdGgpO1xuICB9XG59XG5cbjpob3N0KFtib3JkZXJsZXNzXTpzdGF0ZShhY2NvcmRpb24pOm5vdCg6c3RhdGUoYWNjb3JkaW9uLWZpcnN0KSkpIHtcbiAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMXgpO1xuXG4gIEBtZWRpYSAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSB7XG4gICAgLS1zYmItZXhwYW5zaW9uLXBhbmVsLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogMDtcbiAgfVxufVxuXG46aG9zdCg6bm90KFtkaXNhYmxlZF0pOnN0YXRlKHRvZ2dsZS1ob3ZlcikpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyKTtcblxuICBAbWVkaWEgKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSkge1xuICAgIC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1ib3JkZXItY29sb3I6IEhpZ2hsaWdodDtcbiAgICAtLXNiYi1leHBhbnNpb24tcGFuZWwtYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yOiBIaWdobGlnaHQ7XG4gIH1cbn1cblxuLnNiYi1leHBhbnNpb24tcGFuZWxfX2hlYWRlciB7XG4gIG1hcmdpbjogMDtcbn1cblxuLnNiYi1leHBhbnNpb24tcGFuZWxfX2NvbnRlbnQtd3JhcHBlciB7XG4gIGRpc3BsYXk6IHZhcigtLV9zYmItZXhwYW5zaW9uLXBhbmVsLWRpc3BsYXktZXhwYW5kZWQsIG5vbmUpO1xuICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLWZyb219O1xuICBvcGFjaXR5OiAjeyRvcGVuLWFuaW0tb3BhY2l0eS1mcm9tfTtcblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtb3BlbmVkKSkgJiB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAjeyRvcGVuLWFuaW0tcm93cy10b307XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktdG99O1xuICB9XG5cbiAgOmhvc3QoOnN0YXRlKHN0YXRlLW9wZW5pbmcpKSAmIHtcbiAgICBhbmltYXRpb24tbmFtZTogb3Blbiwgb3Blbi1vcGFjaXR5O1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tc2JiLWV4cGFuc2lvbi1wYW5lbC1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1hbmltYXRpb24tZWFzaW5nKTtcbiAgICBhbmltYXRpb24tZGVsYXk6IDBzLCB2YXIoLS1zYmItZXhwYW5zaW9uLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gIH1cblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtY2xvc2luZykpICYge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIGFuaW1hdGlvbi1uYW1lOiBjbG9zZTtcbiAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXNiYi1leHBhbnNpb24tcGFuZWwtYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG4gIH1cbn1cblxuLnNiYi1leHBhbnNpb24tcGFuZWxfX2NvbnRlbnQge1xuICAvLyBFbmFibGVzIG92ZXJmbG93IGZvciBjb250ZW50XG4gIG1pbi1oZWlnaHQ6IDA7XG4gIG1pbi13aWR0aDogMDtcbn1cblxuQGtleWZyYW1lcyBvcGVuIHtcbiAgZnJvbSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAjeyRvcGVuLWFuaW0tcm93cy1mcm9tfTtcbiAgfVxuXG4gIHRvIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICN7JG9wZW4tYW5pbS1yb3dzLXRvfTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIG9wZW4tb3BhY2l0eSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6ICN7JG9wZW4tYW5pbS1vcGFjaXR5LWZyb219O1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6ICN7JG9wZW4tYW5pbS1vcGFjaXR5LXRvfTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGNsb3NlIHtcbiAgZnJvbSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAjeyRvcGVuLWFuaW0tcm93cy10b307XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktdG99O1xuICB9XG5cbiAgdG8ge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogI3skb3Blbi1hbmltLXJvd3MtZnJvbX07XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktZnJvbX07XG4gIH1cbn1cbiIsImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGh0bWwsIG5vdGhpbmcsIHR5cGUgVGVtcGxhdGVSZXN1bHQsIHVuc2FmZUNTUyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBpc1plcm9BbmltYXRpb25EdXJhdGlvbixcbiAgU2JiRWxlbWVudCxcbiAgdHlwZSBTYmJIZWFkaW5nTGV2ZWwsXG4gIHR5cGUgU2JiT3BlbmVkQ2xvc2VkU3RhdGUsXG4gIMm1c3RhdGVDb250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRXhwYW5zaW9uUGFuZWxDb250ZW50RWxlbWVudCB9IGZyb20gJy4uL2V4cGFuc2lvbi1wYW5lbC1jb250ZW50L2V4cGFuc2lvbi1wYW5lbC1jb250ZW50LmNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkV4cGFuc2lvblBhbmVsSGVhZGVyRWxlbWVudCB9IGZyb20gJy4uL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIvZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9leHBhbnNpb24tcGFuZWwuc2Nzcz9pbmxpbmUnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBleHBhbmRhYmxlIHN1bW1hcnktZGV0YWlscyB3aWRnZXQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYSBgc2JiLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJgIGFuZCBhIGBzYmItZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRgIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJFeHBhbnNpb25QYW5lbEVsZW1lbnQgZXh0ZW5kcyBTYmJFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1leHBhbnNpb24tcGFuZWwnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbdW5zYWZlQ1NTKHN0eWxlKV07XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGJlZm9yZW9wZW46ICdiZWZvcmVvcGVuJyxcbiAgICBvcGVuOiAnb3BlbicsXG4gICAgYmVmb3JlY2xvc2U6ICdiZWZvcmVjbG9zZScsXG4gICAgY2xvc2U6ICdjbG9zZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIEhlYWRpbmcgbGV2ZWw7IGlmIHVuc2V0LCBhIGBkaXZgIHdpbGwgYmUgcmVuZGVyZWQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3RpdGxlLWxldmVsJyB9KSBwdWJsaWMgYWNjZXNzb3IgdGl0bGVMZXZlbDogU2JiSGVhZGluZ0xldmVsIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBwYW5lbC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3IgY29sb3I6ICd3aGl0ZScgfCAnbWlsaycgPSAnd2hpdGUnO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBwYW5lbCBpcyBleHBhbmRlZC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZXhwYW5kZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl9vbkV4cGFuZGVkQ2hhbmdlKCk7XG4gIH1cbiAgcHVibGljIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWQ7XG4gIH1cbiAgcHJpdmF0ZSBfZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgcGFuZWwgaXMgZGlzYWJsZWQsIHNvIGl0cyBleHBhbmRlZCBzdGF0ZSBjYW4ndCBiZSBjaGFuZ2VkLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuX3VwZGF0ZURpc2FibGVkT25IZWFkZXIodGhpcy5fZGlzYWJsZWQpO1xuICB9XG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBhbmVsIGhhcyBubyBib3JkZXIuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBib3JkZXJsZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNpemUgdmFyaWFudCwgZWl0aGVyIHMgKGxlYW4gdGhlbWUgZGVmYXVsdCkgb3IgbCAoc3RhbmRhcmQgdGhlbWUgZGVmYXVsdCkuXG4gICAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBzaXplOiAncycgfCAnbCcgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuICovXG4gIHByaXZhdGUgc2V0IF9zdGF0ZShzdGF0ZTogU2JiT3BlbmVkQ2xvc2VkU3RhdGUpIHtcbiAgICBpZiAodGhpcy5fc3RhdGVJbnRlcm5hbCkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShgc3RhdGUtJHt0aGlzLl9zdGF0ZUludGVybmFsfWApO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0ZUludGVybmFsID0gc3RhdGU7XG4gICAgaWYgKHRoaXMuX3N0YXRlSW50ZXJuYWwpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYHN0YXRlLSR7dGhpcy5fc3RhdGVJbnRlcm5hbH1gKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBnZXQgX3N0YXRlKCk6IFNiYk9wZW5lZENsb3NlZFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGVJbnRlcm5hbDtcbiAgfVxuICBwcml2YXRlIF9zdGF0ZUludGVybmFsITogU2JiT3BlbmVkQ2xvc2VkU3RhdGU7XG5cbiAgcHJpdmF0ZSBfcHJvZ3Jlc3NpdmVJZCA9IGAtJHsrK25leHRJZH1gO1xuICBwcml2YXRlIF9oZWFkZXJSZWY/OiBTYmJFeHBhbnNpb25QYW5lbEhlYWRlckVsZW1lbnQ7XG4gIHByaXZhdGUgX2NvbnRlbnRSZWY/OiBTYmJFeHBhbnNpb25QYW5lbENvbnRlbnRFbGVtZW50O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5fc3RhdGUgPSAnY2xvc2VkJztcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LigndG9nZ2xlZXhwYW5kZWQnLCAoZXY6IEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXYudGFyZ2V0ID09PSB0aGlzLl9oZWFkZXJSZWYpIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlRXhwYW5kZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2FjY29yZGlvbicsICEhdGhpcy5jbG9zZXN0Py4oJ3NiYi1hY2NvcmRpb24nKSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKCdhY2NvcmRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RvZ2dsZUV4cGFuZGVkKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcbiAgfVxuXG4gIHByaXZhdGUgX29uRXhwYW5kZWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5faGVhZGVyUmVmPy5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBTdHJpbmcodGhpcy5leHBhbmRlZCkpO1xuICAgIHRoaXMuX2NvbnRlbnRSZWY/LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCBTdHJpbmcoIXRoaXMuZXhwYW5kZWQpKTtcblxuICAgIGlmICh0aGlzLmV4cGFuZGVkKSB7XG4gICAgICB0aGlzLl9vcGVuKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9zdGF0ZSA9PT0gJ29wZW5lZCcpIHtcbiAgICAgIHRoaXMuX2Nsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZXhwYW5zaW9uLXBhbmVsYCBzdGFydHMgdGhlIG9wZW5pbmcgdHJhbnNpdGlvbi4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdiZWZvcmVvcGVuJykpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKCF0aGlzLmhhc1VwZGF0ZWQgfHwgdGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Nsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gJ2Nsb3NpbmcnO1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1leHBhbnNpb24tcGFuZWxgIGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JlZm9yZWNsb3NlJykpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLWV4cGFuc2lvbi1wYW5lbC1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAnb3BlbmVkJztcbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZXhwYW5zaW9uLXBhbmVsYCBpcyBvcGVuZWQuICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnb3BlbicpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAnY2xvc2VkJztcbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZXhwYW5zaW9uLXBhbmVsYCBpcyBjbG9zZWQuICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2xvc2UnKSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVEaXNhYmxlZE9uSGVhZGVyKG5ld0Rpc2FibGVkVmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faGVhZGVyUmVmKSB7XG4gICAgICB0aGlzLl9oZWFkZXJSZWYuZGlzYWJsZWQgPSBuZXdEaXNhYmxlZFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVNsb3RjaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4gPz8gW10pO1xuICAgIGNvbnN0IGhlYWRlciA9IGNoaWxkcmVuLmZpbmQoXG4gICAgICAoZSk6IGUgaXMgU2JiRXhwYW5zaW9uUGFuZWxIZWFkZXJFbGVtZW50ID0+IGUubG9jYWxOYW1lID09PSAnc2JiLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXInLFxuICAgICk7XG4gICAgY29uc3QgY29udGVudCA9IGNoaWxkcmVuLmZpbmQoXG4gICAgICAoZSk6IGUgaXMgU2JiRXhwYW5zaW9uUGFuZWxDb250ZW50RWxlbWVudCA9PiBlLmxvY2FsTmFtZSA9PT0gJ3NiYi1leHBhbnNpb24tcGFuZWwtY29udGVudCcsXG4gICAgKTtcbiAgICBpZiAodGhpcy5faGVhZGVyUmVmID09PSBoZWFkZXIgJiYgdGhpcy5fY29udGVudFJlZiA9PT0gY29udGVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaGVhZGVyICYmIHRoaXMuX2hlYWRlclJlZiAhPT0gaGVhZGVyKSB7XG4gICAgICBoZWFkZXIuaWQgfHw9IGBzYmItZXhwYW5zaW9uLXBhbmVsLWhlYWRlciR7dGhpcy5fcHJvZ3Jlc3NpdmVJZH1gO1xuICAgICAgaGVhZGVyLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIFN0cmluZyh0aGlzLmV4cGFuZGVkKSk7XG4gICAgICBoZWFkZXIudG9nZ2xlQXR0cmlidXRlKCdkaXNhYmxlZCcsIHRoaXMuZGlzYWJsZWQpO1xuICAgIH1cbiAgICBpZiAoY29udGVudCAmJiB0aGlzLl9jb250ZW50UmVmICE9PSBjb250ZW50KSB7XG4gICAgICBjb250ZW50LmlkIHx8PSBgc2JiLWV4cGFuc2lvbi1wYW5lbC1jb250ZW50JHt0aGlzLl9wcm9ncmVzc2l2ZUlkfWA7XG4gICAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCBTdHJpbmcoIXRoaXMuZXhwYW5kZWQpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9oZWFkZXJSZWYgPSBoZWFkZXI7XG4gICAgdGhpcy5fY29udGVudFJlZiA9IGNvbnRlbnQ7XG4gICAgaWYgKHRoaXMuX2hlYWRlclJlZiAmJiB0aGlzLl9jb250ZW50UmVmKSB7XG4gICAgICB0aGlzLl9oZWFkZXJSZWYuc2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJywgdGhpcy5fY29udGVudFJlZi5pZCk7XG4gICAgICB0aGlzLl9jb250ZW50UmVmLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JywgdGhpcy5faGVhZGVyUmVmLmlkKTtcbiAgICAgIMm1c3RhdGVDb250cm9sbGVyKHRoaXMuX2NvbnRlbnRSZWYpLnRvZ2dsZShcbiAgICAgICAgJ2ljb24tc3BhY2UnLFxuICAgICAgICDJtXN0YXRlQ29udHJvbGxlcih0aGlzLl9oZWFkZXJSZWYpLmhhcygnaWNvbicpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4tb3BhY2l0eScgJiYgdGhpcy5fc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLl9zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2XG4gICAgICAgIHJvbGU9JHt0aGlzLnRpdGxlTGV2ZWwgPyAnaGVhZGluZycgOiBub3RoaW5nfVxuICAgICAgICBhcmlhLWxldmVsPSR7dGhpcy50aXRsZUxldmVsIHx8IG5vdGhpbmd9XG4gICAgICAgIGNsYXNzPVwic2JiLWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlclwiIEBzbG90Y2hhbmdlPSR7dGhpcy5faGFuZGxlU2xvdGNoYW5nZX0+PC9zbG90PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZXhwYW5zaW9uLXBhbmVsX19jb250ZW50LXdyYXBwZXJcIiBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25BbmltYXRpb25FbmR9PlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1leHBhbnNpb24tcGFuZWxfX2NvbnRlbnRcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiY29udGVudFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5faGFuZGxlU2xvdGNoYW5nZX0+PC9zbG90PlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZXhwYW5zaW9uLXBhbmVsJzogU2JiRXhwYW5zaW9uUGFuZWxFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FDZ0JBLElBQUksU0FBUzs7Ozs7O0lBT0Esa0NBQXdCO21CQUFTOzs7Ozs7Ozs7Ozs7Ozs7O2NBQWpDLGlDQUFpQyxZQUFVOzs7NkJBV3JELFNBQVMsRUFB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
@@ -1,2 +1,2 @@
1
- import { n as SbbFileSelectorCommonElementMixin, t as SbbFileChangeEvent } from "../../file-selector-common-mZ5UYxOF.js";
1
+ import { n as SbbFileSelectorCommonElementMixin, t as SbbFileChangeEvent } from "../../file-selector-common-Dd0S0qE3.js";
2
2
  export { SbbFileChangeEvent, SbbFileSelectorCommonElementMixin };
@@ -1,2 +1,2 @@
1
- import { t as SbbFileSelectorDropzoneElement } from "../../file-selector-dropzone.component-B84OL4Xd.js";
1
+ import { t as SbbFileSelectorDropzoneElement } from "../../file-selector-dropzone.component-DWLdqMmI.js";
2
2
  export { SbbFileSelectorDropzoneElement };
@@ -0,0 +1,421 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { nothing, unsafeCSS } from "lit";
3
+ import { property } from "lit/decorators.js";
4
+ import { SbbDisabledMixin, SbbFormAssociatedMixin, SbbLanguageController, forceType, forwardEvent, i18nFileSelectorButtonLabel, i18nFileSelectorButtonLabelMultiple, i18nFileSelectorCurrentlySelected, i18nFileSelectorDeleteFile, sbbInputModalityDetector, screenReaderOnlyStyles, ɵstateController } from "./core.js";
5
+ import { html as html$1, unsafeStatic } from "lit/static-html.js";
6
+ import { SbbSecondaryButtonElement } from "./button.pure.js";
7
+ import { ref } from "lit/directives/ref.js";
8
+ //#region src/elements/file-selector/common/file-selector-common.scss?inline
9
+ var file_selector_common_default = ":host {\n --sbb-file-selector-transition-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-2x)\n );\n display: block;\n width: 20rem;\n}\n\n@media (forced-colors: active) {\n :host(:disabled) {\n --sbb-file-selector-color: GrayText;\n --sbb-file-selector-subtitle-color: GrayText;\n --sbb-file-selector-border-color: GrayText;\n }\n}\n\n:host(:is(:state(active),[state--active])) {\n --sbb-file-selector-background-color: var(--sbb-background-color-3);\n --sbb-file-selector-border-color: var(--sbb-color-storm);\n --sbb-file-selector-border-color: light-dark(var(--sbb-color-storm), var(--sbb-color-anthracite));\n}\n@media (forced-colors: active) {\n :host(:is(:state(active),[state--active])) {\n --sbb-file-selector-border-color: Highlight;\n }\n}\n\n.sbb-file-selector__input-container {\n -webkit-tap-highlight-color: transparent;\n display: flex;\n flex-direction: column;\n}\n\n.sbb-file-selector__file-list {\n display: flex;\n flex-direction: column;\n row-gap: var(--sbb-spacing-fixed-3x);\n margin-block: 0;\n padding-inline: 0;\n padding-block: var(--sbb-spacing-fixed-6x) var(--sbb-spacing-fixed-1x);\n}\n\n.sbb-file-selector__file {\n display: flex;\n gap: var(--sbb-spacing-fixed-4x);\n align-items: center;\n justify-content: space-between;\n line-height: var(--sbb-typo-line-height-text);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n font-size: var(--sbb-text-font-size-s);\n}\n\n.sbb-file-selector__file-details {\n display: flex;\n flex: 1;\n justify-content: space-between;\n gap: var(--sbb-spacing-fixed-4x);\n overflow: auto;\n}\n\n.sbb-file-selector__file-name {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.sbb-file-selector__file-size {\n white-space: nowrap;\n color: var(--sbb-color-metal);\n color: light-dark(var(--sbb-color-metal), var(--sbb-color-smoke));\n}\n\n:host(:not(:is(:state(slotted-error),[state--slotted-error]))) .sbb-file-selector__error {\n display: none;\n}";
10
+ //#endregion
11
+ //#region src/elements/file-selector/common/file-selector-common.ts
12
+ var SbbFileChangeEvent = class extends Event {
13
+ get files() {
14
+ return this._files;
15
+ }
16
+ constructor(files) {
17
+ super("filechanged", {
18
+ bubbles: true,
19
+ composed: true
20
+ });
21
+ this._files = Object.freeze(files || []);
22
+ }
23
+ };
24
+ var SbbFileSelectorCommonElementMixin = (superclass) => {
25
+ return (() => {
26
+ let _classSuper = SbbDisabledMixin(SbbFormAssociatedMixin(superclass));
27
+ let _instanceExtraInitializers = [];
28
+ let _size_decorators;
29
+ let _size_initializers = [];
30
+ let _size_extraInitializers = [];
31
+ let _multiple_decorators;
32
+ let _multiple_initializers = [];
33
+ let _multiple_extraInitializers = [];
34
+ let _multipleMode_decorators;
35
+ let _multipleMode_initializers = [];
36
+ let _multipleMode_extraInitializers = [];
37
+ let _accept_decorators;
38
+ let _accept_initializers = [];
39
+ let _accept_extraInitializers = [];
40
+ let _accessibilityLabel_decorators;
41
+ let _accessibilityLabel_initializers = [];
42
+ let _accessibilityLabel_extraInitializers = [];
43
+ let _set_value_decorators;
44
+ let _set_files_decorators;
45
+ return class SbbFileSelectorCommonElement extends _classSuper {
46
+ constructor() {
47
+ super(...arguments);
48
+ this.#size_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _size_initializers, null));
49
+ this.#multiple_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _multiple_initializers, false));
50
+ this.#multipleMode_accessor_storage = (__runInitializers(this, _multiple_extraInitializers), __runInitializers(this, _multipleMode_initializers, "default"));
51
+ this.#accept_accessor_storage = (__runInitializers(this, _multipleMode_extraInitializers), __runInitializers(this, _accept_initializers, ""));
52
+ this.#accessibilityLabel_accessor_storage = (__runInitializers(this, _accept_extraInitializers), __runInitializers(this, _accessibilityLabel_initializers, ""));
53
+ this._files = (__runInitializers(this, _accessibilityLabel_extraInitializers), []);
54
+ this._suffixes = [
55
+ "B",
56
+ "kB",
57
+ "MB",
58
+ "GB",
59
+ "TB"
60
+ ];
61
+ this.language = new SbbLanguageController(this);
62
+ this._counter = 0;
63
+ }
64
+ static {
65
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
66
+ _size_decorators = [property({ reflect: true })];
67
+ _multiple_decorators = [forceType(), property({ type: Boolean })];
68
+ _multipleMode_decorators = [property({ attribute: "multiple-mode" })];
69
+ _accept_decorators = [forceType(), property()];
70
+ _accessibilityLabel_decorators = [forceType(), property({ attribute: "accessibility-label" })];
71
+ _set_value_decorators = [property({ attribute: false })];
72
+ _set_files_decorators = [property({ attribute: false })];
73
+ __esDecorate(this, null, _size_decorators, {
74
+ kind: "accessor",
75
+ name: "size",
76
+ static: false,
77
+ private: false,
78
+ access: {
79
+ has: (obj) => "size" in obj,
80
+ get: (obj) => obj.size,
81
+ set: (obj, value) => {
82
+ obj.size = value;
83
+ }
84
+ },
85
+ metadata: _metadata
86
+ }, _size_initializers, _size_extraInitializers);
87
+ __esDecorate(this, null, _multiple_decorators, {
88
+ kind: "accessor",
89
+ name: "multiple",
90
+ static: false,
91
+ private: false,
92
+ access: {
93
+ has: (obj) => "multiple" in obj,
94
+ get: (obj) => obj.multiple,
95
+ set: (obj, value) => {
96
+ obj.multiple = value;
97
+ }
98
+ },
99
+ metadata: _metadata
100
+ }, _multiple_initializers, _multiple_extraInitializers);
101
+ __esDecorate(this, null, _multipleMode_decorators, {
102
+ kind: "accessor",
103
+ name: "multipleMode",
104
+ static: false,
105
+ private: false,
106
+ access: {
107
+ has: (obj) => "multipleMode" in obj,
108
+ get: (obj) => obj.multipleMode,
109
+ set: (obj, value) => {
110
+ obj.multipleMode = value;
111
+ }
112
+ },
113
+ metadata: _metadata
114
+ }, _multipleMode_initializers, _multipleMode_extraInitializers);
115
+ __esDecorate(this, null, _accept_decorators, {
116
+ kind: "accessor",
117
+ name: "accept",
118
+ static: false,
119
+ private: false,
120
+ access: {
121
+ has: (obj) => "accept" in obj,
122
+ get: (obj) => obj.accept,
123
+ set: (obj, value) => {
124
+ obj.accept = value;
125
+ }
126
+ },
127
+ metadata: _metadata
128
+ }, _accept_initializers, _accept_extraInitializers);
129
+ __esDecorate(this, null, _accessibilityLabel_decorators, {
130
+ kind: "accessor",
131
+ name: "accessibilityLabel",
132
+ static: false,
133
+ private: false,
134
+ access: {
135
+ has: (obj) => "accessibilityLabel" in obj,
136
+ get: (obj) => obj.accessibilityLabel,
137
+ set: (obj, value) => {
138
+ obj.accessibilityLabel = value;
139
+ }
140
+ },
141
+ metadata: _metadata
142
+ }, _accessibilityLabel_initializers, _accessibilityLabel_extraInitializers);
143
+ __esDecorate(this, null, _set_value_decorators, {
144
+ kind: "setter",
145
+ name: "value",
146
+ static: false,
147
+ private: false,
148
+ access: {
149
+ has: (obj) => "value" in obj,
150
+ set: (obj, value) => {
151
+ obj.value = value;
152
+ }
153
+ },
154
+ metadata: _metadata
155
+ }, null, _instanceExtraInitializers);
156
+ __esDecorate(this, null, _set_files_decorators, {
157
+ kind: "setter",
158
+ name: "files",
159
+ static: false,
160
+ private: false,
161
+ access: {
162
+ has: (obj) => "files" in obj,
163
+ set: (obj, value) => {
164
+ obj.files = value;
165
+ }
166
+ },
167
+ metadata: _metadata
168
+ }, null, _instanceExtraInitializers);
169
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, {
170
+ enumerable: true,
171
+ configurable: true,
172
+ writable: true,
173
+ value: _metadata
174
+ });
175
+ }
176
+ static {
177
+ this.elementDependencies = [SbbSecondaryButtonElement];
178
+ }
179
+ static {
180
+ this.events = { filechanged: "filechanged" };
181
+ }
182
+ static {
183
+ this.styles = [screenReaderOnlyStyles, unsafeCSS(file_selector_common_default)];
184
+ }
185
+ #size_accessor_storage;
186
+ /**
187
+ * Size variant, either s (lean theme default) or m (standard theme default).
188
+ */
189
+ get size() {
190
+ return this.#size_accessor_storage;
191
+ }
192
+ set size(value) {
193
+ this.#size_accessor_storage = value;
194
+ }
195
+ #multiple_accessor_storage;
196
+ /** Whether more than one file can be selected. */
197
+ get multiple() {
198
+ return this.#multiple_accessor_storage;
199
+ }
200
+ set multiple(value) {
201
+ this.#multiple_accessor_storage = value;
202
+ }
203
+ #multipleMode_accessor_storage;
204
+ /** Whether the newly added files should override the previously added ones. */
205
+ get multipleMode() {
206
+ return this.#multipleMode_accessor_storage;
207
+ }
208
+ set multipleMode(value) {
209
+ this.#multipleMode_accessor_storage = value;
210
+ }
211
+ #accept_accessor_storage;
212
+ /** A comma-separated list of allowed unique file type specifiers. */
213
+ get accept() {
214
+ return this.#accept_accessor_storage;
215
+ }
216
+ set accept(value) {
217
+ this.#accept_accessor_storage = value;
218
+ }
219
+ #accessibilityLabel_accessor_storage;
220
+ /** This will be forwarded as aria-label to the native input element. */
221
+ get accessibilityLabel() {
222
+ return this.#accessibilityLabel_accessor_storage;
223
+ }
224
+ set accessibilityLabel(value) {
225
+ this.#accessibilityLabel_accessor_storage = value;
226
+ }
227
+ /** The path of the first selected file. Empty string ('') if no file is selected */
228
+ set value(value) {
229
+ this._hiddenInput.value = value ?? "";
230
+ if (!value) this.files = [];
231
+ }
232
+ get value() {
233
+ return this._hiddenInput?.value;
234
+ }
235
+ /** The list of selected files. */
236
+ set files(value) {
237
+ this._files = value ?? [];
238
+ const dt = new DataTransfer();
239
+ this.files.forEach((e) => dt.items.add(e));
240
+ this._hiddenInput.files = dt.files;
241
+ this.updateFormValue();
242
+ }
243
+ get files() {
244
+ return this._files;
245
+ }
246
+ /**
247
+ * Form type of element.
248
+ * @default 'file'
249
+ */
250
+ get type() {
251
+ return "file";
252
+ }
253
+ formResetCallback() {
254
+ this.files = [];
255
+ }
256
+ formStateRestoreCallback(state, _reason) {
257
+ if (!state) return;
258
+ this.files = state.getAll(this.name);
259
+ }
260
+ updateFormValue() {
261
+ const formValue = new FormData();
262
+ this.files.forEach((file) => formValue.append(this.name, file));
263
+ this.internals.setFormValue(formValue);
264
+ }
265
+ _checkFileEquality(file1, file2) {
266
+ return file1.name === file2.name && file1.size === file2.size && file1.lastModified === file2.lastModified;
267
+ }
268
+ _onFocus() {
269
+ if (sbbInputModalityDetector.mostRecentModality === "keyboard") ɵstateController(this.loadButton).add("focus-visible");
270
+ }
271
+ _onBlur() {
272
+ ɵstateController(this.loadButton).delete("focus-visible");
273
+ }
274
+ _readFiles(event) {
275
+ const fileInput = event.target;
276
+ if (fileInput.files) this.createFileList(fileInput.files);
277
+ forwardEvent(event, this);
278
+ }
279
+ createFileList(files) {
280
+ const fileArray = Array.from(files);
281
+ if (!this.multiple && files.length > 1 || this.accept && fileArray.some((file) => !this.accept.split(",").some((a) => file.name.endsWith(a.trim())))) return;
282
+ if (!this.multiple || this.multipleMode !== "persistent" || this.files.length === 0) this.files = fileArray;
283
+ else this.files = fileArray.filter((newFile) => this.files.findIndex((oldFile) => this._checkFileEquality(newFile, oldFile)) === -1).concat(this.files);
284
+ this._updateA11yLiveRegion();
285
+ this._dispatchFileChangedEvent();
286
+ }
287
+ getButtonLabel() {
288
+ return this.multiple ? i18nFileSelectorButtonLabelMultiple[this.language.current] : i18nFileSelectorButtonLabel[this.language.current];
289
+ }
290
+ _removeFile(file) {
291
+ this.files = this.files.filter((f) => !this._checkFileEquality(file, f));
292
+ this._updateA11yLiveRegion();
293
+ /** The input event fires when the value has been changed as a direct result of a user action. */
294
+ this.dispatchEvent(new InputEvent("input", {
295
+ bubbles: true,
296
+ composed: true
297
+ }));
298
+ /**
299
+ * The change event is fired when the user modifies the element's value.
300
+ * Unlike the input event, the change event is not necessarily fired
301
+ * for each alteration to an element's value.
302
+ */
303
+ this.dispatchEvent(new Event("change", { bubbles: true }));
304
+ this._dispatchFileChangedEvent();
305
+ }
306
+ _dispatchFileChangedEvent() {
307
+ const filechanged = this.files;
308
+ /**
309
+ * @type {SbbFileChangeEvent}
310
+ * An event which is emitted each time the file list changes.
311
+ */
312
+ this.dispatchEvent(new SbbFileChangeEvent(filechanged));
313
+ }
314
+ /** Calculates the correct unit for the file's size. */
315
+ _formatFileSize(size) {
316
+ const i = Math.floor(Math.log(size) / Math.log(1024));
317
+ return `${(size / Math.pow(1024, i)).toFixed(0)} ${this._suffixes[i]}`;
318
+ }
319
+ _updateA11yLiveRegion() {
320
+ this._liveRegion.innerText = i18nFileSelectorCurrentlySelected(this.files.map((e) => e.name))[this.language.current];
321
+ }
322
+ _renderFileList() {
323
+ const TAG_NAME = this.files.length > 1 ? {
324
+ WRAPPER: "ul",
325
+ ELEMENT: "li"
326
+ } : {
327
+ WRAPPER: "div",
328
+ ELEMENT: "span"
329
+ };
330
+ return html$1`
331
+ <${unsafeStatic(TAG_NAME.WRAPPER)} class="sbb-file-selector__file-list">
332
+ ${this.files.map((file) => html$1`
333
+ <${unsafeStatic(TAG_NAME.ELEMENT)} class="sbb-file-selector__file">
334
+ <span class="sbb-file-selector__file-details">
335
+ <span class="sbb-file-selector__file-name">${file.name}</span>
336
+ <span class="sbb-file-selector__file-size">${this._formatFileSize(file.size)}</span>
337
+ </span>
338
+ <sbb-secondary-button
339
+ size=${this.size || nothing}
340
+ icon-name="trash-small"
341
+ @click=${() => this._removeFile(file)}
342
+ aria-label=${`${i18nFileSelectorDeleteFile[this.language.current]} - ${file.name}`}
343
+ ></sbb-secondary-button>
344
+ </${unsafeStatic(TAG_NAME.ELEMENT)}>`)}
345
+ </${unsafeStatic(TAG_NAME.WRAPPER)}>
346
+ `;
347
+ }
348
+ _onDragEnter(event) {
349
+ this._counter++;
350
+ if (!this.disabled && !this.formDisabled) {
351
+ this._setDragState(event.target, true);
352
+ this._blockEvent(event);
353
+ }
354
+ }
355
+ _onDragLeave(event) {
356
+ this._counter--;
357
+ if (!this.disabled && !this.formDisabled && event.target === this._dragTarget && this._counter === 0) {
358
+ this._setDragState();
359
+ this._blockEvent(event);
360
+ }
361
+ }
362
+ _onFileDrop(event) {
363
+ this._counter = 0;
364
+ if (!this.disabled && !this.formDisabled) {
365
+ this._setDragState();
366
+ this._blockEvent(event);
367
+ this.createFileList(event.dataTransfer.files);
368
+ }
369
+ }
370
+ _blockEvent(event) {
371
+ event.stopPropagation();
372
+ event.preventDefault();
373
+ }
374
+ _setDragState(dragTarget = void 0, isDragEnter = false) {
375
+ this._dragTarget = dragTarget;
376
+ this.toggleState("active", isDragEnter);
377
+ ɵstateController(this.loadButton).toggle("active", isDragEnter);
378
+ }
379
+ render() {
380
+ const ariaLabel = this.accessibilityLabel ? `${this.getButtonLabel()} - ${this.accessibilityLabel}` : void 0;
381
+ return html$1`
382
+ <div
383
+ class="sbb-file-selector__input-container"
384
+ @dragenter=${this._onDragEnter}
385
+ @dragover=${this._blockEvent}
386
+ @dragleave=${this._onDragLeave}
387
+ @drop=${this._onFileDrop}
388
+ >
389
+ ${this.renderTemplate(html$1`<input
390
+ class="sbb-screen-reader-only"
391
+ type="file"
392
+ ?disabled=${this.disabled || this.formDisabled}
393
+ ?multiple=${this.multiple}
394
+ accept=${this.accept || nothing}
395
+ aria-label=${ariaLabel || nothing}
396
+ @change=${this._readFiles}
397
+ @focus=${this._onFocus}
398
+ @blur=${this._onBlur}
399
+ ${ref((el) => {
400
+ this._hiddenInput = el;
401
+ })}
402
+ />`)}
403
+ </div>
404
+ <p
405
+ role="status"
406
+ class="sbb-screen-reader-only"
407
+ ${ref((p) => this._liveRegion = p)}
408
+ ></p>
409
+ ${this.files.length > 0 ? this._renderFileList() : nothing}
410
+ <div class="sbb-file-selector__error">
411
+ <slot name="error"></slot>
412
+ </div>
413
+ `;
414
+ }
415
+ };
416
+ })();
417
+ };
418
+ //#endregion
419
+ export { SbbFileSelectorCommonElementMixin as n, SbbFileChangeEvent as t };
420
+
421
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zZWxlY3Rvci1jb21tb24tRGQwUzBxRTMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ZpbGUtc2VsZWN0b3IvY29tbW9uL2ZpbGUtc2VsZWN0b3ItY29tbW9uLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ZpbGUtc2VsZWN0b3IvY29tbW9uL2ZpbGUtc2VsZWN0b3ItY29tbW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItZmlsZS1zZWxlY3Rvci10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sXG4gICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi0yeClcbiAgKTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgzMjApfTtcbn1cblxuOmhvc3QoOmRpc2FibGVkKSB7XG4gIEBtZWRpYSAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSB7XG4gICAgLS1zYmItZmlsZS1zZWxlY3Rvci1jb2xvcjogR3JheVRleHQ7XG4gICAgLS1zYmItZmlsZS1zZWxlY3Rvci1zdWJ0aXRsZS1jb2xvcjogR3JheVRleHQ7XG4gICAgLS1zYmItZmlsZS1zZWxlY3Rvci1ib3JkZXItY29sb3I6IEdyYXlUZXh0O1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZShhY3RpdmUpKSB7XG4gIC0tc2JiLWZpbGUtc2VsZWN0b3ItYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMyk7XG4gIC0tc2JiLWZpbGUtc2VsZWN0b3ItYm9yZGVyLWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1zdG9ybSksIHZhcigtLXNiYi1jb2xvci1hbnRocmFjaXRlKSk7XG5cbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpIHtcbiAgICAtLXNiYi1maWxlLXNlbGVjdG9yLWJvcmRlci1jb2xvcjogSGlnaGxpZ2h0O1xuICB9XG59XG5cbi5zYmItZmlsZS1zZWxlY3Rvcl9faW5wdXQtY29udGFpbmVyIHtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLnNiYi1maWxlLXNlbGVjdG9yX19maWxlLWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICByb3ctZ2FwOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0zeCk7XG4gIG1hcmdpbi1ibG9jazogMDtcbiAgcGFkZGluZy1pbmxpbmU6IDA7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTZ4KSB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCk7XG59XG5cbi5zYmItZmlsZS1zZWxlY3Rvcl9fZmlsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNHgpO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXNiYi10eXBvLWxldHRlci1zcGFjaW5nLXRleHQpO1xuICBmb250LXNpemU6IHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS1zKTtcbn1cblxuLnNiYi1maWxlLXNlbGVjdG9yX19maWxlLWRldGFpbHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiAxO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGdhcDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNHgpO1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLnNiYi1maWxlLXNlbGVjdG9yX19maWxlLW5hbWUge1xuICBAaW5jbHVkZSBzYmIuZWxsaXBzaXM7XG59XG5cbi5zYmItZmlsZS1zZWxlY3Rvcl9fZmlsZS1zaXplIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgY29sb3I6IGxpZ2h0LWRhcmsodmFyKC0tc2JiLWNvbG9yLW1ldGFsKSwgdmFyKC0tc2JiLWNvbG9yLXNtb2tlKSk7XG59XG5cbi5zYmItZmlsZS1zZWxlY3Rvcl9fZXJyb3Ige1xuICA6aG9zdCg6bm90KDpzdGF0ZShzbG90dGVkLWVycm9yKSkpICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIG5vdGhpbmcsIHR5cGUgVGVtcGxhdGVSZXN1bHQsIHVuc2FmZUNTUyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5pbXBvcnQgeyBodG1sLCB1bnNhZmVTdGF0aWMgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQge1xuICBTYmJTZWNvbmRhcnlCdXR0b25FbGVtZW50LFxuICB0eXBlIFNiYlNlY29uZGFyeUJ1dHRvblN0YXRpY0VsZW1lbnQsXG59IGZyb20gJy4uLy4uL2J1dHRvbi5wdXJlLnRzJztcbmltcG9ydCB7XG4gIHR5cGUgQWJzdHJhY3RDb25zdHJ1Y3RvcixcbiAgZm9yY2VUeXBlLFxuICB0eXBlIEZvcm1SZXN0b3JlUmVhc29uLFxuICB0eXBlIEZvcm1SZXN0b3JlU3RhdGUsXG4gIGZvcndhcmRFdmVudCxcbiAgaTE4bkZpbGVTZWxlY3RvckJ1dHRvbkxhYmVsLFxuICBpMThuRmlsZVNlbGVjdG9yQnV0dG9uTGFiZWxNdWx0aXBsZSxcbiAgaTE4bkZpbGVTZWxlY3RvckN1cnJlbnRseVNlbGVjdGVkLFxuICBpMThuRmlsZVNlbGVjdG9yRGVsZXRlRmlsZSxcbiAgU2JiRGlzYWJsZWRNaXhpbixcbiAgU2JiRWxlbWVudCxcbiAgdHlwZSBTYmJFbGVtZW50Q29uc3RydWN0b3IsXG4gIHR5cGUgU2JiRWxlbWVudFR5cGUsXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4sXG4gIHNiYklucHV0TW9kYWxpdHlEZXRlY3RvcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxuICBzY3JlZW5SZWFkZXJPbmx5U3R5bGVzLFxuICDJtXN0YXRlQ29udHJvbGxlcixcbn0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2ZpbGUtc2VsZWN0b3ItY29tbW9uLnNjc3M/aW5saW5lJztcblxuZXhwb3J0IGNsYXNzIFNiYkZpbGVDaGFuZ2VFdmVudCBleHRlbmRzIEV2ZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZXM6IHJlYWRvbmx5IEZpbGVbXTtcblxuICBwdWJsaWMgZ2V0IGZpbGVzKCk6IHJlYWRvbmx5IEZpbGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVzO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGZpbGVzOiByZWFkb25seSBGaWxlW10pIHtcbiAgICBzdXBlcignZmlsZWNoYW5nZWQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pO1xuICAgIHRoaXMuX2ZpbGVzID0gT2JqZWN0LmZyZWV6ZShmaWxlcyB8fCBbXSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgU2JiRmlsZVNlbGVjdG9yQ29tbW9uRWxlbWVudE1peGluVHlwZSBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4oU2JiRWxlbWVudCksXG4pIHtcbiAgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyB8IG51bGw7XG4gIHB1YmxpYyBhY2Nlc3NvciBtdWx0aXBsZTogYm9vbGVhbjtcbiAgcHVibGljIGFjY2Vzc29yIG11bHRpcGxlTW9kZTogJ2RlZmF1bHQnIHwgJ3BlcnNpc3RlbnQnO1xuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXB0OiBzdHJpbmc7XG4gIHB1YmxpYyBhY2Nlc3NvciBhY2Nlc3NpYmlsaXR5TGFiZWw6IHN0cmluZztcbiAgcHVibGljIGFjY2Vzc29yIGZpbGVzOiBSZWFkb25seTxGaWxlPltdO1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBvdmVycmlkZSBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpO1xuICBwcm90ZWN0ZWQgbG9hZEJ1dHRvbjogU2JiU2Vjb25kYXJ5QnV0dG9uU3RhdGljRWxlbWVudDtcbiAgcHJvdGVjdGVkIGxhbmd1YWdlOiBTYmJMYW5ndWFnZUNvbnRyb2xsZXI7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZW5kZXJUZW1wbGF0ZShpbnB1dDogVGVtcGxhdGVSZXN1bHQpOiBUZW1wbGF0ZVJlc3VsdDtcbiAgcHJvdGVjdGVkIGNyZWF0ZUZpbGVMaXN0KGZpbGVzOiBGaWxlTGlzdCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBnZXRCdXR0b25MYWJlbCgpOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkO1xuICBwdWJsaWMgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCwgcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbik6IHZvaWQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJGaWxlU2VsZWN0b3JDb21tb25FbGVtZW50TWl4aW4gPSA8XG4gIFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkVsZW1lbnQ+ICYgU2JiRWxlbWVudENvbnN0cnVjdG9yLFxuPihcbiAgc3VwZXJjbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRmlsZVNlbGVjdG9yQ29tbW9uRWxlbWVudE1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRmlsZVNlbGVjdG9yQ29tbW9uRWxlbWVudFxuICAgIGV4dGVuZHMgU2JiRGlzYWJsZWRNaXhpbihTYmJGb3JtQXNzb2NpYXRlZE1peGluKHN1cGVyY2xhc3MpKVxuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJGaWxlU2VsZWN0b3JDb21tb25FbGVtZW50TWl4aW5UeXBlPlxuICB7XG4gICAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBlbGVtZW50RGVwZW5kZW5jaWVzOiBTYmJFbGVtZW50VHlwZVtdID0gW1NiYlNlY29uZGFyeUJ1dHRvbkVsZW1lbnRdO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgICAgZmlsZWNoYW5nZWQ6ICdmaWxlY2hhbmdlZCcsXG4gICAgfSBhcyBjb25zdDtcbiAgICBwdWJsaWMgc3RhdGljIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbc2NyZWVuUmVhZGVyT25seVN0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgICAvKipcbiAgICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBzIChsZWFuIHRoZW1lIGRlZmF1bHQpIG9yIG0gKHN0YW5kYXJkIHRoZW1lIGRlZmF1bHQpLlxuICAgICAqL1xuICAgIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgbW9yZSB0aGFuIG9uZSBmaWxlIGNhbiBiZSBzZWxlY3RlZC4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gICAgcHVibGljIGFjY2Vzc29yIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgbmV3bHkgYWRkZWQgZmlsZXMgc2hvdWxkIG92ZXJyaWRlIHRoZSBwcmV2aW91c2x5IGFkZGVkIG9uZXMuICovXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnbXVsdGlwbGUtbW9kZScgfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgbXVsdGlwbGVNb2RlOiAnZGVmYXVsdCcgfCAncGVyc2lzdGVudCcgPSAnZGVmYXVsdCc7XG5cbiAgICAvKiogQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGxvd2VkIHVuaXF1ZSBmaWxlIHR5cGUgc3BlY2lmaWVycy4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoKVxuICAgIHB1YmxpYyBhY2Nlc3NvciBhY2NlcHQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuICovXG4gICAgQGZvcmNlVHlwZSgpXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBUaGUgcGF0aCBvZiB0aGUgZmlyc3Qgc2VsZWN0ZWQgZmlsZS4gRW1wdHkgc3RyaW5nICgnJykgaWYgbm8gZmlsZSBpcyBzZWxlY3RlZCAqL1xuICAgIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICB0aGlzLl9oaWRkZW5JbnB1dC52YWx1ZSA9IHZhbHVlID8/ICcnO1xuXG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLl9oaWRkZW5JbnB1dD8udmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBsaXN0IG9mIHNlbGVjdGVkIGZpbGVzLiAqL1xuICAgIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IGZpbGVzKHZhbHVlOiBSZWFkb25seTxGaWxlPltdKSB7XG4gICAgICB0aGlzLl9maWxlcyA9IHZhbHVlID8/IFtdO1xuXG4gICAgICAvLyB1cGRhdGUgdGhlIGlubmVyIGlucHV0XG4gICAgICBjb25zdCBkdDogRGF0YVRyYW5zZmVyID0gbmV3IERhdGFUcmFuc2ZlcigpO1xuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKChlOiBSZWFkb25seTxGaWxlPikgPT4gZHQuaXRlbXMuYWRkKGUpKTtcbiAgICAgIHRoaXMuX2hpZGRlbklucHV0LmZpbGVzID0gZHQuZmlsZXM7XG5cbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZmlsZXMoKTogUmVhZG9ubHk8RmlsZT5bXSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmlsZXM7XG4gICAgfVxuICAgIHByaXZhdGUgX2ZpbGVzOiBSZWFkb25seTxGaWxlPltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIHR5cGUgb2YgZWxlbWVudC5cbiAgICAgKiBAZGVmYXVsdCAnZmlsZSdcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAnZmlsZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGlkZGVuSW5wdXQhOiBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHByaXZhdGUgX3N1ZmZpeGVzOiBzdHJpbmdbXSA9IFsnQicsICdrQicsICdNQicsICdHQicsICdUQiddO1xuICAgIHByaXZhdGUgX2xpdmVSZWdpb24hOiBIVE1MUGFyYWdyYXBoRWxlbWVudDtcbiAgICBwcm90ZWN0ZWQgbG9hZEJ1dHRvbiE6IFNiYlNlY29uZGFyeUJ1dHRvblN0YXRpY0VsZW1lbnQ7XG4gICAgcHJvdGVjdGVkIGxhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICAgIC8vIFNhZmFyaSBoYXMgYSBwZWN1bGlhciBiZWhhdmlvciB3aGVuIGRyYWdnaW5nIGZpbGVzIG9uIHRoZSBpbm5lciBidXR0b24gaW4gJ2Ryb3B6b25lJyB2YXJpYW50O1xuICAgIC8vIHRoaXMgd2lsbCByZXF1aXJlIGEgY291bnRlciB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBkcmFnRW50ZXIvZHJhZ0xlYXZlLlxuICAgIHByaXZhdGUgX2NvdW50ZXI6IG51bWJlciA9IDA7XG4gICAgcHJpdmF0ZSBfZHJhZ1RhcmdldD86IEhUTUxFbGVtZW50O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlbmRlclRlbXBsYXRlKGlucHV0OiBUZW1wbGF0ZVJlc3VsdCk6IFRlbXBsYXRlUmVzdWx0O1xuXG4gICAgcHVibGljIG92ZXJyaWRlIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgICBzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsXG4gICAgICBfcmVhc29uPzogRm9ybVJlc3RvcmVSZWFzb24sXG4gICAgKTogdm9pZCB7XG4gICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsZXMgPSAoc3RhdGUgYXMgRm9ybURhdGEpLmdldEFsbCh0aGlzLm5hbWUpIGFzIFJlYWRvbmx5PEZpbGU+W107XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZUZvcm1WYWx1ZSgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKChmaWxlKSA9PiBmb3JtVmFsdWUuYXBwZW5kKHRoaXMubmFtZSwgZmlsZSkpO1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc2V0Rm9ybVZhbHVlKGZvcm1WYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tGaWxlRXF1YWxpdHkoZmlsZTE6IFJlYWRvbmx5PEZpbGU+LCBmaWxlMjogUmVhZG9ubHk8RmlsZT4pOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGZpbGUxLm5hbWUgPT09IGZpbGUyLm5hbWUgJiZcbiAgICAgICAgZmlsZTEuc2l6ZSA9PT0gZmlsZTIuc2l6ZSAmJlxuICAgICAgICBmaWxlMS5sYXN0TW9kaWZpZWQgPT09IGZpbGUyLmxhc3RNb2RpZmllZFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9vbkZvY3VzKCk6IHZvaWQge1xuICAgICAgaWYgKHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCcpIHtcbiAgICAgICAgybVzdGF0ZUNvbnRyb2xsZXIodGhpcy5sb2FkQnV0dG9uKS5hZGQoJ2ZvY3VzLXZpc2libGUnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9vbkJsdXIoKTogdm9pZCB7XG4gICAgICDJtXN0YXRlQ29udHJvbGxlcih0aGlzLmxvYWRCdXR0b24pLmRlbGV0ZSgnZm9jdXMtdmlzaWJsZScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlYWRGaWxlcyhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGZpbGVJbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgaWYgKGZpbGVJbnB1dC5maWxlcykge1xuICAgICAgICB0aGlzLmNyZWF0ZUZpbGVMaXN0KGZpbGVJbnB1dC5maWxlcyk7XG4gICAgICB9XG4gICAgICBmb3J3YXJkRXZlbnQoZXZlbnQsIHRoaXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVGaWxlTGlzdChmaWxlczogRmlsZUxpc3QpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGZpbGVBcnJheSA9IEFycmF5LmZyb20oZmlsZXMpO1xuICAgICAgaWYgKFxuICAgICAgICAoIXRoaXMubXVsdGlwbGUgJiYgZmlsZXMubGVuZ3RoID4gMSkgfHxcbiAgICAgICAgKHRoaXMuYWNjZXB0ICYmXG4gICAgICAgICAgZmlsZUFycmF5LnNvbWUoXG4gICAgICAgICAgICAoZmlsZSkgPT4gIXRoaXMuYWNjZXB0LnNwbGl0KCcsJykuc29tZSgoYSkgPT4gZmlsZS5uYW1lLmVuZHNXaXRoKGEudHJpbSgpKSksXG4gICAgICAgICAgKSlcbiAgICAgICkge1xuICAgICAgICAvLyBJZiBtdWx0aXBsZSBmaWxlcyBhcmUgc2VsZWN0ZWQgYnV0IHRoZSBzZWxlY3RvciBpcyBub3QgaW4gbXVsdGlwbGUgbW9kZSxcbiAgICAgICAgLy8gaWdub3JlIHRoZSBzZWxlY3Rpb24gKGxpa2UgbmF0aXZlIGJlaGF2aW9yKS5cbiAgICAgICAgLy8gSWYgdGhlIGFjY2VwdCBhdHRyaWJ1dGUgaXMgc2V0LCBjaGVjayBpZiB0aGUgc2VsZWN0ZWQgZmlsZXMgbWF0Y2ggdGhlIGFsbG93ZWQgdHlwZXMuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8IHRoaXMubXVsdGlwbGVNb2RlICE9PSAncGVyc2lzdGVudCcgfHwgdGhpcy5maWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5maWxlcyA9IGZpbGVBcnJheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsZXMgPSBmaWxlQXJyYXlcbiAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgLy8gUmVtb3ZlIGR1cGxpY2F0ZXNcbiAgICAgICAgICAgIChuZXdGaWxlOiBSZWFkb25seTxGaWxlPik6IGJvb2xlYW4gPT5cbiAgICAgICAgICAgICAgdGhpcy5maWxlcyEuZmluZEluZGV4KChvbGRGaWxlOiBSZWFkb25seTxGaWxlPikgPT5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGVja0ZpbGVFcXVhbGl0eShuZXdGaWxlLCBvbGRGaWxlKSxcbiAgICAgICAgICAgICAgKSA9PT0gLTEsXG4gICAgICAgICAgKVxuICAgICAgICAgIC5jb25jYXQodGhpcy5maWxlcyk7XG4gICAgICB9XG4gICAgICB0aGlzLl91cGRhdGVBMTF5TGl2ZVJlZ2lvbigpO1xuICAgICAgdGhpcy5fZGlzcGF0Y2hGaWxlQ2hhbmdlZEV2ZW50KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5tdWx0aXBsZVxuICAgICAgICA/IGkxOG5GaWxlU2VsZWN0b3JCdXR0b25MYWJlbE11bHRpcGxlW3RoaXMubGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgOiBpMThuRmlsZVNlbGVjdG9yQnV0dG9uTGFiZWxbdGhpcy5sYW5ndWFnZS5jdXJyZW50XTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW1vdmVGaWxlKGZpbGU6IFJlYWRvbmx5PEZpbGU+KTogdm9pZCB7XG4gICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoKGY6IFJlYWRvbmx5PEZpbGU+KSA9PiAhdGhpcy5fY2hlY2tGaWxlRXF1YWxpdHkoZmlsZSwgZikpO1xuICAgICAgdGhpcy5fdXBkYXRlQTExeUxpdmVSZWdpb24oKTtcblxuICAgICAgLy8gRGlzcGF0Y2ggbmF0aXZlIGV2ZW50cyBhcyBpZiB0aGUgcmVzZXQgaXMgZG9uZSB2aWEgdGhlIGZpbGUgc2VsZWN0aW9uIHdpbmRvdy5cbiAgICAgIC8qKiBUaGUgaW5wdXQgZXZlbnQgZmlyZXMgd2hlbiB0aGUgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCBhcyBhIGRpcmVjdCByZXN1bHQgb2YgYSB1c2VyIGFjdGlvbi4gKi9cbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IElucHV0RXZlbnQoJ2lucHV0Jywge1xuICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgY29tcG9zZWQ6IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgY2hhbmdlIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgbW9kaWZpZXMgdGhlIGVsZW1lbnQncyB2YWx1ZS5cbiAgICAgICAqIFVubGlrZSB0aGUgaW5wdXQgZXZlbnQsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IG5lY2Vzc2FyaWx5IGZpcmVkXG4gICAgICAgKiBmb3IgZWFjaCBhbHRlcmF0aW9uIHRvIGFuIGVsZW1lbnQncyB2YWx1ZS5cbiAgICAgICAqL1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMuX2Rpc3BhdGNoRmlsZUNoYW5nZWRFdmVudCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc3BhdGNoRmlsZUNoYW5nZWRFdmVudCgpOiB2b2lkIHtcbiAgICAgIC8vIEZJWE1FOiB0aGUgbmFtZSBvZiB0aGlzIHZhcmlhYmxlIGFwcGVhcnMgYXMgZXZlbnQgbmFtZSBpbiB0aGUgcmVhZG1lXG4gICAgICAvLyAgZHVlIHRvIGEgYnVnIGluIHRoZSBjdXN0b20tZWxlbWVudHMtbWFuaWZlc3QgbGlicmFyeS5cbiAgICAgIC8vICBodHRwczovL2dpdGh1Yi5jb20vb3Blbi13Yy9jdXN0b20tZWxlbWVudHMtbWFuaWZlc3QvaXNzdWVzLzE0OVxuICAgICAgY29uc3QgZmlsZWNoYW5nZWQgPSB0aGlzLmZpbGVzO1xuICAgICAgLyoqXG4gICAgICAgKiBAdHlwZSB7U2JiRmlsZUNoYW5nZUV2ZW50fVxuICAgICAgICogQW4gZXZlbnQgd2hpY2ggaXMgZW1pdHRlZCBlYWNoIHRpbWUgdGhlIGZpbGUgbGlzdCBjaGFuZ2VzLlxuICAgICAgICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFNiYkZpbGVDaGFuZ2VFdmVudChmaWxlY2hhbmdlZCkpO1xuICAgIH1cblxuICAgIC8qKiBDYWxjdWxhdGVzIHRoZSBjb3JyZWN0IHVuaXQgZm9yIHRoZSBmaWxlJ3Mgc2l6ZS4gKi9cbiAgICBwcml2YXRlIF9mb3JtYXRGaWxlU2l6ZShzaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgY29uc3QgaTogbnVtYmVyID0gTWF0aC5mbG9vcihNYXRoLmxvZyhzaXplKSAvIE1hdGgubG9nKDEwMjQpKTtcbiAgICAgIHJldHVybiBgJHsoc2l6ZSAvIE1hdGgucG93KDEwMjQsIGkpKS50b0ZpeGVkKDApfSAke3RoaXMuX3N1ZmZpeGVzW2ldfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdXBkYXRlQTExeUxpdmVSZWdpb24oKTogdm9pZCB7XG4gICAgICB0aGlzLl9saXZlUmVnaW9uLmlubmVyVGV4dCA9IGkxOG5GaWxlU2VsZWN0b3JDdXJyZW50bHlTZWxlY3RlZCh0aGlzLmZpbGVzLm1hcCgoZSkgPT4gZS5uYW1lKSlbXG4gICAgICAgIHRoaXMubGFuZ3VhZ2UuY3VycmVudFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW5kZXJGaWxlTGlzdCgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgICBjb25zdCBUQUdfTkFNRTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9XG4gICAgICAgIHRoaXMuZmlsZXMubGVuZ3RoID4gMVxuICAgICAgICAgID8geyBXUkFQUEVSOiAndWwnLCBFTEVNRU5UOiAnbGknIH1cbiAgICAgICAgICA6IHsgV1JBUFBFUjogJ2RpdicsIEVMRU1FTlQ6ICdzcGFuJyB9O1xuXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgPCR7dW5zYWZlU3RhdGljKFRBR19OQU1FLldSQVBQRVIpfSBjbGFzcz1cInNiYi1maWxlLXNlbGVjdG9yX19maWxlLWxpc3RcIj5cbiAgICAgICAgJHt0aGlzLmZpbGVzLm1hcChcbiAgICAgICAgICAoZmlsZTogUmVhZG9ubHk8RmlsZT4pID0+IGh0bWxgXG4gICAgICAgICAgICA8JHt1bnNhZmVTdGF0aWMoVEFHX05BTUUuRUxFTUVOVCl9IGNsYXNzPVwic2JiLWZpbGUtc2VsZWN0b3JfX2ZpbGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1maWxlLXNlbGVjdG9yX19maWxlLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWZpbGUtc2VsZWN0b3JfX2ZpbGUtbmFtZVwiPiR7ZmlsZS5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWZpbGUtc2VsZWN0b3JfX2ZpbGUtc2l6ZVwiPiR7dGhpcy5fZm9ybWF0RmlsZVNpemUoZmlsZS5zaXplKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c2JiLXNlY29uZGFyeS1idXR0b25cbiAgICAgICAgICAgICAgICBzaXplPSR7dGhpcy5zaXplIHx8IG5vdGhpbmd9XG4gICAgICAgICAgICAgICAgaWNvbi1uYW1lPVwidHJhc2gtc21hbGxcIlxuICAgICAgICAgICAgICAgIEBjbGljaz0keygpID0+IHRoaXMuX3JlbW92ZUZpbGUoZmlsZSl9XG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0ke2Ake2kxOG5GaWxlU2VsZWN0b3JEZWxldGVGaWxlW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19IC0gJHtmaWxlLm5hbWV9YH1cbiAgICAgICAgICAgICAgPjwvc2JiLXNlY29uZGFyeS1idXR0b24+XG4gICAgICAgICAgICA8LyR7dW5zYWZlU3RhdGljKFRBR19OQU1FLkVMRU1FTlQpfT5gLFxuICAgICAgICApfVxuICAgICAgPC8ke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRS5XUkFQUEVSKX0+XG4gICAgYDtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgbGl0L2JpbmRpbmctcG9zaXRpb25zICovXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfb25EcmFnRW50ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgdGhpcy5fY291bnRlcisrO1xuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLmZvcm1EaXNhYmxlZCkge1xuICAgICAgICB0aGlzLl9zZXREcmFnU3RhdGUoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LCB0cnVlKTtcbiAgICAgICAgdGhpcy5fYmxvY2tFdmVudChldmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgdGhpcy5fY291bnRlci0tO1xuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJlxuICAgICAgICAhdGhpcy5mb3JtRGlzYWJsZWQgJiZcbiAgICAgICAgZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9kcmFnVGFyZ2V0ICYmXG4gICAgICAgIHRoaXMuX2NvdW50ZXIgPT09IDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLl9zZXREcmFnU3RhdGUoKTtcbiAgICAgICAgdGhpcy5fYmxvY2tFdmVudChldmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfb25GaWxlRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICB0aGlzLl9jb3VudGVyID0gMDtcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5mb3JtRGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5fc2V0RHJhZ1N0YXRlKCk7XG4gICAgICAgIHRoaXMuX2Jsb2NrRXZlbnQoZXZlbnQpO1xuICAgICAgICB0aGlzLmNyZWF0ZUZpbGVMaXN0KGV2ZW50LmRhdGFUcmFuc2ZlciEuZmlsZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2Jsb2NrRXZlbnQoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldERyYWdTdGF0ZShcbiAgICAgIGRyYWdUYXJnZXQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgICAgaXNEcmFnRW50ZXI6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICApOiB2b2lkIHtcbiAgICAgIHRoaXMuX2RyYWdUYXJnZXQgPSBkcmFnVGFyZ2V0O1xuICAgICAgdGhpcy50b2dnbGVTdGF0ZSgnYWN0aXZlJywgaXNEcmFnRW50ZXIpO1xuICAgICAgybVzdGF0ZUNvbnRyb2xsZXIodGhpcy5sb2FkQnV0dG9uKS50b2dnbGUoJ2FjdGl2ZScsIGlzRHJhZ0VudGVyKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIGNvbnN0IGFyaWFMYWJlbCA9IHRoaXMuYWNjZXNzaWJpbGl0eUxhYmVsXG4gICAgICAgID8gYCR7dGhpcy5nZXRCdXR0b25MYWJlbCgpfSAtICR7dGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWx9YFxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzYmItZmlsZS1zZWxlY3Rvcl9faW5wdXQtY29udGFpbmVyXCJcbiAgICAgICAgICBAZHJhZ2VudGVyPSR7dGhpcy5fb25EcmFnRW50ZXJ9XG4gICAgICAgICAgQGRyYWdvdmVyPSR7dGhpcy5fYmxvY2tFdmVudH1cbiAgICAgICAgICBAZHJhZ2xlYXZlPSR7dGhpcy5fb25EcmFnTGVhdmV9XG4gICAgICAgICAgQGRyb3A9JHt0aGlzLl9vbkZpbGVEcm9wfVxuICAgICAgICA+XG4gICAgICAgICAgJHt0aGlzLnJlbmRlclRlbXBsYXRlKFxuICAgICAgICAgICAgaHRtbGA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLmRpc2FibGVkIHx8IHRoaXMuZm9ybURpc2FibGVkfVxuICAgICAgICAgICAgICA/bXVsdGlwbGU9JHt0aGlzLm11bHRpcGxlfVxuICAgICAgICAgICAgICBhY2NlcHQ9JHt0aGlzLmFjY2VwdCB8fCBub3RoaW5nfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPSR7YXJpYUxhYmVsIHx8IG5vdGhpbmd9XG4gICAgICAgICAgICAgIEBjaGFuZ2U9JHt0aGlzLl9yZWFkRmlsZXN9XG4gICAgICAgICAgICAgIEBmb2N1cz0ke3RoaXMuX29uRm9jdXN9XG4gICAgICAgICAgICAgIEBibHVyPSR7dGhpcy5fb25CbHVyfVxuICAgICAgICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGlkZGVuSW5wdXQgPSBlbCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIC8+YCxcbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHBcbiAgICAgICAgICByb2xlPVwic3RhdHVzXCJcbiAgICAgICAgICBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIlxuICAgICAgICAgICR7cmVmKChwPzogRWxlbWVudCkgPT4gKHRoaXMuX2xpdmVSZWdpb24gPSBwIGFzIEhUTUxQYXJhZ3JhcGhFbGVtZW50KSl9XG4gICAgICAgID48L3A+XG4gICAgICAgICR7dGhpcy5maWxlcy5sZW5ndGggPiAwID8gdGhpcy5fcmVuZGVyRmlsZUxpc3QoKSA6IG5vdGhpbmd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZmlsZS1zZWxlY3Rvcl9fZXJyb3JcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZXJyb3JcIj48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgYDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkZpbGVTZWxlY3RvckNvbW1vbkVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkZpbGVTZWxlY3RvckNvbW1vbkVsZW1lbnRNaXhpblR5cGU+ICZcbiAgICBUO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUNnQ0EsSUFBYSxxQkFBYixjQUF3QyxNQUFLO0NBRzNDLElBQVcsUUFBSztFQUNkLE9BQU8sS0FBSztDQUNkO0NBRUEsWUFBbUIsT0FBc0I7RUFDdkMsTUFBTSxlQUFlO0dBQUUsU0FBUztHQUFNLFVBQVU7RUFBSSxDQUFFO0VBQ3RELEtBQUssU0FBUyxPQUFPLE9BQU8sU0FBUyxDQUFBLENBQUU7Q0FDekM7O0FBd0JGLElBQWEscUNBR1gsZUFDa0U7Q0EwVWxFLGNBelUyQztvQkFDakMsaUJBQWlCLHVCQUF1QixVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFEOUMscUNBQ0wsWUFBb0Q7OztJQVlmLEtBQUEsMEJBYmhDLGtCQUFBLE1BQUEsMEJBQUEsR0FBNEIsa0JBQUEsTUFBQSxvQkFhNkIsSUFBSTtJQUsxRCxLQUFBLDhCQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLHdCQUFvQixLQUFLO0lBSXpCLEtBQUEsa0NBQUEsa0JBQUEsTUFBQSwyQkFBQSxHQUFBLGtCQUFBLE1BQUEsNEJBQXlDLFNBQVM7SUFLbEQsS0FBQSw0QkFBQSxrQkFBQSxNQUFBLCtCQUFBLEdBQUEsa0JBQUEsTUFBQSxzQkFBaUIsRUFBRTtJQUtuQixLQUFBLHdDQUFBLGtCQUFBLE1BQUEseUJBQUEsR0FBQSxrQkFBQSxNQUFBLGtDQUE2QixFQUFFO0lBOEJ2QyxLQUFBLFVBQU0sa0JBQUEsTUFBQSxxQ0FBQSxHQUFxQixDQUFBO0lBVzNCLEtBQUEsWUFBc0I7S0FBQztLQUFLO0tBQU07S0FBTTtLQUFNO0lBQUk7SUFHaEQsS0FBQSxXQUFXLElBQUksc0JBQXNCLElBQUk7SUFJM0MsS0FBQSxX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