@sbb-esta/lyne-elements 1.0.0 → 1.2.1

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 (234) hide show
  1. package/accordion/accordion.d.ts +1 -1
  2. package/accordion/accordion.d.ts.map +1 -1
  3. package/alert/alert/alert.d.ts +1 -1
  4. package/alert/alert/alert.d.ts.map +1 -1
  5. package/button/common/button-common.d.ts.map +1 -1
  6. package/button/mini-button.js +5 -5
  7. package/calendar/calendar.d.ts +3 -1
  8. package/calendar/calendar.d.ts.map +1 -1
  9. package/calendar.js +62 -52
  10. package/card/common/card-action-common.d.ts.map +1 -1
  11. package/checkbox/common/checkbox-common.d.ts.map +1 -1
  12. package/clock/clock.d.ts +19 -13
  13. package/clock/clock.d.ts.map +1 -1
  14. package/clock.js +93 -87
  15. package/core/decorators/host-attributes.d.ts.map +1 -1
  16. package/core/eventing/throttle.d.ts.map +1 -1
  17. package/core/i18n/i18n.d.ts +1 -3
  18. package/core/i18n/i18n.d.ts.map +1 -1
  19. package/core/i18n.js +91 -127
  20. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  21. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  22. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  23. package/core/mixins/hydration-mixin.d.ts +2 -8
  24. package/core/mixins/hydration-mixin.d.ts.map +1 -1
  25. package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  26. package/core/mixins/negative-mixin.d.ts.map +1 -1
  27. package/core/mixins/panel-mixin.d.ts.map +1 -1
  28. package/core/mixins/required-mixin.d.ts.map +1 -1
  29. package/core/mixins/update-scheduler-mixin.d.ts.map +1 -1
  30. package/core/mixins.js +133 -148
  31. package/core/observers/intersection-observer.d.ts +1 -1
  32. package/core/styles/_index.scss +1 -0
  33. package/core/styles/mixins/buttons.scss +1 -1
  34. package/core/styles/mixins/table.scss +148 -0
  35. package/core/styles/standard-theme.scss +1 -0
  36. package/core/styles/table.scss +56 -0
  37. package/core/testing/private.d.ts +0 -1
  38. package/core/testing/private.d.ts.map +1 -1
  39. package/core/testing/wait-for-render.d.ts +1 -1
  40. package/core/testing/wait-for-render.d.ts.map +1 -1
  41. package/core/testing.js +40 -37
  42. package/custom-elements.json +498 -997
  43. package/datepicker/datepicker-next-day.js +5 -5
  44. package/datepicker/datepicker-previous-day.js +1 -1
  45. package/datepicker/datepicker-toggle.js +7 -7
  46. package/development/accordion/accordion.d.ts +1 -1
  47. package/development/accordion/accordion.d.ts.map +1 -1
  48. package/development/accordion.js +7 -1
  49. package/development/action-group.js +7 -1
  50. package/development/alert/alert/alert.d.ts +1 -1
  51. package/development/alert/alert/alert.d.ts.map +1 -1
  52. package/development/alert/alert-group.js +7 -1
  53. package/development/alert/alert.js +7 -1
  54. package/development/autocomplete.js +7 -1
  55. package/development/breadcrumb/breadcrumb-group.js +7 -1
  56. package/development/breadcrumb/breadcrumb.js +7 -1
  57. package/development/button/common/button-common.d.ts.map +1 -1
  58. package/development/button/common.js +7 -1
  59. package/development/button/mini-button.js +8 -2
  60. package/development/calendar/calendar.d.ts +3 -1
  61. package/development/calendar/calendar.d.ts.map +1 -1
  62. package/development/calendar.js +18 -2
  63. package/development/card/card-badge.js +7 -1
  64. package/development/card/card.js +7 -1
  65. package/development/card/common/card-action-common.d.ts.map +1 -1
  66. package/development/card/common.js +7 -1
  67. package/development/checkbox/checkbox-group.js +7 -1
  68. package/development/checkbox/checkbox.js +7 -1
  69. package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
  70. package/development/checkbox/common.js +7 -1
  71. package/development/chip.js +7 -1
  72. package/development/clock/clock.d.ts +19 -13
  73. package/development/clock/clock.d.ts.map +1 -1
  74. package/development/clock.js +103 -94
  75. package/development/container/container.js +7 -1
  76. package/development/container/sticky-bar.js +7 -1
  77. package/development/core/decorators/host-attributes.d.ts.map +1 -1
  78. package/development/core/eventing/throttle.d.ts.map +1 -1
  79. package/development/core/i18n/i18n.d.ts +1 -3
  80. package/development/core/i18n/i18n.d.ts.map +1 -1
  81. package/development/core/i18n.js +5 -43
  82. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  83. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  84. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  85. package/development/core/mixins/hydration-mixin.d.ts +2 -8
  86. package/development/core/mixins/hydration-mixin.d.ts.map +1 -1
  87. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  88. package/development/core/mixins/negative-mixin.d.ts.map +1 -1
  89. package/development/core/mixins/panel-mixin.d.ts.map +1 -1
  90. package/development/core/mixins/required-mixin.d.ts.map +1 -1
  91. package/development/core/mixins/update-scheduler-mixin.d.ts.map +1 -1
  92. package/development/core/mixins.js +39 -50
  93. package/development/core/observers/intersection-observer.d.ts +1 -1
  94. package/development/core/testing/private.d.ts +0 -1
  95. package/development/core/testing/private.d.ts.map +1 -1
  96. package/development/core/testing/wait-for-render.d.ts +1 -1
  97. package/development/core/testing/wait-for-render.d.ts.map +1 -1
  98. package/development/core/testing.js +6 -2
  99. package/development/datepicker/datepicker-next-day.js +8 -2
  100. package/development/datepicker/datepicker-previous-day.js +8 -2
  101. package/development/datepicker/datepicker-toggle.js +7 -2
  102. package/development/datepicker/datepicker.js +7 -1
  103. package/development/dialog/dialog-actions.js +7 -1
  104. package/development/dialog/dialog-content.js +7 -1
  105. package/development/dialog/dialog-title.js +7 -1
  106. package/development/dialog/dialog.js +7 -1
  107. package/development/divider.js +7 -1
  108. package/development/expansion-panel/expansion-panel-content.js +7 -1
  109. package/development/expansion-panel/expansion-panel-header.js +7 -1
  110. package/development/expansion-panel/expansion-panel.js +7 -1
  111. package/development/file-selector.js +7 -1
  112. package/development/footer.js +7 -1
  113. package/development/form-error.js +7 -1
  114. package/development/form-field/form-field-clear.js +8 -2
  115. package/development/form-field/form-field.js +7 -1
  116. package/development/header/common/header-action-common.d.ts.map +1 -1
  117. package/development/header/common.js +7 -1
  118. package/development/header/header.js +7 -1
  119. package/development/icon/icon-name-mixin.d.ts.map +1 -1
  120. package/development/icon/icon-request.d.ts.map +1 -1
  121. package/development/icon.js +14 -13
  122. package/development/image.js +7 -1
  123. package/development/journey-header.js +7 -1
  124. package/development/lead-container.js +7 -1
  125. package/development/link/common/block-link-common.d.ts.map +1 -1
  126. package/development/link/common/inline-link-common.d.ts.map +1 -1
  127. package/development/link/common/link-common.d.ts.map +1 -1
  128. package/development/link/common.js +19 -1
  129. package/development/link-list.js +7 -1
  130. package/development/loading-indicator.js +7 -1
  131. package/development/logo.js +7 -1
  132. package/development/map-container.js +7 -1
  133. package/development/menu/common/menu-action-common.d.ts.map +1 -1
  134. package/development/menu/common.js +7 -1
  135. package/development/menu/menu.js +7 -1
  136. package/development/message.js +7 -1
  137. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  138. package/development/navigation/common.js +7 -1
  139. package/development/navigation/navigation-list.js +7 -1
  140. package/development/navigation/navigation-marker.js +7 -1
  141. package/development/navigation/navigation-section.js +7 -1
  142. package/development/navigation/navigation.js +7 -1
  143. package/development/notification.js +8 -1
  144. package/development/option/optgroup/optgroup.d.ts +2 -0
  145. package/development/option/optgroup/optgroup.d.ts.map +1 -1
  146. package/development/option/optgroup.js +21 -4
  147. package/development/option/option/option.d.ts +6 -5
  148. package/development/option/option/option.d.ts.map +1 -1
  149. package/development/option/option.js +53 -29
  150. package/development/overlay.js +7 -1
  151. package/development/popover/popover-trigger.js +8 -2
  152. package/development/popover/popover.js +7 -1
  153. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  154. package/development/radio-button/common.js +7 -1
  155. package/development/radio-button/radio-button-group.js +7 -1
  156. package/development/radio-button/radio-button.js +7 -1
  157. package/development/screen-reader-only.js +7 -1
  158. package/development/select.js +7 -1
  159. package/development/selection-expansion-panel.js +7 -1
  160. package/development/signet.js +7 -1
  161. package/development/skiplink-list.js +7 -1
  162. package/development/slider.js +7 -1
  163. package/development/status.js +7 -1
  164. package/development/stepper/step-label.js +7 -1
  165. package/development/stepper/step.js +7 -1
  166. package/development/stepper/stepper.js +7 -1
  167. package/development/table/table-wrapper/table-wrapper.d.ts +24 -0
  168. package/development/table/table-wrapper/table-wrapper.d.ts.map +1 -0
  169. package/development/table/table-wrapper.d.ts +2 -0
  170. package/development/table/table-wrapper.d.ts.map +1 -0
  171. package/development/table/table-wrapper.js +130 -0
  172. package/development/table.d.ts +2 -0
  173. package/development/table.d.ts.map +1 -0
  174. package/development/table.js +2 -0
  175. package/development/tabs/tab-group/tab-group.d.ts +4 -7
  176. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  177. package/development/tabs/tab-group.js +69 -73
  178. package/development/tabs/tab-label.js +7 -1
  179. package/development/tabs/tab.js +7 -1
  180. package/development/tag/tag-group.js +7 -1
  181. package/development/tag/tag.js +7 -1
  182. package/development/teaser.js +7 -1
  183. package/development/time-input.js +7 -1
  184. package/development/timetable-occupancy-icon.js +7 -1
  185. package/development/timetable-occupancy.js +7 -1
  186. package/development/title.js +13 -1
  187. package/development/toast.js +7 -1
  188. package/development/toggle/toggle-option.js +7 -1
  189. package/development/toggle/toggle.js +7 -1
  190. package/development/toggle-check/toggle-check.d.ts +2 -2
  191. package/development/toggle-check/toggle-check.d.ts.map +1 -1
  192. package/development/toggle-check.js +7 -1
  193. package/development/train/train-blocked-passage.js +7 -1
  194. package/development/train/train-formation.js +7 -1
  195. package/development/train/train-wagon.js +7 -1
  196. package/development/train/train.js +7 -1
  197. package/development/visual-checkbox.js +9 -3
  198. package/form-field/form-field-clear.js +1 -1
  199. package/header/common/header-action-common.d.ts.map +1 -1
  200. package/icon/icon-name-mixin.d.ts.map +1 -1
  201. package/icon/icon-request.d.ts.map +1 -1
  202. package/icon.js +86 -86
  203. package/index.d.ts +2 -0
  204. package/index.js +2 -0
  205. package/link/common/block-link-common.d.ts.map +1 -1
  206. package/link/common/inline-link-common.d.ts.map +1 -1
  207. package/link/common/link-common.d.ts.map +1 -1
  208. package/menu/common/menu-action-common.d.ts.map +1 -1
  209. package/navigation/common/navigation-action-common.d.ts.map +1 -1
  210. package/notification.js +1 -1
  211. package/option/optgroup/optgroup.d.ts +2 -0
  212. package/option/optgroup/optgroup.d.ts.map +1 -1
  213. package/option/optgroup.js +24 -21
  214. package/option/option/option.d.ts +6 -5
  215. package/option/option/option.d.ts.map +1 -1
  216. package/option/option.js +72 -69
  217. package/package.json +11 -1
  218. package/popover/popover-trigger.js +1 -1
  219. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  220. package/standard-theme.css +196 -0
  221. package/table/table-wrapper/table-wrapper.d.ts +24 -0
  222. package/table/table-wrapper/table-wrapper.d.ts.map +1 -0
  223. package/table/table-wrapper.d.ts +2 -0
  224. package/table/table-wrapper.d.ts.map +1 -0
  225. package/table/table-wrapper.js +39 -0
  226. package/table.d.ts +2 -0
  227. package/table.d.ts.map +1 -0
  228. package/table.js +1 -0
  229. package/tabs/tab-group/tab-group.d.ts +4 -7
  230. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  231. package/tabs/tab-group.js +80 -81
  232. package/toggle-check/toggle-check.d.ts +2 -2
  233. package/toggle-check/toggle-check.d.ts.map +1 -1
  234. package/visual-checkbox.js +4 -4
@@ -1,4 +1,4 @@
1
- import { css, LitElement, html } from "lit";
1
+ import { css, LitElement, isServer, html } from "lit";
2
2
  import { property, customElement } from "lit/decorators.js";
3
3
  import { ref } from "lit/directives/ref.js";
