@sbb-esta/lyne-elements 3.10.0 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/action-group/action-group.component.js +1 -1
  2. package/alert/alert/alert.component.js +1 -1
  3. package/autocomplete/autocomplete-base-element.d.ts +5 -0
  4. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  5. package/autocomplete/autocomplete-base-element.js +72 -59
  6. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +1 -1
  7. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +1 -1
  8. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +1 -1
  9. package/badge.css +1 -0
  10. package/breadcrumb/breadcrumb/breadcrumb.component.js +4 -4
  11. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  12. package/button/common.js +1 -1
  13. package/button/mini-button/mini-button.component.js +1 -1
  14. package/button.js +1 -1
  15. package/calendar/calendar.component.d.ts +2 -1
  16. package/calendar/calendar.component.d.ts.map +1 -1
  17. package/calendar/calendar.component.js +1 -1
  18. package/card/card/card.component.js +1 -1
  19. package/card/card-badge/card-badge.component.js +1 -1
  20. package/carousel/carousel-list/carousel-list.component.d.ts +8 -3
  21. package/carousel/carousel-list/carousel-list.component.d.ts.map +1 -1
  22. package/carousel/carousel-list/carousel-list.component.js +62 -40
  23. package/checkbox/checkbox-group/checkbox-group.component.js +1 -1
  24. package/chip/chip/chip.component.js +1 -1
  25. package/chip/chip-group/chip-group.component.js +1 -1
  26. package/chip-label/chip-label.component.js +1 -1
  27. package/container/container/container.component.js +11 -11
  28. package/container/sticky-bar/sticky-bar.component.js +9 -9
  29. package/core/controllers/escapable-overlay-controller.d.ts +3 -0
  30. package/core/controllers/escapable-overlay-controller.d.ts.map +1 -1
  31. package/core/controllers/overlay-position-controller.d.ts +60 -0
  32. package/core/controllers/overlay-position-controller.d.ts.map +1 -0
  33. package/core/controllers/overlay-position-controller.js +224 -0
  34. package/core/controllers.d.ts +1 -0
  35. package/core/controllers.d.ts.map +1 -1
  36. package/core/controllers.js +12 -10
  37. package/core/mixins.js +1 -1
  38. package/core/overlay/overlay-option-panel.d.ts +2 -1
  39. package/core/overlay/overlay-option-panel.d.ts.map +1 -1
  40. package/core/overlay/overlay-option-panel.js +8 -5
  41. package/core/overlay/position.d.ts +2 -0
  42. package/core/overlay/position.d.ts.map +1 -1
  43. package/core/overlay/position.js +19 -17
  44. package/core/styles/core.scss +27 -2
  45. package/core/styles/layout.scss +4 -0
  46. package/core/styles/mixins/badge.scss +3 -0
  47. package/core/styles/mixins/layout.scss +5 -4
  48. package/core/styles/mixins/link.scss +0 -11
  49. package/core.css +21 -2
  50. package/custom-elements.json +2024 -417
  51. package/date-input/date-input.component.js +1 -1
  52. package/datepicker/datepicker-next-day/datepicker-next-day.component.js +1 -1
  53. package/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +1 -1
  54. package/datepicker/datepicker-toggle/datepicker-toggle.component.js +1 -1
  55. package/development/autocomplete/autocomplete-base-element.d.ts +5 -0
  56. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  57. package/development/autocomplete/autocomplete-base-element.js +25 -5
  58. package/development/breadcrumb/breadcrumb/breadcrumb.component.js +1 -2
  59. package/development/calendar/calendar.component.d.ts +2 -1
  60. package/development/calendar/calendar.component.d.ts.map +1 -1
  61. package/development/calendar/calendar.component.js +1 -1
  62. package/development/carousel/carousel-list/carousel-list.component.d.ts +8 -3
  63. package/development/carousel/carousel-list/carousel-list.component.d.ts.map +1 -1
  64. package/development/carousel/carousel-list/carousel-list.component.js +51 -19
  65. package/development/container/container/container.component.js +3 -3
  66. package/development/container/sticky-bar/sticky-bar.component.js +5 -5
  67. package/development/core/controllers/escapable-overlay-controller.d.ts +3 -0
  68. package/development/core/controllers/escapable-overlay-controller.d.ts.map +1 -1
  69. package/development/core/controllers/escapable-overlay-controller.js +1 -1
  70. package/development/core/controllers/overlay-position-controller.d.ts +60 -0
  71. package/development/core/controllers/overlay-position-controller.d.ts.map +1 -0
  72. package/development/core/controllers/overlay-position-controller.js +306 -0
  73. package/development/core/controllers.d.ts +1 -0
  74. package/development/core/controllers.d.ts.map +1 -1
  75. package/development/core/controllers.js +3 -1
  76. package/development/core/overlay/overlay-option-panel.d.ts +2 -1
  77. package/development/core/overlay/overlay-option-panel.d.ts.map +1 -1
  78. package/development/core/overlay/overlay-option-panel.js +6 -3
  79. package/development/core/overlay/position.d.ts +2 -0
  80. package/development/core/overlay/position.d.ts.map +1 -1
  81. package/development/core/overlay/position.js +3 -2
  82. package/development/footer/footer.component.js +3 -3
  83. package/development/header/header/header.component.js +3 -3
  84. package/development/lead-container/lead-container.component.js +8 -7
  85. package/development/link/common/block-link-common.js +2 -12
  86. package/development/link/common/inline-link-common.js +2 -10
  87. package/development/link/common/link-common.js +1 -1
  88. package/development/link/common.js +1 -1
  89. package/development/{link-common-DPLJx5Uo.js → link-common-BDFF9Oiz.js} +1 -3
  90. package/development/link-list/link-list-anchor/link-list-anchor.component.js +1 -2
  91. package/development/link.js +1 -1
  92. package/development/mini-calendar/mini-calendar/mini-calendar.component.d.ts +35 -0
  93. package/development/mini-calendar/mini-calendar/mini-calendar.component.d.ts.map +1 -0
  94. package/development/mini-calendar/mini-calendar/mini-calendar.component.js +199 -0
  95. package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts +23 -0
  96. package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts.map +1 -0
  97. package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.js +181 -0
  98. package/development/mini-calendar/mini-calendar-day.d.ts +5 -0
  99. package/development/mini-calendar/mini-calendar-day.d.ts.map +1 -0
  100. package/development/mini-calendar/mini-calendar-day.js +5 -0
  101. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts +25 -0
  102. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts.map +1 -0
  103. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +123 -0
  104. package/development/mini-calendar/mini-calendar-month.d.ts +5 -0
  105. package/development/mini-calendar/mini-calendar-month.d.ts.map +1 -0
  106. package/development/mini-calendar/mini-calendar-month.js +5 -0
  107. package/development/mini-calendar/mini-calendar.d.ts +5 -0
  108. package/development/mini-calendar/mini-calendar.d.ts.map +1 -0
  109. package/development/mini-calendar/mini-calendar.js +5 -0
  110. package/development/mini-calendar.d.ts +7 -0
  111. package/development/mini-calendar.d.ts.map +1 -0
  112. package/development/mini-calendar.js +9 -0
  113. package/development/paginator/common/paginator-common.d.ts +2 -1
  114. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  115. package/development/paginator/common/paginator-common.js +87 -49
  116. package/development/paginator/compact-paginator/compact-paginator.component.d.ts.map +1 -1
  117. package/development/paginator/compact-paginator/compact-paginator.component.js +3 -2
  118. package/development/paginator/paginator/paginator.component.d.ts +6 -0
  119. package/development/paginator/paginator/paginator.component.d.ts.map +1 -1
  120. package/development/paginator/paginator/paginator.component.js +19 -4
  121. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts +4 -1
  122. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts.map +1 -1
  123. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.js +5 -1
  124. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts +4 -1
  125. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts.map +1 -1
  126. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.component.js +5 -1
  127. package/development/tabs/tab/tab.component.d.ts +9 -0
  128. package/development/tabs/tab/tab.component.d.ts.map +1 -1
  129. package/development/tabs/tab/tab.component.js +48 -7
  130. package/development/tabs/tab-group/tab-group.component.d.ts +7 -3
  131. package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  132. package/development/tabs/tab-group/tab-group.component.js +19 -39
  133. package/development/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  134. package/development/tabs/tab-label/tab-label.component.js +4 -3
  135. package/development/tag/tag/tag.component.js +2 -1
  136. package/development/tooltip/tooltip.component.d.ts +11 -4
  137. package/development/tooltip/tooltip.component.d.ts.map +1 -1
  138. package/development/tooltip/tooltip.component.js +57 -78
  139. package/dialog/dialog/dialog.component.js +1 -1
  140. package/dialog/dialog-actions/dialog-actions.component.js +1 -1
  141. package/expansion-panel/expansion-panel/expansion-panel.component.js +1 -1
  142. package/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +1 -1
  143. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  144. package/file-selector/common.js +1 -1
  145. package/file-selector-common-BEWjyy75.js +5 -0
  146. package/file-selector.js +1 -1
  147. package/flip-card/flip-card/flip-card.component.js +1 -1
  148. package/flip-card/flip-card-summary/flip-card-summary.component.js +1 -1
  149. package/footer/footer.component.js +8 -8
  150. package/form-error/form-error.component.js +1 -1
  151. package/form-field/form-field/form-field.component.js +1 -1
  152. package/form-field/form-field-clear/form-field-clear.component.js +1 -1
  153. package/header/common/header-action-common.js +1 -1
  154. package/header/header/header.component.js +32 -32
  155. package/icon-sidebar-button-common-XcKoF2SP.js +7 -0
  156. package/index.d.ts +6 -0
  157. package/index.js +6 -0
  158. package/layout.css +9 -3
  159. package/lead-container/lead-container.component.js +8 -8
  160. package/link/common/block-link-common.js +25 -25
  161. package/link/common/inline-link-common.js +7 -7
  162. package/link/common/link-common.js +1 -1
  163. package/link/common.js +1 -1
  164. package/link-common-nA3q92jp.js +46 -0
  165. package/link-list/link-list/link-list.component.js +1 -1
  166. package/link-list/link-list-anchor/link-list-anchor.component.js +5 -5
  167. package/link.js +1 -1
  168. package/loading-indicator-circle/loading-indicator-circle.component.js +1 -1
  169. package/logo/logo.component.js +1 -1
  170. package/map-container/map-container.component.js +1 -1
  171. package/menu/common/menu-action-common.js +1 -1
  172. package/menu/menu/menu.component.js +1 -1
  173. package/mini-calendar/mini-calendar/mini-calendar.component.d.ts +35 -0
  174. package/mini-calendar/mini-calendar/mini-calendar.component.d.ts.map +1 -0
  175. package/mini-calendar/mini-calendar/mini-calendar.component.js +129 -0
  176. package/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts +23 -0
  177. package/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts.map +1 -0
  178. package/mini-calendar/mini-calendar-day/mini-calendar-day.component.js +66 -0
  179. package/mini-calendar/mini-calendar-day.d.ts +5 -0
  180. package/mini-calendar/mini-calendar-day.d.ts.map +1 -0
  181. package/mini-calendar/mini-calendar-day.js +4 -0
  182. package/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts +25 -0
  183. package/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts.map +1 -0
  184. package/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +59 -0
  185. package/mini-calendar/mini-calendar-month.d.ts +5 -0
  186. package/mini-calendar/mini-calendar-month.d.ts.map +1 -0
  187. package/mini-calendar/mini-calendar-month.js +4 -0
  188. package/mini-calendar/mini-calendar.d.ts +5 -0
  189. package/mini-calendar/mini-calendar.d.ts.map +1 -0
  190. package/mini-calendar/mini-calendar.js +4 -0
  191. package/mini-calendar.d.ts +7 -0
  192. package/mini-calendar.d.ts.map +1 -0
  193. package/mini-calendar.js +8 -0
  194. package/navigation/common/navigation-action-common.js +1 -1
  195. package/navigation/navigation/navigation.component.js +1 -1
  196. package/navigation/navigation-marker/navigation-marker.component.js +1 -1
  197. package/navigation/navigation-section/navigation-section.component.js +1 -1
  198. package/notification/notification.component.js +1 -1
  199. package/off-brand-theme.css +31 -5
  200. package/option/option/option.component.js +1 -1
  201. package/overlay/overlay.component.js +1 -1
  202. package/package.json +21 -1
  203. package/paginator/common/paginator-common.d.ts +2 -1
  204. package/paginator/common/paginator-common.d.ts.map +1 -1
  205. package/paginator/common/paginator-common.js +102 -81
  206. package/paginator/compact-paginator/compact-paginator.component.d.ts.map +1 -1
  207. package/paginator/compact-paginator/compact-paginator.component.js +2 -1
  208. package/paginator/paginator/paginator.component.d.ts +6 -0
  209. package/paginator/paginator/paginator.component.d.ts.map +1 -1
  210. package/paginator/paginator/paginator.component.js +57 -45
  211. package/popover/popover/popover.component.js +1 -1
  212. package/popover/popover-trigger/popover-trigger.component.js +1 -1
  213. package/radio-button/common.js +1 -1
  214. package/radio-button/radio-button-group/radio-button-group.component.js +1 -1
  215. package/radio-button-common-Bw2t3Sxz.js +5 -0
  216. package/radio-button.js +1 -1
  217. package/safety-theme.css +31 -5
  218. package/select/select.component.js +1 -1
  219. package/selection-expansion-panel/selection-expansion-panel.component.js +1 -1
  220. package/sidebar/common.js +1 -1
  221. package/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts +4 -1
  222. package/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts.map +1 -1
  223. package/sidebar/icon-sidebar-button/icon-sidebar-button.component.js +9 -6
  224. package/sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts +4 -1
  225. package/sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts.map +1 -1
  226. package/sidebar/icon-sidebar-link/icon-sidebar-link.component.js +13 -10
  227. package/sidebar/sidebar-container/sidebar-container.component.js +1 -1
  228. package/sidebar.js +1 -1
  229. package/signet/signet.component.js +1 -1
  230. package/slider/slider.component.js +1 -1
  231. package/standard-theme.css +31 -5
  232. package/stepper/step-label/step-label.component.js +1 -1
  233. package/stepper/stepper/stepper.component.js +1 -1
  234. package/tabs/tab/tab.component.d.ts +9 -0
  235. package/tabs/tab/tab.component.d.ts.map +1 -1
  236. package/tabs/tab/tab.component.js +37 -18
  237. package/tabs/tab-group/tab-group.component.d.ts +7 -3
  238. package/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  239. package/tabs/tab-group/tab-group.component.js +51 -52
  240. package/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  241. package/tabs/tab-label/tab-label.component.js +12 -12
  242. package/tag/tag/tag.component.js +4 -4
  243. package/teaser/teaser.component.js +1 -1
  244. package/teaser-hero/teaser-hero.component.js +1 -1
  245. package/teaser-product/common.js +1 -1
  246. package/teaser-product/teaser-product/teaser-product.component.js +1 -1
  247. package/teaser-product-common-Du28QCY3.js +5 -0
  248. package/teaser-product.js +1 -1
  249. package/time-input/time-input.component.js +1 -1
  250. package/timetable-occupancy/timetable-occupancy.component.js +1 -1
  251. package/timetable-occupancy-icon/timetable-occupancy-icon.component.js +1 -1
  252. package/toggle/toggle/toggle.component.js +1 -1
  253. package/toggle-check/toggle-check.component.js +1 -1
  254. package/tooltip/tooltip.component.d.ts +11 -4
  255. package/tooltip/tooltip.component.d.ts.map +1 -1
  256. package/tooltip/tooltip.component.js +60 -84
  257. package/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  258. package/train/train-formation/train-formation.component.js +1 -1
  259. package/train/train-wagon/train-wagon.component.js +1 -1
  260. package/transparent-button-DJIkG5hj.js +9 -0
  261. package/visual-checkbox/visual-checkbox.component.js +1 -1
  262. package/file-selector-common-D88J9PEh.js +0 -5
  263. package/icon-sidebar-button-common-BeRXvifI.js +0 -7
  264. package/link-common-BBKGg9HN.js +0 -46
  265. package/radio-button-common-Nm9ULjVb.js +0 -5
  266. package/teaser-product-common-DIra6aVg.js +0 -5
  267. package/transparent-button-Bg9fU_iZ.js +0 -9
@@ -1,10 +1,19 @@
1
1
  import { CSSResultGroup, TemplateResult, PropertyDeclaration, PropertyValues } from 'lit';
2
2
  import { SbbOpenCloseBaseElement } from '../core/base-elements.js';
3
+ /**
4
+ * Defines the default position for the tooltip if this element is used as a trigger.
5
+ */
6
+ export interface SbbTooltipDefaultPositions {
7
+ readonly tooltipPositions: string[];
8
+ }
3
9
  declare const SbbTooltipElement_base: import('../core/mixins.js').AbstractConstructor<import('../core/mixins.js').SbbDisabledMixinType> & typeof SbbOpenCloseBaseElement;
4
10
  /**
5
11
  * It displays text content within a tooltip.
6
12
  *
7
13
  * @slot - Use the unnamed slot to add the text into the tooltip.
14
+ * @cssprop [--sbb-overlay-position-area=block-end] - The primary position for the tooltip.
15
+ * @cssprop [--sbb-overlay-position-try-fallbacks=block-end span-inline-end, block-end span-inline-start, block-start, block-start span-inline-end, block-start span-inline-start] -
16
+ * The list of fallback positions, separated by ',', for the tooltip
8
17
  * @cssprop [--sbb-tooltip-z-index=var(--sbb-overlay-default-z-index)] - To specify a custom stack order,
9
18
  * the `z-index` can be overridden by defining this CSS variable. The default `z-index` of the
10
19
  * component is set to `var(--sbb-overlay-default-z-index)` with a value of `1000`.
@@ -14,7 +23,7 @@ export declare class SbbTooltipElement extends SbbTooltipElement_base {
14
23
  static styles: CSSResultGroup;
15
24
  private static _tooltipOutlet;
16
25
  /**
17
- * The element that will trigger the popover overlay.
26
+ * The element that will trigger the tooltip overlay.
18
27
  *
19
28
  * For attribute usage, provide an id reference.
20
29
  */
