@sbb-esta/lyne-elements-experimental-dev 4.13.1-dev.1781017616 → 5.0.0-dev.1781076459

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 (263) hide show
  1. package/_index.scss +2 -0
  2. package/autocomplete-grid/_autocomplete-grid.global.scss +14 -0
  3. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +16 -19
  4. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +42 -71
  5. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +1 -1
  6. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +1 -1
  7. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +1 -1
  8. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +1 -1
  9. package/{autocomplete-grid-cell.component-D-Kk9HwQ.js → autocomplete-grid-cell.component-79IjA__I.js} +6 -7
  10. package/autocomplete-grid-option.component-DUFBhQwI.js +35 -0
  11. package/{autocomplete-grid-row.component-57jjeZWF.js → autocomplete-grid-row.component-B3U15Rwa.js} +7 -8
  12. package/autocomplete-grid.js +3 -3
  13. package/autocomplete-grid.pure.js +3 -3
  14. package/core/datetime/date-helper.js +1 -1
  15. package/core/styles/_theme.scss +19 -0
  16. package/core/styles/lean-off-brand-theme.scss +3 -0
  17. package/core/styles/lean-safety-theme.scss +3 -0
  18. package/core/timetable/access-leg-helper.js +27 -27
  19. package/core.js +5 -0
  20. package/custom-elements.json +5120 -5186
  21. package/{date-helper-NgYaHPR7.js → date-helper-DNzMLcyb.js} +1 -1
  22. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts +1 -1
  23. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts.map +1 -1
  24. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +7 -10
  25. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts +2 -2
  26. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts.map +1 -1
  27. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +55 -89
  28. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.d.ts +1 -1
  29. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.d.ts.map +1 -1
  30. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +1 -1
  31. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.d.ts +1 -1
  32. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.d.ts.map +1 -1
  33. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +2 -2
  34. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts +1 -2
  35. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts.map +1 -1
  36. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +1 -1
  37. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.d.ts +1 -1
  38. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.d.ts.map +1 -1
  39. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +1 -1
  40. package/development/autocomplete-grid-cell.component-BbdELDro.js +33 -0
  41. package/development/autocomplete-grid-option.component-C7WuqRit.js +57 -0
  42. package/development/{autocomplete-grid-row.component-CvF3ZWDZ.js → autocomplete-grid-row.component-DoXbOsQM.js} +3 -4
  43. package/development/autocomplete-grid.js +4 -4
  44. package/development/autocomplete-grid.pure.js +3 -3
  45. package/development/core/datetime/date-helper.js +1 -1
  46. package/development/core/timetable/access-leg-helper.d.ts.map +1 -1
  47. package/development/core/timetable/access-leg-helper.js +3 -3
  48. package/development/core.d.ts +6 -0
  49. package/development/core.d.ts.map +1 -0
  50. package/development/core.js +5 -0
  51. package/development/{date-helper-QhWjANc3.js → date-helper-BcTDWVeP.js} +2 -2
  52. package/development/journey-summary/journey-summary.component.d.ts +4 -4
  53. package/development/journey-summary/journey-summary.component.d.ts.map +1 -1
  54. package/development/journey-summary/journey-summary.component.js +1 -1
  55. package/development/journey-summary.component-BsC7wBIn.js +341 -0
  56. package/development/journey-summary.js +1 -1
  57. package/development/journey-summary.pure.js +1 -1
  58. package/development/pearl-chain/pearl-chain.component.d.ts +2 -2
  59. package/development/pearl-chain/pearl-chain.component.d.ts.map +1 -1
  60. package/development/pearl-chain/pearl-chain.component.js +1 -1
  61. package/development/pearl-chain-time/pearl-chain-time.component.d.ts +3 -2
  62. package/development/pearl-chain-time/pearl-chain-time.component.d.ts.map +1 -1
  63. package/development/pearl-chain-time/pearl-chain-time.component.js +1 -1
  64. package/development/{pearl-chain-time.component-BMHLITah.js → pearl-chain-time.component-C-CuC1ke.js} +11 -13
  65. package/development/pearl-chain-time.js +1 -1
  66. package/development/pearl-chain-time.pure.js +1 -1
  67. package/development/pearl-chain-vertical/pearl-chain-vertical.component.d.ts +1 -1
  68. package/development/pearl-chain-vertical/pearl-chain-vertical.component.d.ts.map +1 -1
  69. package/development/pearl-chain-vertical/pearl-chain-vertical.component.js +1 -1
  70. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.d.ts +1 -1
  71. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.d.ts.map +1 -1
  72. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +1 -1
  73. package/development/{pearl-chain-vertical-item.component-JYDWs8ta.js → pearl-chain-vertical-item.component-CLu9QrqJ.js} +4 -6
  74. package/development/pearl-chain-vertical-item.js +1 -1
  75. package/development/pearl-chain-vertical-item.pure.js +1 -1
  76. package/development/pearl-chain-vertical.component-DbPz5k_R.js +30 -0
  77. package/development/pearl-chain-vertical.js +1 -1
  78. package/development/pearl-chain-vertical.pure.js +1 -1
  79. package/development/{pearl-chain.component-DUAGFkcu.js → pearl-chain.component-10OsJZIX.js} +7 -11
  80. package/development/pearl-chain.js +1 -1
  81. package/development/pearl-chain.pure.js +1 -1
  82. package/development/seat-reservation/common/translations/i18n.d.ts.map +1 -1
  83. package/development/seat-reservation/common/translations/i18n.js +1 -1
  84. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts +12 -2
  85. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts.map +1 -1
  86. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.js +35 -20
  87. package/development/seat-reservation/seat-reservation/seat-reservation.component.d.ts +2 -0
  88. package/development/seat-reservation/seat-reservation/seat-reservation.component.d.ts.map +1 -1
  89. package/development/seat-reservation/seat-reservation/seat-reservation.component.js +1 -1
  90. package/development/seat-reservation/seat-reservation-area/seat-reservation-area.component.d.ts +1 -1
  91. package/development/seat-reservation/seat-reservation-area/seat-reservation-area.component.d.ts.map +1 -1
  92. package/development/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +1 -1
  93. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.d.ts +2 -1
  94. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.d.ts.map +1 -1
  95. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +1 -1
  96. package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts +8 -3
  97. package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts.map +1 -1
  98. package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +2 -2
  99. package/development/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.d.ts +2 -1
  100. package/development/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.d.ts.map +1 -1
  101. package/development/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +1 -1
  102. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.d.ts +9 -3
  103. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.d.ts.map +1 -1
  104. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +2 -2
  105. package/development/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.d.ts +1 -1
  106. package/development/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.d.ts.map +1 -1
  107. package/development/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +1 -1
  108. package/development/{seat-reservation-area.component-dG1GXJQP.js → seat-reservation-area.component-DPhQJFid.js} +4 -6
  109. package/development/{seat-reservation-graphic.component-BmhZpVL0.js → seat-reservation-graphic.component-0LYsmerm.js} +9 -9
  110. package/development/seat-reservation-navigation-coach.component-B97jKD7Y.js +438 -0
  111. package/development/{seat-reservation-navigation-services.component-B2uWa_VN.js → seat-reservation-navigation-services.component-Cx0Is97w.js} +11 -11
  112. package/development/{seat-reservation-place-control.component-CdL6yPUZ.js → seat-reservation-place-control.component-DaL1g8WH.js} +24 -17
  113. package/development/{seat-reservation-scoped.component-CJCkuKGz.js → seat-reservation-scoped.component-BHbORVsR.js} +3 -4
  114. package/development/seat-reservation.component-DI9pSlzt.js +473 -0
  115. package/development/seat-reservation.js +10 -11
  116. package/development/seat-reservation.pure.d.ts +0 -1
  117. package/development/seat-reservation.pure.d.ts.map +1 -1
  118. package/development/seat-reservation.pure.js +9 -10
  119. package/development/timetable-duration/timetable-duration.component.d.ts +1 -1
  120. package/development/timetable-duration/timetable-duration.component.d.ts.map +1 -1
  121. package/development/timetable-duration/timetable-duration.component.js +1 -1
  122. package/development/timetable-duration.component-Chk5D4Is.js +96 -0
  123. package/development/timetable-duration.js +1 -1
  124. package/development/timetable-duration.pure.js +1 -1
  125. package/development/timetable-row/timetable-row.component.d.ts +3 -2
  126. package/development/timetable-row/timetable-row.component.d.ts.map +1 -1
  127. package/development/timetable-row/timetable-row.component.js +1 -1
  128. package/development/timetable-row.component-nzrQzxL6.js +736 -0
  129. package/development/timetable-row.js +1 -1
  130. package/development/timetable-row.pure.js +1 -1
  131. package/journey-summary/journey-summary.component.js +1 -1
  132. package/{journey-summary.component-DyTUTCOU.js → journey-summary.component-DNoO3OCf.js} +42 -41
  133. package/journey-summary.js +1 -1
  134. package/journey-summary.pure.js +1 -1
  135. package/lean-safety-theme.css +13 -0
  136. package/lean-theme.css +13 -0
  137. package/package.json +22 -85
  138. package/pearl-chain/pearl-chain.component.js +1 -1
  139. package/pearl-chain-time/pearl-chain-time.component.js +1 -1
  140. package/{pearl-chain-time.component-DXe2o6S1.js → pearl-chain-time.component-BuvA6IE1.js} +42 -44
  141. package/pearl-chain-time.js +1 -1
  142. package/pearl-chain-time.pure.js +1 -1
  143. package/pearl-chain-vertical/pearl-chain-vertical.component.js +1 -1
  144. package/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +1 -1
  145. package/{pearl-chain-vertical-item.component-Bby13csG.js → pearl-chain-vertical-item.component-QZ4s8Jbv.js} +33 -35
  146. package/pearl-chain-vertical-item.js +1 -1
  147. package/pearl-chain-vertical-item.pure.js +1 -1
  148. package/pearl-chain-vertical.component-Dc3vaHsQ.js +20 -0
  149. package/pearl-chain-vertical.js +1 -1
  150. package/pearl-chain-vertical.pure.js +1 -1
  151. package/{pearl-chain.component-CPaCcW_1.js → pearl-chain.component-DtGXXkY6.js} +29 -33
  152. package/pearl-chain.js +1 -1
  153. package/pearl-chain.pure.js +1 -1
  154. package/seat-reservation/seat-reservation/seat-reservation-base-element.js +87 -75
  155. package/seat-reservation/seat-reservation/seat-reservation.component.js +1 -1
  156. package/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +1 -1
  157. package/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +1 -1
  158. package/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +2 -2
  159. package/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +1 -1
  160. package/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +2 -2
  161. package/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +1 -1
  162. package/{seat-reservation-area.component-DZsXvaMQ.js → seat-reservation-area.component-G9lHb7S8.js} +20 -22
  163. package/{seat-reservation-graphic.component-BnJuHVZQ.js → seat-reservation-graphic.component-BXFcQDxY.js} +26 -26
  164. package/seat-reservation-navigation-coach.component-BXy8EkJe.js +338 -0
  165. package/{seat-reservation-navigation-services.component-6ECATtWB.js → seat-reservation-navigation-services.component-49XmV9rv.js} +30 -33
  166. package/{seat-reservation-place-control.component-kx07J_YK.js → seat-reservation-place-control.component-DToIW328.js} +64 -62
  167. package/{seat-reservation-scoped.component-L1wMt65t.js → seat-reservation-scoped.component-D8dAmrP7.js} +6 -7
  168. package/seat-reservation.component--0XnrCkk.js +372 -0
  169. package/seat-reservation.js +10 -11
  170. package/seat-reservation.pure.js +9 -10
  171. package/timetable-duration/timetable-duration.component.js +1 -1
  172. package/timetable-duration.component-iMCvh1zr.js +61 -0
  173. package/timetable-duration.js +1 -1
  174. package/timetable-duration.pure.js +1 -1
  175. package/timetable-row/timetable-row.component.js +1 -1
  176. package/timetable-row.component-mNKmhRmP.js +566 -0
  177. package/timetable-row.js +1 -1
  178. package/timetable-row.pure.js +1 -1
  179. package/autocomplete-grid/autocomplete-grid-button.js +0 -4
  180. package/autocomplete-grid/autocomplete-grid-cell.js +0 -4
  181. package/autocomplete-grid/autocomplete-grid-optgroup.js +0 -4
  182. package/autocomplete-grid/autocomplete-grid-option.js +0 -4
  183. package/autocomplete-grid/autocomplete-grid-row.js +0 -4
  184. package/autocomplete-grid/autocomplete-grid.js +0 -4
  185. package/autocomplete-grid-option.component-qBUSf0mD.js +0 -37
  186. package/core/datetime.js +0 -2
  187. package/core/styles/core.scss +0 -13
  188. package/core/styles/theme.scss +0 -5
  189. package/core/timetable.js +0 -4
  190. package/development/autocomplete-grid/autocomplete-grid-button.d.ts +0 -2
  191. package/development/autocomplete-grid/autocomplete-grid-button.d.ts.map +0 -1
  192. package/development/autocomplete-grid/autocomplete-grid-button.js +0 -10
  193. package/development/autocomplete-grid/autocomplete-grid-cell.d.ts +0 -2
  194. package/development/autocomplete-grid/autocomplete-grid-cell.d.ts.map +0 -1
  195. package/development/autocomplete-grid/autocomplete-grid-cell.js +0 -10
  196. package/development/autocomplete-grid/autocomplete-grid-optgroup.d.ts +0 -2
  197. package/development/autocomplete-grid/autocomplete-grid-optgroup.d.ts.map +0 -1
  198. package/development/autocomplete-grid/autocomplete-grid-optgroup.js +0 -10
  199. package/development/autocomplete-grid/autocomplete-grid-option.d.ts +0 -2
  200. package/development/autocomplete-grid/autocomplete-grid-option.d.ts.map +0 -1
  201. package/development/autocomplete-grid/autocomplete-grid-option.js +0 -10
  202. package/development/autocomplete-grid/autocomplete-grid-row.d.ts +0 -2
  203. package/development/autocomplete-grid/autocomplete-grid-row.d.ts.map +0 -1
  204. package/development/autocomplete-grid/autocomplete-grid-row.js +0 -10
  205. package/development/autocomplete-grid/autocomplete-grid.d.ts +0 -2
  206. package/development/autocomplete-grid/autocomplete-grid.d.ts.map +0 -1
  207. package/development/autocomplete-grid/autocomplete-grid.js +0 -10
  208. package/development/autocomplete-grid-cell.component-CTC6s1q3.js +0 -34
  209. package/development/autocomplete-grid-option.component-DqkLWHcg.js +0 -61
  210. package/development/core/datetime.d.ts +0 -3
  211. package/development/core/datetime.d.ts.map +0 -1
  212. package/development/core/datetime.js +0 -2
  213. package/development/core/timetable.d.ts +0 -5
  214. package/development/core/timetable.d.ts.map +0 -1
  215. package/development/core/timetable.js +0 -4
  216. package/development/journey-summary.component-BTaPGCGZ.js +0 -340
  217. package/development/pearl-chain-vertical.component-YYXS_74c.js +0 -31
  218. package/development/seat-reservation/common.d.ts +0 -6
  219. package/development/seat-reservation/common.d.ts.map +0 -1
  220. package/development/seat-reservation/common.js +0 -12
  221. package/development/seat-reservation/seat-reservation-area.d.ts +0 -2
  222. package/development/seat-reservation/seat-reservation-area.d.ts.map +0 -1
  223. package/development/seat-reservation/seat-reservation-area.js +0 -10
  224. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-assets.d.ts +0 -9
  225. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-assets.d.ts.map +0 -1
  226. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +0 -306
  227. package/development/seat-reservation/seat-reservation-graphic.d.ts +0 -2
  228. package/development/seat-reservation/seat-reservation-graphic.d.ts.map +0 -1
  229. package/development/seat-reservation/seat-reservation-graphic.js +0 -10
  230. package/development/seat-reservation/seat-reservation-navigation-coach.d.ts +0 -2
  231. package/development/seat-reservation/seat-reservation-navigation-coach.d.ts.map +0 -1
  232. package/development/seat-reservation/seat-reservation-navigation-coach.js +0 -10
  233. package/development/seat-reservation/seat-reservation-navigation-services.d.ts +0 -2
  234. package/development/seat-reservation/seat-reservation-navigation-services.d.ts.map +0 -1
  235. package/development/seat-reservation/seat-reservation-navigation-services.js +0 -10
  236. package/development/seat-reservation/seat-reservation-place-control.d.ts +0 -2
  237. package/development/seat-reservation/seat-reservation-place-control.d.ts.map +0 -1
  238. package/development/seat-reservation/seat-reservation-place-control.js +0 -10
  239. package/development/seat-reservation/seat-reservation-scoped.d.ts +0 -2
  240. package/development/seat-reservation/seat-reservation-scoped.d.ts.map +0 -1
  241. package/development/seat-reservation/seat-reservation-scoped.js +0 -10
  242. package/development/seat-reservation/seat-reservation.d.ts +0 -3
  243. package/development/seat-reservation/seat-reservation.d.ts.map +0 -1
  244. package/development/seat-reservation/seat-reservation.js +0 -11
  245. package/development/seat-reservation-navigation-coach.component-Be9CBw62.js +0 -428
  246. package/development/seat-reservation.component-B4BxXyLr.js +0 -464
  247. package/development/timetable-duration.component-CXF0oJbO.js +0 -100
  248. package/development/timetable-row.component-BCufuA05.js +0 -729
  249. package/pearl-chain-vertical.component-0EgQ4knk.js +0 -21
  250. package/seat-reservation/common.js +0 -9
  251. package/seat-reservation/seat-reservation-area.js +0 -4
  252. package/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +0 -291
  253. package/seat-reservation/seat-reservation-graphic.js +0 -4
  254. package/seat-reservation/seat-reservation-navigation-coach.js +0 -4
  255. package/seat-reservation/seat-reservation-navigation-services.js +0 -4
  256. package/seat-reservation/seat-reservation-place-control.js +0 -4
  257. package/seat-reservation/seat-reservation-scoped.js +0 -4
  258. package/seat-reservation/seat-reservation.js +0 -5
  259. package/seat-reservation-navigation-coach.component-DgdpqMzG.js +0 -333
  260. package/seat-reservation.component-B_T6eTf6.js +0 -360
  261. package/timetable-duration.component-Bqo5N_De.js +0 -65
  262. package/timetable-row.component-a5CWXLAQ.js +0 -559
  263. /package/{core.css → lean-off-brand-theme.css} +0 -0
@@ -1,5 +1,4 @@
1
- import { SbbElement } from "@sbb-esta/lyne-elements/core/base-elements.js";
2
- import { boxSizingStyles } from "@sbb-esta/lyne-elements/core/styles.js";
1
+ import { SbbElement } from "@sbb-esta/lyne-elements/core.js";
3
2
  import { html, unsafeCSS } from "lit";
4
3
  //#region src/elements-experimental/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.scss?inline
5
4
  var autocomplete_grid_row_default = ":host {\n display: block;\n}\n\n:host(:is(:state(negative),[state--negative])) {\n --sbb-autocomplete-grid-row-color: var(--sbb-color-3-negative);\n --sbb-autocomplete-grid-row-background-color-hover: var(--sbb-background-color-3-negative);\n --sbb-autocomplete-grid-row-disabled-border-color: var(--sbb-border-color-5);\n --sbb-autocomplete-grid-row-disabled-background-color: var(--sbb-background-color-3-negative);\n --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);\n}\n\n@media (any-hover: hover) {\n :host(:hover:not(:is(:state(disabled),[state--disabled]))) {\n --sbb-autocomplete-grid-row-background-color: var(\n --sbb-autocomplete-grid-row-background-color-hover\n );\n }\n}\n\n:host(:is(:state(disabled),[state--disabled])) {\n --sbb-autocomplete-grid-row-cursor: var(--sbb-cursor-default);\n}\n@media (forced-colors: active) {\n :host(:is(:state(disabled),[state--disabled])) {\n --sbb-autocomplete-grid-row-color: GrayText;\n }\n}\n\n::slotted(sbb-autocomplete-grid-option) {\n flex: 1 1 auto;\n margin-right: calc(-1 * var(--sbb-spacing-fixed-2x));\n overflow-x: hidden;\n}\n\n.sbb-autocomplete-grid-row {\n display: flex;\n align-items: center;\n padding-inline-end: var(--sbb-autocomplete-grid-row-padding-inline-end);\n justify-content: var(--sbb-autocomplete-grid-row-justify-content);\n gap: var(--sbb-spacing-fixed-6x);\n color: var(--sbb-autocomplete-grid-row-color);\n background-color: var(--sbb-autocomplete-grid-row-background-color, inherit);\n cursor: var(--sbb-autocomplete-grid-row-cursor);\n -webkit-tap-highlight-color: transparent;\n -webkit-text-fill-color: var(--sbb-autocomplete-grid-row-color);\n}\n:host(:is(:state(disabled),[state--disabled])) .sbb-autocomplete-grid-row {\n position: relative;\n z-index: 0;\n}\n:host(:is(:state(disabled),[state--disabled])) .sbb-autocomplete-grid-row::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: 0.375rem;\n border: var(--sbb-border-width-1x) dashed var(--sbb-autocomplete-grid-row-disabled-border-color);\n border-radius: var(--sbb-border-radius-2x);\n background-color: var(--sbb-autocomplete-grid-row-disabled-background-color);\n z-index: -1;\n}\n@media (forced-colors: active) {\n :host(:is(:state(disabled),[state--disabled])) .sbb-autocomplete-grid-row::before {\n border-color: GrayText;\n }\n}";
@@ -19,7 +18,7 @@ var SbbAutocompleteGridRowElement = class extends SbbElement {
19
18
  this.role = "row";
20
19
  }
21
20
  static {
22
- this.styles = [boxSizingStyles, unsafeCSS(autocomplete_grid_row_default)];
21
+ this.styles = [unsafeCSS(autocomplete_grid_row_default)];
23
22
  }