4
4
  const clockFaceSVG = '<svg focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 105 105"><g class="face"><circle fill="#FFF" cx="52.5" cy="52.5" r="52.5"/><path d="M50.75 4h3.5v12h-3.5zM50.75 89h3.5v12h-3.5zM75.233 9.623l3.03 1.75-6 10.392-3.03-1.75zM32.734 83.233l3.03 1.75-6 10.392-3.03-1.75zM93.628 26.732l1.75 3.031-10.392 6-1.75-3.03zM20.017 69.234l1.75 3.031-10.392 6-1.75-3.03zM101 50.75v3.5H89v-3.5zM16 50.75v3.5H4v-3.5zM95.379 75.232l-1.75 3.031-10.392-6 1.75-3.03zM21.766 32.734l-1.75 3.031-10.392-6 1.75-3.03zM78.267 93.63l-3.03 1.75-6-10.393 3.03-1.75zM35.766 20.015l-3.03 1.75-6-10.392 3.03-1.75z"/><g><path d="M56.873 4.19l1.392.147-.366 3.48-1.392-.145zM47.101 97.177l1.393.146-.366 3.481-1.392-.146zM61.896 4.914l1.37.29-.728 3.424-1.37-.29zM42.458 96.366l1.37.29-.728 3.424-1.37-.291zM66.825 6.157l1.332.432-1.082 3.33-1.331-.434zM37.931 95.085l1.332.432-1.082 3.33-1.331-.433zM71.584 7.906l1.28.569-1.424 3.197-1.28-.57zM33.56 93.32l1.278.569-1.423 3.197-1.28-.57zM80.44 12.852l1.133.823-2.058 2.831-1.132-.823zM25.481 88.494l1.133.822-2.057 2.832-1.133-.823zM84.43 15.986l1.04.937-2.342 2.6-1.04-.936zM21.87 85.469l1.04.936-2.341 2.601-1.04-.937zM88.072 19.522l.937 1.04-2.6 2.343-.937-1.04zM18.593 82.088l.937 1.04-2.601 2.342-.937-1.04zM91.328 23.425l.823 1.133-2.832 2.057-.823-1.132zM15.684 78.385l.823 1.132-2.832 2.058-.822-1.133zM96.52 32.128l.57 1.279-3.198 1.423-.57-1.278zM11.109 70.161l.569 1.279-3.197 1.423-.57-1.279zM98.407 36.85l.433 1.332-3.33 1.081-.432-1.331zM9.483 65.74l.432 1.33-3.329 1.082-.432-1.331zM99.795 41.726l.291 1.37-3.423.727-.29-1.37zM8.34 61.17l.292 1.37-3.424.728-.29-1.37zM100.66 46.73l.146 1.393-3.48.366-.147-1.392zM7.674 56.506l.146 1.392-3.48.366-.147-1.392zM100.811 56.873l-.146 1.392-3.48-.365.145-1.393zM7.821 47.101l-.146 1.392-3.48-.365.145-1.393zM100.09 61.895l-.291 1.369-3.424-.728.291-1.369zM8.631 42.46l-.291 1.37-3.423-.728.29-1.37zM98.84 66.827l-.432 1.331-3.329-1.081.433-1.332zM9.918 37.93l-.433 1.331-3.329-1.082.433-1.331zM97.098 71.585l-.569 1.28-3.197-1.424.57-1.28zM11.677 33.558l-.57 1.28-3.197-1.424.57-1.279zM92.149 80.439l-.823 1.133-2.832-2.058.823-1.132zM16.506 25.482l-.823 1.133-2.831-2.057.823-1.133zM89.017 84.431l-.937 1.04-2.6-2.341.936-1.04zM19.528 21.869l-.936 1.04-2.601-2.342.936-1.04zM85.48 88.076l-1.041.936-2.342-2.6 1.04-.937zM22.91 18.59l-1.04.937-2.341-2.601 1.04-.937zM81.574 91.328l-1.133.823-2.057-2.831 1.132-.823zM26.617 15.684l-1.133.823-2.057-2.832 1.132-.823zM72.873 96.524l-1.279.57-1.423-3.198 1.278-.57zM34.838 11.105l-1.279.57-1.423-3.198 1.279-.57zM68.151 98.405l-1.331.432-1.082-3.329 1.332-.432zM39.259 9.485l-1.332.433-1.081-3.33 1.331-.432zM63.272 99.799l-1.369.29-.728-3.422 1.37-.291zM43.83 8.337l-1.369.291-.727-3.423 1.37-.291zM58.27 100.662l-1.393.146-.366-3.48 1.393-.147zM48.494 7.672l-1.392.147-.366-3.481 1.392-.147z"/></g></g></svg>\n';
@@ -19,6 +19,12 @@ const style = css`/**
19
19
  * }
20
20
  */
21
21
  /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
22
+ /*
23
+ * SBB table mixin
24
+ * Notes:
25
+ * We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
26
+ * Therefore, we have to build the grid avoiding double borders.
27
+ */
22
28
  *,
23
29
  ::before,
24
30
  ::after {
@@ -163,64 +169,75 @@ let SbbClockElement = class extends LitElement {
163
169
  this.now = null;
164
170
  this._moveHoursHandFn = () => this._moveHoursHand();
165
171
  this._moveMinutesHandFn = () => this._moveMinutesHand();
172
+ this._handlePageVisibilityChange = async () => {
173
+ if (document.visibilityState === "hidden") {
174
+ await this._stopClock();
175
+ } else if (!this.now) {
176
+ await this._startClock();
177
+ }
178
+ };
166
179
  }
167
- willUpdate(changedProperties) {
180
+ async willUpdate(changedProperties) {
168
181
  super.willUpdate(changedProperties);
169
- if (changedProperties.has("now")) {
170
- if (this.now) {
171
- this._removeSecondsAnimationStyles();
172
- this._removeHoursAnimationStyles();
173
- this._stopClock();
174
- } else {
175
- this._startClock();
176
- }
182
+ if (!isServer && changedProperties.has("now")) {
183
+ await this._startOrConfigureClock();
184
+ }
185
+ }
186
+ async firstUpdated(changedProperties) {
187
+ super.firstUpdated(changedProperties);
188
+ if (!isServer) {
189
+ document.addEventListener("visibilitychange", this._handlePageVisibilityChange, false);
190
+ await this._startOrConfigureClock();
177
191
  }
178
192
  }
179
- async _handlePageVisibilityChange() {
180
- if (document.visibilityState === "hidden") {
193
+ disconnectedCallback() {
194
+ super.disconnectedCallback();
195
+ this._removeEventListeners();
196
+ }
197
+ async _startOrConfigureClock() {
198
+ if (this.now) {
181
199
  await this._stopClock();
182
- } else if (!this.now) {
200
+ this._resetSecondsHandAnimation();
201
+ this._setHandsStartingPosition();
202
+ } else {
183
203
  await this._startClock();
184
204
  }
185
205
  }
186
- _addEventListeners() {
187
- document.addEventListener("visibilitychange", () => this._handlePageVisibilityChange(), false);
188
- }
189
- _removeEventListeners() {
206
+ /** Starts the clock by defining the hands starting position then starting the animations. */
207
+ async _startClock() {
190
208
  var _a, _b;
191
- document.removeEventListener(
192
- "visibilitychange",
193
- () => this._handlePageVisibilityChange(),
194
- false
209
+ (_a = this._clockHandHours) == null ? void 0 : _a.addEventListener(
210
+ "animationend",
211
+ this._moveHoursHandFn,
212
+ ADD_EVENT_LISTENER_OPTIONS
213
+ );
214
+ (_b = this._clockHandSeconds) == null ? void 0 : _b.addEventListener(
215
+ "animationend",
216
+ this._moveMinutesHandFn,
217
+ ADD_EVENT_LISTENER_OPTIONS
218
+ );
219
+ await new Promise(
220
+ () => setTimeout(() => {
221
+ var _a2;
222
+ this._setHandsStartingPosition();
223
+ (_a2 = this.style) == null ? void 0 : _a2.setProperty("--sbb-clock-animation-play-state", "running");
224
+ }, INITIAL_TIMEOUT_DURATION)
195
225
  );
226
+ }
227
+ /** Stops the clock by removing all the animations. */
228
+ async _stopClock() {
229
+ var _a, _b, _c, _d;
230
+ clearInterval(this._handMovement);
231
+ this._removeSecondsAnimationStyles();
232
+ this._removeHoursAnimationStyles();
196
233
  (_a = this._clockHandHours) == null ? void 0 : _a.removeEventListener("animationend", this._moveHoursHandFn);
197
234
  (_b = this._clockHandSeconds) == null ? void 0 : _b.removeEventListener("animationend", this._moveMinutesHandFn);
198
- clearInterval(this._handMovement);
199
- }
200
- _removeHoursAnimationStyles() {
201
- var _a;
202
- (_a = this._clockHandHours) == null ? void 0 : _a.classList.remove("sbb-clock__hand-hours--initial-hour");
203
- this.style.removeProperty("--sbb-clock-hours-animation-start-angle");
204
- this.style.removeProperty("--sbb-clock-hours-animation-duration");
205
- }
206
- _removeSecondsAnimationStyles() {
207
- var _a, _b;
208
- (_a = this._clockHandSeconds) == null ? void 0 : _a.classList.remove("sbb-clock__hand-seconds--initial-minute");
209
- (_b = this._clockHandMinutes) == null ? void 0 : _b.classList.remove("sbb-clock__hand-minutes--no-transition");
210
- this.style.removeProperty("--sbb-clock-seconds-animation-start-angle");
211
- this.style.removeProperty("--sbb-clock-seconds-animation-duration");
212
- }
213
- /** Given the current date, calculates the hh/mm/ss values and the hh/mm/ss left to the next midnight. */
214
- _assignCurrentTime() {
215
- const date = this.now ? null : /* @__PURE__ */ new Date();
216
- const [hours, minutes, seconds] = date ? [date.getHours(), date.getMinutes(), date.getSeconds()] : this.now.split(":").map((p) => +p);
217
- this._hours = hours % 12;
218
- this._minutes = minutes;
219
- this._seconds = seconds;
235
+ (_c = this._clockHandMinutes) == null ? void 0 : _c.classList.add("sbb-clock__hand-minutes--no-transition");
236
+ (_d = this.style) == null ? void 0 : _d.setProperty("--sbb-clock-animation-play-state", "paused");
220
237
  }
221
238
  /** Set the starting position for the three hands on the clock face. */
222
239
  _setHandsStartingPosition() {
223
- var _a, _b;
240
+ var _a, _b, _c, _d, _e, _f;
224
241
  this._assignCurrentTime();
225
242
  const remainingSeconds = TOTAL_SECONDS_ON_CLOCK_FACE - this._seconds;
226
243
  const remainingMinutes = TOTAL_MINUTES_ON_CLOCK_FACE - this._minutes;
@@ -238,22 +255,29 @@ let SbbClockElement = class extends LitElement {
238
255
  if (remainingHours > 0) {
239
256
  hoursAnimationDuration += (remainingHours - hasRemainingMinutesOrSeconds) * SECONDS_IN_AN_HOUR;
240
257
  }
241
- this.style.setProperty(
258
+ (_a = this.style) == null ? void 0 : _a.setProperty(
242
259
  "--sbb-clock-hours-animation-start-angle",
243
260
  `${Math.ceil(this._hours * HOURS_ANGLE + this._minutes / 2)}deg`
244
261
  );
245
- this.style.setProperty("--sbb-clock-hours-animation-duration", `${hoursAnimationDuration}s`);
246
- this.style.setProperty(
262
+ (_b = this.style) == null ? void 0 : _b.setProperty("--sbb-clock-hours-animation-duration", `${hoursAnimationDuration}s`);
263
+ (_c = this.style) == null ? void 0 : _c.setProperty(
247
264
  "--sbb-clock-seconds-animation-start-angle",
248
265
  `${Math.ceil(this._seconds * SBB_SECONDS_ANGLE)}deg`
249
266
  );
250
- this.style.setProperty("--sbb-clock-seconds-animation-duration", `${remainingSeconds}s`);
267
+ (_d = this.style) == null ? void 0 : _d.setProperty("--sbb-clock-seconds-animation-duration", `${remainingSeconds}s`);
251
268
  this._setMinutesHand();
252
- (_a = this._clockHandSeconds) == null ? void 0 : _a.classList.add("sbb-clock__hand-seconds--initial-minute");
253
- (_b = this._clockHandHours) == null ? void 0 : _b.classList.add("sbb-clock__hand-hours--initial-hour");
254
- this.style.setProperty("--sbb-clock-animation-play-state", "running");
269
+ (_e = this._clockHandSeconds) == null ? void 0 : _e.classList.add("sbb-clock__hand-seconds--initial-minute");
270
+ (_f = this._clockHandHours) == null ? void 0 : _f.classList.add("sbb-clock__hand-hours--initial-hour");
255
271
  this.toggleAttribute("data-initialized", true);
256
272
  }
273
+ /** Given the current date, calculates the hh/mm/ss values and the hh/mm/ss left to the next midnight. */
274
+ _assignCurrentTime() {
275
+ const date = this.now ? null : /* @__PURE__ */ new Date();
276
+ const [hours, minutes, seconds] = date ? [date.getHours(), date.getMinutes(), date.getSeconds()] : this.now.split(":").map((p) => +p);
277
+ this._hours = hours % 12;
278
+ this._minutes = minutes;
279
+ this._seconds = seconds;
280
+ }
257
281
  /** Set the starting position for the minutes hand. */
258
282
  _setMinutesHand() {
259
283
  var _a;
@@ -287,53 +311,38 @@ let SbbClockElement = class extends LitElement {
287
311
  this._minutes++;
288
312
  this._setMinutesHand();
289
313
  }
290
- /** Stops the clock by removing all the animations. */
291
- async _stopClock() {
292
- var _a, _b, _c, _d, _e;
293
- clearInterval(this._handMovement);
294
- if (this.now) {
295
- this._setHandsStartingPosition();
296
- await new Promise((resolve) => setTimeout(resolve));
297
- (_a = this._clockHandSeconds) == null ? void 0 : _a.classList.add("sbb-clock__hand-seconds--initial-minute");
298
- (_b = this._clockHandHours) == null ? void 0 : _b.classList.add("sbb-clock__hand-hours--initial-hour");
299
- } else {
300
- this._removeSecondsAnimationStyles();
301
- this._removeHoursAnimationStyles();
314
+ /**
315
+ * Removing animation by overriding with empty string,
316
+ * then triggering a reflow and re add original animation by removing override.
317
+ * @private
318
+ */
319
+ _resetSecondsHandAnimation() {
320
+ if (!this._clockHandSeconds) {
321
+ return;
302
322
  }
303
- (_c = this._clockHandHours) == null ? void 0 : _c.removeEventListener("animationend", this._moveHoursHandFn);
304
- (_d = this._clockHandSeconds) == null ? void 0 : _d.removeEventListener("animationend", this._moveMinutesHandFn);
305
- (_e = this._clockHandMinutes) == null ? void 0 : _e.classList.add("sbb-clock__hand-minutes--no-transition");
306
- this.style.setProperty("--sbb-clock-animation-play-state", "paused");
323
+ this._clockHandSeconds.style.animation = "";
324
+ this._clockHandSeconds.offsetHeight;
325
+ this._clockHandSeconds.style.removeProperty("animation");
307
326
  }
308
- /** Starts the clock by defining the hands starting position then starting the animations. */
309
- async _startClock() {
327
+ _removeEventListeners() {
310
328
  var _a, _b;
311
- (_a = this._clockHandHours) == null ? void 0 : _a.addEventListener(
312
- "animationend",
313
- this._moveHoursHandFn,
314
- ADD_EVENT_LISTENER_OPTIONS
315
- );
316
- (_b = this._clockHandSeconds) == null ? void 0 : _b.addEventListener(
317
- "animationend",
318
- this._moveMinutesHandFn,
319
- ADD_EVENT_LISTENER_OPTIONS
320
- );
321
- await new Promise(
322
- () => setTimeout(() => this._setHandsStartingPosition(), INITIAL_TIMEOUT_DURATION)
323
- );
329
+ document == null ? void 0 : document.removeEventListener("visibilitychange", this._handlePageVisibilityChange);
330
+ (_a = this._clockHandHours) == null ? void 0 : _a.removeEventListener("animationend", this._moveHoursHandFn);
331
+ (_b = this._clockHandSeconds) == null ? void 0 : _b.removeEventListener("animationend", this._moveMinutesHandFn);
332
+ clearInterval(this._handMovement);
324
333
  }
325
- async firstUpdated(changedProperties) {
326
- super.firstUpdated(changedProperties);
327
- this._addEventListeners();
328
- if (this.now) {
329
- await this._stopClock();
330
- } else {
331
- await this._startClock();
332
- }
334
+ _removeHoursAnimationStyles() {
335
+ var _a;
336
+ (_a = this._clockHandHours) == null ? void 0 : _a.classList.remove("sbb-clock__hand-hours--initial-hour");
337
+ this.style.removeProperty("--sbb-clock-hours-animation-start-angle");
338
+ this.style.removeProperty("--sbb-clock-hours-animation-duration");
333
339
  }
334
- disconnectedCallback() {
335
- super.disconnectedCallback();
336
- this._removeEventListeners();
340
+ _removeSecondsAnimationStyles() {
341
+ var _a, _b;
342
+ (_a = this._clockHandSeconds) == null ? void 0 : _a.classList.remove("sbb-clock__hand-seconds--initial-minute");
343
+ (_b = this._clockHandMinutes) == null ? void 0 : _b.classList.remove("sbb-clock__hand-minutes--no-transition");
344
+ this.style.removeProperty("--sbb-clock-seconds-animation-start-angle");
345
+ this.style.removeProperty("--sbb-clock-seconds-animation-duration");
337
346
  }
338
347
  render() {
339
348
  return html`