@@ -46,11 +55,11 @@ export declare class SbbTooltipElement extends SbbTooltipElement_base {
46
55
  set longPressCloseDelay(value: number);
47
56
  get longPressCloseDelay(): number;
48
57
  private _longPressCloseDelay?;
49
- protected overlay?: HTMLDivElement;
50
58
  private _triggerElement;
51
59
  private _triggerAbortController?;
52
60
  private _openStateController;
53
61
  private _escapableOverlayController;
62
+ private _overlayController;
54
63
  private _openTimeout?;
55
64
  private _closeTimeout?;
56
65
  private _longPressOpenTimeout?;
@@ -73,9 +82,7 @@ export declare class SbbTooltipElement extends SbbTooltipElement_base {
73
82
  private _attach;
74
83
  private _detach;
75
84
  private _destroy;
76
- private _setTooltipPosition;
77
85
  private _addTriggerEventHandlers;
78
- private _attachWindowEvents;
79
86
  private _isZeroAnimationDuration;
80
87
  private _resetOpenCloseTimeout;
81
88
  protected render(): TemplateResult;
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/tooltip/tooltip.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAIb,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;;AA6BnE;;;;;;;GAOG;AACH,qBAEM,iBAAkB,SAAQ,sBAAyC;IACvE,gBAAgC,IAAI,aAAa;IACjD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAU;IAUvC;;;;OAIG;IACH,SAEgB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEnD;;;;;OAKG;IACH,IACW,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAExC;IACD,IAAW,SAAS,IAAI,MAAM,CAE7B;IACD,OAAO,CAAC,UAAU,CAAuB;IAEzC;;;;;OAKG;IACH,IACW,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAEzC;IACD,IAAW,UAAU,IAAI,MAAM,CAE9B;IACD,OAAO,CAAC,WAAW,CAAuB;IAE1C;;;;;OAKG;IACH,IACW,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAE3C;IACD,IAAW,mBAAmB,IAAI,MAAM,CAEvC;IACD,OAAO,CAAC,oBAAoB,CAAC,CAAS;IAEtC,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAEnC,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,uBAAuB,CAAC,CAAkB;IAClD,OAAO,CAAC,oBAAoB,CAAmB;IAC/C,OAAO,CAAC,2BAA2B,CAA2C;IAC9E,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,OAAO,CAAC,aAAa,CAAC,CAAgC;IACtD,OAAO,CAAC,qBAAqB,CAAC,CAAgC;IAC9D,OAAO,CAAC,sBAAsB,CAAC,CAAgC;;IAwB/D,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAmCvC,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAM5C,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA2BpB,iBAAiB,IAAI,IAAI;IAYzB,oBAAoB,IAAI,IAAI;IAM5B,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;cAWY,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAKjE,IAAI,IAAI,IAAI;IAsBZ,KAAK,IAAI,IAAI;IAgBpB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,wBAAwB;IA0DhC,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,sBAAsB;cAKX,MAAM,IAAI,cAAc;CAW5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
1
+ {"version":3,"file":"tooltip.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/tooltip/tooltip.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAoBnE;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;CACrC;;AAYD;;;;;;;;;;GAUG;AACH,qBAEM,iBAAkB,SAAQ,sBAAyC;IACvE,gBAAgC,IAAI,aAAa;IACjD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAU;IAUvC;;;;OAIG;IACH,SAEgB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEnD;;;;;OAKG;IACH,IACW,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAExC;IACD,IAAW,SAAS,IAAI,MAAM,CAE7B;IACD,OAAO,CAAC,UAAU,CAAuB;IAEzC;;;;;OAKG;IACH,IACW,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAEzC;IACD,IAAW,UAAU,IAAI,MAAM,CAE9B;IACD,OAAO,CAAC,WAAW,CAAuB;IAE1C;;;;;OAKG;IACH,IACW,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAE3C;IACD,IAAW,mBAAmB,IAAI,MAAM,CAEvC;IACD,OAAO,CAAC,oBAAoB,CAAC,CAAS;IAEtC,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,uBAAuB,CAAC,CAAkB;IAClD,OAAO,CAAC,oBAAoB,CAAmB;IAC/C,OAAO,CAAC,2BAA2B,CAA2C;IAC9E,OAAO,CAAC,kBAAkB,CAA0C;IACpE,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,OAAO,CAAC,aAAa,CAAC,CAAgC;IACtD,OAAO,CAAC,qBAAqB,CAAC,CAAgC;IAC9D,OAAO,CAAC,sBAAsB,CAAC,CAAgC;;IA0B/D,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAkCvC,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAM5C,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA8CpB,iBAAiB,IAAI,IAAI;IAYzB,oBAAoB,IAAI,IAAI;IAM5B,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;cAWY,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAKjE,IAAI,IAAI,IAAI;IAsBZ,KAAK,IAAI,IAAI;IAgBpB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,wBAAwB;IA0DhC,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,sBAAsB;cAKX,MAAM,IAAI,cAAc;CAO5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
@@ -8,14 +8,13 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
8
8
  import { __esDecorate, __runInitializers } from "tslib";
9
9
  import { css, isServer, html } from "lit";
10
10
  import { customElement, property } from "lit/decorators.js";
11
- import { ref } from "lit/directives/ref.js";
12
11
  import { SbbOpenCloseBaseElement } from "../core/base-elements.js";
13
12
  import { readConfig } from "../core/config.js";
14
- import { SbbEscapableOverlayController } from "../core/controllers.js";
13
+ import { SbbEscapableOverlayController, SbbOverlayPositionController } from "../core/controllers.js";
15
14
  import { idReference } from "../core/decorators.js";
16
15
  import { queueDomContentLoaded, addToListAttribute, removeFromListAttribute, isZeroAnimationDuration, isAndroid, isIOS } from "../core/dom.js";
17
16
  import { SbbDisabledMixin } from "../core/mixins.js";
18
- import { sbbOverlayOutsidePointerEventListener, getElementPosition } from "../core/overlay.js";
17
+ import { sbbOverlayOutsidePointerEventListener } from "../core/overlay.js";
19
18
  const style = css`*,
20
19
  ::before,
21
20
  ::after {
@@ -23,13 +22,11 @@ const style = css`*,
23
22
  }
24
23
 
25
24
  :host {
26
- --sbb-tooltip-position: absolute;
27
- --sbb-tooltip-position-x: 0;
28
- --sbb-tooltip-position-y: 0;
29
25
  --sbb-tooltip-pointer-events: all;
26
+ --sbb-tooltip-min-width: var(--sbb-spacing-fixed-8x);
30
27
  --sbb-tooltip-max-width: min(
31
28
  25rem,
32
- calc(100% - var(--sbb-spacing-fixed-2x))
29
+ calc(100vw - var(--sbb-spacing-fixed-2x))
33
30
  );
34
31
  --sbb-tooltip-border-color: var(--sbb-background-color-1-inverted);
35
32
  --sbb-tooltip-border-radius: var(--sbb-border-radius-8x);
@@ -42,10 +39,25 @@ const style = css`*,
42
39
  );
43
40
  --sbb-tooltip-animation-easing: ease-out;
44
41
  --sbb-tooltip-animation-translate: 0 var(--sbb-spacing-fixed-2x);
42
+ --sbb-tooltip-gap: var(--sbb-spacing-fixed-2x);
43
+ --sbb-overlay-position-area: block-start;
44
+ --sbb-overlay-position-try-fallbacks:
45
+ block-start span-inline-end, block-start span-inline-start, block-end,
46
+ block-end span-inline-end, block-end span-inline-start;
47
+ position-area: var(--sbb-overlay-position-area);
48
+ position-try-fallbacks: var(--sbb-overlay-position-try-fallbacks);
45
49
  display: none;
46
50
  position: fixed;
47
- inset: 0;
51
+ background-color: transparent;
52
+ pointer-events: var(--sbb-tooltip-pointer-events);
48
53
  z-index: var(--sbb-tooltip-z-index, var(--sbb-overlay-default-z-index));
54
+ animation-name: var(--sbb-tooltip-animation-name);
55
+ animation-duration: var(--sbb-tooltip-animation-duration);
56
+ animation-timing-function: var(--sbb-tooltip-animation-easing);
57
+ border: none;
58
+ inset: initial;
59
+ padding: 0;
60
+ margin: 0;
49
61
  }
50
62
 
51
63
  :host([data-state]:not([data-state=closed])) {
@@ -58,12 +70,21 @@ const style = css`*,
58
70
  --sbb-tooltip-pointer-events: none;
59
71
  }
60
72
 
61
- :host([data-position=below]) {
62
- --sbb-tooltip-hover-patch-inset: calc(-1 * var(--sbb-spacing-fixed-4x)) 0;
73
+ :host(:is([data-position~=block-end], [data-position~=bottom], [data-position^=end])) {
74
+ padding-block-start: var(--sbb-tooltip-gap);
75
+ }
76
+
77
+ :host(:is([data-position~=block-start], [data-position~=top], [data-position^=start])) {
78
+ padding-block-end: var(--sbb-tooltip-gap);
63
79
  }
64
80
 
65
- :host([data-position=above]) {
66
- --sbb-tooltip-hover-patch-inset: 0 calc(-1 * var(--sbb-spacing-fixed-4x));
81
+ :host(:is([data-position~=inline-start],
82
+ [data-position~=inline-end],
83
+ [data-position~=left],
84
+ [data-position~=right],
85
+ [data-position$=" start"],
86
+ [data-position$=" end"])) {
87
+ padding-inline: var(--sbb-tooltip-gap);
67
88
  }
68
89
 
69
90
  .sbb-tooltip {
@@ -74,32 +95,13 @@ const style = css`*,
74
95
  line-height: var(--sbb-typo-line-height-body-text);
75
96
  letter-spacing: var(--sbb-typo-letter-spacing-body-text);
76
97
  font-size: var(--sbb-text-font-size);
77
- position: var(--sbb-tooltip-position);
78
- pointer-events: var(--sbb-tooltip-pointer-events);
79
- top: var(--sbb-tooltip-position-y);
80
- bottom: unset;
81
- left: var(--sbb-tooltip-position-x);
82
- right: unset;
83
98
  border: var(--sbb-border-width-1x) solid var(--sbb-tooltip-border-color);
84
99
  border-radius: var(--sbb-tooltip-border-radius);
85
100
  padding: var(--sbb-tooltip-padding);
86
- max-width: var(--sbb-tooltip-max-width);
87
- width: max-content;
88
101
  color: var(--sbb-tooltip-color);
89
102
  background-color: var(--sbb-tooltip-background-color);
90
- outline: none;
91
- animation-name: var(--sbb-tooltip-animation-name);
92
- animation-duration: var(--sbb-tooltip-animation-duration);
93
- animation-timing-function: var(--sbb-tooltip-animation-easing);
94
- }
95
- .sbb-tooltip::before {
96
- content: "";
97
- display: block;
98
- position: absolute;
99
- inset: 0;
100
- z-index: -1;
101
- background-color: transparent;
102
- inset-block: var(--sbb-tooltip-hover-patch-inset);
103
+ min-width: var(--sbb-tooltip-min-width);
104
+ max-width: var(--sbb-tooltip-max-width);
103
105
  }
104
106
 
105
107
  @keyframes open {
@@ -123,8 +125,6 @@ const style = css`*,
123
125
  }
124
126
  }`;
125
127
  const LONGPRESS_DELAY = 500;
126
- const VERTICAL_OFFSET = 8;
127
- const HORIZONTAL_OFFSET = 16;
128
128
  const isMobile = isAndroid || isIOS;
129
129
  const tooltipTriggers = /* @__PURE__ */ new WeakMap();
130
130
  let nextId = 0;
@@ -151,15 +151,17 @@ let SbbTooltipElement = (() => {
151
151
  this._closeDelay = null;
152
152
  this._triggerElement = null;
153
153
  this._escapableOverlayController = new SbbEscapableOverlayController(this);
154
+ this._overlayController = new SbbOverlayPositionController(this);
154
155
  this.addEventListener("mouseleave", (event) => {
155
156
  if ((this.state === "opened" || this.state === "opening") && (!event.relatedTarget || !this._triggerElement?.contains(event.relatedTarget))) {
156
157
  this._delayedClose();
157
158
  }
158
159
  }, { passive: true });
159
160
  this.addEventListener("overlayOutsidePointer", () => this.close(), { passive: true });
161
+ this.addEventListener("animationend", (e) => this._onTooltipAnimationEnd(e), { passive: true });
160
162
  }
161
163
  /**
162
- * The element that will trigger the popover overlay.
164
+ * The element that will trigger the tooltip overlay.
163
165
  *
164
166
  * For attribute usage, provide an id reference.
165
167
  */
@@ -209,10 +211,6 @@ let SbbTooltipElement = (() => {
209
211
  this._tooltipOutlet = document.createElement("div");
210
212
  this._tooltipOutlet.classList.add("sbb-overlay-outlet");
211
213
  document.body.appendChild(this._tooltipOutlet);
212
- const attributeMap = /* @__PURE__ */ new Map([
213
- ["sbb-tooltip-open-delay", "open-delay"],
214
- ["sbb-tooltip-close-delay", "close-delay"]
215
- ]);
216
214
  new MutationObserver((mutations) => {
217
215
  for (const mutation of mutations) {
218
216
  if (mutation.type === "attributes") {
@@ -225,7 +223,12 @@ let SbbTooltipElement = (() => {
225
223
  }
226
224
  }
227
225
  }).observe(document.documentElement, {
228
- attributeFilter: ["sbb-tooltip", ...attributeMap.keys()],
226
+ attributeFilter: [
227
+ "sbb-tooltip",
228
+ "sbb-tooltip-open-delay",
229
+ "sbb-tooltip-close-delay",
230
+ "sbb-tooltip-position"
231
+ ],
229
232
  childList: true,
230
233
  subtree: true
231
234
  });
@@ -247,6 +250,14 @@ let SbbTooltipElement = (() => {
247
250
  tooltip.textContent = tooltipMessage;
248
251
  tooltip.openDelay = triggerElement.hasAttribute("sbb-tooltip-open-delay") ? +triggerElement.getAttribute("sbb-tooltip-open-delay") : null;
249
252
  tooltip.closeDelay = triggerElement.hasAttribute("sbb-tooltip-close-delay") ? +triggerElement.getAttribute("sbb-tooltip-close-delay") : null;
253
+ const positions = triggerElement.hasAttribute("sbb-tooltip-position") ? triggerElement.getAttribute("sbb-tooltip-position").split(",").map((p) => p.trim()) : triggerElement.tooltipPositions;
254
+ if (positions && positions.length > 0) {
255
+ tooltip.style.setProperty("--sbb-overlay-position-area", positions[0]);
256
+ tooltip.style.setProperty("--sbb-overlay-position-try-fallbacks", positions.slice(1).join(", "));
257
+ } else {
258
+ tooltip.style.removeProperty("--sbb-overlay-position-area");
259
+ tooltip.style.removeProperty("--sbb-overlay-position-try-fallbacks");
260
+ }
250
261
  } else if (tooltip) {
251
262
  tooltipTriggers.delete(triggerElement);
252
263
  tooltip._destroy();
@@ -282,12 +293,12 @@ let SbbTooltipElement = (() => {
282
293
  }
283
294
  open() {
284
295
  this._resetOpenCloseTimeout();
285
- if (this.state !== "closed" && this.state !== "closing" || this.disabled || !this.overlay || !this.dispatchBeforeOpenEvent()) {
296
+ if (this.state !== "closed" && this.state !== "closing" || this.disabled || !this.trigger || !this.dispatchBeforeOpenEvent()) {
286
297
  return;
287
298
  }
288
299
  this.showPopover?.();
289
300
  this.state = "opening";
290
- this._setTooltipPosition();
301
+ this._overlayController.connect(this.trigger);
291
302
  if (this._isZeroAnimationDuration()) {
292
303
  this._handleOpening();
293
304
  }
@@ -309,7 +320,6 @@ let SbbTooltipElement = (() => {
309
320
  }
310
321
  _handleOpening() {
311
322
  this.state = "opened";
312
- this._attachWindowEvents();
313
323
  this._escapableOverlayController.connect();
314
324
  this.dispatchOpenEvent();
315
325
  }
@@ -320,6 +330,7 @@ let SbbTooltipElement = (() => {
320
330
  _handleClosing() {
321
331
  this.state = "closed";
322
332
  this.hidePopover?.();
333
+ this._overlayController.disconnect();
323
334
  this._escapableOverlayController.disconnect();
324
335
  this.dispatchCloseEvent();
325
336
  this._openStateController?.abort();
@@ -358,20 +369,6 @@ let SbbTooltipElement = (() => {
358
369
  this._detach();
359
370
  this.remove();
360
371
  }
361
- _setTooltipPosition() {
362
- if (!this.overlay || !this._triggerElement) {
363
- return;
364
- }
365
- const position = getElementPosition(this.overlay, this._triggerElement, this, {
366
- verticalOffset: VERTICAL_OFFSET,
367
- horizontalOffset: HORIZONTAL_OFFSET,
368
- centered: true,
369
- responsiveHeight: true
370
- });
371
- this.setAttribute("data-position", position.alignment.vertical);
372
- this.style.setProperty("--sbb-tooltip-position-x", `${position.left}px`);
373
- this.style.setProperty("--sbb-tooltip-position-y", `${position.top}px`);
374
- }
375
372
  _addTriggerEventHandlers() {
376
373
  const trigger = this._triggerElement;
377
374
  if (!trigger) {
@@ -407,20 +404,6 @@ let SbbTooltipElement = (() => {
407
404
  clearTimeout(this._longPressOpenTimeout);
408
405
  }, options);
409
406
  }
410
- _attachWindowEvents() {
411
- this._openStateController = new AbortController();
412
- document.addEventListener("scroll", () => this._setTooltipPosition(), {
413
- passive: true,
414
- signal: this._openStateController.signal,
415
- // Without capture, other scroll contexts would not bubble to this event listener.
416
- // Capture allows us to react to all scroll contexts in this DOM.
417
- capture: true
418
- });
419
- window.addEventListener("resize", () => this._setTooltipPosition(), {
420
- passive: true,
421
- signal: this._openStateController.signal
422
- });
423
- }
424
407
  _isZeroAnimationDuration() {
425
408
  return isZeroAnimationDuration(this, "--sbb-tooltip-animation-duration");
426
409
  }
@@ -430,11 +413,7 @@ let SbbTooltipElement = (() => {
430
413
  }
431
414
  render() {
432
415
  return html`
433
- <div
434
- @animationend=${this._onTooltipAnimationEnd}
435
- class="sbb-tooltip"
436
- ${ref((el) => this.overlay = el)}
437
- >
416
+ <div class="sbb-tooltip">
438
417
  <slot></slot>
439
418
  </div>
440
419
  `;
@@ -470,4 +449,4 @@ let SbbTooltipElement = (() => {
470
449
  export {
471
450
  SbbTooltipElement
472
451
  };
473
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLmpzJztcbmltcG9ydCB7IHJlYWRDb25maWcgfSBmcm9tICcuLi9jb3JlL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyBTYmJFc2NhcGFibGVPdmVybGF5Q29udHJvbGxlciB9IGZyb20gJy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHtcbiAgYWRkVG9MaXN0QXR0cmlidXRlLFxuICBpc0FuZHJvaWQsXG4gIGlzSU9TLFxuICBpc1plcm9BbmltYXRpb25EdXJhdGlvbixcbiAgcXVldWVEb21Db250ZW50TG9hZGVkLFxuICByZW1vdmVGcm9tTGlzdEF0dHJpYnV0ZSxcbn0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgU2JiRGlzYWJsZWRNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7IGdldEVsZW1lbnRQb3NpdGlvbiwgc2JiT3ZlcmxheU91dHNpZGVQb2ludGVyRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3Rvb2x0aXAuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBUaW1lIGJldHdlZW4gdGhlIHVzZXIgcHV0dGluZyB0aGUgcG9pbnRlciBvbiBhIHRvb2x0aXBcbiAqIHRyaWdnZXIgYW5kIHRoZSBsb25nIHByZXNzIGV2ZW50IGJlaW5nIGZpcmVkLlxuICovXG5jb25zdCBMT05HUFJFU1NfREVMQVkgPSA1MDA7XG5jb25zdCBWRVJUSUNBTF9PRkZTRVQgPSA4O1xuY29uc3QgSE9SSVpPTlRBTF9PRkZTRVQgPSAxNjtcblxuY29uc3QgaXNNb2JpbGUgPSBpc0FuZHJvaWQgfHwgaXNJT1M7XG5jb25zdCB0b29sdGlwVHJpZ2dlcnMgPSBuZXcgV2Vha01hcDxIVE1MRWxlbWVudCwgU2JiVG9vbHRpcEVsZW1lbnQ+KCk7XG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyB0ZXh0IGNvbnRlbnQgd2l0aGluIGEgdG9vbHRpcC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCB0aGUgdGV4dCBpbnRvIHRoZSB0b29sdGlwLlxuICogQGNzc3Byb3AgWy0tc2JiLXRvb2x0aXAtei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdG9vbHRpcCcpXG5jbGFzcyBTYmJUb29sdGlwRWxlbWVudCBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ3Rvb2x0aXAnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIHN0YXRpYyBfdG9vbHRpcE91dGxldDogRWxlbWVudDtcblxuICBzdGF0aWMge1xuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYmxvY2sgZXhlY3V0aW9uIGZvciBpbml0aWFsaXphdGlvbixcbiAgICAgIC8vIHNvIHdlIGRlZmVyIGl0IHVudGlsIHRoZSBET00gY29udGVudCBpcyBsb2FkZWQuXG4gICAgICBxdWV1ZURvbUNvbnRlbnRMb2FkZWQoKCkgPT4gdGhpcy5faW5pdGlhbGl6ZVRvb2x0aXBPdXRsZXQoKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBwb3BvdmVyIG92ZXJsYXkuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIHRvb2x0aXAgYWZ0ZXIgYSBnaXZlbiBkZWxheSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIEdsb2JhbCBjb25maWd1cmF0aW9uIGlzIHVzZWQgYXMgZGVmYXVsdCwgaWYgbm90IHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnb3Blbi1kZWxheScsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IG9wZW5EZWxheSh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgIHRoaXMuX29wZW5EZWxheSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgb3BlbkRlbGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW5EZWxheSA/PyByZWFkQ29uZmlnKCkudG9vbHRpcD8ub3BlbkRlbGF5ID8/IDA7XG4gIH1cbiAgcHJpdmF0ZSBfb3BlbkRlbGF5OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ2xvc2UgdGhlIHRvb2x0aXAgYWZ0ZXIgYSBnaXZlbiBkZWxheSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIEdsb2JhbCBjb25maWd1cmF0aW9uIGlzIHVzZWQgYXMgZGVmYXVsdCwgaWYgbm90IHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY2xvc2UtZGVsYXknLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIHNldCBjbG9zZURlbGF5KHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgdGhpcy5fY2xvc2VEZWxheSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgY2xvc2VEZWxheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jbG9zZURlbGF5ID8/IHJlYWRDb25maWcoKS50b29sdGlwPy5jbG9zZURlbGF5ID8/IDA7XG4gIH1cbiAgcHJpdmF0ZSBfY2xvc2VEZWxheTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgY2xvc2UgdGhlIHRvb2x0aXAgYWZ0ZXIgaXQgaGFzIGJlZW4gb3BlbiBieSBsb25nIHByZXNzLlxuICAgKiBHbG9iYWwgY29uZmlndXJhdGlvbiBpcyB1c2VkIGFzIGRlZmF1bHQsIGlmIG5vdCBzZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDE1MDBcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2xvbmctcHJlc3MtY2xvc2UtZGVsYXknLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIHNldCBsb25nUHJlc3NDbG9zZURlbGF5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9sb25nUHJlc3NDbG9zZURlbGF5ID0gK3ZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgbG9uZ1ByZXNzQ2xvc2VEZWxheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9sb25nUHJlc3NDbG9zZURlbGF5ID8/IHJlYWRDb25maWcoKS50b29sdGlwPy5sb25nUHJlc3NDbG9zZURlbGF5ID8/IDE1MDA7XG4gIH1cbiAgcHJpdmF0ZSBfbG9uZ1ByZXNzQ2xvc2VEZWxheT86IG51bWJlcjtcblxuICBwcm90ZWN0ZWQgb3ZlcmxheT86IEhUTUxEaXZFbGVtZW50O1xuXG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90cmlnZ2VyQWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9vcGVuU3RhdGVDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlciA9IG5ldyBTYmJFc2NhcGFibGVPdmVybGF5Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfb3BlblRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgcHJpdmF0ZSBfY2xvc2VUaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX2xvbmdQcmVzc09wZW5UaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX2xvbmdQcmVzc0Nsb3NlVGltZW91dD86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgLy8gVW50aWwgdGhlIG1vdXNlIGhvdmVycyB0aGUgdG9vbHRpcCwgaXQgc3RheXMgb3Blbi5cbiAgICAvLyBPbiAnbW91c2VsZWF2ZScgKGlmIHRoZSBtb3VzZSBpcyBub3QgbW92ZWQgb250byB0aGUgdHJpZ2dlciBhZ2FpbiksIGNsb3NlIGl0LlxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdtb3VzZWxlYXZlJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnIHx8IHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykgJiZcbiAgICAgICAgICAoIWV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgIXRoaXMuX3RyaWdnZXJFbGVtZW50Py5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLl9kZWxheWVkQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgcGFzc2l2ZTogdHJ1ZSB9LFxuICAgICk7XG5cbiAgICAvLyBBbnkgdXNlciBpbnRlcmFjdGlvbiBvdXRzaWRlIHRoZSB0b29sdGlwLCBjbG9zZXMgaXQgaW1tZWRpYXRlbHlcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ292ZXJsYXlPdXRzaWRlUG9pbnRlcicsICgpID0+IHRoaXMuY2xvc2UoKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2luaXRpYWxpemVUb29sdGlwT3V0bGV0KCk6IHZvaWQge1xuICAgIHRoaXMuX3Rvb2x0aXBPdXRsZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLl90b29sdGlwT3V0bGV0LmNsYXNzTGlzdC5hZGQoJ3NiYi1vdmVybGF5LW91dGxldCcpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fdG9vbHRpcE91dGxldCk7XG5cbiAgICAvLyBLZXk6IHRyaWdnZXIgYXR0cmlidXRlLCB2YWx1ZTogdG9vbHRpcCBhdHRyaWJ1dGVcbiAgICBjb25zdCBhdHRyaWJ1dGVNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXG4gICAgICBbJ3NiYi10b29sdGlwLW9wZW4tZGVsYXknLCAnb3Blbi1kZWxheSddLFxuICAgICAgWydzYmItdG9vbHRpcC1jbG9zZS1kZWxheScsICdjbG9zZS1kZWxheSddLFxuICAgIF0pO1xuXG4gICAgLy8gV2UgYXJlIHVzaW5nIE11dGF0aW9uT2JzZXJ2ZXIgZGlyZWN0bHkgaGVyZSwgYXMgaXQgd2lsbCBvbmx5IGJlIGNhbGxlZCBvbiBjbGllbnQgc2lkZSxcbiAgICAvLyBhbmQgd2UgZG8gbm90IG5lZWQgdG8gZGlzY29ubmVjdCBpdCwgYXMgd2Ugd2FudCBpdCB0byB3b3JrIGR1cmluZyB0aGUgZnVsbCBsaWZldGltZVxuICAgIC8vIG9mIHRoZSBwYWdlLlxuICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7XG4gICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnYXR0cmlidXRlcycpIHtcbiAgICAgICAgICB0aGlzLl9oYW5kbGVUb29sdGlwVHJpZ2dlcihtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIFsuLi5tdXRhdGlvbi5hZGRlZE5vZGVzLCAuLi5tdXRhdGlvbi5yZW1vdmVkTm9kZXNdLmZpbHRlcihcbiAgICAgICAgICAgIChuKTogbiBpcyBIVE1MRWxlbWVudCA9PiBuLm5vZGVUeXBlID09PSBuLkVMRU1FTlRfTk9ERSxcbiAgICAgICAgICApKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVUb29sdGlwVHJpZ2dlcihub2RlKTtcbiAgICAgICAgICAgIHRoaXMuX2ZpbmRBbmRIYW5kbGVUb29sdGlwVHJpZ2dlcnMobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydzYmItdG9vbHRpcCcsIC4uLmF0dHJpYnV0ZU1hcC5rZXlzKCldLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLl9maW5kQW5kSGFuZGxlVG9vbHRpcFRyaWdnZXJzKGRvY3VtZW50LmJvZHkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2ZpbmRBbmRIYW5kbGVUb29sdGlwVHJpZ2dlcnMocm9vdDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICByb290XG4gICAgICAucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJ1tzYmItdG9vbHRpcF0nKVxuICAgICAgLmZvckVhY2goKGUpID0+IHRoaXMuX2hhbmRsZVRvb2x0aXBUcmlnZ2VyKGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9oYW5kbGVUb29sdGlwVHJpZ2dlcih0cmlnZ2VyRWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0b29sdGlwTWVzc2FnZSA9IHRyaWdnZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnc2JiLXRvb2x0aXAnKTtcbiAgICBsZXQgdG9vbHRpcCA9IHRvb2x0aXBUcmlnZ2Vycy5nZXQodHJpZ2dlckVsZW1lbnQpO1xuXG4gICAgaWYgKHRvb2x0aXBNZXNzYWdlICYmIHRyaWdnZXJFbGVtZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICBpZiAoIXRvb2x0aXApIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHNiYi10b29sdGlwIGluIHRoZSBvdXRsZXQgYW5kIGF0dGFjaCBpdCB0byB0aGUgdHJpZ2dlclxuICAgICAgICB0b29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2JiLXRvb2x0aXAnKTtcbiAgICAgICAgdG9vbHRpcFRyaWdnZXJzLnNldCh0cmlnZ2VyRWxlbWVudCwgdG9vbHRpcCk7XG4gICAgICAgIHRoaXMuX3Rvb2x0aXBPdXRsZXQuYXBwZW5kQ2hpbGQodG9vbHRpcCk7XG4gICAgICAgIHRvb2x0aXAudHJpZ2dlciA9IHRyaWdnZXJFbGVtZW50O1xuICAgICAgfVxuXG4gICAgICB0b29sdGlwLnRleHRDb250ZW50ID0gdG9vbHRpcE1lc3NhZ2U7XG4gICAgICB0b29sdGlwLm9wZW5EZWxheSA9IHRyaWdnZXJFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc2JiLXRvb2x0aXAtb3Blbi1kZWxheScpXG4gICAgICAgID8gK3RyaWdnZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnc2JiLXRvb2x0aXAtb3Blbi1kZWxheScpIVxuICAgICAgICA6IG51bGw7XG4gICAgICB0b29sdGlwLmNsb3NlRGVsYXkgPSB0cmlnZ2VyRWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi10b29sdGlwLWNsb3NlLWRlbGF5JylcbiAgICAgICAgPyArdHJpZ2dlckVsZW1lbnQuZ2V0QXR0cmlidXRlKCdzYmItdG9vbHRpcC1jbG9zZS1kZWxheScpIVxuICAgICAgICA6IG51bGw7XG4gICAgfSBlbHNlIGlmICh0b29sdGlwKSB7XG4gICAgICAvLyBUaGUgdHJpZ2dlciBvciB0aGUgYXR0cmlidXRlIGhhcyBiZWVuIGRlbGV0ZWQgPT4gZGVsZXRlIHRoZSBjb25uZWN0ZWQgdG9vbHRpcFxuICAgICAgdG9vbHRpcFRyaWdnZXJzLmRlbGV0ZSh0cmlnZ2VyRWxlbWVudCk7XG4gICAgICB0b29sdGlwLl9kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgdGhpcy5pZCB8fD0gYHNiYi10b29sdGlwLSR7KytuZXh0SWR9YDtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgc2JiT3ZlcmxheU91dHNpZGVQb2ludGVyRXZlbnRMaXN0ZW5lci5jb25uZWN0KHRoaXMpO1xuXG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCAmJiB0aGlzLnRyaWdnZXIpIHtcbiAgICAgIHRoaXMuX2F0dGFjaCh0aGlzLnRyaWdnZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHNiYk92ZXJsYXlPdXRzaWRlUG9pbnRlckV2ZW50TGlzdGVuZXIuZGlzY29ubmVjdCh0aGlzKTtcbiAgICB0aGlzLl9kZXRhY2goKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgoIW5hbWUgfHwgbmFtZSA9PT0gJ3RyaWdnZXInKSAmJiB0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX2F0dGFjaCh0aGlzLnRyaWdnZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzKTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9hdHRhY2godGhpcy50cmlnZ2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0T3BlbkNsb3NlVGltZW91dCgpO1xuICAgIGlmIChcbiAgICAgICh0aGlzLnN0YXRlICE9PSAnY2xvc2VkJyAmJiB0aGlzLnN0YXRlICE9PSAnY2xvc2luZycpIHx8XG4gICAgICB0aGlzLmRpc2FibGVkIHx8XG4gICAgICAhdGhpcy5vdmVybGF5IHx8XG4gICAgICAhdGhpcy5kaXNwYXRjaEJlZm9yZU9wZW5FdmVudCgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93UG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICB0aGlzLl9zZXRUb29sdGlwUG9zaXRpb24oKTtcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0T3BlbkNsb3NlVGltZW91dCgpO1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJyAmJiB0aGlzLnN0YXRlICE9PSAnb3BlbmluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudCgpO1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2RlbGF5ZWRPcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0T3BlbkNsb3NlVGltZW91dCgpO1xuICAgIHRoaXMuX29wZW5UaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLm9wZW4oKSwgdGhpcy5vcGVuRGVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgdGhpcy5fYXR0YWNoV2luZG93RXZlbnRzKCk7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hPcGVuRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlbGF5ZWRDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTtcbiAgICB0aGlzLl9jbG9zZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xvc2UoKSwgdGhpcy5jbG9zZURlbGF5KTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuaGlkZVBvcG92ZXI/LigpO1xuXG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gICAgdGhpcy5fb3BlblN0YXRlQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uVG9vbHRpcEFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2godHJpZ2dlcjogSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICAvLyBFdmVudHVhbGx5IGRldGFjaCBmcm9tIHRoZSBvbGQgdHJpZ2dlclxuICAgICAgdGhpcy5fZGV0YWNoKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyO1xuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYWRkVG9MaXN0QXR0cmlidXRlKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnYXJpYS1kZXNjcmliZWRieScsIHRoaXMuaWQpO1xuICAgIHRoaXMuX2FkZFRyaWdnZXJFdmVudEhhbmRsZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIF9kZXRhY2goKTogdm9pZCB7XG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9vcGVuU3RhdGVDb250cm9sbGVyPy5hYm9ydCgpO1xuXG4gICAgLy8gY2xlYXIgdGltZW91dHNcbiAgICB0aGlzLl9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NDbG9zZVRpbWVvdXQpO1xuXG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZW1vdmVGcm9tTGlzdEF0dHJpYnV0ZSh0aGlzLl90cmlnZ2VyRWxlbWVudCwgJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLmlkKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2RldGFjaCgpO1xuICAgIHRoaXMucmVtb3ZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRUb29sdGlwUG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXkgfHwgIXRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9zaXRpb24gPSBnZXRFbGVtZW50UG9zaXRpb24odGhpcy5vdmVybGF5LCB0aGlzLl90cmlnZ2VyRWxlbWVudCwgdGhpcywge1xuICAgICAgdmVydGljYWxPZmZzZXQ6IFZFUlRJQ0FMX09GRlNFVCxcbiAgICAgIGhvcml6b250YWxPZmZzZXQ6IEhPUklaT05UQUxfT0ZGU0VULFxuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICByZXNwb25zaXZlSGVpZ2h0OiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLXBvc2l0aW9uJywgcG9zaXRpb24uYWxpZ25tZW50LnZlcnRpY2FsKTtcblxuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXRvb2x0aXAtcG9zaXRpb24teCcsIGAke3Bvc2l0aW9uLmxlZnR9cHhgKTtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi10b29sdGlwLXBvc2l0aW9uLXknLCBgJHtwb3NpdGlvbi50b3B9cHhgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZFRyaWdnZXJFdmVudEhhbmRsZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHRyaWdnZXIgPSB0aGlzLl90cmlnZ2VyRWxlbWVudDtcbiAgICBpZiAoIXRyaWdnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgY29uc3Qgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9O1xuXG4gICAgaWYgKCFpc01vYmlsZSkge1xuICAgICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4gdGhpcy5fZGVsYXllZE9wZW4oKSwgb3B0aW9ucyk7XG4gICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdtb3VzZWxlYXZlJyxcbiAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3VGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBOb2RlIHwgbnVsbDtcbiAgICAgICAgICBpZiAoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQgIT09IHRoaXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2RlbGF5ZWRDbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICk7XG5cbiAgICAgIC8vICdibHVycycgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIHRvb2x0aXAgYmVjYXVzZSBpdCBpcyBjb25zaWRlcmVkIGFuICdpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGVsZW1lbnRzJ1xuICAgICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4gdGhpcy5jbG9zZSgpLCBvcHRpb25zKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB0aGlzLl9kZWxheWVkT3BlbigpLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyBMb25nLXByZXNzIGV2ZW50IGhhbmRsaW5nIChtYWlubHkgZm9yIG1vYmlsZSB1c2VycylcbiAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAndG91Y2hzdGFydCcsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NPcGVuVGltZW91dCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NDbG9zZVRpbWVvdXQpO1xuICAgICAgICB0aGlzLl9sb25nUHJlc3NPcGVuVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vcGVuKCksIExPTkdQUkVTU19ERUxBWSk7XG4gICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICApO1xuICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICd0b3VjaGVuZCcsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NPcGVuVGltZW91dCk7XG4gICAgICAgIHRoaXMuX2xvbmdQcmVzc0Nsb3NlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLmxvbmdQcmVzc0Nsb3NlRGVsYXkpO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcbiAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAndG91Y2hjYW5jZWwnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGFjaFdpbmRvd0V2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9vcGVuU3RhdGVDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHRoaXMuX3NldFRvb2x0aXBQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuU3RhdGVDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIC8vIFdpdGhvdXQgY2FwdHVyZSwgb3RoZXIgc2Nyb2xsIGNvbnRleHRzIHdvdWxkIG5vdCBidWJibGUgdG8gdGhpcyBldmVudCBsaXN0ZW5lci5cbiAgICAgIC8vIENhcHR1cmUgYWxsb3dzIHVzIHRvIHJlYWN0IHRvIGFsbCBzY3JvbGwgY29udGV4dHMgaW4gdGhpcyBET00uXG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLl9zZXRUb29sdGlwUG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblN0YXRlQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLXRvb2x0aXAtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX29wZW5UaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VUaW1lb3V0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdlxuICAgICAgICBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25Ub29sdGlwQW5pbWF0aW9uRW5kfVxuICAgICAgICBjbGFzcz1cInNiYi10b29sdGlwXCJcbiAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMub3ZlcmxheSA9IGVsIGFzIEhUTUxEaXZFbGVtZW50KSl9XG4gICAgICA+XG4gICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10b29sdGlwJzogU2JiVG9vbHRpcEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0NBLE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0sb0JBQW9CO0FBRTFCLE1BQU0sV0FBVyxhQUFhO0FBQzlCLE1BQU0sc0NBQXNCLFFBQUE7QUFDNUIsSUFBSSxTQUFTO0lBWVAscUJBQWlCLE1BQUE7OzBCQUR0QixjQUFjLGFBQWEsQ0FBQzs7OztvQkFDRyxpQkFBaUIsdUJBQXVCOzs7Ozs7OztBQUFoRCxFQUFBLG1CQUFRLFlBQXlDO0FBQUEsSUErRXZFLGNBQUE7QUFDRSxZQUFBO0FBM0RGO0FBQWdCLHlCQUFBLDRCQXJCWixrQkFBQSxNQUFBLDBCQUFBLEdBQWlCLGtCQUFBLE1BQUEsdUJBcUJ5QixJQUFJO0FBZTFDLFdBQUEsY0FBVSxrQkFBQSxNQUFBLDBCQUFBLEdBQWtCO0FBZTVCLFdBQUEsY0FBNkI7QUFtQjdCLFdBQUEsa0JBQXNDO0FBR3RD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
452
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4uL2NvcmUvY29uZmlnLmpzJztcbmltcG9ydCB7XG4gIFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLFxuICBTYmJPdmVybGF5UG9zaXRpb25Db250cm9sbGVyLFxufSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGlkUmVmZXJlbmNlIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7XG4gIGFkZFRvTGlzdEF0dHJpYnV0ZSxcbiAgaXNBbmRyb2lkLFxuICBpc0lPUyxcbiAgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24sXG4gIHF1ZXVlRG9tQ29udGVudExvYWRlZCxcbiAgcmVtb3ZlRnJvbUxpc3RBdHRyaWJ1dGUsXG59IGZyb20gJy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyBzYmJPdmVybGF5T3V0c2lkZVBvaW50ZXJFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vY29yZS9vdmVybGF5LmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdG9vbHRpcC5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIERlZmluZXMgdGhlIGRlZmF1bHQgcG9zaXRpb24gZm9yIHRoZSB0b29sdGlwIGlmIHRoaXMgZWxlbWVudCBpcyB1c2VkIGFzIGEgdHJpZ2dlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYmJUb29sdGlwRGVmYXVsdFBvc2l0aW9ucyB7XG4gIHJlYWRvbmx5IHRvb2x0aXBQb3NpdGlvbnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRpbWUgYmV0d2VlbiB0aGUgdXNlciBwdXR0aW5nIHRoZSBwb2ludGVyIG9uIGEgdG9vbHRpcFxuICogdHJpZ2dlciBhbmQgdGhlIGxvbmcgcHJlc3MgZXZlbnQgYmVpbmcgZmlyZWQuXG4gKi9cbmNvbnN0IExPTkdQUkVTU19ERUxBWSA9IDUwMDtcblxuY29uc3QgaXNNb2JpbGUgPSBpc0FuZHJvaWQgfHwgaXNJT1M7XG5jb25zdCB0b29sdGlwVHJpZ2dlcnMgPSBuZXcgV2Vha01hcDxIVE1MRWxlbWVudCwgU2JiVG9vbHRpcEVsZW1lbnQ+KCk7XG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyB0ZXh0IGNvbnRlbnQgd2l0aGluIGEgdG9vbHRpcC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCB0aGUgdGV4dCBpbnRvIHRoZSB0b29sdGlwLlxuICogQGNzc3Byb3AgWy0tc2JiLW92ZXJsYXktcG9zaXRpb24tYXJlYT1ibG9jay1lbmRdIC0gVGhlIHByaW1hcnkgcG9zaXRpb24gZm9yIHRoZSB0b29sdGlwLlxuICogQGNzc3Byb3AgWy0tc2JiLW92ZXJsYXktcG9zaXRpb24tdHJ5LWZhbGxiYWNrcz1ibG9jay1lbmQgc3Bhbi1pbmxpbmUtZW5kLCBibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQsIGJsb2NrLXN0YXJ0LCBibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQsIGJsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0XSAtXG4gKiBUaGUgbGlzdCBvZiBmYWxsYmFjayBwb3NpdGlvbnMsIHNlcGFyYXRlZCBieSAnLCcsIGZvciB0aGUgdG9vbHRpcFxuICogQGNzc3Byb3AgWy0tc2JiLXRvb2x0aXAtei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdG9vbHRpcCcpXG5jbGFzcyBTYmJUb29sdGlwRWxlbWVudCBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ3Rvb2x0aXAnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIHN0YXRpYyBfdG9vbHRpcE91dGxldDogRWxlbWVudDtcblxuICBzdGF0aWMge1xuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYmxvY2sgZXhlY3V0aW9uIGZvciBpbml0aWFsaXphdGlvbixcbiAgICAgIC8vIHNvIHdlIGRlZmVyIGl0IHVudGlsIHRoZSBET00gY29udGVudCBpcyBsb2FkZWQuXG4gICAgICBxdWV1ZURvbUNvbnRlbnRMb2FkZWQoKCkgPT4gdGhpcy5faW5pdGlhbGl6ZVRvb2x0aXBPdXRsZXQoKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSB0b29sdGlwIG92ZXJsYXkuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIHRvb2x0aXAgYWZ0ZXIgYSBnaXZlbiBkZWxheSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIEdsb2JhbCBjb25maWd1cmF0aW9uIGlzIHVzZWQgYXMgZGVmYXVsdCwgaWYgbm90IHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnb3Blbi1kZWxheScsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IG9wZW5EZWxheSh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgIHRoaXMuX29wZW5EZWxheSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgb3BlbkRlbGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW5EZWxheSA/PyByZWFkQ29uZmlnKCkudG9vbHRpcD8ub3BlbkRlbGF5ID8/IDA7XG4gIH1cbiAgcHJpdmF0ZSBfb3BlbkRlbGF5OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ2xvc2UgdGhlIHRvb2x0aXAgYWZ0ZXIgYSBnaXZlbiBkZWxheSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIEdsb2JhbCBjb25maWd1cmF0aW9uIGlzIHVzZWQgYXMgZGVmYXVsdCwgaWYgbm90IHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY2xvc2UtZGVsYXknLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIHNldCBjbG9zZURlbGF5KHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgdGhpcy5fY2xvc2VEZWxheSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgY2xvc2VEZWxheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jbG9zZURlbGF5ID8/IHJlYWRDb25maWcoKS50b29sdGlwPy5jbG9zZURlbGF5ID8/IDA7XG4gIH1cbiAgcHJpdmF0ZSBfY2xvc2VEZWxheTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgY2xvc2UgdGhlIHRvb2x0aXAgYWZ0ZXIgaXQgaGFzIGJlZW4gb3BlbiBieSBsb25nIHByZXNzLlxuICAgKiBHbG9iYWwgY29uZmlndXJhdGlvbiBpcyB1c2VkIGFzIGRlZmF1bHQsIGlmIG5vdCBzZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDE1MDBcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2xvbmctcHJlc3MtY2xvc2UtZGVsYXknLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIHNldCBsb25nUHJlc3NDbG9zZURlbGF5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9sb25nUHJlc3NDbG9zZURlbGF5ID0gK3ZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgbG9uZ1ByZXNzQ2xvc2VEZWxheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9sb25nUHJlc3NDbG9zZURlbGF5ID8/IHJlYWRDb25maWcoKS50b29sdGlwPy5sb25nUHJlc3NDbG9zZURlbGF5ID8/IDE1MDA7XG4gIH1cbiAgcHJpdmF0ZSBfbG9uZ1ByZXNzQ2xvc2VEZWxheT86IG51bWJlcjtcblxuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckFib3J0Q29udHJvbGxlcj86IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfb3BlblN0YXRlQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIgPSBuZXcgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX292ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYk92ZXJsYXlQb3NpdGlvbkNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX29wZW5UaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX2Nsb3NlVGltZW91dD86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIF9sb25nUHJlc3NPcGVuVGltZW91dD86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIF9sb25nUHJlc3NDbG9zZVRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIC8vIFVudGlsIHRoZSBtb3VzZSBob3ZlcnMgdGhlIHRvb2x0aXAsIGl0IHN0YXlzIG9wZW4uXG4gICAgLy8gT24gJ21vdXNlbGVhdmUnIChpZiB0aGUgbW91c2UgaXMgbm90IG1vdmVkIG9udG8gdGhlIHRyaWdnZXIgYWdhaW4pLCBjbG9zZSBpdC5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnbW91c2VsZWF2ZScsXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICh0aGlzLnN0YXRlID09PSAnb3BlbmVkJyB8fCB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpICYmXG4gICAgICAgICAgKCFldmVudC5yZWxhdGVkVGFyZ2V0IHx8ICF0aGlzLl90cmlnZ2VyRWxlbWVudD8uY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fZGVsYXllZENsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IHBhc3NpdmU6IHRydWUgfSxcbiAgICApO1xuXG4gICAgLy8gQW55IHVzZXIgaW50ZXJhY3Rpb24gb3V0c2lkZSB0aGUgdG9vbHRpcCBjbG9zZXMgaXQgaW1tZWRpYXRlbHlcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ292ZXJsYXlPdXRzaWRlUG9pbnRlcicsICgpID0+IHRoaXMuY2xvc2UoKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCAoZSkgPT4gdGhpcy5fb25Ub29sdGlwQW5pbWF0aW9uRW5kKGUpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfaW5pdGlhbGl6ZVRvb2x0aXBPdXRsZXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdG9vbHRpcE91dGxldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuX3Rvb2x0aXBPdXRsZXQuY2xhc3NMaXN0LmFkZCgnc2JiLW92ZXJsYXktb3V0bGV0Jyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLl90b29sdGlwT3V0bGV0KTtcblxuICAgIC8vIFdlIGFyZSB1c2luZyBNdXRhdGlvbk9ic2VydmVyIGRpcmVjdGx5IGhlcmUsIGFzIGl0IHdpbGwgb25seSBiZSBjYWxsZWQgb24gY2xpZW50IHNpZGUsXG4gICAgLy8gYW5kIHdlIGRvIG5vdCBuZWVkIHRvIGRpc2Nvbm5lY3QgaXQsIGFzIHdlIHdhbnQgaXQgdG8gd29yayBkdXJpbmcgdGhlIGZ1bGwgbGlmZXRpbWVcbiAgICAvLyBvZiB0aGUgcGFnZS5cbiAgICBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnKSB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlVG9vbHRpcFRyaWdnZXIobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChtdXRhdGlvbi50eXBlID09PSAnY2hpbGRMaXN0Jykge1xuICAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBbLi4ubXV0YXRpb24uYWRkZWROb2RlcywgLi4ubXV0YXRpb24ucmVtb3ZlZE5vZGVzXS5maWx0ZXIoXG4gICAgICAgICAgICAobik6IG4gaXMgSFRNTEVsZW1lbnQgPT4gbi5ub2RlVHlwZSA9PT0gbi5FTEVNRU5UX05PREUsXG4gICAgICAgICAgKSkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlVG9vbHRpcFRyaWdnZXIobm9kZSk7XG4gICAgICAgICAgICB0aGlzLl9maW5kQW5kSGFuZGxlVG9vbHRpcFRyaWdnZXJzKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFtcbiAgICAgICAgJ3NiYi10b29sdGlwJyxcbiAgICAgICAgJ3NiYi10b29sdGlwLW9wZW4tZGVsYXknLFxuICAgICAgICAnc2JiLXRvb2x0aXAtY2xvc2UtZGVsYXknLFxuICAgICAgICAnc2JiLXRvb2x0aXAtcG9zaXRpb24nLFxuICAgICAgXSxcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5fZmluZEFuZEhhbmRsZVRvb2x0aXBUcmlnZ2Vycyhkb2N1bWVudC5ib2R5KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9maW5kQW5kSGFuZGxlVG9vbHRpcFRyaWdnZXJzKHJvb3Q6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgcm9vdFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCdbc2JiLXRvb2x0aXBdJylcbiAgICAgIC5mb3JFYWNoKChlKSA9PiB0aGlzLl9oYW5kbGVUb29sdGlwVHJpZ2dlcihlKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfaGFuZGxlVG9vbHRpcFRyaWdnZXIodHJpZ2dlckVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3QgdG9vbHRpcE1lc3NhZ2UgPSB0cmlnZ2VyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3NiYi10b29sdGlwJyk7XG4gICAgbGV0IHRvb2x0aXAgPSB0b29sdGlwVHJpZ2dlcnMuZ2V0KHRyaWdnZXJFbGVtZW50KTtcblxuICAgIGlmICh0b29sdGlwTWVzc2FnZSAmJiB0cmlnZ2VyRWxlbWVudC5pc0Nvbm5lY3RlZCkge1xuICAgICAgaWYgKCF0b29sdGlwKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBzYmItdG9vbHRpcCBpbiB0aGUgb3V0bGV0IGFuZCBhdHRhY2ggaXQgdG8gdGhlIHRyaWdnZXJcbiAgICAgICAgdG9vbHRpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NiYi10b29sdGlwJyk7XG4gICAgICAgIHRvb2x0aXBUcmlnZ2Vycy5zZXQodHJpZ2dlckVsZW1lbnQsIHRvb2x0aXApO1xuICAgICAgICB0aGlzLl90b29sdGlwT3V0bGV0LmFwcGVuZENoaWxkKHRvb2x0aXApO1xuICAgICAgICB0b29sdGlwLnRyaWdnZXIgPSB0cmlnZ2VyRWxlbWVudDtcbiAgICAgIH1cblxuICAgICAgdG9vbHRpcC50ZXh0Q29udGVudCA9IHRvb2x0aXBNZXNzYWdlO1xuICAgICAgdG9vbHRpcC5vcGVuRGVsYXkgPSB0cmlnZ2VyRWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi10b29sdGlwLW9wZW4tZGVsYXknKVxuICAgICAgICA/ICt0cmlnZ2VyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3NiYi10b29sdGlwLW9wZW4tZGVsYXknKSFcbiAgICAgICAgOiBudWxsO1xuICAgICAgdG9vbHRpcC5jbG9zZURlbGF5ID0gdHJpZ2dlckVsZW1lbnQuaGFzQXR0cmlidXRlKCdzYmItdG9vbHRpcC1jbG9zZS1kZWxheScpXG4gICAgICAgID8gK3RyaWdnZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnc2JiLXRvb2x0aXAtY2xvc2UtZGVsYXknKSFcbiAgICAgICAgOiBudWxsO1xuXG4gICAgICAvLyBSZWFkIHRoZSBwb3NpdGlvbnMgZnJvbSB0aGUgdHJpZ2dlciAoZWl0aGVyIGZyb20gdGhlIGF0dHJpYnV0ZSBvciB0aGUgcHJvcGVydHkpXG4gICAgICBjb25zdCBwb3NpdGlvbnMgPSB0cmlnZ2VyRWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi10b29sdGlwLXBvc2l0aW9uJylcbiAgICAgICAgPyB0cmlnZ2VyRWxlbWVudFxuICAgICAgICAgICAgLmdldEF0dHJpYnV0ZSgnc2JiLXRvb2x0aXAtcG9zaXRpb24nKSFcbiAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKChwKSA9PiBwLnRyaW0oKSlcbiAgICAgICAgOiAodHJpZ2dlckVsZW1lbnQgYXMgdW5rbm93biBhcyBTYmJUb29sdGlwRGVmYXVsdFBvc2l0aW9ucykudG9vbHRpcFBvc2l0aW9ucztcblxuICAgICAgaWYgKHBvc2l0aW9ucyAmJiBwb3NpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0b29sdGlwLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEnLCBwb3NpdGlvbnNbMF0pO1xuICAgICAgICB0b29sdGlwLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICctLXNiYi1vdmVybGF5LXBvc2l0aW9uLXRyeS1mYWxsYmFja3MnLFxuICAgICAgICAgIHBvc2l0aW9ucy5zbGljZSgxKS5qb2luKCcsICcpLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9vbHRpcC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhJyk7XG4gICAgICAgIHRvb2x0aXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLW92ZXJsYXktcG9zaXRpb24tdHJ5LWZhbGxiYWNrcycpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG9vbHRpcCkge1xuICAgICAgLy8gVGhlIHRyaWdnZXIgb3IgdGhlIGF0dHJpYnV0ZSBoYXMgYmVlbiBkZWxldGVkID0+IGRlbGV0ZSB0aGUgY29ubmVjdGVkIHRvb2x0aXBcbiAgICAgIHRvb2x0aXBUcmlnZ2Vycy5kZWxldGUodHJpZ2dlckVsZW1lbnQpO1xuICAgICAgdG9vbHRpcC5fZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMucG9wb3ZlciA9ICdtYW51YWwnO1xuICAgIHRoaXMuaWQgfHw9IGBzYmItdG9vbHRpcC0keysrbmV4dElkfWA7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHNiYk92ZXJsYXlPdXRzaWRlUG9pbnRlckV2ZW50TGlzdGVuZXIuY29ubmVjdCh0aGlzKTtcblxuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQgJiYgdGhpcy50cmlnZ2VyKSB7XG4gICAgICB0aGlzLl9hdHRhY2godGhpcy50cmlnZ2VyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBzYmJPdmVybGF5T3V0c2lkZVBvaW50ZXJFdmVudExpc3RlbmVyLmRpc2Nvbm5lY3QodGhpcyk7XG4gICAgdGhpcy5fZGV0YWNoKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKCFuYW1lIHx8IG5hbWUgPT09ICd0cmlnZ2VyJykgJiYgdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9hdHRhY2godGhpcy50cmlnZ2VyKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlcyk6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fYXR0YWNoKHRoaXMudHJpZ2dlcik7XG4gIH1cblxuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTtcbiAgICBpZiAoXG4gICAgICAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgJiYgdGhpcy5zdGF0ZSAhPT0gJ2Nsb3NpbmcnKSB8fFxuICAgICAgdGhpcy5kaXNhYmxlZCB8fFxuICAgICAgIXRoaXMudHJpZ2dlciB8fFxuICAgICAgIXRoaXMuZGlzcGF0Y2hCZWZvcmVPcGVuRXZlbnQoKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1BvcG92ZXI/LigpO1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5fb3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCh0aGlzLnRyaWdnZXIpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzZXRPcGVuQ2xvc2VUaW1lb3V0KCk7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnICYmIHRoaXMuc3RhdGUgIT09ICdvcGVuaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGlzcGF0Y2hCZWZvcmVDbG9zZUV2ZW50KCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBjbG9zZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVsYXllZE9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzZXRPcGVuQ2xvc2VUaW1lb3V0KCk7XG4gICAgdGhpcy5fb3BlblRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMub3BlbigpLCB0aGlzLm9wZW5EZWxheSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICB0aGlzLl9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5jb25uZWN0KCk7XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVsYXllZENsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0T3BlbkNsb3NlVGltZW91dCgpO1xuICAgIHRoaXMuX2Nsb3NlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLmNsb3NlRGVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy5oaWRlUG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5fb3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuXG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gICAgdGhpcy5fb3BlblN0YXRlQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uVG9vbHRpcEFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2godHJpZ2dlcjogSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICAvLyBFdmVudHVhbGx5IGRldGFjaCBmcm9tIHRoZSBvbGQgdHJpZ2dlclxuICAgICAgdGhpcy5fZGV0YWNoKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyO1xuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYWRkVG9MaXN0QXR0cmlidXRlKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnYXJpYS1kZXNjcmliZWRieScsIHRoaXMuaWQpO1xuICAgIHRoaXMuX2FkZFRyaWdnZXJFdmVudEhhbmRsZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIF9kZXRhY2goKTogdm9pZCB7XG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9vcGVuU3RhdGVDb250cm9sbGVyPy5hYm9ydCgpO1xuXG4gICAgLy8gY2xlYXIgdGltZW91dHNcbiAgICB0aGlzLl9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NDbG9zZVRpbWVvdXQpO1xuXG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZW1vdmVGcm9tTGlzdEF0dHJpYnV0ZSh0aGlzLl90cmlnZ2VyRWxlbWVudCwgJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLmlkKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2RldGFjaCgpO1xuICAgIHRoaXMucmVtb3ZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hZGRUcmlnZ2VyRXZlbnRIYW5kbGVycygpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyID0gdGhpcy5fdHJpZ2dlckVsZW1lbnQ7XG4gICAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IG9wdGlvbnM6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICAgICAgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgfTtcblxuICAgIGlmICghaXNNb2JpbGUpIHtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHRoaXMuX2RlbGF5ZWRPcGVuKCksIG9wdGlvbnMpO1xuICAgICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnbW91c2VsZWF2ZScsXG4gICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1RhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSB8IG51bGw7XG4gICAgICAgICAgaWYgKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0ICE9PSB0aGlzKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWxheWVkQ2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApO1xuXG4gICAgICAvLyAnYmx1cnMnIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSB0b29sdGlwIGJlY2F1c2UgaXQgaXMgY29uc2lkZXJlZCBhbiAnaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBlbGVtZW50cydcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHRoaXMuY2xvc2UoKSwgb3B0aW9ucyk7XG4gICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4gdGhpcy5fZGVsYXllZE9wZW4oKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gTG9uZy1wcmVzcyBldmVudCBoYW5kbGluZyAobWFpbmx5IGZvciBtb2JpbGUgdXNlcnMpXG4gICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3RvdWNoc3RhcnQnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzQ2xvc2VUaW1lb3V0KTtcbiAgICAgICAgdGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMub3BlbigpLCBMT05HUFJFU1NfREVMQVkpO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcbiAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAndG91Y2hlbmQnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgICAgICB0aGlzLl9sb25nUHJlc3NDbG9zZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xvc2UoKSwgdGhpcy5sb25nUHJlc3NDbG9zZURlbGF5KTtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgICk7XG4gICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3RvdWNoY2FuY2VsJyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2xvbmdQcmVzc09wZW5UaW1lb3V0KTtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLXRvb2x0aXAtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX29wZW5UaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VUaW1lb3V0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi10b29sdGlwXCI+XG4gICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10b29sdGlwJzogU2JiVG9vbHRpcEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5Q0EsTUFBTSxrQkFBa0I7QUFFeEIsTUFBTSxXQUFXLGFBQWE7QUFDOUIsTUFBTSxzQ0FBc0IsUUFBQTtBQUM1QixJQUFJLFNBQVM7SUFlUCxxQkFBaUIsTUFBQTs7MEJBRHRCLGNBQWMsYUFBYSxDQUFDOzs7O29CQUNHLGlCQUFpQix1QkFBdUI7Ozs7Ozs7O0FBQWhELEVBQUEsbUJBQVEsWUFBeUM7QUFBQSxJQThFdkUsY0FBQTtBQUNFLFlBQUE7QUExREY7QUFBZ0IseUJBQUEsNEJBckJaLGtCQUFBLE1BQUEsMEJBQUEsR0FBaUIsa0JBQUEsTUFBQSx1QkFxQnlCLElBQUk7QUFlMUMsV0FBQSxjQUFVLGtCQUFBLE1BQUEsMEJBQUEsR0FBa0I7QUFlNUIsV0FBQSxjQUE2QjtBQWlCN0IsV0FBQSxrQkFBc0M7QUFHdEMsV0FBQSw4QkFBOEIsSUFBSSw4QkFBOEIsSUFBSTtBQUNwRSxXQUFBLHFCQUFxQixJQUFJLDZCQUE2QixJQUFJO0FBV2hFLFdBQUssaUJBQ0gsY0FDQSxDQUFDLFVBQVM7QUFDUixhQUNHLEtBQUssVUFBVSxZQUFZLEtBQUssVUFBVSxlQUMxQyxDQUFDLE1BQU0saUJBQWlCLENBQUMsS0FBSyxpQkFBaUIsU0FBUyxNQUFNLGFBQXFCLElBQ3BGO0FBQ0EsZUFBSyxjQUFBO0FBQUEsUUFDUDtBQUFBLE1BQ0YsR0FDQSxFQUFFLFNBQVMsTUFBTTtBQUluQixXQUFLLGlCQUFpQix5QkFBeUIsTUFBTSxLQUFLLFNBQVMsRUFBRSxTQUFTLE1BQU07QUFFcEYsV0FBSyxpQkFBaUIsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxTQUFTLEtBQUEsQ0FBTTtBQUFBLElBQ2hHO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBL0VBLElBQWdCLFVBQU87QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQXZCLElBQWdCLFFBQU8sT0FBQTtBQUFBLHlCQUFBLDJCQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBU3ZCLElBQVcsVUFBVSxPQUFvQjtBQUN2QyxXQUFLLGFBQWE7QUFBQSxJQUNwQjtBQUFBLElBQ0EsSUFBVyxZQUFTO0FBQ2xCLGFBQU8sS0FBSyxjQUFjLFdBQUEsRUFBYSxTQUFTLGFBQWE7QUFBQSxJQUMvRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBVUEsSUFBVyxXQUFXLE9BQW9CO0FBQ3hDLFdBQUssY0FBYztBQUFBLElBQ3JCO0FBQUEsSUFDQSxJQUFXLGFBQVU7QUFDbkIsYUFBTyxLQUFLLGVBQWUsV0FBQSxFQUFhLFNBQVMsY0FBYztBQUFBLElBQ2pFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFVQSxJQUFXLG9CQUFvQixPQUFhO0FBQzFDLFdBQUssdUJBQXVCLENBQUM7QUFBQSxJQUMvQjtBQUFBLElBQ0EsSUFBVyxzQkFBbUI7QUFDNUIsYUFBTyxLQUFLLHdCQUF3QixXQUFBLEVBQWEsU0FBUyx1QkFBdUI7QUFBQSxJQUNuRjtBQUFBLElBcUNRLE9BQU8sMkJBQXdCO0FBQ3JDLFdBQUssaUJBQWlCLFNBQVMsY0FBYyxLQUFLO0FBQ2xELFdBQUssZUFBZSxVQUFVLElBQUksb0JBQW9CO0FBQ3RELGVBQVMsS0FBSyxZQUFZLEtBQUssY0FBYztBQUs3QyxVQUFJLGlCQUFpQixDQUFDLGNBQWE7QUFDakMsbUJBQVcsWUFBWSxXQUFXO0FBQ2hDLGNBQUksU0FBUyxTQUFTLGNBQWM7QUFDbEMsaUJBQUssc0JBQXNCLFNBQVMsTUFBcUI7QUFBQSxVQUMzRCxXQUFXLFNBQVMsU0FBUyxhQUFhO0FBQ3hDLHVCQUFXLFFBQVEsQ0FBQyxHQUFHLFNBQVMsWUFBWSxHQUFHLFNBQVMsWUFBWSxFQUFFLE9BQ3BFLENBQUMsTUFBd0IsRUFBRSxhQUFhLEVBQUUsWUFBWSxHQUNyRDtBQUNELG1CQUFLLHNCQUFzQixJQUFJO0FBQy9CLG1CQUFLLDhCQUE4QixJQUFJO0FBQUEsWUFDekM7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUFBLE1BQ0YsQ0FBQyxFQUFFLFFBQVEsU0FBUyxpQkFBaUI7QUFBQSxRQUNuQyxpQkFBaUI7QUFBQSxVQUNmO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsUUFBQTtBQUFBLFFBRUYsV0FBVztBQUFBLFFBQ1gsU0FBUztBQUFBLE1BQUEsQ0FDVjtBQUNELFdBQUssOEJBQThCLFNBQVMsSUFBSTtBQUFBLElBQ2xEO0FBQUEsSUFFUSxPQUFPLDhCQUE4QixNQUFpQjtBQUM1RCxXQUNHLGlCQUE4QixlQUFlLEVBQzdDLFFBQVEsQ0FBQyxNQUFNLEtBQUssc0JBQXNCLENBQUMsQ0FBQztBQUFBLElBQ2pEO0FBQUEsSUFFUSxPQUFPLHNCQUFzQixnQkFBMkI7QUFDOUQsWUFBTSxpQkFBaUIsZUFBZSxhQUFhLGFBQWE7QUFDaEUsVUFBSSxVQUFVLGdCQUFnQixJQUFJLGNBQWM7QUFFaEQsVUFBSSxrQkFBa0IsZUFBZSxhQUFhO0FBQ2hELFlBQUksQ0FBQyxTQUFTO0FBRVosb0JBQVUsU0FBUyxjQUFjLGFBQWE7QUFDOUMsMEJBQWdCLElBQUksZ0JBQWdCLE9BQU87QUFDM0MsZUFBSyxlQUFlLFlBQVksT0FBTztBQUN2QyxrQkFBUSxVQUFVO0FBQUEsUUFDcEI7QUFFQSxnQkFBUSxjQUFjO0FBQ3RCLGdCQUFRLFlBQVksZUFBZSxhQUFhLHdCQUF3QixJQUNwRSxDQUFDLGVBQWUsYUFBYSx3QkFBd0IsSUFDckQ7QUFDSixnQkFBUSxhQUFhLGVBQWUsYUFBYSx5QkFBeUIsSUFDdEUsQ0FBQyxlQUFlLGFBQWEseUJBQXlCLElBQ3REO0FBR0osY0FBTSxZQUFZLGVBQWUsYUFBYSxzQkFBc0IsSUFDaEUsZUFDRyxhQUFhLHNCQUFzQixFQUNuQyxNQUFNLEdBQUcsRUFDVCxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUEsQ0FBTSxJQUNyQixlQUF5RDtBQUU5RCxZQUFJLGFBQWEsVUFBVSxTQUFTLEdBQUc7QUFDckMsa0JBQVEsTUFBTSxZQUFZLCtCQUErQixVQUFVLENBQUMsQ0FBQztBQUNyRSxrQkFBUSxNQUFNLFlBQ1osd0NBQ0EsVUFBVSxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQztBQUFBLFFBRWpDLE9BQU87QUFDTCxrQkFBUSxNQUFNLGVBQWUsNkJBQTZCO0FBQzFELGtCQUFRLE1BQU0sZUFBZSxzQ0FBc0M7QUFBQSxRQUNyRTtBQUFBLE1BQ0YsV0FBVyxTQUFTO0FBRWxCLHdCQUFnQixPQUFPLGNBQWM7QUFDckMsZ0JBQVEsU0FBQTtBQUFBLE1BQ1Y7QUFBQSxJQUNGO0FBQUEsSUFFZ0Isb0JBQWlCO0FBQy9CLFlBQU0sa0JBQUE7QUFDTixXQUFLLFVBQVU7QUFDZixXQUFLLE9BQU8sZUFBZSxFQUFFLE1BQU07QUFDbkMsV0FBSyxRQUFRO0FBQ2IsNENBQXNDLFFBQVEsSUFBSTtBQUVsRCxVQUFJLEtBQUssY0FBYyxLQUFLLFNBQVM7QUFDbkMsYUFBSyxRQUFRLEtBQUssT0FBTztBQUFBLE1BQzNCO0FBQUEsSUFDRjtBQUFBLElBRWdCLHVCQUFvQjtBQUNsQyxZQUFNLHFCQUFBO0FBQ04sNENBQXNDLFdBQVcsSUFBSTtBQUNyRCxXQUFLLFFBQUE7QUFBQSxJQUNQO0FBQUEsSUFFZ0IsY0FDZCxNQUNBLFVBQ0EsU0FBNkI7QUFFN0IsWUFBTSxjQUFjLE1BQU0sVUFBVSxPQUFPO0FBQzNDLFVBQUksVUFBVTtBQUNaO0FBQUEsTUFDRjtBQUVBLFdBQUssQ0FBQyxRQUFRLFNBQVMsY0FBYyxLQUFLLFlBQVk7QUFDcEQsYUFBSyxRQUFRLEtBQUssT0FBTztBQUFBLE1BQzNCO0FBQUEsSUFDRjtBQUFBLElBRW1CLGFBQWEsbUJBQWlDO0FBQy9ELFlBQU0sYUFBYSxpQkFBaUI7QUFDcEMsV0FBSyxRQUFRLEtBQUssT0FBTztBQUFBLElBQzNCO0FBQUEsSUFFTyxPQUFJO0FBQ1QsV0FBSyx1QkFBQTtBQUNMLFVBQ0csS0FBSyxVQUFVLFlBQVksS0FBSyxVQUFVLGFBQzNDLEtBQUssWUFDTCxDQUFDLEtBQUssV0FDTixDQUFDLEtBQUssMkJBQ047QUFDQTtBQUFBLE1BQ0Y7QUFFQSxXQUFLLGNBQUE7QUFDTCxXQUFLLFFBQVE7QUFDYixXQUFLLG1CQUFtQixRQUFRLEtBQUssT0FBTztBQUk1QyxVQUFJLEtBQUssNEJBQTRCO0FBQ25DLGFBQUssZUFBQTtBQUFBLE1BQ1A7QUFBQSxJQUNGO0FBQUEsSUFFTyxRQUFLO0FBQ1YsV0FBSyx1QkFBQTtBQUNMLFVBQUksS0FBSyxVQUFVLFlBQVksS0FBSyxVQUFVLFdBQVc7QUFDdkQ7QUFBQSxNQUNGO0FBRUEsV0FBSyx5QkFBQTtBQUNMLFdBQUssUUFBUTtBQUliLFVBQUksS0FBSyw0QkFBNEI7QUFDbkMsYUFBSyxlQUFBO0FBQUEsTUFDUDtBQUFBLElBQ0Y7QUFBQSxJQUVRLGVBQVk7QUFDbEIsV0FBSyx1QkFBQTtBQUNMLFdBQUssZUFBZSxXQUFXLE1BQU0sS0FBSyxLQUFBLEdBQVEsS0FBSyxTQUFTO0FBQUEsSUFDbEU7QUFBQSxJQUVRLGlCQUFjO0FBQ3BCLFdBQUssUUFBUTtBQUNiLFdBQUssNEJBQTRCLFFBQUE7QUFDakMsV0FBSyxrQkFBQTtBQUFBLElBQ1A7QUFBQSxJQUVRLGdCQUFhO0FBQ25CLFdBQUssdUJBQUE7QUFDTCxXQUFLLGdCQUFnQixXQUFXLE1BQU0sS0FBSyxNQUFBLEdBQVMsS0FBSyxVQUFVO0FBQUEsSUFDckU7QUFBQSxJQUVRLGlCQUFjO0FBQ3BCLFdBQUssUUFBUTtBQUNiLFdBQUssY0FBQTtBQUNMLFdBQUssbUJBQW1CLFdBQUE7QUFFeEIsV0FBSyw0QkFBNEIsV0FBQTtBQUNqQyxXQUFLLG1CQUFBO0FBQ0wsV0FBSyxzQkFBc0IsTUFBQTtBQUFBLElBQzdCO0FBQUEsSUFFUSx1QkFBdUIsT0FBcUI7QUFDbEQsVUFBSSxNQUFNLGtCQUFrQixVQUFVLEtBQUssVUFBVSxXQUFXO0FBQzlELGFBQUssZUFBQTtBQUFBLE1BQ1AsV0FBVyxNQUFNLGtCQUFrQixXQUFXLEtBQUssVUFBVSxXQUFXO0FBQ3RFLGFBQUssZUFBQTtBQUFBLE1BQ1A7QUFBQSxJQUNGO0FBQUEsSUFFUSxRQUFRLFNBQTJCO0FBQ3pDLFVBQUksS0FBSyxpQkFBaUI7QUFFeEIsYUFBSyxRQUFBO0FBQUEsTUFDUDtBQUVBLFdBQUssa0JBQWtCO0FBQ3ZCLFVBQUksQ0FBQyxLQUFLLGlCQUFpQjtBQUN6QjtBQUFBLE1BQ0Y7QUFDQSx5QkFBbUIsS0FBSyxpQkFBaUIsb0JBQW9CLEtBQUssRUFBRTtBQUNwRSxXQUFLLHlCQUFBO0FBQUEsSUFDUDtBQUFBLElBRVEsVUFBTztBQUNiLFdBQUsseUJBQXlCLE1BQUE7QUFDOUIsV0FBSyxzQkFBc0IsTUFBQTtBQUczQixXQUFLLHVCQUFBO0FBQ0wsbUJBQWEsS0FBSyxxQkFBcUI7QUFDdkMsbUJBQWEsS0FBSyxzQkFBc0I7QUFFeEMsVUFBSSxDQUFDLEtBQUssaUJBQWlCO0FBQ3pCO0FBQUEsTUFDRjtBQUNBLDhCQUF3QixLQUFLLGlCQUFpQixvQkFBb0IsS0FBSyxFQUFFO0FBQ3pFLFdBQUssa0JBQWtCO0FBQUEsSUFDekI7QUFBQSxJQUVRLFdBQVE7QUFDZCxXQUFLLFFBQUE7QUFDTCxXQUFLLE9BQUE7QUFBQSxJQUNQO0FBQUEsSUFFUSwyQkFBd0I7QUFDOUIsWUFBTSxVQUFVLEtBQUs7QUFDckIsVUFBSSxDQUFDLFNBQVM7QUFDWjtBQUFBLE1BQ0Y7QUFFQSxXQUFLLHlCQUF5QixNQUFBO0FBQzlCLFdBQUssMEJBQTBCLElBQUksZ0JBQUE7QUFDbkMsWUFBTSxVQUFtQztBQUFBLFFBQ3ZDLFFBQVEsS0FBSyx3QkFBd0I7QUFBQSxRQUNyQyxTQUFTO0FBQUEsTUFBQTtBQUdYLFVBQUksQ0FBQyxVQUFVO0FBQ2IsZ0JBQVEsaUJBQWlCLGNBQWMsTUFBTSxLQUFLLGFBQUEsR0FBZ0IsT0FBTztBQUN6RSxnQkFBUSxpQkFDTixjQUNBLENBQUMsVUFBUztBQUNSLGdCQUFNLFlBQVksTUFBTTtBQUN4QixjQUFJLENBQUMsYUFBYSxjQUFjLE1BQU07QUFDcEMsaUJBQUssY0FBQTtBQUFBLFVBQ1A7QUFBQSxRQUNGLEdBQ0EsT0FBTztBQUlULGdCQUFRLGlCQUFpQixRQUFRLE1BQU0sS0FBSyxNQUFBLEdBQVMsT0FBTztBQUM1RCxnQkFBUSxpQkFBaUIsU0FBUyxNQUFNLEtBQUssYUFBQSxHQUFnQixPQUFPO0FBQUEsTUFDdEU7QUFHQSxjQUFRLGlCQUNOLGNBQ0EsTUFBSztBQUNILHFCQUFhLEtBQUsscUJBQXFCO0FBQ3ZDLHFCQUFhLEtBQUssc0JBQXNCO0FBQ3hDLGFBQUssd0JBQXdCLFdBQVcsTUFBTSxLQUFLLEtBQUEsR0FBUSxlQUFlO0FBQUEsTUFDNUUsR0FDQSxPQUFPO0FBRVQsY0FBUSxpQkFDTixZQUNBLE1BQUs7QUFDSCxxQkFBYSxLQUFLLHFCQUFxQjtBQUN2QyxhQUFLLHlCQUF5QixXQUFXLE1BQU0sS0FBSyxNQUFBLEdBQVMsS0FBSyxtQkFBbUI7QUFBQSxNQUN2RixHQUNBLE9BQU87QUFFVCxjQUFRLGlCQUNOLGVBQ0EsTUFBSztBQUNILHFCQUFhLEtBQUsscUJBQXFCO0FBQUEsTUFDekMsR0FDQSxPQUFPO0FBQUEsSUFFWDtBQUFBLElBRVEsMkJBQXdCO0FBQzlCLGFBQU8sd0JBQXdCLE1BQU0sa0NBQWtDO0FBQUEsSUFDekU7QUFBQSxJQUVRLHlCQUFzQjtBQUM1QixtQkFBYSxLQUFLLFlBQVk7QUFDOUIsbUJBQWEsS0FBSyxhQUFhO0FBQUEsSUFDakM7QUFBQSxJQUVtQixTQUFNO0FBQ3ZCLGFBQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBS1Q7QUFBQSxLQWpZQTs7MkJBRkMsZUFDQSxVQUFVO2lDQVNWLFNBQVMsRUFBRSxXQUFXLGNBQWMsTUFBTSxPQUFBLENBQVEsQ0FBQztrQ0FlbkQsU0FBUyxFQUFFLFdBQVcsZUFBZSxNQUFNLE9BQUEsQ0FBUSxDQUFDOzJDQWVwRCxTQUFTLEVBQUUsV0FBVywwQkFBMEIsTUFBTSxPQUFBLENBQVEsQ0FBQztBQXRDaEUsaUJBQUEsSUFBQSxNQUFBLHFCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsV0FBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxhQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBZ0IsU0FBTyxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBUCxVQUFPO0FBQUEsSUFBQSxLQUFBLFVBQUEsVUFBQSxHQUFBLHVCQUFBLDBCQUFBO0FBU3ZCLGlCQUFBLElBQUEsTUFBQSwyQkFBQSxFQUFBLE1BQUEsVUFBQSxNQUFBLGFBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsZUFBQSxLQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFXLFlBQVM7QUFBQSxJQUFBLEtBQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSwwQkFBQTtBQWVwQixpQkFBQSxJQUFBLE1BQUEsNEJBQUEsRUFBQSxNQUFBLFVBQUEsTUFBQSxjQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGdCQUFBLEtBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVcsYUFBVTtBQUFBLElBQUEsS0FBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLDBCQUFBO0FBZXJCLGlCQUFBLElBQUEsTUFBQSxxQ0FBQSxFQUFBLE1BQUEsVUFBQSxNQUFBLHVCQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLHlCQUFBLEtBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVcsc0JBQW1CO0FBQUEsSUFBQSxLQUFBLFVBQUEsVUFBQSxHQUFBLE1BQUEsMEJBQUE7QUE1RGhDLGlCQUFBLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFDa0MsR0FBQSxPQUFPLFdBQ2hCLEdBQUEsU0FBeUIsUUFJaEQsTUFBQTtBQUNFLFFBQUksQ0FBQyxVQUFVO0FBR2IsNEJBQXNCLE1BQU0sV0FBSywwQkFBMEI7QUFBQSxJQUM3RDtBQUFBLEVBQUEsTUFYRSxrQkFBQSxZQUFBLHVCQUFBLEdBQWtCOzs7In0=
@@ -12,7 +12,7 @@ import { isZeroAnimationDuration as I } from "../../core/dom.js";
12
12
  import { SbbOverlayBaseElement as R, overlayRefs as $ } from "../../overlay.js";
13
13
  import { css as L } from "lit";
14
14
  import "../../screen-reader-only.js";
15
- const P = L`*,:before,:after{box-sizing:border-box}:host{--sbb-scrollbar-thumb-width: .125rem;--sbb-scrollbar-thumb-width-hover: .25rem;--sbb-scrollbar-width-firefox: thin;--sbb-scrollbar-color: color-mix(in srgb, var(--sbb-color-black) 30%, transparent);--sbb-scrollbar-color: light-dark( color-mix(in srgb, var(--sbb-color-black) 30%, transparent), color-mix(in srgb, var(--sbb-color-white) 30%, transparent) );--sbb-scrollbar-color-hover: color-mix(in srgb, var(--sbb-color-black) 60%, transparent);--sbb-scrollbar-color-hover: light-dark( color-mix(in srgb, var(--sbb-color-black) 60%, transparent), color-mix(in srgb, var(--sbb-color-white) 60%, transparent) );--sbb-scrollbar-track-color: transparent;--sbb-dialog-padding-inline: var(--sbb-spacing-fixed-5x);--sbb-dialog-color: var(--sbb-color-2);--sbb-dialog-background-color: var(--sbb-background-color-1);--sbb-dialog-width: 100%;--sbb-dialog-height: 100%;--sbb-dialog-max-width: 100%;--sbb-dialog-max-width-default: 55.75rem;--sbb-dialog-max-height: 100%;--sbb-dialog-inset: 0 auto auto 0;--sbb-dialog-border-radius: var(--sbb-border-radius-8x);--sbb-dialog-padding-block: var(--sbb-spacing-responsive-xs);--sbb-dialog-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-6x) );--sbb-dialog-shadow-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-4x) );--sbb-dialog-animation-easing: ease;--sbb-dialog-pointer-events: none;--sbb-dialog-backdrop-visibility: hidden;--sbb-dialog-backdrop-pointer-events: none;--sbb-dialog-backdrop-color: transparent;--sbb-dialog-title-gap: var(--sbb-spacing-fixed-2x);--sbb-dialog-close-button-margin: var(--sbb-spacing-fixed-4x);display:none;position:fixed;inset:var(--sbb-dialog-inset);z-index:var(--sbb-dialog-z-index, var(--sbb-overlay-default-z-index))}@media (min-width: 22.5rem){:host{--sbb-dialog-padding-inline: var(--sbb-spacing-fixed-6x)}}@media (min-width: 37.5rem){:host{--sbb-dialog-padding-inline: var(--sbb-spacing-fixed-12x)}}@media (min-width: 52.5rem){:host{--sbb-dialog-padding-inline: var(--sbb-spacing-responsive-s);--sbb-dialog-max-width: min( calc(100vw - var(--sbb-spacing-fixed-30x) * 2), var(--sbb-dialog-max-width-default) );--sbb-dialog-max-height: calc(100vh - var(--sbb-spacing-fixed-16x))}}:host([data-state]:not([data-state=closed])){display:block}:host(:is([data-state=opening],[data-state=opened])){--sbb-dialog-pointer-events: all;--sbb-dialog-backdrop-color: var(--sbb-background-color-3)}@media (min-width: 52.5rem){:host(:is([data-state=opening],[data-state=opened])){--sbb-dialog-backdrop-visibility: visible;--sbb-dialog-backdrop-pointer-events: all}}:host([backdrop=translucent]:is([data-state=opening],[data-state=opened])){--sbb-dialog-backdrop-color: color-mix(in srgb, var(--sbb-color-black) 50%, transparent)}:host([negative]){--sbb-scrollbar-color: color-mix(in srgb, var(--sbb-color-white) 30%, transparent);--sbb-scrollbar-color-hover: color-mix(in srgb, var(--sbb-color-white) 60%, transparent);--sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);--sbb-dialog-color: var(--sbb-color-2-negative);--sbb-dialog-background-color: var(--sbb-background-color-1-negative);--sbb-dialog-backdrop-color: var(--sbb-background-color-3-negative)}:host(:not([data-state=closed])){--sbb-dialog-inset: 0}.sbb-dialog__container{pointer-events:var(--sbb-dialog-pointer-events);display:flex;align-items:center;position:fixed;inset:var(--sbb-dialog-inset)}.sbb-dialog__container:before{content:"";visibility:var(--sbb-dialog-backdrop-visibility);pointer-events:var(--sbb-dialog-backdrop-pointer-events);position:fixed;inset:var(--sbb-dialog-inset);background-color:var(--sbb-dialog-backdrop-color);transition-duration:var(--sbb-dialog-animation-duration);transition-timing-function:var(--sbb-dialog-animation-easing);transition-property:background-color,visibility}.sbb-dialog{display:none;position:absolute;inset-inline:0;margin:auto;padding:0;border:none;width:var(--sbb-dialog-width);height:var(--sbb-dialog-height);max-width:var(--sbb-dialog-max-width);max-height:var(--sbb-dialog-max-height);color:var(--sbb-dialog-color);background-color:var(--sbb-dialog-background-color)}:host([data-state]:not([data-state=closed])) .sbb-dialog{display:block;animation-name:open;animation-duration:var(--sbb-dialog-animation-duration);animation-timing-function:ease}:host([data-state][data-state=closing]) .sbb-dialog{pointer-events:none;animation-name:close}@media (forced-colors: active){.sbb-dialog{outline:var(--sbb-border-width-1x) solid CanvasText}}@media (min-width: 52.5rem){.sbb-dialog{border-radius:var(--sbb-dialog-border-radius);overflow:hidden;height:auto}}.sbb-dialog__wrapper{display:flex;flex-direction:column;width:var(--sbb-dialog-width);height:var(--sbb-dialog-height);max-width:var(--sbb-dialog-max-width);max-height:var(--sbb-dialog-max-height)}.sbb-dialog-title-section{display:flex;width:100%;gap:var(--sbb-dialog-title-gap);background-color:var(--sbb-dialog-background-color);padding-inline:var(--sbb-dialog-padding);transition:box-shadow var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);box-shadow:none}:host(:not([negative]):is(:state(scrolled),[state--scrolled])) .sbb-dialog-title-section{box-shadow:var(--sbb-shadow-elevation-level-5-shadow-2-offset-x) var(--sbb-shadow-elevation-level-5-shadow-2-offset-y) var(--sbb-shadow-elevation-level-5-shadow-2-blur) var(--sbb-shadow-elevation-level-5-shadow-2-spread) var(--sbb-shadow-color-soft-2),var(--sbb-shadow-elevation-level-5-shadow-1-offset-x) var(--sbb-shadow-elevation-level-5-shadow-1-offset-y) var(--sbb-shadow-elevation-level-5-shadow-1-blur) var(--sbb-shadow-elevation-level-5-shadow-1-spread) var(--sbb-shadow-color-soft-1)}:host([negative]:is(:state(scrolled),[state--scrolled])) .sbb-dialog-title-section{box-shadow:var(--sbb-shadow-elevation-level-5-shadow-2-offset-x) var(--sbb-shadow-elevation-level-5-shadow-2-offset-y) var(--sbb-shadow-elevation-level-5-shadow-2-blur) var(--sbb-shadow-elevation-level-5-shadow-2-spread) var(--sbb-shadow-color-soft-2-negative),var(--sbb-shadow-elevation-level-5-shadow-1-offset-x) var(--sbb-shadow-elevation-level-5-shadow-1-offset-y) var(--sbb-shadow-elevation-level-5-shadow-1-blur) var(--sbb-shadow-elevation-level-5-shadow-1-spread) var(--sbb-shadow-color-soft-1-negative)}.sbb-dialog-content-container{--sbb-scrollbar-width: var(--sbb-spacing-fixed-3x)}.sbb-dialog-content-container::-webkit-scrollbar{width:var(--sbb-scrollbar-width);height:var(--sbb-scrollbar-width);background-color:var(--sbb-scrollbar-track-color, transparent)}.sbb-dialog-content-container::-webkit-scrollbar-corner{background-color:var(--sbb-scrollbar-track-color, transparent)}.sbb-dialog-content-container::-webkit-scrollbar-thumb{background-color:var(--sbb-scrollbar-color, currentcolor);border:calc(.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width))) solid transparent;border-radius:var(--sbb-border-radius-4x);background-clip:padding-box}.sbb-dialog-content-container::-webkit-scrollbar-thumb:hover{background-color:var(--sbb-scrollbar-color-hover, currentcolor);border-width:calc(.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width-hover)))}.sbb-dialog-content-container::-webkit-scrollbar-button,.sbb-dialog-content-container::-webkit-scrollbar-corner{display:none}@supports not selector(::-webkit-scrollbar){.sbb-dialog-content-container{scrollbar-width:var(--sbb-scrollbar-width-firefox);scrollbar-color:var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent)}}.sbb-dialog-content-container{overflow:auto}.sbb-dialog-content-container:focus-visible{outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);--sbb-focus-outline-offset: calc(var(--sbb-focus-outline-width) * -1)}@keyframes open{0%{opacity:0;translate:0 var(--sbb-spacing-fixed-4x)}to{opacity:1;translate:0}}@keyframes close{0%{opacity:1;translate:0}to{opacity:0;translate:0 var(--sbb-spacing-fixed-4x)}}::slotted(sbb-dialog-title){flex-grow:1;margin-block:var(--sbb-dialog-padding-block)}::slotted(sbb-dialog-close-button){order:1;margin-inline-end:var(--sbb-dialog-close-button-margin);margin-block-start:calc(var(--sbb-dialog-padding-block) + .5 * (var(--sbb-typo-line-height-titles) * var(--_sbb-dialog-title-size, var(--sbb-font-size-title-4)) - var(--sbb-size-element-xs)));inset-inline-end:var(--sbb-dialog-close-button-margin)}`;
15
+ const P = L`*,:before,:after{box-sizing:border-box}:host{--sbb-scrollbar-thumb-width: .125rem;--sbb-scrollbar-thumb-width-hover: .25rem;--sbb-scrollbar-width-firefox: thin;--sbb-scrollbar-color: color-mix(in srgb, var(--sbb-color-black) 30%, transparent);--sbb-scrollbar-color: light-dark( color-mix(in srgb, var(--sbb-color-black) 30%, transparent), color-mix(in srgb, var(--sbb-color-white) 30%, transparent) );--sbb-scrollbar-color-hover: color-mix(in srgb, var(--sbb-color-black) 60%, transparent);--sbb-scrollbar-color-hover: light-dark( color-mix(in srgb, var(--sbb-color-black) 60%, transparent), color-mix(in srgb, var(--sbb-color-white) 60%, transparent) );--sbb-scrollbar-track-color: transparent;--sbb-dialog-padding-inline: var(--sbb-spacing-fixed-5x);--sbb-dialog-color: var(--sbb-color-2);--sbb-dialog-background-color: var(--sbb-background-color-1);--sbb-dialog-width: 100%;--sbb-dialog-height: 100%;--sbb-dialog-max-width: 100%;--sbb-dialog-max-width-default: 55.75rem;--sbb-dialog-max-height: 100%;--sbb-dialog-inset: 0 auto auto 0;--sbb-dialog-border-radius: var(--sbb-border-radius-8x);--sbb-dialog-padding-block: var(--sbb-spacing-responsive-xs);--sbb-dialog-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-6x) );--sbb-dialog-shadow-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-4x) );--sbb-dialog-animation-easing: ease;--sbb-dialog-pointer-events: none;--sbb-dialog-backdrop-visibility: hidden;--sbb-dialog-backdrop-pointer-events: none;--sbb-dialog-backdrop-color: transparent;--sbb-dialog-title-gap: var(--sbb-spacing-fixed-2x);--sbb-dialog-close-button-margin: var(--sbb-spacing-fixed-4x);display:none;position:fixed;inset:var(--sbb-dialog-inset);z-index:var(--sbb-dialog-z-index, var(--sbb-overlay-default-z-index))}@media(min-width:22.5rem){:host{--sbb-dialog-padding-inline: var(--sbb-spacing-fixed-6x)}}@media(min-width:37.5rem){:host{--sbb-dialog-padding-inline: var(--sbb-spacing-fixed-12x)}}@media(min-width:52.5rem){:host{--sbb-dialog-padding-inline: var(--sbb-spacing-responsive-s);--sbb-dialog-max-width: min( calc(100vw - var(--sbb-spacing-fixed-30x) * 2), var(--sbb-dialog-max-width-default) );--sbb-dialog-max-height: calc(100vh - var(--sbb-spacing-fixed-16x))}}:host([data-state]:not([data-state=closed])){display:block}:host(:is([data-state=opening],[data-state=opened])){--sbb-dialog-pointer-events: all;--sbb-dialog-backdrop-color: var(--sbb-background-color-3)}@media(min-width:52.5rem){:host(:is([data-state=opening],[data-state=opened])){--sbb-dialog-backdrop-visibility: visible;--sbb-dialog-backdrop-pointer-events: all}}:host([backdrop=translucent]:is([data-state=opening],[data-state=opened])){--sbb-dialog-backdrop-color: color-mix(in srgb, var(--sbb-color-black) 50%, transparent)}:host([negative]){--sbb-scrollbar-color: color-mix(in srgb, var(--sbb-color-white) 30%, transparent);--sbb-scrollbar-color-hover: color-mix(in srgb, var(--sbb-color-white) 60%, transparent);--sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);--sbb-dialog-color: var(--sbb-color-2-negative);--sbb-dialog-background-color: var(--sbb-background-color-1-negative);--sbb-dialog-backdrop-color: var(--sbb-background-color-3-negative)}:host(:not([data-state=closed])){--sbb-dialog-inset: 0}.sbb-dialog__container{pointer-events:var(--sbb-dialog-pointer-events);display:flex;align-items:center;position:fixed;inset:var(--sbb-dialog-inset)}.sbb-dialog__container:before{content:"";visibility:var(--sbb-dialog-backdrop-visibility);pointer-events:var(--sbb-dialog-backdrop-pointer-events);position:fixed;inset:var(--sbb-dialog-inset);background-color:var(--sbb-dialog-backdrop-color);transition-duration:var(--sbb-dialog-animation-duration);transition-timing-function:var(--sbb-dialog-animation-easing);transition-property:background-color,visibility}.sbb-dialog{display:none;position:absolute;inset-inline:0;margin:auto;padding:0;border:none;width:var(--sbb-dialog-width);height:var(--sbb-dialog-height);max-width:var(--sbb-dialog-max-width);max-height:var(--sbb-dialog-max-height);color:var(--sbb-dialog-color);background-color:var(--sbb-dialog-background-color)}:host([data-state]:not([data-state=closed])) .sbb-dialog{display:block;animation-name:open;animation-duration:var(--sbb-dialog-animation-duration);animation-timing-function:ease}:host([data-state][data-state=closing]) .sbb-dialog{pointer-events:none;animation-name:close}@media(forced-colors:active){.sbb-dialog{outline:var(--sbb-border-width-1x) solid CanvasText}}@media(min-width:52.5rem){.sbb-dialog{border-radius:var(--sbb-dialog-border-radius);overflow:hidden;height:auto}}.sbb-dialog__wrapper{display:flex;flex-direction:column;width:var(--sbb-dialog-width);height:var(--sbb-dialog-height);max-width:var(--sbb-dialog-max-width);max-height:var(--sbb-dialog-max-height)}.sbb-dialog-title-section{display:flex;width:100%;gap:var(--sbb-dialog-title-gap);background-color:var(--sbb-dialog-background-color);padding-inline:var(--sbb-dialog-padding);transition:box-shadow var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);box-shadow:none}:host(:not([negative]):is(:state(scrolled),[state--scrolled])) .sbb-dialog-title-section{box-shadow:var(--sbb-shadow-elevation-level-5-shadow-2-offset-x) var(--sbb-shadow-elevation-level-5-shadow-2-offset-y) var(--sbb-shadow-elevation-level-5-shadow-2-blur) var(--sbb-shadow-elevation-level-5-shadow-2-spread) var(--sbb-shadow-color-soft-2),var(--sbb-shadow-elevation-level-5-shadow-1-offset-x) var(--sbb-shadow-elevation-level-5-shadow-1-offset-y) var(--sbb-shadow-elevation-level-5-shadow-1-blur) var(--sbb-shadow-elevation-level-5-shadow-1-spread) var(--sbb-shadow-color-soft-1)}:host([negative]:is(:state(scrolled),[state--scrolled])) .sbb-dialog-title-section{box-shadow:var(--sbb-shadow-elevation-level-5-shadow-2-offset-x) var(--sbb-shadow-elevation-level-5-shadow-2-offset-y) var(--sbb-shadow-elevation-level-5-shadow-2-blur) var(--sbb-shadow-elevation-level-5-shadow-2-spread) var(--sbb-shadow-color-soft-2-negative),var(--sbb-shadow-elevation-level-5-shadow-1-offset-x) var(--sbb-shadow-elevation-level-5-shadow-1-offset-y) var(--sbb-shadow-elevation-level-5-shadow-1-blur) var(--sbb-shadow-elevation-level-5-shadow-1-spread) var(--sbb-shadow-color-soft-1-negative)}.sbb-dialog-content-container{--sbb-scrollbar-width: var(--sbb-spacing-fixed-3x)}.sbb-dialog-content-container::-webkit-scrollbar{width:var(--sbb-scrollbar-width);height:var(--sbb-scrollbar-width);background-color:var(--sbb-scrollbar-track-color, transparent)}.sbb-dialog-content-container::-webkit-scrollbar-corner{background-color:var(--sbb-scrollbar-track-color, transparent)}.sbb-dialog-content-container::-webkit-scrollbar-thumb{background-color:var(--sbb-scrollbar-color, currentcolor);border:calc(.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width))) solid transparent;border-radius:var(--sbb-border-radius-4x);background-clip:padding-box}.sbb-dialog-content-container::-webkit-scrollbar-thumb:hover{background-color:var(--sbb-scrollbar-color-hover, currentcolor);border-width:calc(.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width-hover)))}.sbb-dialog-content-container::-webkit-scrollbar-button,.sbb-dialog-content-container::-webkit-scrollbar-corner{display:none}@supports not selector(::-webkit-scrollbar){.sbb-dialog-content-container{scrollbar-width:var(--sbb-scrollbar-width-firefox);scrollbar-color:var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent)}}.sbb-dialog-content-container{overflow:auto}.sbb-dialog-content-container:focus-visible{outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);--sbb-focus-outline-offset: calc(var(--sbb-focus-outline-width) * -1)}@keyframes open{0%{opacity:0;translate:0 var(--sbb-spacing-fixed-4x)}to{opacity:1;translate:0}}@keyframes close{0%{opacity:1;translate:0}to{opacity:0;translate:0 var(--sbb-spacing-fixed-4x)}}::slotted(sbb-dialog-title){flex-grow:1;margin-block:var(--sbb-dialog-padding-block)}::slotted(sbb-dialog-close-button){order:1;margin-inline-end:var(--sbb-dialog-close-button-margin);margin-block-start:calc(var(--sbb-dialog-padding-block) + .5 * (var(--sbb-typo-line-height-titles) * var(--_sbb-dialog-title-size, var(--sbb-font-size-title-4)) - var(--sbb-size-element-xs)));inset-inline-end:var(--sbb-dialog-close-button-margin)}`;
16
16
  let q = 0, M = (() => {
17
17
  var l, n, r;
18
18
  let a = [z("sbb-dialog")], e, i = [], s, p = R, u = [], m, f = [], w = [], k, x = [], _ = [], y;
@@ -3,7 +3,7 @@ import { customElement as d } from "lit/decorators.js";
3
3
  import { SbbActionGroupElement as s } from "../../action-group.js";
4
4
  import { isLean as l } from "../../core/dom/lean-context.js";
5
5
  import { css as m } from "lit";
6
- const u = m`*,:before,:after{box-sizing:border-box}:host{--sbb-dialog-actions-border-color: var(--sbb-background-color-4);padding-inline:var(--sbb-dialog-padding-inline);padding-block:var(--sbb-dialog-padding-block);margin-block-start:auto;background-color:var(--sbb-dialog-background-color);transition:box-shadow var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);box-shadow:none}:host:before{content:"";display:block;position:absolute;border-block-start:var(--sbb-border-width-1x) solid var(--sbb-dialog-actions-border-color);transition:border-color var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);width:100%;margin-block-start:calc(-1 * var(--sbb-dialog-padding-block));margin-inline-start:calc(-1 * var(--sbb-dialog-padding-inline))}@media (forced-colors: active){:host:before{border-color:CanvasText}}`;
6
+ const u = m`*,:before,:after{box-sizing:border-box}:host{--sbb-dialog-actions-border-color: var(--sbb-background-color-4);padding-inline:var(--sbb-dialog-padding-inline);padding-block:var(--sbb-dialog-padding-block);margin-block-start:auto;background-color:var(--sbb-dialog-background-color);transition:box-shadow var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);box-shadow:none}:host:before{content:"";display:block;position:absolute;border-block-start:var(--sbb-border-width-1x) solid var(--sbb-dialog-actions-border-color);transition:border-color var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);width:100%;margin-block-start:calc(-1 * var(--sbb-dialog-padding-block));margin-inline-start:calc(-1 * var(--sbb-dialog-padding-inline))}@media(forced-colors:active){:host:before{border-color:CanvasText}}`;
7
7
  let k = (() => {
8
8
  var o;
9
9
  let n = [d("sbb-dialog-actions")], i, r = [], a, e = s;
@@ -10,7 +10,7 @@ import { unsafeStatic as T, html as U } from "lit/static-html.js";
10
10
  import { forceType as j } from "../../core/decorators.js";
11
11
  import { isLean as M, isZeroAnimationDuration as P } from "../../core/dom.js";
12
12
  import { SbbHydrationMixin as q } from "../../core/mixins.js";
13
- const F = Z`*,:before,:after{box-sizing:border-box}:host{--sbb-expansion-panel-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-4x) );--sbb-expansion-panel-background-color: var(--sbb-background-color-1);--sbb-expansion-panel-content-visibility: hidden;--sbb-expansion-panel-border-width: var(--sbb-border-width-1x);--sbb-expansion-panel-border-color: var(--sbb-border-color-4-inverted);--sbb-expansion-panel-border-block-start-width: var(--sbb-expansion-panel-border-width);--sbb-expansion-panel-border-block-start-color: var(--sbb-expansion-panel-border-color);--sbb-expansion-panel-border-radius: var(--sbb-border-radius-4x);--sbb-expansion-panel-start-end-radius: var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-start-start-radius: var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-end-end-radius: var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-end-start-radius: var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-title-gap: var(--sbb-spacing-fixed-4x);--sbb-expansion-panel-icon-size: var(--sbb-size-icon-ui-medium);display:block}:host([size=s]){--sbb-expansion-panel-title-gap: var(--sbb-spacing-fixed-2x)}@media (forced-colors: active){:host([disabled]){--sbb-expansion-panel-border-color: GrayText;--sbb-expansion-panel-border-block-start-color: GrayText}}:host([expanded]){--sbb-expansion-panel-content-visibility: visible}:host([data-accordion][data-accordion-first]){--sbb-expansion-panel-start-end-radius: var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-start-start-radius: var(--sbb-expansion-panel-border-radius)}:host([data-accordion]:not([data-accordion-first])){--sbb-expansion-panel-border-block-start-width: 0;--sbb-expansion-panel-border-block-start-color: transparent;--sbb-expansion-panel-start-end-radius: 0;--sbb-expansion-panel-start-start-radius: 0}:host([data-accordion][data-accordion-last]){--sbb-expansion-panel-end-end-radius: var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-end-start-radius: var(--sbb-expansion-panel-border-radius)}:host([data-accordion]:not([data-accordion-last])){--sbb-expansion-panel-end-end-radius: 0;--sbb-expansion-panel-end-start-radius: 0}:host([color=milk]){--sbb-expansion-panel-background-color: var(--sbb-background-color-3)}:host([borderless]){--sbb-expansion-panel-border-width: 0;--sbb-expansion-panel-border-color: transparent;--sbb-expansion-panel-border-block-start-width: 0;--sbb-expansion-panel-border-block-start-color: transparent}@media (forced-colors: active){:host([borderless]){--sbb-expansion-panel-border-width: var(--sbb-border-width-1x);--sbb-expansion-panel-border-block-start-width: var(--sbb-expansion-panel-border-width)}}:host([borderless][data-accordion]:not([data-accordion-first])){--sbb-expansion-panel-border-block-start-width: var(--sbb-spacing-fixed-1x)}@media (forced-colors: active){:host([borderless][data-accordion]:not([data-accordion-first])){--sbb-expansion-panel-border-block-start-width: 0}}:host(:not([disabled])[data-toggle-hover]){--sbb-expansion-panel-background-color: var(--sbb-background-color-3)}@media (forced-colors: active){:host(:not([disabled])[data-toggle-hover]){--sbb-expansion-panel-border-color: Highlight;--sbb-expansion-panel-border-block-start-color: Highlight}}:host(:not([disabled])[color=milk][data-toggle-hover]){--sbb-expansion-panel-background-color: var(--sbb-background-color-1)}.sbb-expansion-panel{background-color:var(--sbb-expansion-panel-background-color);border:var(--sbb-expansion-panel-border-width) solid var(--sbb-expansion-panel-border-color);border-block-start-color:var(--sbb-expansion-panel-border-block-start-color);border-block-start-width:var(--sbb-expansion-panel-border-block-start-width);border-radius:var(--sbb-expansion-panel-start-start-radius) var(--sbb-expansion-panel-start-end-radius) var(--sbb-expansion-panel-end-end-radius) var(--sbb-expansion-panel-end-start-radius);background-clip:padding-box}.sbb-expansion-panel__header{margin:0}.sbb-expansion-panel__content-wrapper{display:grid;visibility:var(--sbb-expansion-panel-content-visibility);grid-template-rows:0fr;opacity:0}:host([data-state=opened]) .sbb-expansion-panel__content-wrapper{grid-template-rows:1fr;opacity:1}:host([data-state=opening]) .sbb-expansion-panel__content-wrapper{animation-name:open,open-opacity;animation-fill-mode:forwards;animation-duration:var(--sbb-expansion-panel-animation-duration);animation-timing-function:var(--sbb-animation-easing);animation-delay:0s,var(--sbb-expansion-panel-animation-duration)}:host([data-state=closing]) .sbb-expansion-panel__content-wrapper{animation-name:close;animation-duration:var(--sbb-expansion-panel-animation-duration);animation-timing-function:var(--sbb-animation-easing)}.sbb-expansion-panel__content{overflow:hidden}@keyframes open{0%{grid-template-rows:0fr}to{grid-template-rows:1fr}}@keyframes open-opacity{0%{opacity:0}to{opacity:1}}@keyframes close{0%{grid-template-rows:1fr;opacity:1}to{grid-template-rows:0fr;opacity:0}}`;
13
+ const F = Z`*,:before,:after{box-sizing:border-box}:host{--sbb-expansion-panel-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-4x) );--sbb-expansion-panel-background-color: var(--sbb-background-color-1);--sbb-expansion-panel-content-visibility: hidden;--sbb-expansion-panel-border-width: var(--sbb-border-width-1x);--sbb-expansion-panel-border-color: var(--sbb-border-color-4-inverted);--sbb-expansion-panel-border-block-start-width: var(--sbb-expansion-panel-border-width);--sbb-expansion-panel-border-block-start-color: var(--sbb-expansion-panel-border-color);--sbb-expansion-panel-border-radius: var(--sbb-border-radius-4x);--sbb-expansion-panel-start-end-radius: var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-start-start-radius: var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-end-end-radius: var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-end-start-radius: var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-title-gap: var(--sbb-spacing-fixed-4x);--sbb-expansion-panel-icon-size: var(--sbb-size-icon-ui-medium);display:block}:host([size=s]){--sbb-expansion-panel-title-gap: var(--sbb-spacing-fixed-2x)}@media(forced-colors:active){:host([disabled]){--sbb-expansion-panel-border-color: GrayText;--sbb-expansion-panel-border-block-start-color: GrayText}}:host([expanded]){--sbb-expansion-panel-content-visibility: visible}:host([data-accordion][data-accordion-first]){--sbb-expansion-panel-start-end-radius: var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-start-start-radius: var(--sbb-expansion-panel-border-radius)}:host([data-accordion]:not([data-accordion-first])){--sbb-expansion-panel-border-block-start-width: 0;--sbb-expansion-panel-border-block-start-color: transparent;--sbb-expansion-panel-start-end-radius: 0;--sbb-expansion-panel-start-start-radius: 0}:host([data-accordion][data-accordion-last]){--sbb-expansion-panel-end-end-radius: var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-end-start-radius: var(--sbb-expansion-panel-border-radius)}:host([data-accordion]:not([data-accordion-last])){--sbb-expansion-panel-end-end-radius: 0;--sbb-expansion-panel-end-start-radius: 0}:host([color=milk]){--sbb-expansion-panel-background-color: var(--sbb-background-color-3)}:host([borderless]){--sbb-expansion-panel-border-width: 0;--sbb-expansion-panel-border-color: transparent;--sbb-expansion-panel-border-block-start-width: 0;--sbb-expansion-panel-border-block-start-color: transparent}@media(forced-colors:active){:host([borderless]){--sbb-expansion-panel-border-width: var(--sbb-border-width-1x);--sbb-expansion-panel-border-block-start-width: var(--sbb-expansion-panel-border-width)}}:host([borderless][data-accordion]:not([data-accordion-first])){--sbb-expansion-panel-border-block-start-width: var(--sbb-spacing-fixed-1x)}@media(forced-colors:active){:host([borderless][data-accordion]:not([data-accordion-first])){--sbb-expansion-panel-border-block-start-width: 0}}:host(:not([disabled])[data-toggle-hover]){--sbb-expansion-panel-background-color: var(--sbb-background-color-3)}@media(forced-colors:active){:host(:not([disabled])[data-toggle-hover]){--sbb-expansion-panel-border-color: Highlight;--sbb-expansion-panel-border-block-start-color: Highlight}}:host(:not([disabled])[color=milk][data-toggle-hover]){--sbb-expansion-panel-background-color: var(--sbb-background-color-1)}.sbb-expansion-panel{background-color:var(--sbb-expansion-panel-background-color);border:var(--sbb-expansion-panel-border-width) solid var(--sbb-expansion-panel-border-color);border-block-start-color:var(--sbb-expansion-panel-border-block-start-color);border-block-start-width:var(--sbb-expansion-panel-border-block-start-width);border-radius:var(--sbb-expansion-panel-start-start-radius) var(--sbb-expansion-panel-start-end-radius) var(--sbb-expansion-panel-end-end-radius) var(--sbb-expansion-panel-end-start-radius);background-clip:padding-box}.sbb-expansion-panel__header{margin:0}.sbb-expansion-panel__content-wrapper{display:grid;visibility:var(--sbb-expansion-panel-content-visibility);grid-template-rows:0fr;opacity:0}:host([data-state=opened]) .sbb-expansion-panel__content-wrapper{grid-template-rows:1fr;opacity:1}:host([data-state=opening]) .sbb-expansion-panel__content-wrapper{animation-name:open,open-opacity;animation-fill-mode:forwards;animation-duration:var(--sbb-expansion-panel-animation-duration);animation-timing-function:var(--sbb-animation-easing);animation-delay:0s,var(--sbb-expansion-panel-animation-duration)}:host([data-state=closing]) .sbb-expansion-panel__content-wrapper{animation-name:close;animation-duration:var(--sbb-expansion-panel-animation-duration);animation-timing-function:var(--sbb-animation-easing)}.sbb-expansion-panel__content{overflow:hidden}@keyframes open{0%{grid-template-rows:0fr}to{grid-template-rows:1fr}}@keyframes open-opacity{0%{opacity:0}to{opacity:1}}@keyframes close{0%{grid-template-rows:1fr;opacity:1}to{grid-template-rows:0fr;opacity:0}}`;
14
14
  let J = 0, se = (() => {
15
15
  var p, c, h, x, i;
16
16
  let s = [G("sbb-expansion-panel")], n, o = [], r, v = q(B), m = [], k, w = [], y = [], z, A = [], E = [], R, S, L, I = [], C = [], D, $ = [], O = [];
@@ -2,7 +2,7 @@ import { __esDecorate as o, __runInitializers as r } from "tslib";
2
2
  import { css as b, LitElement as c, html as p } from "lit";
3
3
  import { customElement as d } from "lit/decorators.js";
4
4
  import { SbbElementInternalsMixin as m } from "../../core/mixins.js";
5
- const x = b`*,:before,:after{box-sizing:border-box}:host{--sbb-expansion-panel-content-padding-inline: var(--sbb-spacing-fixed-6x);--sbb-expansion-panel-content-padding-inline-start: var( --sbb-expansion-panel-content-padding-inline );display:block}:host([data-size=s]){--sbb-expansion-panel-content-padding-inline: var(--sbb-spacing-fixed-5x)}@media (min-width: 22.5rem){:host([data-icon-space]){--sbb-expansion-panel-content-padding-inline-start: calc( var(--sbb-expansion-panel-content-padding-inline) + var(--sbb-expansion-panel-icon-size) + var(--sbb-expansion-panel-title-gap) )}}.sbb-expansion-panel-content{padding-block-end:var(--sbb-spacing-responsive-s);padding-inline:var(--sbb-expansion-panel-content-padding-inline-start) var(--sbb-expansion-panel-content-padding-inline)}::slotted(:is(p,sbb-title):first-child){margin-block-start:0}`;
5
+ const x = b`*,:before,:after{box-sizing:border-box}:host{--sbb-expansion-panel-content-padding-inline: var(--sbb-spacing-fixed-6x);--sbb-expansion-panel-content-padding-inline-start: var( --sbb-expansion-panel-content-padding-inline );display:block}:host([data-size=s]){--sbb-expansion-panel-content-padding-inline: var(--sbb-spacing-fixed-5x)}@media(min-width:22.5rem){:host([data-icon-space]){--sbb-expansion-panel-content-padding-inline-start: calc( var(--sbb-expansion-panel-content-padding-inline) + var(--sbb-expansion-panel-icon-size) + var(--sbb-expansion-panel-title-gap) )}}.sbb-expansion-panel-content{padding-block-end:var(--sbb-spacing-responsive-s);padding-inline:var(--sbb-expansion-panel-content-padding-inline-start) var(--sbb-expansion-panel-content-padding-inline)}::slotted(:is(p,sbb-title):first-child){margin-block-start:0}`;
6
6
  let h = (() => {
7
7
  var n;
8
8
  let l = [d("sbb-expansion-panel-content")], a, i = [], e, s = m(c);
@@ -5,7 +5,7 @@ import { SbbButtonBaseElement as m } from "../../core/base-elements.js";
5
5
  import { SbbSlotStateController as v, SbbMediaMatcherController as u, SbbMediaQueryHover as b } from "../../core/controllers.js";
6
6
  import { SbbDisabledTabIndexActionMixin as g } from "../../core/mixins.js";
7
7
  import { SbbIconNameMixin as f } from "../../icon.js";
8
- const _ = c`*,:before,:after{box-sizing:border-box}:host{display:block;--sbb-expansion-panel-header-cursor: pointer;--sbb-expansion-panel-header-text-color: var(--sbb-color-2);--sbb-expansion-panel-header-gap: var(--sbb-spacing-fixed-6x);--sbb-expansion-panel-header-justify-content: space-between;--sbb-expansion-panel-header-padding-block: var(--sbb-spacing-responsive-xs);--sbb-expansion-panel-header-padding-inline: var(--sbb-spacing-fixed-6x)}@media (forced-colors: active){:host{--sbb-expansion-panel-header-text-color: ButtonText}}:host([data-size=s]){--sbb-expansion-panel-header-gap: var(--sbb-spacing-fixed-2x);--sbb-expansion-panel-header-padding-block: var(--sbb-spacing-fixed-3x);--sbb-expansion-panel-header-padding-inline: var(--sbb-spacing-fixed-5x)}:host(:is(:disabled,[disabled-interactive])){--sbb-expansion-panel-header-cursor: default;--sbb-expansion-panel-header-text-color: var(--sbb-color-granite);--sbb-expansion-panel-header-text-color: light-dark( var(--sbb-color-granite), var(--sbb-color-storm) )}@media (forced-colors: active){:host(:is(:disabled,[disabled-interactive])){--sbb-expansion-panel-header-text-color: GrayText}}:host(:focus-visible){outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);outline-offset:var(--sbb-spacing-fixed-1x);border-radius:var(--sbb-expansion-panel-border-radius)}.sbb-expansion-panel-header{--sbb-text-font-size: var(--sbb-font-size-text-l);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);display:flex;justify-content:var(--sbb-expansion-panel-header-justify-content);align-items:center;gap:var(--sbb-expansion-panel-header-gap);width:100%;padding:var(--sbb-expansion-panel-header-padding-block) var(--sbb-expansion-panel-header-padding-inline);text-align:start;cursor:var(--sbb-expansion-panel-header-cursor);color:var(--sbb-expansion-panel-header-text-color);-webkit-tap-highlight-color:transparent}.sbb-expansion-panel-header__title,.sbb-expansion-panel-header__toggle,.sbb-expansion-panel-header__icon{display:flex}.sbb-expansion-panel-header__icon{width:var(--sbb-expansion-panel-icon-size);--sbb-icon-svg-width: var(--sbb-expansion-panel-icon-size);--sbb-icon-svg-height: var(--sbb-expansion-panel-icon-size)}:host(:not([data-slot-names~=icon],[icon-name])) .sbb-expansion-panel-header__icon{display:none}.sbb-expansion-panel-header__title{align-items:center;gap:var(--sbb-expansion-panel-title-gap);overflow:hidden;min-height:var(--sbb-size-icon-ui-medium)}.sbb-expansion-panel-header__toggle-icon{transition:transform var(--sbb-disable-animation-duration, var(--sbb-animation-duration-4x))}:host([aria-expanded]:not([aria-expanded=false])) .sbb-expansion-panel-header__toggle-icon{transform:rotate(-180deg)}`;
8
+ const _ = c`*,:before,:after{box-sizing:border-box}:host{display:block;--sbb-expansion-panel-header-cursor: pointer;--sbb-expansion-panel-header-text-color: var(--sbb-color-2);--sbb-expansion-panel-header-gap: var(--sbb-spacing-fixed-6x);--sbb-expansion-panel-header-justify-content: space-between;--sbb-expansion-panel-header-padding-block: var(--sbb-spacing-responsive-xs);--sbb-expansion-panel-header-padding-inline: var(--sbb-spacing-fixed-6x)}@media(forced-colors:active){:host{--sbb-expansion-panel-header-text-color: ButtonText}}:host([data-size=s]){--sbb-expansion-panel-header-gap: var(--sbb-spacing-fixed-2x);--sbb-expansion-panel-header-padding-block: var(--sbb-spacing-fixed-3x);--sbb-expansion-panel-header-padding-inline: var(--sbb-spacing-fixed-5x)}:host(:is(:disabled,[disabled-interactive])){--sbb-expansion-panel-header-cursor: default;--sbb-expansion-panel-header-text-color: var(--sbb-color-granite);--sbb-expansion-panel-header-text-color: light-dark( var(--sbb-color-granite), var(--sbb-color-storm) )}@media(forced-colors:active){:host(:is(:disabled,[disabled-interactive])){--sbb-expansion-panel-header-text-color: GrayText}}:host(:focus-visible){outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);outline-offset:var(--sbb-spacing-fixed-1x);border-radius:var(--sbb-expansion-panel-border-radius)}.sbb-expansion-panel-header{--sbb-text-font-size: var(--sbb-font-size-text-l);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);display:flex;justify-content:var(--sbb-expansion-panel-header-justify-content);align-items:center;gap:var(--sbb-expansion-panel-header-gap);width:100%;padding:var(--sbb-expansion-panel-header-padding-block) var(--sbb-expansion-panel-header-padding-inline);text-align:start;cursor:var(--sbb-expansion-panel-header-cursor);color:var(--sbb-expansion-panel-header-text-color);-webkit-tap-highlight-color:transparent}.sbb-expansion-panel-header__title,.sbb-expansion-panel-header__toggle,.sbb-expansion-panel-header__icon{display:flex}.sbb-expansion-panel-header__icon{width:var(--sbb-expansion-panel-icon-size);--sbb-icon-svg-width: var(--sbb-expansion-panel-icon-size);--sbb-icon-svg-height: var(--sbb-expansion-panel-icon-size)}:host(:not([data-slot-names~=icon],[icon-name])) .sbb-expansion-panel-header__icon{display:none}.sbb-expansion-panel-header__title{align-items:center;gap:var(--sbb-expansion-panel-title-gap);overflow:hidden;min-height:var(--sbb-size-icon-ui-medium)}.sbb-expansion-panel-header__toggle-icon{transition:transform var(--sbb-disable-animation-duration, var(--sbb-animation-duration-4x))}:host([aria-expanded]:not([aria-expanded=false])) .sbb-expansion-panel-header__toggle-icon{transform:rotate(-180deg)}`;
9
9
  let I = (() => {
10
10
  var e;
11
11
  let l = [x("sbb-expansion-panel-header")], s, t = [], n, i = g(f(m));
@@ -1,5 +1,5 @@
1
1
  import { SbbFileSelectorCommonElementMixin as m } from "./common/file-selector-common.js";
2
- import { f as r } from "../file-selector-common-D88J9PEh.js";
2
+ import { f as r } from "../file-selector-common-BEWjyy75.js";
3
3
  export {
4
4
  m as SbbFileSelectorCommonElementMixin,
5
5
  r as fileSelectorCommonStyle
@@ -0,0 +1,5 @@
1
+ import { css as e } from "lit";
2
+ const r = e`*,:before,:after{box-sizing:border-box}:host{--sbb-file-selector-color: var(--sbb-color-2);--sbb-file-selector-subtitle-color: var(--sbb-color-granite);--sbb-file-selector-subtitle-color: light-dark(var(--sbb-color-granite), var(--sbb-color-smoke));--sbb-file-selector-background-color: var(--sbb-background-color-1);--sbb-file-selector-border-color: var(--sbb-border-color-4-inverted);--sbb-file-selector-transition-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-2x) );--sbb-file-selector-transition-easing-function: var(--sbb-animation-easing);display:block;width:20rem}@media(forced-colors:active){:host(:disabled){--sbb-file-selector-color: GrayText;--sbb-file-selector-subtitle-color: GrayText;--sbb-file-selector-border-color: GrayText}}:host(:is(:state(active),[state--active])){--sbb-file-selector-background-color: var(--sbb-background-color-3);--sbb-file-selector-border-color: var(--sbb-color-storm);--sbb-file-selector-border-color: light-dark(var(--sbb-color-storm), var(--sbb-color-anthracite))}@media(forced-colors:active){:host(:is(:state(active),[state--active])){--sbb-file-selector-border-color: Highlight}}.sbb-file-selector__input-container{-webkit-tap-highlight-color:transparent;display:flex;flex-direction:column}.sbb-file-selector__visually-hidden{border:0;clip-path:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.sbb-file-selector__file-list{display:flex;flex-direction:column;row-gap:var(--sbb-spacing-fixed-3x);margin-block:0;padding-inline:0;padding-block:var(--sbb-spacing-fixed-6x) var(--sbb-spacing-fixed-1x)}.sbb-file-selector__file{--sbb-text-font-size: var(--sbb-font-size-text-s);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);display:flex;gap:var(--sbb-spacing-fixed-4x);align-items:center;justify-content:space-between}.sbb-file-selector__file-details{display:flex;flex:1;justify-content:space-between;gap:var(--sbb-spacing-fixed-4x);overflow:auto}.sbb-file-selector__file-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.sbb-file-selector__file-size{white-space:nowrap;color:var(--sbb-color-metal);color:light-dark(var(--sbb-color-metal),var(--sbb-color-smoke))}:host(:not([data-slot-names~=error])) .sbb-file-selector__error{display:none}`;
3
+ export {
4
+ r as f
5
+ };