24
23
  connectedCallback() {
25
24
  super.connectedCallback();
@@ -36,4 +35,4 @@ var SbbAutocompleteGridRowElement = class extends SbbElement {
36
35
  //#endregion
37
36
  export { SbbAutocompleteGridRowElement as t };
38
37
 
39
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWdyaWQtcm93LmNvbXBvbmVudC1DdkYzWldEWi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL2F1dG9jb21wbGV0ZS1ncmlkL2F1dG9jb21wbGV0ZS1ncmlkLXJvdy9hdXRvY29tcGxldGUtZ3JpZC1yb3cuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL2F1dG9jb21wbGV0ZS1ncmlkL2F1dG9jb21wbGV0ZS1ncmlkLXJvdy9hdXRvY29tcGxldGUtZ3JpZC1yb3cuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbjpob3N0KDpzdGF0ZShuZWdhdGl2ZSkpIHtcbiAgLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMy1uZWdhdGl2ZSk7XG4gIC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zLW5lZ2F0aXZlKTtcbiAgLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWRpc2FibGVkLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJvcmRlci1jb2xvci01KTtcbiAgLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMtbmVnYXRpdmUpO1xuICAtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKTtcbn1cblxuOmhvc3QoOmhvdmVyOm5vdCg6c3RhdGUoZGlzYWJsZWQpKSkge1xuICBAaW5jbHVkZSBzYmIuaG92ZXItbXEoJGhvdmVyOiB0cnVlKSB7XG4gICAgLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWJhY2tncm91bmQtY29sb3I6IHZhcihcbiAgICAgIC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyXG4gICAgKTtcbiAgfVxufVxuXG46aG9zdCg6c3RhdGUoZGlzYWJsZWQpKSB7XG4gIC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1jdXJzb3I6IHZhcigtLXNiYi1jdXJzb3ItZGVmYXVsdCk7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1jb2xvcjogR3JheVRleHQ7XG4gIH1cbn1cblxuOjpzbG90dGVkKHNiYi1hdXRvY29tcGxldGUtZ3JpZC1vcHRpb24pIHtcbiAgZmxleDogMSAxIGF1dG87XG4gIG1hcmdpbi1yaWdodDogY2FsYygtMSAqIHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTJ4KSk7XG5cbiAgLy8gVXNlZCB0byBlbmFibGUgZWxsaXBzaXNcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xufVxuXG4uc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmctaW5saW5lLWVuZDogdmFyKC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1wYWRkaW5nLWlubGluZS1lbmQpO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHZhcigtLXNiYi1hdXRvY29tcGxldGUtZ3JpZC1yb3ctanVzdGlmeS1jb250ZW50KTtcbiAgZ2FwOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC02eCk7XG4gIGNvbG9yOiB2YXIoLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1iYWNrZ3JvdW5kLWNvbG9yLCBpbmhlcml0KTtcbiAgY3Vyc29yOiB2YXIoLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWN1cnNvcik7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB2YXIoLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWNvbG9yKTtcblxuICAvLyBBZGQgaW5uZXIgYm9yZGVyIGFuZCBiYWNrZ3JvdW5kIGZvciBkaXNhYmxlZCBvcHRpb24gd2hlbiBpdCdzIG5vdCBtdWx0aXBsZVxuICA6aG9zdCg6c3RhdGUoZGlzYWJsZWQpKSAmIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgaW5zZXQ6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCg2KX07XG4gICAgICBib3JkZXI6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMXgpIGRhc2hlZFxuICAgICAgICB2YXIoLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWRpc2FibGVkLWJvcmRlci1jb2xvcik7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItYm9yZGVyLXJhZGl1cy0yeCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpO1xuICAgICAgei1pbmRleDogLTE7XG5cbiAgICAgIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBHcmF5VGV4dDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFNiYkVsZW1lbnQgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9zdHlsZXMuanMnO1xuaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgaHRtbCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vYXV0b2NvbXBsZXRlLWdyaWQtcm93LnNjc3M/aW5saW5lJztcblxubGV0IGF1dG9jb21wbGV0ZVJvd05leHRJZCA9IDA7XG5cbi8qKlxuICogVGhlIGNvbXBvbmVudCBpcyB1c2VkIGFzIGEgd3JhcHBlciBmb3Igb3B0aW9ucyBhbmQgYWN0aW9uIGJ1dHRvbnMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYSBgc2JiLWF1dG9jb21wbGV0ZS1ncmlkLW9wdGlvbmAgYW5kIGEgYHNiYi1hdXRvY29tcGxldGUtZ3JpZC1jZWxsYCB3aXRoIG9uZSBvciBtb3JlIGBzYmItYXV0b2NvbXBsZXRlLWdyaWQtYnV0dG9uYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkF1dG9jb21wbGV0ZUdyaWRSb3dFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93JztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ3Jvdyc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuaWQgfHw9IGBzYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LSR7KythdXRvY29tcGxldGVSb3dOZXh0SWR9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNwYW4gY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93XCI+XG4gICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgIDwvc3Bhbj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93JzogU2JiQXV0b2NvbXBsZXRlR3JpZFJvd0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQ01BLElBQUksd0JBQXdCOzs7Ozs7QUFPNUIsSUFBYSxnQ0FBYixjQUFtRCxXQUFVOztFQUMzQixLQUFBLGNBQXNCO0NBQTRCOztFQUNsRCxLQUFBLE9BQU87Q0FBTTs7RUFDdEIsS0FBQSxTQUF5QixDQUFDLGlCQUFpQixVQUFVLDZCQUFLLENBQUM7Q0FBRTtDQUVwRSxvQkFBaUI7RUFDL0IsTUFBTSxrQkFBaUI7RUFDdkIsS0FBSyxPQUFPLDZCQUE2QixFQUFFO0NBQzdDO0NBRW1CLFNBQU07RUFDdkIsT0FBTyxJQUFJOzs7OztDQUtiIn0=
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWdyaWQtcm93LmNvbXBvbmVudC1Eb1hiT3NRTS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL2F1dG9jb21wbGV0ZS1ncmlkL2F1dG9jb21wbGV0ZS1ncmlkLXJvdy9hdXRvY29tcGxldGUtZ3JpZC1yb3cuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL2F1dG9jb21wbGV0ZS1ncmlkL2F1dG9jb21wbGV0ZS1ncmlkLXJvdy9hdXRvY29tcGxldGUtZ3JpZC1yb3cuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbjpob3N0KDpzdGF0ZShuZWdhdGl2ZSkpIHtcbiAgLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMy1uZWdhdGl2ZSk7XG4gIC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zLW5lZ2F0aXZlKTtcbiAgLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWRpc2FibGVkLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJvcmRlci1jb2xvci01KTtcbiAgLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMtbmVnYXRpdmUpO1xuICAtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKTtcbn1cblxuOmhvc3QoOmhvdmVyOm5vdCg6c3RhdGUoZGlzYWJsZWQpKSkge1xuICBAaW5jbHVkZSBzYmIuaG92ZXItbXEoJGhvdmVyOiB0cnVlKSB7XG4gICAgLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWJhY2tncm91bmQtY29sb3I6IHZhcihcbiAgICAgIC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyXG4gICAgKTtcbiAgfVxufVxuXG46aG9zdCg6c3RhdGUoZGlzYWJsZWQpKSB7XG4gIC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1jdXJzb3I6IHZhcigtLXNiYi1jdXJzb3ItZGVmYXVsdCk7XG5cbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpIHtcbiAgICAtLXNiYi1hdXRvY29tcGxldGUtZ3JpZC1yb3ctY29sb3I6IEdyYXlUZXh0O1xuICB9XG59XG5cbjo6c2xvdHRlZChzYmItYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uKSB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTEgKiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0yeCkpO1xuXG4gIC8vIFVzZWQgdG8gZW5hYmxlIGVsbGlwc2lzXG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbn1cblxuLnNiYi1hdXRvY29tcGxldGUtZ3JpZC1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLXNiYi1hdXRvY29tcGxldGUtZ3JpZC1yb3ctcGFkZGluZy1pbmxpbmUtZW5kKTtcbiAganVzdGlmeS1jb250ZW50OiB2YXIoLS1zYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93LWp1c3RpZnktY29udGVudCk7XG4gIGdhcDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNngpO1xuICBjb2xvcjogdmFyKC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1jb2xvcik7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1hdXRvY29tcGxldGUtZ3JpZC1yb3ctYmFja2dyb3VuZC1jb2xvciwgaW5oZXJpdCk7XG4gIGN1cnNvcjogdmFyKC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1jdXJzb3IpO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdmFyKC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1jb2xvcik7XG5cbiAgLy8gQWRkIGlubmVyIGJvcmRlciBhbmQgYmFja2dyb3VuZCBmb3IgZGlzYWJsZWQgb3B0aW9uIHdoZW4gaXQncyBub3QgbXVsdGlwbGVcbiAgOmhvc3QoOnN0YXRlKGRpc2FibGVkKSkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDA7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGluc2V0OiAje3NiYi5weC10by1yZW0tYnVpbGQoNil9O1xuICAgICAgYm9yZGVyOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KSBkYXNoZWRcbiAgICAgICAgdmFyKC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1kaXNhYmxlZC1ib3JkZXItY29sb3IpO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLWJvcmRlci1yYWRpdXMtMngpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICAgIHotaW5kZXg6IC0xO1xuXG4gICAgICBAbWVkaWEgKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSkge1xuICAgICAgICBib3JkZXItY29sb3I6IEdyYXlUZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgU2JiRWxlbWVudCB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUuanMnO1xuaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgaHRtbCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vYXV0b2NvbXBsZXRlLWdyaWQtcm93LnNjc3M/aW5saW5lJztcblxubGV0IGF1dG9jb21wbGV0ZVJvd05leHRJZCA9IDA7XG5cbi8qKlxuICogVGhlIGNvbXBvbmVudCBpcyB1c2VkIGFzIGEgd3JhcHBlciBmb3Igb3B0aW9ucyBhbmQgYWN0aW9uIGJ1dHRvbnMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYSBgc2JiLWF1dG9jb21wbGV0ZS1ncmlkLW9wdGlvbmAgYW5kIGEgYHNiYi1hdXRvY29tcGxldGUtZ3JpZC1jZWxsYCB3aXRoIG9uZSBvciBtb3JlIGBzYmItYXV0b2NvbXBsZXRlLWdyaWQtYnV0dG9uYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkF1dG9jb21wbGV0ZUdyaWRSb3dFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93JztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ3Jvdyc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFt1bnNhZmVDU1Moc3R5bGUpXTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmlkIHx8PSBgc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdy0keysrYXV0b2NvbXBsZXRlUm93TmV4dElkfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvd1wiPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L3NwYW4+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdyc6IFNiYkF1dG9jb21wbGV0ZUdyaWRSb3dFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQ0tBLElBQUksd0JBQXdCOzs7Ozs7QUFPNUIsSUFBYSxnQ0FBYixjQUFtRCxXQUFVOztFQUMzQixLQUFBLGNBQXNCO0NBQTRCOztFQUNsRCxLQUFBLE9BQU87Q0FBTTs7RUFDdEIsS0FBQSxTQUF5QixDQUFDLFVBQVUsNkJBQUssQ0FBQztDQUFFO0NBRW5ELG9CQUFpQjtFQUMvQixNQUFNLGtCQUFpQjtFQUN2QixLQUFLLE9BQU8sNkJBQTZCLEVBQUU7Q0FDN0M7Q0FFbUIsU0FBTTtFQUN2QixPQUFPLElBQUk7Ozs7O0NBS2IifQ==
@@ -1,8 +1,8 @@
1
1
  import { SbbAutocompleteGridButtonElement } from "./autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js";
2
- import { t as SbbAutocompleteGridCellElement } from "./autocomplete-grid-cell.component-CTC6s1q3.js";
2
+ import { t as SbbAutocompleteGridCellElement } from "./autocomplete-grid-cell.component-BbdELDro.js";
3
3
  import { SbbAutocompleteGridOptgroupElement } from "./autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js";
4
- import { n as autocompleteGridOptionId, t as SbbAutocompleteGridOptionElement } from "./autocomplete-grid-option.component-DqkLWHcg.js";
5
- import { t as SbbAutocompleteGridRowElement } from "./autocomplete-grid-row.component-CvF3ZWDZ.js";
4
+ import { n as autocompleteGridOptionId, t as SbbAutocompleteGridOptionElement } from "./autocomplete-grid-option.component-C7WuqRit.js";
5
+ import { t as SbbAutocompleteGridRowElement } from "./autocomplete-grid-row.component-DoXbOsQM.js";
6
6
  import { SbbAutocompleteGridElement } from "./autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js";
7
7
  import "./autocomplete-grid.pure.js";
8
8
  //#region src/elements-experimental/autocomplete-grid.ts
@@ -16,4 +16,4 @@ SbbAutocompleteGridRowElement.define();
16
16
  //#endregion
17
17
  export { SbbAutocompleteGridButtonElement, SbbAutocompleteGridCellElement, SbbAutocompleteGridElement, SbbAutocompleteGridOptgroupElement, SbbAutocompleteGridOptionElement, SbbAutocompleteGridRowElement, autocompleteGridOptionId };
18
18
 
19
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWdyaWQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9hdXRvY29tcGxldGUtZ3JpZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGVudHJ5cG9pbnQgKi9cbmltcG9ydCB7XG4gIFNiYkF1dG9jb21wbGV0ZUdyaWRFbGVtZW50LFxuICBTYmJBdXRvY29tcGxldGVHcmlkQnV0dG9uRWxlbWVudCxcbiAgU2JiQXV0b2NvbXBsZXRlR3JpZENlbGxFbGVtZW50LFxuICBTYmJBdXRvY29tcGxldGVHcmlkT3B0Z3JvdXBFbGVtZW50LFxuICBTYmJBdXRvY29tcGxldGVHcmlkT3B0aW9uRWxlbWVudCxcbiAgU2JiQXV0b2NvbXBsZXRlR3JpZFJvd0VsZW1lbnQsXG59IGZyb20gJy4vYXV0b2NvbXBsZXRlLWdyaWQucHVyZS50cyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYXV0b2NvbXBsZXRlLWdyaWQucHVyZS50cyc7XG5cblNiYkF1dG9jb21wbGV0ZUdyaWRFbGVtZW50LmRlZmluZSgpO1xuU2JiQXV0b2NvbXBsZXRlR3JpZEJ1dHRvbkVsZW1lbnQuZGVmaW5lKCk7XG5TYmJBdXRvY29tcGxldGVHcmlkQ2VsbEVsZW1lbnQuZGVmaW5lKCk7XG5TYmJBdXRvY29tcGxldGVHcmlkT3B0Z3JvdXBFbGVtZW50LmRlZmluZSgpO1xuU2JiQXV0b2NvbXBsZXRlR3JpZE9wdGlvbkVsZW1lbnQuZGVmaW5lKCk7XG5TYmJBdXRvY29tcGxldGVHcmlkUm93RWxlbWVudC5kZWZpbmUoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBWUEsMkJBQTJCLE9BQU07QUFDakMsaUNBQWlDLE9BQU07QUFDdkMsK0JBQStCLE9BQU07QUFDckMsbUNBQW1DLE9BQU07QUFDekMsaUNBQWlDLE9BQU07QUFDdkMsOEJBQThCLE9BQU0ifQ==
19
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWdyaWQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9hdXRvY29tcGxldGUtZ3JpZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGVudHJ5cG9pbnQgKi9cbmltcG9ydCB7XG4gIFNiYkF1dG9jb21wbGV0ZUdyaWRCdXR0b25FbGVtZW50LFxuICBTYmJBdXRvY29tcGxldGVHcmlkQ2VsbEVsZW1lbnQsXG4gIFNiYkF1dG9jb21wbGV0ZUdyaWRFbGVtZW50LFxuICBTYmJBdXRvY29tcGxldGVHcmlkT3B0Z3JvdXBFbGVtZW50LFxuICBTYmJBdXRvY29tcGxldGVHcmlkT3B0aW9uRWxlbWVudCxcbiAgU2JiQXV0b2NvbXBsZXRlR3JpZFJvd0VsZW1lbnQsXG59IGZyb20gJy4vYXV0b2NvbXBsZXRlLWdyaWQucHVyZS50cyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYXV0b2NvbXBsZXRlLWdyaWQucHVyZS50cyc7XG5cblNiYkF1dG9jb21wbGV0ZUdyaWRFbGVtZW50LmRlZmluZSgpO1xuU2JiQXV0b2NvbXBsZXRlR3JpZEJ1dHRvbkVsZW1lbnQuZGVmaW5lKCk7XG5TYmJBdXRvY29tcGxldGVHcmlkQ2VsbEVsZW1lbnQuZGVmaW5lKCk7XG5TYmJBdXRvY29tcGxldGVHcmlkT3B0Z3JvdXBFbGVtZW50LmRlZmluZSgpO1xuU2JiQXV0b2NvbXBsZXRlR3JpZE9wdGlvbkVsZW1lbnQuZGVmaW5lKCk7XG5TYmJBdXRvY29tcGxldGVHcmlkUm93RWxlbWVudC5kZWZpbmUoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBWUEsMkJBQTJCLE9BQU07QUFDakMsaUNBQWlDLE9BQU07QUFDdkMsK0JBQStCLE9BQU07QUFDckMsbUNBQW1DLE9BQU07QUFDekMsaUNBQWlDLE9BQU07QUFDdkMsOEJBQThCLE9BQU0ifQ==
@@ -1,7 +1,7 @@
1
1
  import { SbbAutocompleteGridButtonElement } from "./autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js";
2
- import { t as SbbAutocompleteGridCellElement } from "./autocomplete-grid-cell.component-CTC6s1q3.js";
2
+ import { t as SbbAutocompleteGridCellElement } from "./autocomplete-grid-cell.component-BbdELDro.js";
3
3
  import { SbbAutocompleteGridOptgroupElement } from "./autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js";
4
- import { n as autocompleteGridOptionId, t as SbbAutocompleteGridOptionElement } from "./autocomplete-grid-option.component-DqkLWHcg.js";
5
- import { t as SbbAutocompleteGridRowElement } from "./autocomplete-grid-row.component-CvF3ZWDZ.js";
4
+ import { n as autocompleteGridOptionId, t as SbbAutocompleteGridOptionElement } from "./autocomplete-grid-option.component-C7WuqRit.js";
5
+ import { t as SbbAutocompleteGridRowElement } from "./autocomplete-grid-row.component-DoXbOsQM.js";
6
6
  import { SbbAutocompleteGridElement } from "./autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js";
7
7
  export { SbbAutocompleteGridButtonElement, SbbAutocompleteGridCellElement, SbbAutocompleteGridElement, SbbAutocompleteGridOptgroupElement, SbbAutocompleteGridOptionElement, SbbAutocompleteGridRowElement, autocompleteGridOptionId };
@@ -1,2 +1,2 @@
1
- import { n as removeTimezoneFromISOTimeString, t as durationToTime } from "../../date-helper-QhWjANc3.js";
1
+ import { n as removeTimezoneFromISOTimeString, t as durationToTime } from "../../date-helper-BcTDWVeP.js";
2
2
  export { durationToTime, removeTimezoneFromISOTimeString };
@@ -1 +1 @@
1
- {"version":3,"file":"access-leg-helper.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/core/timetable/access-leg-helper.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAQ1C,OAAO,KAAK,EAAE,GAAG,EAA8B,MAAM,2BAA2B,CAAC;AAEjF,OAAO,iCAAiC,CAAC;AAEzC,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAuID;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,GAAG,EAAE,EACX,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,OAAO,GACrB;IACD,4BAA4B,EAAE,MAAM,cAAc,CAAC;IACnD,0BAA0B,EAAE,MAAM,cAAc,CAAC;IACjD,sBAAsB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,oBAAoB,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC/C,CAiJA"}
1
+ {"version":3,"file":"access-leg-helper.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/core/timetable/access-leg-helper.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAQ1C,OAAO,KAAK,EAAE,GAAG,EAA8B,MAAM,2BAA2B,CAAC;AAGjF,OAAO,sCAAsC,CAAC;AAE9C,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAuID;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,GAAG,EAAE,EACX,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,OAAO,GACrB;IACD,4BAA4B,EAAE,MAAM,cAAc,CAAC;IACnD,0BAA0B,EAAE,MAAM,cAAc,CAAC;IACjD,sBAAsB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,oBAAoB,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC/C,CAiJA"}
@@ -1,7 +1,7 @@
1
1
  import { extractTimeAndStringFromNoticeText, isConnectionLeg, isRideLeg } from "./timetable-helper.js";
2
- import "@sbb-esta/lyne-elements/icon.js";
2
+ import { i18nWalkingDistanceArrival, i18nWalkingDistanceDeparture } from "@sbb-esta/lyne-elements/core.js";
3
+ import "@sbb-esta/lyne-elements/icon.pure.js";
3
4
  import { html, nothing } from "lit";
4
- import { i18nWalkingDistanceArrival, i18nWalkingDistanceDeparture } from "@sbb-esta/lyne-elements/core/i18n.js";
5
5
  //#region src/elements-experimental/core/timetable/access-leg-helper.ts
6
6
  /**
7
7
  * @returns the attribute of a ConnectionLeg
@@ -144,4 +144,4 @@ function getDepartureArrivalTimeAttribute(legs, departureWalk, arrivalWalk, curr
144
144
  //#endregion
145
145
  export { getDepartureArrivalTimeAttribute };
146
146
 
147
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWxlZy1oZWxwZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9jb3JlL3RpbWV0YWJsZS9hY2Nlc3MtbGVnLWhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGhlbHBlciBmaWxlIGNvbnRhaW5zIHNldmVyYWwgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gYWNjZXNzaW5nIGF0dHJpYnV0ZXMgZm9yIHRoZSBjb25uZWN0aW9ucy5cblxuaW1wb3J0IHtcbiAgaTE4bldhbGtpbmdEaXN0YW5jZUFycml2YWwsXG4gIGkxOG5XYWxraW5nRGlzdGFuY2VEZXBhcnR1cmUsXG59IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQge1xuICBleHRyYWN0VGltZUFuZFN0cmluZ0Zyb21Ob3RpY2VUZXh0LFxuICBpc0Nvbm5lY3Rpb25MZWcsXG4gIGlzUmlkZUxlZyxcbn0gZnJvbSAnLi90aW1ldGFibGUtaGVscGVyLnRzJztcbmltcG9ydCB0eXBlIHsgTGVnLCBQdENvbm5lY3Rpb25MZWcsIFB0UmlkZUxlZyB9IGZyb20gJy4vdGltZXRhYmxlLXByb3BlcnRpZXMudHMnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2ljb24uanMnO1xuXG5pbnRlcmZhY2UgSUFjY2Vzc0F0dHJpYnV0ZSB7XG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIHRleHQ6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHRoZSBhdHRyaWJ1dGUgb2YgYSBDb25uZWN0aW9uTGVnXG4gKi9cbmZ1bmN0aW9uIGdldFBUQ29ubmVjdGlvbkF0dHJpYnV0ZShcbiAgbGVnOiBQdFJpZGVMZWcgfCBQdENvbm5lY3Rpb25MZWcsXG4gIGNvbm5lY3Rpb25MZWdOb3RpY2U6IHN0cmluZ1tdLFxuKTogSUFjY2Vzc0F0dHJpYnV0ZSB8IG51bGwge1xuICBjb25zdCBjb25uZWN0aW9uRmlyc3RMZWcgPSBpc0Nvbm5lY3Rpb25MZWcobGVnKSA/IChsZWcgYXMgUHRDb25uZWN0aW9uTGVnKSA6IG51bGw7XG5cbiAgY29uc3QgY29ubmVjdGlvbkZpcnN0TGVnTm90aWNlID0gY29ubmVjdGlvbkZpcnN0TGVnXG4gICAgPyBjb25uZWN0aW9uRmlyc3RMZWc/Lm5vdGljZXM/LmZpbHRlcigobm90aWNlKSA9PiBjb25uZWN0aW9uTGVnTm90aWNlLmluY2x1ZGVzKG5vdGljZS5uYW1lKSlbMF1cbiAgICA6IG51bGw7XG5cbiAgcmV0dXJuIGNvbm5lY3Rpb25GaXJzdExlZ05vdGljZVxuICAgID8ge1xuICAgICAgICBkdXJhdGlvbjogY29ubmVjdGlvbkZpcnN0TGVnPy5kdXJhdGlvbiB8fCAwLFxuICAgICAgICB0ZXh0OiBjb25uZWN0aW9uRmlyc3RMZWdOb3RpY2U/LnRleHQ/LnRlbXBsYXRlIHx8ICcnLFxuICAgICAgICBpY29uOiAnd2Fsay1zbWFsbCcsXG4gICAgICB9XG4gICAgOiBudWxsO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHRoZSBleHRlbmRlZCBlbnRlciBhdHRyaWJ1dGUgb2YgdGhlIFBUUmlkZUxlZ1xuICovXG5mdW5jdGlvbiBnZXRGaXJzdEV4dGVuZGVkTGVnQXR0cmlidXRlKFxuICBsZWc6IFB0UmlkZUxlZyB8IFB0Q29ubmVjdGlvbkxlZyxcbiAgZGVwYXJ0dXJlV2FsazogbnVtYmVyLFxuICBhMTF5Rm9vdHBhdGg6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nLFxuKTogSUFjY2Vzc0F0dHJpYnV0ZSB8IG51bGwge1xuICAvLyBFeHRlbmRlZCBlbnRlclxuICBjb25zdCBleHRlbmRlZEZpcnN0TGVnID0gaXNSaWRlTGVnKGxlZylcbiAgICA/IChsZWcgYXMgUHRSaWRlTGVnKT8uc2VydmljZUpvdXJuZXk/Lm5vdGljZXM/LmZpbHRlcigobm90aWNlKSA9PlxuICAgICAgICBbJ0NJJ10uaW5jbHVkZXMobm90aWNlLm5hbWUpLFxuICAgICAgKVswXVxuICAgIDogbnVsbDtcblxuICBjb25zdCBleHRyYWN0VGltZUFuZFN0cmluZyA9XG4gICAgZXh0ZW5kZWRGaXJzdExlZyAmJiBleHRyYWN0VGltZUFuZFN0cmluZ0Zyb21Ob3RpY2VUZXh0KGV4dGVuZGVkRmlyc3RMZWcpO1xuXG4gIHJldHVybiBleHRlbmRlZEZpcnN0TGVnXG4gICAgPyB7XG4gICAgICAgIGR1cmF0aW9uOiAoZXh0cmFjdFRpbWVBbmRTdHJpbmc/LmR1cmF0aW9uIHx8IDApICsgKGRlcGFydHVyZVdhbGsgfHwgMCksXG4gICAgICAgIHRleHQ6IGExMXlGb290cGF0aFxuICAgICAgICAgID8gaTE4bldhbGtpbmdEaXN0YW5jZURlcGFydHVyZVtjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgICAgOiBleHRyYWN0VGltZUFuZFN0cmluZz8udGV4dCB8fCAnJyxcbiAgICAgICAgaWNvbjogYTExeUZvb3RwYXRoID8gJ3doZWVsY2hhaXItc21hbGwnIDogYHNhLSR7ZXh0ZW5kZWRGaXJzdExlZz8ubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgfVxuICAgIDogbnVsbDtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB0aGUgZXh0ZW5kZWQgZXhpdCBhdHRyaWJ1dGUgb2YgdGhlIFBUUmlkZUxlZ1xuICovXG5mdW5jdGlvbiBnZXRMYXN0RXh0ZW5kZWRMZWdBdHRyaWJ1dGUoXG4gIGxlZzogTGVnLFxuICBhcnJpdmFsV2FsazogbnVtYmVyLFxuICBhMTF5Rm9vdHBhdGg6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nLFxuKTogSUFjY2Vzc0F0dHJpYnV0ZSB8IG51bGwge1xuICAvLyBFeHRlbmRlZCBleGl0XG4gIGNvbnN0IGV4dGVuZGVkTGFzdExlZyA9IGlzUmlkZUxlZyhsZWcpXG4gICAgPyAobGVnIGFzIFB0UmlkZUxlZyk/LnNlcnZpY2VKb3VybmV5Py5ub3RpY2VzPy5maWx0ZXIoKG5vdGljZSkgPT5cbiAgICAgICAgWydDTyddLmluY2x1ZGVzKG5vdGljZS5uYW1lKSxcbiAgICAgIClbMF1cbiAgICA6IG51bGw7XG5cbiAgY29uc3QgZXh0cmFjdFRpbWVBbmRTdHJpbmcgPVxuICAgIGV4dGVuZGVkTGFzdExlZyAmJiBleHRyYWN0VGltZUFuZFN0cmluZ0Zyb21Ob3RpY2VUZXh0KGV4dGVuZGVkTGFzdExlZyk7XG5cbiAgcmV0dXJuIGV4dGVuZGVkTGFzdExlZ1xuICAgID8ge1xuICAgICAgICBkdXJhdGlvbjogKGV4dHJhY3RUaW1lQW5kU3RyaW5nPy5kdXJhdGlvbiB8fCAwKSArIChhcnJpdmFsV2FsayB8fCAwKSxcbiAgICAgICAgdGV4dDogYTExeUZvb3RwYXRoXG4gICAgICAgICAgPyBpMThuV2Fsa2luZ0Rpc3RhbmNlQXJyaXZhbFtjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgICAgOiBleHRyYWN0VGltZUFuZFN0cmluZz8udGV4dCB8fCAnJyxcbiAgICAgICAgaWNvbjogYTExeUZvb3RwYXRoID8gJ3doZWVsY2hhaXItc21hbGwnIDogYHNhLSR7ZXh0ZW5kZWRMYXN0TGVnPy5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICB9XG4gICAgOiBudWxsO1xufVxuXG4vKipcbiAqIHJlbmRlcnMgdGhlIGV4dGVuZGVkIGV4aXQvZW50ZXIgaWNvbiB3aXRoIHRoZSBkdXJhdGlvblxuICovXG5mdW5jdGlvbiByZW5kZXJUcmFuc2ZlclRpbWUoXG4gIGR1cmF0aW9uOiBudW1iZXIgfCBzdHJpbmcsXG4gIGljb246IHN0cmluZyxcbiAgY3VycmVudExhbmd1YWdlOiBzdHJpbmcsXG4gIGxhYmVsPzogc3RyaW5nLFxuICB0eXBlPzogJ2RlcGFydHVyZScgfCAnYXJyaXZhbCcsXG4pOiBUZW1wbGF0ZVJlc3VsdCB7XG4gIHJldHVybiBodG1sYFxuICAgIDxzcGFuIGNsYXNzPVwic2JiLXBlYXJsLWNoYWluX190aW1lLXRyYW5zZmVyIHNiYi1wZWFybC1jaGFpbl9fdGltZS10cmFuc2Zlci0tJHtpY29ufS0ke3R5cGV9XCI+XG4gICAgICA8c2JiLWljb24gbmFtZT0ke2ljb259Pjwvc2JiLWljb24+XG4gICAgICA8dGltZSBkYXRldGltZT0ke2R1cmF0aW9uICsgJ00nfT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+XG4gICAgICAgICAgJHshbGFiZWwgJiYgdHlwZVxuICAgICAgICAgICAgPyB0eXBlID09PSAnZGVwYXJ0dXJlJ1xuICAgICAgICAgICAgICA/IGkxOG5XYWxraW5nRGlzdGFuY2VEZXBhcnR1cmVbY3VycmVudExhbmd1YWdlXVxuICAgICAgICAgICAgICA6IGkxOG5XYWxraW5nRGlzdGFuY2VBcnJpdmFsW2N1cnJlbnRMYW5ndWFnZV1cbiAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAke2xhYmVsID8gaHRtbGA8c3Bhbj4ke2xhYmVsfTwvc3Bhbj5gIDogbm90aGluZ30mbmJzcDtcbiAgICAgICAgPC9zcGFuPlxuICAgICAgICAke2R1cmF0aW9ufVxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1wZWFybC1jaGFpbl9fdGltZS13YWxrdGltZS1wcmltZS1zeW1ib2xcIiBhcmlhLWhpZGRlbj1cInRydWVcIj4nPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5taW48L3NwYW4+XG4gICAgICA8L3RpbWU+XG4gICAgPC9zcGFuPlxuICBgO1xufVxuXG4vKipcbiAqIHJlbmRlcnMgYSB3YWxrLXRpbWUgaWNvbiB3aXRoIHRoZSB3YWxrIGR1cmF0aW9uXG4gKi9cbmZ1bmN0aW9uIHJlbmRlcldhbGtUaW1lKFxuICBkdXJhdGlvbjogbnVtYmVyIHwgc3RyaW5nLFxuICBsYWJlbDogc3RyaW5nLFxuICB2YXJpYW50OiAnbGVmdCcgfCAncmlnaHQnLFxuICBpY29uOiBzdHJpbmcsXG4pOiBUZW1wbGF0ZVJlc3VsdCB7XG4gIHJldHVybiBodG1sYFxuICAgIDxzcGFuIGNsYXNzPVwic2JiLXBlYXJsLWNoYWluX190aW1lLXdhbGt0aW1lIHNiYi1wZWFybC1jaGFpbl9fdGltZS13YWxrdGltZS0tJHtpY29ufS0ke3ZhcmlhbnR9XCI+XG4gICAgICA8c2JiLWljb24gbmFtZT0ke2ljb259Pjwvc2JiLWljb24+XG4gICAgICA8dGltZSBkYXRldGltZT0ke2R1cmF0aW9uICsgJ00nfT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHtsYWJlbH08L3NwYW4+XG4gICAgICAgICR7ZHVyYXRpb259XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXBlYXJsLWNoYWluX190aW1lLXdhbGt0aW1lLXByaW1lLXN5bWJvbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPic8L3NwYW4+XG4gICAgICA8L3RpbWU+XG4gICAgPC9zcGFuPlxuICBgO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHJlbmRlckRlcGFydHVyZVRpbWVBdHRyaWJ1dGU6IEEgZnVuY3Rpb24gdGhhdCByZW5kZXJzIHRoZSBlbGVtZW50IGZvciB0aGUgZGVwYXJ0dXJlIHRpbWUgYXR0cmlidXRlLlxuICogQHJldHVybnMgcmVuZGVyQXJyaXZhbFRpbWVBdHRyaWJ1dGU6IEEgZnVuY3Rpb24gdGhhdCByZW5kZXJzIHRoZSBlbGVtZW50IGZvciB0aGUgYXJyaXZhbCB0aW1lIGF0dHJpYnV0ZS5cbiAqIEByZXR1cm5zIGFycml2YWxUaW1lQXR0cmlidXRlOiBUaGUgYWNjZXNzIGF0dHJpYnV0ZSBmb3IgdGhlIGFycml2YWwgdGltZS5cbiAqIEByZXR1cm5zIGRlcGFydHVyZVRpbWVBdHRyaWJ1dGU6IFRoZSBhY2Nlc3MgYXR0cmlidXRlIGZvciB0aGUgZGVwYXJ0dXJlIHRpbWUuXG4gKiBAcGFyYW0gbGVncyBBbiBhcnJheSBvZiBMZWcgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIGpvdXJuZXkgbGVncy5cbiAqIEBwYXJhbSBkZXBhcnR1cmVXYWxrIFRoZSB3YWxraW5nIGRpc3RhbmNlIGluIG1pbnV0ZXMgZnJvbSB0aGUgZGVwYXJ0dXJlIHBvaW50IHRvIHRoZSBmaXJzdCBsZWcuXG4gKiBAcGFyYW0gYXJyaXZhbFdhbGsgVGhlIHdhbGtpbmcgZGlzdGFuY2UgaW4gbWludXRlcyBmcm9tIHRoZSBsYXN0IGxlZyB0byB0aGUgYXJyaXZhbCBwb2ludC5cbiAqIEBwYXJhbSBjdXJyZW50TGFuZ3VhZ2UgVGhlIGN1cnJlbnQgbGFuZ3VhZ2UgZm9yIGxvY2FsaXphdGlvbi5cbiAqIEBwYXJhbSBhMTF5Rm9vdHBhdGggV2hldGhlciB0aGUgYTExeS1pY29uIHNob3VsZCBiZSBzaG93bi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlcGFydHVyZUFycml2YWxUaW1lQXR0cmlidXRlKFxuICBsZWdzOiBMZWdbXSxcbiAgZGVwYXJ0dXJlV2FsazogbnVtYmVyLFxuICBhcnJpdmFsV2FsazogbnVtYmVyLFxuICBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyxcbiAgYTExeUZvb3RwYXRoPzogYm9vbGVhbixcbik6IHtcbiAgcmVuZGVyRGVwYXJ0dXJlVGltZUF0dHJpYnV0ZTogKCkgPT4gVGVtcGxhdGVSZXN1bHQ7XG4gIHJlbmRlckFycml2YWxUaW1lQXR0cmlidXRlOiAoKSA9PiBUZW1wbGF0ZVJlc3VsdDtcbiAgZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZTogSUFjY2Vzc0F0dHJpYnV0ZSB8IG51bGw7XG4gIGFycml2YWxUaW1lQXR0cmlidXRlOiBJQWNjZXNzQXR0cmlidXRlIHwgbnVsbDtcbn0ge1xuICBjb25zdCBjb25uZWN0aW9uUmlkZUxlZyA9XG4gICAgbGVncyAmJlxuICAgIChsZWdzLmZpbHRlcigobGVnKSA9PiBpc1JpZGVMZWcobGVnKSB8fCBpc0Nvbm5lY3Rpb25MZWcobGVnKSlbMF0gYXNcbiAgICAgIHwgUHRSaWRlTGVnXG4gICAgICB8IFB0Q29ubmVjdGlvbkxlZyk7XG5cbiAgY29uc3QgY29ubmVjdGlvbkxlZ05vdGljZSA9IFsnWU0nLCAnWUInLCAnWScsICdZVCddO1xuXG4gIGNvbnN0IGNvbm5lY3Rpb25GaXJzdExlZyA9IGdldFBUQ29ubmVjdGlvbkF0dHJpYnV0ZShjb25uZWN0aW9uUmlkZUxlZywgY29ubmVjdGlvbkxlZ05vdGljZSk7XG4gIGNvbnN0IGV4dGVuZGVkRmlyc3RMZWcgPSBnZXRGaXJzdEV4dGVuZGVkTGVnQXR0cmlidXRlKFxuICAgIGNvbm5lY3Rpb25SaWRlTGVnLFxuICAgIGRlcGFydHVyZVdhbGssXG4gICAgYTExeUZvb3RwYXRoLFxuICAgIGN1cnJlbnRMYW5ndWFnZSxcbiAgKTtcbiAgY29uc3QgZGVwYXJ0dXJlV2Fsa0F0dHJpYnV0ZSA9IGRlcGFydHVyZVdhbGtcbiAgICA/IHtcbiAgICAgICAgdGV4dDogaTE4bldhbGtpbmdEaXN0YW5jZURlcGFydHVyZVtjdXJyZW50TGFuZ3VhZ2VdLFxuICAgICAgICBkdXJhdGlvbjogZGVwYXJ0dXJlV2FsayxcbiAgICAgICAgaWNvbjogYTExeUZvb3RwYXRoID8gJ3doZWVsY2hhaXItc21hbGwnIDogJ3dhbGstc21hbGwnLFxuICAgICAgfVxuICAgIDogbnVsbDtcblxuICBjb25zdCBnZXREZXBhcnR1cmVUeXBlID0gKCk6IElBY2Nlc3NBdHRyaWJ1dGUgfCBudWxsID0+IHtcbiAgICBpZiAoY29ubmVjdGlvbkZpcnN0TGVnKSB7XG4gICAgICByZXR1cm4gY29ubmVjdGlvbkZpcnN0TGVnO1xuICAgIH0gZWxzZSBpZiAoZGVwYXJ0dXJlV2Fsa0F0dHJpYnV0ZSAmJiAhZXh0ZW5kZWRGaXJzdExlZyAmJiAhY29ubmVjdGlvbkZpcnN0TGVnKSB7XG4gICAgICByZXR1cm4gZGVwYXJ0dXJlV2Fsa0F0dHJpYnV0ZTtcbiAgICB9IGVsc2UgaWYgKGV4dGVuZGVkRmlyc3RMZWcpIHtcbiAgICAgIHJldHVybiBleHRlbmRlZEZpcnN0TGVnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gcmVuZGVyRGVwYXJ0dXJlVGltZUF0dHJpYnV0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICAke2Nvbm5lY3Rpb25GaXJzdExlZ1xuICAgICAgICA/IHJlbmRlcldhbGtUaW1lKFxuICAgICAgICAgICAgY29ubmVjdGlvbkZpcnN0TGVnLmR1cmF0aW9uLFxuICAgICAgICAgICAgY29ubmVjdGlvbkZpcnN0TGVnLnRleHQsXG4gICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICBjb25uZWN0aW9uRmlyc3RMZWcuaWNvbixcbiAgICAgICAgICApXG4gICAgICAgIDogbm90aGluZ31cbiAgICAgICR7ZGVwYXJ0dXJlV2Fsa0F0dHJpYnV0ZSAmJiAhZXh0ZW5kZWRGaXJzdExlZyAmJiAhY29ubmVjdGlvbkZpcnN0TGVnXG4gICAgICAgID8gcmVuZGVyV2Fsa1RpbWUoXG4gICAgICAgICAgICBkZXBhcnR1cmVXYWxrQXR0cmlidXRlLmR1cmF0aW9uLFxuICAgICAgICAgICAgZGVwYXJ0dXJlV2Fsa0F0dHJpYnV0ZS50ZXh0LFxuICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgZGVwYXJ0dXJlV2Fsa0F0dHJpYnV0ZS5pY29uLFxuICAgICAgICAgIClcbiAgICAgICAgOiBub3RoaW5nfVxuICAgICAgJHtleHRlbmRlZEZpcnN0TGVnXG4gICAgICAgID8gYTExeUZvb3RwYXRoXG4gICAgICAgICAgPyByZW5kZXJXYWxrVGltZShcbiAgICAgICAgICAgICAgZXh0ZW5kZWRGaXJzdExlZy5kdXJhdGlvbixcbiAgICAgICAgICAgICAgZXh0ZW5kZWRGaXJzdExlZy50ZXh0LFxuICAgICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICAgIGV4dGVuZGVkRmlyc3RMZWcuaWNvbixcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IHJlbmRlclRyYW5zZmVyVGltZShcbiAgICAgICAgICAgICAgZXh0ZW5kZWRGaXJzdExlZy5kdXJhdGlvbixcbiAgICAgICAgICAgICAgZXh0ZW5kZWRGaXJzdExlZy5pY29uLFxuICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgIGV4dGVuZGVkRmlyc3RMZWcudGV4dCxcbiAgICAgICAgICAgICAgJ2RlcGFydHVyZScsXG4gICAgICAgICAgICApXG4gICAgICAgIDogbm90aGluZ31cbiAgICBgO1xuICB9XG5cbiAgY29uc3QgbGFzdExlZyA9IGxlZ3MgJiYgbGVnc1tsZWdzLmxlbmd0aCAtIDFdO1xuICBjb25zdCBsYXN0Q29ubmVjdGlvblJpZGVMZWcgPVxuICAgIChpc0Nvbm5lY3Rpb25MZWcobGFzdExlZykgfHwgaXNSaWRlTGVnKGxhc3RMZWcpKSAmJiAobGFzdExlZyBhcyBQdENvbm5lY3Rpb25MZWcgfCBQdFJpZGVMZWcpO1xuXG4gIGNvbnN0IGNvbm5lY3Rpb25MYXN0TGVnID1cbiAgICBsYXN0Q29ubmVjdGlvblJpZGVMZWcgJiYgZ2V0UFRDb25uZWN0aW9uQXR0cmlidXRlKGxhc3RDb25uZWN0aW9uUmlkZUxlZywgY29ubmVjdGlvbkxlZ05vdGljZSk7XG4gIGNvbnN0IGV4dGVuZGVkTGFzdExlZyA9XG4gICAgbGFzdENvbm5lY3Rpb25SaWRlTGVnICYmXG4gICAgZ2V0TGFzdEV4dGVuZGVkTGVnQXR0cmlidXRlKGxhc3RDb25uZWN0aW9uUmlkZUxlZywgYXJyaXZhbFdhbGssIGExMXlGb290cGF0aCwgY3VycmVudExhbmd1YWdlKTtcbiAgY29uc3QgYXJyaXZhbFdhbGtBdHRyaWJ1dGUgPSBhcnJpdmFsV2Fsa1xuICAgID8ge1xuICAgICAgICB0ZXh0OiBpMThuV2Fsa2luZ0Rpc3RhbmNlQXJyaXZhbFtjdXJyZW50TGFuZ3VhZ2VdLFxuICAgICAgICBkdXJhdGlvbjogYXJyaXZhbFdhbGssXG4gICAgICAgIGljb246IGExMXlGb290cGF0aCA/ICd3aGVlbGNoYWlyLXNtYWxsJyA6ICd3YWxrLXNtYWxsJyxcbiAgICAgIH1cbiAgICA6IG51bGw7XG5cbiAgY29uc3QgZ2V0QXJyaXZhbFR5cGUgPSAoKTogSUFjY2Vzc0F0dHJpYnV0ZSB8IG51bGwgPT4ge1xuICAgIGlmIChjb25uZWN0aW9uTGFzdExlZykge1xuICAgICAgcmV0dXJuIGNvbm5lY3Rpb25MYXN0TGVnO1xuICAgIH0gZWxzZSBpZiAoYXJyaXZhbFdhbGtBdHRyaWJ1dGUgJiYgIWV4dGVuZGVkTGFzdExlZyAmJiAhY29ubmVjdGlvbkxhc3RMZWcpIHtcbiAgICAgIHJldHVybiBhcnJpdmFsV2Fsa0F0dHJpYnV0ZTtcbiAgICB9IGVsc2UgaWYgKGV4dGVuZGVkTGFzdExlZykge1xuICAgICAgcmV0dXJuIGV4dGVuZGVkTGFzdExlZztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIHJlbmRlckFycml2YWxUaW1lQXR0cmlidXRlKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgICR7Y29ubmVjdGlvbkxhc3RMZWdcbiAgICAgICAgPyByZW5kZXJXYWxrVGltZShcbiAgICAgICAgICAgIGNvbm5lY3Rpb25MYXN0TGVnLmR1cmF0aW9uLFxuICAgICAgICAgICAgY29ubmVjdGlvbkxhc3RMZWcudGV4dCxcbiAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICBjb25uZWN0aW9uTGFzdExlZy5pY29uLFxuICAgICAgICAgIClcbiAgICAgICAgOiBub3RoaW5nfVxuICAgICAgJHthcnJpdmFsV2Fsa0F0dHJpYnV0ZSAmJiAhZXh0ZW5kZWRMYXN0TGVnICYmICFjb25uZWN0aW9uTGFzdExlZ1xuICAgICAgICA/IHJlbmRlcldhbGtUaW1lKFxuICAgICAgICAgICAgYXJyaXZhbFdhbGtBdHRyaWJ1dGUuZHVyYXRpb24sXG4gICAgICAgICAgICBhcnJpdmFsV2Fsa0F0dHJpYnV0ZS50ZXh0LFxuICAgICAgICAgICAgJ3JpZ2h0JyxcbiAgICAgICAgICAgIGFycml2YWxXYWxrQXR0cmlidXRlLmljb24sXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAke2V4dGVuZGVkTGFzdExlZ1xuICAgICAgICA/IGExMXlGb290cGF0aFxuICAgICAgICAgID8gcmVuZGVyV2Fsa1RpbWUoXG4gICAgICAgICAgICAgIGV4dGVuZGVkTGFzdExlZy5kdXJhdGlvbixcbiAgICAgICAgICAgICAgZXh0ZW5kZWRMYXN0TGVnLnRleHQsXG4gICAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICAgIGV4dGVuZGVkTGFzdExlZy5pY29uLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogcmVuZGVyVHJhbnNmZXJUaW1lKFxuICAgICAgICAgICAgICBleHRlbmRlZExhc3RMZWcuZHVyYXRpb24sXG4gICAgICAgICAgICAgIGV4dGVuZGVkTGFzdExlZy5pY29uLFxuICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgIGV4dGVuZGVkTGFzdExlZy50ZXh0LFxuICAgICAgICAgICAgICAnYXJyaXZhbCcsXG4gICAgICAgICAgICApXG4gICAgICAgIDogbm90aGluZ31cbiAgICBgO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZW5kZXJEZXBhcnR1cmVUaW1lQXR0cmlidXRlLFxuICAgIHJlbmRlckFycml2YWxUaW1lQXR0cmlidXRlLFxuICAgIGRlcGFydHVyZVRpbWVBdHRyaWJ1dGU6IGdldERlcGFydHVyZVR5cGUoKSxcbiAgICBhcnJpdmFsVGltZUF0dHJpYnV0ZTogZ2V0QXJyaXZhbFR5cGUoKSxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUEyQkEsU0FBUyx5QkFDUCxLQUNBLHFCQUE2QjtDQUU3QixNQUFNLHFCQUFxQixnQkFBZ0IsR0FBRyxJQUFLLE1BQTBCO0NBRTdFLE1BQU0sMkJBQTJCLHFCQUM3QixvQkFBb0IsU0FBUyxRQUFRLFdBQVcsb0JBQW9CLFNB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
147
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWxlZy1oZWxwZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9jb3JlL3RpbWV0YWJsZS9hY2Nlc3MtbGVnLWhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGhlbHBlciBmaWxlIGNvbnRhaW5zIHNldmVyYWwgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gYWNjZXNzaW5nIGF0dHJpYnV0ZXMgZm9yIHRoZSBjb25uZWN0aW9ucy5cblxuaW1wb3J0IHtcbiAgaTE4bldhbGtpbmdEaXN0YW5jZUFycml2YWwsXG4gIGkxOG5XYWxraW5nRGlzdGFuY2VEZXBhcnR1cmUsXG59IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUuanMnO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBub3RoaW5nIH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHtcbiAgZXh0cmFjdFRpbWVBbmRTdHJpbmdGcm9tTm90aWNlVGV4dCxcbiAgaXNDb25uZWN0aW9uTGVnLFxuICBpc1JpZGVMZWcsXG59IGZyb20gJy4vdGltZXRhYmxlLWhlbHBlci50cyc7XG5pbXBvcnQgdHlwZSB7IExlZywgUHRDb25uZWN0aW9uTGVnLCBQdFJpZGVMZWcgfSBmcm9tICcuL3RpbWV0YWJsZS1wcm9wZXJ0aWVzLnRzJztcblxuLy8gVGhpcyBpcyB1bmZvcnR1bmF0ZWx5IG5lY2Vzc2FyeSBkdWUgdG8gdGhlIGxpdC1hbmFseXplci5cbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvaWNvbi5wdXJlLmpzJztcblxuaW50ZXJmYWNlIElBY2Nlc3NBdHRyaWJ1dGUge1xuICBkdXJhdGlvbjogbnVtYmVyO1xuICB0ZXh0OiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB0aGUgYXR0cmlidXRlIG9mIGEgQ29ubmVjdGlvbkxlZ1xuICovXG5mdW5jdGlvbiBnZXRQVENvbm5lY3Rpb25BdHRyaWJ1dGUoXG4gIGxlZzogUHRSaWRlTGVnIHwgUHRDb25uZWN0aW9uTGVnLFxuICBjb25uZWN0aW9uTGVnTm90aWNlOiBzdHJpbmdbXSxcbik6IElBY2Nlc3NBdHRyaWJ1dGUgfCBudWxsIHtcbiAgY29uc3QgY29ubmVjdGlvbkZpcnN0TGVnID0gaXNDb25uZWN0aW9uTGVnKGxlZykgPyAobGVnIGFzIFB0Q29ubmVjdGlvbkxlZykgOiBudWxsO1xuXG4gIGNvbnN0IGNvbm5lY3Rpb25GaXJzdExlZ05vdGljZSA9IGNvbm5lY3Rpb25GaXJzdExlZ1xuICAgID8gY29ubmVjdGlvbkZpcnN0TGVnPy5ub3RpY2VzPy5maWx0ZXIoKG5vdGljZSkgPT4gY29ubmVjdGlvbkxlZ05vdGljZS5pbmNsdWRlcyhub3RpY2UubmFtZSkpWzBdXG4gICAgOiBudWxsO1xuXG4gIHJldHVybiBjb25uZWN0aW9uRmlyc3RMZWdOb3RpY2VcbiAgICA/IHtcbiAgICAgICAgZHVyYXRpb246IGNvbm5lY3Rpb25GaXJzdExlZz8uZHVyYXRpb24gfHwgMCxcbiAgICAgICAgdGV4dDogY29ubmVjdGlvbkZpcnN0TGVnTm90aWNlPy50ZXh0Py50ZW1wbGF0ZSB8fCAnJyxcbiAgICAgICAgaWNvbjogJ3dhbGstc21hbGwnLFxuICAgICAgfVxuICAgIDogbnVsbDtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB0aGUgZXh0ZW5kZWQgZW50ZXIgYXR0cmlidXRlIG9mIHRoZSBQVFJpZGVMZWdcbiAqL1xuZnVuY3Rpb24gZ2V0Rmlyc3RFeHRlbmRlZExlZ0F0dHJpYnV0ZShcbiAgbGVnOiBQdFJpZGVMZWcgfCBQdENvbm5lY3Rpb25MZWcsXG4gIGRlcGFydHVyZVdhbGs6IG51bWJlcixcbiAgYTExeUZvb3RwYXRoOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyxcbik6IElBY2Nlc3NBdHRyaWJ1dGUgfCBudWxsIHtcbiAgLy8gRXh0ZW5kZWQgZW50ZXJcbiAgY29uc3QgZXh0ZW5kZWRGaXJzdExlZyA9IGlzUmlkZUxlZyhsZWcpXG4gICAgPyAobGVnIGFzIFB0UmlkZUxlZyk/LnNlcnZpY2VKb3VybmV5Py5ub3RpY2VzPy5maWx0ZXIoKG5vdGljZSkgPT5cbiAgICAgICAgWydDSSddLmluY2x1ZGVzKG5vdGljZS5uYW1lKSxcbiAgICAgIClbMF1cbiAgICA6IG51bGw7XG5cbiAgY29uc3QgZXh0cmFjdFRpbWVBbmRTdHJpbmcgPVxuICAgIGV4dGVuZGVkRmlyc3RMZWcgJiYgZXh0cmFjdFRpbWVBbmRTdHJpbmdGcm9tTm90aWNlVGV4dChleHRlbmRlZEZpcnN0TGVnKTtcblxuICByZXR1cm4gZXh0ZW5kZWRGaXJzdExlZ1xuICAgID8ge1xuICAgICAgICBkdXJhdGlvbjogKGV4dHJhY3RUaW1lQW5kU3RyaW5nPy5kdXJhdGlvbiB8fCAwKSArIChkZXBhcnR1cmVXYWxrIHx8IDApLFxuICAgICAgICB0ZXh0OiBhMTF5Rm9vdHBhdGhcbiAgICAgICAgICA/IGkxOG5XYWxraW5nRGlzdGFuY2VEZXBhcnR1cmVbY3VycmVudExhbmd1YWdlXVxuICAgICAgICAgIDogZXh0cmFjdFRpbWVBbmRTdHJpbmc/LnRleHQgfHwgJycsXG4gICAgICAgIGljb246IGExMXlGb290cGF0aCA/ICd3aGVlbGNoYWlyLXNtYWxsJyA6IGBzYS0ke2V4dGVuZGVkRmlyc3RMZWc/Lm5hbWU/LnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgIH1cbiAgICA6IG51bGw7XG59XG5cbi8qKlxuICogQHJldHVybnMgdGhlIGV4dGVuZGVkIGV4aXQgYXR0cmlidXRlIG9mIHRoZSBQVFJpZGVMZWdcbiAqL1xuZnVuY3Rpb24gZ2V0TGFzdEV4dGVuZGVkTGVnQXR0cmlidXRlKFxuICBsZWc6IExlZyxcbiAgYXJyaXZhbFdhbGs6IG51bWJlcixcbiAgYTExeUZvb3RwYXRoOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyxcbik6IElBY2Nlc3NBdHRyaWJ1dGUgfCBudWxsIHtcbiAgLy8gRXh0ZW5kZWQgZXhpdFxuICBjb25zdCBleHRlbmRlZExhc3RMZWcgPSBpc1JpZGVMZWcobGVnKVxuICAgID8gKGxlZyBhcyBQdFJpZGVMZWcpPy5zZXJ2aWNlSm91cm5leT8ubm90aWNlcz8uZmlsdGVyKChub3RpY2UpID0+XG4gICAgICAgIFsnQ08nXS5pbmNsdWRlcyhub3RpY2UubmFtZSksXG4gICAgICApWzBdXG4gICAgOiBudWxsO1xuXG4gIGNvbnN0IGV4dHJhY3RUaW1lQW5kU3RyaW5nID1cbiAgICBleHRlbmRlZExhc3RMZWcgJiYgZXh0cmFjdFRpbWVBbmRTdHJpbmdGcm9tTm90aWNlVGV4dChleHRlbmRlZExhc3RMZWcpO1xuXG4gIHJldHVybiBleHRlbmRlZExhc3RMZWdcbiAgICA/IHtcbiAgICAgICAgZHVyYXRpb246IChleHRyYWN0VGltZUFuZFN0cmluZz8uZHVyYXRpb24gfHwgMCkgKyAoYXJyaXZhbFdhbGsgfHwgMCksXG4gICAgICAgIHRleHQ6IGExMXlGb290cGF0aFxuICAgICAgICAgID8gaTE4bldhbGtpbmdEaXN0YW5jZUFycml2YWxbY3VycmVudExhbmd1YWdlXVxuICAgICAgICAgIDogZXh0cmFjdFRpbWVBbmRTdHJpbmc/LnRleHQgfHwgJycsXG4gICAgICAgIGljb246IGExMXlGb290cGF0aCA/ICd3aGVlbGNoYWlyLXNtYWxsJyA6IGBzYS0ke2V4dGVuZGVkTGFzdExlZz8ubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgfVxuICAgIDogbnVsbDtcbn1cblxuLyoqXG4gKiByZW5kZXJzIHRoZSBleHRlbmRlZCBleGl0L2VudGVyIGljb24gd2l0aCB0aGUgZHVyYXRpb25cbiAqL1xuZnVuY3Rpb24gcmVuZGVyVHJhbnNmZXJUaW1lKFxuICBkdXJhdGlvbjogbnVtYmVyIHwgc3RyaW5nLFxuICBpY29uOiBzdHJpbmcsXG4gIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nLFxuICBsYWJlbD86IHN0cmluZyxcbiAgdHlwZT86ICdkZXBhcnR1cmUnIHwgJ2Fycml2YWwnLFxuKTogVGVtcGxhdGVSZXN1bHQge1xuICByZXR1cm4gaHRtbGBcbiAgICA8c3BhbiBjbGFzcz1cInNiYi1wZWFybC1jaGFpbl9fdGltZS10cmFuc2ZlciBzYmItcGVhcmwtY2hhaW5fX3RpbWUtdHJhbnNmZXItLSR7aWNvbn0tJHt0eXBlfVwiPlxuICAgICAgPHNiYi1pY29uIG5hbWU9JHtpY29ufT48L3NiYi1pY29uPlxuICAgICAgPHRpbWUgZGF0ZXRpbWU9JHtkdXJhdGlvbiArICdNJ30+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPlxuICAgICAgICAgICR7IWxhYmVsICYmIHR5cGVcbiAgICAgICAgICAgID8gdHlwZSA9PT0gJ2RlcGFydHVyZSdcbiAgICAgICAgICAgICAgPyBpMThuV2Fsa2luZ0Rpc3RhbmNlRGVwYXJ0dXJlW2N1cnJlbnRMYW5ndWFnZV1cbiAgICAgICAgICAgICAgOiBpMThuV2Fsa2luZ0Rpc3RhbmNlQXJyaXZhbFtjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgJHtsYWJlbCA/IGh0bWxgPHNwYW4+JHtsYWJlbH08L3NwYW4+YCA6IG5vdGhpbmd9Jm5ic3A7XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgJHtkdXJhdGlvbn1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItcGVhcmwtY2hhaW5fX3RpbWUtd2Fsa3RpbWUtcHJpbWUtc3ltYm9sXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+Jzwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+bWluPC9zcGFuPlxuICAgICAgPC90aW1lPlxuICAgIDwvc3Bhbj5cbiAgYDtcbn1cblxuLyoqXG4gKiByZW5kZXJzIGEgd2Fsay10aW1lIGljb24gd2l0aCB0aGUgd2FsayBkdXJhdGlvblxuICovXG5mdW5jdGlvbiByZW5kZXJXYWxrVGltZShcbiAgZHVyYXRpb246IG51bWJlciB8IHN0cmluZyxcbiAgbGFiZWw6IHN0cmluZyxcbiAgdmFyaWFudDogJ2xlZnQnIHwgJ3JpZ2h0JyxcbiAgaWNvbjogc3RyaW5nLFxuKTogVGVtcGxhdGVSZXN1bHQge1xuICByZXR1cm4gaHRtbGBcbiAgICA8c3BhbiBjbGFzcz1cInNiYi1wZWFybC1jaGFpbl9fdGltZS13YWxrdGltZSBzYmItcGVhcmwtY2hhaW5fX3RpbWUtd2Fsa3RpbWUtLSR7aWNvbn0tJHt2YXJpYW50fVwiPlxuICAgICAgPHNiYi1pY29uIG5hbWU9JHtpY29ufT48L3NiYi1pY29uPlxuICAgICAgPHRpbWUgZGF0ZXRpbWU9JHtkdXJhdGlvbiArICdNJ30+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPiR7bGFiZWx9PC9zcGFuPlxuICAgICAgICAke2R1cmF0aW9ufVxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1wZWFybC1jaGFpbl9fdGltZS13YWxrdGltZS1wcmltZS1zeW1ib2xcIiBhcmlhLWhpZGRlbj1cInRydWVcIj4nPC9zcGFuPlxuICAgICAgPC90aW1lPlxuICAgIDwvc3Bhbj5cbiAgYDtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyByZW5kZXJEZXBhcnR1cmVUaW1lQXR0cmlidXRlOiBBIGZ1bmN0aW9uIHRoYXQgcmVuZGVycyB0aGUgZWxlbWVudCBmb3IgdGhlIGRlcGFydHVyZSB0aW1lIGF0dHJpYnV0ZS5cbiAqIEByZXR1cm5zIHJlbmRlckFycml2YWxUaW1lQXR0cmlidXRlOiBBIGZ1bmN0aW9uIHRoYXQgcmVuZGVycyB0aGUgZWxlbWVudCBmb3IgdGhlIGFycml2YWwgdGltZSBhdHRyaWJ1dGUuXG4gKiBAcmV0dXJucyBhcnJpdmFsVGltZUF0dHJpYnV0ZTogVGhlIGFjY2VzcyBhdHRyaWJ1dGUgZm9yIHRoZSBhcnJpdmFsIHRpbWUuXG4gKiBAcmV0dXJucyBkZXBhcnR1cmVUaW1lQXR0cmlidXRlOiBUaGUgYWNjZXNzIGF0dHJpYnV0ZSBmb3IgdGhlIGRlcGFydHVyZSB0aW1lLlxuICogQHBhcmFtIGxlZ3MgQW4gYXJyYXkgb2YgTGVnIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBqb3VybmV5IGxlZ3MuXG4gKiBAcGFyYW0gZGVwYXJ0dXJlV2FsayBUaGUgd2Fsa2luZyBkaXN0YW5jZSBpbiBtaW51dGVzIGZyb20gdGhlIGRlcGFydHVyZSBwb2ludCB0byB0aGUgZmlyc3QgbGVnLlxuICogQHBhcmFtIGFycml2YWxXYWxrIFRoZSB3YWxraW5nIGRpc3RhbmNlIGluIG1pbnV0ZXMgZnJvbSB0aGUgbGFzdCBsZWcgdG8gdGhlIGFycml2YWwgcG9pbnQuXG4gKiBAcGFyYW0gY3VycmVudExhbmd1YWdlIFRoZSBjdXJyZW50IGxhbmd1YWdlIGZvciBsb2NhbGl6YXRpb24uXG4gKiBAcGFyYW0gYTExeUZvb3RwYXRoIFdoZXRoZXIgdGhlIGExMXktaWNvbiBzaG91bGQgYmUgc2hvd24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXBhcnR1cmVBcnJpdmFsVGltZUF0dHJpYnV0ZShcbiAgbGVnczogTGVnW10sXG4gIGRlcGFydHVyZVdhbGs6IG51bWJlcixcbiAgYXJyaXZhbFdhbGs6IG51bWJlcixcbiAgY3VycmVudExhbmd1YWdlOiBzdHJpbmcsXG4gIGExMXlGb290cGF0aD86IGJvb2xlYW4sXG4pOiB7XG4gIHJlbmRlckRlcGFydHVyZVRpbWVBdHRyaWJ1dGU6ICgpID0+IFRlbXBsYXRlUmVzdWx0O1xuICByZW5kZXJBcnJpdmFsVGltZUF0dHJpYnV0ZTogKCkgPT4gVGVtcGxhdGVSZXN1bHQ7XG4gIGRlcGFydHVyZVRpbWVBdHRyaWJ1dGU6IElBY2Nlc3NBdHRyaWJ1dGUgfCBudWxsO1xuICBhcnJpdmFsVGltZUF0dHJpYnV0ZTogSUFjY2Vzc0F0dHJpYnV0ZSB8IG51bGw7XG59IHtcbiAgY29uc3QgY29ubmVjdGlvblJpZGVMZWcgPVxuICAgIGxlZ3MgJiZcbiAgICAobGVncy5maWx0ZXIoKGxlZykgPT4gaXNSaWRlTGVnKGxlZykgfHwgaXNDb25uZWN0aW9uTGVnKGxlZykpWzBdIGFzXG4gICAgICB8IFB0UmlkZUxlZ1xuICAgICAgfCBQdENvbm5lY3Rpb25MZWcpO1xuXG4gIGNvbnN0IGNvbm5lY3Rpb25MZWdOb3RpY2UgPSBbJ1lNJywgJ1lCJywgJ1knLCAnWVQnXTtcblxuICBjb25zdCBjb25uZWN0aW9uRmlyc3RMZWcgPSBnZXRQVENvbm5lY3Rpb25BdHRyaWJ1dGUoY29ubmVjdGlvblJpZGVMZWcsIGNvbm5lY3Rpb25MZWdOb3RpY2UpO1xuICBjb25zdCBleHRlbmRlZEZpcnN0TGVnID0gZ2V0Rmlyc3RFeHRlbmRlZExlZ0F0dHJpYnV0ZShcbiAgICBjb25uZWN0aW9uUmlkZUxlZyxcbiAgICBkZXBhcnR1cmVXYWxrLFxuICAgIGExMXlGb290cGF0aCxcbiAgICBjdXJyZW50TGFuZ3VhZ2UsXG4gICk7XG4gIGNvbnN0IGRlcGFydHVyZVdhbGtBdHRyaWJ1dGUgPSBkZXBhcnR1cmVXYWxrXG4gICAgPyB7XG4gICAgICAgIHRleHQ6IGkxOG5XYWxraW5nRGlzdGFuY2VEZXBhcnR1cmVbY3VycmVudExhbmd1YWdlXSxcbiAgICAgICAgZHVyYXRpb246IGRlcGFydHVyZVdhbGssXG4gICAgICAgIGljb246IGExMXlGb290cGF0aCA/ICd3aGVlbGNoYWlyLXNtYWxsJyA6ICd3YWxrLXNtYWxsJyxcbiAgICAgIH1cbiAgICA6IG51bGw7XG5cbiAgY29uc3QgZ2V0RGVwYXJ0dXJlVHlwZSA9ICgpOiBJQWNjZXNzQXR0cmlidXRlIHwgbnVsbCA9PiB7XG4gICAgaWYgKGNvbm5lY3Rpb25GaXJzdExlZykge1xuICAgICAgcmV0dXJuIGNvbm5lY3Rpb25GaXJzdExlZztcbiAgICB9IGVsc2UgaWYgKGRlcGFydHVyZVdhbGtBdHRyaWJ1dGUgJiYgIWV4dGVuZGVkRmlyc3RMZWcgJiYgIWNvbm5lY3Rpb25GaXJzdExlZykge1xuICAgICAgcmV0dXJuIGRlcGFydHVyZVdhbGtBdHRyaWJ1dGU7XG4gICAgfSBlbHNlIGlmIChleHRlbmRlZEZpcnN0TGVnKSB7XG4gICAgICByZXR1cm4gZXh0ZW5kZWRGaXJzdExlZztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIHJlbmRlckRlcGFydHVyZVRpbWVBdHRyaWJ1dGUoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgJHtjb25uZWN0aW9uRmlyc3RMZWdcbiAgICAgICAgPyByZW5kZXJXYWxrVGltZShcbiAgICAgICAgICAgIGNvbm5lY3Rpb25GaXJzdExlZy5kdXJhdGlvbixcbiAgICAgICAgICAgIGNvbm5lY3Rpb25GaXJzdExlZy50ZXh0LFxuICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgY29ubmVjdGlvbkZpcnN0TGVnLmljb24sXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAke2RlcGFydHVyZVdhbGtBdHRyaWJ1dGUgJiYgIWV4dGVuZGVkRmlyc3RMZWcgJiYgIWNvbm5lY3Rpb25GaXJzdExlZ1xuICAgICAgICA/IHJlbmRlcldhbGtUaW1lKFxuICAgICAgICAgICAgZGVwYXJ0dXJlV2Fsa0F0dHJpYnV0ZS5kdXJhdGlvbixcbiAgICAgICAgICAgIGRlcGFydHVyZVdhbGtBdHRyaWJ1dGUudGV4dCxcbiAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgIGRlcGFydHVyZVdhbGtBdHRyaWJ1dGUuaWNvbixcbiAgICAgICAgICApXG4gICAgICAgIDogbm90aGluZ31cbiAgICAgICR7ZXh0ZW5kZWRGaXJzdExlZ1xuICAgICAgICA/IGExMXlGb290cGF0aFxuICAgICAgICAgID8gcmVuZGVyV2Fsa1RpbWUoXG4gICAgICAgICAgICAgIGV4dGVuZGVkRmlyc3RMZWcuZHVyYXRpb24sXG4gICAgICAgICAgICAgIGV4dGVuZGVkRmlyc3RMZWcudGV4dCxcbiAgICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgICBleHRlbmRlZEZpcnN0TGVnLmljb24sXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiByZW5kZXJUcmFuc2ZlclRpbWUoXG4gICAgICAgICAgICAgIGV4dGVuZGVkRmlyc3RMZWcuZHVyYXRpb24sXG4gICAgICAgICAgICAgIGV4dGVuZGVkRmlyc3RMZWcuaWNvbixcbiAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgICBleHRlbmRlZEZpcnN0TGVnLnRleHQsXG4gICAgICAgICAgICAgICdkZXBhcnR1cmUnLFxuICAgICAgICAgICAgKVxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgYDtcbiAgfVxuXG4gIGNvbnN0IGxhc3RMZWcgPSBsZWdzICYmIGxlZ3NbbGVncy5sZW5ndGggLSAxXTtcbiAgY29uc3QgbGFzdENvbm5lY3Rpb25SaWRlTGVnID1cbiAgICAoaXNDb25uZWN0aW9uTGVnKGxhc3RMZWcpIHx8IGlzUmlkZUxlZyhsYXN0TGVnKSkgJiYgKGxhc3RMZWcgYXMgUHRDb25uZWN0aW9uTGVnIHwgUHRSaWRlTGVnKTtcblxuICBjb25zdCBjb25uZWN0aW9uTGFzdExlZyA9XG4gICAgbGFzdENvbm5lY3Rpb25SaWRlTGVnICYmIGdldFBUQ29ubmVjdGlvbkF0dHJpYnV0ZShsYXN0Q29ubmVjdGlvblJpZGVMZWcsIGNvbm5lY3Rpb25MZWdOb3RpY2UpO1xuICBjb25zdCBleHRlbmRlZExhc3RMZWcgPVxuICAgIGxhc3RDb25uZWN0aW9uUmlkZUxlZyAmJlxuICAgIGdldExhc3RFeHRlbmRlZExlZ0F0dHJpYnV0ZShsYXN0Q29ubmVjdGlvblJpZGVMZWcsIGFycml2YWxXYWxrLCBhMTF5Rm9vdHBhdGgsIGN1cnJlbnRMYW5ndWFnZSk7XG4gIGNvbnN0IGFycml2YWxXYWxrQXR0cmlidXRlID0gYXJyaXZhbFdhbGtcbiAgICA/IHtcbiAgICAgICAgdGV4dDogaTE4bldhbGtpbmdEaXN0YW5jZUFycml2YWxbY3VycmVudExhbmd1YWdlXSxcbiAgICAgICAgZHVyYXRpb246IGFycml2YWxXYWxrLFxuICAgICAgICBpY29uOiBhMTF5Rm9vdHBhdGggPyAnd2hlZWxjaGFpci1zbWFsbCcgOiAnd2Fsay1zbWFsbCcsXG4gICAgICB9XG4gICAgOiBudWxsO1xuXG4gIGNvbnN0IGdldEFycml2YWxUeXBlID0gKCk6IElBY2Nlc3NBdHRyaWJ1dGUgfCBudWxsID0+IHtcbiAgICBpZiAoY29ubmVjdGlvbkxhc3RMZWcpIHtcbiAgICAgIHJldHVybiBjb25uZWN0aW9uTGFzdExlZztcbiAgICB9IGVsc2UgaWYgKGFycml2YWxXYWxrQXR0cmlidXRlICYmICFleHRlbmRlZExhc3RMZWcgJiYgIWNvbm5lY3Rpb25MYXN0TGVnKSB7XG4gICAgICByZXR1cm4gYXJyaXZhbFdhbGtBdHRyaWJ1dGU7XG4gICAgfSBlbHNlIGlmIChleHRlbmRlZExhc3RMZWcpIHtcbiAgICAgIHJldHVybiBleHRlbmRlZExhc3RMZWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiByZW5kZXJBcnJpdmFsVGltZUF0dHJpYnV0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICAke2Nvbm5lY3Rpb25MYXN0TGVnXG4gICAgICAgID8gcmVuZGVyV2Fsa1RpbWUoXG4gICAgICAgICAgICBjb25uZWN0aW9uTGFzdExlZy5kdXJhdGlvbixcbiAgICAgICAgICAgIGNvbm5lY3Rpb25MYXN0TGVnLnRleHQsXG4gICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgY29ubmVjdGlvbkxhc3RMZWcuaWNvbixcbiAgICAgICAgICApXG4gICAgICAgIDogbm90aGluZ31cbiAgICAgICR7YXJyaXZhbFdhbGtBdHRyaWJ1dGUgJiYgIWV4dGVuZGVkTGFzdExlZyAmJiAhY29ubmVjdGlvbkxhc3RMZWdcbiAgICAgICAgPyByZW5kZXJXYWxrVGltZShcbiAgICAgICAgICAgIGFycml2YWxXYWxrQXR0cmlidXRlLmR1cmF0aW9uLFxuICAgICAgICAgICAgYXJyaXZhbFdhbGtBdHRyaWJ1dGUudGV4dCxcbiAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICBhcnJpdmFsV2Fsa0F0dHJpYnV0ZS5pY29uLFxuICAgICAgICAgIClcbiAgICAgICAgOiBub3RoaW5nfVxuICAgICAgJHtleHRlbmRlZExhc3RMZWdcbiAgICAgICAgPyBhMTF5Rm9vdHBhdGhcbiAgICAgICAgICA/IHJlbmRlcldhbGtUaW1lKFxuICAgICAgICAgICAgICBleHRlbmRlZExhc3RMZWcuZHVyYXRpb24sXG4gICAgICAgICAgICAgIGV4dGVuZGVkTGFzdExlZy50ZXh0LFxuICAgICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgICBleHRlbmRlZExhc3RMZWcuaWNvbixcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IHJlbmRlclRyYW5zZmVyVGltZShcbiAgICAgICAgICAgICAgZXh0ZW5kZWRMYXN0TGVnLmR1cmF0aW9uLFxuICAgICAgICAgICAgICBleHRlbmRlZExhc3RMZWcuaWNvbixcbiAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgICBleHRlbmRlZExhc3RMZWcudGV4dCxcbiAgICAgICAgICAgICAgJ2Fycml2YWwnLFxuICAgICAgICAgICAgKVxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgYDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcmVuZGVyRGVwYXJ0dXJlVGltZUF0dHJpYnV0ZSxcbiAgICByZW5kZXJBcnJpdmFsVGltZUF0dHJpYnV0ZSxcbiAgICBkZXBhcnR1cmVUaW1lQXR0cmlidXRlOiBnZXREZXBhcnR1cmVUeXBlKCksXG4gICAgYXJyaXZhbFRpbWVBdHRyaWJ1dGU6IGdldEFycml2YWxUeXBlKCksXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBNEJBLFNBQVMseUJBQ1AsS0FDQSxxQkFBNkI7Q0FFN0IsTUFBTSxxQkFBcUIsZ0JBQWdCLEdBQUcsSUFBSyxN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
@@ -0,0 +1,6 @@
1
+ /** @entrypoint */
2
+ export * from './core/datetime/date-helper.ts';
3
+ export * from './core/timetable/access-leg-helper.ts';
4
+ export * from './core/timetable/timetable-helper.ts';
5
+ export * from './core/timetable/timetable-properties.ts';
6
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/elements-experimental/core.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { n as removeTimezoneFromISOTimeString, t as durationToTime } from "./date-helper-BcTDWVeP.js";
2
+ import { extractTimeAndStringFromNoticeText, isConnectionLeg, isRideLeg } from "./core/timetable/timetable-helper.js";
3
+ import { getDepartureArrivalTimeAttribute } from "./core/timetable/access-leg-helper.js";
4
+ import "./core/timetable/timetable-properties.js";
5
+ export { durationToTime, extractTimeAndStringFromNoticeText, getDepartureArrivalTimeAttribute, isConnectionLeg, isRideLeg, removeTimezoneFromISOTimeString };
@@ -1,7 +1,7 @@
1
1
  import { a as millisecondsInMinute, i as millisecondsInHour, n as constructFrom, t as toDate } from "./toDate-CDWut5fS.js";
2
2
  import { n as differenceInCalendarDays, r as normalizeDates, t as isValid } from "./isValid-40Olgzo1.js";
3
3
  import { n as getRoundingMethod, r as addMinutes, t as differenceInMinutes } from "./differenceInMinutes-CxAbGYQ3.js";
4
- import { i18nDurationDay, i18nDurationHour, i18nDurationMinute } from "@sbb-esta/lyne-elements/core/i18n.js";
4
+ import { i18nDurationDay, i18nDurationHour, i18nDurationMinute } from "@sbb-esta/lyne-elements/core.js";
5
5
  //#region node_modules/date-fns/addDays.js
6
6
  /**
7
7
  * The {@link addDays} function options.
@@ -536,4 +536,4 @@ var durationToTime = (duration, currentLanguage) => {
536
536
  //#endregion
537
537
  export { removeTimezoneFromISOTimeString as n, durationToTime as t };
538
538
 
539
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1oZWxwZXItUWhXakFOYzMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZERheXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkTWlsbGlzZWNvbmRzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZEhvdXJzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2RpZmZlcmVuY2VJbkRheXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluSG91cnMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3ViRGF5cy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9wYXJzZUlTTy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zdWJIb3Vycy5qcyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvY29yZS9kYXRldGltZS9kYXRlLWhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBhZGREYXlzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgYWRkRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqICoqWW91IGRvbid0IG5lZWQgZGF0ZS1mbnNcXCoqKjpcbiAqXG4gKiBUZW1wb3JhbCBoYXMgYSBidWlsdC1pbiBgYWRkYCBtZXRob2Qgb24gYWxsIGl0cyBjbGFzc2VzOlxuICpcbiAqIC0gW2BUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5hZGQoKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1RlbXBvcmFsL0luc3RhbnQvYWRkKVxuICogLSBbYFRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUuYWRkKClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9UZW1wb3JhbC9QbGFpbkRhdGUvYWRkKVxuICogLSBbYFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUucHJvdG90eXBlLmFkZCgpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvVGVtcG9yYWwvUGxhaW5EYXRlVGltZS9hZGQpXG4gKiAtIFtgVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5hZGQoKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1RlbXBvcmFsL1BsYWluVGltZS9hZGQpXG4gKiAtIFtgVGVtcG9yYWwuUGxhaW5ZZWFyTW9udGgucHJvdG90eXBlLmFkZCgpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvVGVtcG9yYWwvUGxhaW5ZZWFyTW9udGgvYWRkKVxuICogLSBbYFRlbXBvcmFsLlpvbmVkRGF0ZVRpbWUucHJvdG90eXBlLmFkZCgpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvVGVtcG9yYWwvWm9uZWREYXRlVGltZS9hZGQpXG4gKlxuICogXFwqICoqTm90IHJlYWxseSoqLCBzZWU6IGh0dHBzOi8vZGF0ZS1mbnMub3JnL3lvdS1kb250LW5lZWQtZGF0ZS1mbnNcbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqIEB0eXBlUGFyYW0gUmVzdWx0RGF0ZSAtIFRoZSByZXN1bHQgYERhdGVgIHR5cGUsIGl0IGlzIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhlIGNvbnRleHQgZnVuY3Rpb24gaWYgaXQgaXMgcGFzc2VkLCBvciBpbmZlcnJlZCBmcm9tIHRoZSBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBkYXlzIHRvIGJlIGFkZGVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheXMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDEwIGRheXMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZERheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89PiBUaHUgU2VwIDExIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVXNpbmcgVGVtcG9yYWw6XG4gKiAvLyBBZGQgMTAgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oXCIyMDE0LTA5LTAxXCIpLmFkZCh7IGRheXM6IDEwIH0pLnRvU3RyaW5nKCk7XG4gKiAvLz0+IFwiMjAxNC0wOS0xMVwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREYXlzKGRhdGUsIGFtb3VudCwgb3B0aW9ucykge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlLCBvcHRpb25zPy5pbik7XG4gIGlmIChpc05hTihhbW91bnQpKSByZXR1cm4gY29uc3RydWN0RnJvbShvcHRpb25zPy5pbiB8fCBkYXRlLCBOYU4pO1xuXG4gIC8vIElmIDAgZGF5cywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgaWYgKCFhbW91bnQpIHJldHVybiBfZGF0ZTtcblxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSArIGFtb3VudCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGREYXlzO1xuIiwiaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20uanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgYWRkTWlsbGlzZWNvbmRzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgYWRkTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIGFkZGVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA3NTAgbWlsbGlzZWNvbmRzIHRvIDEwIEp1bHkgMjAxNCAxMjo0NTozMC4wMDA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNaWxsaXNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMzAsIDApLCA3NTApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjo0NTozMC43NTBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZE1pbGxpc2Vjb25kcyhkYXRlLCBhbW91bnQsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGNvbnN0cnVjdEZyb20ob3B0aW9ucz8uaW4gfHwgZGF0ZSwgK3RvRGF0ZShkYXRlKSArIGFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkTWlsbGlzZWNvbmRzO1xuIiwiaW1wb3J0IHsgYWRkTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vYWRkTWlsbGlzZWNvbmRzLmpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJbkhvdXIgfSBmcm9tIFwiLi9jb25zdGFudHMuanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGFkZEhvdXJzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgYWRkSG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBob3VycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBob3VycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqIEB0eXBlUGFyYW0gUmVzdWx0RGF0ZSAtIFRoZSByZXN1bHQgYERhdGVgIHR5cGUsIGl0IGlzIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhlIGNvbnRleHQgZnVuY3Rpb24gaWYgaXQgaXMgcGFzc2VkLCBvciBpbmZlcnJlZCBmcm9tIHRoZSBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBob3VycyB0byBiZSBhZGRlZFxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGhvdXJzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAyIGhvdXJzIHRvIDEwIEp1bHkgMjAxNCAyMzowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZEhvdXJzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAyMywgMCksIDIpXG4gKiAvLz0+IEZyaSBKdWwgMTEgMjAxNCAwMTowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkSG91cnMoZGF0ZSwgYW1vdW50LCBvcHRpb25zKSB7XG4gIHJldHVybiBhZGRNaWxsaXNlY29uZHMoZGF0ZSwgYW1vdW50ICogbWlsbGlzZWNvbmRzSW5Ib3VyLCBvcHRpb25zKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGRIb3VycztcbiIsImltcG9ydCB7IG5vcm1hbGl6ZURhdGVzIH0gZnJvbSBcIi4vX2xpYi9ub3JtYWxpemVEYXRlcy5qc1wiO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBkaWZmZXJlbmNlSW5EYXlzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBmdWxsIGRheXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBmdWxsIGRheSBwZXJpb2RzIGJldHdlZW4gdHdvIGRhdGVzLiBGcmFjdGlvbmFsIGRheXMgYXJlXG4gKiB0cnVuY2F0ZWQgdG93YXJkcyB6ZXJvLlxuICpcbiAqIE9uZSBcImZ1bGwgZGF5XCIgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gYSBsb2NhbCB0aW1lIGluIG9uZSBkYXkgdG8gdGhlIHNhbWVcbiAqIGxvY2FsIHRpbWUgb24gdGhlIG5leHQgb3IgcHJldmlvdXMgZGF5LiBBIGZ1bGwgZGF5IGNhbiBzb21ldGltZXMgYmUgbGVzcyB0aGFuXG4gKiBvciBtb3JlIHRoYW4gMjQgaG91cnMgaWYgYSBkYXlsaWdodCBzYXZpbmdzIGNoYW5nZSBoYXBwZW5zIGJldHdlZW4gdHdvIGRhdGVzLlxuICpcbiAqIFRvIGlnbm9yZSBEU1QgYW5kIG9ubHkgbWVhc3VyZSBleGFjdCAyNC1ob3VyIHBlcmlvZHMsIHVzZSB0aGlzIGluc3RlYWQ6XG4gKiBgTWF0aC50cnVuYyhkaWZmZXJlbmNlSW5Ib3VycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KS8yNCl8MGAuXG4gKlxuICogQHBhcmFtIGxhdGVyRGF0ZSAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZWFybGllckRhdGUgLSBUaGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGZ1bGwgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsIHRpbWV6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6MDA6MDAgYW5kIDIgSnVseSAyMDEyIDAwOjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMiwgNiwgMiwgMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCAwKVxuICogKVxuICogLy89PiAzNjVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxMSAyMzo1OTowMCBhbmQgMyBKdWx5IDIwMTEgMDA6MDE6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5EYXlzKFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAzLCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDU5KVxuICogKVxuICogLy89PiAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMSBNYXJjaCAyMDIwIDA6MDAgYW5kIDEgSnVuZSAyMDIwIDA6MDAgP1xuICogLy8gTm90ZTogYmVjYXVzZSBsb2NhbCB0aW1lIGlzIHVzZWQsIHRoZVxuICogLy8gcmVzdWx0IHdpbGwgYWx3YXlzIGJlIDkyIGRheXMsIGV2ZW4gaW5cbiAqIC8vIHRpbWUgem9uZXMgd2hlcmUgRFNUIHN0YXJ0cyBhbmQgdGhlXG4gKiAvLyBwZXJpb2QgaGFzIG9ubHkgOTIqMjQtMSBob3Vycy5cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMjAsIDUsIDEpLFxuICogICBuZXcgRGF0ZSgyMDIwLCAyLCAxKVxuICogKVxuICogLy89PiA5MlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluRGF5cyhsYXRlckRhdGUsIGVhcmxpZXJEYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IFtsYXRlckRhdGVfLCBlYXJsaWVyRGF0ZV9dID0gbm9ybWFsaXplRGF0ZXMoXG4gICAgb3B0aW9ucz8uaW4sXG4gICAgbGF0ZXJEYXRlLFxuICAgIGVhcmxpZXJEYXRlLFxuICApO1xuXG4gIGNvbnN0IHNpZ24gPSBjb21wYXJlTG9jYWxBc2MobGF0ZXJEYXRlXywgZWFybGllckRhdGVfKTtcbiAgY29uc3QgZGlmZmVyZW5jZSA9IE1hdGguYWJzKFxuICAgIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhsYXRlckRhdGVfLCBlYXJsaWVyRGF0ZV8pLFxuICApO1xuXG4gIGxhdGVyRGF0ZV8uc2V0RGF0ZShsYXRlckRhdGVfLmdldERhdGUoKSAtIHNpZ24gKiBkaWZmZXJlbmNlKTtcblxuICAvLyBNYXRoLmFicyhkaWZmIGluIGZ1bGwgZGF5cyAtIGRpZmYgaW4gY2FsZW5kYXIgZGF5cykgPT09IDEgaWYgbGFzdCBjYWxlbmRhciBkYXkgaXMgbm90IGZ1bGxcbiAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gIGNvbnN0IGlzTGFzdERheU5vdEZ1bGwgPSBOdW1iZXIoXG4gICAgY29tcGFyZUxvY2FsQXNjKGxhdGVyRGF0ZV8sIGVhcmxpZXJEYXRlXykgPT09IC1zaWduLFxuICApO1xuXG4gIGNvbnN0IHJlc3VsdCA9IHNpZ24gKiAoZGlmZmVyZW5jZSAtIGlzTGFzdERheU5vdEZ1bGwpO1xuICAvLyBQcmV2ZW50IG5lZ2F0aXZlIHplcm9cbiAgcmV0dXJuIHJlc3VsdCA9PT0gMCA/IDAgOiByZXN1bHQ7XG59XG5cbi8vIExpa2UgYGNvbXBhcmVBc2NgIGJ1dCB1c2VzIGxvY2FsIHRpbWUgbm90IFVUQywgd2hpY2ggaXMgbmVlZGVkXG4vLyBmb3IgYWNjdXJhdGUgZXF1YWxpdHkgY29tcGFyaXNvbnMgb2YgVVRDIHRpbWVzdGFtcHMgdGhhdCBlbmQgdXBcbi8vIGhhdmluZyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbiBpbiBsb2NhbCB0aW1lLCBlLmcuIG9uZSBob3VyIGJlZm9yZVxuLy8gRFNUIGVuZHMgdnMuIHRoZSBpbnN0YW50IHRoYXQgRFNUIGVuZHMuXG5mdW5jdGlvbiBjb21wYXJlTG9jYWxBc2MobGF0ZXJEYXRlLCBlYXJsaWVyRGF0ZSkge1xuICBjb25zdCBkaWZmID1cbiAgICBsYXRlckRhdGUuZ2V0RnVsbFllYXIoKSAtIGVhcmxpZXJEYXRlLmdldEZ1bGxZZWFyKCkgfHxcbiAgICBsYXRlckRhdGUuZ2V0TW9udGgoKSAtIGVhcmxpZXJEYXRlLmdldE1vbnRoKCkgfHxcbiAgICBsYXRlckRhdGUuZ2V0RGF0ZSgpIC0gZWFybGllckRhdGUuZ2V0RGF0ZSgpIHx8XG4gICAgbGF0ZXJEYXRlLmdldEhvdXJzKCkgLSBlYXJsaWVyRGF0ZS5nZXRIb3VycygpIHx8XG4gICAgbGF0ZXJEYXRlLmdldE1pbnV0ZXMoKSAtIGVhcmxpZXJEYXRlLmdldE1pbnV0ZXMoKSB8fFxuICAgIGxhdGVyRGF0ZS5nZXRTZWNvbmRzKCkgLSBlYXJsaWVyRGF0ZS5nZXRTZWNvbmRzKCkgfHxcbiAgICBsYXRlckRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLSBlYXJsaWVyRGF0ZS5nZXRNaWxsaXNlY29uZHMoKTtcblxuICBpZiAoZGlmZiA8IDApIHJldHVybiAtMTtcbiAgaWYgKGRpZmYgPiAwKSByZXR1cm4gMTtcblxuICAvLyBSZXR1cm4gMCBpZiBkaWZmIGlzIDA7IHJldHVybiBOYU4gaWYgZGlmZiBpcyBOYU5cbiAgcmV0dXJuIGRpZmY7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluRGF5cztcbiIsImltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4vX2xpYi9nZXRSb3VuZGluZ01ldGhvZC5qc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplRGF0ZXMgfSBmcm9tIFwiLi9fbGliL25vcm1hbGl6ZURhdGVzLmpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJbkhvdXIgfSBmcm9tIFwiLi9jb25zdGFudHMuanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGRpZmZlcmVuY2VJbkhvdXJzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluSG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGhvdXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgaG91cnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIGxhdGVyRGF0ZSAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZWFybGllckRhdGUgLSBUaGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBob3Vyc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBob3VycyBhcmUgYmV0d2VlbiAyIEp1bHkgMjAxNCAwNjo1MDowMCBhbmQgMiBKdWx5IDIwMTQgMTk6MDA6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5Ib3VycyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTksIDApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCA2LCA1MClcbiAqIClcbiAqIC8vPT4gMTJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkhvdXJzKGxhdGVyRGF0ZSwgZWFybGllckRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgW2xhdGVyRGF0ZV8sIGVhcmxpZXJEYXRlX10gPSBub3JtYWxpemVEYXRlcyhcbiAgICBvcHRpb25zPy5pbixcbiAgICBsYXRlckRhdGUsXG4gICAgZWFybGllckRhdGUsXG4gICk7XG4gIGNvbnN0IGRpZmYgPSAoK2xhdGVyRGF0ZV8gLSArZWFybGllckRhdGVfKSAvIG1pbGxpc2Vjb25kc0luSG91cjtcbiAgcmV0dXJuIGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnM/LnJvdW5kaW5nTWV0aG9kKShkaWZmKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5Ib3VycztcbiIsImltcG9ydCB7IGFkZERheXMgfSBmcm9tIFwiLi9hZGREYXlzLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzdWJEYXlzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgc3ViRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBzdWJ0cmFjdGVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheXMgc3VidHJhY3RlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAxMCBkYXlzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YkRheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89PiBGcmkgQXVnIDIyIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YkRheXMoZGF0ZSwgYW1vdW50LCBvcHRpb25zKSB7XG4gIHJldHVybiBhZGREYXlzKGRhdGUsIC1hbW91bnQsIG9wdGlvbnMpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN1YkRheXM7XG4iLCJpbXBvcnQge1xuICBtaWxsaXNlY29uZHNJbkhvdXIsXG4gIG1pbGxpc2Vjb25kc0luTWludXRlLFxufSBmcm9tIFwiLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLmpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUuanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIHBhcnNlSVNPfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgcGFyc2VJU09cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUGFyc2UgSVNPIHN0cmluZ1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUGFyc2UgdGhlIGdpdmVuIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQgYW5kIHJldHVybiBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEZ1bmN0aW9uIGFjY2VwdHMgY29tcGxldGUgSVNPIDg2MDEgZm9ybWF0cyBhcyB3ZWxsIGFzIHBhcnRpYWwgaW1wbGVtZW50YXRpb25zLlxuICogSVNPIDg2MDE6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDFcbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXNuJ3QgYSBzdHJpbmcsIHRoZSBmdW5jdGlvbiBjYW5ub3QgcGFyc2UgdGhlIHN0cmluZyBvclxuICogdGhlIHZhbHVlcyBhcmUgaW52YWxpZCwgaXQgcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHN0cmluZyAnMjAxNC0wMi0xMVQxMTozMDozMCcgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHBhcnNlSVNPKCcyMDE0LTAyLTExVDExOjMwOjMwJylcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgc3RyaW5nICcrMDIwMTQxMDEnIHRvIGRhdGUsXG4gKiAvLyBpZiB0aGUgYWRkaXRpb25hbCBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCBpcyAxOlxuICogY29uc3QgcmVzdWx0ID0gcGFyc2VJU08oJyswMjAxNDEwMScsIHsgYWRkaXRpb25hbERpZ2l0czogMSB9KVxuICogLy89PiBGcmkgQXByIDExIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSVNPKGFyZ3VtZW50LCBvcHRpb25zKSB7XG4gIGNvbnN0IGludmFsaWREYXRlID0gKCkgPT4gY29uc3RydWN0RnJvbShvcHRpb25zPy5pbiwgTmFOKTtcblxuICBjb25zdCBhZGRpdGlvbmFsRGlnaXRzID0gb3B0aW9ucz8uYWRkaXRpb25hbERpZ2l0cyA/PyAyO1xuICBjb25zdCBkYXRlU3RyaW5ncyA9IHNwbGl0RGF0ZVN0cmluZyhhcmd1bWVudCk7XG5cbiAgbGV0IGRhdGU7XG4gIGlmIChkYXRlU3RyaW5ncy5kYXRlKSB7XG4gICAgY29uc3QgcGFyc2VZZWFyUmVzdWx0ID0gcGFyc2VZZWFyKGRhdGVTdHJpbmdzLmRhdGUsIGFkZGl0aW9uYWxEaWdpdHMpO1xuICAgIGRhdGUgPSBwYXJzZURhdGUocGFyc2VZZWFyUmVzdWx0LnJlc3REYXRlU3RyaW5nLCBwYXJzZVllYXJSZXN1bHQueWVhcik7XG4gIH1cblxuICBpZiAoIWRhdGUgfHwgaXNOYU4oK2RhdGUpKSByZXR1cm4gaW52YWxpZERhdGUoKTtcblxuICBjb25zdCB0aW1lc3RhbXAgPSArZGF0ZTtcbiAgbGV0IHRpbWUgPSAwO1xuICBsZXQgb2Zmc2V0O1xuXG4gIGlmIChkYXRlU3RyaW5ncy50aW1lKSB7XG4gICAgdGltZSA9IHBhcnNlVGltZShkYXRlU3RyaW5ncy50aW1lKTtcbiAgICBpZiAoaXNOYU4odGltZSkpIHJldHVybiBpbnZhbGlkRGF0ZSgpO1xuICB9XG5cbiAgaWYgKGRhdGVTdHJpbmdzLnRpbWV6b25lKSB7XG4gICAgb2Zmc2V0ID0gcGFyc2VUaW1lem9uZShkYXRlU3RyaW5ncy50aW1lem9uZSk7XG4gICAgaWYgKGlzTmFOKG9mZnNldCkpIHJldHVybiBpbnZhbGlkRGF0ZSgpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHRtcERhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXAgKyB0aW1lKTtcbiAgICBjb25zdCByZXN1bHQgPSB0b0RhdGUoMCwgb3B0aW9ucz8uaW4pO1xuICAgIHJlc3VsdC5zZXRGdWxsWWVhcihcbiAgICAgIHRtcERhdGUuZ2V0VVRDRnVsbFllYXIoKSxcbiAgICAgIHRtcERhdGUuZ2V0VVRDTW9udGgoKSxcbiAgICAgIHRtcERhdGUuZ2V0VVRDRGF0ZSgpLFxuICAgICk7XG4gICAgcmVzdWx0LnNldEhvdXJzKFxuICAgICAgdG1wRGF0ZS5nZXRVVENIb3VycygpLFxuICAgICAgdG1wRGF0ZS5nZXRVVENNaW51dGVzKCksXG4gICAgICB0bXBEYXRlLmdldFVUQ1NlY29uZHMoKSxcbiAgICAgIHRtcERhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCksXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmV0dXJuIHRvRGF0ZSh0aW1lc3RhbXAgKyB0aW1lICsgb2Zmc2V0LCBvcHRpb25zPy5pbik7XG59XG5cbmNvbnN0IHBhdHRlcm5zID0ge1xuICBkYXRlVGltZURlbGltaXRlcjogL1tUIF0vLFxuICB0aW1lWm9uZURlbGltaXRlcjogL1taIF0vaSxcbiAgdGltZXpvbmU6IC8oW1orLV0uKikkLyxcbn07XG5cbmNvbnN0IGRhdGVSZWdleCA9XG4gIC9eLT8oPzooXFxkezN9KXwoXFxkezJ9KSg/Oi0/KFxcZHsyfSkpP3xXKFxcZHsyfSkoPzotPyhcXGR7MX0pKT98KSQvO1xuY29uc3QgdGltZVJlZ2V4ID1cbiAgL14oXFxkezJ9KD86Wy4sXVxcZCopPykoPzo6PyhcXGR7Mn0oPzpbLixdXFxkKik/KSk/KD86Oj8oXFxkezJ9KD86Wy4sXVxcZCopPykpPyQvO1xuY29uc3QgdGltZXpvbmVSZWdleCA9IC9eKFsrLV0pKFxcZHsyfSkoPzo6PyhcXGR7Mn0pKT8kLztcblxuZnVuY3Rpb24gc3BsaXREYXRlU3RyaW5nKGRhdGVTdHJpbmcpIHtcbiAgY29uc3QgZGF0ZVN0cmluZ3MgPSB7fTtcbiAgY29uc3QgYXJyYXkgPSBkYXRlU3RyaW5nLnNwbGl0KHBhdHRlcm5zLmRhdGVUaW1lRGVsaW1pdGVyKTtcbiAgbGV0IHRpbWVTdHJpbmc7XG5cbiAgLy8gVGhlIHJlZ2V4IG1hdGNoIHNob3VsZCBvbmx5IHJldHVybiBhdCBtYXhpbXVtIHR3byBhcnJheSBlbGVtZW50cy5cbiAgLy8gW2RhdGVdLCBbdGltZV0sIG9yIFtkYXRlLCB0aW1lXS5cbiAgaWYgKGFycmF5Lmxlbmd0aCA+IDIpIHtcbiAgICByZXR1cm4gZGF0ZVN0cmluZ3M7XG4gIH1cblxuICBpZiAoLzovLnRlc3QoYXJyYXlbMF0pKSB7XG4gICAgdGltZVN0cmluZyA9IGFycmF5WzBdO1xuICB9IGVsc2Uge1xuICAgIGRhdGVTdHJpbmdzLmRhdGUgPSBhcnJheVswXTtcbiAgICB0aW1lU3RyaW5nID0gYXJyYXlbMV07XG4gICAgaWYgKHBhdHRlcm5zLnRpbWVab25lRGVsaW1pdGVyLnRlc3QoZGF0ZVN0cmluZ3MuZGF0ZSkpIHtcbiAgICAgIGRhdGVTdHJpbmdzLmRhdGUgPSBkYXRlU3RyaW5nLnNwbGl0KHBhdHRlcm5zLnRpbWVab25lRGVsaW1pdGVyKVswXTtcbiAgICAgIHRpbWVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cihcbiAgICAgICAgZGF0ZVN0cmluZ3MuZGF0ZS5sZW5ndGgsXG4gICAgICAgIGRhdGVTdHJpbmcubGVuZ3RoLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAodGltZVN0cmluZykge1xuICAgIGNvbnN0IHRva2VuID0gcGF0dGVybnMudGltZXpvbmUuZXhlYyh0aW1lU3RyaW5nKTtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIGRhdGVTdHJpbmdzLnRpbWUgPSB0aW1lU3RyaW5nLnJlcGxhY2UodG9rZW5bMV0sIFwiXCIpO1xuICAgICAgZGF0ZVN0cmluZ3MudGltZXpvbmUgPSB0b2tlblsxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZVN0cmluZ3MudGltZSA9IHRpbWVTdHJpbmc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRhdGVTdHJpbmdzO1xufVxuXG5mdW5jdGlvbiBwYXJzZVllYXIoZGF0ZVN0cmluZywgYWRkaXRpb25hbERpZ2l0cykge1xuICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoXG4gICAgXCJeKD86KFxcXFxkezR9fFsrLV1cXFxcZHtcIiArXG4gICAgICAoNCArIGFkZGl0aW9uYWxEaWdpdHMpICtcbiAgICAgIFwifSl8KFxcXFxkezJ9fFsrLV1cXFxcZHtcIiArXG4gICAgICAoMiArIGFkZGl0aW9uYWxEaWdpdHMpICtcbiAgICAgIFwifSkkKVwiLFxuICApO1xuXG4gIGNvbnN0IGNhcHR1cmVzID0gZGF0ZVN0cmluZy5tYXRjaChyZWdleCk7XG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB5ZWFyXG4gIGlmICghY2FwdHVyZXMpIHJldHVybiB7IHllYXI6IE5hTiwgcmVzdERhdGVTdHJpbmc6IFwiXCIgfTtcblxuICBjb25zdCB5ZWFyID0gY2FwdHVyZXNbMV0gPyBwYXJzZUludChjYXB0dXJlc1sxXSkgOiBudWxsO1xuICBjb25zdCBjZW50dXJ5ID0gY2FwdHVyZXNbMl0gPyBwYXJzZUludChjYXB0dXJlc1syXSkgOiBudWxsO1xuXG4gIC8vIGVpdGhlciB5ZWFyIG9yIGNlbnR1cnkgaXMgbnVsbCwgbm90IGJvdGhcbiAgcmV0dXJuIHtcbiAgICB5ZWFyOiBjZW50dXJ5ID09PSBudWxsID8geWVhciA6IGNlbnR1cnkgKiAxMDAsXG4gICAgcmVzdERhdGVTdHJpbmc6IGRhdGVTdHJpbmcuc2xpY2UoKGNhcHR1cmVzWzFdIHx8IGNhcHR1cmVzWzJdKS5sZW5ndGgpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBwYXJzZURhdGUoZGF0ZVN0cmluZywgeWVhcikge1xuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgeWVhclxuICBpZiAoeWVhciA9PT0gbnVsbCkgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG5cbiAgY29uc3QgY2FwdHVyZXMgPSBkYXRlU3RyaW5nLm1hdGNoKGRhdGVSZWdleCk7XG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCBzdHJpbmdcbiAgaWYgKCFjYXB0dXJlcykgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG5cbiAgY29uc3QgaXNXZWVrRGF0ZSA9ICEhY2FwdHVyZXNbNF07XG4gIGNvbnN0IGRheU9mWWVhciA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbMV0pO1xuICBjb25zdCBtb250aCA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbMl0pIC0gMTtcbiAgY29uc3QgZGF5ID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1szXSk7XG4gIGNvbnN0IHdlZWsgPSBwYXJzZURhdGVVbml0KGNhcHR1cmVzWzRdKTtcbiAgY29uc3QgZGF5T2ZXZWVrID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1s1XSkgLSAxO1xuXG4gIGlmIChpc1dlZWtEYXRlKSB7XG4gICAgaWYgKCF2YWxpZGF0ZVdlZWtEYXRlKHllYXIsIHdlZWssIGRheU9mV2VlaykpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgIH1cbiAgICByZXR1cm4gZGF5T2ZJU09XZWVrWWVhcih5ZWFyLCB3ZWVrLCBkYXlPZldlZWspO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgICBpZiAoXG4gICAgICAhdmFsaWRhdGVEYXRlKHllYXIsIG1vbnRoLCBkYXkpIHx8XG4gICAgICAhdmFsaWRhdGVEYXlPZlllYXJEYXRlKHllYXIsIGRheU9mWWVhcilcbiAgICApIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgIH1cbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIG1vbnRoLCBNYXRoLm1heChkYXlPZlllYXIsIGRheSkpO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlRGF0ZVVuaXQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID8gcGFyc2VJbnQodmFsdWUpIDogMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUaW1lKHRpbWVTdHJpbmcpIHtcbiAgY29uc3QgY2FwdHVyZXMgPSB0aW1lU3RyaW5nLm1hdGNoKHRpbWVSZWdleCk7XG4gIGlmICghY2FwdHVyZXMpIHJldHVybiBOYU47IC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB0aW1lXG5cbiAgY29uc3QgaG91cnMgPSBwYXJzZVRpbWVVbml0KGNhcHR1cmVzWzFdKTtcbiAgY29uc3QgbWludXRlcyA9IHBhcnNlVGltZVVuaXQoY2FwdHVyZXNbMl0pO1xuICBjb25zdCBzZWNvbmRzID0gcGFyc2VUaW1lVW5pdChjYXB0dXJlc1szXSk7XG5cbiAgaWYgKCF2YWxpZGF0ZVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgaG91cnMgKiBtaWxsaXNlY29uZHNJbkhvdXIgKyBtaW51dGVzICogbWlsbGlzZWNvbmRzSW5NaW51dGUgKyBzZWNvbmRzICogMTAwMFxuICApO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRpbWVVbml0KHZhbHVlKSB7XG4gIHJldHVybiAodmFsdWUgJiYgcGFyc2VGbG9hdCh2YWx1ZS5yZXBsYWNlKFwiLFwiLCBcIi5cIikpKSB8fCAwO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRpbWV6b25lKHRpbWV6b25lU3RyaW5nKSB7XG4gIGlmICh0aW1lem9uZVN0cmluZyA9PT0gXCJaXCIpIHJldHVybiAwO1xuXG4gIGNvbnN0IGNhcHR1cmVzID0gdGltZXpvbmVTdHJpbmcubWF0Y2godGltZXpvbmVSZWdleCk7XG4gIGlmICghY2FwdHVyZXMpIHJldHVybiAwO1xuXG4gIGNvbnN0IHNpZ24gPSBjYXB0dXJlc1sxXSA9PT0gXCIrXCIgPyAtMSA6IDE7XG4gIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQoY2FwdHVyZXNbMl0pO1xuICBjb25zdCBtaW51dGVzID0gKGNhcHR1cmVzWzNdICYmIHBhcnNlSW50KGNhcHR1cmVzWzNdKSkgfHwgMDtcblxuICBpZiAoIXZhbGlkYXRlVGltZXpvbmUoaG91cnMsIG1pbnV0ZXMpKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIHJldHVybiBzaWduICogKGhvdXJzICogbWlsbGlzZWNvbmRzSW5Ib3VyICsgbWludXRlcyAqIG1pbGxpc2Vjb25kc0luTWludXRlKTtcbn1cblxuZnVuY3Rpb24gZGF5T2ZJU09XZWVrWWVhcihpc29XZWVrWWVhciwgd2VlaywgZGF5KSB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgZGF0ZS5zZXRVVENGdWxsWWVhcihpc29XZWVrWWVhciwgMCwgNCk7XG4gIGNvbnN0IGZvdXJ0aE9mSmFudWFyeURheSA9IGRhdGUuZ2V0VVRDRGF5KCkgfHwgNztcbiAgY29uc3QgZGlmZiA9ICh3ZWVrIC0gMSkgKiA3ICsgZGF5ICsgMSAtIGZvdXJ0aE9mSmFudWFyeURheTtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufVxuXG4vLyBWYWxpZGF0aW9uIGZ1bmN0aW9uc1xuXG4vLyBGZWJydWFyeSBpcyBudWxsIHRvIGhhbmRsZSB0aGUgbGVhcCB5ZWFyICh1c2luZyB8fClcbmNvbnN0IGRheXNJbk1vbnRocyA9IFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xuXG5mdW5jdGlvbiBpc0xlYXBZZWFySW5kZXgoeWVhcikge1xuICByZXR1cm4geWVhciAlIDQwMCA9PT0gMCB8fCAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSkge1xuICByZXR1cm4gKFxuICAgIG1vbnRoID49IDAgJiZcbiAgICBtb250aCA8PSAxMSAmJlxuICAgIGRhdGUgPj0gMSAmJlxuICAgIGRhdGUgPD0gKGRheXNJbk1vbnRoc1ttb250aF0gfHwgKGlzTGVhcFllYXJJbmRleCh5ZWFyKSA/IDI5IDogMjgpKVxuICApO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURheU9mWWVhckRhdGUoeWVhciwgZGF5T2ZZZWFyKSB7XG4gIHJldHVybiBkYXlPZlllYXIgPj0gMSAmJiBkYXlPZlllYXIgPD0gKGlzTGVhcFllYXJJbmRleCh5ZWFyKSA/IDM2NiA6IDM2NSk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2Vla0RhdGUoX3llYXIsIHdlZWssIGRheSkge1xuICByZXR1cm4gd2VlayA+PSAxICYmIHdlZWsgPD0gNTMgJiYgZGF5ID49IDAgJiYgZGF5IDw9IDY7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVGltZShob3VycywgbWludXRlcywgc2Vjb25kcykge1xuICBpZiAoaG91cnMgPT09IDI0KSB7XG4gICAgcmV0dXJuIG1pbnV0ZXMgPT09IDAgJiYgc2Vjb25kcyA9PT0gMDtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgc2Vjb25kcyA+PSAwICYmXG4gICAgc2Vjb25kcyA8IDYwICYmXG4gICAgbWludXRlcyA+PSAwICYmXG4gICAgbWludXRlcyA8IDYwICYmXG4gICAgaG91cnMgPj0gMCAmJlxuICAgIGhvdXJzIDwgMjVcbiAgKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVUaW1lem9uZShfaG91cnMsIG1pbnV0ZXMpIHtcbiAgcmV0dXJuIG1pbnV0ZXMgPj0gMCAmJiBtaW51dGVzIDw9IDU5O1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHBhcnNlSVNPO1xuIiwiaW1wb3J0IHsgYWRkSG91cnMgfSBmcm9tIFwiLi9hZGRIb3Vycy5qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgc3ViSG91cnN9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBzdWJIb3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgaG91cnMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgaG91cnMgdG8gYmUgc3VidHJhY3RlZC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgaG91cnMgc3VidHJhY3RlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAyIGhvdXJzIGZyb20gMTEgSnVseSAyMDE0IDAxOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3ViSG91cnMobmV3IERhdGUoMjAxNCwgNiwgMTEsIDEsIDApLCAyKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMjM6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YkhvdXJzKGRhdGUsIGFtb3VudCwgb3B0aW9ucykge1xuICByZXR1cm4gYWRkSG91cnMoZGF0ZSwgLWFtb3VudCwgb3B0aW9ucyk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3ViSG91cnM7XG4iLCJpbXBvcnQge1xuICBpMThuRHVyYXRpb25Ib3VyLFxuICBpMThuRHVyYXRpb25NaW51dGUsXG4gIGkxOG5EdXJhdGlvbkRheSxcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9pMThuLmpzJztcbmltcG9ydCB7XG4gIGlzVmFsaWQsXG4gIHBhcnNlSVNPLFxuICBkaWZmZXJlbmNlSW5EYXlzLFxuICBkaWZmZXJlbmNlSW5Ib3VycyxcbiAgZGlmZmVyZW5jZUluTWludXRlcyxcbiAgYWRkTWludXRlcyxcbiAgc3ViSG91cnMsXG4gIHN1YkRheXMsXG59IGZyb20gJ2RhdGUtZm5zJztcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIG9mZnNldCBvZiBhIElTTyBkYXRlIHN0cmluZy4gVGhpcyBuZWVkcyB0byBiZSBkb25lIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvZmZzZXQgaXMgaWdub3JlZC5cbiAqIElmIGl0IGlzIG5vdCByZW1vdmVkIHRoZSB0aW1lIHdvdWxkIGJlIGNvbnZlcnRlZCB0byB0aGUgYnJvd3NlcnMgbG9jYWwgdGltZS5cbiAqIEV4YW1wbGU6IFwiMjAyMi0wOC0yOVQwOTozMDowMCswMzowMFwiIHdvdWxkIGJlIGNoYW5nZWQgdG8gXCIyMDIyLTA4LTI5VDA4OjMwOjAwKzAyOjAwXCIgLS0+IG5vdCB0aGUgZGVzaXJlZCBvdXRjb21lLCBhcyB3ZSB3YW50IHRvIHVzZSB0aGUgdGltZSBpbiB0aGUgdGltZXpvbmUgYW5kIG5vdCB0aGUgbG9jYWwgdGltZS5cbiAqXG4gKiBBZnRlciB0aGUgb2Zmc2V0IGlzIHJlbW92ZWQgYSBuZXcgZGF0ZSBpcyBjcmVhdGVkIGluIHRoZSBicm93c2VycyBsb2NhbCB0aW1lLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdGltZSBvZiB0aGUgSVNPIGRhdGUgc3RyaW5nIGlzIGRpc3BsYXllZCBhbmQgbm90IGEgY29udmVydGVkIHRpbWUuXG4gKiBFeGFtcGxlOiBcIjIwMjItMDgtMjlUMDk6MzA6MDArMDM6MDBcIiB3b3VsZCBiZSBjaGFuZ2VkIHRvIFwiMjAyMi0wOC0yOVQwOTozMDowMCswMjowMFwiIC0tPiBkZXNpcmVkIG91dGNvbWVcbiAqIEF0dGVudGlvbjogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoZSBjb3JyZWN0IHRpbWUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLiBJdCBpcyBhIHdvcmthcm91bmQgdG8gbWFrZSBzdXJlLCB0aGF0IHRoZSBnaXZlbiB0aW1lIGlzIGRpc3BsYXllZCB3aXRob3V0IGJlaW5nIGNvbnZlcnRlZC5cbiAqXG4gKiBPZmZzZXQ6IERpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdGltZXpvbmUgYW5kIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lLlxuICpcbiAqIEBwYXJhbSBpc29UaW1lIC0gdGhlIGlzbyB0aW1lIHdpdGggdGhlIHRpbWV6b25lIG9mZnNldFxuICogQHJldHVybnMgYSBuZXcgZGF0ZSB3aXRoIHRoZSBsb2NhbCB0aW1lem9uZSB3aXRoIHRoZSBsb2NhbCBvZmZzZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcoaXNvVGltZT86IHN0cmluZyk6IERhdGUgfCB1bmRlZmluZWQge1xuICBpZiAoIWlzb1RpbWUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHBhcnNlZERhdGUgPSBwYXJzZUlTTyhpc29UaW1lKTtcblxuICBpZiAoIWlzVmFsaWQocGFyc2VkRGF0ZSkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKGlzb1RpbWUuaW5jbHVkZXMoJ1onKSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShpc29UaW1lLnJlcGxhY2UoJ1onLCAnJykpO1xuICB9XG5cbiAgaWYgKGlzb1RpbWUuaW5jbHVkZXMoJ1QnKSkge1xuICAgIGNvbnN0IGRhdGVUaW1lID0gaXNvVGltZS5zcGxpdCgnVCcpO1xuXG4gICAgaWYgKGRhdGVUaW1lWzFdICYmIChkYXRlVGltZVsxXS5pbmNsdWRlcygnKycpIHx8IGRhdGVUaW1lWzFdLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoYCR7ZGF0ZVRpbWVbMF19VCR7ZGF0ZVRpbWVbMV0uc3BsaXQoL1srLV0vKVswXX1gKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKGlzb1RpbWUpO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY29udmVydHMgYSBkdXJhdGlvbiBudW1iZXIgdG8gZGF0ZSBzdHJpbmcgd2l0aCBzcGVjaWZpYyBmb3JtYXRcbiAqXG4gKiBAcGFyYW0gZHVyYXRpb24gLSBkdXJhdGlvbiBpbiBtaW51dGVzXG4gKiBAcGFyYW0gY3VycmVudExhbmd1YWdlIC0gY3VycmVudExhbmd1YWdlXG4gKiBAcmV0dXJucyBhbiBPYmplY3Qgd2l0aCB0d28gc3RyaW5ncyBpbiB0aGUgZm9ybWF0IFwiZGQgaGggbW1cIiAoc2hvcnQpIGFuIFwieCBEYXkocykgeCBIb3VyKHMpIHggTWludXRlKHMpIChsb25nKVwiXG4gKiAqL1xuXG5leHBvcnQgY29uc3QgZHVyYXRpb25Ub1RpbWUgPSAoXG4gIGR1cmF0aW9uOiBudW1iZXIsXG4gIGN1cnJlbnRMYW5ndWFnZT86IHN0cmluZyxcbik6IHsgc2hvcnQ6IHN0cmluZzsgbG9uZzogc3RyaW5nIH0gPT4ge1xuICBjb25zdCBzaG9ydCA9IFtdO1xuICBjb25zdCBsb25nID0gW107XG5cbiAgY29uc3Qgbm93ID0gMDtcbiAgbGV0IGZ1dHVyZSA9IGFkZE1pbnV0ZXMobm93LCBkdXJhdGlvbik7XG5cbiAgY29uc3QgZGF5cyA9IGRpZmZlcmVuY2VJbkRheXMoZnV0dXJlLCBub3cpO1xuICBpZiAoZGF5cyA+IDApIHtcbiAgICBzaG9ydC5wdXNoKGAke2RheXN9IGRgKTtcbiAgICBpZiAoY3VycmVudExhbmd1YWdlKSB7XG4gICAgICBsb25nLnB1c2goXG4gICAgICAgIGAke2RheXN9ICR7XG4gICAgICAgICAgZGF5cyA+IDFcbiAgICAgICAgICAgID8gaTE4bkR1cmF0aW9uRGF5Lm11bHRpcGxlLmxvbmdbY3VycmVudExhbmd1YWdlXVxuICAgICAgICAgICAgOiBpMThuRHVyYXRpb25EYXkuc2luZ2xlLmxvbmdbY3VycmVudExhbmd1YWdlXVxuICAgICAgICB9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1dHVyZSA9IHN1YkRheXMoZnV0dXJlLCBkYXlzKTtcbiAgfVxuXG4gIGNvbnN0IGhvdXJzID0gZGlmZmVyZW5jZUluSG91cnMoZnV0dXJlLCBub3cpO1xuICBpZiAoaG91cnMgPiAwKSB7XG4gICAgc2hvcnQucHVzaChgJHtob3Vyc30gaGApO1xuICAgIGlmIChjdXJyZW50TGFuZ3VhZ2UpIHtcbiAgICAgIGxvbmcucHVzaChcbiAgICAgICAgYCR7aG91cnN9ICR7XG4gICAgICAgICAgaG91cnMgPiAxXG4gICAgICAgICAgICA/IGkxOG5EdXJhdGlvbkhvdXIubXVsdGlwbGUubG9uZ1tjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgICAgICA6IGkxOG5EdXJhdGlvbkhvdXIuc2luZ2xlLmxvbmdbY3VycmVudExhbmd1YWdlXVxuICAgICAgICB9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1dHVyZSA9IHN1YkhvdXJzKGZ1dHVyZSwgaG91cnMpO1xuICB9XG5cbiAgY29uc3QgbWludXRlcyA9IGRpZmZlcmVuY2VJbk1pbnV0ZXMoZnV0dXJlLCBub3cpO1xuICBpZiAobWludXRlcyA+IDApIHtcbiAgICBzaG9ydC5wdXNoKGAke21pbnV0ZXN9IG1pbmApO1xuICAgIGlmIChjdXJyZW50TGFuZ3VhZ2UpIHtcbiAgICAgIGxvbmcucHVzaChcbiAgICAgICAgYCR7bWludXRlc30gJHtcbiAgICAgICAgICBtaW51dGVzID4gMVxuICAgICAgICAgICAgPyBpMThuRHVyYXRpb25NaW51dGUubXVsdGlwbGUubG9uZ1tjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgICAgICA6IGkxOG5EdXJhdGlvbk1pbnV0ZS5zaW5nbGUubG9uZ1tjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgIH1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNob3J0OiBzaG9ydC5qb2luKCcgJyksXG4gICAgbG9uZzogbG9uZy5qb2luKCcgJyksXG4gIH07XG59O1xuIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswLDEsMiwzLDQsNSw2LDddLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7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
539
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1oZWxwZXItQmNURFdWZVAuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZERheXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkTWlsbGlzZWNvbmRzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZEhvdXJzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2RpZmZlcmVuY2VJbkRheXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluSG91cnMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3ViRGF5cy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9wYXJzZUlTTy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zdWJIb3Vycy5qcyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvY29yZS9kYXRldGltZS9kYXRlLWhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBhZGREYXlzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgYWRkRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqICoqWW91IGRvbid0IG5lZWQgZGF0ZS1mbnNcXCoqKjpcbiAqXG4gKiBUZW1wb3JhbCBoYXMgYSBidWlsdC1pbiBgYWRkYCBtZXRob2Qgb24gYWxsIGl0cyBjbGFzc2VzOlxuICpcbiAqIC0gW2BUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5hZGQoKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1RlbXBvcmFsL0luc3RhbnQvYWRkKVxuICogLSBbYFRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUuYWRkKClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9UZW1wb3JhbC9QbGFpbkRhdGUvYWRkKVxuICogLSBbYFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUucHJvdG90eXBlLmFkZCgpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvVGVtcG9yYWwvUGxhaW5EYXRlVGltZS9hZGQpXG4gKiAtIFtgVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5hZGQoKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1RlbXBvcmFsL1BsYWluVGltZS9hZGQpXG4gKiAtIFtgVGVtcG9yYWwuUGxhaW5ZZWFyTW9udGgucHJvdG90eXBlLmFkZCgpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvVGVtcG9yYWwvUGxhaW5ZZWFyTW9udGgvYWRkKVxuICogLSBbYFRlbXBvcmFsLlpvbmVkRGF0ZVRpbWUucHJvdG90eXBlLmFkZCgpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvVGVtcG9yYWwvWm9uZWREYXRlVGltZS9hZGQpXG4gKlxuICogXFwqICoqTm90IHJlYWxseSoqLCBzZWU6IGh0dHBzOi8vZGF0ZS1mbnMub3JnL3lvdS1kb250LW5lZWQtZGF0ZS1mbnNcbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqIEB0eXBlUGFyYW0gUmVzdWx0RGF0ZSAtIFRoZSByZXN1bHQgYERhdGVgIHR5cGUsIGl0IGlzIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhlIGNvbnRleHQgZnVuY3Rpb24gaWYgaXQgaXMgcGFzc2VkLCBvciBpbmZlcnJlZCBmcm9tIHRoZSBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBkYXlzIHRvIGJlIGFkZGVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheXMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDEwIGRheXMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZERheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89PiBUaHUgU2VwIDExIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVXNpbmcgVGVtcG9yYWw6XG4gKiAvLyBBZGQgMTAgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oXCIyMDE0LTA5LTAxXCIpLmFkZCh7IGRheXM6IDEwIH0pLnRvU3RyaW5nKCk7XG4gKiAvLz0+IFwiMjAxNC0wOS0xMVwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREYXlzKGRhdGUsIGFtb3VudCwgb3B0aW9ucykge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlLCBvcHRpb25zPy5pbik7XG4gIGlmIChpc05hTihhbW91bnQpKSByZXR1cm4gY29uc3RydWN0RnJvbShvcHRpb25zPy5pbiB8fCBkYXRlLCBOYU4pO1xuXG4gIC8vIElmIDAgZGF5cywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgaWYgKCFhbW91bnQpIHJldHVybiBfZGF0ZTtcblxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSArIGFtb3VudCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGREYXlzO1xuIiwiaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20uanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgYWRkTWlsbGlzZWNvbmRzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgYWRkTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIGFkZGVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA3NTAgbWlsbGlzZWNvbmRzIHRvIDEwIEp1bHkgMjAxNCAxMjo0NTozMC4wMDA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNaWxsaXNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMzAsIDApLCA3NTApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjo0NTozMC43NTBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZE1pbGxpc2Vjb25kcyhkYXRlLCBhbW91bnQsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGNvbnN0cnVjdEZyb20ob3B0aW9ucz8uaW4gfHwgZGF0ZSwgK3RvRGF0ZShkYXRlKSArIGFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkTWlsbGlzZWNvbmRzO1xuIiwiaW1wb3J0IHsgYWRkTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vYWRkTWlsbGlzZWNvbmRzLmpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJbkhvdXIgfSBmcm9tIFwiLi9jb25zdGFudHMuanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGFkZEhvdXJzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgYWRkSG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBob3VycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBob3VycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqIEB0eXBlUGFyYW0gUmVzdWx0RGF0ZSAtIFRoZSByZXN1bHQgYERhdGVgIHR5cGUsIGl0IGlzIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhlIGNvbnRleHQgZnVuY3Rpb24gaWYgaXQgaXMgcGFzc2VkLCBvciBpbmZlcnJlZCBmcm9tIHRoZSBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBob3VycyB0byBiZSBhZGRlZFxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGhvdXJzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAyIGhvdXJzIHRvIDEwIEp1bHkgMjAxNCAyMzowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZEhvdXJzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAyMywgMCksIDIpXG4gKiAvLz0+IEZyaSBKdWwgMTEgMjAxNCAwMTowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkSG91cnMoZGF0ZSwgYW1vdW50LCBvcHRpb25zKSB7XG4gIHJldHVybiBhZGRNaWxsaXNlY29uZHMoZGF0ZSwgYW1vdW50ICogbWlsbGlzZWNvbmRzSW5Ib3VyLCBvcHRpb25zKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGRIb3VycztcbiIsImltcG9ydCB7IG5vcm1hbGl6ZURhdGVzIH0gZnJvbSBcIi4vX2xpYi9ub3JtYWxpemVEYXRlcy5qc1wiO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBkaWZmZXJlbmNlSW5EYXlzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBmdWxsIGRheXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBmdWxsIGRheSBwZXJpb2RzIGJldHdlZW4gdHdvIGRhdGVzLiBGcmFjdGlvbmFsIGRheXMgYXJlXG4gKiB0cnVuY2F0ZWQgdG93YXJkcyB6ZXJvLlxuICpcbiAqIE9uZSBcImZ1bGwgZGF5XCIgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gYSBsb2NhbCB0aW1lIGluIG9uZSBkYXkgdG8gdGhlIHNhbWVcbiAqIGxvY2FsIHRpbWUgb24gdGhlIG5leHQgb3IgcHJldmlvdXMgZGF5LiBBIGZ1bGwgZGF5IGNhbiBzb21ldGltZXMgYmUgbGVzcyB0aGFuXG4gKiBvciBtb3JlIHRoYW4gMjQgaG91cnMgaWYgYSBkYXlsaWdodCBzYXZpbmdzIGNoYW5nZSBoYXBwZW5zIGJldHdlZW4gdHdvIGRhdGVzLlxuICpcbiAqIFRvIGlnbm9yZSBEU1QgYW5kIG9ubHkgbWVhc3VyZSBleGFjdCAyNC1ob3VyIHBlcmlvZHMsIHVzZSB0aGlzIGluc3RlYWQ6XG4gKiBgTWF0aC50cnVuYyhkaWZmZXJlbmNlSW5Ib3VycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KS8yNCl8MGAuXG4gKlxuICogQHBhcmFtIGxhdGVyRGF0ZSAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZWFybGllckRhdGUgLSBUaGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGZ1bGwgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsIHRpbWV6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6MDA6MDAgYW5kIDIgSnVseSAyMDEyIDAwOjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMiwgNiwgMiwgMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCAwKVxuICogKVxuICogLy89PiAzNjVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxMSAyMzo1OTowMCBhbmQgMyBKdWx5IDIwMTEgMDA6MDE6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5EYXlzKFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAzLCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDU5KVxuICogKVxuICogLy89PiAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMSBNYXJjaCAyMDIwIDA6MDAgYW5kIDEgSnVuZSAyMDIwIDA6MDAgP1xuICogLy8gTm90ZTogYmVjYXVzZSBsb2NhbCB0aW1lIGlzIHVzZWQsIHRoZVxuICogLy8gcmVzdWx0IHdpbGwgYWx3YXlzIGJlIDkyIGRheXMsIGV2ZW4gaW5cbiAqIC8vIHRpbWUgem9uZXMgd2hlcmUgRFNUIHN0YXJ0cyBhbmQgdGhlXG4gKiAvLyBwZXJpb2QgaGFzIG9ubHkgOTIqMjQtMSBob3Vycy5cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMjAsIDUsIDEpLFxuICogICBuZXcgRGF0ZSgyMDIwLCAyLCAxKVxuICogKVxuICogLy89PiA5MlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluRGF5cyhsYXRlckRhdGUsIGVhcmxpZXJEYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IFtsYXRlckRhdGVfLCBlYXJsaWVyRGF0ZV9dID0gbm9ybWFsaXplRGF0ZXMoXG4gICAgb3B0aW9ucz8uaW4sXG4gICAgbGF0ZXJEYXRlLFxuICAgIGVhcmxpZXJEYXRlLFxuICApO1xuXG4gIGNvbnN0IHNpZ24gPSBjb21wYXJlTG9jYWxBc2MobGF0ZXJEYXRlXywgZWFybGllckRhdGVfKTtcbiAgY29uc3QgZGlmZmVyZW5jZSA9IE1hdGguYWJzKFxuICAgIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhsYXRlckRhdGVfLCBlYXJsaWVyRGF0ZV8pLFxuICApO1xuXG4gIGxhdGVyRGF0ZV8uc2V0RGF0ZShsYXRlckRhdGVfLmdldERhdGUoKSAtIHNpZ24gKiBkaWZmZXJlbmNlKTtcblxuICAvLyBNYXRoLmFicyhkaWZmIGluIGZ1bGwgZGF5cyAtIGRpZmYgaW4gY2FsZW5kYXIgZGF5cykgPT09IDEgaWYgbGFzdCBjYWxlbmRhciBkYXkgaXMgbm90IGZ1bGxcbiAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gIGNvbnN0IGlzTGFzdERheU5vdEZ1bGwgPSBOdW1iZXIoXG4gICAgY29tcGFyZUxvY2FsQXNjKGxhdGVyRGF0ZV8sIGVhcmxpZXJEYXRlXykgPT09IC1zaWduLFxuICApO1xuXG4gIGNvbnN0IHJlc3VsdCA9IHNpZ24gKiAoZGlmZmVyZW5jZSAtIGlzTGFzdERheU5vdEZ1bGwpO1xuICAvLyBQcmV2ZW50IG5lZ2F0aXZlIHplcm9cbiAgcmV0dXJuIHJlc3VsdCA9PT0gMCA/IDAgOiByZXN1bHQ7XG59XG5cbi8vIExpa2UgYGNvbXBhcmVBc2NgIGJ1dCB1c2VzIGxvY2FsIHRpbWUgbm90IFVUQywgd2hpY2ggaXMgbmVlZGVkXG4vLyBmb3IgYWNjdXJhdGUgZXF1YWxpdHkgY29tcGFyaXNvbnMgb2YgVVRDIHRpbWVzdGFtcHMgdGhhdCBlbmQgdXBcbi8vIGhhdmluZyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbiBpbiBsb2NhbCB0aW1lLCBlLmcuIG9uZSBob3VyIGJlZm9yZVxuLy8gRFNUIGVuZHMgdnMuIHRoZSBpbnN0YW50IHRoYXQgRFNUIGVuZHMuXG5mdW5jdGlvbiBjb21wYXJlTG9jYWxBc2MobGF0ZXJEYXRlLCBlYXJsaWVyRGF0ZSkge1xuICBjb25zdCBkaWZmID1cbiAgICBsYXRlckRhdGUuZ2V0RnVsbFllYXIoKSAtIGVhcmxpZXJEYXRlLmdldEZ1bGxZZWFyKCkgfHxcbiAgICBsYXRlckRhdGUuZ2V0TW9udGgoKSAtIGVhcmxpZXJEYXRlLmdldE1vbnRoKCkgfHxcbiAgICBsYXRlckRhdGUuZ2V0RGF0ZSgpIC0gZWFybGllckRhdGUuZ2V0RGF0ZSgpIHx8XG4gICAgbGF0ZXJEYXRlLmdldEhvdXJzKCkgLSBlYXJsaWVyRGF0ZS5nZXRIb3VycygpIHx8XG4gICAgbGF0ZXJEYXRlLmdldE1pbnV0ZXMoKSAtIGVhcmxpZXJEYXRlLmdldE1pbnV0ZXMoKSB8fFxuICAgIGxhdGVyRGF0ZS5nZXRTZWNvbmRzKCkgLSBlYXJsaWVyRGF0ZS5nZXRTZWNvbmRzKCkgfHxcbiAgICBsYXRlckRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLSBlYXJsaWVyRGF0ZS5nZXRNaWxsaXNlY29uZHMoKTtcblxuICBpZiAoZGlmZiA8IDApIHJldHVybiAtMTtcbiAgaWYgKGRpZmYgPiAwKSByZXR1cm4gMTtcblxuICAvLyBSZXR1cm4gMCBpZiBkaWZmIGlzIDA7IHJldHVybiBOYU4gaWYgZGlmZiBpcyBOYU5cbiAgcmV0dXJuIGRpZmY7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluRGF5cztcbiIsImltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4vX2xpYi9nZXRSb3VuZGluZ01ldGhvZC5qc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplRGF0ZXMgfSBmcm9tIFwiLi9fbGliL25vcm1hbGl6ZURhdGVzLmpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJbkhvdXIgfSBmcm9tIFwiLi9jb25zdGFudHMuanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGRpZmZlcmVuY2VJbkhvdXJzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluSG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGhvdXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgaG91cnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHBhcmFtIGxhdGVyRGF0ZSAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZWFybGllckRhdGUgLSBUaGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBob3Vyc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBob3VycyBhcmUgYmV0d2VlbiAyIEp1bHkgMjAxNCAwNjo1MDowMCBhbmQgMiBKdWx5IDIwMTQgMTk6MDA6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5Ib3VycyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTksIDApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCA2LCA1MClcbiAqIClcbiAqIC8vPT4gMTJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkhvdXJzKGxhdGVyRGF0ZSwgZWFybGllckRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgW2xhdGVyRGF0ZV8sIGVhcmxpZXJEYXRlX10gPSBub3JtYWxpemVEYXRlcyhcbiAgICBvcHRpb25zPy5pbixcbiAgICBsYXRlckRhdGUsXG4gICAgZWFybGllckRhdGUsXG4gICk7XG4gIGNvbnN0IGRpZmYgPSAoK2xhdGVyRGF0ZV8gLSArZWFybGllckRhdGVfKSAvIG1pbGxpc2Vjb25kc0luSG91cjtcbiAgcmV0dXJuIGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnM/LnJvdW5kaW5nTWV0aG9kKShkaWZmKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5Ib3VycztcbiIsImltcG9ydCB7IGFkZERheXMgfSBmcm9tIFwiLi9hZGREYXlzLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzdWJEYXlzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgc3ViRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBzdWJ0cmFjdGVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheXMgc3VidHJhY3RlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAxMCBkYXlzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YkRheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89PiBGcmkgQXVnIDIyIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YkRheXMoZGF0ZSwgYW1vdW50LCBvcHRpb25zKSB7XG4gIHJldHVybiBhZGREYXlzKGRhdGUsIC1hbW91bnQsIG9wdGlvbnMpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN1YkRheXM7XG4iLCJpbXBvcnQge1xuICBtaWxsaXNlY29uZHNJbkhvdXIsXG4gIG1pbGxpc2Vjb25kc0luTWludXRlLFxufSBmcm9tIFwiLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLmpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUuanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIHBhcnNlSVNPfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgcGFyc2VJU09cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUGFyc2UgSVNPIHN0cmluZ1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUGFyc2UgdGhlIGdpdmVuIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQgYW5kIHJldHVybiBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEZ1bmN0aW9uIGFjY2VwdHMgY29tcGxldGUgSVNPIDg2MDEgZm9ybWF0cyBhcyB3ZWxsIGFzIHBhcnRpYWwgaW1wbGVtZW50YXRpb25zLlxuICogSVNPIDg2MDE6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDFcbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXNuJ3QgYSBzdHJpbmcsIHRoZSBmdW5jdGlvbiBjYW5ub3QgcGFyc2UgdGhlIHN0cmluZyBvclxuICogdGhlIHZhbHVlcyBhcmUgaW52YWxpZCwgaXQgcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHN0cmluZyAnMjAxNC0wMi0xMVQxMTozMDozMCcgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHBhcnNlSVNPKCcyMDE0LTAyLTExVDExOjMwOjMwJylcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgc3RyaW5nICcrMDIwMTQxMDEnIHRvIGRhdGUsXG4gKiAvLyBpZiB0aGUgYWRkaXRpb25hbCBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCBpcyAxOlxuICogY29uc3QgcmVzdWx0ID0gcGFyc2VJU08oJyswMjAxNDEwMScsIHsgYWRkaXRpb25hbERpZ2l0czogMSB9KVxuICogLy89PiBGcmkgQXByIDExIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSVNPKGFyZ3VtZW50LCBvcHRpb25zKSB7XG4gIGNvbnN0IGludmFsaWREYXRlID0gKCkgPT4gY29uc3RydWN0RnJvbShvcHRpb25zPy5pbiwgTmFOKTtcblxuICBjb25zdCBhZGRpdGlvbmFsRGlnaXRzID0gb3B0aW9ucz8uYWRkaXRpb25hbERpZ2l0cyA/PyAyO1xuICBjb25zdCBkYXRlU3RyaW5ncyA9IHNwbGl0RGF0ZVN0cmluZyhhcmd1bWVudCk7XG5cbiAgbGV0IGRhdGU7XG4gIGlmIChkYXRlU3RyaW5ncy5kYXRlKSB7XG4gICAgY29uc3QgcGFyc2VZZWFyUmVzdWx0ID0gcGFyc2VZZWFyKGRhdGVTdHJpbmdzLmRhdGUsIGFkZGl0aW9uYWxEaWdpdHMpO1xuICAgIGRhdGUgPSBwYXJzZURhdGUocGFyc2VZZWFyUmVzdWx0LnJlc3REYXRlU3RyaW5nLCBwYXJzZVllYXJSZXN1bHQueWVhcik7XG4gIH1cblxuICBpZiAoIWRhdGUgfHwgaXNOYU4oK2RhdGUpKSByZXR1cm4gaW52YWxpZERhdGUoKTtcblxuICBjb25zdCB0aW1lc3RhbXAgPSArZGF0ZTtcbiAgbGV0IHRpbWUgPSAwO1xuICBsZXQgb2Zmc2V0O1xuXG4gIGlmIChkYXRlU3RyaW5ncy50aW1lKSB7XG4gICAgdGltZSA9IHBhcnNlVGltZShkYXRlU3RyaW5ncy50aW1lKTtcbiAgICBpZiAoaXNOYU4odGltZSkpIHJldHVybiBpbnZhbGlkRGF0ZSgpO1xuICB9XG5cbiAgaWYgKGRhdGVTdHJpbmdzLnRpbWV6b25lKSB7XG4gICAgb2Zmc2V0ID0gcGFyc2VUaW1lem9uZShkYXRlU3RyaW5ncy50aW1lem9uZSk7XG4gICAgaWYgKGlzTmFOKG9mZnNldCkpIHJldHVybiBpbnZhbGlkRGF0ZSgpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHRtcERhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXAgKyB0aW1lKTtcbiAgICBjb25zdCByZXN1bHQgPSB0b0RhdGUoMCwgb3B0aW9ucz8uaW4pO1xuICAgIHJlc3VsdC5zZXRGdWxsWWVhcihcbiAgICAgIHRtcERhdGUuZ2V0VVRDRnVsbFllYXIoKSxcbiAgICAgIHRtcERhdGUuZ2V0VVRDTW9udGgoKSxcbiAgICAgIHRtcERhdGUuZ2V0VVRDRGF0ZSgpLFxuICAgICk7XG4gICAgcmVzdWx0LnNldEhvdXJzKFxuICAgICAgdG1wRGF0ZS5nZXRVVENIb3VycygpLFxuICAgICAgdG1wRGF0ZS5nZXRVVENNaW51dGVzKCksXG4gICAgICB0bXBEYXRlLmdldFVUQ1NlY29uZHMoKSxcbiAgICAgIHRtcERhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCksXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmV0dXJuIHRvRGF0ZSh0aW1lc3RhbXAgKyB0aW1lICsgb2Zmc2V0LCBvcHRpb25zPy5pbik7XG59XG5cbmNvbnN0IHBhdHRlcm5zID0ge1xuICBkYXRlVGltZURlbGltaXRlcjogL1tUIF0vLFxuICB0aW1lWm9uZURlbGltaXRlcjogL1taIF0vaSxcbiAgdGltZXpvbmU6IC8oW1orLV0uKikkLyxcbn07XG5cbmNvbnN0IGRhdGVSZWdleCA9XG4gIC9eLT8oPzooXFxkezN9KXwoXFxkezJ9KSg/Oi0/KFxcZHsyfSkpP3xXKFxcZHsyfSkoPzotPyhcXGR7MX0pKT98KSQvO1xuY29uc3QgdGltZVJlZ2V4ID1cbiAgL14oXFxkezJ9KD86Wy4sXVxcZCopPykoPzo6PyhcXGR7Mn0oPzpbLixdXFxkKik/KSk/KD86Oj8oXFxkezJ9KD86Wy4sXVxcZCopPykpPyQvO1xuY29uc3QgdGltZXpvbmVSZWdleCA9IC9eKFsrLV0pKFxcZHsyfSkoPzo6PyhcXGR7Mn0pKT8kLztcblxuZnVuY3Rpb24gc3BsaXREYXRlU3RyaW5nKGRhdGVTdHJpbmcpIHtcbiAgY29uc3QgZGF0ZVN0cmluZ3MgPSB7fTtcbiAgY29uc3QgYXJyYXkgPSBkYXRlU3RyaW5nLnNwbGl0KHBhdHRlcm5zLmRhdGVUaW1lRGVsaW1pdGVyKTtcbiAgbGV0IHRpbWVTdHJpbmc7XG5cbiAgLy8gVGhlIHJlZ2V4IG1hdGNoIHNob3VsZCBvbmx5IHJldHVybiBhdCBtYXhpbXVtIHR3byBhcnJheSBlbGVtZW50cy5cbiAgLy8gW2RhdGVdLCBbdGltZV0sIG9yIFtkYXRlLCB0aW1lXS5cbiAgaWYgKGFycmF5Lmxlbmd0aCA+IDIpIHtcbiAgICByZXR1cm4gZGF0ZVN0cmluZ3M7XG4gIH1cblxuICBpZiAoLzovLnRlc3QoYXJyYXlbMF0pKSB7XG4gICAgdGltZVN0cmluZyA9IGFycmF5WzBdO1xuICB9IGVsc2Uge1xuICAgIGRhdGVTdHJpbmdzLmRhdGUgPSBhcnJheVswXTtcbiAgICB0aW1lU3RyaW5nID0gYXJyYXlbMV07XG4gICAgaWYgKHBhdHRlcm5zLnRpbWVab25lRGVsaW1pdGVyLnRlc3QoZGF0ZVN0cmluZ3MuZGF0ZSkpIHtcbiAgICAgIGRhdGVTdHJpbmdzLmRhdGUgPSBkYXRlU3RyaW5nLnNwbGl0KHBhdHRlcm5zLnRpbWVab25lRGVsaW1pdGVyKVswXTtcbiAgICAgIHRpbWVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cihcbiAgICAgICAgZGF0ZVN0cmluZ3MuZGF0ZS5sZW5ndGgsXG4gICAgICAgIGRhdGVTdHJpbmcubGVuZ3RoLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAodGltZVN0cmluZykge1xuICAgIGNvbnN0IHRva2VuID0gcGF0dGVybnMudGltZXpvbmUuZXhlYyh0aW1lU3RyaW5nKTtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIGRhdGVTdHJpbmdzLnRpbWUgPSB0aW1lU3RyaW5nLnJlcGxhY2UodG9rZW5bMV0sIFwiXCIpO1xuICAgICAgZGF0ZVN0cmluZ3MudGltZXpvbmUgPSB0b2tlblsxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZVN0cmluZ3MudGltZSA9IHRpbWVTdHJpbmc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRhdGVTdHJpbmdzO1xufVxuXG5mdW5jdGlvbiBwYXJzZVllYXIoZGF0ZVN0cmluZywgYWRkaXRpb25hbERpZ2l0cykge1xuICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoXG4gICAgXCJeKD86KFxcXFxkezR9fFsrLV1cXFxcZHtcIiArXG4gICAgICAoNCArIGFkZGl0aW9uYWxEaWdpdHMpICtcbiAgICAgIFwifSl8KFxcXFxkezJ9fFsrLV1cXFxcZHtcIiArXG4gICAgICAoMiArIGFkZGl0aW9uYWxEaWdpdHMpICtcbiAgICAgIFwifSkkKVwiLFxuICApO1xuXG4gIGNvbnN0IGNhcHR1cmVzID0gZGF0ZVN0cmluZy5tYXRjaChyZWdleCk7XG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB5ZWFyXG4gIGlmICghY2FwdHVyZXMpIHJldHVybiB7IHllYXI6IE5hTiwgcmVzdERhdGVTdHJpbmc6IFwiXCIgfTtcblxuICBjb25zdCB5ZWFyID0gY2FwdHVyZXNbMV0gPyBwYXJzZUludChjYXB0dXJlc1sxXSkgOiBudWxsO1xuICBjb25zdCBjZW50dXJ5ID0gY2FwdHVyZXNbMl0gPyBwYXJzZUludChjYXB0dXJlc1syXSkgOiBudWxsO1xuXG4gIC8vIGVpdGhlciB5ZWFyIG9yIGNlbnR1cnkgaXMgbnVsbCwgbm90IGJvdGhcbiAgcmV0dXJuIHtcbiAgICB5ZWFyOiBjZW50dXJ5ID09PSBudWxsID8geWVhciA6IGNlbnR1cnkgKiAxMDAsXG4gICAgcmVzdERhdGVTdHJpbmc6IGRhdGVTdHJpbmcuc2xpY2UoKGNhcHR1cmVzWzFdIHx8IGNhcHR1cmVzWzJdKS5sZW5ndGgpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBwYXJzZURhdGUoZGF0ZVN0cmluZywgeWVhcikge1xuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgeWVhclxuICBpZiAoeWVhciA9PT0gbnVsbCkgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG5cbiAgY29uc3QgY2FwdHVyZXMgPSBkYXRlU3RyaW5nLm1hdGNoKGRhdGVSZWdleCk7XG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCBzdHJpbmdcbiAgaWYgKCFjYXB0dXJlcykgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG5cbiAgY29uc3QgaXNXZWVrRGF0ZSA9ICEhY2FwdHVyZXNbNF07XG4gIGNvbnN0IGRheU9mWWVhciA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbMV0pO1xuICBjb25zdCBtb250aCA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbMl0pIC0gMTtcbiAgY29uc3QgZGF5ID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1szXSk7XG4gIGNvbnN0IHdlZWsgPSBwYXJzZURhdGVVbml0KGNhcHR1cmVzWzRdKTtcbiAgY29uc3QgZGF5T2ZXZWVrID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1s1XSkgLSAxO1xuXG4gIGlmIChpc1dlZWtEYXRlKSB7XG4gICAgaWYgKCF2YWxpZGF0ZVdlZWtEYXRlKHllYXIsIHdlZWssIGRheU9mV2VlaykpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgIH1cbiAgICByZXR1cm4gZGF5T2ZJU09XZWVrWWVhcih5ZWFyLCB3ZWVrLCBkYXlPZldlZWspO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgICBpZiAoXG4gICAgICAhdmFsaWRhdGVEYXRlKHllYXIsIG1vbnRoLCBkYXkpIHx8XG4gICAgICAhdmFsaWRhdGVEYXlPZlllYXJEYXRlKHllYXIsIGRheU9mWWVhcilcbiAgICApIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgIH1cbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIG1vbnRoLCBNYXRoLm1heChkYXlPZlllYXIsIGRheSkpO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlRGF0ZVVuaXQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID8gcGFyc2VJbnQodmFsdWUpIDogMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUaW1lKHRpbWVTdHJpbmcpIHtcbiAgY29uc3QgY2FwdHVyZXMgPSB0aW1lU3RyaW5nLm1hdGNoKHRpbWVSZWdleCk7XG4gIGlmICghY2FwdHVyZXMpIHJldHVybiBOYU47IC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB0aW1lXG5cbiAgY29uc3QgaG91cnMgPSBwYXJzZVRpbWVVbml0KGNhcHR1cmVzWzFdKTtcbiAgY29uc3QgbWludXRlcyA9IHBhcnNlVGltZVVuaXQoY2FwdHVyZXNbMl0pO1xuICBjb25zdCBzZWNvbmRzID0gcGFyc2VUaW1lVW5pdChjYXB0dXJlc1szXSk7XG5cbiAgaWYgKCF2YWxpZGF0ZVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgaG91cnMgKiBtaWxsaXNlY29uZHNJbkhvdXIgKyBtaW51dGVzICogbWlsbGlzZWNvbmRzSW5NaW51dGUgKyBzZWNvbmRzICogMTAwMFxuICApO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRpbWVVbml0KHZhbHVlKSB7XG4gIHJldHVybiAodmFsdWUgJiYgcGFyc2VGbG9hdCh2YWx1ZS5yZXBsYWNlKFwiLFwiLCBcIi5cIikpKSB8fCAwO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRpbWV6b25lKHRpbWV6b25lU3RyaW5nKSB7XG4gIGlmICh0aW1lem9uZVN0cmluZyA9PT0gXCJaXCIpIHJldHVybiAwO1xuXG4gIGNvbnN0IGNhcHR1cmVzID0gdGltZXpvbmVTdHJpbmcubWF0Y2godGltZXpvbmVSZWdleCk7XG4gIGlmICghY2FwdHVyZXMpIHJldHVybiAwO1xuXG4gIGNvbnN0IHNpZ24gPSBjYXB0dXJlc1sxXSA9PT0gXCIrXCIgPyAtMSA6IDE7XG4gIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQoY2FwdHVyZXNbMl0pO1xuICBjb25zdCBtaW51dGVzID0gKGNhcHR1cmVzWzNdICYmIHBhcnNlSW50KGNhcHR1cmVzWzNdKSkgfHwgMDtcblxuICBpZiAoIXZhbGlkYXRlVGltZXpvbmUoaG91cnMsIG1pbnV0ZXMpKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIHJldHVybiBzaWduICogKGhvdXJzICogbWlsbGlzZWNvbmRzSW5Ib3VyICsgbWludXRlcyAqIG1pbGxpc2Vjb25kc0luTWludXRlKTtcbn1cblxuZnVuY3Rpb24gZGF5T2ZJU09XZWVrWWVhcihpc29XZWVrWWVhciwgd2VlaywgZGF5KSB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgZGF0ZS5zZXRVVENGdWxsWWVhcihpc29XZWVrWWVhciwgMCwgNCk7XG4gIGNvbnN0IGZvdXJ0aE9mSmFudWFyeURheSA9IGRhdGUuZ2V0VVRDRGF5KCkgfHwgNztcbiAgY29uc3QgZGlmZiA9ICh3ZWVrIC0gMSkgKiA3ICsgZGF5ICsgMSAtIGZvdXJ0aE9mSmFudWFyeURheTtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufVxuXG4vLyBWYWxpZGF0aW9uIGZ1bmN0aW9uc1xuXG4vLyBGZWJydWFyeSBpcyBudWxsIHRvIGhhbmRsZSB0aGUgbGVhcCB5ZWFyICh1c2luZyB8fClcbmNvbnN0IGRheXNJbk1vbnRocyA9IFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xuXG5mdW5jdGlvbiBpc0xlYXBZZWFySW5kZXgoeWVhcikge1xuICByZXR1cm4geWVhciAlIDQwMCA9PT0gMCB8fCAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSkge1xuICByZXR1cm4gKFxuICAgIG1vbnRoID49IDAgJiZcbiAgICBtb250aCA8PSAxMSAmJlxuICAgIGRhdGUgPj0gMSAmJlxuICAgIGRhdGUgPD0gKGRheXNJbk1vbnRoc1ttb250aF0gfHwgKGlzTGVhcFllYXJJbmRleCh5ZWFyKSA/IDI5IDogMjgpKVxuICApO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURheU9mWWVhckRhdGUoeWVhciwgZGF5T2ZZZWFyKSB7XG4gIHJldHVybiBkYXlPZlllYXIgPj0gMSAmJiBkYXlPZlllYXIgPD0gKGlzTGVhcFllYXJJbmRleCh5ZWFyKSA/IDM2NiA6IDM2NSk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2Vla0RhdGUoX3llYXIsIHdlZWssIGRheSkge1xuICByZXR1cm4gd2VlayA+PSAxICYmIHdlZWsgPD0gNTMgJiYgZGF5ID49IDAgJiYgZGF5IDw9IDY7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVGltZShob3VycywgbWludXRlcywgc2Vjb25kcykge1xuICBpZiAoaG91cnMgPT09IDI0KSB7XG4gICAgcmV0dXJuIG1pbnV0ZXMgPT09IDAgJiYgc2Vjb25kcyA9PT0gMDtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgc2Vjb25kcyA+PSAwICYmXG4gICAgc2Vjb25kcyA8IDYwICYmXG4gICAgbWludXRlcyA+PSAwICYmXG4gICAgbWludXRlcyA8IDYwICYmXG4gICAgaG91cnMgPj0gMCAmJlxuICAgIGhvdXJzIDwgMjVcbiAgKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVUaW1lem9uZShfaG91cnMsIG1pbnV0ZXMpIHtcbiAgcmV0dXJuIG1pbnV0ZXMgPj0gMCAmJiBtaW51dGVzIDw9IDU5O1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHBhcnNlSVNPO1xuIiwiaW1wb3J0IHsgYWRkSG91cnMgfSBmcm9tIFwiLi9hZGRIb3Vycy5qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgc3ViSG91cnN9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBzdWJIb3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgaG91cnMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgaG91cnMgdG8gYmUgc3VidHJhY3RlZC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgaG91cnMgc3VidHJhY3RlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAyIGhvdXJzIGZyb20gMTEgSnVseSAyMDE0IDAxOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3ViSG91cnMobmV3IERhdGUoMjAxNCwgNiwgMTEsIDEsIDApLCAyKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMjM6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YkhvdXJzKGRhdGUsIGFtb3VudCwgb3B0aW9ucykge1xuICByZXR1cm4gYWRkSG91cnMoZGF0ZSwgLWFtb3VudCwgb3B0aW9ucyk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3ViSG91cnM7XG4iLCJpbXBvcnQge1xuICBpMThuRHVyYXRpb25EYXksXG4gIGkxOG5EdXJhdGlvbkhvdXIsXG4gIGkxOG5EdXJhdGlvbk1pbnV0ZSxcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS5qcyc7XG5pbXBvcnQge1xuICBhZGRNaW51dGVzLFxuICBkaWZmZXJlbmNlSW5EYXlzLFxuICBkaWZmZXJlbmNlSW5Ib3VycyxcbiAgZGlmZmVyZW5jZUluTWludXRlcyxcbiAgaXNWYWxpZCxcbiAgcGFyc2VJU08sXG4gIHN1YkRheXMsXG4gIHN1YkhvdXJzLFxufSBmcm9tICdkYXRlLWZucyc7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiByZW1vdmVzIHRoZSBvZmZzZXQgb2YgYSBJU08gZGF0ZSBzdHJpbmcuIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgb2Zmc2V0IGlzIGlnbm9yZWQuXG4gKiBJZiBpdCBpcyBub3QgcmVtb3ZlZCB0aGUgdGltZSB3b3VsZCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGJyb3dzZXJzIGxvY2FsIHRpbWUuXG4gKiBFeGFtcGxlOiBcIjIwMjItMDgtMjlUMDk6MzA6MDArMDM6MDBcIiB3b3VsZCBiZSBjaGFuZ2VkIHRvIFwiMjAyMi0wOC0yOVQwODozMDowMCswMjowMFwiIC0tPiBub3QgdGhlIGRlc2lyZWQgb3V0Y29tZSwgYXMgd2Ugd2FudCB0byB1c2UgdGhlIHRpbWUgaW4gdGhlIHRpbWV6b25lIGFuZCBub3QgdGhlIGxvY2FsIHRpbWUuXG4gKlxuICogQWZ0ZXIgdGhlIG9mZnNldCBpcyByZW1vdmVkIGEgbmV3IGRhdGUgaXMgY3JlYXRlZCBpbiB0aGUgYnJvd3NlcnMgbG9jYWwgdGltZS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHRpbWUgb2YgdGhlIElTTyBkYXRlIHN0cmluZyBpcyBkaXNwbGF5ZWQgYW5kIG5vdCBhIGNvbnZlcnRlZCB0aW1lLlxuICogRXhhbXBsZTogXCIyMDIyLTA4LTI5VDA5OjMwOjAwKzAzOjAwXCIgd291bGQgYmUgY2hhbmdlZCB0byBcIjIwMjItMDgtMjlUMDk6MzA6MDArMDI6MDBcIiAtLT4gZGVzaXJlZCBvdXRjb21lXG4gKiBBdHRlbnRpb246IFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY29udmVydCB0aGUgdGltZSB0byB0aGUgY29ycmVjdCB0aW1lIGluIHRoZSBsb2NhbCB0aW1lem9uZS4gSXQgaXMgYSB3b3JrYXJvdW5kIHRvIG1ha2Ugc3VyZSwgdGhhdCB0aGUgZ2l2ZW4gdGltZSBpcyBkaXNwbGF5ZWQgd2l0aG91dCBiZWluZyBjb252ZXJ0ZWQuXG4gKlxuICogT2Zmc2V0OiBEaWZmZXJlbmNlIGJldHdlZW4gdGhlIHRpbWV6b25lIGFuZCBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZS5cbiAqXG4gKiBAcGFyYW0gaXNvVGltZSAtIHRoZSBpc28gdGltZSB3aXRoIHRoZSB0aW1lem9uZSBvZmZzZXRcbiAqIEByZXR1cm5zIGEgbmV3IGRhdGUgd2l0aCB0aGUgbG9jYWwgdGltZXpvbmUgd2l0aCB0aGUgbG9jYWwgb2Zmc2V0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nKGlzb1RpbWU/OiBzdHJpbmcpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFpc29UaW1lKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBwYXJzZWREYXRlID0gcGFyc2VJU08oaXNvVGltZSk7XG5cbiAgaWYgKCFpc1ZhbGlkKHBhcnNlZERhdGUpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChpc29UaW1lLmluY2x1ZGVzKCdaJykpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoaXNvVGltZS5yZXBsYWNlKCdaJywgJycpKTtcbiAgfVxuXG4gIGlmIChpc29UaW1lLmluY2x1ZGVzKCdUJykpIHtcbiAgICBjb25zdCBkYXRlVGltZSA9IGlzb1RpbWUuc3BsaXQoJ1QnKTtcblxuICAgIGlmIChkYXRlVGltZVsxXSAmJiAoZGF0ZVRpbWVbMV0uaW5jbHVkZXMoJysnKSB8fCBkYXRlVGltZVsxXS5pbmNsdWRlcygnLScpKSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGAke2RhdGVUaW1lWzBdfVQke2RhdGVUaW1lWzFdLnNwbGl0KC9bKy1dLylbMF19YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgRGF0ZShpc29UaW1lKTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIGEgZHVyYXRpb24gbnVtYmVyIHRvIGRhdGUgc3RyaW5nIHdpdGggc3BlY2lmaWMgZm9ybWF0XG4gKlxuICogQHBhcmFtIGR1cmF0aW9uIC0gZHVyYXRpb24gaW4gbWludXRlc1xuICogQHBhcmFtIGN1cnJlbnRMYW5ndWFnZSAtIGN1cnJlbnRMYW5ndWFnZVxuICogQHJldHVybnMgYW4gT2JqZWN0IHdpdGggdHdvIHN0cmluZ3MgaW4gdGhlIGZvcm1hdCBcImRkIGhoIG1tXCIgKHNob3J0KSBhbiBcInggRGF5KHMpIHggSG91cihzKSB4IE1pbnV0ZShzKSAobG9uZylcIlxuICogKi9cblxuZXhwb3J0IGNvbnN0IGR1cmF0aW9uVG9UaW1lID0gKFxuICBkdXJhdGlvbjogbnVtYmVyLFxuICBjdXJyZW50TGFuZ3VhZ2U/OiBzdHJpbmcsXG4pOiB7IHNob3J0OiBzdHJpbmc7IGxvbmc6IHN0cmluZyB9ID0+IHtcbiAgY29uc3Qgc2hvcnQgPSBbXTtcbiAgY29uc3QgbG9uZyA9IFtdO1xuXG4gIGNvbnN0IG5vdyA9IDA7XG4gIGxldCBmdXR1cmUgPSBhZGRNaW51dGVzKG5vdywgZHVyYXRpb24pO1xuXG4gIGNvbnN0IGRheXMgPSBkaWZmZXJlbmNlSW5EYXlzKGZ1dHVyZSwgbm93KTtcbiAgaWYgKGRheXMgPiAwKSB7XG4gICAgc2hvcnQucHVzaChgJHtkYXlzfSBkYCk7XG4gICAgaWYgKGN1cnJlbnRMYW5ndWFnZSkge1xuICAgICAgbG9uZy5wdXNoKFxuICAgICAgICBgJHtkYXlzfSAke1xuICAgICAgICAgIGRheXMgPiAxXG4gICAgICAgICAgICA/IGkxOG5EdXJhdGlvbkRheS5tdWx0aXBsZS5sb25nW2N1cnJlbnRMYW5ndWFnZV1cbiAgICAgICAgICAgIDogaTE4bkR1cmF0aW9uRGF5LnNpbmdsZS5sb25nW2N1cnJlbnRMYW5ndWFnZV1cbiAgICAgICAgfWAsXG4gICAgICApO1xuICAgIH1cbiAgICBmdXR1cmUgPSBzdWJEYXlzKGZ1dHVyZSwgZGF5cyk7XG4gIH1cblxuICBjb25zdCBob3VycyA9IGRpZmZlcmVuY2VJbkhvdXJzKGZ1dHVyZSwgbm93KTtcbiAgaWYgKGhvdXJzID4gMCkge1xuICAgIHNob3J0LnB1c2goYCR7aG91cnN9IGhgKTtcbiAgICBpZiAoY3VycmVudExhbmd1YWdlKSB7XG4gICAgICBsb25nLnB1c2goXG4gICAgICAgIGAke2hvdXJzfSAke1xuICAgICAgICAgIGhvdXJzID4gMVxuICAgICAgICAgICAgPyBpMThuRHVyYXRpb25Ib3VyLm11bHRpcGxlLmxvbmdbY3VycmVudExhbmd1YWdlXVxuICAgICAgICAgICAgOiBpMThuRHVyYXRpb25Ib3VyLnNpbmdsZS5sb25nW2N1cnJlbnRMYW5ndWFnZV1cbiAgICAgICAgfWAsXG4gICAgICApO1xuICAgIH1cbiAgICBmdXR1cmUgPSBzdWJIb3VycyhmdXR1cmUsIGhvdXJzKTtcbiAgfVxuXG4gIGNvbnN0IG1pbnV0ZXMgPSBkaWZmZXJlbmNlSW5NaW51dGVzKGZ1dHVyZSwgbm93KTtcbiAgaWYgKG1pbnV0ZXMgPiAwKSB7XG4gICAgc2hvcnQucHVzaChgJHttaW51dGVzfSBtaW5gKTtcbiAgICBpZiAoY3VycmVudExhbmd1YWdlKSB7XG4gICAgICBsb25nLnB1c2goXG4gICAgICAgIGAke21pbnV0ZXN9ICR7XG4gICAgICAgICAgbWludXRlcyA+IDFcbiAgICAgICAgICAgID8gaTE4bkR1cmF0aW9uTWludXRlLm11bHRpcGxlLmxvbmdbY3VycmVudExhbmd1YWdlXVxuICAgICAgICAgICAgOiBpMThuRHVyYXRpb25NaW51dGUuc2luZ2xlLmxvbmdbY3VycmVudExhbmd1YWdlXVxuICAgICAgICB9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzaG9ydDogc2hvcnQuam9pbignICcpLFxuICAgIGxvbmc6IGxvbmcuam9pbignICcpLFxuICB9O1xufTtcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMCwxLDIsMyw0LDUsNiw3XSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -1,7 +1,6 @@
1
- import { SbbElement } from '@sbb-esta/lyne-elements/core/base-elements.js';
2
- import { SbbTitleLevel } from '@sbb-esta/lyne-elements/title.js';
1
+ import { SbbElement, SbbElementType, SbbHeadingLevel } from '@sbb-esta/lyne-elements/core.js';
3
2
  import { CSSResultGroup, TemplateResult } from 'lit';
4
- import { Leg } from '../core/timetable.ts';
3
+ import { Leg } from '../core.ts';
5
4
  export interface InterfaceSbbJourneySummaryAttributes {
6
5
  legs: Leg[];
7
6
  vias?: string[];
@@ -20,6 +19,7 @@ export interface InterfaceSbbJourneySummaryAttributes {
20
19
  */
21
20
  export declare class SbbJourneySummaryElement extends SbbElement {
22
21
  static readonly elementName: string;
22
+ static elementDependencies: SbbElementType[];
23
23
  static styles: CSSResultGroup;
24
24
  /** The trip prop */
25
25
  accessor trip: InterfaceSbbJourneySummaryAttributes;
@@ -30,7 +30,7 @@ export declare class SbbJourneySummaryElement extends SbbElement {
30
30
  */
31
31
  accessor roundTrip: boolean;
32
32
  /** Heading level of the journey header element (e.g. h1-h6). */
33
- accessor headerLevel: SbbTitleLevel;
33
+ accessor headerLevel: SbbHeadingLevel;
34
34
  /**
35
35
  * Per default, the current location has a pulsating animation. You can
36
36
  * disable the animation with this property.
@@ -1 +1 @@
1
- {"version":3,"file":"journey-summary.component.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/journey-summary/journey-summary.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAM3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EAA4B,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAIzF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAIhD,OAAO,oCAAoC,CAAC;AAC5C,OAAO,+CAA+C,CAAC;AACvD,OAAO,2CAA2C,CAAC;AACnD,OAAO,wBAAwB,CAAC;AAEhC,MAAM,WAAW,oCAAoC;IACnD,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,UAAU;IACtD,gBAAgC,WAAW,EAAE,MAAM,CAAyB;IAC5E,OAAuB,MAAM,EAAE,cAAc,CAAuC;IAEpF,qBAAqB;IACrB,SAA4C,IAAI,EAAE,oCAAoC,CAAS;IAE/F,yBAAyB;IACzB,SACgB,QAAQ,EAAE,oCAAoC,CAAS;IAEvE;;OAEG;IACH,SAEgB,SAAS,EAAE,OAAO,CAAS;IAE3C,gEAAgE;IAChE,SAAyD,WAAW,EAAE,aAAa,CAAO;IAE1F;;;OAGG;IACH,SAEgB,gBAAgB,EAAE,OAAO,CAAS;IAElD;;;;;OAKG;IACH,SAEgB,YAAY,EAAE,OAAO,CAAS;IAE9C;;;OAGG;IACH,IACW,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,EAErC;IACD,IAAW,GAAG,IAAI,IAAI,CAErB;IACD,OAAO,CAAC,IAAI,CAAqB;IAEjC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAmC;IAEpC,iBAAiB,IAAI,IAAI;IAKzC,2EAA2E;IAC3E,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,yBAAyB;cAuBd,MAAM,IAAI,cAAc;CA4B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,qBAAqB,EAAE,wBAAwB,CAAC;KACjD;CACF"}
1
+ {"version":3,"file":"journey-summary.component.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/journey-summary/journey-summary.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,eAAe,EAGrB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,KAAK,cAAc,EAAiB,KAAK,cAAc,EAAa,MAAM,KAAK,CAAC;AAGzF,OAAO,EAAkB,KAAK,GAAG,EAAmC,MAAM,YAAY,CAAC;AAKvF,MAAM,WAAW,oCAAoC;IACnD,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,UAAU;IACtD,gBAAgC,WAAW,EAAE,MAAM,CAAyB;IAC5E,OAAuB,mBAAmB,EAAE,cAAc,EAAE,CAI1D;IACF,OAAuB,MAAM,EAAE,cAAc,CAA8C;IAE3F,qBAAqB;IACrB,SAA4C,IAAI,EAAE,oCAAoC,CAAS;IAE/F,yBAAyB;IACzB,SACgB,QAAQ,EAAE,oCAAoC,CAAS;IAEvE;;OAEG;IACH,SAEgB,SAAS,EAAE,OAAO,CAAS;IAE3C,gEAAgE;IAChE,SAAyD,WAAW,EAAE,eAAe,CAAO;IAE5F;;;OAGG;IACH,SAEgB,gBAAgB,EAAE,OAAO,CAAS;IAElD;;;;;OAKG;IACH,SAEgB,YAAY,EAAE,OAAO,CAAS;IAE9C;;;OAGG;IACH,IACW,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,EAErC;IACD,IAAW,GAAG,IAAI,IAAI,CAErB;IACD,OAAO,CAAC,IAAI,CAAqB;IAEjC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAmC;IAEpC,iBAAiB,IAAI,IAAI;IAKzC,2EAA2E;IAC3E,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,yBAAyB;cAuBd,MAAM,IAAI,cAAc;CA4B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,qBAAqB,EAAE,wBAAwB,CAAC;KACjD;CACF"}
@@ -1,2 +1,2 @@
1
- import { t as SbbJourneySummaryElement } from "../journey-summary.component-BTaPGCGZ.js";
1
+ import { t as SbbJourneySummaryElement } from "../journey-summary.component-BsC7wBIn.js";
2
2
  export { SbbJourneySummaryElement };