@@ -374,4 +383,4 @@ SbbClockElement = __decorateClass([
374
383
  export {
375
384
  SbbClockElement
376
385
  };
377
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2suanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jbG9jay9hc3NldHMvc2JiX2Nsb2NrX2ZhY2Uuc3ZnP3JhdyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jbG9jay9hc3NldHMvc2JiX2Nsb2NrX2hvdXJzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19taW51dGVzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19zZWNvbmRzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svY2xvY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxnIGNsYXNzPVxcXCJmYWNlXFxcIj48Y2lyY2xlIGZpbGw9XFxcIiNGRkZcXFwiIGN4PVxcXCI1Mi41XFxcIiBjeT1cXFwiNTIuNVxcXCIgcj1cXFwiNTIuNVxcXCIvPjxwYXRoIGQ9XFxcIk01MC43NSA0aDMuNXYxMmgtMy41ek01MC43NSA4OWgzLjV2MTJoLTMuNXpNNzUuMjMzIDkuNjIzbDMuMDMgMS43NS02IDEwLjM5Mi0zLjAzLTEuNzV6TTMyLjczNCA4My4yMzNsMy4wMyAxLjc1LTYgMTAuMzkyLTMuMDMtMS43NXpNOTMuNjI4IDI2LjczMmwxLjc1IDMuMDMxLTEwLjM5MiA2LTEuNzUtMy4wM3pNMjAuMDE3IDY5LjIzNGwxLjc1IDMuMDMxLTEwLjM5MiA2LTEuNzUtMy4wM3pNMTAxIDUwLjc1djMuNUg4OXYtMy41ek0xNiA1MC43NXYzLjVINHYtMy41ek05NS4zNzkgNzUuMjMybC0xLjc1IDMuMDMxLTEwLjM5Mi02IDEuNzUtMy4wM3pNMjEuNzY2IDMyLjczNGwtMS43NSAzLjAzMS0xMC4zOTItNiAxLjc1LTMuMDN6TTc4LjI2NyA5My42M2wtMy4wMyAxLjc1LTYtMTAuMzkzIDMuMDMtMS43NXpNMzUuNzY2IDIwLjAxNWwtMy4wMyAxLjc1LTYtMTAuMzkyIDMuMDMtMS43NXpcXFwiLz48Zz48cGF0aCBkPVxcXCJNNTYuODczIDQuMTlsMS4zOTIuMTQ3LS4zNjYgMy40OC0xLjM5Mi0uMTQ1ek00Ny4xMDEgOTcuMTc3bDEuMzkzLjE0Ni0uMzY2IDMuNDgxLTEuMzkyLS4xNDZ6TTYxLjg5NiA0LjkxNGwxLjM3LjI5LS43MjggMy40MjQtMS4zNy0uMjl6TTQyLjQ1OCA5Ni4zNjZsMS4zNy4yOS0uNzI4IDMuNDI0LTEuMzctLjI5MXpNNjYuODI1IDYuMTU3bDEuMzMyLjQzMi0xLjA4MiAzLjMzLTEuMzMxLS40MzR6TTM3LjkzMSA5NS4wODVsMS4zMzIuNDMyLTEuMDgyIDMuMzMtMS4zMzEtLjQzM3pNNzEuNTg0IDcuOTA2bDEuMjguNTY5LTEuNDI0IDMuMTk3LTEuMjgtLjU3ek0zMy41NiA5My4zMmwxLjI3OC41NjktMS40MjMgMy4xOTctMS4yOC0uNTd6TTgwLjQ0IDEyLjg1MmwxLjEzMy44MjMtMi4wNTggMi44MzEtMS4xMzItLjgyM3pNMjUuNDgxIDg4LjQ5NGwxLjEzMy44MjItMi4wNTcgMi44MzItMS4xMzMtLjgyM3pNODQuNDMgMTUuOTg2bDEuMDQuOTM3LTIuMzQyIDIuNi0xLjA0LS45MzZ6TTIxLjg3IDg1LjQ2OWwxLjA0LjkzNi0yLjM0MSAyLjYwMS0xLjA0LS45Mzd6TTg4LjA3MiAxOS41MjJsLjkzNyAxLjA0LTIuNiAyLjM0My0uOTM3LTEuMDR6TTE4LjU5MyA4Mi4wODhsLjkzNyAxLjA0LTIuNjAxIDIuMzQyLS45MzctMS4wNHpNOTEuMzI4IDIzLjQyNWwuODIzIDEuMTMzLTIuODMyIDIuMDU3LS44MjMtMS4xMzJ6TTE1LjY4NCA3OC4zODVsLjgyMyAxLjEzMi0yLjgzMiAyLjA1OC0uODIyLTEuMTMzek05Ni41MiAzMi4xMjhsLjU3IDEuMjc5LTMuMTk4IDEuNDIzLS41Ny0xLjI3OHpNMTEuMTA5IDcwLjE2MWwuNTY5IDEuMjc5LTMuMTk3IDEuNDIzLS41Ny0xLjI3OXpNOTguNDA3IDM2Ljg1bC40MzMgMS4zMzItMy4zMyAxLjA4MS0uNDMyLTEuMzMxek05LjQ4MyA2NS43NGwuNDMyIDEuMzMtMy4zMjkgMS4wODItLjQzMi0xLjMzMXpNOTkuNzk1IDQxLjcyNmwuMjkxIDEuMzctMy40MjMuNzI3LS4yOS0xLjM3ek04LjM0IDYxLjE3bC4yOTIgMS4zNy0zLjQyNC43MjgtLjI5LTEuMzd6TTEwMC42NiA0Ni43M2wuMTQ2IDEuMzkzLTMuNDguMzY2LS4xNDctMS4zOTJ6TTcuNjc0IDU2LjUwNmwuMTQ2IDEuMzkyLTMuNDguMzY2LS4xNDctMS4zOTJ6TTEwMC44MTEgNTYuODczbC0uMTQ2IDEuMzkyLTMuNDgtLjM2NS4xNDUtMS4zOTN6TTcuODIxIDQ3LjEwMWwtLjE0NiAxLjM5Mi0zLjQ4LS4zNjUuMTQ1LTEuMzkzek0xMDAuMDkgNjEuODk1bC0uMjkxIDEuMzY5LTMuNDI0LS43MjguMjkxLTEuMzY5ek04LjYzMSA0Mi40NmwtLjI5MSAxLjM3LTMuNDIzLS43MjguMjktMS4zN3pNOTguODQgNjYuODI3bC0uNDMyIDEuMzMxLTMuMzI5LTEuMDgxLjQzMy0xLjMzMnpNOS45MTggMzcuOTNsLS40MzMgMS4zMzEtMy4zMjktMS4wODIuNDMzLTEuMzMxek05Ny4wOTggNzEuNTg1bC0uNTY5IDEuMjgtMy4xOTctMS40MjQuNTctMS4yOHpNMTEuNjc3IDMzLjU1OGwtLjU3IDEuMjgtMy4xOTctMS40MjQuNTctMS4yNzl6TTkyLjE0OSA4MC40MzlsLS44MjMgMS4xMzMtMi44MzItMi4wNTguODIzLTEuMTMyek0xNi41MDYgMjUuNDgybC0uODIzIDEuMTMzLTIuODMxLTIuMDU3LjgyMy0xLjEzM3pNODkuMDE3IDg0LjQzMWwtLjkzNyAxLjA0LTIuNi0yLjM0MS45MzYtMS4wNHpNMTkuNTI4IDIxLjg2OWwtLjkzNiAxLjA0LTIuNjAxLTIuMzQyLjkzNi0xLjA0ek04NS40OCA4OC4wNzZsLTEuMDQxLjkzNi0yLjM0Mi0yLjYgMS4wNC0uOTM3ek0yMi45MSAxOC41OWwtMS4wNC45MzctMi4zNDEtMi42MDEgMS4wNC0uOTM3ek04MS41NzQgOTEuMzI4bC0xLjEzMy44MjMtMi4wNTctMi44MzEgMS4xMzItLjgyM3pNMjYuNjE3IDE1LjY4NGwtMS4xMzMuODIzLTIuMDU3LTIuODMyIDEuMTMyLS44MjN6TTcyLjg3MyA5Ni41MjRsLTEuMjc5LjU3LTEuNDIzLTMuMTk4IDEuMjc4LS41N3pNMzQuODM4IDExLjEwNWwtMS4yNzkuNTctMS40MjMtMy4xOTggMS4yNzktLjU3ek02OC4xNTEgOTguNDA1bC0xLjMzMS40MzItMS4wODItMy4zMjkgMS4zMzItLjQzMnpNMzkuMjU5IDkuNDg1bC0xLjMzMi40MzMtMS4wODEtMy4zMyAxLjMzMS0uNDMyek02My4yNzIgOTkuNzk5bC0xLjM2OS4yOS0uNzI4LTMuNDIyIDEuMzctLjI5MXpNNDMuODMgOC4zMzdsLTEuMzY5LjI5MS0uNzI3LTMuNDIzIDEuMzctLjI5MXpNNTguMjcgMTAwLjY2MmwtMS4zOTMuMTQ2LS4zNjYtMy40OCAxLjM5My0uMTQ3ek00OC40OTQgNy42NzJsLTEuMzkyLjE0Ny0uMzY2LTMuNDgxIDEuMzkyLS4xNDd6XFxcIi8+PC9nPjwvZz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBpZD1cXFwibW9kX2Nsb2NrX3N2Z19ob3Vyc1xcXCIgZD1cXFwiTTU1LjcgNjQuNWgtNi40bC42LTQ0aDUuMnpcXFwiLz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBkPVxcXCJNNTUuMSw2NC41aC01LjJsMC44LTU4aDMuNkw1NS4xLDY0LjV6XFxcIi8+PC9zdmc+XFxuXCIiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTA1IDEwNVxcXCI+PHBhdGggZD1cXFwiTTU3LjgsMjEuM2MwLTIuOS0yLjQtNS4yLTUuMi01LjJzLTUuMywyLjMtNS4zLDUuMmMwLDIuNywyLDQuOCw0LjUsNS4yVjY5aDEuNVYyNi41QzU1LjgsMjYuMiw1Ny44LDI0LDU3LjgsMjEuM3pcXFwiLz48L3N2Zz5cXG5cIiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJUaW1lIH0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcblxuaW1wb3J0IGNsb2NrRmFjZVNWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfZmFjZS5zdmc/cmF3JztcbmltcG9ydCBjbG9ja0hhbmRsZUhvdXJzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19ob3Vycy5zdmc/cmF3JztcbmltcG9ydCBjbG9ja0hhbmRsZU1pbnV0ZXNTVkcgZnJvbSAnLi9hc3NldHMvc2JiX2Nsb2NrX21pbnV0ZXMuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVTZWNvbmRzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19zZWNvbmRzLnN2Zz9yYXcnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vY2xvY2suc2Nzcz9saXQmaW5saW5lJztcblxuLyoqIE51bWJlciBvZiBob3VycyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX0hPVVJTX09OX0NMT0NLX0ZBQ0UgPSAxMjtcblxuLyoqIE51bWJlciBvZiBtaW51dGVzIG9uIHRoZSBjbG9jayBmYWNlLiAqL1xuY29uc3QgVE9UQUxfTUlOVVRFU19PTl9DTE9DS19GQUNFID0gNjA7XG5cbi8qKiBOdW1iZXIgb2Ygc2Vjb25kcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX1NFQ09ORFNfT05fQ0xPQ0tfRkFDRSA9IDYwO1xuXG4vKiogVGltZW91dCBmb3IgdGhlIGNsb2NrIHN0YXJ0LiAqL1xuY29uc3QgSU5JVElBTF9USU1FT1VUX0RVUkFUSU9OID0gNTA7XG5cbi8qKiBBbmdsZSBpbiBhIHNpbmdsZSByb3RhdGlvbi4gKi9cbmNvbnN0IEZVTExfQU5HTEUgPSAzNjA7XG5cbi8qKiBBbmdsZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBob3VyczogMzYwLzEyLCBtZWFucyBhIGZ1bGwgcm90YXRpb24gLyBudW1iZXIgb2YgaG91cnMgaW4gYSByb3RhdGlvbi4gKi9cbmNvbnN0IEhPVVJTX0FOR0xFID0gMzA7XG5cbi8qKiBBbmdsZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBtaW51dGVzOiAzNjAvNjAsIG1lYW5zIGEgZnVsbCByb3RhdGlvbiAvIG51bWJlciBvZiBtaW51dGVzIGluIG9uZSBob3VyLiAqL1xuY29uc3QgTUlOVVRFU19BTkdMRSA9IDY7XG5cbi8qKiBBbmdsZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBzZWNvbmRzIGZvciBTQkIgY2xvY2sgY3VzdG9tIGJlaGF2aW9yLiAqL1xuY29uc3QgU0JCX1NFQ09ORFNfQU5HTEUgPSAzNjAgLyA1OC41O1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgaW4gYSBtaW51dGUuICovXG5jb25zdCBTRUNPTkRTX0lOX0FfTUlOVVRFID0gNjA7XG5cbi8qKiBOdW1iZXIgb2Ygc2Vjb25kcyBpbiBhbiBob3VyLiAqL1xuY29uc3QgU0VDT05EU19JTl9BTl9IT1VSID0gMzYwMDtcblxuY29uc3QgQUREX0VWRU5UX0xJU1RFTkVSX09QVElPTlM6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICBvbmNlOiB0cnVlLFxuICBwYXNzaXZlOiB0cnVlLFxufTtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBhbmFsb2cgY2xvY2sgd2l0aCB0aGUgY2xhc3NpYyBTQkIgZmFjZS5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1jbG9jaycpXG5leHBvcnQgY2xhc3MgU2JiQ2xvY2tFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgYSBzcGVjaWZpYyB0aW1lIHdoaWNoIHRoZSBjbG9jayBzaG91bGQgc2hvdyBzdGF0aWNhbGx5LlxuICAgKiBAcGFyYW0gdmFsdWUgSEg6TU06c3NcbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBub3c6IFNiYlRpbWUgfCBudWxsID0gbnVsbDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBob3VyIGhhbmQuICovXG4gIHByaXZhdGUgX2Nsb2NrSGFuZEhvdXJzITogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgbWludXRlIGhhbmQuICovXG4gIHByaXZhdGUgX2Nsb2NrSGFuZE1pbnV0ZXMhOiBIVE1MRWxlbWVudDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzZWNvbmQgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfY2xvY2tIYW5kU2Vjb25kcyE6IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBIb3VycyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfaG91cnMhOiBudW1iZXI7XG5cbiAgLyoqIE1pbnV0ZXMgdmFsdWUgZm9yIHRoZSBjdXJyZW50IGRhdGUuICovXG4gIHByaXZhdGUgX21pbnV0ZXMhOiBudW1iZXI7XG5cbiAgLyoqIFNlY29uZHMgdmFsdWUgZm9yIHRoZSBjdXJyZW50IGRhdGUuICovXG4gIHByaXZhdGUgX3NlY29uZHMhOiBudW1iZXI7XG5cbiAgLyoqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBob3VycyBoYW5kLiAqL1xuICBwcml2YXRlIF9tb3ZlSG91cnNIYW5kRm4gPSAoKTogdm9pZCA9PiB0aGlzLl9tb3ZlSG91cnNIYW5kKCk7XG5cbiAgLyoqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBtaW51dGVzIGhhbmQuICovXG4gIHByaXZhdGUgX21vdmVNaW51dGVzSGFuZEZuID0gKCk6IHZvaWQgPT4gdGhpcy5fbW92ZU1pbnV0ZXNIYW5kKCk7XG5cbiAgLyoqIE1vdmUgdGhlIG1pbnV0ZXMgaGFuZCBldmVyeSBtaW51dGUuICovXG4gIHByaXZhdGUgX2hhbmRNb3ZlbWVudD86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25vdycpKSB7XG4gICAgICBpZiAodGhpcy5ub3cpIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpO1xuICAgICAgICB0aGlzLl9yZW1vdmVIb3Vyc0FuaW1hdGlvblN0eWxlcygpO1xuICAgICAgICB0aGlzLl9zdG9wQ2xvY2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3N0YXJ0Q2xvY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAnaGlkZGVuJykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RvcENsb2NrKCk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5ub3cpIHtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0Q2xvY2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgKCkgPT4gdGhpcy5faGFuZGxlUGFnZVZpc2liaWxpdHlDaGFuZ2UoKSwgZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICd2aXNpYmlsaXR5Y2hhbmdlJyxcbiAgICAgICgpID0+IHRoaXMuX2hhbmRsZVBhZ2VWaXNpYmlsaXR5Q2hhbmdlKCksXG4gICAgICBmYWxzZSxcbiAgICApO1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlSG91cnNIYW5kRm4pO1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX2hhbmRNb3ZlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVIb3Vyc0FuaW1hdGlvblN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uY2xhc3NMaXN0LnJlbW92ZSgnc2JiLWNsb2NrX19oYW5kLWhvdXJzLS1pbml0aWFsLWhvdXInKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tc3RhcnQtYW5nbGUnKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1ob3Vycy1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZVNlY29uZHNBbmltYXRpb25TdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8uY2xhc3NMaXN0LnJlbW92ZSgnc2JiLWNsb2NrX19oYW5kLXNlY29uZHMtLWluaXRpYWwtbWludXRlJyk7XG4gICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcz8uY2xhc3NMaXN0LnJlbW92ZSgnc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb24nKTtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1jbG9jay1zZWNvbmRzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICAvKiogR2l2ZW4gdGhlIGN1cnJlbnQgZGF0ZSwgY2FsY3VsYXRlcyB0aGUgaGgvbW0vc3MgdmFsdWVzIGFuZCB0aGUgaGgvbW0vc3MgbGVmdCB0byB0aGUgbmV4dCBtaWRuaWdodC4gKi9cbiAgcHJpdmF0ZSBfYXNzaWduQ3VycmVudFRpbWUoKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMubm93ID8gbnVsbCA6IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IGRhdGVcbiAgICAgID8gW2RhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpXVxuICAgICAgOiB0aGlzLm5vdyEuc3BsaXQoJzonKS5tYXAoKHApID0+ICtwKTtcblxuICAgIHRoaXMuX2hvdXJzID0gaG91cnMgJSAxMjtcbiAgICB0aGlzLl9taW51dGVzID0gbWludXRlcztcbiAgICB0aGlzLl9zZWNvbmRzID0gc2Vjb25kcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGUgdGhyZWUgaGFuZHMgb24gdGhlIGNsb2NrIGZhY2UuICovXG4gIHByaXZhdGUgX3NldEhhbmRzU3RhcnRpbmdQb3NpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hc3NpZ25DdXJyZW50VGltZSgpO1xuICAgIGNvbnN0IHJlbWFpbmluZ1NlY29uZHMgPSBUT1RBTF9TRUNPTkRTX09OX0NMT0NLX0ZBQ0UgLSB0aGlzLl9zZWNvbmRzO1xuICAgIGNvbnN0IHJlbWFpbmluZ01pbnV0ZXMgPSBUT1RBTF9NSU5VVEVTX09OX0NMT0NLX0ZBQ0UgLSB0aGlzLl9taW51dGVzO1xuICAgIGNvbnN0IHJlbWFpbmluZ0hvdXJzID0gVE9UQUxfSE9VUlNfT05fQ0xPQ0tfRkFDRSAtIHRoaXMuX2hvdXJzO1xuXG4gICAgbGV0IGhvdXJzQW5pbWF0aW9uRHVyYXRpb24gPSAwO1xuICAgIGxldCBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzID0gMDtcblxuICAgIGlmIChyZW1haW5pbmdTZWNvbmRzID4gMCkge1xuICAgICAgaG91cnNBbmltYXRpb25EdXJhdGlvbiArPSByZW1haW5pbmdTZWNvbmRzO1xuICAgICAgaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcyA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHJlbWFpbmluZ01pbnV0ZXMgPiAwKSB7XG4gICAgICBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uICs9XG4gICAgICAgIChyZW1haW5pbmdNaW51dGVzIC0gaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcykgKiBTRUNPTkRTX0lOX0FfTUlOVVRFO1xuICAgICAgaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcyA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHJlbWFpbmluZ0hvdXJzID4gMCkge1xuICAgICAgaG91cnNBbmltYXRpb25EdXJhdGlvbiArPVxuICAgICAgICAocmVtYWluaW5nSG91cnMgLSBoYXNSZW1haW5pbmdNaW51dGVzT3JTZWNvbmRzKSAqIFNFQ09ORFNfSU5fQU5fSE9VUjtcbiAgICB9XG5cbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScsXG4gICAgICBgJHtNYXRoLmNlaWwodGhpcy5faG91cnMgKiBIT1VSU19BTkdMRSArIHRoaXMuX21pbnV0ZXMgLyAyKX1kZWdgLFxuICAgICk7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItY2xvY2staG91cnMtYW5pbWF0aW9uLWR1cmF0aW9uJywgYCR7aG91cnNBbmltYXRpb25EdXJhdGlvbn1zYCk7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICctLXNiYi1jbG9jay1zZWNvbmRzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScsXG4gICAgICBgJHtNYXRoLmNlaWwodGhpcy5fc2Vjb25kcyAqIFNCQl9TRUNPTkRTX0FOR0xFKX1kZWdgLFxuICAgICk7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tZHVyYXRpb24nLCBgJHtyZW1haW5pbmdTZWNvbmRzfXNgKTtcblxuICAgIHRoaXMuX3NldE1pbnV0ZXNIYW5kKCk7XG5cbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5jbGFzc0xpc3QuYWRkKCdzYmItY2xvY2tfX2hhbmQtc2Vjb25kcy0taW5pdGlhbC1taW51dGUnKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRIb3Vycz8uY2xhc3NMaXN0LmFkZCgnc2JiLWNsb2NrX19oYW5kLWhvdXJzLS1pbml0aWFsLWhvdXInKTtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1hbmltYXRpb24tcGxheS1zdGF0ZScsICdydW5uaW5nJyk7XG5cbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1pbml0aWFsaXplZCcsIHRydWUpO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gZm9yIHRoZSBtaW51dGVzIGhhbmQuICovXG4gIHByaXZhdGUgX3NldE1pbnV0ZXNIYW5kKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb2NrSGFuZE1pbnV0ZXM/LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICBgcm90YXRlWigke01hdGguY2VpbCh0aGlzLl9taW51dGVzICogTUlOVVRFU19BTkdMRSl9ZGVnKWAsXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBNb3ZlIHRoZSBob3VycyBoYW5kIHRvIHRoZSBuZXh0IHZhbHVlLiAqL1xuICBwcml2YXRlIF9tb3ZlSG91cnNIYW5kKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk7XG5cbiAgICBsZXQgaG91cnNBbmdsZSA9IE1hdGguY2VpbCh0aGlzLl9ob3VycyAqIEhPVVJTX0FOR0xFICsgdGhpcy5fbWludXRlcyAvIDIpO1xuXG4gICAgaWYgKGhvdXJzQW5nbGUgPj0gRlVMTF9BTkdMRSkge1xuICAgICAgaG91cnNBbmdsZSAtPSBGVUxMX0FOR0xFO1xuICAgIH1cblxuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5zdHlsZS5zZXRQcm9wZXJ0eSgndHJhbnNmb3JtJywgYHJvdGF0ZVooJHtob3Vyc0FuZ2xlfWRlZylgKTtcbiAgfVxuXG4gIC8qKiBNb3ZlIHRoZSBtaW51dGVzIGhhbmQgdG8gdGhlIG5leHQgdmFsdWUuICovXG4gIHByaXZhdGUgX21vdmVNaW51dGVzSGFuZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlTWludXRlc0hhbmRGbik7XG5cbiAgICB0aGlzLl9yZW1vdmVTZWNvbmRzQW5pbWF0aW9uU3R5bGVzKCk7XG5cbiAgICB0aGlzLl9hZGRNaW51dGVzQW5kU2V0SGFuZHMoKTtcblxuICAgIHRoaXMuX2hhbmRNb3ZlbWVudCA9IHNldEludGVydmFsKFxuICAgICAgKCkgPT4gdGhpcy5fYWRkTWludXRlc0FuZFNldEhhbmRzKCksXG4gICAgICBUT1RBTF9TRUNPTkRTX09OX0NMT0NLX0ZBQ0UgKiAxMDAwLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9hZGRNaW51dGVzQW5kU2V0SGFuZHMoKTogdm9pZCB7XG4gICAgdGhpcy5fbWludXRlcysrO1xuICAgIHRoaXMuX3NldE1pbnV0ZXNIYW5kKCk7XG4gIH1cblxuICAvKiogU3RvcHMgdGhlIGNsb2NrIGJ5IHJlbW92aW5nIGFsbCB0aGUgYW5pbWF0aW9ucy4gKi9cbiAgcHJpdmF0ZSBhc3luYyBfc3RvcENsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faGFuZE1vdmVtZW50KTtcblxuICAgIGlmICh0aGlzLm5vdykge1xuICAgICAgdGhpcy5fc2V0SGFuZHNTdGFydGluZ1Bvc2l0aW9uKCk7XG5cbiAgICAgIC8vIFdhaXQgYSB0aWNrIHRvIGJlZm9yZSBhbmltYXRpb24gaXMgYWRkZWQuIE90aGVyd2lzZSwgdGhlIGFuaW1hdGlvbiBnZXRzIG5vdCBjb21wbGV0ZWx5XG4gICAgICAvLyByZW1vdmVkIHdoaWNoIGNhbiBsZWFkIHRvIGEgbWlzcG9zaXRpb25lZCBzZWNvbmRzIGhhbmQuXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlKSk7XG5cbiAgICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LmNsYXNzTGlzdC5hZGQoJ3NiYi1jbG9ja19faGFuZC1zZWNvbmRzLS1pbml0aWFsLW1pbnV0ZScpO1xuICAgICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LmNsYXNzTGlzdC5hZGQoJ3NiYi1jbG9ja19faGFuZC1ob3Vycy0taW5pdGlhbC1ob3VyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3JlbW92ZVNlY29uZHNBbmltYXRpb25TdHlsZXMoKTtcbiAgICAgIHRoaXMuX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVIb3Vyc0hhbmRGbik7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuXG4gICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcz8uY2xhc3NMaXN0LmFkZCgnc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb24nKTtcblxuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLWNsb2NrLWFuaW1hdGlvbi1wbGF5LXN0YXRlJywgJ3BhdXNlZCcpO1xuICB9XG5cbiAgLyoqIFN0YXJ0cyB0aGUgY2xvY2sgYnkgZGVmaW5pbmcgdGhlIGhhbmRzIHN0YXJ0aW5nIHBvc2l0aW9uIHRoZW4gc3RhcnRpbmcgdGhlIGFuaW1hdGlvbnMuICovXG4gIHByaXZhdGUgYXN5bmMgX3N0YXJ0Q2xvY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnYW5pbWF0aW9uZW5kJyxcbiAgICAgIHRoaXMuX21vdmVIb3Vyc0hhbmRGbixcbiAgICAgIEFERF9FVkVOVF9MSVNURU5FUl9PUFRJT05TLFxuICAgICk7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdhbmltYXRpb25lbmQnLFxuICAgICAgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4sXG4gICAgICBBRERfRVZFTlRfTElTVEVORVJfT1BUSU9OUyxcbiAgICApO1xuXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKCkgPT5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fc2V0SGFuZHNTdGFydGluZ1Bvc2l0aW9uKCksIElOSVRJQUxfVElNRU9VVF9EVVJBVElPTiksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICBpZiAodGhpcy5ub3cpIHtcbiAgICAgIGF3YWl0IHRoaXMuX3N0b3BDbG9jaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLl9zdGFydENsb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1jbG9ja1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1jbG9ja19fZmFjZVwiIC5pbm5lckhUTUw9JHtjbG9ja0ZhY2VTVkd9Pjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1ob3Vyc1wiXG4gICAgICAgICAgLmlubmVySFRNTD0ke2Nsb2NrSGFuZGxlSG91cnNTVkd9XG4gICAgICAgICAgJHtyZWYoKGU/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9ja0hhbmRIb3VycyA9IGUgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICAgIH0pfVxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMgc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb25cIlxuICAgICAgICAgIC5pbm5lckhUTUw9JHtjbG9ja0hhbmRsZU1pbnV0ZXNTVkd9XG4gICAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcyA9IGVsIGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1zZWNvbmRzXCJcbiAgICAgICAgICAuaW5uZXJIVE1MPSR7Y2xvY2tIYW5kbGVTZWNvbmRzU1ZHfVxuICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMgPSBlbCBhcyBIVE1MU3BhbkVsZW1lbnQ7XG4gICAgICAgICAgfSl9XG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItY2xvY2snOiBTYmJDbG9ja0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFlLGVBQUE7QUNBZixNQUFlLHNCQUFBO0FDQWYsTUFBZSx3QkFBQTtBQ0FmLE1BQWUsd0JBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
386
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2suanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jbG9jay9hc3NldHMvc2JiX2Nsb2NrX2ZhY2Uuc3ZnP3JhdyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9jbG9jay9hc3NldHMvc2JiX2Nsb2NrX2hvdXJzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19taW51dGVzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svYXNzZXRzL3NiYl9jbG9ja19zZWNvbmRzLnN2Zz9yYXciLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2xvY2svY2xvY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEwNSAxMDVcXFwiPjxnIGNsYXNzPVxcXCJmYWNlXFxcIj48Y2lyY2xlIGZpbGw9XFxcIiNGRkZcXFwiIGN4PVxcXCI1Mi41XFxcIiBjeT1cXFwiNTIuNVxcXCIgcj1cXFwiNTIuNVxcXCIvPjxwYXRoIGQ9XFxcIk01MC43NSA0aDMuNXYxMmgtMy41ek01MC43NSA4OWgzLjV2MTJoLTMuNXpNNzUuMjMzIDkuNjIzbDMuMDMgMS43NS02IDEwLjM5Mi0zLjAzLTEuNzV6TTMyLjczNCA4My4yMzNsMy4wMyAxLjc1LTYgMTAuMzkyLTMuMDMtMS43NXpNOTMuNjI4IDI2LjczMmwxLjc1IDMuMDMxLTEwLjM5MiA2LTEuNzUtMy4wM3pNMjAuMDE3IDY5LjIzNGwxLjc1IDMuMDMxLTEwLjM5MiA2LTEuNzUtMy4wM3pNMTAxIDUwLjc1djMuNUg4OXYtMy41ek0xNiA1MC43NXYzLjVINHYtMy41ek05NS4zNzkgNzUuMjMybC0xLjc1IDMuMDMxLTEwLjM5Mi02IDEuNzUtMy4wM3pNMjEuNzY2IDMyLjczNGwtMS43NSAzLjAzMS0xMC4zOTItNiAxLjc1LTMuMDN6TTc4LjI2NyA5My42M2wtMy4wMyAxLjc1LTYtMTAuMzkzIDMuMDMtMS43NXpNMzUuNzY2IDIwLjAxNWwtMy4wMyAxLjc1LTYtMTAuMzkyIDMuMDMtMS43NXpcXFwiLz48Zz48cGF0aCBkPVxcXCJNNTYuODczIDQuMTlsMS4zOTIuMTQ3LS4zNjYgMy40OC0xLjM5Mi0uMTQ1ek00Ny4xMDEgOTcuMTc3bDEuMzkzLjE0Ni0uMzY2IDMuNDgxLTEuMzkyLS4xNDZ6TTYxLjg5NiA0LjkxNGwxLjM3LjI5LS43MjggMy40MjQtMS4zNy0uMjl6TTQyLjQ1OCA5Ni4zNjZsMS4zNy4yOS0uNzI4IDMuNDI0LTEuMzctLjI5MXpNNjYuODI1IDYuMTU3bDEuMzMyLjQzMi0xLjA4MiAzLjMzLTEuMzMxLS40MzR6TTM3LjkzMSA5NS4wODVsMS4zMzIuNDMyLTEuMDgyIDMuMzMtMS4zMzEtLjQzM3pNNzEuNTg0IDcuOTA2bDEuMjguNTY5LTEuNDI0IDMuMTk3LTEuMjgtLjU3ek0zMy41NiA5My4zMmwxLjI3OC41NjktMS40MjMgMy4xOTctMS4yOC0uNTd6TTgwLjQ0IDEyLjg1MmwxLjEzMy44MjMtMi4wNTggMi44MzEtMS4xMzItLjgyM3pNMjUuNDgxIDg4LjQ5NGwxLjEzMy44MjItMi4wNTcgMi44MzItMS4xMzMtLjgyM3pNODQuNDMgMTUuOTg2bDEuMDQuOTM3LTIuMzQyIDIuNi0xLjA0LS45MzZ6TTIxLjg3IDg1LjQ2OWwxLjA0LjkzNi0yLjM0MSAyLjYwMS0xLjA0LS45Mzd6TTg4LjA3MiAxOS41MjJsLjkzNyAxLjA0LTIuNiAyLjM0My0uOTM3LTEuMDR6TTE4LjU5MyA4Mi4wODhsLjkzNyAxLjA0LTIuNjAxIDIuMzQyLS45MzctMS4wNHpNOTEuMzI4IDIzLjQyNWwuODIzIDEuMTMzLTIuODMyIDIuMDU3LS44MjMtMS4xMzJ6TTE1LjY4NCA3OC4zODVsLjgyMyAxLjEzMi0yLjgzMiAyLjA1OC0uODIyLTEuMTMzek05Ni41MiAzMi4xMjhsLjU3IDEuMjc5LTMuMTk4IDEuNDIzLS41Ny0xLjI3OHpNMTEuMTA5IDcwLjE2MWwuNTY5IDEuMjc5LTMuMTk3IDEuNDIzLS41Ny0xLjI3OXpNOTguNDA3IDM2Ljg1bC40MzMgMS4zMzItMy4zMyAxLjA4MS0uNDMyLTEuMzMxek05LjQ4MyA2NS43NGwuNDMyIDEuMzMtMy4zMjkgMS4wODItLjQzMi0xLjMzMXpNOTkuNzk1IDQxLjcyNmwuMjkxIDEuMzctMy40MjMuNzI3LS4yOS0xLjM3ek04LjM0IDYxLjE3bC4yOTIgMS4zNy0zLjQyNC43MjgtLjI5LTEuMzd6TTEwMC42NiA0Ni43M2wuMTQ2IDEuMzkzLTMuNDguMzY2LS4xNDctMS4zOTJ6TTcuNjc0IDU2LjUwNmwuMTQ2IDEuMzkyLTMuNDguMzY2LS4xNDctMS4zOTJ6TTEwMC44MTEgNTYuODczbC0uMTQ2IDEuMzkyLTMuNDgtLjM2NS4xNDUtMS4zOTN6TTcuODIxIDQ3LjEwMWwtLjE0NiAxLjM5Mi0zLjQ4LS4zNjUuMTQ1LTEuMzkzek0xMDAuMDkgNjEuODk1bC0uMjkxIDEuMzY5LTMuNDI0LS43MjguMjkxLTEuMzY5ek04LjYzMSA0Mi40NmwtLjI5MSAxLjM3LTMuNDIzLS43MjguMjktMS4zN3pNOTguODQgNjYuODI3bC0uNDMyIDEuMzMxLTMuMzI5LTEuMDgxLjQzMy0xLjMzMnpNOS45MTggMzcuOTNsLS40MzMgMS4zMzEtMy4zMjktMS4wODIuNDMzLTEuMzMxek05Ny4wOTggNzEuNTg1bC0uNTY5IDEuMjgtMy4xOTctMS40MjQuNTctMS4yOHpNMTEuNjc3IDMzLjU1OGwtLjU3IDEuMjgtMy4xOTctMS40MjQuNTctMS4yNzl6TTkyLjE0OSA4MC40MzlsLS44MjMgMS4xMzMtMi44MzItMi4wNTguODIzLTEuMTMyek0xNi41MDYgMjUuNDgybC0uODIzIDEuMTMzLTIuODMxLTIuMDU3LjgyMy0xLjEzM3pNODkuMDE3IDg0LjQzMWwtLjkzNyAxLjA0LTIuNi0yLjM0MS45MzYtMS4wNHpNMTkuNTI4IDIxLjg2OWwtLjkzNiAxLjA0LTIuNjAxLTIuMzQyLjkzNi0xLjA0ek04NS40OCA4OC4wNzZsLTEuMDQxLjkzNi0yLjM0Mi0yLjYgMS4wNC0uOTM3ek0yMi45MSAxOC41OWwtMS4wNC45MzctMi4zNDEtMi42MDEgMS4wNC0uOTM3ek04MS41NzQgOTEuMzI4bC0xLjEzMy44MjMtMi4wNTctMi44MzEgMS4xMzItLjgyM3pNMjYuNjE3IDE1LjY4NGwtMS4xMzMuODIzLTIuMDU3LTIuODMyIDEuMTMyLS44MjN6TTcyLjg3MyA5Ni41MjRsLTEuMjc5LjU3LTEuNDIzLTMuMTk4IDEuMjc4LS41N3pNMzQuODM4IDExLjEwNWwtMS4yNzkuNTctMS40MjMtMy4xOTggMS4yNzktLjU3ek02OC4xNTEgOTguNDA1bC0xLjMzMS40MzItMS4wODItMy4zMjkgMS4zMzItLjQzMnpNMzkuMjU5IDkuNDg1bC0xLjMzMi40MzMtMS4wODEtMy4zMyAxLjMzMS0uNDMyek02My4yNzIgOTkuNzk5bC0xLjM2OS4yOS0uNzI4LTMuNDIyIDEuMzctLjI5MXpNNDMuODMgOC4zMzdsLTEuMzY5LjI5MS0uNzI3LTMuNDIzIDEuMzctLjI5MXpNNTguMjcgMTAwLjY2MmwtMS4zOTMuMTQ2LS4zNjYtMy40OCAxLjM5My0uMTQ3ek00OC40OTQgNy42NzJsLTEuMzkyLjE0Ny0uMzY2LTMuNDgxIDEuMzkyLS4xNDd6XFxcIi8+PC9nPjwvZz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBpZD1cXFwibW9kX2Nsb2NrX3N2Z19ob3Vyc1xcXCIgZD1cXFwiTTU1LjcgNjQuNWgtNi40bC42LTQ0aDUuMnpcXFwiLz48L3N2Zz5cXG5cIiIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmb2N1c2FibGU9XFxcImZhbHNlXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDUgMTA1XFxcIj48cGF0aCBkPVxcXCJNNTUuMSw2NC41aC01LjJsMC44LTU4aDMuNkw1NS4xLDY0LjV6XFxcIi8+PC9zdmc+XFxuXCIiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTA1IDEwNVxcXCI+PHBhdGggZD1cXFwiTTU3LjgsMjEuM2MwLTIuOS0yLjQtNS4yLTUuMi01LjJzLTUuMywyLjMtNS4zLDUuMmMwLDIuNywyLDQuOCw0LjUsNS4yVjY5aDEuNVYyNi41QzU1LjgsMjYuMiw1Ny44LDI0LDU3LjgsMjEuM3pcXFwiLz48L3N2Zz5cXG5cIiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiVGltZSB9IGZyb20gJy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5cbmltcG9ydCBjbG9ja0ZhY2VTVkcgZnJvbSAnLi9hc3NldHMvc2JiX2Nsb2NrX2ZhY2Uuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVIb3Vyc1NWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfaG91cnMuc3ZnP3Jhdyc7XG5pbXBvcnQgY2xvY2tIYW5kbGVNaW51dGVzU1ZHIGZyb20gJy4vYXNzZXRzL3NiYl9jbG9ja19taW51dGVzLnN2Zz9yYXcnO1xuaW1wb3J0IGNsb2NrSGFuZGxlU2Vjb25kc1NWRyBmcm9tICcuL2Fzc2V0cy9zYmJfY2xvY2tfc2Vjb25kcy5zdmc/cmF3JztcbmltcG9ydCBzdHlsZSBmcm9tICcuL2Nsb2NrLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKiBOdW1iZXIgb2YgaG91cnMgb24gdGhlIGNsb2NrIGZhY2UuICovXG5jb25zdCBUT1RBTF9IT1VSU19PTl9DTE9DS19GQUNFID0gMTI7XG5cbi8qKiBOdW1iZXIgb2YgbWludXRlcyBvbiB0aGUgY2xvY2sgZmFjZS4gKi9cbmNvbnN0IFRPVEFMX01JTlVURVNfT05fQ0xPQ0tfRkFDRSA9IDYwO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgb24gdGhlIGNsb2NrIGZhY2UuICovXG5jb25zdCBUT1RBTF9TRUNPTkRTX09OX0NMT0NLX0ZBQ0UgPSA2MDtcblxuLyoqIFRpbWVvdXQgZm9yIHRoZSBjbG9jayBzdGFydC4gKi9cbmNvbnN0IElOSVRJQUxfVElNRU9VVF9EVVJBVElPTiA9IDUwO1xuXG4vKiogQW5nbGUgaW4gYSBzaW5nbGUgcm90YXRpb24uICovXG5jb25zdCBGVUxMX0FOR0xFID0gMzYwO1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgaG91cnM6IDM2MC8xMiwgbWVhbnMgYSBmdWxsIHJvdGF0aW9uIC8gbnVtYmVyIG9mIGhvdXJzIGluIGEgcm90YXRpb24uICovXG5jb25zdCBIT1VSU19BTkdMRSA9IDMwO1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgbWludXRlczogMzYwLzYwLCBtZWFucyBhIGZ1bGwgcm90YXRpb24gLyBudW1iZXIgb2YgbWludXRlcyBpbiBvbmUgaG91ci4gKi9cbmNvbnN0IE1JTlVURVNfQU5HTEUgPSA2O1xuXG4vKiogQW5nbGUgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgc2Vjb25kcyBmb3IgU0JCIGNsb2NrIGN1c3RvbSBiZWhhdmlvci4gKi9cbmNvbnN0IFNCQl9TRUNPTkRTX0FOR0xFID0gMzYwIC8gNTguNTtcblxuLyoqIE51bWJlciBvZiBzZWNvbmRzIGluIGEgbWludXRlLiAqL1xuY29uc3QgU0VDT05EU19JTl9BX01JTlVURSA9IDYwO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgaW4gYW4gaG91ci4gKi9cbmNvbnN0IFNFQ09ORFNfSU5fQU5fSE9VUiA9IDM2MDA7XG5cbmNvbnN0IEFERF9FVkVOVF9MSVNURU5FUl9PUFRJT05TOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyA9IHtcbiAgb25jZTogdHJ1ZSxcbiAgcGFzc2l2ZTogdHJ1ZSxcbn07XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gYW5hbG9nIGNsb2NrIHdpdGggdGhlIGNsYXNzaWMgU0JCIGZhY2UuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItY2xvY2snKVxuZXhwb3J0IGNsYXNzIFNiYkNsb2NrRWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKipcbiAgICogRGVmaW5lIGEgc3BlY2lmaWMgdGltZSB3aGljaCB0aGUgY2xvY2sgc2hvdWxkIHNob3cgc3RhdGljYWxseS5cbiAgICogQHBhcmFtIHZhbHVlIEhIOk1NOnNzXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgbm93OiBTYmJUaW1lIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgaG91ciBoYW5kLiAqL1xuICBwcml2YXRlIF9jbG9ja0hhbmRIb3VycyE6IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIG1pbnV0ZSBoYW5kLiAqL1xuICBwcml2YXRlIF9jbG9ja0hhbmRNaW51dGVzITogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2Vjb25kIGhhbmQuICovXG4gIHByaXZhdGUgX2Nsb2NrSGFuZFNlY29uZHMhOiBIVE1MRWxlbWVudDtcblxuICAvKiogSG91cnMgdmFsdWUgZm9yIHRoZSBjdXJyZW50IGRhdGUuICovXG4gIHByaXZhdGUgX2hvdXJzITogbnVtYmVyO1xuXG4gIC8qKiBNaW51dGVzIHZhbHVlIGZvciB0aGUgY3VycmVudCBkYXRlLiAqL1xuICBwcml2YXRlIF9taW51dGVzITogbnVtYmVyO1xuXG4gIC8qKiBTZWNvbmRzIHZhbHVlIGZvciB0aGUgY3VycmVudCBkYXRlLiAqL1xuICBwcml2YXRlIF9zZWNvbmRzITogbnVtYmVyO1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgaG91cnMgaGFuZC4gKi9cbiAgcHJpdmF0ZSBfbW92ZUhvdXJzSGFuZEZuID0gKCk6IHZvaWQgPT4gdGhpcy5fbW92ZUhvdXJzSGFuZCgpO1xuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgbWludXRlcyBoYW5kLiAqL1xuICBwcml2YXRlIF9tb3ZlTWludXRlc0hhbmRGbiA9ICgpOiB2b2lkID0+IHRoaXMuX21vdmVNaW51dGVzSGFuZCgpO1xuXG4gIC8qKiBNb3ZlIHRoZSBtaW51dGVzIGhhbmQgZXZlcnkgbWludXRlLiAqL1xuICBwcml2YXRlIF9oYW5kTW92ZW1lbnQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIWlzU2VydmVyICYmIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbm93JykpIHtcbiAgICAgIGF3YWl0IHRoaXMuX3N0YXJ0T3JDb25maWd1cmVDbG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLl9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSwgZmFsc2UpO1xuICAgICAgYXdhaXQgdGhpcy5fc3RhcnRPckNvbmZpZ3VyZUNsb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVBhZ2VWaXNpYmlsaXR5Q2hhbmdlID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGlmIChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nKSB7XG4gICAgICBhd2FpdCB0aGlzLl9zdG9wQ2xvY2soKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm5vdykge1xuICAgICAgYXdhaXQgdGhpcy5fc3RhcnRDbG9jaygpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGFzeW5jIF9zdGFydE9yQ29uZmlndXJlQ2xvY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubm93KSB7XG4gICAgICBhd2FpdCB0aGlzLl9zdG9wQ2xvY2soKTtcbiAgICAgIHRoaXMuX3Jlc2V0U2Vjb25kc0hhbmRBbmltYXRpb24oKTtcbiAgICAgIHRoaXMuX3NldEhhbmRzU3RhcnRpbmdQb3NpdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLl9zdGFydENsb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFN0YXJ0cyB0aGUgY2xvY2sgYnkgZGVmaW5pbmcgdGhlIGhhbmRzIHN0YXJ0aW5nIHBvc2l0aW9uIHRoZW4gc3RhcnRpbmcgdGhlIGFuaW1hdGlvbnMuICovXG4gIHByaXZhdGUgYXN5bmMgX3N0YXJ0Q2xvY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnYW5pbWF0aW9uZW5kJyxcbiAgICAgIHRoaXMuX21vdmVIb3Vyc0hhbmRGbixcbiAgICAgIEFERF9FVkVOVF9MSVNURU5FUl9PUFRJT05TLFxuICAgICk7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdhbmltYXRpb25lbmQnLFxuICAgICAgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4sXG4gICAgICBBRERfRVZFTlRfTElTVEVORVJfT1BUSU9OUyxcbiAgICApO1xuXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKCkgPT5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zZXRIYW5kc1N0YXJ0aW5nUG9zaXRpb24oKTtcblxuICAgICAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItY2xvY2stYW5pbWF0aW9uLXBsYXktc3RhdGUnLCAncnVubmluZycpO1xuICAgICAgfSwgSU5JVElBTF9USU1FT1VUX0RVUkFUSU9OKSxcbiAgICApO1xuICB9XG5cbiAgLyoqIFN0b3BzIHRoZSBjbG9jayBieSByZW1vdmluZyBhbGwgdGhlIGFuaW1hdGlvbnMuICovXG4gIHByaXZhdGUgYXN5bmMgX3N0b3BDbG9jaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX2hhbmRNb3ZlbWVudCk7XG5cbiAgICB0aGlzLl9yZW1vdmVTZWNvbmRzQW5pbWF0aW9uU3R5bGVzKCk7XG4gICAgdGhpcy5fcmVtb3ZlSG91cnNBbmltYXRpb25TdHlsZXMoKTtcblxuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlSG91cnNIYW5kRm4pO1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVNaW51dGVzSGFuZEZuKTtcblxuICAgIHRoaXMuX2Nsb2NrSGFuZE1pbnV0ZXM/LmNsYXNzTGlzdC5hZGQoJ3NiYi1jbG9ja19faGFuZC1taW51dGVzLS1uby10cmFuc2l0aW9uJyk7XG5cbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItY2xvY2stYW5pbWF0aW9uLXBsYXktc3RhdGUnLCAncGF1c2VkJyk7XG4gIH1cblxuICAvKiogU2V0IHRoZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgdGhlIHRocmVlIGhhbmRzIG9uIHRoZSBjbG9jayBmYWNlLiAqL1xuICBwcml2YXRlIF9zZXRIYW5kc1N0YXJ0aW5nUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXNzaWduQ3VycmVudFRpbWUoKTtcbiAgICBjb25zdCByZW1haW5pbmdTZWNvbmRzID0gVE9UQUxfU0VDT05EU19PTl9DTE9DS19GQUNFIC0gdGhpcy5fc2Vjb25kcztcbiAgICBjb25zdCByZW1haW5pbmdNaW51dGVzID0gVE9UQUxfTUlOVVRFU19PTl9DTE9DS19GQUNFIC0gdGhpcy5fbWludXRlcztcbiAgICBjb25zdCByZW1haW5pbmdIb3VycyA9IFRPVEFMX0hPVVJTX09OX0NMT0NLX0ZBQ0UgLSB0aGlzLl9ob3VycztcblxuICAgIGxldCBob3Vyc0FuaW1hdGlvbkR1cmF0aW9uID0gMDtcbiAgICBsZXQgaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcyA9IDA7XG5cbiAgICBpZiAocmVtYWluaW5nU2Vjb25kcyA+IDApIHtcbiAgICAgIGhvdXJzQW5pbWF0aW9uRHVyYXRpb24gKz0gcmVtYWluaW5nU2Vjb25kcztcbiAgICAgIGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMgPSAxO1xuICAgIH1cblxuICAgIGlmIChyZW1haW5pbmdNaW51dGVzID4gMCkge1xuICAgICAgaG91cnNBbmltYXRpb25EdXJhdGlvbiArPVxuICAgICAgICAocmVtYWluaW5nTWludXRlcyAtIGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMpICogU0VDT05EU19JTl9BX01JTlVURTtcbiAgICAgIGhhc1JlbWFpbmluZ01pbnV0ZXNPclNlY29uZHMgPSAxO1xuICAgIH1cblxuICAgIGlmIChyZW1haW5pbmdIb3VycyA+IDApIHtcbiAgICAgIGhvdXJzQW5pbWF0aW9uRHVyYXRpb24gKz1cbiAgICAgICAgKHJlbWFpbmluZ0hvdXJzIC0gaGFzUmVtYWluaW5nTWludXRlc09yU2Vjb25kcykgKiBTRUNPTkRTX0lOX0FOX0hPVVI7XG4gICAgfVxuXG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAnLS1zYmItY2xvY2staG91cnMtYW5pbWF0aW9uLXN0YXJ0LWFuZ2xlJyxcbiAgICAgIGAke01hdGguY2VpbCh0aGlzLl9ob3VycyAqIEhPVVJTX0FOR0xFICsgdGhpcy5fbWludXRlcyAvIDIpfWRlZ2AsXG4gICAgKTtcbiAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItY2xvY2staG91cnMtYW5pbWF0aW9uLWR1cmF0aW9uJywgYCR7aG91cnNBbmltYXRpb25EdXJhdGlvbn1zYCk7XG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tc3RhcnQtYW5nbGUnLFxuICAgICAgYCR7TWF0aC5jZWlsKHRoaXMuX3NlY29uZHMgKiBTQkJfU0VDT05EU19BTkdMRSl9ZGVnYCxcbiAgICApO1xuICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1jbG9jay1zZWNvbmRzLWFuaW1hdGlvbi1kdXJhdGlvbicsIGAke3JlbWFpbmluZ1NlY29uZHN9c2ApO1xuXG4gICAgdGhpcy5fc2V0TWludXRlc0hhbmQoKTtcblxuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHM/LmNsYXNzTGlzdC5hZGQoJ3NiYi1jbG9ja19faGFuZC1zZWNvbmRzLS1pbml0aWFsLW1pbnV0ZScpO1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5jbGFzc0xpc3QuYWRkKCdzYmItY2xvY2tfX2hhbmQtaG91cnMtLWluaXRpYWwtaG91cicpO1xuXG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaW5pdGlhbGl6ZWQnLCB0cnVlKTtcbiAgfVxuXG4gIC8qKiBHaXZlbiB0aGUgY3VycmVudCBkYXRlLCBjYWxjdWxhdGVzIHRoZSBoaC9tbS9zcyB2YWx1ZXMgYW5kIHRoZSBoaC9tbS9zcyBsZWZ0IHRvIHRoZSBuZXh0IG1pZG5pZ2h0LiAqL1xuICBwcml2YXRlIF9hc3NpZ25DdXJyZW50VGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5ub3cgPyBudWxsIDogbmV3IERhdGUoKTtcbiAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gZGF0ZVxuICAgICAgPyBbZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCldXG4gICAgICA6IHRoaXMubm93IS5zcGxpdCgnOicpLm1hcCgocCkgPT4gK3ApO1xuXG4gICAgdGhpcy5faG91cnMgPSBob3VycyAlIDEyO1xuICAgIHRoaXMuX21pbnV0ZXMgPSBtaW51dGVzO1xuICAgIHRoaXMuX3NlY29uZHMgPSBzZWNvbmRzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gZm9yIHRoZSBtaW51dGVzIGhhbmQuICovXG4gIHByaXZhdGUgX3NldE1pbnV0ZXNIYW5kKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb2NrSGFuZE1pbnV0ZXM/LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICBgcm90YXRlWigke01hdGguY2VpbCh0aGlzLl9taW51dGVzICogTUlOVVRFU19BTkdMRSl9ZGVnKWAsXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBNb3ZlIHRoZSBob3VycyBoYW5kIHRvIHRoZSBuZXh0IHZhbHVlLiAqL1xuICBwcml2YXRlIF9tb3ZlSG91cnNIYW5kKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk7XG5cbiAgICBsZXQgaG91cnNBbmdsZSA9IE1hdGguY2VpbCh0aGlzLl9ob3VycyAqIEhPVVJTX0FOR0xFICsgdGhpcy5fbWludXRlcyAvIDIpO1xuXG4gICAgaWYgKGhvdXJzQW5nbGUgPj0gRlVMTF9BTkdMRSkge1xuICAgICAgaG91cnNBbmdsZSAtPSBGVUxMX0FOR0xFO1xuICAgIH1cblxuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5zdHlsZS5zZXRQcm9wZXJ0eSgndHJhbnNmb3JtJywgYHJvdGF0ZVooJHtob3Vyc0FuZ2xlfWRlZylgKTtcbiAgfVxuXG4gIC8qKiBNb3ZlIHRoZSBtaW51dGVzIGhhbmQgdG8gdGhlIG5leHQgdmFsdWUuICovXG4gIHByaXZhdGUgX21vdmVNaW51dGVzSGFuZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLl9tb3ZlTWludXRlc0hhbmRGbik7XG5cbiAgICB0aGlzLl9yZW1vdmVTZWNvbmRzQW5pbWF0aW9uU3R5bGVzKCk7XG5cbiAgICB0aGlzLl9hZGRNaW51dGVzQW5kU2V0SGFuZHMoKTtcblxuICAgIHRoaXMuX2hhbmRNb3ZlbWVudCA9IHNldEludGVydmFsKFxuICAgICAgKCkgPT4gdGhpcy5fYWRkTWludXRlc0FuZFNldEhhbmRzKCksXG4gICAgICBUT1RBTF9TRUNPTkRTX09OX0NMT0NLX0ZBQ0UgKiAxMDAwLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9hZGRNaW51dGVzQW5kU2V0SGFuZHMoKTogdm9pZCB7XG4gICAgdGhpcy5fbWludXRlcysrO1xuICAgIHRoaXMuX3NldE1pbnV0ZXNIYW5kKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZpbmcgYW5pbWF0aW9uIGJ5IG92ZXJyaWRpbmcgd2l0aCBlbXB0eSBzdHJpbmcsXG4gICAqIHRoZW4gdHJpZ2dlcmluZyBhIHJlZmxvdyBhbmQgcmUgYWRkIG9yaWdpbmFsIGFuaW1hdGlvbiBieSByZW1vdmluZyBvdmVycmlkZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3Jlc2V0U2Vjb25kc0hhbmRBbmltYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jbG9ja0hhbmRTZWNvbmRzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMuc3R5bGUuYW5pbWF0aW9uID0gJyc7XG4gICAgLy8gSGFjayB0byB0cmlnZ2VyIHJlZmxvd1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMub2Zmc2V0SGVpZ2h0O1xuICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2FuaW1hdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLl9oYW5kbGVQYWdlVmlzaWJpbGl0eUNoYW5nZSk7XG4gICAgdGhpcy5fY2xvY2tIYW5kSG91cnM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuX21vdmVIb3Vyc0hhbmRGbik7XG4gICAgdGhpcy5fY2xvY2tIYW5kU2Vjb25kcz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5fbW92ZU1pbnV0ZXNIYW5kRm4pO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faGFuZE1vdmVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZUhvdXJzQW5pbWF0aW9uU3R5bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb2NrSGFuZEhvdXJzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtaG91cnMtLWluaXRpYWwtaG91cicpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1zdGFydC1hbmdsZScpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLWhvdXJzLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlU2Vjb25kc0FuaW1hdGlvblN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9ja0hhbmRTZWNvbmRzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtc2Vjb25kcy0taW5pdGlhbC1taW51dGUnKTtcbiAgICB0aGlzLl9jbG9ja0hhbmRNaW51dGVzPy5jbGFzc0xpc3QucmVtb3ZlKCdzYmItY2xvY2tfX2hhbmQtbWludXRlcy0tbm8tdHJhbnNpdGlvbicpO1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLWNsb2NrLXNlY29uZHMtYW5pbWF0aW9uLXN0YXJ0LWFuZ2xlJyk7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYmItY2xvY2stc2Vjb25kcy1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1jbG9ja1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1jbG9ja19fZmFjZVwiIC5pbm5lckhUTUw9JHtjbG9ja0ZhY2VTVkd9Pjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1ob3Vyc1wiXG4gICAgICAgICAgLmlubmVySFRNTD0ke2Nsb2NrSGFuZGxlSG91cnNTVkd9XG4gICAgICAgICAgJHtyZWYoKGU/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9ja0hhbmRIb3VycyA9IGUgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICAgIH0pfVxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMgc2JiLWNsb2NrX19oYW5kLW1pbnV0ZXMtLW5vLXRyYW5zaXRpb25cIlxuICAgICAgICAgIC5pbm5lckhUTUw9JHtjbG9ja0hhbmRsZU1pbnV0ZXNTVkd9XG4gICAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvY2tIYW5kTWludXRlcyA9IGVsIGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1jbG9ja19faGFuZC1zZWNvbmRzXCJcbiAgICAgICAgICAuaW5uZXJIVE1MPSR7Y2xvY2tIYW5kbGVTZWNvbmRzU1ZHfVxuICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb2NrSGFuZFNlY29uZHMgPSBlbCBhcyBIVE1MU3BhbkVsZW1lbnQ7XG4gICAgICAgICAgfSl9XG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItY2xvY2snOiBTYmJDbG9ja0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBZSxlQUFBO0FDQWYsTUFBZSxzQkFBQTtBQ0FmLE1BQWUsd0JBQUE7QUNBZixNQUFlLHdCQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -15,6 +15,12 @@ const style = css`@charset "UTF-8";
15
15
  * }
16
16
  */
17
17
  /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
18
+ /*
19
+ * SBB table mixin
20
+ * Notes:
21
+ * We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
22
+ * Therefore, we have to build the grid avoiding double borders.
23
+ */
18
24
  *,
19
25
  ::before,
20
26
  ::after {
@@ -111,4 +117,4 @@ SbbContainerElement = __decorateClass([
111
117
  export {
112
118
  SbbContainerElement
113
119
  };
114
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29udGFpbmVyL2NvbnRhaW5lci9jb250YWluZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9jb250YWluZXIuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBpdHMgY29udGVudCB3aXRoIHRoZSBkZWZhdWx0IHBhZ2Ugc3BhY2luZy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBhbnl0aGluZyB0byB0aGUgY29udGFpbmVyLlxuICogQHNsb3Qgc3RpY2t5LWJhciAtIFRoZSBzbG90IHVzZWQgYnkgdGhlIHNiYi1zdGlja3ktYmFyIGNvbXBvbmVudC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1jb250YWluZXInKVxuZXhwb3J0IGNsYXNzIFNiYkNvbnRhaW5lckVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbnRhaW5lciBpcyBleHBhbmRlZC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgZXhwYW5kZWQgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgYmFja2dyb3VuZCBjb2xvciBpcyBzaG93biBvbiBmdWxsIGNvbnRhaW5lciB3aWR0aCBvbiBsYXJnZSBzY3JlZW5zLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlLCBhdHRyaWJ1dGU6ICdiYWNrZ3JvdW5kLWV4cGFuZGVkJyB9KVxuICBwdWJsaWMgYmFja2dyb3VuZEV4cGFuZGVkID0gZmFsc2U7XG5cbiAgLyoqIENvbG9yIG9mIHRoZSBjb250YWluZXIsIGxpa2UgdHJhbnNwYXJlbnQsIHdoaXRlIGV0Yy4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgY29sb3I6ICd0cmFuc3BhcmVudCcgfCAnd2hpdGUnIHwgJ21pbGsnID0gJ3doaXRlJztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2V4cGFuZGVkJykpIHtcbiAgICAgIHRoaXMucXVlcnlTZWxlY3Rvcj8uKCdzYmItc3RpY2t5LWJhcicpPy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnLCB0aGlzLmV4cGFuZGVkKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItY29udGFpbmVyXCI+XG4gICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNsb3QgbmFtZT1cInN0aWNreS1iYXJcIj48L3Nsb3Q+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWNvbnRhaW5lcic6IFNiYkNvbnRhaW5lckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCYSxJQUFBLHNCQUFOLGNBQWtDLFdBQVc7QUFBQSxFQUE3QyxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFJdUMsU0FBTyxXQUFXO0FBSTlELFNBQU8scUJBQXFCO0FBR0MsU0FBTyxRQUEwQztBQUFBLEVBQUE7QUFBQSxFQUUzRCxXQUFXLG1CQUErQzs7QUFDM0UsVUFBTSxXQUFXLGlCQUFpQjtBQUU5QixRQUFBLGtCQUFrQixJQUFJLFVBQVUsR0FBRztBQUNyQyx1QkFBSyxrQkFBTCw4QkFBcUIsc0JBQXJCLG1CQUF3QyxnQkFBZ0IsaUJBQWlCLEtBQUs7QUFBQSxJQUNoRjtBQUFBLEVBQ0Y7QUFBQSxFQUVtQixTQUF5QjtBQUNuQyxXQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTVQ7QUFDRjtBQTdCYSxvQkFDWSxTQUF5QjtBQUdHLGdCQUFBO0FBQUEsRUFBbEQsU0FBUyxFQUFFLE1BQU0sU0FBUyxTQUFTLE1BQU07QUFBQSxHQUovQixvQkFJd0MsV0FBQSxZQUFBLENBQUE7QUFJNUMsZ0JBQUE7QUFBQSxFQUROLFNBQVMsRUFBRSxNQUFNLFNBQVMsU0FBUyxNQUFNLFdBQVcsdUJBQXVCO0FBQUEsR0FQakUsb0JBUUosV0FBQSxzQkFBQSxDQUFBO0FBRzZCLGdCQUFBO0FBQUEsRUFBbkMsU0FBUyxFQUFFLFNBQVMsTUFBTTtBQUFBLEdBWGhCLG9CQVd5QixXQUFBLFNBQUEsQ0FBQTtBQVh6QixzQkFBTixnQkFBQTtBQUFBLEVBRE4sY0FBYyxlQUFlO0FBQUEsR0FDakIsbUJBQUE7In0=
120
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29udGFpbmVyL2NvbnRhaW5lci9jb250YWluZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9jb250YWluZXIuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBpdHMgY29udGVudCB3aXRoIHRoZSBkZWZhdWx0IHBhZ2Ugc3BhY2luZy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBhbnl0aGluZyB0byB0aGUgY29udGFpbmVyLlxuICogQHNsb3Qgc3RpY2t5LWJhciAtIFRoZSBzbG90IHVzZWQgYnkgdGhlIHNiYi1zdGlja3ktYmFyIGNvbXBvbmVudC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1jb250YWluZXInKVxuZXhwb3J0IGNsYXNzIFNiYkNvbnRhaW5lckVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbnRhaW5lciBpcyBleHBhbmRlZC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgZXhwYW5kZWQgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgYmFja2dyb3VuZCBjb2xvciBpcyBzaG93biBvbiBmdWxsIGNvbnRhaW5lciB3aWR0aCBvbiBsYXJnZSBzY3JlZW5zLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlLCBhdHRyaWJ1dGU6ICdiYWNrZ3JvdW5kLWV4cGFuZGVkJyB9KVxuICBwdWJsaWMgYmFja2dyb3VuZEV4cGFuZGVkID0gZmFsc2U7XG5cbiAgLyoqIENvbG9yIG9mIHRoZSBjb250YWluZXIsIGxpa2UgdHJhbnNwYXJlbnQsIHdoaXRlIGV0Yy4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgY29sb3I6ICd0cmFuc3BhcmVudCcgfCAnd2hpdGUnIHwgJ21pbGsnID0gJ3doaXRlJztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2V4cGFuZGVkJykpIHtcbiAgICAgIHRoaXMucXVlcnlTZWxlY3Rvcj8uKCdzYmItc3RpY2t5LWJhcicpPy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnLCB0aGlzLmV4cGFuZGVkKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItY29udGFpbmVyXCI+XG4gICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNsb3QgbmFtZT1cInN0aWNreS1iYXJcIj48L3Nsb3Q+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWNvbnRhaW5lcic6IFNiYkNvbnRhaW5lckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCYSxJQUFBLHNCQUFOLGNBQWtDLFdBQVc7QUFBQSxFQUE3QyxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFJdUMsU0FBTyxXQUFXO0FBSTlELFNBQU8scUJBQXFCO0FBR0MsU0FBTyxRQUEwQztBQUFBLEVBQUE7QUFBQSxFQUUzRCxXQUFXLG1CQUErQzs7QUFDM0UsVUFBTSxXQUFXLGlCQUFpQjtBQUU5QixRQUFBLGtCQUFrQixJQUFJLFVBQVUsR0FBRztBQUNyQyx1QkFBSyxrQkFBTCw4QkFBcUIsc0JBQXJCLG1CQUF3QyxnQkFBZ0IsaUJBQWlCLEtBQUs7QUFBQSxJQUNoRjtBQUFBLEVBQ0Y7QUFBQSxFQUVtQixTQUF5QjtBQUNuQyxXQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTVQ7QUFDRjtBQTdCYSxvQkFDWSxTQUF5QjtBQUdHLGdCQUFBO0FBQUEsRUFBbEQsU0FBUyxFQUFFLE1BQU0sU0FBUyxTQUFTLE1BQU07QUFBQSxHQUovQixvQkFJd0MsV0FBQSxZQUFBLENBQUE7QUFJNUMsZ0JBQUE7QUFBQSxFQUROLFNBQVMsRUFBRSxNQUFNLFNBQVMsU0FBUyxNQUFNLFdBQVcsdUJBQXVCO0FBQUEsR0FQakUsb0JBUUosV0FBQSxzQkFBQSxDQUFBO0FBRzZCLGdCQUFBO0FBQUEsRUFBbkMsU0FBUyxFQUFFLFNBQVMsTUFBTTtBQUFBLEdBWGhCLG9CQVd5QixXQUFBLFNBQUEsQ0FBQTtBQVh6QixzQkFBTixnQkFBQTtBQUFBLEVBRE4sY0FBYyxlQUFlO0FBQUEsR0FDakIsbUJBQUE7In0=
@@ -16,6 +16,12 @@ const style = css`/**
16
16
  * }
17
17
  */
18
18
  /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
19
+ /*
20
+ * SBB table mixin
21
+ * Notes:
22
+ * We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
23
+ * Therefore, we have to build the grid avoiding double borders.
24
+ */
19
25
  *,
20
26
  ::before,
21
27
  ::after {
@@ -217,4 +223,4 @@ SbbStickyBarElement = __decorateClass([
217
223
  export {
218
224
  SbbStickyBarElement
219
225
  };
220
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LWJhci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvbnRhaW5lci9zdGlja3ktYmFyL3N0aWNreS1iYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBBZ25vc3RpY0ludGVyc2VjdGlvbk9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zdGlja3ktYmFyLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogQSBjb250YWluZXIgdGhhdCBzdGlja3MgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBpZiBzbG90dGVkIGludG8gYHNiYi1jb250YWluZXJgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGNvbnRlbnQgdG8gdGhlIHN0aWNreSBiYXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci1wYWRkaW5nLWJsb2NrPXZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHMpXSAtIEJsb2NrIHBhZGRpbmcgb2YgdGhlIHN0aWNreSBiYXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci1ib3R0b20tb3ZlcmxhcHBpbmctaGVpZ2h0PTBweF0gLSBEZWZpbmUgYW4gYWRkaXRpb25hbCBhcmVhIHdoZXJlXG4gKiB0aGUgc3RpY2t5IGJhciBvdmVybGFwcyB0aGUgZm9sbG93aW5nIGNvbnRlbnQgb24gdGhlIGJvdHRvbS5cbiAqIFRoaXMgYXJlYSBiZWNvbWVzIHZpc2libGUgd2hlbiB0aGUgc3RpY2t5IGJhciB0cmFuc2l0aW9ucyBmcm9tIHN0aWNreSB0byB0aGUgbm9ybWFsIGRvY3VtZW50IGZsb3cuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci16LWluZGV4XSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLXN0aWNreS1iYXInKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgc2xvdDogJ3N0aWNreS1iYXInLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJTdGlja3lCYXJFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBDb2xvciBvZiB0aGUgY29udGFpbmVyLCBsaWtlIHRyYW5zcGFyZW50LCB3aGl0ZSBldGMuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGNvbG9yPzogJ3doaXRlJyB8ICdtaWxrJztcblxuICBwcml2YXRlIF9pbnRlcnNlY3Rvcj86IEhUTUxTcGFuRWxlbWVudDtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT5cbiAgICB0aGlzLl90b2dnbGVTaGFkb3dWaXNpYmlsaXR5KGVudHJpZXNbMF0pLFxuICApO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jbG9zZXN0KCdzYmItY29udGFpbmVyJyk7XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnLCBjb250YWluZXIuZXhwYW5kZWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5faW50ZXJzZWN0b3IpIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5faW50ZXJzZWN0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghdGhpcy5faW50ZXJzZWN0b3IpIHtcbiAgICAgIHRoaXMuX2ludGVyc2VjdG9yID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLXN0aWNreS1iYXJfX2ludGVyc2VjdG9yJykhO1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9pbnRlcnNlY3Rvcik7XG4gICAgfVxuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcyk7XG4gIH1cblxuICBwcml2YXRlIF90b2dnbGVTaGFkb3dWaXNpYmlsaXR5KGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1zdGlja2luZycsXG4gICAgICAhZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnRvcCA+IDAsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGlja3ktYmFyX193cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RpY2t5LWJhclwiPlxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RpY2t5LWJhcl9faW50ZXJzZWN0b3JcIj48L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItc3RpY2t5LWJhcic6IFNiYlN0aWNreUJhckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkJhLElBQUEsc0JBQU4sY0FBa0MsV0FBVztBQUFBLEVBQTdDLGNBQUE7QUFBQSxVQUFBLEdBQUEsU0FBQTtBQU9MLFNBQVEsWUFBWSxJQUFJO0FBQUEsTUFBNkIsQ0FBQyxZQUNwRCxLQUFLLHdCQUF3QixRQUFRLENBQUMsQ0FBQztBQUFBLElBQUE7QUFBQSxFQUN6QztBQUFBLEVBRWdCLG9CQUEwQjtBQUN4QyxVQUFNLGtCQUFrQjtBQUVsQixVQUFBLFlBQVksS0FBSyxRQUFRLGVBQWU7QUFDOUMsUUFBSSxXQUFXO0FBQ1IsV0FBQSxnQkFBZ0IsaUJBQWlCLFVBQVUsUUFBUTtBQUFBLElBQzFEO0FBQ0EsUUFBSSxLQUFLLGNBQWM7QUFDaEIsV0FBQSxVQUFVLFFBQVEsS0FBSyxZQUFZO0FBQUEsSUFDMUM7QUFBQSxFQUNGO0FBQUEsRUFFbUIsYUFBYSxtQkFBK0M7QUFDN0UsVUFBTSxhQUFhLGlCQUFpQjtBQUVoQyxRQUFBLENBQUMsS0FBSyxjQUFjO0FBQ3RCLFdBQUssZUFBZSxLQUFLLFdBQVksY0FBYyw4QkFBOEI7QUFDNUUsV0FBQSxVQUFVLFFBQVEsS0FBSyxZQUFZO0FBQUEsSUFDMUM7QUFDSyxTQUFBLFVBQVUsUUFBUSxJQUFJO0FBQUEsRUFDN0I7QUFBQSxFQUVRLHdCQUF3QixPQUF3QztBQUNqRSxTQUFBO0FBQUEsTUFDSDtBQUFBLE1BQ0EsQ0FBQyxNQUFNLGtCQUFrQixNQUFNLG1CQUFtQixNQUFNO0FBQUEsSUFBQTtBQUFBLEVBRTVEO0FBQUEsRUFFZ0IsdUJBQTZCO0FBQzNDLFVBQU0scUJBQXFCO0FBQzNCLFNBQUssVUFBVTtFQUNqQjtBQUFBLEVBRW1CLFNBQXlCO0FBQ25DLFdBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUVQ7QUFDRjtBQXZEYSxvQkFDWSxTQUF5QjtBQUdaLGdCQUFBO0FBQUEsRUFBbkMsU0FBUyxFQUFFLFNBQVMsTUFBTTtBQUFBLEdBSmhCLG9CQUl5QixXQUFBLFNBQUEsQ0FBQTtBQUp6QixzQkFBTixnQkFBQTtBQUFBLEVBSk4sY0FBYyxnQkFBZ0I7QUFBQSxFQUM5QixlQUFlO0FBQUEsSUFDZCxNQUFNO0FBQUEsRUFBQSxDQUNQO0FBQUEsR0FDWSxtQkFBQTsifQ==
226
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LWJhci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvbnRhaW5lci9zdGlja3ktYmFyL3N0aWNreS1iYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBBZ25vc3RpY0ludGVyc2VjdGlvbk9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zdGlja3ktYmFyLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogQSBjb250YWluZXIgdGhhdCBzdGlja3MgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBpZiBzbG90dGVkIGludG8gYHNiYi1jb250YWluZXJgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGNvbnRlbnQgdG8gdGhlIHN0aWNreSBiYXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci1wYWRkaW5nLWJsb2NrPXZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHMpXSAtIEJsb2NrIHBhZGRpbmcgb2YgdGhlIHN0aWNreSBiYXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci1ib3R0b20tb3ZlcmxhcHBpbmctaGVpZ2h0PTBweF0gLSBEZWZpbmUgYW4gYWRkaXRpb25hbCBhcmVhIHdoZXJlXG4gKiB0aGUgc3RpY2t5IGJhciBvdmVybGFwcyB0aGUgZm9sbG93aW5nIGNvbnRlbnQgb24gdGhlIGJvdHRvbS5cbiAqIFRoaXMgYXJlYSBiZWNvbWVzIHZpc2libGUgd2hlbiB0aGUgc3RpY2t5IGJhciB0cmFuc2l0aW9ucyBmcm9tIHN0aWNreSB0byB0aGUgbm9ybWFsIGRvY3VtZW50IGZsb3cuXG4gKiBAY3NzcHJvcCBbLS1zYmItc3RpY2t5LWJhci16LWluZGV4XSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLXN0aWNreS1iYXInKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgc2xvdDogJ3N0aWNreS1iYXInLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJTdGlja3lCYXJFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBDb2xvciBvZiB0aGUgY29udGFpbmVyLCBsaWtlIHRyYW5zcGFyZW50LCB3aGl0ZSBldGMuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGNvbG9yPzogJ3doaXRlJyB8ICdtaWxrJztcblxuICBwcml2YXRlIF9pbnRlcnNlY3Rvcj86IEhUTUxTcGFuRWxlbWVudDtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT5cbiAgICB0aGlzLl90b2dnbGVTaGFkb3dWaXNpYmlsaXR5KGVudHJpZXNbMF0pLFxuICApO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jbG9zZXN0KCdzYmItY29udGFpbmVyJyk7XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnLCBjb250YWluZXIuZXhwYW5kZWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5faW50ZXJzZWN0b3IpIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5faW50ZXJzZWN0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghdGhpcy5faW50ZXJzZWN0b3IpIHtcbiAgICAgIHRoaXMuX2ludGVyc2VjdG9yID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLXN0aWNreS1iYXJfX2ludGVyc2VjdG9yJykhO1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9pbnRlcnNlY3Rvcik7XG4gICAgfVxuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcyk7XG4gIH1cblxuICBwcml2YXRlIF90b2dnbGVTaGFkb3dWaXNpYmlsaXR5KGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1zdGlja2luZycsXG4gICAgICAhZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnRvcCA+IDAsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGlja3ktYmFyX193cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RpY2t5LWJhclwiPlxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RpY2t5LWJhcl9faW50ZXJzZWN0b3JcIj48L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItc3RpY2t5LWJhcic6IFNiYlN0aWNreUJhckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkJhLElBQUEsc0JBQU4sY0FBa0MsV0FBVztBQUFBLEVBQTdDLGNBQUE7QUFBQSxVQUFBLEdBQUEsU0FBQTtBQU9MLFNBQVEsWUFBWSxJQUFJO0FBQUEsTUFBNkIsQ0FBQyxZQUNwRCxLQUFLLHdCQUF3QixRQUFRLENBQUMsQ0FBQztBQUFBLElBQUE7QUFBQSxFQUN6QztBQUFBLEVBRWdCLG9CQUEwQjtBQUN4QyxVQUFNLGtCQUFrQjtBQUVsQixVQUFBLFlBQVksS0FBSyxRQUFRLGVBQWU7QUFDOUMsUUFBSSxXQUFXO0FBQ1IsV0FBQSxnQkFBZ0IsaUJBQWlCLFVBQVUsUUFBUTtBQUFBLElBQzFEO0FBQ0EsUUFBSSxLQUFLLGNBQWM7QUFDaEIsV0FBQSxVQUFVLFFBQVEsS0FBSyxZQUFZO0FBQUEsSUFDMUM7QUFBQSxFQUNGO0FBQUEsRUFFbUIsYUFBYSxtQkFBK0M7QUFDN0UsVUFBTSxhQUFhLGlCQUFpQjtBQUVoQyxRQUFBLENBQUMsS0FBSyxjQUFjO0FBQ3RCLFdBQUssZUFBZSxLQUFLLFdBQVksY0FBYyw4QkFBOEI7QUFDNUUsV0FBQSxVQUFVLFFBQVEsS0FBSyxZQUFZO0FBQUEsSUFDMUM7QUFDSyxTQUFBLFVBQVUsUUFBUSxJQUFJO0FBQUEsRUFDN0I7QUFBQSxFQUVRLHdCQUF3QixPQUF3QztBQUNqRSxTQUFBO0FBQUEsTUFDSDtBQUFBLE1BQ0EsQ0FBQyxNQUFNLGtCQUFrQixNQUFNLG1CQUFtQixNQUFNO0FBQUEsSUFBQTtBQUFBLEVBRTVEO0FBQUEsRUFFZ0IsdUJBQTZCO0FBQzNDLFVBQU0scUJBQXFCO0FBQzNCLFNBQUssVUFBVTtFQUNqQjtBQUFBLEVBRW1CLFNBQXlCO0FBQ25DLFdBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUVQ7QUFDRjtBQXZEYSxvQkFDWSxTQUF5QjtBQUdaLGdCQUFBO0FBQUEsRUFBbkMsU0FBUyxFQUFFLFNBQVMsTUFBTTtBQUFBLEdBSmhCLG9CQUl5QixXQUFBLFNBQUEsQ0FBQTtBQUp6QixzQkFBTixnQkFBQTtBQUFBLEVBSk4sY0FBYyxnQkFBZ0I7QUFBQSxFQUM5QixlQUFlO0FBQUEsSUFDZCxNQUFNO0FBQUEsRUFBQSxDQUNQO0FBQUEsR0FDWSxtQkFBQTsifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"host-attributes.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/decorators/host-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,KAAK,CAAC;AAErD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAexD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,eACZ,OAAO,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,cAAc,oBAAoB,eAAe,CAAC,SAoBxF,CAAC"}
1
+ {"version":3,"file":"host-attributes.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/decorators/host-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,KAAK,CAAC;AAErD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAexD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,eACZ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,cAAc,mBAAmB,CAAC,eAAe,CAAC,SAoBxF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/eventing/throttle.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,uBAAwB,GAAG,EAAE,KAAK,GAAG,QAClD,CAAC,SACA,MAAM,KACZ,CAAC,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC,KAAK,QAAQ,WAAW,CAAC,CAAC,CAAC,CAerD,CAAC"}
1
+ {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/eventing/throttle.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,QAClD,CAAC,SACA,MAAM,KACZ,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAerD,CAAC"}
@@ -24,9 +24,7 @@ export declare const i18nTravelhints: Record<string, string>;
24
24
  export declare const i18nRealTimeInfo: Record<string, string>;
25
25
  export declare const i18nTransferProcedures: Record<string, string>;
26
26
  export declare const i18nNew: Record<string, string>;
27
- export declare const i18nFromPlatform: Record<string, Record<string, string>>;
28
- export declare const i18nFromStand: Record<string, Record<string, string>>;
29
- export declare const i18nFromPier: Record<string, Record<string, string>>;
27
+ export declare const i18nFromPlatform: Record<string, string>;
30
28
  export declare const i18nSupersaver: Record<string, string>;
31
29
  export declare const i18nOccupancy: Record<SbbOccupancy, Record<SbbLanguage, string>>;
32
30
  export declare const i18nMeansOfTransport: Record<string, Record<string, string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/i18n/i18n.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/i18n/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKhD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK9C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK7C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKlD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAa5D,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK5C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK7C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKlD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKvD,CAAC;AAEF,eAAO,MAAM,0BAA0B,iBAAkB,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAetF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKtD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBrE,CAAC;AAEF,eAAO,MAAM,qCAAqC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKxE,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKhD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA6BrF,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA6BnF,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiBlF,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKrD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKlD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKzD,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKjD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAyB3E,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmEvE,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK/C,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK7D,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK7D,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK/D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKjD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKxD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK7C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKlD,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKtD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK7C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKlD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK5C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKhD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKpD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK9C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKlD,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKzD,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,cAAe,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAKzE,CAAC;AAEH,eAAO,MAAM,qBAAqB,cAAe,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAK7E,CAAC;AAEH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK/C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBAAiB,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAK3E,CAAC;AAEH,eAAO,MAAM,qBAAqB,gBAAiB,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAK/E,CAAC;AAEH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKpD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKrD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF,eAAO,MAAM,uBAAuB,eAAgB,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAKhF,CAAC;AAEH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK/C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKhD,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK9D,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKpE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKtD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKjD,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK9D,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKhE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK7D,CAAC;AAEF,eAAO,MAAM,iCAAiC,cAAe,MAAM,EAAE,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAe5F,CAAC"}