@sbb-esta/lyne-elements 4.10.0 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (576) hide show
  1. package/autocomplete/autocomplete-base-element.js +1 -1
  2. package/autocomplete/autocomplete.component.js +3 -2
  3. package/{autocomplete-base-element-DarHnnYC.js → autocomplete-base-element-De2O5Wx-.js} +14 -9
  4. package/autocomplete.js +1 -1
  5. package/autocomplete.pure.js +1 -1
  6. package/{block-link-common-DzGY49Xc.js → block-link-common-1kRa_czx.js} +1 -1
  7. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  8. package/breadcrumb/breadcrumb-group.js +1 -1
  9. package/{breadcrumb-group.component-Cc6CHbVy.js → breadcrumb-group.component-CKNsaUqs.js} +1 -1
  10. package/breadcrumb.js +1 -1
  11. package/breadcrumb.pure.js +1 -1
  12. package/button/common/button-common.js +1 -1
  13. package/button/common.js +1 -1
  14. package/button-common-BMEhm-dn.js +87 -0
  15. package/button.js +1 -1
  16. package/button.pure.js +1 -1
  17. package/calendar/calendar/calendar.component.js +1 -1
  18. package/calendar/calendar.js +1 -1
  19. package/{calendar.component-DhmaJt2k.js → calendar.component-C1jk_uE0.js} +5 -5
  20. package/calendar.js +1 -1
  21. package/calendar.pure.js +1 -1
  22. package/card/card-badge/card-badge.component.js +1 -1
  23. package/card/card-badge.js +1 -1
  24. package/{card-badge.component-BSOEYrN4.js → card-badge.component-D0r2iixU.js} +1 -1
  25. package/card.js +1 -1
  26. package/card.pure.js +1 -1
  27. package/checkbox/checkbox.component.js +1 -1
  28. package/checkbox/checkbox.js +1 -1
  29. package/checkbox/common/checkbox-common.js +1 -1
  30. package/checkbox/common.js +1 -1
  31. package/{checkbox-common-DdieysTG.js → checkbox-common-BpW4_bbi.js} +1 -1
  32. package/{checkbox.component-ROzxEnPh.js → checkbox.component-DS48CA_v.js} +1 -1
  33. package/checkbox.js +2 -2
  34. package/checkbox.pure.js +2 -2
  35. package/chip/chip-group/chip-group.component.js +1 -1
  36. package/chip/chip-group.js +1 -1
  37. package/{chip-group.component-DJzUToem.js → chip-group.component-BqBYzfXA.js} +1 -1
  38. package/chip.js +1 -1
  39. package/chip.pure.js +1 -1
  40. package/{compact-paginator.component-Cyi-t_YD.js → compact-paginator.component-BIAPutro.js} +1 -1
  41. package/core/base-elements/element.js +1 -1
  42. package/core/controllers/overlay-position-controller.js +4 -1
  43. package/core/mixins/named-slot-list-mixin.js +4 -1
  44. package/core/styles/core.scss +62 -77
  45. package/core/styles/mixins/helpers.scss +3 -3
  46. package/core/styles/mixins/overlay.scss +2 -2
  47. package/core/styles/mixins/table.scss +18 -19
  48. package/core/styles/mixins/typo.scss +2 -2
  49. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables-as-css.scss +8 -0
  50. package/core/styles/theme.scss +3 -1
  51. package/core.css +177 -73
  52. package/custom-elements.json +1387 -1092
  53. package/development/autocomplete/autocomplete-base-element.d.ts +8 -1
  54. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  55. package/development/autocomplete/autocomplete-base-element.js +1 -1
  56. package/development/autocomplete/autocomplete.component.js +4 -3
  57. package/development/autocomplete-base-element-BpCpYcX9.js +692 -0
  58. package/development/autocomplete.js +1 -1
  59. package/development/autocomplete.pure.js +1 -1
  60. package/development/{block-link-common-GckvjULA.js → block-link-common-COY1RI1I.js} +2 -2
  61. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  62. package/development/breadcrumb/breadcrumb-group.js +1 -1
  63. package/development/breadcrumb-group.component-DZslNBlB.js +195 -0
  64. package/development/breadcrumb.js +1 -1
  65. package/development/breadcrumb.pure.js +1 -1
  66. package/development/button/common/button-common.js +1 -1
  67. package/development/button/common.js +1 -1
  68. package/development/{button-common-CAu09Yim.js → button-common-7dmrUx4A.js} +3 -3
  69. package/development/button.js +1 -1
  70. package/development/button.pure.js +1 -1
  71. package/development/calendar/calendar/calendar.component.js +1 -1
  72. package/development/calendar/calendar.js +1 -1
  73. package/development/calendar-cell-base-element-BXohfDSl.js +1 -1
  74. package/development/calendar.component-Dg3D2A7k.js +1453 -0
  75. package/development/calendar.js +1 -1
  76. package/development/calendar.pure.js +1 -1
  77. package/development/card/card-badge/card-badge.component.js +1 -1
  78. package/development/card/card-badge.js +1 -1
  79. package/development/card-action-common-1FDHbfeR.js +1 -1
  80. package/development/card-badge.component-CUZIoVbL.js +84 -0
  81. package/development/card.js +1 -1
  82. package/development/card.pure.js +1 -1
  83. package/development/carousel-list.component-L-nYpHcN.js +1 -1
  84. package/development/carousel.component-Dl48ROSf.js +1 -1
  85. package/development/checkbox/checkbox.component.js +1 -1
  86. package/development/checkbox/checkbox.js +1 -1
  87. package/development/checkbox/common/checkbox-common.js +1 -1
  88. package/development/checkbox/common.js +1 -1
  89. package/development/checkbox-common-Dd5uup8K.js +86 -0
  90. package/development/checkbox-group/checkbox-group.component.js +1 -1
  91. package/development/{checkbox.component-D3_FFSys.js → checkbox.component-CFZrwUTA.js} +2 -2
  92. package/development/checkbox.js +2 -2
  93. package/development/checkbox.pure.js +2 -2
  94. package/development/chip/chip-group/chip-group.component.js +1 -1
  95. package/development/chip/chip-group.js +1 -1
  96. package/development/chip-group.component-BVfHWX2-.js +409 -0
  97. package/development/chip.js +1 -1
  98. package/development/chip.pure.js +1 -1
  99. package/development/clock.component-CVPv4mCp.js +1 -1
  100. package/development/compact-paginator.component-5_Q2Reul.js +51 -0
  101. package/development/core/a11y/input-modality-detector.js +1 -1
  102. package/development/core/base-elements/element.d.ts.map +1 -1
  103. package/development/core/base-elements/element.js +2 -5
  104. package/development/core/controllers/media-matchers-controller.js +1 -1
  105. package/development/core/controllers/overlay-position-controller.js +3 -2
  106. package/development/core/datetime/date-adapter.js +1 -1
  107. package/development/core/datetime/native-date-adapter.js +1 -1
  108. package/development/core/datetime/temporal-date-adapter.js +1 -1
  109. package/development/core/eventing/throttle.d.ts +1 -0
  110. package/development/core/eventing/throttle.d.ts.map +1 -1
  111. package/development/core/eventing/throttle.js +2 -1
  112. package/development/core/mixins/disabled-mixin.js +1 -1
  113. package/development/core/mixins/form-associated-checkbox-mixin.js +1 -1
  114. package/development/core/mixins/form-associated-input-mixin.js +1 -1
  115. package/development/core/mixins/form-associated-mixin.js +1 -1
  116. package/development/core/mixins/form-associated-radio-button-mixin.js +1 -1
  117. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  118. package/development/core/mixins/named-slot-list-mixin.js +5 -2
  119. package/development/core/mixins/negative-mixin.js +1 -1
  120. package/development/core/mixins/readonly-mixin.js +1 -1
  121. package/development/core/mixins/required-mixin.js +1 -1
  122. package/development/core/testing/event-spy.js +1 -1
  123. package/development/datepicker/common/datepicker-button.d.ts +6 -0
  124. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  125. package/development/datepicker/common/datepicker-button.js +1 -1
  126. package/development/datepicker/common.js +1 -1
  127. package/development/datepicker/datepicker/datepicker.component.d.ts +3 -0
  128. package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  129. package/development/datepicker/datepicker/datepicker.component.js +1 -1
  130. package/development/datepicker/datepicker.js +1 -1
  131. package/development/datepicker-button-CUPeoQgH.js +169 -0
  132. package/development/datepicker.component-D2DxFng_.js +216 -0
  133. package/development/datepicker.js +2 -2
  134. package/development/datepicker.pure.js +2 -2
  135. package/development/dialog/dialog/dialog.component.js +1 -1
  136. package/development/dialog/dialog.js +1 -1
  137. package/development/{dialog.component-TBiL0Sdq.js → dialog.component-DKuR4u-y.js} +2 -2
  138. package/development/dialog.js +1 -1
  139. package/development/dialog.pure.js +1 -1
  140. package/development/error.component-OBpWoVRL.js +55 -0
  141. package/development/expansion-panel/expansion-panel/expansion-panel.component.js +1 -1
  142. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  143. package/development/expansion-panel/expansion-panel-header.js +1 -1
  144. package/development/expansion-panel/expansion-panel.js +1 -1
  145. package/development/expansion-panel-header.component-BEAabEE0.js +85 -0
  146. package/development/{expansion-panel.component-PDUmZe7w.js → expansion-panel.component-CV_IuWZA.js} +2 -2
  147. package/development/expansion-panel.js +2 -2
  148. package/development/expansion-panel.pure.js +2 -2
  149. package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
  150. package/development/file-selector/common/file-selector-common.js +1 -1
  151. package/development/file-selector/common.js +1 -1
  152. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts.map +1 -1
  153. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  154. package/development/file-selector/file-selector-dropzone.js +1 -1
  155. package/development/file-selector-common-C7xIEiV4.js +416 -0
  156. package/development/file-selector-dropzone.component-BAWMZW4F.js +111 -0
  157. package/development/file-selector.js +2 -2
  158. package/development/file-selector.pure.js +2 -2
  159. package/development/footer/footer.component.js +1 -1
  160. package/development/footer.component-BmDkxYW9.js +172 -0
  161. package/development/footer.js +1 -1
  162. package/development/footer.pure.js +1 -1
  163. package/development/form-field/error/error.component.js +1 -1
  164. package/development/form-field/error.js +1 -1
  165. package/development/form-field/form-field/form-field.component.d.ts +6 -0
  166. package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
  167. package/development/form-field/form-field/form-field.component.js +1 -1
  168. package/development/form-field/form-field-clear/form-field-clear.component.d.ts +3 -0
  169. package/development/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
  170. package/development/form-field/form-field-clear/form-field-clear.component.js +4 -1
  171. package/development/form-field/form-field.js +1 -1
  172. package/development/form-field/hint/hint.component.js +1 -1
  173. package/development/form-field.component-BU3Sv2mD.js +707 -0
  174. package/development/form-field.js +3 -3
  175. package/development/form-field.pure.js +3 -3
  176. package/development/header/header/header.component.js +1 -1
  177. package/development/header/header.js +1 -1
  178. package/development/header-action-common-MTYV0dqA.js +1 -1
  179. package/development/header.component-CWJ36jF0.js +340 -0
  180. package/development/header.js +1 -1
  181. package/development/header.pure.js +1 -1
  182. package/development/hint.component-DUtL0RS3.js +38 -0
  183. package/development/icon/icon-name-mixin.js +1 -1
  184. package/development/image.component-BD0jc-u-.js +1 -1
  185. package/development/link/common/block-link-common.js +1 -1
  186. package/development/link/common.js +1 -1
  187. package/development/link-common-DJ2FfG_Q.js +1 -1
  188. package/development/link-list-base-CKMNz30d.js +1 -1
  189. package/development/link.js +1 -1
  190. package/development/link.pure.js +1 -1
  191. package/development/message/message.component.js +1 -1
  192. package/development/message.component-Dlf5V5ba.js +44 -0
  193. package/development/message.js +1 -1
  194. package/development/message.pure.js +1 -1
  195. package/development/mini-calendar.component-BufzKw74.js +1 -1
  196. package/development/navigation/common/navigation-action-common.js +1 -1
  197. package/development/navigation/common.js +1 -1
  198. package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
  199. package/development/navigation/navigation-marker.js +1 -1
  200. package/development/navigation/navigation-section/navigation-section.component.js +1 -1
  201. package/development/navigation/navigation-section.js +1 -1
  202. package/development/{navigation-action-common-DpBp7-eZ.js → navigation-action-common-Hjr4dI9J.js} +2 -2
  203. package/development/{navigation-marker.component-BpZdT4xz.js → navigation-marker.component-GOv42emC.js} +2 -2
  204. package/development/{navigation-section.component-CtZtuacK.js → navigation-section.component-CnVrRETN.js} +2 -2
  205. package/development/navigation.component-CTNQ1dix.js +1 -1
  206. package/development/navigation.js +3 -3
  207. package/development/navigation.pure.js +3 -3
  208. package/development/notification/notification.component.js +1 -1
  209. package/development/notification.component-Cvq_uViC.js +274 -0
  210. package/development/notification.js +1 -1
  211. package/development/notification.pure.js +1 -1
  212. package/development/option/option/option-base-element.d.ts.map +1 -1
  213. package/development/option/option/option-base-element.js +3 -1
  214. package/development/option/option/option.component.js +1 -1
  215. package/development/option/option.js +1 -1
  216. package/development/option.component-CRVr0PfV.js +130 -0
  217. package/development/option.js +1 -1
  218. package/development/option.pure.js +1 -1
  219. package/development/paginator/common/paginator-common.js +1 -1
  220. package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
  221. package/development/paginator/compact-paginator.js +1 -1
  222. package/development/paginator/paginator/paginator.component.js +1 -1
  223. package/development/paginator/paginator.js +1 -1
  224. package/development/paginator.component-Bn5tK0FK.js +259 -0
  225. package/development/paginator.js +2 -2
  226. package/development/paginator.pure.js +2 -2
  227. package/development/panel-mixin-Dj_rsgL9.js +1 -1
  228. package/development/popover/popover.component.d.ts +1 -0
  229. package/development/popover/popover.component.d.ts.map +1 -1
  230. package/development/popover/popover.component.js +1 -1
  231. package/development/popover.component-rZb6B9uW.js +546 -0
  232. package/development/popover.js +1 -1
  233. package/development/popover.pure.js +1 -1
  234. package/development/radio-button/common/radio-button-common.js +1 -1
  235. package/development/radio-button/common.js +1 -1
  236. package/development/radio-button/radio-button.component.js +1 -1
  237. package/development/radio-button/radio-button.js +1 -1
  238. package/development/radio-button-common--d3WX-ZM.js +126 -0
  239. package/development/radio-button-panel/radio-button-panel.component.js +1 -1
  240. package/development/{radio-button.component-BrQF2FfA.js → radio-button.component-BauLEeCV.js} +2 -2
  241. package/development/radio-button.js +2 -2
  242. package/development/radio-button.pure.js +2 -2
  243. package/development/select/select.component.d.ts.map +1 -1
  244. package/development/select/select.component.js +1 -1
  245. package/development/select.component-D9SFG7Lk.js +814 -0
  246. package/development/select.js +1 -1
  247. package/development/select.pure.js +1 -1
  248. package/development/sidebar/sidebar/sidebar.component.d.ts +1 -0
  249. package/development/sidebar/sidebar/sidebar.component.d.ts.map +1 -1
  250. package/development/sidebar/sidebar/sidebar.component.js +1 -1
  251. package/development/sidebar/sidebar.js +1 -1
  252. package/development/sidebar-container.component-BDSoDAym.js +1 -1
  253. package/development/{sidebar.component-DvRTyNry.js → sidebar.component-BLqO52nH.js} +8 -1
  254. package/development/sidebar.js +1 -1
  255. package/development/sidebar.pure.js +1 -1
  256. package/development/slider/slider.component.js +1 -1
  257. package/development/{slider.component-BjfLnUvP.js → slider.component-C3qZB6ar.js} +2 -2
  258. package/development/slider.js +1 -1
  259. package/development/slider.pure.js +1 -1
  260. package/development/status/status.component.js +1 -1
  261. package/development/status.component-CPi1cPN0.js +111 -0
  262. package/development/status.js +1 -1
  263. package/development/status.pure.js +1 -1
  264. package/development/step-label.component-BJ9eainz.js +131 -0
  265. package/development/stepper/step-label/step-label.component.js +1 -1
  266. package/development/stepper/step-label.js +1 -1
  267. package/development/stepper.component-CxOBayI1.js +1 -1
  268. package/development/stepper.js +1 -1
  269. package/development/stepper.pure.js +1 -1
  270. package/development/sticky-bar.component-Dzrdsnxu.js +1 -1
  271. package/development/styles-D8-q-irv.js +1 -1
  272. package/development/styles-Jlhoev1S.js +14 -0
  273. package/development/tab-group.component-DldBA45K.js +275 -0
  274. package/development/{tab-label.component-14j2eh4Z.js → tab-label.component-B9e9kgVf.js} +2 -2
  275. package/development/tabs/common/styles.js +1 -1
  276. package/development/tabs/common.js +1 -1
  277. package/development/tabs/tab-group/tab-group.component.d.ts +1 -0
  278. package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  279. package/development/tabs/tab-group/tab-group.component.js +1 -1
  280. package/development/tabs/tab-group.js +1 -1
  281. package/development/tabs/tab-label/tab-label.component.js +1 -1
  282. package/development/tabs/tab-label.js +1 -1
  283. package/development/tabs.js +3 -3
  284. package/development/tabs.pure.js +3 -3
  285. package/development/tag/tag/tag.component.js +1 -1
  286. package/development/tag/tag.js +1 -1
  287. package/development/tag.component-Bl1nlIXQ.js +245 -0
  288. package/development/tag.js +1 -1
  289. package/development/tag.pure.js +1 -1
  290. package/development/teaser-hero/teaser-hero.component.js +1 -1
  291. package/development/{teaser-hero.component-DNlc8Tbl.js → teaser-hero.component-BIOpoGME.js} +2 -2
  292. package/development/teaser-hero.js +1 -1
  293. package/development/teaser-hero.pure.js +1 -1
  294. package/development/teaser-product-common-DYX370pm.js +1 -1
  295. package/development/time-input.component-BtdSR8kB.js +1 -1
  296. package/development/timetable-form/timetable-form/timetable-form.component.js +1 -1
  297. package/development/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
  298. package/development/timetable-form/timetable-form-details.js +1 -1
  299. package/development/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
  300. package/development/timetable-form/timetable-form-field.js +1 -1
  301. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.d.ts +3 -0
  302. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.d.ts.map +1 -1
  303. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +1 -1
  304. package/development/timetable-form/timetable-form-swap-button.js +1 -1
  305. package/development/timetable-form/timetable-form.js +1 -1
  306. package/development/timetable-form-details.component-DJl5Qt9y.js +26 -0
  307. package/development/timetable-form-field.component-DQ_TzcF4.js +44 -0
  308. package/development/{timetable-form-swap-button.component-BUKUjrpl.js → timetable-form-swap-button.component-Bh9aPmdn.js} +4 -1
  309. package/development/timetable-form.component-N8h4JBlH.js +27 -0
  310. package/development/timetable-form.js +4 -4
  311. package/development/timetable-form.pure.js +4 -4
  312. package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
  313. package/development/timetable-occupancy.component-BBcznUh0.js +124 -0
  314. package/development/timetable-occupancy.js +1 -1
  315. package/development/timetable-occupancy.pure.js +1 -1
  316. package/development/title/title-base.js +1 -1
  317. package/development/title/title.component.js +1 -1
  318. package/development/{title-base-CBE_2Hkb.js → title-base-BdYKwj3-.js} +2 -2
  319. package/development/{title.component-Dk23JVct.js → title.component-DSXVkddh.js} +2 -2
  320. package/development/title.js +2 -2
  321. package/development/title.pure.js +2 -2
  322. package/development/toast/toast.component.js +1 -1
  323. package/development/toast.component-IhHx0Qt3.js +275 -0
  324. package/development/toast.js +1 -1
  325. package/development/toast.pure.js +1 -1
  326. package/development/toggle/toggle/toggle.component.d.ts.map +1 -1
  327. package/development/toggle/toggle/toggle.component.js +1 -1
  328. package/development/toggle/toggle-option/toggle-option.component.d.ts +1 -0
  329. package/development/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
  330. package/development/toggle/toggle-option/toggle-option.component.js +1 -1
  331. package/development/toggle/toggle-option.js +1 -1
  332. package/development/toggle/toggle.js +1 -1
  333. package/development/toggle-check/toggle-check.component.js +1 -1
  334. package/development/toggle-check.component-_fDAuLob.js +159 -0
  335. package/development/toggle-check.js +1 -1
  336. package/development/toggle-check.pure.js +1 -1
  337. package/development/toggle-option.component-DTS3a603.js +167 -0
  338. package/development/toggle.component-BJpD1b9H.js +249 -0
  339. package/development/toggle.js +2 -2
  340. package/development/toggle.pure.js +2 -2
  341. package/development/tooltip/tooltip.component.js +1 -1
  342. package/development/tooltip.component-YaUQA-Id.js +378 -0
  343. package/development/tooltip.js +1 -1
  344. package/development/tooltip.pure.js +1 -1
  345. package/development/train/train-wagon/train-wagon.component.js +1 -1
  346. package/development/train/train-wagon.js +1 -1
  347. package/development/{train-wagon.component-BzA8-S_6.js → train-wagon.component-CNxkffOO.js} +2 -2
  348. package/development/train.js +1 -1
  349. package/development/train.pure.js +1 -1
  350. package/dialog/dialog/dialog.component.js +1 -1
  351. package/dialog/dialog.js +1 -1
  352. package/{dialog.component-B3oQbMki.js → dialog.component-Dv5ch5mh.js} +1 -1
  353. package/dialog.js +1 -1
  354. package/dialog.pure.js +1 -1
  355. package/{error.component-B_D8WUP5.js → error.component-DH9Obd7a.js} +1 -1
  356. package/expansion-panel/expansion-panel/expansion-panel.component.js +1 -1
  357. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  358. package/expansion-panel/expansion-panel-header.js +1 -1
  359. package/expansion-panel/expansion-panel.js +1 -1
  360. package/{expansion-panel-header.component-B_dQ3ZWT.js → expansion-panel-header.component-FPoEEoZR.js} +1 -1
  361. package/{expansion-panel.component-BJCjwcoj.js → expansion-panel.component-DBnZ6IgB.js} +1 -1
  362. package/expansion-panel.js +2 -2
  363. package/expansion-panel.pure.js +2 -2
  364. package/file-selector/common/file-selector-common.js +1 -1
  365. package/file-selector/common.js +1 -1
  366. package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  367. package/file-selector/file-selector-dropzone.js +1 -1
  368. package/{file-selector-common-DN4vHMpP.js → file-selector-common-BL9mM4SZ.js} +38 -40
  369. package/{file-selector-dropzone.component-CBKsZsC2.js → file-selector-dropzone.component-Ctar2kEw.js} +3 -4
  370. package/file-selector.js +2 -2
  371. package/file-selector.pure.js +2 -2
  372. package/footer/footer.component.js +1 -1
  373. package/{footer.component-BM91Utiz.js → footer.component-b2docCY_.js} +1 -1
  374. package/footer.js +1 -1
  375. package/footer.pure.js +1 -1
  376. package/form-field/error/error.component.js +1 -1
  377. package/form-field/error.js +1 -1
  378. package/form-field/form-field/form-field.component.js +1 -1
  379. package/form-field/form-field.js +1 -1
  380. package/form-field/hint/hint.component.js +1 -1
  381. package/{form-field.component-D50q1wC0.js → form-field.component-BwZDRKbQ.js} +17 -16
  382. package/form-field.js +3 -3
  383. package/form-field.pure.js +3 -3
  384. package/header/header/header.component.js +1 -1
  385. package/header/header.js +1 -1
  386. package/{header.component-hZqs06Yh.js → header.component-UQUFcMOD.js} +1 -1
  387. package/header.js +1 -1
  388. package/header.pure.js +1 -1
  389. package/{hint.component-BVUUrSSu.js → hint.component-CE2D2TLU.js} +1 -1
  390. package/link/common/block-link-common.js +1 -1
  391. package/link/common.js +1 -1
  392. package/link.js +1 -1
  393. package/link.pure.js +1 -1
  394. package/message/message.component.js +1 -1
  395. package/message.component-DhN-aFms.js +27 -0
  396. package/message.js +1 -1
  397. package/message.pure.js +1 -1
  398. package/navigation/common/navigation-action-common.js +1 -1
  399. package/navigation/common.js +1 -1
  400. package/navigation/navigation-marker/navigation-marker.component.js +1 -1
  401. package/navigation/navigation-marker.js +1 -1
  402. package/navigation/navigation-section/navigation-section.component.js +1 -1
  403. package/navigation/navigation-section.js +1 -1
  404. package/{navigation-action-common-2ix0xrBs.js → navigation-action-common-AzRltwrb.js} +1 -1
  405. package/{navigation-marker.component-DKxK16IU.js → navigation-marker.component-BzbbKlfT.js} +1 -1
  406. package/{navigation-section.component-CvjXVn5r.js → navigation-section.component-DQxCi3O_.js} +1 -1
  407. package/navigation.js +3 -3
  408. package/navigation.pure.js +3 -3
  409. package/notification/notification.component.js +1 -1
  410. package/{notification.component-DjXJFh1G.js → notification.component-D80Wl5xM.js} +1 -1
  411. package/notification.js +1 -1
  412. package/notification.pure.js +1 -1
  413. package/off-brand-theme.css +209 -110
  414. package/option/option/option-base-element.js +1 -1
  415. package/option/option/option.component.js +1 -1
  416. package/option/option.js +1 -1
  417. package/{option.component-M-V_tdSC.js → option.component-2Xf1hz7y.js} +1 -1
  418. package/option.js +1 -1
  419. package/option.pure.js +1 -1
  420. package/package.json +1 -1
  421. package/paginator/compact-paginator/compact-paginator.component.js +1 -1
  422. package/paginator/compact-paginator.js +1 -1
  423. package/paginator/paginator/paginator.component.js +1 -1
  424. package/paginator/paginator.js +1 -1
  425. package/{paginator.component-CZt7Epaf.js → paginator.component-BEr0qU0m.js} +1 -1
  426. package/paginator.js +2 -2
  427. package/paginator.pure.js +2 -2
  428. package/popover/popover.component.js +1 -1
  429. package/{popover.component-DWNuW4wM.js → popover.component-DAgwBcBW.js} +32 -28
  430. package/popover.js +1 -1
  431. package/popover.pure.js +1 -1
  432. package/radio-button/common/radio-button-common.js +1 -1
  433. package/radio-button/common.js +1 -1
  434. package/radio-button/radio-button.component.js +1 -1
  435. package/radio-button/radio-button.js +1 -1
  436. package/{radio-button-common-DP4Izwwf.js → radio-button-common-C1mIf9KY.js} +1 -1
  437. package/{radio-button.component-BiGeOI5L.js → radio-button.component-Bae-yK_U.js} +1 -1
  438. package/radio-button.js +2 -2
  439. package/radio-button.pure.js +2 -2
  440. package/safety-theme.css +209 -110
  441. package/select/select.component.js +1 -1
  442. package/{select.component-DWLdApt_.js → select.component-BT6RbERH.js} +3 -3
  443. package/select.js +1 -1
  444. package/select.pure.js +1 -1
  445. package/sidebar/sidebar/sidebar.component.js +1 -1
  446. package/sidebar/sidebar.js +1 -1
  447. package/{sidebar.component-DxOx02l6.js → sidebar.component-Dsx1FAg0.js} +5 -3
  448. package/sidebar.js +1 -1
  449. package/sidebar.pure.js +1 -1
  450. package/slider/slider.component.js +1 -1
  451. package/{slider.component-CoqCppCq.js → slider.component-BlRVR6iU.js} +1 -1
  452. package/slider.js +1 -1
  453. package/slider.pure.js +1 -1
  454. package/standard-theme.css +209 -110
  455. package/status/status.component.js +1 -1
  456. package/{status.component-BFyXTFXH.js → status.component-lw_WDs7W.js} +1 -1
  457. package/status.js +1 -1
  458. package/status.pure.js +1 -1
  459. package/step-label.component-Dqis4FAN.js +80 -0
  460. package/stepper/step-label/step-label.component.js +1 -1
  461. package/stepper/step-label.js +1 -1
  462. package/stepper.js +1 -1
  463. package/stepper.pure.js +1 -1
  464. package/styles-BNu0Fjw5.js +5 -0
  465. package/{tab-group.component-Doy39cEh.js → tab-group.component-CHQlrhUy.js} +36 -33
  466. package/{tab-label.component-CD56RH1Z.js → tab-label.component-CpdUyfiq.js} +1 -1
  467. package/table.css +32 -37
  468. package/tabs/common/styles.js +1 -1
  469. package/tabs/common.js +1 -1
  470. package/tabs/tab-group/tab-group.component.js +1 -1
  471. package/tabs/tab-group.js +1 -1
  472. package/tabs/tab-label/tab-label.component.js +1 -1
  473. package/tabs/tab-label.js +1 -1
  474. package/tabs.js +3 -3
  475. package/tabs.pure.js +3 -3
  476. package/tag/tag/tag.component.js +1 -1
  477. package/tag/tag.js +1 -1
  478. package/{tag.component-CzYJZuFT.js → tag.component-CsNszQvB.js} +1 -1
  479. package/tag.js +1 -1
  480. package/tag.pure.js +1 -1
  481. package/teaser-hero/teaser-hero.component.js +1 -1
  482. package/{teaser-hero.component-CHy82SKQ.js → teaser-hero.component-D8yj-N5n.js} +1 -1
  483. package/teaser-hero.js +1 -1
  484. package/teaser-hero.pure.js +1 -1
  485. package/timetable-form/timetable-form/timetable-form.component.js +1 -1
  486. package/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
  487. package/timetable-form/timetable-form-details.js +1 -1
  488. package/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
  489. package/timetable-form/timetable-form-field.js +1 -1
  490. package/timetable-form/timetable-form.js +1 -1
  491. package/timetable-form-details.component-mWKaBW_9.js +16 -0
  492. package/timetable-form-field.component-Cv_lv8vf.js +32 -0
  493. package/{timetable-form.component-CU1FXAZH.js → timetable-form.component-YcvKAlfz.js} +1 -1
  494. package/timetable-form.js +3 -3
  495. package/timetable-form.pure.js +3 -3
  496. package/timetable-occupancy/timetable-occupancy.component.js +1 -1
  497. package/{timetable-occupancy.component-Db9SfiyD.js → timetable-occupancy.component-BCXPxz68.js} +1 -1
  498. package/timetable-occupancy.js +1 -1
  499. package/timetable-occupancy.pure.js +1 -1
  500. package/title/title-base.js +1 -1
  501. package/title/title.component.js +1 -1
  502. package/{title-base-D72Xo2SW.js → title-base-DV0qhfG9.js} +1 -1
  503. package/{title.component-CoMa84Sz.js → title.component-DAGyXwDm.js} +1 -1
  504. package/title.js +2 -2
  505. package/title.pure.js +2 -2
  506. package/toast/toast.component.js +1 -1
  507. package/{toast.component-BDE1vYLS.js → toast.component-CORnf2Tl.js} +3 -3
  508. package/toast.js +1 -1
  509. package/toast.pure.js +1 -1
  510. package/toggle/toggle/toggle.component.js +1 -1
  511. package/toggle/toggle-option/toggle-option.component.js +1 -1
  512. package/toggle/toggle-option.js +1 -1
  513. package/toggle/toggle.js +1 -1
  514. package/toggle-check/toggle-check.component.js +1 -1
  515. package/toggle-check.component-DvoslSRr.js +119 -0
  516. package/toggle-check.js +1 -1
  517. package/toggle-check.pure.js +1 -1
  518. package/{toggle-option.component-Bw-GXUQK.js → toggle-option.component-pX3tNwjE.js} +5 -7
  519. package/{toggle.component-BPpsMMPG.js → toggle.component-B20xAw1V.js} +6 -10
  520. package/toggle.js +2 -2
  521. package/toggle.pure.js +2 -2
  522. package/tooltip/tooltip.component.js +1 -1
  523. package/{tooltip.component-BY9mV5Sw.js → tooltip.component-ocVpJogs.js} +1 -1
  524. package/tooltip.js +1 -1
  525. package/tooltip.pure.js +1 -1
  526. package/train/train-wagon/train-wagon.component.js +1 -1
  527. package/train/train-wagon.js +1 -1
  528. package/{train-wagon.component-BwCcF4GD.js → train-wagon.component-BT4Xnzxr.js} +1 -1
  529. package/train.js +1 -1
  530. package/train.pure.js +1 -1
  531. package/button-common-yFVzAoGy.js +0 -87
  532. package/core/styles/table.scss +0 -156
  533. package/development/autocomplete-base-element-YwfObJzm.js +0 -678
  534. package/development/breadcrumb-group.component-B3Shlng3.js +0 -195
  535. package/development/calendar.component-6p9vsp-V.js +0 -1452
  536. package/development/card-badge.component-D4Mes-Gw.js +0 -84
  537. package/development/checkbox-common-DiTlHvFJ.js +0 -86
  538. package/development/chip-group.component-CvpUdzu1.js +0 -409
  539. package/development/compact-paginator.component-TfDVt_ST.js +0 -51
  540. package/development/datepicker-button-CANzGO5m.js +0 -163
  541. package/development/datepicker.component-C8XQVo45.js +0 -213
  542. package/development/error.component-xD_c9IBA.js +0 -55
  543. package/development/expansion-panel-header.component-Bw4uROTe.js +0 -85
  544. package/development/file-selector-common-C82QR3zb.js +0 -418
  545. package/development/file-selector-dropzone.component-B-cBO4bf.js +0 -112
  546. package/development/footer.component-BblB5218.js +0 -172
  547. package/development/form-field.component-BEXX0OcL.js +0 -702
  548. package/development/header.component-Cg0ZcA1s.js +0 -340
  549. package/development/hint.component-BsIzdUOV.js +0 -38
  550. package/development/message.component-CeJhYXSC.js +0 -44
  551. package/development/notification.component-Co9QChXc.js +0 -274
  552. package/development/option.component-CdL7fdzZ.js +0 -130
  553. package/development/paginator.component-DAdS2mMm.js +0 -259
  554. package/development/popover.component-BCMdJBUR.js +0 -537
  555. package/development/radio-button-common-C3-xuY78.js +0 -126
  556. package/development/select.component-CGNEhqzl.js +0 -812
  557. package/development/status.component-CHC2pBa-.js +0 -111
  558. package/development/step-label.component-CJFPHIZa.js +0 -131
  559. package/development/styles-DCQBzC2C.js +0 -14
  560. package/development/tab-group.component-DRipdAyc.js +0 -272
  561. package/development/tag.component-CnNPL6aI.js +0 -245
  562. package/development/timetable-form-details.component-C8awcdP5.js +0 -26
  563. package/development/timetable-form-field.component-BI24VjkC.js +0 -44
  564. package/development/timetable-form.component-CUG86CSN.js +0 -27
  565. package/development/timetable-occupancy.component-D_PXXvI9.js +0 -124
  566. package/development/toast.component-BnbpuU9L.js +0 -274
  567. package/development/toggle-check.component-BG4w_sE8.js +0 -159
  568. package/development/toggle-option.component-D-F7Fh7i.js +0 -168
  569. package/development/toggle.component-BFYLRN8o.js +0 -254
  570. package/development/tooltip.component-DzSd9VjW.js +0 -378
  571. package/message.component-BQjnZ5Z3.js +0 -27
  572. package/step-label.component-DnQBwnL8.js +0 -80
  573. package/styles-BUpK1iP2.js +0 -5
  574. package/timetable-form-details.component-CBZ7QSAx.js +0 -16
  575. package/timetable-form-field.component-BKxQQqt7.js +0 -32
  576. package/toggle-check.component-B6Ww5pLD.js +0 -119
@@ -0,0 +1,51 @@
1
+ import { html, unsafeCSS } from "lit";
2
+ import { SbbElement } from "./core/base-elements.js";
3
+ import { boxSizingStyles } from "./core/styles.js";
4
+ import { i18nPage, i18nPaginatorOf } from "./core/i18n.js";
5
+ import "./divider.js";
6
+ import "./screen-reader-only.js";
7
+ import { styleMap } from "lit/directives/style-map.js";
8
+ import { SbbPaginatorCommonElementMixin } from "./paginator/common/paginator-common.js";
9
+ //#region src/elements/paginator/compact-paginator/compact-paginator.scss?inline
10
+ var compact_paginator_default = ":host {\n display: flex;\n gap: var(--sbb-compact-paginator-gap);\n justify-content: var(--sbb-paginator-compact-justify-content, start);\n min-height: var(--sbb-compact-paginator-height);\n}\n\n:host([size=s]) {\n --sbb-compact-paginator-height: var(--sbb-size-element-xs);\n}\n\n:host([size=m]) {\n --sbb-compact-paginator-height: var(--sbb-size-element-m);\n}\n\n:host([negative]) {\n --sbb-compact-paginator-color: var(--sbb-color-5);\n}\n\n:host([pager-position=end]) {\n --sbb-paginator-compact-justify-content: end;\n}\n\n.sbb-paginator__pages {\n font-size: var(--sbb-compact-paginator-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n line-height: var(--sbb-typo-line-height-text);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--sbb-compact-paginator-pages-gap);\n color: var(--sbb-compact-paginator-color);\n}\n\n.sbb-compact-paginator__divider {\n height: 1rem;\n}";
11
+ //#endregion
12
+ //#region src/elements/paginator/compact-paginator/compact-paginator.component.ts
13
+ /**
14
+ * It displays a paginator component in compact mode.
15
+ */
16
+ var SbbCompactPaginatorElement = class extends SbbPaginatorCommonElementMixin(SbbElement) {
17
+ static {
18
+ this.elementName = "sbb-compact-paginator";
19
+ }
20
+ static {
21
+ this.styles = [boxSizingStyles, unsafeCSS(compact_paginator_default)];
22
+ }
23
+ static {
24
+ this.events = { page: "page" };
25
+ }
26
+ _renderPageNumbers() {
27
+ return html`
28
+ <span class="sbb-paginator__pages" aria-hidden="true"
29
+ >${this.pageIndex + 1}<sbb-divider
30
+ orientation="vertical"
31
+ class="sbb-compact-paginator__divider"
32
+ style=${styleMap({ "--sbb-divider-color": "currentcolor" })}
33
+ ?negative=${this.negative}
34
+ ></sbb-divider
35
+ >${this.numberOfPages()}</span
36
+ >
37
+ <sbb-screen-reader-only>
38
+ ${`${this.accessibilityPageLabel ? this.accessibilityPageLabel : i18nPage[this.language.current]} ${this.pageIndex + 1} ${i18nPaginatorOf[this.language.current]} ${this.numberOfPages()}`}
39
+ </sbb-screen-reader-only>
40
+ `;
41
+ }
42
+ renderPaginator() {
43
+ return html`
44
+ ${this.pagerPosition === "start" ? html`${this.renderPrevNextButtons()} ${this._renderPageNumbers()}` : html`${this._renderPageNumbers()} ${this.renderPrevNextButtons()}`}
45
+ `;
46
+ }
47
+ };
48
+ //#endregion
49
+ export { SbbCompactPaginatorElement as t };
50
+
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFjdC1wYWdpbmF0b3IuY29tcG9uZW50LTVfUTJSZXVsLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9wYWdpbmF0b3IvY29tcGFjdC1wYWdpbmF0b3IvY29tcGFjdC1wYWdpbmF0b3Iuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvcGFnaW5hdG9yL2NvbXBhY3QtcGFnaW5hdG9yL2NvbXBhY3QtcGFnaW5hdG9yLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogdmFyKC0tc2JiLWNvbXBhY3QtcGFnaW5hdG9yLWdhcCk7XG4gIGp1c3RpZnktY29udGVudDogdmFyKC0tc2JiLXBhZ2luYXRvci1jb21wYWN0LWp1c3RpZnktY29udGVudCwgc3RhcnQpO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1zYmItY29tcGFjdC1wYWdpbmF0b3ItaGVpZ2h0KTtcbn1cblxuOmhvc3QoW3NpemU9J3MnXSkge1xuICAtLXNiYi1jb21wYWN0LXBhZ2luYXRvci1oZWlnaHQ6IHZhcigtLXNiYi1zaXplLWVsZW1lbnQteHMpO1xufVxuXG46aG9zdChbc2l6ZT0nbSddKSB7XG4gIC0tc2JiLWNvbXBhY3QtcGFnaW5hdG9yLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC1tKTtcbn1cblxuOmhvc3QoW25lZ2F0aXZlXSkge1xuICAtLXNiYi1jb21wYWN0LXBhZ2luYXRvci1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xufVxuXG46aG9zdChbcGFnZXItcG9zaXRpb249J2VuZCddKSB7XG4gIC0tc2JiLXBhZ2luYXRvci1jb21wYWN0LWp1c3RpZnktY29udGVudDogZW5kO1xufVxuXG4uc2JiLXBhZ2luYXRvcl9fcGFnZXMge1xuICBmb250LXNpemU6IHZhcigtLXNiYi1jb21wYWN0LXBhZ2luYXRvci1mb250LXNpemUpO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc2JiLXR5cG8tbGV0dGVyLXNwYWNpbmctdGV4dCk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc2JiLWNvbXBhY3QtcGFnaW5hdG9yLXBhZ2VzLWdhcCk7XG4gIGNvbG9yOiB2YXIoLS1zYmItY29tcGFjdC1wYWdpbmF0b3ItY29sb3IpO1xufVxuXG4uc2JiLWNvbXBhY3QtcGFnaW5hdG9yX19kaXZpZGVyIHtcbiAgaGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoMTYpfTtcbn1cbiIsImltcG9ydCB7IGh0bWwsIHVuc2FmZUNTUywgdHlwZSBDU1NSZXN1bHRHcm91cCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBzdHlsZU1hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3N0eWxlLW1hcC5qcyc7XG5cbmltcG9ydCB7IFNiYkVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgaTE4blBhZ2UsIGkxOG5QYWdpbmF0b3JPZiB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi8uLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgeyBTYmJQYWdpbmF0b3JDb21tb25FbGVtZW50TWl4aW4gfSBmcm9tICcuLi9jb21tb24vcGFnaW5hdG9yLWNvbW1vbi50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2NvbXBhY3QtcGFnaW5hdG9yLnNjc3M/aW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9kaXZpZGVyLnRzJztcbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LnRzJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIHBhZ2luYXRvciBjb21wb25lbnQgaW4gY29tcGFjdCBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgU2JiQ29tcGFjdFBhZ2luYXRvckVsZW1lbnQgZXh0ZW5kcyBTYmJQYWdpbmF0b3JDb21tb25FbGVtZW50TWl4aW4oU2JiRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLWNvbXBhY3QtcGFnaW5hdG9yJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIHBhZ2U6ICdwYWdlJyxcbiAgfSBhcyBjb25zdDtcblxuICBwcml2YXRlIF9yZW5kZXJQYWdlTnVtYmVycygpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi1wYWdpbmF0b3JfX3BhZ2VzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPiR7dGhpcy5wYWdlSW5kZXggKyAxfTxzYmItZGl2aWRlclxuICAgICAgICAgIG9yaWVudGF0aW9uPVwidmVydGljYWxcIlxuICAgICAgICAgIGNsYXNzPVwic2JiLWNvbXBhY3QtcGFnaW5hdG9yX19kaXZpZGVyXCJcbiAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHsgJy0tc2JiLWRpdmlkZXItY29sb3InOiAnY3VycmVudGNvbG9yJyB9KX1cbiAgICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICA+PC9zYmItZGl2aWRlclxuICAgICAgICA+JHt0aGlzLm51bWJlck9mUGFnZXMoKX08L3NwYW5cbiAgICAgID5cbiAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICAke2Ake3RoaXMuYWNjZXNzaWJpbGl0eVBhZ2VMYWJlbCA/IHRoaXMuYWNjZXNzaWJpbGl0eVBhZ2VMYWJlbCA6IGkxOG5QYWdlW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19ICR7dGhpcy5wYWdlSW5kZXggKyAxfSAke2kxOG5QYWdpbmF0b3JPZlt0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfSAke3RoaXMubnVtYmVyT2ZQYWdlcygpfWB9XG4gICAgICA8L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgYDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJQYWdpbmF0b3IoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgJHt0aGlzLnBhZ2VyUG9zaXRpb24gPT09ICdzdGFydCdcbiAgICAgICAgPyBodG1sYCR7dGhpcy5yZW5kZXJQcmV2TmV4dEJ1dHRvbnMoKX0gJHt0aGlzLl9yZW5kZXJQYWdlTnVtYmVycygpfWBcbiAgICAgICAgOiBodG1sYCR7dGhpcy5fcmVuZGVyUGFnZU51bWJlcnMoKX0gJHt0aGlzLnJlbmRlclByZXZOZXh0QnV0dG9ucygpfWB9XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWNvbXBhY3QtcGFnaW5hdG9yJzogU2JiQ29tcGFjdFBhZ2luYXRvckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FDZ0JBLElBQWEsNkJBQWIsY0FBZ0QsK0JBQStCLFdBQVcsQ0FBQTs7QUFDeEQsT0FBQSxjQUFzQjs7O0FBQy9CLE9BQUEsU0FBeUIsQ0FBQyxpQkFBaUIsVUFBVSwwQkFBTSxDQUFDOzs7QUFDNUQsT0FBQSxTQUFpQyxFQUN0RCxNQUFNLFFBQ0U7O0NBRUYscUJBQWtCO0FBQ3hCLFNBQU8sSUFBSTs7V0FFSixLQUFLLFlBQVksRUFBQzs7O2tCQUdYLFNBQVMsRUFBRSx1QkFBdUIsZ0JBQWdCLENBQUMsQ0FBQTtzQkFDL0MsS0FBSyxTQUFBOztXQUVoQixLQUFLLGVBQWUsQ0FBQTs7O1VBR3JCLEdBQUcsS0FBSyx5QkFBeUIsS0FBSyx5QkFBeUIsU0FBUyxLQUFLLFNBQVMsU0FBUSxHQUFJLEtBQUssWUFBWSxFQUFDLEdBQUksZ0JBQWdCLEtBQUssU0FBUyxTQUFRLEdBQUksS0FBSyxlQUFlLEdBQUE7Ozs7Q0FLM0ssa0JBQWU7QUFDaEMsU0FBTyxJQUFJO1FBQ1AsS0FBSyxrQkFBa0IsVUFDckIsSUFBSSxHQUFHLEtBQUssdUJBQXVCLENBQUEsR0FBSSxLQUFLLG9CQUFvQixLQUNoRSxJQUFJLEdBQUcsS0FBSyxvQkFBb0IsQ0FBQSxHQUFJLEtBQUssdUJBQXVCLEdBQUEifQ==
@@ -129,4 +129,4 @@ var sbbInputModalityDetector = new SbbInputModalityDetector();
129
129
  //#endregion
130
130
  export { sbbInputModalityDetector };
131
131
 
132
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbW9kYWxpdHktZGV0ZWN0b3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYTExeS9pbnB1dC1tb2RhbGl0eS1kZXRlY3Rvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYWluL3NyYy9jZGsvYTExeS9pbnB1dC1tb2RhbGl0eS9pbnB1dC1tb2RhbGl0eS1kZXRlY3Rvci50c1xuXG5pbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IGdldEV2ZW50VGFyZ2V0IH0gZnJvbSAnLi4vZXZlbnRpbmcudHMnO1xuXG5pbXBvcnQge1xuICBpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyLFxuICBpc0Zha2VUb3VjaHN0YXJ0RnJvbVNjcmVlblJlYWRlcixcbn0gZnJvbSAnLi9mYWtlLWV2ZW50LWRldGVjdGlvbi50cyc7XG5cbmV4cG9ydCB0eXBlIFNiYklucHV0TW9kYWxpdHkgPSAndG91Y2gnIHwgJ21vdXNlJyB8ICdrZXlib2FyZCcgfCAncHJvZ3JhbScgfCBudWxsO1xuXG4vKiogT3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGJlaGF2aW9yIG9mIHRoZSBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IuICovXG5pbnRlcmZhY2UgU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yT3B0aW9ucyB7XG4gIC8qKiBLZXlzIHRvIGlnbm9yZSB3aGVuIGRldGVjdGluZyBrZXlib2FyZCBpbnB1dCBtb2RhbGl0eS4gKi9cbiAgaWdub3JlS2V5cz86IG51bWJlcltdO1xufVxuXG5jb25zdCBTSElGVCA9IDE2O1xuY29uc3QgQ09OVFJPTCA9IDE3O1xuY29uc3QgQUxUID0gMTg7XG5jb25zdCBNRVRBID0gOTE7IC8vIFdJTl9LRVlfTEVGVFxuY29uc3QgTUFDX01FVEEgPSAyMjQ7XG5cbi8qKlxuICogRGVmYXVsdCBvcHRpb25zIGZvciB0aGUgU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLlxuICpcbiAqIE1vZGlmaWVyIGtleXMgYXJlIGlnbm9yZWQgYnkgZGVmYXVsdCAoaS5lLiB3aGVuIHByZXNzZWQgd29uJ3QgY2F1c2UgdGhlIHNlcnZpY2UgdG8gZGV0ZWN0XG4gKiBrZXlib2FyZCBpbnB1dCBtb2RhbGl0eSkgZm9yIHR3byByZWFzb25zOlxuICpcbiAqIDEuIE1vZGlmaWVyIGtleXMgYXJlIGNvbW1vbmx5IHVzZWQgd2l0aCBtb3VzZSB0byBwZXJmb3JtIGFjdGlvbnMgc3VjaCBhcyAncmlnaHQgY2xpY2snIG9yICdvcGVuXG4gKiAgICBpbiBuZXcgdGFiJywgYW5kIGFyZSB0aHVzIGxlc3MgcmVwcmVzZW50YXRpdmUgb2YgYWN0dWFsIGtleWJvYXJkIGludGVyYWN0aW9uLlxuICogMi4gVm9pY2VPdmVyIHRyaWdnZXJzIHNvbWUga2V5Ym9hcmQgZXZlbnRzIHdoZW4gbGluZWFybHkgbmF2aWdhdGluZyB3aXRoIENvbnRyb2wgKyBPcHRpb24gKGJ1dFxuICogICAgY29uZnVzaW5nbHkgbm90IHdpdGggQ2FwcyBMb2NrKS4gVGh1cywgdG8gaGF2ZSBwYXJpdHkgd2l0aCBvdGhlciBzY3JlZW4gcmVhZGVycywgd2UgaWdub3JlXG4gKiAgICB0aGVzZSBrZXlzIHNvLCBhcyB0byBub3QgdXBkYXRlIHRoZSBpbnB1dCBtb2RhbGl0eS5cbiAqXG4gKiBOb3RlIHRoYXQgd2UgZG8gbm90IGJ5IGRlZmF1bHQgaWdub3JlIHRoZSByaWdodCBNZXRhIGtleSBvbiBTYWZhcmkgYmVjYXVzZSBpdCBoYXMgdGhlIHNhbWUga2V5XG4gKiBjb2RlIGFzIHRoZSBDb250ZXh0TWVudSBrZXkgb24gb3RoZXIgYnJvd3NlcnMuIFdoZW4gd2Ugc3dpdGNoIHRvIHVzaW5nIGV2ZW50LmtleSwgd2UgY2FuXG4gKiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSB0d28uXG4gKi9cbmNvbnN0IGlucHV0TW9kYWxpdHlEZXRlY3Rvck9wdGlvbnM6IFNiYklucHV0TW9kYWxpdHlEZXRlY3Rvck9wdGlvbnMgPSB7XG4gIGlnbm9yZUtleXM6IFtBTFQsIENPTlRST0wsIE1BQ19NRVRBLCBNRVRBLCBTSElGVF0sXG59O1xuXG4vKipcbiAqIFRoZSBhbW91bnQgb2YgdGltZSBuZWVkZWQgdG8gcGFzcyBhZnRlciBhIHRvdWNoc3RhcnQgZXZlbnQgaW4gb3JkZXIgZm9yIGEgc3Vic2VxdWVudCBtb3VzZWRvd25cbiAqIGV2ZW50IHRvIGJlIGF0dHJpYnV0ZWQgYXMgbW91c2UgYW5kIG5vdCB0b3VjaC5cbiAqXG4gKiBUaHJvdWdoIHRyaWFsIGFuZCBlcnJvciBpdCB3YXMgZm91bmQgdGhhdCBhIHZhbHVlIG9mIGFyb3VuZCA2NTBtcyBzZWVtcyBhcHByb3ByaWF0ZS5cbiAqL1xuY29uc3QgdG91Y2hCdWZmZXJNcyA9IDY1MDtcblxuLyoqXG4gKiBFdmVudCBsaXN0ZW5lciBvcHRpb25zIHRoYXQgZW5hYmxlIGNhcHR1cmluZyBhbmQgYWxzbyBtYXJrIHRoZSBsaXN0ZW5lciBhcyBwYXNzaXZlIGlmIHRoZSBicm93c2VyXG4gKiBzdXBwb3J0cyBpdC5cbiAqL1xuY29uc3QgbW9kYWxpdHlFdmVudExpc3RlbmVyT3B0aW9ucyA9IHtcbiAgcGFzc2l2ZTogdHJ1ZSxcbiAgY2FwdHVyZTogdHJ1ZSxcbn07XG5cbi8qKlxuICogU2VydmljZSB0aGF0IGRldGVjdHMgdGhlIHVzZXIncyBpbnB1dCBtb2RhbGl0eS5cbiAqXG4gKiBUaGlzIHNlcnZpY2UgZG9lcyBub3QgdXBkYXRlIHRoZSBpbnB1dCBtb2RhbGl0eSB3aGVuIGEgdXNlciBuYXZpZ2F0ZXMgd2l0aCBhIHNjcmVlbiByZWFkZXJcbiAqIChlLmcuIGxpbmVhciBuYXZpZ2F0aW9uIHdpdGggVm9pY2VPdmVyLCBvYmplY3QgbmF2aWdhdGlvbiAvIGJyb3dzZSBtb2RlIHdpdGggTlZEQSwgdmlydHVhbCBQQ1xuICogY3Vyc29yIG1vZGUgd2l0aCBKQVdTKS4gVGhpcyBpcyBpbiBwYXJ0IGR1ZSB0byB0ZWNobmljYWwgbGltaXRhdGlvbnMgKGkuZS4ga2V5Ym9hcmQgZXZlbnRzIGRvIG5vdFxuICogZmlyZSBhcyBleHBlY3RlZCBpbiB0aGVzZSBtb2RlcykgYnV0IGlzIGFsc28gYXJndWFibHkgdGhlIGNvcnJlY3QgYmVoYXZpb3IuIE5hdmlnYXRpbmcgd2l0aCBhXG4gKiBzY3JlZW4gcmVhZGVyIGlzIGFraW4gdG8gdmlzdWFsbHkgc2Nhbm5pbmcgYSBwYWdlLCBhbmQgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyBhY3R1YWwgdXNlclxuICogaW5wdXQgaW50ZXJhY3Rpb24uXG4gKlxuICogV2hlbiBhIHVzZXIgaXMgbm90IG5hdmlnYXRpbmcgYnV0ICppbnRlcmFjdGluZyogd2l0aCBhIHNjcmVlbiByZWFkZXIsIHRoaXMgc2VydmljZSBhdHRlbXB0cyB0b1xuICogdXBkYXRlIHRoZSBpbnB1dCBtb2RhbGl0eSB0byBrZXlib2FyZCwgYnV0IGluIGdlbmVyYWwgdGhpcyBzZXJ2aWNlJ3MgYmVoYXZpb3IgaXMgbGFyZ2VseVxuICogdW5kZWZpbmVkLlxuICovXG5jbGFzcyBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3Ige1xuICAvKiogVGhlIG1vc3QgcmVjZW50bHkgZGV0ZWN0ZWQgaW5wdXQgbW9kYWxpdHkuICovXG4gIHB1YmxpYyBnZXQgbW9zdFJlY2VudE1vZGFsaXR5KCk6IFNiYklucHV0TW9kYWxpdHkgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbW9zdFJlY2VudE1vZGFsaXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtb3N0IHJlY2VudCBtb2RhbGl0eSBtdXN0IGJlIGluaXRpYWxpc2VkIHdpdGggdGhlIHZhbHVlICdtb3VzZScgdG8gY292ZXIgdGhlIGNhc2Ugd2hlcmUgYW4gYWN0aW9uIGlzXG4gICAqIHBlcmZvcm1lZCBidXQgbm8gbW91c2Ugb3Iga2V5Ym9hcmQgZXZlbnQgaGFzIHlldCBvY2N1cnJlZCBvbiB0aGUgcGFnZSAoZS5nLiBgc2JiLXBvcG92ZXJgIHdpdGggaG92ZXIgdHJpZ2dlcikuXG4gICAqL1xuICBwcml2YXRlIF9tb3N0UmVjZW50TW9kYWxpdHk6IFNiYklucHV0TW9kYWxpdHkgfCBudWxsID0gJ21vdXNlJztcblxuICAvKipcbiAgICogVGhlIG1vc3QgcmVjZW50bHkgZGV0ZWN0ZWQgaW5wdXQgbW9kYWxpdHkgZXZlbnQgdGFyZ2V0LiBJcyBudWxsIGlmIG5vIGlucHV0IG1vZGFsaXR5IGhhcyBiZWVuXG4gICAqIGRldGVjdGVkIG9yIGlmIHRoZSBhc3NvY2lhdGVkIGV2ZW50IHRhcmdldCBpcyBudWxsIGZvciBzb21lIHVua25vd24gcmVhc29uLlxuICAgKi9cbiAgcHVibGljIGdldCBtb3N0UmVjZW50VGFyZ2V0KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21vc3RSZWNlbnRUYXJnZXQ7XG4gIH1cbiAgcHJpdmF0ZSBfbW9zdFJlY2VudFRhcmdldDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogT3B0aW9ucyBmb3IgdGhpcyBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnM6IFNiYklucHV0TW9kYWxpdHlEZXRlY3Rvck9wdGlvbnMgPSB7XG4gICAgLi4uaW5wdXRNb2RhbGl0eURldGVjdG9yT3B0aW9ucyxcbiAgfTtcblxuICAvKipcbiAgICogVGhlIHRpbWVzdGFtcCBvZiB0aGUgbGFzdCB0b3VjaCBpbnB1dCBtb2RhbGl0eS4gVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBtb3VzZWRvd24gZXZlbnRzXG4gICAqIHNob3VsZCBiZSBhdHRyaWJ1dGVkIHRvIG1vdXNlIG9yIHRvdWNoLlxuICAgKi9cbiAgcHJpdmF0ZSBfbGFzdFRvdWNoTXMgPSAwO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fb25LZXlkb3duLCBtb2RhbGl0eUV2ZW50TGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuX29uTW91c2Vkb3duLCBtb2RhbGl0eUV2ZW50TGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLl9vblRvdWNoc3RhcnQsIG1vZGFsaXR5RXZlbnRMaXN0ZW5lck9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVTdGF0ZSgnbW91c2UnLCBudWxsKTtcbiAgICB0aGlzLl9sYXN0VG91Y2hNcyA9IDA7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBrZXlkb3duIGV2ZW50cy4gTXVzdCBiZSBhbiBhcnJvdyBmdW5jdGlvbiBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY29udGV4dCB3aGVuIGl0IGdldHNcbiAgICogYm91bmQuXG4gICAqL1xuICBwcml2YXRlIF9vbktleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAvLyBJZiB0aGlzIGlzIG9uZSBvZiB0aGUga2V5cyB3ZSBzaG91bGQgaWdub3JlLCB0aGVuIGlnbm9yZSBpdCBhbmQgZG9uJ3QgdXBkYXRlIHRoZSBpbnB1dFxuICAgIC8vIG1vZGFsaXR5IHRvIGtleWJvYXJkLlxuICAgIGlmICh0aGlzLl9vcHRpb25zPy5pZ25vcmVLZXlzPy5zb21lKChrZXlDb2RlKSA9PiBrZXlDb2RlID09PSBldmVudC5rZXlDb2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZVN0YXRlKCdrZXlib2FyZCcsIGV2ZW50KTtcbiAgfTtcblxuICAvKipcbiAgICogSGFuZGxlcyBtb3VzZWRvd24gZXZlbnRzLiBNdXN0IGJlIGFuIGFycm93IGZ1bmN0aW9uIGluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBjb250ZXh0IHdoZW4gaXRcbiAgICogZ2V0cyBib3VuZC5cbiAgICovXG4gIHByaXZhdGUgX29uTW91c2Vkb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgLy8gVG91Y2hlcyB0cmlnZ2VyIGJvdGggdG91Y2ggYW5kIG1vdXNlIGV2ZW50cywgc28gd2UgbmVlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG1vdXNlIGV2ZW50c1xuICAgIC8vIHRoYXQgd2VyZSB0cmlnZ2VyZWQgdmlhIG1vdXNlIHZzIHRvdWNoLiBUbyBkbyBzbywgY2hlY2sgaWYgdGhlIG1vdXNlIGV2ZW50IG9jY3VycyBjbG9zZWx5XG4gICAgLy8gYWZ0ZXIgdGhlIHByZXZpb3VzIHRvdWNoIGV2ZW50LlxuICAgIGlmIChEYXRlLm5vdygpIC0gdGhpcy5fbGFzdFRvdWNoTXMgPCB0b3VjaEJ1ZmZlck1zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRmFrZSBtb3VzZWRvd24gZXZlbnRzIGFyZSBmaXJlZCBieSBzb21lIHNjcmVlbiByZWFkZXJzIHdoZW4gY29udHJvbHMgYXJlIGFjdGl2YXRlZCBieSB0aGVcbiAgICAvLyBzY3JlZW4gcmVhZGVyLiBBdHRyaWJ1dGUgdGhlbSB0byBrZXlib2FyZCBpbnB1dCBtb2RhbGl0eS5cbiAgICB0aGlzLl91cGRhdGVTdGF0ZShpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyKGV2ZW50KSA/ICdrZXlib2FyZCcgOiAnbW91c2UnLCBldmVudCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdG91Y2hzdGFydCBldmVudHMuIE11c3QgYmUgYW4gYXJyb3cgZnVuY3Rpb24gaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNvbnRleHQgd2hlbiBpdFxuICAgKiBnZXRzIGJvdW5kLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25Ub3VjaHN0YXJ0ID0gKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCA9PiB7XG4gICAgLy8gU2FtZSBzY2VuYXJpbyBhcyBtZW50aW9uZWQgaW4gX29uTW91c2Vkb3duLCBidXQgb24gdG91Y2ggc2NyZWVuIGRldmljZXMsIGZha2UgdG91Y2hzdGFydFxuICAgIC8vIGV2ZW50cyBhcmUgZmlyZWQuIEFnYWluLCBhdHRyaWJ1dGUgdG8ga2V5Ym9hcmQgaW5wdXQgbW9kYWxpdHkuXG4gICAgaWYgKGlzRmFrZVRvdWNoc3RhcnRGcm9tU2NyZWVuUmVhZGVyKGV2ZW50KSkge1xuICAgICAgdGhpcy5fdXBkYXRlU3RhdGUoJ2tleWJvYXJkJywgZXZlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB0aW1lc3RhbXAgb2YgdGhpcyB0b3VjaCBldmVudCwgYXMgaXQncyB1c2VkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gbW91c2UgZXZlbnRzXG4gICAgLy8gdHJpZ2dlcmVkIHZpYSBtb3VzZSB2cyB0b3VjaC5cbiAgICB0aGlzLl9sYXN0VG91Y2hNcyA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl91cGRhdGVTdGF0ZSgndG91Y2gnLCBldmVudCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfdXBkYXRlU3RhdGUobW9kYWxpdHk6IFNiYklucHV0TW9kYWxpdHksIGV2ZW50OiBFdmVudCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbW9zdFJlY2VudE1vZGFsaXR5KSB7XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShgc2JiLWZvY3VzLW1vZGFsaXR5LSR7dGhpcy5fbW9zdFJlY2VudE1vZGFsaXR5fWApO1xuICAgIH1cbiAgICB0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHkgPSBtb2RhbGl0eTtcbiAgICB0aGlzLl9tb3N0UmVjZW50VGFyZ2V0ID0gZXZlbnQgPyBnZXRFdmVudFRhcmdldChldmVudCkgOiBudWxsO1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKGBzYmItZm9jdXMtbW9kYWxpdHktJHt0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHl9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciA9IG5ldyBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5Q0EsSUFBTSwrQkFBZ0UsRUFDcEUsWUFBWTtDQXJCRjtDQURJO0NBR0M7Q0FESjtDQUhDO0NBdUJxQyxFQUNsRDs7Ozs7OztBQVFELElBQU0sZ0JBQWdCOzs7OztBQU10QixJQUFNLCtCQUErQjtDQUNuQyxTQUFTO0NBQ1QsU0FBUztDQUNWOzs7Ozs7Ozs7Ozs7Ozs7QUFnQkQsSUFBTSwyQkFBTixNQUE4Qjs7Q0FFNUIsSUFBVyxxQkFBa0I7QUFDM0IsU0FBTyxLQUFLOzs7Ozs7Q0FhZCxJQUFXLG1CQUFnQjtBQUN6QixTQUFPLEtBQUs7O0NBZWQsY0FBQTs7Ozs7QUF0QlEsT0FBQSxzQkFBK0M7QUFTL0MsT0FBQSxvQkFBd0M7O0FBRy9CLE9BQUEsV0FBNEMsRUFDM0QsR0FBRyw4QkFDSjs7Ozs7QUFNTyxPQUFBLGVBQWU7Ozs7O0FBbUJmLE9BQUEsY0FBYyxVQUE4QjtBQUdsRCxPQUFJLEtBQUssVUFBVSxZQUFZLE1BQU0sWUFBWSxZQUFZLE1BQU0sUUFBUSxDQUN6RTtBQUdGLFFBQUssYUFBYSxZQUFZLE1BQU07Ozs7OztBQU85QixPQUFBLGdCQUFnQixVQUEyQjtBQUlqRCxPQUFJLEtBQUssS0FBSyxHQUFHLEtBQUssZUFBZSxjQUNuQztBQUtGLFFBQUssYUFBYSxnQ0FBZ0MsTUFBTSxHQUFHLGFBQWEsU0FBUyxNQUFNOzs7Ozs7QUFPakYsT0FBQSxpQkFBaUIsVUFBMkI7QUFHbEQsT0FBSSxpQ0FBaUMsTUFBTSxFQUFFO0FBQzNDLFNBQUssYUFBYSxZQUFZLE1BQU07QUFDcEM7O0FBS0YsUUFBSyxlQUFlLEtBQUssS0FBSztBQUU5QixRQUFLLGFBQWEsU0FBUyxNQUFNOztBQTNEakMsTUFBSSxDQUFDLFVBQVU7QUFDYixZQUFTLGlCQUFpQixXQUFXLEtBQUssWUFBWSw2QkFBNkI7QUFDbkYsWUFBUyxpQkFBaUIsYUFBYSxLQUFLLGNBQWMsNkJBQTZCO0FBQ3ZGLFlBQVMsaUJBQWlCLGNBQWMsS0FBSyxlQUFlLDZCQUE2Qjs7O0NBSXRGLFFBQUs7QUFDVixPQUFLLGFBQWEsU0FBUyxLQUFLO0FBQ2hDLE9BQUssZUFBZTs7Q0FxRGQsYUFBYSxVQUE0QixPQUFtQjtBQUNsRSxNQUFJLEtBQUssb0JBQ1AsVUFBUyxnQkFBZ0IsVUFBVSxPQUFPLHNCQUFzQixLQUFLLHNCQUFzQjtBQUU3RixPQUFLLHNCQUFzQjtBQUMzQixPQUFLLG9CQUFvQixRQUFRLGVBQWUsTUFBTSxHQUFHO0FBQ3pELFdBQVMsZ0JBQWdCLFVBQVUsSUFBSSxzQkFBc0IsS0FBSyxzQkFBc0I7OztBQUk1RixJQUFhLDJCQUEyQixJQUFJLDBCQUEwQiJ9
132
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbW9kYWxpdHktZGV0ZWN0b3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvYTExeS9pbnB1dC1tb2RhbGl0eS1kZXRlY3Rvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYWluL3NyYy9jZGsvYTExeS9pbnB1dC1tb2RhbGl0eS9pbnB1dC1tb2RhbGl0eS1kZXRlY3Rvci50c1xuXG5pbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IGdldEV2ZW50VGFyZ2V0IH0gZnJvbSAnLi4vZXZlbnRpbmcudHMnO1xuXG5pbXBvcnQge1xuICBpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyLFxuICBpc0Zha2VUb3VjaHN0YXJ0RnJvbVNjcmVlblJlYWRlcixcbn0gZnJvbSAnLi9mYWtlLWV2ZW50LWRldGVjdGlvbi50cyc7XG5cbmV4cG9ydCB0eXBlIFNiYklucHV0TW9kYWxpdHkgPSAndG91Y2gnIHwgJ21vdXNlJyB8ICdrZXlib2FyZCcgfCAncHJvZ3JhbScgfCBudWxsO1xuXG4vKiogT3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGJlaGF2aW9yIG9mIHRoZSBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IuICovXG5pbnRlcmZhY2UgU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yT3B0aW9ucyB7XG4gIC8qKiBLZXlzIHRvIGlnbm9yZSB3aGVuIGRldGVjdGluZyBrZXlib2FyZCBpbnB1dCBtb2RhbGl0eS4gKi9cbiAgaWdub3JlS2V5cz86IG51bWJlcltdO1xufVxuXG5jb25zdCBTSElGVCA9IDE2O1xuY29uc3QgQ09OVFJPTCA9IDE3O1xuY29uc3QgQUxUID0gMTg7XG5jb25zdCBNRVRBID0gOTE7IC8vIFdJTl9LRVlfTEVGVFxuY29uc3QgTUFDX01FVEEgPSAyMjQ7XG5cbi8qKlxuICogRGVmYXVsdCBvcHRpb25zIGZvciB0aGUgU2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLlxuICpcbiAqIE1vZGlmaWVyIGtleXMgYXJlIGlnbm9yZWQgYnkgZGVmYXVsdCAoaS5lLiB3aGVuIHByZXNzZWQgd29uJ3QgY2F1c2UgdGhlIHNlcnZpY2UgdG8gZGV0ZWN0XG4gKiBrZXlib2FyZCBpbnB1dCBtb2RhbGl0eSkgZm9yIHR3byByZWFzb25zOlxuICpcbiAqIDEuIE1vZGlmaWVyIGtleXMgYXJlIGNvbW1vbmx5IHVzZWQgd2l0aCBtb3VzZSB0byBwZXJmb3JtIGFjdGlvbnMgc3VjaCBhcyAncmlnaHQgY2xpY2snIG9yICdvcGVuXG4gKiAgICBpbiBuZXcgdGFiJywgYW5kIGFyZSB0aHVzIGxlc3MgcmVwcmVzZW50YXRpdmUgb2YgYWN0dWFsIGtleWJvYXJkIGludGVyYWN0aW9uLlxuICogMi4gVm9pY2VPdmVyIHRyaWdnZXJzIHNvbWUga2V5Ym9hcmQgZXZlbnRzIHdoZW4gbGluZWFybHkgbmF2aWdhdGluZyB3aXRoIENvbnRyb2wgKyBPcHRpb24gKGJ1dFxuICogICAgY29uZnVzaW5nbHkgbm90IHdpdGggQ2FwcyBMb2NrKS4gVGh1cywgdG8gaGF2ZSBwYXJpdHkgd2l0aCBvdGhlciBzY3JlZW4gcmVhZGVycywgd2UgaWdub3JlXG4gKiAgICB0aGVzZSBrZXlzIHNvLCBhcyB0byBub3QgdXBkYXRlIHRoZSBpbnB1dCBtb2RhbGl0eS5cbiAqXG4gKiBOb3RlIHRoYXQgd2UgZG8gbm90IGJ5IGRlZmF1bHQgaWdub3JlIHRoZSByaWdodCBNZXRhIGtleSBvbiBTYWZhcmkgYmVjYXVzZSBpdCBoYXMgdGhlIHNhbWUga2V5XG4gKiBjb2RlIGFzIHRoZSBDb250ZXh0TWVudSBrZXkgb24gb3RoZXIgYnJvd3NlcnMuIFdoZW4gd2Ugc3dpdGNoIHRvIHVzaW5nIGV2ZW50LmtleSwgd2UgY2FuXG4gKiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSB0d28uXG4gKi9cbmNvbnN0IGlucHV0TW9kYWxpdHlEZXRlY3Rvck9wdGlvbnM6IFNiYklucHV0TW9kYWxpdHlEZXRlY3Rvck9wdGlvbnMgPSB7XG4gIGlnbm9yZUtleXM6IFtBTFQsIENPTlRST0wsIE1BQ19NRVRBLCBNRVRBLCBTSElGVF0sXG59O1xuXG4vKipcbiAqIFRoZSBhbW91bnQgb2YgdGltZSBuZWVkZWQgdG8gcGFzcyBhZnRlciBhIHRvdWNoc3RhcnQgZXZlbnQgaW4gb3JkZXIgZm9yIGEgc3Vic2VxdWVudCBtb3VzZWRvd25cbiAqIGV2ZW50IHRvIGJlIGF0dHJpYnV0ZWQgYXMgbW91c2UgYW5kIG5vdCB0b3VjaC5cbiAqXG4gKiBUaHJvdWdoIHRyaWFsIGFuZCBlcnJvciBpdCB3YXMgZm91bmQgdGhhdCBhIHZhbHVlIG9mIGFyb3VuZCA2NTBtcyBzZWVtcyBhcHByb3ByaWF0ZS5cbiAqL1xuY29uc3QgdG91Y2hCdWZmZXJNcyA9IDY1MDtcblxuLyoqXG4gKiBFdmVudCBsaXN0ZW5lciBvcHRpb25zIHRoYXQgZW5hYmxlIGNhcHR1cmluZyBhbmQgYWxzbyBtYXJrIHRoZSBsaXN0ZW5lciBhcyBwYXNzaXZlIGlmIHRoZSBicm93c2VyXG4gKiBzdXBwb3J0cyBpdC5cbiAqL1xuY29uc3QgbW9kYWxpdHlFdmVudExpc3RlbmVyT3B0aW9ucyA9IHtcbiAgcGFzc2l2ZTogdHJ1ZSxcbiAgY2FwdHVyZTogdHJ1ZSxcbn07XG5cbi8qKlxuICogU2VydmljZSB0aGF0IGRldGVjdHMgdGhlIHVzZXIncyBpbnB1dCBtb2RhbGl0eS5cbiAqXG4gKiBUaGlzIHNlcnZpY2UgZG9lcyBub3QgdXBkYXRlIHRoZSBpbnB1dCBtb2RhbGl0eSB3aGVuIGEgdXNlciBuYXZpZ2F0ZXMgd2l0aCBhIHNjcmVlbiByZWFkZXJcbiAqIChlLmcuIGxpbmVhciBuYXZpZ2F0aW9uIHdpdGggVm9pY2VPdmVyLCBvYmplY3QgbmF2aWdhdGlvbiAvIGJyb3dzZSBtb2RlIHdpdGggTlZEQSwgdmlydHVhbCBQQ1xuICogY3Vyc29yIG1vZGUgd2l0aCBKQVdTKS4gVGhpcyBpcyBpbiBwYXJ0IGR1ZSB0byB0ZWNobmljYWwgbGltaXRhdGlvbnMgKGkuZS4ga2V5Ym9hcmQgZXZlbnRzIGRvIG5vdFxuICogZmlyZSBhcyBleHBlY3RlZCBpbiB0aGVzZSBtb2RlcykgYnV0IGlzIGFsc28gYXJndWFibHkgdGhlIGNvcnJlY3QgYmVoYXZpb3IuIE5hdmlnYXRpbmcgd2l0aCBhXG4gKiBzY3JlZW4gcmVhZGVyIGlzIGFraW4gdG8gdmlzdWFsbHkgc2Nhbm5pbmcgYSBwYWdlLCBhbmQgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyBhY3R1YWwgdXNlclxuICogaW5wdXQgaW50ZXJhY3Rpb24uXG4gKlxuICogV2hlbiBhIHVzZXIgaXMgbm90IG5hdmlnYXRpbmcgYnV0ICppbnRlcmFjdGluZyogd2l0aCBhIHNjcmVlbiByZWFkZXIsIHRoaXMgc2VydmljZSBhdHRlbXB0cyB0b1xuICogdXBkYXRlIHRoZSBpbnB1dCBtb2RhbGl0eSB0byBrZXlib2FyZCwgYnV0IGluIGdlbmVyYWwgdGhpcyBzZXJ2aWNlJ3MgYmVoYXZpb3IgaXMgbGFyZ2VseVxuICogdW5kZWZpbmVkLlxuICovXG5jbGFzcyBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3Ige1xuICAvKiogVGhlIG1vc3QgcmVjZW50bHkgZGV0ZWN0ZWQgaW5wdXQgbW9kYWxpdHkuICovXG4gIHB1YmxpYyBnZXQgbW9zdFJlY2VudE1vZGFsaXR5KCk6IFNiYklucHV0TW9kYWxpdHkgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbW9zdFJlY2VudE1vZGFsaXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtb3N0IHJlY2VudCBtb2RhbGl0eSBtdXN0IGJlIGluaXRpYWxpc2VkIHdpdGggdGhlIHZhbHVlICdtb3VzZScgdG8gY292ZXIgdGhlIGNhc2Ugd2hlcmUgYW4gYWN0aW9uIGlzXG4gICAqIHBlcmZvcm1lZCBidXQgbm8gbW91c2Ugb3Iga2V5Ym9hcmQgZXZlbnQgaGFzIHlldCBvY2N1cnJlZCBvbiB0aGUgcGFnZSAoZS5nLiBgc2JiLXBvcG92ZXJgIHdpdGggaG92ZXIgdHJpZ2dlcikuXG4gICAqL1xuICBwcml2YXRlIF9tb3N0UmVjZW50TW9kYWxpdHk6IFNiYklucHV0TW9kYWxpdHkgfCBudWxsID0gJ21vdXNlJztcblxuICAvKipcbiAgICogVGhlIG1vc3QgcmVjZW50bHkgZGV0ZWN0ZWQgaW5wdXQgbW9kYWxpdHkgZXZlbnQgdGFyZ2V0LiBJcyBudWxsIGlmIG5vIGlucHV0IG1vZGFsaXR5IGhhcyBiZWVuXG4gICAqIGRldGVjdGVkIG9yIGlmIHRoZSBhc3NvY2lhdGVkIGV2ZW50IHRhcmdldCBpcyBudWxsIGZvciBzb21lIHVua25vd24gcmVhc29uLlxuICAgKi9cbiAgcHVibGljIGdldCBtb3N0UmVjZW50VGFyZ2V0KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21vc3RSZWNlbnRUYXJnZXQ7XG4gIH1cbiAgcHJpdmF0ZSBfbW9zdFJlY2VudFRhcmdldDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogT3B0aW9ucyBmb3IgdGhpcyBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnM6IFNiYklucHV0TW9kYWxpdHlEZXRlY3Rvck9wdGlvbnMgPSB7XG4gICAgLi4uaW5wdXRNb2RhbGl0eURldGVjdG9yT3B0aW9ucyxcbiAgfTtcblxuICAvKipcbiAgICogVGhlIHRpbWVzdGFtcCBvZiB0aGUgbGFzdCB0b3VjaCBpbnB1dCBtb2RhbGl0eS4gVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBtb3VzZWRvd24gZXZlbnRzXG4gICAqIHNob3VsZCBiZSBhdHRyaWJ1dGVkIHRvIG1vdXNlIG9yIHRvdWNoLlxuICAgKi9cbiAgcHJpdmF0ZSBfbGFzdFRvdWNoTXMgPSAwO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fb25LZXlkb3duLCBtb2RhbGl0eUV2ZW50TGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuX29uTW91c2Vkb3duLCBtb2RhbGl0eUV2ZW50TGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLl9vblRvdWNoc3RhcnQsIG1vZGFsaXR5RXZlbnRMaXN0ZW5lck9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVTdGF0ZSgnbW91c2UnLCBudWxsKTtcbiAgICB0aGlzLl9sYXN0VG91Y2hNcyA9IDA7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBrZXlkb3duIGV2ZW50cy4gTXVzdCBiZSBhbiBhcnJvdyBmdW5jdGlvbiBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY29udGV4dCB3aGVuIGl0IGdldHNcbiAgICogYm91bmQuXG4gICAqL1xuICBwcml2YXRlIF9vbktleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAvLyBJZiB0aGlzIGlzIG9uZSBvZiB0aGUga2V5cyB3ZSBzaG91bGQgaWdub3JlLCB0aGVuIGlnbm9yZSBpdCBhbmQgZG9uJ3QgdXBkYXRlIHRoZSBpbnB1dFxuICAgIC8vIG1vZGFsaXR5IHRvIGtleWJvYXJkLlxuICAgIGlmICh0aGlzLl9vcHRpb25zPy5pZ25vcmVLZXlzPy5zb21lKChrZXlDb2RlKSA9PiBrZXlDb2RlID09PSBldmVudC5rZXlDb2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZVN0YXRlKCdrZXlib2FyZCcsIGV2ZW50KTtcbiAgfTtcblxuICAvKipcbiAgICogSGFuZGxlcyBtb3VzZWRvd24gZXZlbnRzLiBNdXN0IGJlIGFuIGFycm93IGZ1bmN0aW9uIGluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBjb250ZXh0IHdoZW4gaXRcbiAgICogZ2V0cyBib3VuZC5cbiAgICovXG4gIHByaXZhdGUgX29uTW91c2Vkb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgLy8gVG91Y2hlcyB0cmlnZ2VyIGJvdGggdG91Y2ggYW5kIG1vdXNlIGV2ZW50cywgc28gd2UgbmVlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG1vdXNlIGV2ZW50c1xuICAgIC8vIHRoYXQgd2VyZSB0cmlnZ2VyZWQgdmlhIG1vdXNlIHZzIHRvdWNoLiBUbyBkbyBzbywgY2hlY2sgaWYgdGhlIG1vdXNlIGV2ZW50IG9jY3VycyBjbG9zZWx5XG4gICAgLy8gYWZ0ZXIgdGhlIHByZXZpb3VzIHRvdWNoIGV2ZW50LlxuICAgIGlmIChEYXRlLm5vdygpIC0gdGhpcy5fbGFzdFRvdWNoTXMgPCB0b3VjaEJ1ZmZlck1zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRmFrZSBtb3VzZWRvd24gZXZlbnRzIGFyZSBmaXJlZCBieSBzb21lIHNjcmVlbiByZWFkZXJzIHdoZW4gY29udHJvbHMgYXJlIGFjdGl2YXRlZCBieSB0aGVcbiAgICAvLyBzY3JlZW4gcmVhZGVyLiBBdHRyaWJ1dGUgdGhlbSB0byBrZXlib2FyZCBpbnB1dCBtb2RhbGl0eS5cbiAgICB0aGlzLl91cGRhdGVTdGF0ZShpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyKGV2ZW50KSA/ICdrZXlib2FyZCcgOiAnbW91c2UnLCBldmVudCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdG91Y2hzdGFydCBldmVudHMuIE11c3QgYmUgYW4gYXJyb3cgZnVuY3Rpb24gaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNvbnRleHQgd2hlbiBpdFxuICAgKiBnZXRzIGJvdW5kLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25Ub3VjaHN0YXJ0ID0gKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCA9PiB7XG4gICAgLy8gU2FtZSBzY2VuYXJpbyBhcyBtZW50aW9uZWQgaW4gX29uTW91c2Vkb3duLCBidXQgb24gdG91Y2ggc2NyZWVuIGRldmljZXMsIGZha2UgdG91Y2hzdGFydFxuICAgIC8vIGV2ZW50cyBhcmUgZmlyZWQuIEFnYWluLCBhdHRyaWJ1dGUgdG8ga2V5Ym9hcmQgaW5wdXQgbW9kYWxpdHkuXG4gICAgaWYgKGlzRmFrZVRvdWNoc3RhcnRGcm9tU2NyZWVuUmVhZGVyKGV2ZW50KSkge1xuICAgICAgdGhpcy5fdXBkYXRlU3RhdGUoJ2tleWJvYXJkJywgZXZlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB0aW1lc3RhbXAgb2YgdGhpcyB0b3VjaCBldmVudCwgYXMgaXQncyB1c2VkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gbW91c2UgZXZlbnRzXG4gICAgLy8gdHJpZ2dlcmVkIHZpYSBtb3VzZSB2cyB0b3VjaC5cbiAgICB0aGlzLl9sYXN0VG91Y2hNcyA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl91cGRhdGVTdGF0ZSgndG91Y2gnLCBldmVudCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfdXBkYXRlU3RhdGUobW9kYWxpdHk6IFNiYklucHV0TW9kYWxpdHksIGV2ZW50OiBFdmVudCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbW9zdFJlY2VudE1vZGFsaXR5KSB7XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShgc2JiLWZvY3VzLW1vZGFsaXR5LSR7dGhpcy5fbW9zdFJlY2VudE1vZGFsaXR5fWApO1xuICAgIH1cbiAgICB0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHkgPSBtb2RhbGl0eTtcbiAgICB0aGlzLl9tb3N0UmVjZW50VGFyZ2V0ID0gZXZlbnQgPyBnZXRFdmVudFRhcmdldChldmVudCkgOiBudWxsO1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKGBzYmItZm9jdXMtbW9kYWxpdHktJHt0aGlzLl9tb3N0UmVjZW50TW9kYWxpdHl9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciA9IG5ldyBTYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5Q0EsSUFBTSwrQkFBZ0UsRUFDcEUsWUFBWTtDQUFDO0NBQUs7Q0FBUztDQUFVO0NBQU07Q0FBTSxFQUNsRDs7Ozs7OztBQVFELElBQU0sZ0JBQWdCOzs7OztBQU10QixJQUFNLCtCQUErQjtDQUNuQyxTQUFTO0NBQ1QsU0FBUztDQUNWOzs7Ozs7Ozs7Ozs7Ozs7QUFnQkQsSUFBTSwyQkFBTixNQUE4Qjs7Q0FFNUIsSUFBVyxxQkFBa0I7QUFDM0IsU0FBTyxLQUFLOzs7Ozs7Q0FhZCxJQUFXLG1CQUFnQjtBQUN6QixTQUFPLEtBQUs7O0NBZWQsY0FBQTs7Ozs7QUF0QlEsT0FBQSxzQkFBK0M7QUFTL0MsT0FBQSxvQkFBd0M7O0FBRy9CLE9BQUEsV0FBNEMsRUFDM0QsR0FBRyw4QkFDSjs7Ozs7QUFNTyxPQUFBLGVBQWU7Ozs7O0FBbUJmLE9BQUEsY0FBYyxVQUE4QjtBQUdsRCxPQUFJLEtBQUssVUFBVSxZQUFZLE1BQU0sWUFBWSxZQUFZLE1BQU0sUUFBUSxDQUN6RTtBQUdGLFFBQUssYUFBYSxZQUFZLE1BQU07Ozs7OztBQU85QixPQUFBLGdCQUFnQixVQUEyQjtBQUlqRCxPQUFJLEtBQUssS0FBSyxHQUFHLEtBQUssZUFBZSxjQUNuQztBQUtGLFFBQUssYUFBYSxnQ0FBZ0MsTUFBTSxHQUFHLGFBQWEsU0FBUyxNQUFNOzs7Ozs7QUFPakYsT0FBQSxpQkFBaUIsVUFBMkI7QUFHbEQsT0FBSSxpQ0FBaUMsTUFBTSxFQUFFO0FBQzNDLFNBQUssYUFBYSxZQUFZLE1BQU07QUFDcEM7O0FBS0YsUUFBSyxlQUFlLEtBQUssS0FBSztBQUU5QixRQUFLLGFBQWEsU0FBUyxNQUFNOztBQTNEakMsTUFBSSxDQUFDLFVBQVU7QUFDYixZQUFTLGlCQUFpQixXQUFXLEtBQUssWUFBWSw2QkFBNkI7QUFDbkYsWUFBUyxpQkFBaUIsYUFBYSxLQUFLLGNBQWMsNkJBQTZCO0FBQ3ZGLFlBQVMsaUJBQWlCLGNBQWMsS0FBSyxlQUFlLDZCQUE2Qjs7O0NBSXRGLFFBQUs7QUFDVixPQUFLLGFBQWEsU0FBUyxLQUFLO0FBQ2hDLE9BQUssZUFBZTs7Q0FxRGQsYUFBYSxVQUE0QixPQUFtQjtBQUNsRSxNQUFJLEtBQUssb0JBQ1AsVUFBUyxnQkFBZ0IsVUFBVSxPQUFPLHNCQUFzQixLQUFLLHNCQUFzQjtBQUU3RixPQUFLLHNCQUFzQjtBQUMzQixPQUFLLG9CQUFvQixRQUFRLGVBQWUsTUFBTSxHQUFHO0FBQ3pELFdBQVMsZ0JBQWdCLFVBQVUsSUFBSSxzQkFBc0IsS0FBSyxzQkFBc0I7OztBQUk1RixJQUFhLDJCQUEyQixJQUFJLDBCQUEwQiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAKpF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,kBAAkB,CAAC,CACjB,IAAI,EAAE,WAAW,EACjB,MAAM,CAAC,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI,CAAC;CACT;;AAED;;GAEG;AAEH,qBAAa,UAAW,SAAQ,eAAuD;IACrF,OAAc,CAAC,eAAe,CAAC,UAAQ;IACvC,gBAAuB,WAAW,EAAE,MAAM,CAAC;IAE3C,OAAO,CAAC,YAAY,CAAC,CAA6B;IAElD;;;;;OAKG;WACW,MAAM,CAAC,qBAAqB,GAAE,qBAAsC,GAAG,IAAI;IAoBzF;;;;;;;OAOG;IACa,aAAa,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAKtE;;OAEG;IACa,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAKzE;;;;;;;;;;;;;;;;;;OAkBG;IACa,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,EAC7B,WAAW,CAAC,EAAE,OAAO,EACrB,QAAQ,CAAC,EAAE,OAAO,GACjB,IAAI;CAYR"}
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAKpF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,kBAAkB,CAAC,CACjB,IAAI,EAAE,WAAW,EACjB,MAAM,CAAC,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI,CAAC;CACT;;AAED;;GAEG;AAEH,qBAAa,UAAW,SAAQ,eAAuD;IACrF,OAAc,CAAC,eAAe,CAAC,UAAQ;IACvC,gBAAuB,WAAW,EAAE,MAAM,CAAC;IAE3C,OAAO,CAAC,YAAY,CAAC,CAA6B;IAElD;;;;;OAKG;WACW,MAAM,CAAC,qBAAqB,GAAE,qBAAsC,GAAG,IAAI;IAiBzF;;;;;;;OAOG;IACa,aAAa,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAKtE;;OAEG;IACa,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAKzE;;;;;;;;;;;;;;;;;;OAkBG;IACa,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,EAC7B,WAAW,CAAC,EAAE,OAAO,EACrB,QAAQ,CAAC,EAAE,OAAO,GACjB,IAAI;CAYR"}
@@ -17,10 +17,7 @@ var SbbElement = class extends SbbHydrationMixin(SbbElementInternalsMixin(LitEle
17
17
  */
18
18
  static define(customElementRegistry = customElements) {
19
19
  if (!this.elementName) throw new Error(`The static property "elementName" is not defined on ${this.name}. Please define it to register the custom element.`);
20
- if (!customElementRegistry.get(this.elementName)) {
21
- customElementRegistry.define(this.elementName, this);
22
- this.finalize();
23
- }
20
+ if (!customElementRegistry.get(this.elementName)) customElementRegistry.define(this.elementName, this);
24
21
  }
25
22
  /**
26
23
  * Registers a `ReactiveController` to participate in the element's reactive
@@ -74,4 +71,4 @@ var SbbElement = class extends SbbHydrationMixin(SbbElementInternalsMixin(LitEle
74
71
  //#endregion
75
72
  export { SbbElement };
76
73
 
77
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9iYXNlLWVsZW1lbnRzL2VsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGl0RWxlbWVudCwgdHlwZSBQcm9wZXJ0eURlY2xhcmF0aW9uLCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlciB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbiB9IGZyb20gJy4uL21peGlucy9lbGVtZW50LWludGVybmFscy1taXhpbi50cyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiB9IGZyb20gJy4uL21peGlucy9oeWRyYXRpb24tbWl4aW4udHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNiYlByb3BlcnR5VmFsdWVzIHtcbiAgb2xkVmFsdWU/OiB1bmtub3duO1xuICB2YWx1ZT86IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiUmVhY3RpdmVDb250cm9sbGVyIGV4dGVuZHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgaG9zdFByb3BlcnR5VXBkYXRlPyhcbiAgICBuYW1lOiBQcm9wZXJ0eUtleSxcbiAgICB2YWx1ZXM/OiBTYmJQcm9wZXJ0eVZhbHVlcyxcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIGFsbCBTQkIgZWxlbWVudHMuXG4gKi9cbi8vIFRPRE8oYnJlYWtpbmctY2hhbmdlKTogSW5saW5lIGFuZCByZW1vdmUgU2JiRWxlbWVudEludGVybmFsc01peGluIGFuZCBTYmJIeWRyYXRpb25NaXhpbiBhcyBhIGJyZWFraW5nIGNoYW5nZVxuZXhwb3J0IGNsYXNzIFNiYkVsZW1lbnQgZXh0ZW5kcyBTYmJIeWRyYXRpb25NaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBbJ18kc2JiRWxlbWVudCQnXSA9IHRydWU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZztcblxuICBwcml2YXRlIF9jb250cm9sbGVycz86IFNldDxTYmJSZWFjdGl2ZUNvbnRyb2xsZXI+O1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlciB0aGUgY3VzdG9tIGVsZW1lbnQgdG8gdGhlIHNwZWNpZmllZCBDdXN0b21FbGVtZW50UmVnaXN0cnkuXG4gICAqIElmIG5vbmUgaXMgcHJvdmlkZWQsIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWwgYGN1c3RvbUVsZW1lbnRzYCByZWdpc3RyeS5cbiAgICogQHBhcmFtIGN1c3RvbUVsZW1lbnRSZWdpc3RyeSBPcHRpb25hbCBDdXN0b21FbGVtZW50UmVnaXN0cnkgdG8gcmVnaXN0ZXIgdGhpcyBlbGVtZW50IHRvLlxuICAgKiAgIERlZmF1bHRzIHRvIHRoZSBnbG9iYWwgYGN1c3RvbUVsZW1lbnRzYCBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmaW5lKGN1c3RvbUVsZW1lbnRSZWdpc3RyeTogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5ID0gY3VzdG9tRWxlbWVudHMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZWxlbWVudE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBzdGF0aWMgcHJvcGVydHkgXCJlbGVtZW50TmFtZVwiIGlzIG5vdCBkZWZpbmVkIG9uICR7dGhpcy5uYW1lfS4gUGxlYXNlIGRlZmluZSBpdCB0byByZWdpc3RlciB0aGUgY3VzdG9tIGVsZW1lbnQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudENsYXNzID0gY3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmdldCh0aGlzLmVsZW1lbnROYW1lKTtcbiAgICBpZiAoIWVsZW1lbnRDbGFzcykge1xuICAgICAgY3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmRlZmluZSh0aGlzLmVsZW1lbnROYW1lLCB0aGlzIGFzIHVua25vd24gYXMgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKTtcbiAgICAgIC8vIE5leHQuanMgcmUtcmVuZGVyaW5nIHNvbWVob3cgZmFpbHMsIGJlY2F1c2UgdGhlIGZpbmFsaXphdGlvbiBjYWxjdWxhdGlvblxuICAgICAgLy8gaXMgYnJva2VuIGluIFNTUi4gV2UgY2FsbCBgZmluYWxpemUoKWAgaGVyZSBleHBsaWNpdGx5IHRvIGF2b2lkIHRoYXQuXG4gICAgICB0aGlzLmZpbmFsaXplKCk7XG4gICAgfSBlbHNlIGlmIChpbXBvcnQubWV0YS5lbnYuREVWICYmIGVsZW1lbnRDbGFzcyAhPT0gdGhpcykge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgVGhlIGN1c3RvbSBlbGVtZW50IHdpdGggbmFtZSBcIiR7dGhpcy5lbGVtZW50TmFtZX1cIiBpcyBhbHJlYWR5IGRlZmluZWQuIFNraXBwaW5nLmAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBgUmVhY3RpdmVDb250cm9sbGVyYCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgZWxlbWVudCdzIHJlYWN0aXZlXG4gICAqIHVwZGF0ZSBjeWNsZS4gVGhlIGVsZW1lbnQgYXV0b21hdGljYWxseSBjYWxscyBpbnRvIGFueSByZWdpc3RlcmVkXG4gICAqIGNvbnRyb2xsZXJzIGR1cmluZyBpdHMgbGlmZWN5Y2xlIGNhbGxiYWNrcy5cbiAgICpcbiAgICogSWYgdGhlIGVsZW1lbnQgaXMgY29ubmVjdGVkIHdoZW4gYGFkZENvbnRyb2xsZXIoKWAgaXMgY2FsbGVkLCB0aGVcbiAgICogY29udHJvbGxlcidzIGBob3N0Q29ubmVjdGVkKClgIGNhbGxiYWNrIHdpbGwgYmUgaW1tZWRpYXRlbHkgY2FsbGVkLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFkZENvbnRyb2xsZXIoY29udHJvbGxlcjogU2JiUmVhY3RpdmVDb250cm9sbGVyKTogdm9pZCB7XG4gICAgc3VwZXIuYWRkQ29udHJvbGxlcihjb250cm9sbGVyKTtcbiAgICAodGhpcy5fY29udHJvbGxlcnMgPz89IG5ldyBTZXQoKSkuYWRkKGNvbnRyb2xsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBgUmVhY3RpdmVDb250cm9sbGVyYCBmcm9tIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlbW92ZUNvbnRyb2xsZXIoY29udHJvbGxlcjogU2JiUmVhY3RpdmVDb250cm9sbGVyKTogdm9pZCB7XG4gICAgc3VwZXIucmVtb3ZlQ29udHJvbGxlcihjb250cm9sbGVyKTtcbiAgICB0aGlzLl9jb250cm9sbGVycz8uZGVsZXRlKGNvbnRyb2xsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIGFuIHVwZGF0ZSB3aGljaCBpcyBwcm9jZXNzZWQgYXN5bmNocm9ub3VzbHkuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZFxuICAgKiB3aGVuIGFuIGVsZW1lbnQgc2hvdWxkIHVwZGF0ZSBiYXNlZCBvbiBzb21lIHN0YXRlIG5vdCB0cmlnZ2VyZWQgYnkgc2V0dGluZ1xuICAgKiBhIHJlYWN0aXZlIHByb3BlcnR5LiBJbiB0aGlzIGNhc2UsIHBhc3Mgbm8gYXJndW1lbnRzLiBJdCBzaG91bGQgYWxzbyBiZVxuICAgKiBjYWxsZWQgd2hlbiBtYW51YWxseSBpbXBsZW1lbnRpbmcgYSBwcm9wZXJ0eSBzZXR0ZXIuIEluIHRoaXMgY2FzZSwgcGFzcyB0aGVcbiAgICogcHJvcGVydHkgYG5hbWVgIGFuZCBgb2xkVmFsdWVgIHRvIGVuc3VyZSB0aGF0IGFueSBjb25maWd1cmVkIHByb3BlcnR5XG4gICAqIG9wdGlvbnMgYXJlIGhvbm9yZWQuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgcmVxdWVzdGluZyBwcm9wZXJ0eVxuICAgKiBAcGFyYW0gb2xkVmFsdWUgb2xkIHZhbHVlIG9mIHJlcXVlc3RpbmcgcHJvcGVydHlcbiAgICogQHBhcmFtIG9wdGlvbnMgcHJvcGVydHkgb3B0aW9ucyB0byB1c2UgaW5zdGVhZCBvZiB0aGUgcHJldmlvdXNseVxuICAgKiAgICAgY29uZmlndXJlZCBvcHRpb25zXG4gICAqIEBwYXJhbSB1c2VOZXdWYWx1ZSBpZiB0cnVlLCB0aGUgbmV3VmFsdWUgYXJndW1lbnQgaXMgdXNlZCBpbnN0ZWFkIG9mXG4gICAqICAgICByZWFkaW5nIHRoZSBwcm9wZXJ0eSB2YWx1ZS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gdXNlIGlmIHRoZSByZWFjdGl2ZVxuICAgKiAgICAgcHJvcGVydHkgaXMgYSBzdGFuZGFyZCBwcml2YXRlIGFjY2Vzc29yLCBhcyBvcHBvc2VkIHRvIGEgcGxhaW5cbiAgICogICAgIHByb3BlcnR5LCBzaW5jZSBwcml2YXRlIG1lbWJlcnMgY2FuJ3QgYmUgZHluYW1pY2FsbHkgcmVhZCBieSBuYW1lLlxuICAgKiBAcGFyYW0gbmV3VmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuIFRoaXMgaXMgb25seSB1c2VkIGlmXG4gICAqICAgICBgdXNlTmV3VmFsdWVgIGlzIHRydWUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICAgIHVzZU5ld1ZhbHVlPzogYm9vbGVhbixcbiAgICBuZXdWYWx1ZT86IHVua25vd24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMsIHVzZU5ld1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGNvbnN0IHZhbHVlczogU2JiUHJvcGVydHlWYWx1ZXMgPSB7XG4gICAgICAgIG9sZFZhbHVlLFxuICAgICAgICB2YWx1ZTogdXNlTmV3VmFsdWUgPyBuZXdWYWx1ZSA6IHRoaXNbbmFtZSBhcyBrZXlvZiB0aGlzXSxcbiAgICAgIH07XG4gICAgICB0aGlzLl9jb250cm9sbGVycz8uZm9yRWFjaCgoY29udHJvbGxlcikgPT5cbiAgICAgICAgY29udHJvbGxlci5ob3N0UHJvcGVydHlVcGRhdGU/LihuYW1lLCB2YWx1ZXMsIG9wdGlvbnMpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQXNCQSxJQUFhLGFBQWIsY0FBZ0Msa0JBQWtCLHlCQUF5QixXQUFXLENBQUMsQ0FBQTs7QUFDdkUsT0FBQyxtQkFBbUI7Ozs7Ozs7O0NBVzNCLE9BQU8sT0FBTyx3QkFBK0MsZ0JBQWM7QUFDaEYsTUFBSSxDQUFDLEtBQUssWUFDUixPQUFNLElBQUksTUFDUix1REFBdUQsS0FBSyxLQUFJLG9EQUNqRTtBQUlILE1BQUksQ0FEaUIsc0JBQXNCLElBQUksS0FBSyxZQUFZLEVBQzdDO0FBQ2pCLHlCQUFzQixPQUFPLEtBQUssYUFBYSxLQUE0QztBQUczRixRQUFLLFVBQVU7Ozs7Ozs7Ozs7O0NBZ0JILGNBQWMsWUFBaUM7QUFDN0QsUUFBTSxjQUFjLFdBQVc7QUFDL0IsR0FBQyxLQUFLLGlDQUFpQixJQUFJLEtBQUssRUFBRSxJQUFJLFdBQVc7Ozs7O0NBTW5DLGlCQUFpQixZQUFpQztBQUNoRSxRQUFNLGlCQUFpQixXQUFXO0FBQ2xDLE9BQUssY0FBYyxPQUFPLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXNCdkIsY0FDZCxNQUNBLFVBQ0EsU0FDQSxhQUNBLFVBQWtCO0FBRWxCLFFBQU0sY0FBYyxNQUFNLFVBQVUsU0FBUyxhQUFhLFNBQVM7QUFDbkUsTUFBSSxNQUFNO0dBQ1IsTUFBTSxTQUE0QjtJQUNoQztJQUNBLE9BQU8sY0FBYyxXQUFXLEtBQUs7SUFDdEM7QUFDRCxRQUFLLGNBQWMsU0FBUyxlQUMxQixXQUFXLHFCQUFxQixNQUFNLFFBQVEsUUFBUSxDQUN2RCJ9
74
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9iYXNlLWVsZW1lbnRzL2VsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGl0RWxlbWVudCwgdHlwZSBQcm9wZXJ0eURlY2xhcmF0aW9uLCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlciB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbiB9IGZyb20gJy4uL21peGlucy9lbGVtZW50LWludGVybmFscy1taXhpbi50cyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiB9IGZyb20gJy4uL21peGlucy9oeWRyYXRpb24tbWl4aW4udHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNiYlByb3BlcnR5VmFsdWVzIHtcbiAgb2xkVmFsdWU/OiB1bmtub3duO1xuICB2YWx1ZT86IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiUmVhY3RpdmVDb250cm9sbGVyIGV4dGVuZHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgaG9zdFByb3BlcnR5VXBkYXRlPyhcbiAgICBuYW1lOiBQcm9wZXJ0eUtleSxcbiAgICB2YWx1ZXM/OiBTYmJQcm9wZXJ0eVZhbHVlcyxcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIGFsbCBTQkIgZWxlbWVudHMuXG4gKi9cbi8vIFRPRE8oYnJlYWtpbmctY2hhbmdlKTogSW5saW5lIGFuZCByZW1vdmUgU2JiRWxlbWVudEludGVybmFsc01peGluIGFuZCBTYmJIeWRyYXRpb25NaXhpbiBhcyBhIGJyZWFraW5nIGNoYW5nZVxuZXhwb3J0IGNsYXNzIFNiYkVsZW1lbnQgZXh0ZW5kcyBTYmJIeWRyYXRpb25NaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBbJ18kc2JiRWxlbWVudCQnXSA9IHRydWU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZztcblxuICBwcml2YXRlIF9jb250cm9sbGVycz86IFNldDxTYmJSZWFjdGl2ZUNvbnRyb2xsZXI+O1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlciB0aGUgY3VzdG9tIGVsZW1lbnQgdG8gdGhlIHNwZWNpZmllZCBDdXN0b21FbGVtZW50UmVnaXN0cnkuXG4gICAqIElmIG5vbmUgaXMgcHJvdmlkZWQsIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWwgYGN1c3RvbUVsZW1lbnRzYCByZWdpc3RyeS5cbiAgICogQHBhcmFtIGN1c3RvbUVsZW1lbnRSZWdpc3RyeSBPcHRpb25hbCBDdXN0b21FbGVtZW50UmVnaXN0cnkgdG8gcmVnaXN0ZXIgdGhpcyBlbGVtZW50IHRvLlxuICAgKiAgIERlZmF1bHRzIHRvIHRoZSBnbG9iYWwgYGN1c3RvbUVsZW1lbnRzYCBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmaW5lKGN1c3RvbUVsZW1lbnRSZWdpc3RyeTogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5ID0gY3VzdG9tRWxlbWVudHMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZWxlbWVudE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBzdGF0aWMgcHJvcGVydHkgXCJlbGVtZW50TmFtZVwiIGlzIG5vdCBkZWZpbmVkIG9uICR7dGhpcy5uYW1lfS4gUGxlYXNlIGRlZmluZSBpdCB0byByZWdpc3RlciB0aGUgY3VzdG9tIGVsZW1lbnQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudENsYXNzID0gY3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmdldCh0aGlzLmVsZW1lbnROYW1lKTtcbiAgICBpZiAoIWVsZW1lbnRDbGFzcykge1xuICAgICAgY3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmRlZmluZSh0aGlzLmVsZW1lbnROYW1lLCB0aGlzIGFzIHVua25vd24gYXMgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKTtcbiAgICB9IGVsc2UgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgZWxlbWVudENsYXNzICE9PSB0aGlzKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBUaGUgY3VzdG9tIGVsZW1lbnQgd2l0aCBuYW1lIFwiJHt0aGlzLmVsZW1lbnROYW1lfVwiIGlzIGFscmVhZHkgZGVmaW5lZC4gU2tpcHBpbmcuYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGBSZWFjdGl2ZUNvbnRyb2xsZXJgIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBlbGVtZW50J3MgcmVhY3RpdmVcbiAgICogdXBkYXRlIGN5Y2xlLiBUaGUgZWxlbWVudCBhdXRvbWF0aWNhbGx5IGNhbGxzIGludG8gYW55IHJlZ2lzdGVyZWRcbiAgICogY29udHJvbGxlcnMgZHVyaW5nIGl0cyBsaWZlY3ljbGUgY2FsbGJhY2tzLlxuICAgKlxuICAgKiBJZiB0aGUgZWxlbWVudCBpcyBjb25uZWN0ZWQgd2hlbiBgYWRkQ29udHJvbGxlcigpYCBpcyBjYWxsZWQsIHRoZVxuICAgKiBjb250cm9sbGVyJ3MgYGhvc3RDb25uZWN0ZWQoKWAgY2FsbGJhY2sgd2lsbCBiZSBpbW1lZGlhdGVseSBjYWxsZWQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYWRkQ29udHJvbGxlcihjb250cm9sbGVyOiBTYmJSZWFjdGl2ZUNvbnRyb2xsZXIpOiB2b2lkIHtcbiAgICBzdXBlci5hZGRDb250cm9sbGVyKGNvbnRyb2xsZXIpO1xuICAgICh0aGlzLl9jb250cm9sbGVycyA/Pz0gbmV3IFNldCgpKS5hZGQoY29udHJvbGxlcik7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGBSZWFjdGl2ZUNvbnRyb2xsZXJgIGZyb20gdGhlIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQ29udHJvbGxlcihjb250cm9sbGVyOiBTYmJSZWFjdGl2ZUNvbnRyb2xsZXIpOiB2b2lkIHtcbiAgICBzdXBlci5yZW1vdmVDb250cm9sbGVyKGNvbnRyb2xsZXIpO1xuICAgIHRoaXMuX2NvbnRyb2xsZXJzPy5kZWxldGUoY29udHJvbGxlcik7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdHMgYW4gdXBkYXRlIHdoaWNoIGlzIHByb2Nlc3NlZCBhc3luY2hyb25vdXNseS4gVGhpcyBzaG91bGQgYmUgY2FsbGVkXG4gICAqIHdoZW4gYW4gZWxlbWVudCBzaG91bGQgdXBkYXRlIGJhc2VkIG9uIHNvbWUgc3RhdGUgbm90IHRyaWdnZXJlZCBieSBzZXR0aW5nXG4gICAqIGEgcmVhY3RpdmUgcHJvcGVydHkuIEluIHRoaXMgY2FzZSwgcGFzcyBubyBhcmd1bWVudHMuIEl0IHNob3VsZCBhbHNvIGJlXG4gICAqIGNhbGxlZCB3aGVuIG1hbnVhbGx5IGltcGxlbWVudGluZyBhIHByb3BlcnR5IHNldHRlci4gSW4gdGhpcyBjYXNlLCBwYXNzIHRoZVxuICAgKiBwcm9wZXJ0eSBgbmFtZWAgYW5kIGBvbGRWYWx1ZWAgdG8gZW5zdXJlIHRoYXQgYW55IGNvbmZpZ3VyZWQgcHJvcGVydHlcbiAgICogb3B0aW9ucyBhcmUgaG9ub3JlZC5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgbmFtZSBvZiByZXF1ZXN0aW5nIHByb3BlcnR5XG4gICAqIEBwYXJhbSBvbGRWYWx1ZSBvbGQgdmFsdWUgb2YgcmVxdWVzdGluZyBwcm9wZXJ0eVxuICAgKiBAcGFyYW0gb3B0aW9ucyBwcm9wZXJ0eSBvcHRpb25zIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBwcmV2aW91c2x5XG4gICAqICAgICBjb25maWd1cmVkIG9wdGlvbnNcbiAgICogQHBhcmFtIHVzZU5ld1ZhbHVlIGlmIHRydWUsIHRoZSBuZXdWYWx1ZSBhcmd1bWVudCBpcyB1c2VkIGluc3RlYWQgb2ZcbiAgICogICAgIHJlYWRpbmcgdGhlIHByb3BlcnR5IHZhbHVlLiBUaGlzIGlzIGltcG9ydGFudCB0byB1c2UgaWYgdGhlIHJlYWN0aXZlXG4gICAqICAgICBwcm9wZXJ0eSBpcyBhIHN0YW5kYXJkIHByaXZhdGUgYWNjZXNzb3IsIGFzIG9wcG9zZWQgdG8gYSBwbGFpblxuICAgKiAgICAgcHJvcGVydHksIHNpbmNlIHByaXZhdGUgbWVtYmVycyBjYW4ndCBiZSBkeW5hbWljYWxseSByZWFkIGJ5IG5hbWUuXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4gVGhpcyBpcyBvbmx5IHVzZWQgaWZcbiAgICogICAgIGB1c2VOZXdWYWx1ZWAgaXMgdHJ1ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICAgdXNlTmV3VmFsdWU/OiBib29sZWFuLFxuICAgIG5ld1ZhbHVlPzogdW5rbm93bixcbiAgKTogdm9pZCB7XG4gICAgc3VwZXIucmVxdWVzdFVwZGF0ZShuYW1lLCBvbGRWYWx1ZSwgb3B0aW9ucywgdXNlTmV3VmFsdWUsIG5ld1ZhbHVlKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgY29uc3QgdmFsdWVzOiBTYmJQcm9wZXJ0eVZhbHVlcyA9IHtcbiAgICAgICAgb2xkVmFsdWUsXG4gICAgICAgIHZhbHVlOiB1c2VOZXdWYWx1ZSA/IG5ld1ZhbHVlIDogdGhpc1tuYW1lIGFzIGtleW9mIHRoaXNdLFxuICAgICAgfTtcbiAgICAgIHRoaXMuX2NvbnRyb2xsZXJzPy5mb3JFYWNoKChjb250cm9sbGVyKSA9PlxuICAgICAgICBjb250cm9sbGVyLmhvc3RQcm9wZXJ0eVVwZGF0ZT8uKG5hbWUsIHZhbHVlcywgb3B0aW9ucyksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBc0JBLElBQWEsYUFBYixjQUFnQyxrQkFBa0IseUJBQXlCLFdBQVcsQ0FBQyxDQUFBOztBQUN2RSxPQUFDLG1CQUFtQjs7Ozs7Ozs7Q0FXM0IsT0FBTyxPQUFPLHdCQUErQyxnQkFBYztBQUNoRixNQUFJLENBQUMsS0FBSyxZQUNSLE9BQU0sSUFBSSxNQUNSLHVEQUF1RCxLQUFLLEtBQUksb0RBQ2pFO0FBSUgsTUFBSSxDQURpQixzQkFBc0IsSUFBSSxLQUFLLFlBQy9DLENBQ0gsdUJBQXNCLE9BQU8sS0FBSyxhQUFhLEtBQTRDOzs7Ozs7Ozs7O0NBZ0IvRSxjQUFjLFlBQWlDO0FBQzdELFFBQU0sY0FBYyxXQUFXO0FBQy9CLEdBQUMsS0FBSyxpQ0FBaUIsSUFBSSxLQUFLLEVBQUUsSUFBSSxXQUFXOzs7OztDQU1uQyxpQkFBaUIsWUFBaUM7QUFDaEUsUUFBTSxpQkFBaUIsV0FBVztBQUNsQyxPQUFLLGNBQWMsT0FBTyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzQnZCLGNBQ2QsTUFDQSxVQUNBLFNBQ0EsYUFDQSxVQUFrQjtBQUVsQixRQUFNLGNBQWMsTUFBTSxVQUFVLFNBQVMsYUFBYSxTQUFTO0FBQ25FLE1BQUksTUFBTTtHQUNSLE1BQU0sU0FBNEI7SUFDaEM7SUFDQSxPQUFPLGNBQWMsV0FBVyxLQUFLO0lBQ3RDO0FBQ0QsUUFBSyxjQUFjLFNBQVMsZUFDMUIsV0FBVyxxQkFBcUIsTUFBTSxRQUFRLFFBQVEsQ0FDdkQifQ==
@@ -145,4 +145,4 @@ var SbbDarkModeController = class SbbDarkModeController extends SbbMediaMatcherC
145
145
  //#endregion
146
146
  export { SbbDarkModeController, SbbMediaMatcherController, SbbMediaQueryBreakpointLargeAndAbove, SbbMediaQueryBreakpointLargeAndBelow, SbbMediaQueryBreakpointSmallAndAbove, SbbMediaQueryBreakpointSmallAndBelow, SbbMediaQueryBreakpointUltraAndAbove, SbbMediaQueryBreakpointZeroAndAbove, SbbMediaQueryDarkMode, SbbMediaQueryForcedColors, SbbMediaQueryHover, SbbMediaQueryPointerCoarse };
147
147
 
148
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtbWF0Y2hlcnMtY29udHJvbGxlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9tZWRpYS1tYXRjaGVycy1jb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNiYkJyZWFrcG9pbnRMYXJnZU1heCxcbiAgU2JiQnJlYWtwb2ludExhcmdlTWluLFxuICBTYmJCcmVha3BvaW50U21hbGxNYXgsXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1pbixcbiAgU2JiQnJlYWtwb2ludFVsdHJhTWluLFxuICBTYmJCcmVha3BvaW50WmVyb01pbixcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZGVzaWduLXRva2Vucyc7XG5pbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IMm1c3RhdGVDb250cm9sbGVyIH0gZnJvbSAnLi4vbWl4aW5zL2VsZW1lbnQtaW50ZXJuYWxzLW1peGluLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRWxlbWVudEludGVybmFsc01peGluVHlwZSB9IGZyb20gJy4uL21peGlucy50cyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlGb3JjZWRDb2xvcnMgPSAnKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSknO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlEYXJrTW9kZSA9ICcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5SG92ZXIgPSAnKGFueS1ob3ZlcjogaG92ZXIpJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5UG9pbnRlckNvYXJzZSA9ICcocG9pbnRlcjogY29hcnNlKSc7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRaZXJvQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtTYmJCcmVha3BvaW50WmVyb01pbn0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtTYmJCcmVha3BvaW50U21hbGxNaW59KWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEFib3ZlID0gYChtaW4td2lkdGg6ICR7U2JiQnJlYWtwb2ludExhcmdlTWlufSlgO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50VWx0cmFBbmRBYm92ZSA9IGAobWluLXdpZHRoOiAke1NiYkJyZWFrcG9pbnRVbHRyYU1pbn0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQmVsb3cgPSBgKG1heC13aWR0aDogJHtTYmJCcmVha3BvaW50U21hbGxNYXh9KWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEJlbG93ID0gYChtYXgtd2lkdGg6ICR7U2JiQnJlYWtwb2ludExhcmdlTWF4fSlgO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cblxuLyoqXG4gKiBBIGNhbGxiYWNrLCB3aGljaCBpcyBpbnZva2VkIHdoZW4gdGhlIGFzc29jaWF0ZWQgbWVkaWEgcXVlcnkgbWF0Y2hcbiAqIHN0YXR1cyBjaGFuZ2VzLlxuICovXG5leHBvcnQgdHlwZSBTYmJNZWRpYU1hdGNoZXJIYW5kbGVyID0gKG1hdGNoZXM6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbmludGVyZmFjZSBNZWRpYVF1ZXJ5RW50cnkge1xuICBtZWRpYVF1ZXJ5TGlzdDogTWVkaWFRdWVyeUxpc3Q7XG4gIGV2ZW50SGFuZGxlcjogKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiB2b2lkO1xuICBoYW5kbGVyczogU2V0PFNiYk1lZGlhTWF0Y2hlckhhbmRsZXI+O1xufVxuXG4vKipcbiAqIFdlIHdhbnQgdG8gY2FjaGUgTWVkaWFRdWVyeUxpc3QgaW5zdGFuY2VzIGFuZCBjb3JyZXNwb25kaW5nXG4gKiBldmVudCBoYW5kbGVycywgYXMgYSBtdWx0aXR1ZGUgb2YgZXZlbnQgaGFuZGxlcnMgb24gZ2xvYmFsIG9iamVjdHNcbiAqIGNhbiBkZWdyYWRlIHBlcmZvcm1hbmNlIHdpdGggdGltZS5cbiAqL1xuY29uc3QgbWVkaWFRdWVyeVJlZ2lzdHJ5ID0gbmV3IE1hcDxzdHJpbmcsIE1lZGlhUXVlcnlFbnRyeT4oKTtcblxuLyoqXG4gKiBUaGlzIGNvbnRyb2xsZXIgYWxsb3dzIGxpc3RlbmluZyB0byBtZWRpYSBxdWVyeSBjaGFuZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBuZXcgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlcih0aGlzLCB7XG4gKiAgIFtTYmJGb3JjZWRDb2xvcnNRdWVyeV06IChtYXRjaGVzKSA9PiBkb1NvbWV0aGluZyhtYXRjaGVzKSxcbiAqIH0pXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGhvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QsXG4gICAgcHJpdmF0ZSBfcXVlcmllczogUmVjb3JkPHN0cmluZywgU2JiTWVkaWFNYXRjaGVySGFuZGxlcj4sXG4gICkge1xuICAgIGhvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIHF1ZXJ5IG1hdGNoZXMuIFJldHVybnMgbnVsbCB3aXRoIFNTUi5cbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBjaGVjayBhZ2FpbnN0LlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBxdWVyeSBtYXRjaGVzIG9yIG51bGwgd2l0aCBTU1IuXG4gICAqL1xuICBwdWJsaWMgbWF0Y2hlcyhxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IG51bGwge1xuICAgIC8vIElmIHdlIHVzZSB0aGUgY2FjaGVkIGluc3RhbmNlLCBXZWJraXQgc2VlbXMgdG8gdXBkYXRlIHRoZSBzdGF0ZSBhIHRpY2sgdG9vIGxhdGUuXG4gICAgLy8gRHVlIHRvIHRoaXMgd2UgZGlyZWN0bHkgdXNlIG1hdGNoTWVkaWEgaGVyZS5cbiAgICByZXR1cm4gaXNTZXJ2ZXIgPyBudWxsIDogbWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlcztcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3F1ZXJ5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9xdWVyaWVzKSkge1xuICAgICAgY29uc3QgbWVkaWFRdWVyeSA9IG1lZGlhUXVlcnlSZWdpc3RyeS5nZXQocXVlcnkpO1xuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgbWVkaWFRdWVyeS5oYW5kbGVycy5hZGQoaGFuZGxlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtZWRpYVF1ZXJ5TGlzdCA9IG1hdGNoTWVkaWEocXVlcnkpO1xuICAgICAgICBjb25zdCBoYW5kbGVycyA9IG5ldyBTZXQoW2hhbmRsZXJdKTtcbiAgICAgICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGU6IE1lZGlhUXVlcnlMaXN0RXZlbnQpOiB2b2lkID0+XG4gICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaCgoaCkgPT4gaChlLm1hdGNoZXMpKTtcbiAgICAgICAgbWVkaWFRdWVyeUxpc3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgbWVkaWFRdWVyeVJlZ2lzdHJ5LnNldChxdWVyeSwgeyBtZWRpYVF1ZXJ5TGlzdCwgaGFuZGxlcnMsIGV2ZW50SGFuZGxlciB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtxdWVyeSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fcXVlcmllcykpIHtcbiAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KHF1ZXJ5KTtcbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIG1lZGlhUXVlcnkuaGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgICAgICBpZiAoIW1lZGlhUXVlcnkuaGFuZGxlcnMuc2l6ZSkge1xuICAgICAgICAgIG1lZGlhUXVlcnlSZWdpc3RyeS5kZWxldGUocXVlcnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyLCB3aGljaFxuICogdGFrZXMgdGhlIGNvbG9yLXNjaGVtZSBDU1MgcHJvcGVydHkgaW50byBhY2NvdW50IHdoZW4gZGV0ZXJtaW5pbmdcbiAqIHRoZSBkYXJrIG1vZGUgc3RhdGUgYW5kIHVwZGF0ZXMgYSA6c3RhdGUoZGFyaykgb24gdGhlIGhvc3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIG5ldyBTYmJEYXJrTW9kZUNvbnRyb2xsZXIodGhpcywgKGlzRGFya01vZGUpID0+IGRvU29tZXRoaW5nKGlzRGFya01vZGUpKTtcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkRhcmtNb2RlQ29udHJvbGxlciBleHRlbmRzIFNiYk1lZGlhTWF0Y2hlckNvbnRyb2xsZXIge1xuICAvKiogVGhlIGN1cnJlbnQgbW9kZSBiYXNlZCBvbiB0aGUgY2xhc3MgYXR0cmlidXRlIG9mIHRoZSA8aHRtbD4gZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnRNb2RlOiAnc2JiLWxpZ2h0LWRhcmsnIHwgJ3NiYi1saWdodCcgfCAnc2JiLWRhcmsnIHwgbnVsbCA9XG4gICAgdGhpcy5fcmVhZExpZ2h0RGFya0NsYXNzKCk7XG5cbiAgLyoqIE11dGF0aW9uT2JzZXJ2ZXIgdGhhdCBvYnNlcnZlcyB0aGUgXCJjbGFzc1wiIGF0dHJpYnV0ZSBvZiB0aGUgPGh0bWw+IGVsZW1lbnQuICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgICBpZiAobXV0YXRpb25zWzBdLm9sZFZhbHVlICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpKSB7XG4gICAgICAgICAgY29uc3QgbmV3TW9kZSA9IHRoaXMuX3JlYWRMaWdodERhcmtDbGFzcygpO1xuICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50TW9kZSAhPT0gbmV3TW9kZSkge1xuICAgICAgICAgICAgU2JiRGFya01vZGVDb250cm9sbGVyLnJlcXVlc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRNb2RlID0gbmV3TW9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlckNvbmZpZyA9IHtcbiAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnXSxcbiAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSxcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI6ICgpID0+IHZvaWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBIVE1MRWxlbWVudCAmIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGUsXG4gICAgb25DaGFuZ2U6IFNiYk1lZGlhTWF0Y2hlckhhbmRsZXIsXG4gICkge1xuICAgIGNvbnN0IG9uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcjogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAgIG9uQ2hhbmdlKHRoaXMubWF0Y2hlcygpKTtcbiAgICAgIMm1c3RhdGVDb250cm9sbGVyKHRoaXMuX2hvc3QpLnRvZ2dsZSgnZGFyaycsIHRoaXMubWF0Y2hlcygpKTtcbiAgICB9O1xuICAgIHN1cGVyKF9ob3N0LCB7XG4gICAgICBbU2JiTWVkaWFRdWVyeURhcmtNb2RlXTogb25DaGFuZ2VXaXRoU3RhdGVVcGRhdGVyLFxuICAgIH0pO1xuICAgIHRoaXMuX29uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlciA9IG9uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9yZWFkTGlnaHREYXJrQ2xhc3MoKTogJ3NiYi1saWdodC1kYXJrJyB8ICdzYmItbGlnaHQnIHwgJ3NiYi1kYXJrJyB8IG51bGwge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGNsYXNzTGlzdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3Q7XG4gICAgcmV0dXJuIChcbiAgICAgIChbJ3NiYi1saWdodC1kYXJrJywgJ3NiYi1kYXJrJywgJ3NiYi1saWdodCddIGFzIGNvbnN0KS5maW5kKChtb2RlKSA9PlxuICAgICAgICBjbGFzc0xpc3QuY29udGFpbnMobW9kZSksXG4gICAgICApID8/IG51bGxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIGFuIHVwZGF0ZSBvZiB0aGUgZGFyayBtb2RlIHN0YXRlLiBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZSBjb2xvci1zY2hlbWVcbiAgICogQ1NTIHByb3BlcnR5IGNoYW5nZXMsIGFzIHRoZSBtZWRpYSBxdWVyeSBkb2VzIG5vdCBwaWNrIHRoaXMgdXAgYXV0b21hdGljYWxseS5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBseW5lL25lZWRzLXN1cGVyLWNhbGwtcnVsZVxuICBwdWJsaWMgc3RhdGljIHJlcXVlc3RVcGRhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgZW50cnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KFNiYk1lZGlhUXVlcnlEYXJrTW9kZSk7XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICBlbnRyeS5oYW5kbGVycy5mb3JFYWNoKChoKSA9PiBoKGVudHJ5Lm1lZGlhUXVlcnlMaXN0Lm1hdGNoZXMpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBpc0ZpcnN0TGlzdGVuZXIgPVxuICAgICAgKG1lZGlhUXVlcnlSZWdpc3RyeS5nZXQoU2JiTWVkaWFRdWVyeURhcmtNb2RlKT8uaGFuZGxlcnMuc2l6ZSA/PyAwKSA9PT0gMDtcbiAgICBzdXBlci5ob3N0Q29ubmVjdGVkKCk7XG5cbiAgICBpZiAoaXNGaXJzdExpc3RlbmVyKSB7XG4gICAgICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIuX29ic2VydmVyIS5vYnNlcnZlKFxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsXG4gICAgICAgIFNiYkRhcmtNb2RlQ29udHJvbGxlci5fb2JzZXJ2ZXJDb25maWcsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX29uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcigpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgc3VwZXIuaG9zdERpc2Nvbm5lY3RlZCgpO1xuXG4gICAgaWYgKChtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KFNiYk1lZGlhUXVlcnlEYXJrTW9kZSk/LmhhbmRsZXJzLnNpemUgPz8gMCkgPT09IDApIHtcbiAgICAgIFNiYkRhcmtNb2RlQ29udHJvbGxlci5fb2JzZXJ2ZXIhLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgbWF0Y2hlcygpOiBib29sZWFuIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgY29sb3JTY2hlbWUgPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2hvc3QpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yLXNjaGVtZScpO1xuICAgIGNvbnN0IGRhcmtBdmFpbGFibGUgPSBjb2xvclNjaGVtZS5pbmNsdWRlcygnZGFyaycpO1xuICAgIGNvbnN0IGRhcmtPbmx5ID0gY29sb3JTY2hlbWUudHJpbSgpID09PSAnZGFyayc7XG4gICAgY29uc3QgcHJlZmVycmVkRGFya01vZGUgPSBzdXBlci5tYXRjaGVzKFNiYk1lZGlhUXVlcnlEYXJrTW9kZSkgYXMgYm9vbGVhbjtcblxuICAgIHJldHVybiAocHJlZmVycmVkRGFya01vZGUgJiYgZGFya0F2YWlsYWJsZSkgfHwgZGFya09ubHk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQWNBLElBQWEsNEJBQTRCO0FBQ3pDLElBQWEsd0JBQXdCO0FBQ3JDLElBQWEscUJBQXFCO0FBQ2xDLElBQWEsNkJBQTZCO0FBQzFDLElBQWEsc0NBQXNDLGVBQWUscUJBQW9CO0FBQ3RGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCOzs7Ozs7QUFvQnhGLElBQU0scUNBQXFCLElBQUksS0FBOEI7Ozs7Ozs7OztBQVU3RCxJQUFhLDRCQUFiLE1BQXNDO0NBQ3BDLFlBQ0UsTUFDUSxVQUFnRDtBQUFoRCxPQUFBLFdBQUE7QUFFUixPQUFLLGNBQWMsS0FBSzs7Ozs7OztD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
148
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtbWF0Y2hlcnMtY29udHJvbGxlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9tZWRpYS1tYXRjaGVycy1jb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNiYkJyZWFrcG9pbnRMYXJnZU1heCxcbiAgU2JiQnJlYWtwb2ludExhcmdlTWluLFxuICBTYmJCcmVha3BvaW50U21hbGxNYXgsXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1pbixcbiAgU2JiQnJlYWtwb2ludFVsdHJhTWluLFxuICBTYmJCcmVha3BvaW50WmVyb01pbixcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZGVzaWduLXRva2Vucyc7XG5pbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IMm1c3RhdGVDb250cm9sbGVyIH0gZnJvbSAnLi4vbWl4aW5zL2VsZW1lbnQtaW50ZXJuYWxzLW1peGluLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRWxlbWVudEludGVybmFsc01peGluVHlwZSB9IGZyb20gJy4uL21peGlucy50cyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlGb3JjZWRDb2xvcnMgPSAnKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSknO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlEYXJrTW9kZSA9ICcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5SG92ZXIgPSAnKGFueS1ob3ZlcjogaG92ZXIpJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5UG9pbnRlckNvYXJzZSA9ICcocG9pbnRlcjogY29hcnNlKSc7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRaZXJvQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtTYmJCcmVha3BvaW50WmVyb01pbn0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtTYmJCcmVha3BvaW50U21hbGxNaW59KWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEFib3ZlID0gYChtaW4td2lkdGg6ICR7U2JiQnJlYWtwb2ludExhcmdlTWlufSlgO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50VWx0cmFBbmRBYm92ZSA9IGAobWluLXdpZHRoOiAke1NiYkJyZWFrcG9pbnRVbHRyYU1pbn0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQmVsb3cgPSBgKG1heC13aWR0aDogJHtTYmJCcmVha3BvaW50U21hbGxNYXh9KWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEJlbG93ID0gYChtYXgtd2lkdGg6ICR7U2JiQnJlYWtwb2ludExhcmdlTWF4fSlgO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cblxuLyoqXG4gKiBBIGNhbGxiYWNrLCB3aGljaCBpcyBpbnZva2VkIHdoZW4gdGhlIGFzc29jaWF0ZWQgbWVkaWEgcXVlcnkgbWF0Y2hcbiAqIHN0YXR1cyBjaGFuZ2VzLlxuICovXG5leHBvcnQgdHlwZSBTYmJNZWRpYU1hdGNoZXJIYW5kbGVyID0gKG1hdGNoZXM6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbmludGVyZmFjZSBNZWRpYVF1ZXJ5RW50cnkge1xuICBtZWRpYVF1ZXJ5TGlzdDogTWVkaWFRdWVyeUxpc3Q7XG4gIGV2ZW50SGFuZGxlcjogKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiB2b2lkO1xuICBoYW5kbGVyczogU2V0PFNiYk1lZGlhTWF0Y2hlckhhbmRsZXI+O1xufVxuXG4vKipcbiAqIFdlIHdhbnQgdG8gY2FjaGUgTWVkaWFRdWVyeUxpc3QgaW5zdGFuY2VzIGFuZCBjb3JyZXNwb25kaW5nXG4gKiBldmVudCBoYW5kbGVycywgYXMgYSBtdWx0aXR1ZGUgb2YgZXZlbnQgaGFuZGxlcnMgb24gZ2xvYmFsIG9iamVjdHNcbiAqIGNhbiBkZWdyYWRlIHBlcmZvcm1hbmNlIHdpdGggdGltZS5cbiAqL1xuY29uc3QgbWVkaWFRdWVyeVJlZ2lzdHJ5ID0gbmV3IE1hcDxzdHJpbmcsIE1lZGlhUXVlcnlFbnRyeT4oKTtcblxuLyoqXG4gKiBUaGlzIGNvbnRyb2xsZXIgYWxsb3dzIGxpc3RlbmluZyB0byBtZWRpYSBxdWVyeSBjaGFuZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBuZXcgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlcih0aGlzLCB7XG4gKiAgIFtTYmJGb3JjZWRDb2xvcnNRdWVyeV06IChtYXRjaGVzKSA9PiBkb1NvbWV0aGluZyhtYXRjaGVzKSxcbiAqIH0pXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGhvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QsXG4gICAgcHJpdmF0ZSBfcXVlcmllczogUmVjb3JkPHN0cmluZywgU2JiTWVkaWFNYXRjaGVySGFuZGxlcj4sXG4gICkge1xuICAgIGhvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIHF1ZXJ5IG1hdGNoZXMuIFJldHVybnMgbnVsbCB3aXRoIFNTUi5cbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBjaGVjayBhZ2FpbnN0LlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBxdWVyeSBtYXRjaGVzIG9yIG51bGwgd2l0aCBTU1IuXG4gICAqL1xuICBwdWJsaWMgbWF0Y2hlcyhxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IG51bGwge1xuICAgIC8vIElmIHdlIHVzZSB0aGUgY2FjaGVkIGluc3RhbmNlLCBXZWJraXQgc2VlbXMgdG8gdXBkYXRlIHRoZSBzdGF0ZSBhIHRpY2sgdG9vIGxhdGUuXG4gICAgLy8gRHVlIHRvIHRoaXMgd2UgZGlyZWN0bHkgdXNlIG1hdGNoTWVkaWEgaGVyZS5cbiAgICByZXR1cm4gaXNTZXJ2ZXIgPyBudWxsIDogbWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlcztcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3F1ZXJ5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9xdWVyaWVzKSkge1xuICAgICAgY29uc3QgbWVkaWFRdWVyeSA9IG1lZGlhUXVlcnlSZWdpc3RyeS5nZXQocXVlcnkpO1xuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgbWVkaWFRdWVyeS5oYW5kbGVycy5hZGQoaGFuZGxlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtZWRpYVF1ZXJ5TGlzdCA9IG1hdGNoTWVkaWEocXVlcnkpO1xuICAgICAgICBjb25zdCBoYW5kbGVycyA9IG5ldyBTZXQoW2hhbmRsZXJdKTtcbiAgICAgICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGU6IE1lZGlhUXVlcnlMaXN0RXZlbnQpOiB2b2lkID0+XG4gICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaCgoaCkgPT4gaChlLm1hdGNoZXMpKTtcbiAgICAgICAgbWVkaWFRdWVyeUxpc3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgbWVkaWFRdWVyeVJlZ2lzdHJ5LnNldChxdWVyeSwgeyBtZWRpYVF1ZXJ5TGlzdCwgaGFuZGxlcnMsIGV2ZW50SGFuZGxlciB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtxdWVyeSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fcXVlcmllcykpIHtcbiAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KHF1ZXJ5KTtcbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIG1lZGlhUXVlcnkuaGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgICAgICBpZiAoIW1lZGlhUXVlcnkuaGFuZGxlcnMuc2l6ZSkge1xuICAgICAgICAgIG1lZGlhUXVlcnlSZWdpc3RyeS5kZWxldGUocXVlcnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyLCB3aGljaFxuICogdGFrZXMgdGhlIGNvbG9yLXNjaGVtZSBDU1MgcHJvcGVydHkgaW50byBhY2NvdW50IHdoZW4gZGV0ZXJtaW5pbmdcbiAqIHRoZSBkYXJrIG1vZGUgc3RhdGUgYW5kIHVwZGF0ZXMgYSA6c3RhdGUoZGFyaykgb24gdGhlIGhvc3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIG5ldyBTYmJEYXJrTW9kZUNvbnRyb2xsZXIodGhpcywgKGlzRGFya01vZGUpID0+IGRvU29tZXRoaW5nKGlzRGFya01vZGUpKTtcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkRhcmtNb2RlQ29udHJvbGxlciBleHRlbmRzIFNiYk1lZGlhTWF0Y2hlckNvbnRyb2xsZXIge1xuICAvKiogVGhlIGN1cnJlbnQgbW9kZSBiYXNlZCBvbiB0aGUgY2xhc3MgYXR0cmlidXRlIG9mIHRoZSA8aHRtbD4gZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnRNb2RlOiAnc2JiLWxpZ2h0LWRhcmsnIHwgJ3NiYi1saWdodCcgfCAnc2JiLWRhcmsnIHwgbnVsbCA9XG4gICAgdGhpcy5fcmVhZExpZ2h0RGFya0NsYXNzKCk7XG5cbiAgLyoqIE11dGF0aW9uT2JzZXJ2ZXIgdGhhdCBvYnNlcnZlcyB0aGUgXCJjbGFzc1wiIGF0dHJpYnV0ZSBvZiB0aGUgPGh0bWw+IGVsZW1lbnQuICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgICBpZiAobXV0YXRpb25zWzBdLm9sZFZhbHVlICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpKSB7XG4gICAgICAgICAgY29uc3QgbmV3TW9kZSA9IHRoaXMuX3JlYWRMaWdodERhcmtDbGFzcygpO1xuICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50TW9kZSAhPT0gbmV3TW9kZSkge1xuICAgICAgICAgICAgU2JiRGFya01vZGVDb250cm9sbGVyLnJlcXVlc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRNb2RlID0gbmV3TW9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlckNvbmZpZyA9IHtcbiAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnXSxcbiAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSxcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI6ICgpID0+IHZvaWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBIVE1MRWxlbWVudCAmIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGUsXG4gICAgb25DaGFuZ2U6IFNiYk1lZGlhTWF0Y2hlckhhbmRsZXIsXG4gICkge1xuICAgIGNvbnN0IG9uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcjogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAgIG9uQ2hhbmdlKHRoaXMubWF0Y2hlcygpKTtcbiAgICAgIMm1c3RhdGVDb250cm9sbGVyKHRoaXMuX2hvc3QpLnRvZ2dsZSgnZGFyaycsIHRoaXMubWF0Y2hlcygpKTtcbiAgICB9O1xuICAgIHN1cGVyKF9ob3N0LCB7XG4gICAgICBbU2JiTWVkaWFRdWVyeURhcmtNb2RlXTogb25DaGFuZ2VXaXRoU3RhdGVVcGRhdGVyLFxuICAgIH0pO1xuICAgIHRoaXMuX29uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlciA9IG9uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9yZWFkTGlnaHREYXJrQ2xhc3MoKTogJ3NiYi1saWdodC1kYXJrJyB8ICdzYmItbGlnaHQnIHwgJ3NiYi1kYXJrJyB8IG51bGwge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGNsYXNzTGlzdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3Q7XG4gICAgcmV0dXJuIChcbiAgICAgIChbJ3NiYi1saWdodC1kYXJrJywgJ3NiYi1kYXJrJywgJ3NiYi1saWdodCddIGFzIGNvbnN0KS5maW5kKChtb2RlKSA9PlxuICAgICAgICBjbGFzc0xpc3QuY29udGFpbnMobW9kZSksXG4gICAgICApID8/IG51bGxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIGFuIHVwZGF0ZSBvZiB0aGUgZGFyayBtb2RlIHN0YXRlLiBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZSBjb2xvci1zY2hlbWVcbiAgICogQ1NTIHByb3BlcnR5IGNoYW5nZXMsIGFzIHRoZSBtZWRpYSBxdWVyeSBkb2VzIG5vdCBwaWNrIHRoaXMgdXAgYXV0b21hdGljYWxseS5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBseW5lL25lZWRzLXN1cGVyLWNhbGwtcnVsZVxuICBwdWJsaWMgc3RhdGljIHJlcXVlc3RVcGRhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgZW50cnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KFNiYk1lZGlhUXVlcnlEYXJrTW9kZSk7XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICBlbnRyeS5oYW5kbGVycy5mb3JFYWNoKChoKSA9PiBoKGVudHJ5Lm1lZGlhUXVlcnlMaXN0Lm1hdGNoZXMpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBpc0ZpcnN0TGlzdGVuZXIgPVxuICAgICAgKG1lZGlhUXVlcnlSZWdpc3RyeS5nZXQoU2JiTWVkaWFRdWVyeURhcmtNb2RlKT8uaGFuZGxlcnMuc2l6ZSA/PyAwKSA9PT0gMDtcbiAgICBzdXBlci5ob3N0Q29ubmVjdGVkKCk7XG5cbiAgICBpZiAoaXNGaXJzdExpc3RlbmVyKSB7XG4gICAgICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIuX29ic2VydmVyIS5vYnNlcnZlKFxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsXG4gICAgICAgIFNiYkRhcmtNb2RlQ29udHJvbGxlci5fb2JzZXJ2ZXJDb25maWcsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX29uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcigpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgc3VwZXIuaG9zdERpc2Nvbm5lY3RlZCgpO1xuXG4gICAgaWYgKChtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KFNiYk1lZGlhUXVlcnlEYXJrTW9kZSk/LmhhbmRsZXJzLnNpemUgPz8gMCkgPT09IDApIHtcbiAgICAgIFNiYkRhcmtNb2RlQ29udHJvbGxlci5fb2JzZXJ2ZXIhLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgbWF0Y2hlcygpOiBib29sZWFuIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgY29sb3JTY2hlbWUgPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2hvc3QpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yLXNjaGVtZScpO1xuICAgIGNvbnN0IGRhcmtBdmFpbGFibGUgPSBjb2xvclNjaGVtZS5pbmNsdWRlcygnZGFyaycpO1xuICAgIGNvbnN0IGRhcmtPbmx5ID0gY29sb3JTY2hlbWUudHJpbSgpID09PSAnZGFyayc7XG4gICAgY29uc3QgcHJlZmVycmVkRGFya01vZGUgPSBzdXBlci5tYXRjaGVzKFNiYk1lZGlhUXVlcnlEYXJrTW9kZSkgYXMgYm9vbGVhbjtcblxuICAgIHJldHVybiAocHJlZmVycmVkRGFya01vZGUgJiYgZGFya0F2YWlsYWJsZSkgfHwgZGFya09ubHk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQWNBLElBQWEsNEJBQTRCO0FBQ3pDLElBQWEsd0JBQXdCO0FBQ3JDLElBQWEscUJBQXFCO0FBQ2xDLElBQWEsNkJBQTZCO0FBQzFDLElBQWEsc0NBQXNDLGVBQWUscUJBQW9CO0FBQ3RGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCOzs7Ozs7QUFvQnhGLElBQU0scUNBQXFCLElBQUksS0FBOEI7Ozs7Ozs7OztBQVU3RCxJQUFhLDRCQUFiLE1BQXNDO0NBQ3BDLFlBQ0UsTUFDUSxVQUFnRDtBQUFoRCxPQUFBLFdBQUE7QUFFUixPQUFLLGNBQWMsS0FBSzs7Ozs7OztD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
@@ -291,11 +291,12 @@ var SbbOverlayPositionController = class {
291
291
  _readPositionsFromCss() {
292
292
  if (!this._usePolyfill) return;
293
293
  this._overlayStyles ??= getComputedStyle(this._overlay);
294
- this._positions = [this._overlayStyles.getPropertyValue("--sbb-overlay-position-area") || "block-end", ...this._overlayStyles.getPropertyValue("--sbb-overlay-position-try-fallbacks").split(",").map((f) => f.trim()).filter((f) => !!f)];
294
+ const positions = [this._overlayStyles.getPropertyValue("--sbb-overlay-position-area") || "block-end", ...this._overlayStyles.getPropertyValue("--sbb-overlay-position-try-fallbacks").split(",").map((f) => f.trim()).filter((f) => !!f)];
295
+ this._positions = positions;
295
296
  if (this._lastPosition && !this._positions.includes(this._lastPosition)) this._lastPosition = void 0;
296
297
  }
297
298
  };
298
299
  //#endregion
299
300
  export { SbbOverlayPositionController };
300
301
 
301
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1wb3NpdGlvbi1jb250cm9sbGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL292ZXJsYXktcG9zaXRpb24tY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiRWxlbWVudEludGVybmFsc01peGluVHlwZSB9IGZyb20gJy4uL21peGlucy50cyc7XG5cbmNvbnN0IGNzc0FuY2hvclBvc2l0aW9uU3VwcG9ydGVkID0gIWlzU2VydmVyICYmIENTUy5zdXBwb3J0cygnYW5jaG9yLW5hbWUnLCAnLS10ZXN0Jyk7XG5cbmNvbnN0IHBoeXNpY2FsU3VwcG9ydGVkUG9zaXRpb25zID0gW1xuICAndG9wJyxcbiAgJ2JvdHRvbScsXG4gICdsZWZ0JyxcbiAgJ3JpZ2h0JyxcbiAgJ3RvcCBzcGFuLWxlZnQnLFxuICAndG9wIHNwYW4tcmlnaHQnLFxuICAnYm90dG9tIHNwYW4tbGVmdCcsXG4gICdib3R0b20gc3Bhbi1yaWdodCcsXG4gICdsZWZ0IHNwYW4tdG9wJyxcbiAgJ2xlZnQgc3Bhbi1ib3R0b20nLFxuICAncmlnaHQgc3Bhbi10b3AnLFxuICAncmlnaHQgc3Bhbi1ib3R0b20nLFxuXTtcblxuLy8gTm90ZTogaWYgeW91IGFkZCBuZXcgbG9naWNhbCBzdXBwb3J0ZWQgcG9zaXRpb25zLCB1cGRhdGUgYWxzbyB0aGUgJ3J0bFBvc2l0aW9uTWFwcGluZydcbmNvbnN0IGxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMgPSBbXG4gICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnLFxuICAnaW5saW5lLXN0YXJ0JyxcbiAgJ2lubGluZS1lbmQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1zdGFydCcsXG4gICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stc3RhcnQnLFxuICAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCcsXG5dO1xuXG5jb25zdCBydGxQb3NpdGlvbk1hcHBpbmc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICdibG9jay1zdGFydCc6ICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnOiAnYmxvY2stZW5kJyxcbiAgJ2lubGluZS1zdGFydCc6ICdpbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1lbmQnOiAnaW5saW5lLXN0YXJ0JyxcbiAgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLWVuZCcsXG4gICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnOiAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLWVuZCc6ICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnOiAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCc6ICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJyxcbiAgJ2lubGluZS1lbmQgc3Bhbi1ibG9jay1zdGFydCc6ICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1zdGFydCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJzogJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG59O1xuXG5jb25zdCBzdXBwb3J0ZWRQb3NpdGlvbnMgPSBbLi4ucGh5c2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMsIC4uLmxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnNdO1xubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQ29udHJvbGxlciBmb3IgbWFuYWdpbmcgb3ZlcmxheXMgcG9zaXRpb25pbmcuIEFsc28gYWN0cyBhcyBhIHBvbHlmaWxsIHdoZW4gbmF0aXZlXG4gKiBDU1MgQW5jaG9yIFBvc2l0aW9uaW5nIGlzIG5vdCBzdXBwb3J0ZWQgKGVub3VnaCkuXG4gKiBBcHBsaWVzIHVuaXF1ZSBhbmNob3IgbmFtZXMgd2hlbiB1c2luZyBuYXRpdmUgQ1NTIEFuY2hvciBQb3NpdGlvbmluZ1xuICogb3IgY2FsY3VsYXRlcyBhbmQgYXBwbGllcyBjb3JyZWN0IHBvc2l0aW9ucyBpbiBwb2x5ZmlsbCBtb2RlLlxuICpcbiAqIEFsc28sIHRoZSBjb250cm9sbGVyIHNldHMgdGhlICdkYXRhLXBvc2l0aW9uJyBhdHRyaWJ1dGUgb24gdGhlIG92ZXJsYXkgZWxlbWVudC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgc3BlY2lmaWMgc3R5bGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5LlxuICpcbiAqICMjIyBJbXBsZW1lbnRhdGlvblxuICogRGVmaW5lIGFuZCBhcHBseSB0aGUgZm9sbG93aW5nIENTUyB2YXJpYWJsZXMgb24gdGhlIG92ZXJsYXkgZWxlbWVudDpcbiAqIGBgYHNjc3NcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhOiBibG9jay1lbmQ7IC8vIERlZmF1bHRcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzOiBibG9jay1zdGFydCwgaW5saW5lLWVuZCwgaW5saW5lLXN0YXJ0OyAvLyBGYWxsYmFja3NcbiAqXG4gKiAgIHBvc2l0aW9uLWFyZWE6IHZhcigtLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEpO1xuICogICBwb3NpdGlvbi10cnktZmFsbGJhY2tzOiB2YXIoLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2JiT3ZlcmxheVBvc2l0aW9uQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc2l6ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy5fcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCkpXG4gICAgOiBudWxsITtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheTogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50ICYgU2JiRWxlbWVudEludGVybmFsc01peGluVHlwZTtcbiAgcHJpdmF0ZSBfYWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9hbmNob3I/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfb3ZlcmxheVN0eWxlcz86IENTU1N0eWxlRGVjbGFyYXRpb247XG4gIHByaXZhdGUgX2ZyYW1lPzogUmV0dXJuVHlwZTx0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lPjtcbiAgcHJpdmF0ZSBfYW5jaG9yTmFtZSA9IGAtLXNiYi1vdmVybGF5LWFuY2hvci0keysrbmV4dElkfWA7XG4gIHByaXZhdGUgX3Bvc2l0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBfbGFzdFBvc2l0aW9uPzogc3RyaW5nO1xuXG4gIC8qKiBHZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uIChlLmcuIGJsb2NrLWVuZCwgYmxvY2stc3RhcnQsIGV0Yy4pICovXG4gIHB1YmxpYyBnZXQgY3VycmVudFBvc2l0aW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3VzZVBvbHlmaWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbGFzdFBvc2l0aW9uID8/IHRoaXMuX3Bvc2l0aW9uc1swXSA/PyAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb3ZlcmxheVN0eWxlcyA/Pz0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9vdmVybGF5KTtcbiAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5U3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ3Bvc2l0aW9uLWFyZWEnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50ICYgU2JiRWxlbWVudEludGVybmFsc01peGluVHlwZSxcbiAgICBwcml2YXRlIF91c2VQb2x5ZmlsbCA9ICFjc3NBbmNob3JQb3NpdGlvblN1cHBvcnRlZCxcbiAgKSB7XG4gICAgaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICAgIHRoaXMuX292ZXJsYXkgPSBob3N0O1xuICB9XG5cbiAgcHVibGljIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24tYW5jaG9yJywgdGhpcy5fYW5jaG9yTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlc2V0IHRoZSAncG9zaXRpb24tYXJlYScgdmFsdWUgdG8gYXZvaWQgYW55IHVud2FudGVkIHNpZGUgZWZmZWN0IHdoZW4gdXNpbmcgdGhlIHBvbHlmaWxsLlxuICAgICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24tYXJlYScsICdpbml0aWFsJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3RVcGRhdGUoKTogdm9pZCB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3JlYWRQb3NpdGlvbnNGcm9tQ3NzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdHMgdGhlIG92ZXJsYXkgdG8gdGhlIGdpdmVuIHRyaWdnZXIgZWxlbWVudCBhbmQgZGV0ZXJtaW5lcyB0aGUgb3B0aW1hbCBwb3NpdGlvbi5cbiAgICogVXN1YWxseSwgdGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgb3ZlcmxheSBpcyBvcGVuZWQuXG4gICAqIEBwYXJhbSBhbmNob3IgVGhlIGFuY2hvciBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGNvbm5lY3QoYW5jaG9yOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9hbmNob3IpIHtcbiAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgICB0aGlzLl9hbmNob3IgPSBhbmNob3I7XG5cbiAgICBpZiAoIXRoaXMuX3VzZVBvbHlmaWxsKSB7XG4gICAgICB0aGlzLl9hbmNob3Iuc3R5bGUuc2V0UHJvcGVydHkoJ2FuY2hvci1uYW1lJywgdGhpcy5fYW5jaG9yTmFtZSEpO1xuICAgIH1cblxuICAgIHRoaXMuX3JlYWRQb3NpdGlvbnNGcm9tQ3NzKCk7XG4gICAgdGhpcy5fY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gV2UgbmVlZCB0byB1c2UgY2FwdHVyZSBoZXJlIHRvIHJlYWN0IHRvIGFsbCBzY3JvbGwgZXZlbnRzLlxuICAgIC8vIElmIGNhcHR1cmUgd2FzIG5vdCB1c2VkLCB0aGVuIHNjcm9sbCBldmVudHMgaW5zaWRlIHNlcGFyYXRlIHNjcm9sbFxuICAgIC8vIGNvbnRhaW5lcnMgd291bGQgbm90IGJlIGNhdWdodC5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9yZXF1ZXN0Q2FsY3VsYXRlUG9zaXRpb24oKSwge1xuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX2Fib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMuX3JlcXVlc3RDYWxjdWxhdGVQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9hYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoYW5jaG9yLCB7IGJveDogJ2JvcmRlci1ib3gnIH0pO1xuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5fb3ZlcmxheSwgeyBib3g6ICdib3JkZXItYm94JyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuX2FuY2hvcj8uc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2FuY2hvci1uYW1lJyk7XG4gICAgdGhpcy5fYW5jaG9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIF9yZXF1ZXN0Q2FsY3VsYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZnJhbWUgPz89IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLl9jYWxjdWxhdGVQb3NpdGlvbigpO1xuICAgICAgdGhpcy5fZnJhbWUgPSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjdWxhdGVQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FuY2hvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24odGhpcy5fcG9zaXRpb25zKTtcbiAgICAgIHRoaXMuX2FwcGx5T3ZlcmxheVBvc2l0aW9uKHBvc2l0aW9uLnBvc2l0aW9uLCBwb3NpdGlvbi5sZWZ0LCBwb3NpdGlvbi50b3ApO1xuICAgIH1cblxuICAgIHRoaXMuX292ZXJsYXkuc2V0QXR0cmlidXRlKCdkYXRhLXBvc2l0aW9uJywgdGhpcy5jdXJyZW50UG9zaXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIG9wdGltYWwgcG9zaXRpb24gdGhhdCBmaXRzIHRoZSBvdmVybGF5LlxuICAgKiBAcGFyYW0gcG9zaXRpb25zIFRoZSBsaXN0IG9mIHBvc2l0aW9ucyB0byBjaGVjay5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2dldE9wdGltYWxQb3NpdGlvbihwb3NpdGlvbnM6IHN0cmluZ1tdKToge1xuICAgIGxlZnQ6IG51bWJlcjtcbiAgICB0b3A6IG51bWJlcjtcbiAgICBwb3NpdGlvbjogc3RyaW5nO1xuICAgIGZpdHM/OiBib29sZWFuO1xuICB9IHtcbiAgICBjb25zdCB7IG9mZnNldEhlaWdodDogb3ZlcmxheUhlaWdodCwgb2Zmc2V0V2lkdGg6IG92ZXJsYXlXaWR0aCB9ID0gdGhpcy5fb3ZlcmxheTtcbiAgICBjb25zdCB7IGlubmVySGVpZ2h0OiB2aWV3cG9ydEhlaWdodCwgaW5uZXJXaWR0aDogdmlld3BvcnRXaWR0aCB9ID0gd2luZG93O1xuICAgIGNvbnN0IHtcbiAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCxcbiAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0LFxuICAgICAgaGVpZ2h0OiB0cmlnZ2VySGVpZ2h0LFxuICAgICAgd2lkdGg6IHRyaWdnZXJXaWR0aCxcbiAgICB9ID0gdGhpcy5fYW5jaG9yIS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IGlzUnRsID0gdGhpcy5fb3ZlcmxheS5tYXRjaGVzKCc6ZGlyKHJ0bCknKTtcbiAgICBjb25zdCB0b3BTcGFjZSA9IHRyaWdnZXJPZmZzZXRUb3A7XG4gICAgY29uc3QgYm90dG9tU3BhY2UgPSB2aWV3cG9ydEhlaWdodCAtIHRyaWdnZXJIZWlnaHQgLSB0cmlnZ2VyT2Zmc2V0VG9wO1xuICAgIGNvbnN0IGxlZnRTcGFjZSA9IHRyaWdnZXJPZmZzZXRMZWZ0O1xuICAgIGNvbnN0IHJpZ2h0U3BhY2UgPSB2aWV3cG9ydFdpZHRoIC0gdHJpZ2dlcldpZHRoIC0gdHJpZ2dlck9mZnNldExlZnQ7XG5cbiAgICAvLyBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBvdmVybGF5IGFuZCB0aGUgdHJpZ2dlciB3aWR0aC9oZWlnaHQuXG4gICAgY29uc3Qgb3ZlcmxheVdpZHRoTmV0ID0gb3ZlcmxheVdpZHRoIC0gdHJpZ2dlcldpZHRoO1xuICAgIGNvbnN0IG92ZXJsYXlIZWlnaHROZXQgPSBvdmVybGF5SGVpZ2h0IC0gdHJpZ2dlckhlaWdodDtcblxuICAgIC8vIFRoZSBhbW91bnQgdGhhdCB3b3VsZCBleGNlZWQgdGhlIHRyaWdnZXIgaWYgdGhlIG92ZXJsYXkgd2VyZSBjZW50ZXJlZCBvbiBpdC5cbiAgICBjb25zdCBvdmVybGF5V2lkdGhPdmVybGFwID0gb3ZlcmxheVdpZHRoTmV0IC8gMjtcbiAgICBjb25zdCBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA9IG92ZXJsYXlIZWlnaHROZXQgLyAyO1xuXG4gICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICctLXNiYi1vdmVybGF5LWNvbnRyb2xsZXItdHJpZ2dlci1oZWlnaHQnLFxuICAgICAgYCR7dHJpZ2dlckhlaWdodH1weGAsXG4gICAgKTtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1vdmVybGF5LWNvbnRyb2xsZXItdHJpZ2dlci13aWR0aCcsIGAke3RyaWdnZXJXaWR0aH1weGApO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtYXNzaWdubWVudFxuICAgIGxldCByZXN1bHQ6IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuX2dldE9wdGltYWxQb3NpdGlvbj4gPSB7IGxlZnQ6IDAsIHRvcDogMCwgcG9zaXRpb246ICcnIH07XG4gICAgbGV0IGZpcnN0UG9zaXRpb246IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuX2dldE9wdGltYWxQb3NpdGlvbj4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBwb3NpdGlvbiBvZiBwb3NpdGlvbnMpIHtcbiAgICAgIC8vIElmIHJ0bCBpcyBlbmFibGVkLCB3ZSBtYXAgdGhlIGxvZ2ljYWwgcG9zaXRpb24gdG8gdGhlaXIgUlRMIGVxdWl2YWxlbnQuIChlLmcuICdpbmxpbmUtc3RhcnQnIC0+ICdpbmxpbmUtZW5kJylcbiAgICAgIGNvbnN0IHBoeXNpY2FsUG9zaXRpb24gPVxuICAgICAgICBpc1J0bCAmJiBsb2dpY2FsU3VwcG9ydGVkUG9zaXRpb25zLmluY2x1ZGVzKHBvc2l0aW9uKVxuICAgICAgICAgID8gcnRsUG9zaXRpb25NYXBwaW5nW3Bvc2l0aW9uXVxuICAgICAgICAgIDogcG9zaXRpb247XG5cbiAgICAgIHN3aXRjaCAocGh5c2ljYWxQb3NpdGlvbikge1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBjYXNlICdibG9jay1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGhPdmVybGFwLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6XG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHQgPD0gYm90dG9tU3BhY2UgJiZcbiAgICAgICAgICAgICAgb3ZlcmxheVdpZHRoT3ZlcmxhcCA8PSBsZWZ0U3BhY2UgJiZcbiAgICAgICAgICAgICAgb3ZlcmxheVdpZHRoT3ZlcmxhcCA8PSByaWdodFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoT3ZlcmxhcCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0IDw9IHRvcFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIGNhc2UgJ2lubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgKyB0cmlnZ2VyV2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0T3ZlcmxhcCxcbiAgICAgICAgICAgIGZpdHM6XG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aCA8PSByaWdodFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IHRvcFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBjYXNlICdpbmxpbmUtc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0T3ZlcmxhcCxcbiAgICAgICAgICAgIGZpdHM6XG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aCA8PSBsZWZ0U3BhY2UgJiZcbiAgICAgICAgICAgICAgb3ZlcmxheUhlaWdodE92ZXJsYXAgPD0gdG9wU3BhY2UgJiZcbiAgICAgICAgICAgICAgb3ZlcmxheUhlaWdodE92ZXJsYXAgPD0gYm90dG9tU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndG9wIHNwYW4tbGVmdCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoTmV0LFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlIZWlnaHQgPD0gdG9wU3BhY2UgJiYgb3ZlcmxheVdpZHRoTmV0IDw9IGxlZnRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd0b3Agc3Bhbi1yaWdodCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLWVuZCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5SGVpZ2h0IDw9IHRvcFNwYWNlICYmIG92ZXJsYXlXaWR0aE5ldCA8PSByaWdodFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSBzcGFuLWxlZnQnOlxuICAgICAgICBjYXNlICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGhOZXQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSBib3R0b21TcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gbGVmdFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSBzcGFuLXJpZ2h0JzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kIHNwYW4taW5saW5lLWVuZCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCArIHRyaWdnZXJIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5SGVpZ2h0IDw9IGJvdHRvbVNwYWNlICYmIG92ZXJsYXlXaWR0aE5ldCA8PSByaWdodFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQgc3Bhbi10b3AnOlxuICAgICAgICBjYXNlICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCArIHRyaWdnZXJIZWlnaHQgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheVdpZHRoIDw9IGxlZnRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IHRvcFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQgc3Bhbi1ib3R0b20nOlxuICAgICAgICBjYXNlICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5V2lkdGggPD0gbGVmdFNwYWNlICYmIG92ZXJsYXlIZWlnaHROZXQgPD0gYm90dG9tU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQgc3Bhbi10b3AnOlxuICAgICAgICBjYXNlICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgKyB0cmlnZ2VyV2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0IC0gb3ZlcmxheUhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSByaWdodFNwYWNlICYmIG92ZXJsYXlIZWlnaHROZXQgPD0gdG9wU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQgc3Bhbi1ib3R0b20nOlxuICAgICAgICBjYXNlICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wLFxuICAgICAgICAgICAgZml0czogb3ZlcmxheVdpZHRoIDw9IHJpZ2h0U3BhY2UgJiYgb3ZlcmxheUhlaWdodE5ldCA8PSBib3R0b21TcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdC5maXRzKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBmaXJzdFBvc2l0aW9uID8/PSByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gcG9zaXRpb24gZml0cywgd2UgcmV0dXJuIHRoZSBmaXJzdCBvbmUuXG4gICAgcmV0dXJuIGZpcnN0UG9zaXRpb24hO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlPdmVybGF5UG9zaXRpb24ocG9zaXRpb246IHN0cmluZywgbGVmdDogbnVtYmVyLCB0b3A6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIHRoaXMuX292ZXJsYXkuc3R5bGUubGVmdCA9IGAke2xlZnR9cHhgO1xuICAgIHRoaXMuX292ZXJsYXkuc3R5bGUudG9wID0gYCR7dG9wfXB4YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbmx5IHVzZWQgaW4gcG9seWZpbGwgbW9kZS5cbiAgICogUmVhZHMgdGhlIGxpc3Qgb2YgdGhlIGNvbmZpZ3VyZWQgcG9zaXRpb25zIGZyb20gdGhlIENTUyB2YXJpYWJsZXMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9yZWFkUG9zaXRpb25zRnJvbUNzcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3VzZVBvbHlmaWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX292ZXJsYXlTdHlsZXMgPz89IGdldENvbXB1dGVkU3R5bGUodGhpcy5fb3ZlcmxheSk7XG4gICAgY29uc3QgcG9zaXRpb25zID0gW1xuICAgICAgdGhpcy5fb3ZlcmxheVN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCctLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEnKSB8fCAnYmxvY2stZW5kJyxcbiAgICAgIC4uLnRoaXMuX292ZXJsYXlTdHlsZXNcbiAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2JiLW92ZXJsYXktcG9zaXRpb24tdHJ5LWZhbGxiYWNrcycpXG4gICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgIC5tYXAoKGYpID0+IGYudHJpbSgpKVxuICAgICAgICAuZmlsdGVyKChmKSA9PiAhIWYpLFxuICAgIF07XG5cbiAgICBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFViAmJiBwb3NpdGlvbnMuc29tZSgocCkgPT4gIXN1cHBvcnRlZFBvc2l0aW9ucy5pbmNsdWRlcyhwKSkpIHtcbiAgICAgIGNvbnN0IHVuc3VwcG9ydGVkUG9zaXRpb25zID0gcG9zaXRpb25zXG4gICAgICAgIC5maWx0ZXIoKHApID0+ICFzdXBwb3J0ZWRQb3NpdGlvbnMuaW5jbHVkZXMocCkpXG4gICAgICAgIC5zb3J0KClcbiAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBVbnN1cHBvcnRlZCBwb3NpdGlvbi10cnktZmFsbGJhY2tzICR7dW5zdXBwb3J0ZWRQb3NpdGlvbnN9IChTdXBwb3J0ZWQ6ICR7c3VwcG9ydGVkUG9zaXRpb25zLmpvaW4oJywgJyl9KWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX3Bvc2l0aW9ucyA9IHBvc2l0aW9ucztcbiAgICBpZiAodGhpcy5fbGFzdFBvc2l0aW9uICYmICF0aGlzLl9wb3NpdGlvbnMuaW5jbHVkZXModGhpcy5fbGFzdFBvc2l0aW9uKSkge1xuICAgICAgdGhpcy5fbGFzdFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUlBLElBQU0sNkJBQTZCLENBQUMsWUFBWSxJQUFJLFNBQVMsZUFBZSxTQUFTO0FBRXJGLElBQU0sNkJBQTZCO0NBQ2pDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNEO0FBR0QsSUFBTSw0QkFBNEI7Q0FDaEM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0Q7QUFFRCxJQUFNLHFCQUFnRDtDQUNwRCxlQUFlO0NBQ2YsYUFBYTtDQUNiLGdCQUFnQjtDQUNoQixjQUFjO0NBQ2QsaUNBQWlDO0NBQ2pDLCtCQUErQjtDQUMvQiwrQkFBK0I7Q0FDL0IsNkJBQTZCO0NBQzdCLGlDQUFpQztDQUNqQywrQkFBK0I7Q0FDL0IsK0JBQStCO0NBQy9CLDZCQUE2QjtDQUM5QjtBQUUwQixDQUFDLEdBQUcsNEJBQTRCLEdBQUcsMEJBQTBCO0FBQ3hGLElBQUksU0FBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQmIsSUFBYSwrQkFBYixNQUF5Qzs7Q0FjdkMsSUFBVyxrQkFBZTtBQUN4QixNQUFJLEtBQUssYUFDUCxRQUFPLEtBQUssaUJBQWlCLEtBQUssV0FBVyxNQUFNO09BQzlDO0FBQ0wsUUFBSyxtQkFBbUIsaUJBQWlCLEtBQUssU0FBUztBQUN2RCxVQUFPLEtBQUssZUFBZSxpQkFBaUIsZ0JBQWdCOzs7Q0FJaEUsWUFDRSxNQUNRLGVBQWUsQ0FBQyw0QkFBMEI7QUFBMUMsT0FBQSxlQUFBO0FBeEJPLE9BQUEsa0JBQWtCLENBQUMsV0FDaEMsSUFBSSxxQkFBcUIsS0FBSywyQkFBMkIsQ0FBQyxHQUMxRDtBQU1JLE9BQUEsY0FBYyx3QkFBd0IsRUFBRTtBQUN4QyxPQUFBLGFBQXVCLEVBQUU7QUFpQi9CLE9BQUssY0FBYyxLQUFLO0FBQ3hCLE9BQUssV0FBVzs7Q0FHWCxnQkFBYTtBQUNsQixNQUFJLENBQUMsS0FBSyxhQUNSLE1BQUssU0FBUyxNQUFNLFlBQVksbUJBQW1CLEtBQUssWUFBWTtNQUdwRSxNQUFLLFNBQVMsTUFBTSxZQUFZLGlCQUFpQixVQUFVOztDQUl4RCxhQUFVO0FBQ2YsTUFBSSxTQUNGO0FBRUYsT0FBSyx1QkFBdUI7Ozs7Ozs7Q0FRdkIsUUFBUSxRQUFtQjtBQUNoQyxNQUFJLFNBQ0Y7QUFHRixNQUFJLEtBQUssUUFDUCxNQUFLLFlBQVk7QUFFbkIsT0FBSyxVQUFVO0FBRWYsTUFBSSxDQUFDLEtBQUssYUFDUixNQUFLLFFBQVEsTUFBTSxZQUFZLGVBQWUsS0FBSyxZQUFhO0FBR2xFLE9BQUssdUJBQXVCO0FBQzVCLE9BQUssb0JBQW9CO0FBQ3pCLE9BQUssa0JBQWtCLE9BQU87QUFDOUIsT0FBSyxtQkFBbUIsSUFBSSxpQkFBaUI7QUFLN0MsV0FBUyxpQkFBaUIsZ0JBQWdCLEtBQUssMkJBQTJCLEVBQUU7R0FDMUUsU0FBUztHQUNULFNBQVM7R0FDVCxRQUFRLEtBQUssaUJBQWlCO0dBQy9CLENBQUM7QUFDRixTQUFPLGlCQUFpQixnQkFBZ0IsS0FBSywyQkFBMkIsRUFBRTtHQUN4RSxTQUFTO0dBQ1QsUUFBUSxLQUFLLGlCQUFpQjtHQUMvQixDQUFDO0FBQ0YsT0FBSyxnQkFBZ0IsUUFBUSxRQUFRLEVBQUUsS0FBSyxjQUFjLENBQUM7QUFDM0QsT0FBSyxnQkFBZ0IsUUFBUSxLQUFLLFVBQVUsRUFBRSxLQUFLLGNBQWMsQ0FBQzs7Q0FHN0QsYUFBVTtBQUNmLE9BQUssU0FBUyxNQUFNLGVBQWUsY0FBYztBQUNqRCxPQUFLLFVBQVUsS0FBQTtBQUNmLE9BQUssa0JBQWtCLE9BQU87QUFDOUIsT0FBSyxnQkFBZ0IsWUFBWTs7Q0FHM0IsNEJBQXlCO0FBQy9CLE9BQUssV0FBVyw0QkFBMkI7QUFDekMsUUFBSyxvQkFBb0I7QUFDekIsUUFBSyxTQUFTLEtBQUE7SUFDZDs7Q0FHSSxxQkFBa0I7QUFDeEIsTUFBSSxDQUFDLEtBQUssUUFDUjtBQUdGLE1BQUksS0FBSyxjQUFjO0dBQ3JCLE1BQU0sV0FBVyxLQUFLLG9CQUFvQixLQUFLLFdBQVc7QUFDMUQsUUFBSyxzQkFBc0IsU0FBUyxVQUFVLFNBQVMsTUFBTSxTQUFTLElBQUk7O0FBRzVFLE9BQUssU0FBUyxhQUFhLGlCQUFpQixLQUFLLGdCQUFnQjs7Ozs7OztDQVEzRCxvQkFBb0IsV0FBbUI7RUFNN0MsTUFBTSxFQUFFLGNBQWMsZUFBZSxhQUFhLGlCQUFpQixLQUFLO0VBQ3hFLE1BQU0sRUFBRSxhQUFhLGdCQUFnQixZQUFZLGtCQUFrQjtFQUNuRSxNQUFNLEVBQ0osS0FBSyxrQkFDTCxNQUFNLG1CQUNOLFFBQVEsZUFDUixPQUFPLGlCQUNMLEtBQUssUUFBUyx1QkFBdUI7RUFFekMsTUFBTSxRQUFRLEtBQUssU0FBUyxRQUFRLFlBQVk7RUFDaEQsTUFBTSxXQUFXO0VBQ2pCLE1BQU0sY0FBYyxpQkFBaUIsZ0JBQWdCO0VBQ3JELE1BQU0sWUFBWTtFQUNsQixNQUFNLGFBQWEsZ0JBQWdCLGVBQWU7RUFHbEQsTUFBTSxrQkFBa0IsZUFBZTtFQUN2QyxNQUFNLG1CQUFtQixnQkFBZ0I7RUFHekMsTUFBTSxzQkFBc0Isa0JBQWtCO0VBQzlDLE1BQU0sdUJBQXVCLG1CQUFtQjtBQUVoRCxPQUFLLFNBQVMsTUFBTSxZQUNsQiwyQ0FDQSxHQUFHLGNBQWEsSUFDakI7QUFDRCxPQUFLLFNBQVMsTUFBTSxZQUFZLDBDQUEwQyxHQUFHLGFBQVksSUFBSztFQUc5RixJQUFJLFNBQXNEO0dBQUUsTUFBTTtHQUFHLEtBQUs7R0FBRyxVQUFVO0dBQUk7RUFDM0YsSUFBSSxnQkFBeUUsS0FBQTtBQUM3RSxPQUFLLE1BQU0sWUFBWSxXQUFXO0FBT2hDLFdBSkUsU0FBUywwQkFBMEIsU0FBUyxTQUFTLEdBQ2pELG1CQUFtQixZQUNuQixVQUVOO0lBQ0U7SUFDQSxLQUFLO0lBQ0wsS0FBSztBQUNILGNBQVM7TUFDUDtNQUNBLE1BQU0sb0JBQW9CO01BQzFCLEtBQUssbUJBQW1CO01BQ3hCLE1BQ0UsaUJBQWlCLGVBQ2pCLHVCQUF1QixhQUN2Qix1QkFBdUI7TUFDMUI7QUFDRDtJQUNGLEtBQUs7SUFDTCxLQUFLO0FBQ0gsY0FBUztNQUNQO01BQ0EsTUFBTSxvQkFBb0I7TUFDMUIsS0FBSyxtQkFBbUI7TUFDeEIsTUFDRSxpQkFBaUIsWUFDakIsdUJBQXVCLGFBQ3ZCLHVCQUF1QjtNQUMxQjtBQUNEO0lBQ0YsS0FBSztJQUNMLEtBQUs7QUFDSCxjQUFTO01BQ1A7TUFDQSxNQUFNLG9CQUFvQjtNQUMxQixLQUFLLG1CQUFtQjtNQUN4QixNQUNFLGdCQUFnQixjQUNoQix3QkFBd0IsWUFDeEIsd0JBQXdCO01BQzNCO0FBQ0Q7SUFDRixLQUFLO0lBQ0wsS0FBSztBQUNILGNBQVM7TUFDUDtNQUNBLE1BQU0sb0JBQW9CO01BQzFCLEtBQUssbUJBQW1CO01BQ3hCLE1BQ0UsZ0JBQWdCLGFBQ2hCLHdCQUF3QixZQUN4Qix3QkFBd0I7TUFDM0I7QUFDRDtJQUNGLEtBQUs7SUFDTCxLQUFLO0FBQ0gsY0FBUztNQUNQO01BQ0EsTUFBTSxvQkFBb0I7TUFDMUIsS0FBSyxtQkFBbUI7TUFDeEIsTUFBTSxpQkFBaUIsWUFBWSxtQkFBbUI7TUFDdkQ7QUFDRDtJQUNGLEtBQUs7SUFDTCxLQUFLO0FBQ0gsY0FBUztNQUNQO01BQ0EsTUFBTTtNQUNOLEtBQUssbUJBQW1CO01BQ3hCLE1BQU0saUJBQWlCLFlBQVksbUJBQW1CO01BQ3ZEO0FBQ0Q7SUFDRixLQUFLO0lBQ0wsS0FBSztBQUNILGNBQVM7TUFDUDtNQUNBLE1BQU0sb0JBQW9CO01BQzFCLEtBQUssbUJBQW1CO01BQ3hCLE1BQU0saUJBQWlCLGVBQWUsbUJBQW1CO01BQzFEO0FBQ0Q7SUFDRixLQUFLO0lBQ0wsS0FBSztBQUNILGNBQVM7TUFDUDtNQUNBLE1BQU07TUFDTixLQUFLLG1CQUFtQjtNQUN4QixNQUFNLGlCQUFpQixlQUFlLG1CQUFtQjtNQUMxRDtBQUNEO0lBQ0YsS0FBSztJQUNMLEtBQUs7QUFDSCxjQUFTO01BQ1A7TUFDQSxNQUFNLG9CQUFvQjtNQUMxQixLQUFLLG1CQUFtQixnQkFBZ0I7TUFDeEMsTUFBTSxnQkFBZ0IsYUFBYSxvQkFBb0I7TUFDeEQ7QUFDRDtJQUNGLEtBQUs7SUFDTCxLQUFLO0FBQ0gsY0FBUztNQUNQO01BQ0EsTUFBTSxvQkFBb0I7TUFDMUIsS0FBSztNQUNMLE1BQU0sZ0JBQWdCLGFBQWEsb0JBQW9CO01BQ3hEO0FBQ0Q7SUFDRixLQUFLO0lBQ0wsS0FBSztBQUNILGNBQVM7TUFDUDtNQUNBLE1BQU0sb0JBQW9CO01BQzFCLEtBQUssbUJBQW1CLGdCQUFnQjtNQUN4QyxNQUFNLGdCQUFnQixjQUFjLG9CQUFvQjtNQUN6RDtBQUNEO0lBQ0YsS0FBSztJQUNMLEtBQUs7QUFDSCxjQUFTO01BQ1A7TUFDQSxNQUFNLG9CQUFvQjtNQUMxQixLQUFLO01BQ0wsTUFBTSxnQkFBZ0IsY0FBYyxvQkFBb0I7TUFDekQ7QUFDRDs7QUFFSixPQUFJLE9BQU8sS0FDVCxRQUFPO0FBRVQscUJBQWtCOztBQUlwQixTQUFPOztDQUdELHNCQUFzQixVQUFrQixNQUFjLEtBQVc7QUFDdkUsT0FBSyxnQkFBZ0I7QUFDckIsT0FBSyxTQUFTLE1BQU0sT0FBTyxHQUFHLEtBQUk7QUFDbEMsT0FBSyxTQUFTLE1BQU0sTUFBTSxHQUFHLElBQUc7Ozs7Ozs7Q0FRMUIsd0JBQXFCO0FBQzNCLE1BQUksQ0FBQyxLQUFLLGFBQ1I7QUFFRixPQUFLLG1CQUFtQixpQkFBaUIsS0FBSyxTQUFTO0FBb0J2RCxPQUFLLGFBbkJhLENBQ2hCLEtBQUssZUFBZSxpQkFBaUIsOEJBQThCLElBQUksYUFDdkUsR0FBRyxLQUFLLGVBQ0wsaUJBQWlCLHVDQUF1QyxDQUN4RCxNQUFNLElBQUksQ0FDVixLQUFLLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FDcEIsUUFBUSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQ3RCO0FBYUQsTUFBSSxLQUFLLGlCQUFpQixDQUFDLEtBQUssV0FBVyxTQUFTLEtBQUssY0FBYyxDQUNyRSxNQUFLLGdCQUFnQixLQUFBIn0=
302
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1wb3NpdGlvbi1jb250cm9sbGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL292ZXJsYXktcG9zaXRpb24tY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiRWxlbWVudEludGVybmFsc01peGluVHlwZSB9IGZyb20gJy4uL21peGlucy50cyc7XG5cbmNvbnN0IGNzc0FuY2hvclBvc2l0aW9uU3VwcG9ydGVkID0gIWlzU2VydmVyICYmIENTUy5zdXBwb3J0cygnYW5jaG9yLW5hbWUnLCAnLS10ZXN0Jyk7XG5cbmNvbnN0IHBoeXNpY2FsU3VwcG9ydGVkUG9zaXRpb25zID0gW1xuICAndG9wJyxcbiAgJ2JvdHRvbScsXG4gICdsZWZ0JyxcbiAgJ3JpZ2h0JyxcbiAgJ3RvcCBzcGFuLWxlZnQnLFxuICAndG9wIHNwYW4tcmlnaHQnLFxuICAnYm90dG9tIHNwYW4tbGVmdCcsXG4gICdib3R0b20gc3Bhbi1yaWdodCcsXG4gICdsZWZ0IHNwYW4tdG9wJyxcbiAgJ2xlZnQgc3Bhbi1ib3R0b20nLFxuICAncmlnaHQgc3Bhbi10b3AnLFxuICAncmlnaHQgc3Bhbi1ib3R0b20nLFxuXTtcblxuLy8gTm90ZTogaWYgeW91IGFkZCBuZXcgbG9naWNhbCBzdXBwb3J0ZWQgcG9zaXRpb25zLCB1cGRhdGUgYWxzbyB0aGUgJ3J0bFBvc2l0aW9uTWFwcGluZydcbmNvbnN0IGxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMgPSBbXG4gICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnLFxuICAnaW5saW5lLXN0YXJ0JyxcbiAgJ2lubGluZS1lbmQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1zdGFydCcsXG4gICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stc3RhcnQnLFxuICAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCcsXG5dO1xuXG5jb25zdCBydGxQb3NpdGlvbk1hcHBpbmc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICdibG9jay1zdGFydCc6ICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnOiAnYmxvY2stZW5kJyxcbiAgJ2lubGluZS1zdGFydCc6ICdpbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1lbmQnOiAnaW5saW5lLXN0YXJ0JyxcbiAgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLWVuZCcsXG4gICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnOiAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLWVuZCc6ICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnOiAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCc6ICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJyxcbiAgJ2lubGluZS1lbmQgc3Bhbi1ibG9jay1zdGFydCc6ICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1zdGFydCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJzogJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG59O1xuXG5jb25zdCBzdXBwb3J0ZWRQb3NpdGlvbnMgPSBbLi4ucGh5c2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMsIC4uLmxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnNdO1xubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQ29udHJvbGxlciBmb3IgbWFuYWdpbmcgb3ZlcmxheXMgcG9zaXRpb25pbmcuIEFsc28gYWN0cyBhcyBhIHBvbHlmaWxsIHdoZW4gbmF0aXZlXG4gKiBDU1MgQW5jaG9yIFBvc2l0aW9uaW5nIGlzIG5vdCBzdXBwb3J0ZWQgKGVub3VnaCkuXG4gKiBBcHBsaWVzIHVuaXF1ZSBhbmNob3IgbmFtZXMgd2hlbiB1c2luZyBuYXRpdmUgQ1NTIEFuY2hvciBQb3NpdGlvbmluZ1xuICogb3IgY2FsY3VsYXRlcyBhbmQgYXBwbGllcyBjb3JyZWN0IHBvc2l0aW9ucyBpbiBwb2x5ZmlsbCBtb2RlLlxuICpcbiAqIEFsc28sIHRoZSBjb250cm9sbGVyIHNldHMgdGhlICdkYXRhLXBvc2l0aW9uJyBhdHRyaWJ1dGUgb24gdGhlIG92ZXJsYXkgZWxlbWVudC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgc3BlY2lmaWMgc3R5bGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5LlxuICpcbiAqICMjIyBJbXBsZW1lbnRhdGlvblxuICogRGVmaW5lIGFuZCBhcHBseSB0aGUgZm9sbG93aW5nIENTUyB2YXJpYWJsZXMgb24gdGhlIG92ZXJsYXkgZWxlbWVudDpcbiAqIGBgYHNjc3NcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhOiBibG9jay1lbmQ7IC8vIERlZmF1bHRcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzOiBibG9jay1zdGFydCwgaW5saW5lLWVuZCwgaW5saW5lLXN0YXJ0OyAvLyBGYWxsYmFja3NcbiAqXG4gKiAgIHBvc2l0aW9uLWFyZWE6IHZhcigtLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEpO1xuICogICBwb3NpdGlvbi10cnktZmFsbGJhY2tzOiB2YXIoLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2JiT3ZlcmxheVBvc2l0aW9uQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc2l6ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy5fcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCkpXG4gICAgOiBudWxsITtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheTogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50ICYgU2JiRWxlbWVudEludGVybmFsc01peGluVHlwZTtcbiAgcHJpdmF0ZSBfYWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9hbmNob3I/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfb3ZlcmxheVN0eWxlcz86IENTU1N0eWxlRGVjbGFyYXRpb247XG4gIHByaXZhdGUgX2ZyYW1lPzogUmV0dXJuVHlwZTx0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lPjtcbiAgcHJpdmF0ZSBfYW5jaG9yTmFtZSA9IGAtLXNiYi1vdmVybGF5LWFuY2hvci0keysrbmV4dElkfWA7XG4gIHByaXZhdGUgX3Bvc2l0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBfbGFzdFBvc2l0aW9uPzogc3RyaW5nO1xuXG4gIC8qKiBHZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uIChlLmcuIGJsb2NrLWVuZCwgYmxvY2stc3RhcnQsIGV0Yy4pICovXG4gIHB1YmxpYyBnZXQgY3VycmVudFBvc2l0aW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3VzZVBvbHlmaWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbGFzdFBvc2l0aW9uID8/IHRoaXMuX3Bvc2l0aW9uc1swXSA/PyAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb3ZlcmxheVN0eWxlcyA/Pz0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9vdmVybGF5KTtcbiAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5U3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ3Bvc2l0aW9uLWFyZWEnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50ICYgU2JiRWxlbWVudEludGVybmFsc01peGluVHlwZSxcbiAgICBwcml2YXRlIF91c2VQb2x5ZmlsbCA9ICFjc3NBbmNob3JQb3NpdGlvblN1cHBvcnRlZCxcbiAgKSB7XG4gICAgaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICAgIHRoaXMuX292ZXJsYXkgPSBob3N0O1xuICB9XG5cbiAgcHVibGljIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24tYW5jaG9yJywgdGhpcy5fYW5jaG9yTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlc2V0IHRoZSAncG9zaXRpb24tYXJlYScgdmFsdWUgdG8gYXZvaWQgYW55IHVud2FudGVkIHNpZGUgZWZmZWN0IHdoZW4gdXNpbmcgdGhlIHBvbHlmaWxsLlxuICAgICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24tYXJlYScsICdpbml0aWFsJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3RVcGRhdGUoKTogdm9pZCB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3JlYWRQb3NpdGlvbnNGcm9tQ3NzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdHMgdGhlIG92ZXJsYXkgdG8gdGhlIGdpdmVuIHRyaWdnZXIgZWxlbWVudCBhbmQgZGV0ZXJtaW5lcyB0aGUgb3B0aW1hbCBwb3NpdGlvbi5cbiAgICogVXN1YWxseSwgdGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgb3ZlcmxheSBpcyBvcGVuZWQuXG4gICAqIEBwYXJhbSBhbmNob3IgVGhlIGFuY2hvciBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGNvbm5lY3QoYW5jaG9yOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9hbmNob3IpIHtcbiAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgICB0aGlzLl9hbmNob3IgPSBhbmNob3I7XG5cbiAgICBpZiAoIXRoaXMuX3VzZVBvbHlmaWxsKSB7XG4gICAgICB0aGlzLl9hbmNob3Iuc3R5bGUuc2V0UHJvcGVydHkoJ2FuY2hvci1uYW1lJywgdGhpcy5fYW5jaG9yTmFtZSEpO1xuICAgIH1cblxuICAgIHRoaXMuX3JlYWRQb3NpdGlvbnNGcm9tQ3NzKCk7XG4gICAgdGhpcy5fY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gV2UgbmVlZCB0byB1c2UgY2FwdHVyZSBoZXJlIHRvIHJlYWN0IHRvIGFsbCBzY3JvbGwgZXZlbnRzLlxuICAgIC8vIElmIGNhcHR1cmUgd2FzIG5vdCB1c2VkLCB0aGVuIHNjcm9sbCBldmVudHMgaW5zaWRlIHNlcGFyYXRlIHNjcm9sbFxuICAgIC8vIGNvbnRhaW5lcnMgd291bGQgbm90IGJlIGNhdWdodC5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9yZXF1ZXN0Q2FsY3VsYXRlUG9zaXRpb24oKSwge1xuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX2Fib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMuX3JlcXVlc3RDYWxjdWxhdGVQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9hYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoYW5jaG9yLCB7IGJveDogJ2JvcmRlci1ib3gnIH0pO1xuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5fb3ZlcmxheSwgeyBib3g6ICdib3JkZXItYm94JyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuX2FuY2hvcj8uc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2FuY2hvci1uYW1lJyk7XG4gICAgdGhpcy5fYW5jaG9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIF9yZXF1ZXN0Q2FsY3VsYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZnJhbWUgPz89IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLl9jYWxjdWxhdGVQb3NpdGlvbigpO1xuICAgICAgdGhpcy5fZnJhbWUgPSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjdWxhdGVQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FuY2hvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24odGhpcy5fcG9zaXRpb25zKTtcbiAgICAgIHRoaXMuX2FwcGx5T3ZlcmxheVBvc2l0aW9uKHBvc2l0aW9uLnBvc2l0aW9uLCBwb3NpdGlvbi5sZWZ0LCBwb3NpdGlvbi50b3ApO1xuICAgIH1cblxuICAgIHRoaXMuX292ZXJsYXkuc2V0QXR0cmlidXRlKCdkYXRhLXBvc2l0aW9uJywgdGhpcy5jdXJyZW50UG9zaXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIG9wdGltYWwgcG9zaXRpb24gdGhhdCBmaXRzIHRoZSBvdmVybGF5LlxuICAgKiBAcGFyYW0gcG9zaXRpb25zIFRoZSBsaXN0IG9mIHBvc2l0aW9ucyB0byBjaGVjay5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2dldE9wdGltYWxQb3NpdGlvbihwb3NpdGlvbnM6IHN0cmluZ1tdKToge1xuICAgIGxlZnQ6IG51bWJlcjtcbiAgICB0b3A6IG51bWJlcjtcbiAgICBwb3NpdGlvbjogc3RyaW5nO1xuICAgIGZpdHM/OiBib29sZWFuO1xuICB9IHtcbiAgICBjb25zdCB7IG9mZnNldEhlaWdodDogb3ZlcmxheUhlaWdodCwgb2Zmc2V0V2lkdGg6IG92ZXJsYXlXaWR0aCB9ID0gdGhpcy5fb3ZlcmxheTtcbiAgICBjb25zdCB7IGlubmVySGVpZ2h0OiB2aWV3cG9ydEhlaWdodCwgaW5uZXJXaWR0aDogdmlld3BvcnRXaWR0aCB9ID0gd2luZG93O1xuICAgIGNvbnN0IHtcbiAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCxcbiAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0LFxuICAgICAgaGVpZ2h0OiB0cmlnZ2VySGVpZ2h0LFxuICAgICAgd2lkdGg6IHRyaWdnZXJXaWR0aCxcbiAgICB9ID0gdGhpcy5fYW5jaG9yIS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IGlzUnRsID0gdGhpcy5fb3ZlcmxheS5tYXRjaGVzKCc6ZGlyKHJ0bCknKTtcbiAgICBjb25zdCB0b3BTcGFjZSA9IHRyaWdnZXJPZmZzZXRUb3A7XG4gICAgY29uc3QgYm90dG9tU3BhY2UgPSB2aWV3cG9ydEhlaWdodCAtIHRyaWdnZXJIZWlnaHQgLSB0cmlnZ2VyT2Zmc2V0VG9wO1xuICAgIGNvbnN0IGxlZnRTcGFjZSA9IHRyaWdnZXJPZmZzZXRMZWZ0O1xuICAgIGNvbnN0IHJpZ2h0U3BhY2UgPSB2aWV3cG9ydFdpZHRoIC0gdHJpZ2dlcldpZHRoIC0gdHJpZ2dlck9mZnNldExlZnQ7XG5cbiAgICAvLyBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBvdmVybGF5IGFuZCB0aGUgdHJpZ2dlciB3aWR0aC9oZWlnaHQuXG4gICAgY29uc3Qgb3ZlcmxheVdpZHRoTmV0ID0gb3ZlcmxheVdpZHRoIC0gdHJpZ2dlcldpZHRoO1xuICAgIGNvbnN0IG92ZXJsYXlIZWlnaHROZXQgPSBvdmVybGF5SGVpZ2h0IC0gdHJpZ2dlckhlaWdodDtcblxuICAgIC8vIFRoZSBhbW91bnQgdGhhdCB3b3VsZCBleGNlZWQgdGhlIHRyaWdnZXIgaWYgdGhlIG92ZXJsYXkgd2VyZSBjZW50ZXJlZCBvbiBpdC5cbiAgICBjb25zdCBvdmVybGF5V2lkdGhPdmVybGFwID0gb3ZlcmxheVdpZHRoTmV0IC8gMjtcbiAgICBjb25zdCBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA9IG92ZXJsYXlIZWlnaHROZXQgLyAyO1xuXG4gICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICctLXNiYi1vdmVybGF5LWNvbnRyb2xsZXItdHJpZ2dlci1oZWlnaHQnLFxuICAgICAgYCR7dHJpZ2dlckhlaWdodH1weGAsXG4gICAgKTtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1vdmVybGF5LWNvbnRyb2xsZXItdHJpZ2dlci13aWR0aCcsIGAke3RyaWdnZXJXaWR0aH1weGApO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtYXNzaWdubWVudFxuICAgIGxldCByZXN1bHQ6IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuX2dldE9wdGltYWxQb3NpdGlvbj4gPSB7IGxlZnQ6IDAsIHRvcDogMCwgcG9zaXRpb246ICcnIH07XG4gICAgbGV0IGZpcnN0UG9zaXRpb246IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuX2dldE9wdGltYWxQb3NpdGlvbj4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBwb3NpdGlvbiBvZiBwb3NpdGlvbnMpIHtcbiAgICAgIC8vIElmIHJ0bCBpcyBlbmFibGVkLCB3ZSBtYXAgdGhlIGxvZ2ljYWwgcG9zaXRpb24gdG8gdGhlaXIgUlRMIGVxdWl2YWxlbnQuIChlLmcuICdpbmxpbmUtc3RhcnQnIC0+ICdpbmxpbmUtZW5kJylcbiAgICAgIGNvbnN0IHBoeXNpY2FsUG9zaXRpb24gPVxuICAgICAgICBpc1J0bCAmJiBsb2dpY2FsU3VwcG9ydGVkUG9zaXRpb25zLmluY2x1ZGVzKHBvc2l0aW9uKVxuICAgICAgICAgID8gcnRsUG9zaXRpb25NYXBwaW5nW3Bvc2l0aW9uXVxuICAgICAgICAgIDogcG9zaXRpb247XG5cbiAgICAgIHN3aXRjaCAocGh5c2ljYWxQb3NpdGlvbikge1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBjYXNlICdibG9jay1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGhPdmVybGFwLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6XG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHQgPD0gYm90dG9tU3BhY2UgJiZcbiAgICAgICAgICAgICAgb3ZlcmxheVdpZHRoT3ZlcmxhcCA8PSBsZWZ0U3BhY2UgJiZcbiAgICAgICAgICAgICAgb3ZlcmxheVdpZHRoT3ZlcmxhcCA8PSByaWdodFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoT3ZlcmxhcCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0IDw9IHRvcFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIGNhc2UgJ2lubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgKyB0cmlnZ2VyV2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0T3ZlcmxhcCxcbiAgICAgICAgICAgIGZpdHM6XG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aCA8PSByaWdodFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IHRvcFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBjYXNlICdpbmxpbmUtc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0T3ZlcmxhcCxcbiAgICAgICAgICAgIGZpdHM6XG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aCA8PSBsZWZ0U3BhY2UgJiZcbiAgICAgICAgICAgICAgb3ZlcmxheUhlaWdodE92ZXJsYXAgPD0gdG9wU3BhY2UgJiZcbiAgICAgICAgICAgICAgb3ZlcmxheUhlaWdodE92ZXJsYXAgPD0gYm90dG9tU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndG9wIHNwYW4tbGVmdCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoTmV0LFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlIZWlnaHQgPD0gdG9wU3BhY2UgJiYgb3ZlcmxheVdpZHRoTmV0IDw9IGxlZnRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd0b3Agc3Bhbi1yaWdodCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLWVuZCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5SGVpZ2h0IDw9IHRvcFNwYWNlICYmIG92ZXJsYXlXaWR0aE5ldCA8PSByaWdodFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSBzcGFuLWxlZnQnOlxuICAgICAgICBjYXNlICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGhOZXQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSBib3R0b21TcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gbGVmdFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSBzcGFuLXJpZ2h0JzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kIHNwYW4taW5saW5lLWVuZCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCArIHRyaWdnZXJIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5SGVpZ2h0IDw9IGJvdHRvbVNwYWNlICYmIG92ZXJsYXlXaWR0aE5ldCA8PSByaWdodFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQgc3Bhbi10b3AnOlxuICAgICAgICBjYXNlICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCArIHRyaWdnZXJIZWlnaHQgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheVdpZHRoIDw9IGxlZnRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IHRvcFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQgc3Bhbi1ib3R0b20nOlxuICAgICAgICBjYXNlICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5V2lkdGggPD0gbGVmdFNwYWNlICYmIG92ZXJsYXlIZWlnaHROZXQgPD0gYm90dG9tU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQgc3Bhbi10b3AnOlxuICAgICAgICBjYXNlICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgKyB0cmlnZ2VyV2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0IC0gb3ZlcmxheUhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSByaWdodFNwYWNlICYmIG92ZXJsYXlIZWlnaHROZXQgPD0gdG9wU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQgc3Bhbi1ib3R0b20nOlxuICAgICAgICBjYXNlICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wLFxuICAgICAgICAgICAgZml0czogb3ZlcmxheVdpZHRoIDw9IHJpZ2h0U3BhY2UgJiYgb3ZlcmxheUhlaWdodE5ldCA8PSBib3R0b21TcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdC5maXRzKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBmaXJzdFBvc2l0aW9uID8/PSByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gcG9zaXRpb24gZml0cywgd2UgcmV0dXJuIHRoZSBmaXJzdCBvbmUuXG4gICAgcmV0dXJuIGZpcnN0UG9zaXRpb24hO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlPdmVybGF5UG9zaXRpb24ocG9zaXRpb246IHN0cmluZywgbGVmdDogbnVtYmVyLCB0b3A6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIHRoaXMuX292ZXJsYXkuc3R5bGUubGVmdCA9IGAke2xlZnR9cHhgO1xuICAgIHRoaXMuX292ZXJsYXkuc3R5bGUudG9wID0gYCR7dG9wfXB4YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbmx5IHVzZWQgaW4gcG9seWZpbGwgbW9kZS5cbiAgICogUmVhZHMgdGhlIGxpc3Qgb2YgdGhlIGNvbmZpZ3VyZWQgcG9zaXRpb25zIGZyb20gdGhlIENTUyB2YXJpYWJsZXMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9yZWFkUG9zaXRpb25zRnJvbUNzcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3VzZVBvbHlmaWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX292ZXJsYXlTdHlsZXMgPz89IGdldENvbXB1dGVkU3R5bGUodGhpcy5fb3ZlcmxheSk7XG4gICAgY29uc3QgcG9zaXRpb25zID0gW1xuICAgICAgdGhpcy5fb3ZlcmxheVN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCctLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEnKSB8fCAnYmxvY2stZW5kJyxcbiAgICAgIC4uLnRoaXMuX292ZXJsYXlTdHlsZXNcbiAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2JiLW92ZXJsYXktcG9zaXRpb24tdHJ5LWZhbGxiYWNrcycpXG4gICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgIC5tYXAoKGYpID0+IGYudHJpbSgpKVxuICAgICAgICAuZmlsdGVyKChmKSA9PiAhIWYpLFxuICAgIF07XG5cbiAgICBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFViAmJiBwb3NpdGlvbnMuc29tZSgocCkgPT4gIXN1cHBvcnRlZFBvc2l0aW9ucy5pbmNsdWRlcyhwKSkpIHtcbiAgICAgIGNvbnN0IHVuc3VwcG9ydGVkUG9zaXRpb25zID0gcG9zaXRpb25zXG4gICAgICAgIC5maWx0ZXIoKHApID0+ICFzdXBwb3J0ZWRQb3NpdGlvbnMuaW5jbHVkZXMocCkpXG4gICAgICAgIC5zb3J0KClcbiAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBVbnN1cHBvcnRlZCBwb3NpdGlvbi10cnktZmFsbGJhY2tzICR7dW5zdXBwb3J0ZWRQb3NpdGlvbnN9IChTdXBwb3J0ZWQ6ICR7c3VwcG9ydGVkUG9zaXRpb25zLmpvaW4oJywgJyl9KWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX3Bvc2l0aW9ucyA9IHBvc2l0aW9ucztcbiAgICBpZiAodGhpcy5fbGFzdFBvc2l0aW9uICYmICF0aGlzLl9wb3NpdGlvbnMuaW5jbHVkZXModGhpcy5fbGFzdFBvc2l0aW9uKSkge1xuICAgICAgdGhpcy5fbGFzdFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUlBLElBQU0sNkJBQTZCLENBQUMsWUFBWSxJQUFJLFNBQVMsZUFBZSxTQUFTO0FBRXJGLElBQU0sNkJBQTZCO0NBQ2pDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNEO0FBR0QsSUFBTSw0QkFBNEI7Q0FDaEM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0Q7QUFFRCxJQUFNLHFCQUFnRDtDQUNwRCxlQUFlO0NBQ2YsYUFBYTtDQUNiLGdCQUFnQjtDQUNoQixjQUFjO0NBQ2QsaUNBQWlDO0NBQ2pDLCtCQUErQjtDQUMvQiwrQkFBK0I7Q0FDL0IsNkJBQTZCO0NBQzdCLGlDQUFpQztDQUNqQywrQkFBK0I7Q0FDL0IsK0JBQStCO0NBQy9CLDZCQUE2QjtDQUM5QjtBQUUwQixDQUFDLEdBQUcsNEJBQTRCLEdBQUcsMEJBQTBCO0FBQ3hGLElBQUksU0FBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQmIsSUFBYSwrQkFBYixNQUF5Qzs7Q0FjdkMsSUFBVyxrQkFBZTtBQUN4QixNQUFJLEtBQUssYUFDUCxRQUFPLEtBQUssaUJBQWlCLEtBQUssV0FBVyxNQUFNO09BQzlDO0FBQ0wsUUFBSyxtQkFBbUIsaUJBQWlCLEtBQUssU0FBUztBQUN2RCxVQUFPLEtBQUssZUFBZSxpQkFBaUIs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
@@ -148,4 +148,4 @@ var DateAdapter = class {
148
148
  //#endregion
149
149
  export { DAYS_PER_ROW, DateAdapter, FORMAT_DATE, FRIDAY, ISO8601_FORMAT_DATE, MONDAY, MONTHS_PER_PAGE, MONTHS_PER_ROW, SATURDAY, SUNDAY, THURSDAY, TUESDAY, WEDNESDAY, YEARS_PER_PAGE, YEARS_PER_ROW };
150
150
 
151
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1hZGFwdGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRk9STUFUX0RBVEUgPVxuICAvKDA/WzEtOV18WzEyXVswLTldfDNbMDFdKVsuLFxcXFwvXFwtXFxzXSgwP1sxLTldfDFbMC0yXSlbLixcXFxcL1xcLVxcc10oWzAtOV17MSw0fSQpPy87XG5leHBvcnQgY29uc3QgSVNPODYwMV9GT1JNQVRfREFURSA9IC9eKFswLTldezR9KS0oMFsxLTldfDFbMC0yXSktKDBbMS05XXxbMS0zXVswLTldKSQvO1xuZXhwb3J0IGNvbnN0IE1PTkRBWSA9IDE7XG5leHBvcnQgY29uc3QgVFVFU0RBWSA9IDI7XG5leHBvcnQgY29uc3QgV0VETkVTREFZID0gMztcbmV4cG9ydCBjb25zdCBUSFVSU0RBWSA9IDQ7XG5leHBvcnQgY29uc3QgRlJJREFZID0gNTtcbmV4cG9ydCBjb25zdCBTQVRVUkRBWSA9IDY7XG5leHBvcnQgY29uc3QgU1VOREFZID0gMDtcblxuLy8gVE9ETyhicmVha2luZy1jaGFuZ2UpOiBNb3ZlIHRoZXNlIHZhcmlhYmxlcyB0byBjYWxlbmRhclxuZXhwb3J0IGNvbnN0IERBWVNfUEVSX1JPVzogbnVtYmVyID0gNztcbmV4cG9ydCBjb25zdCBNT05USFNfUEVSX1JPVzogbnVtYmVyID0gNDtcbmV4cG9ydCBjb25zdCBZRUFSU19QRVJfUk9XOiBudW1iZXIgPSA0O1xuZXhwb3J0IGNvbnN0IE1PTlRIU19QRVJfUEFHRTogbnVtYmVyID0gMTI7XG5leHBvcnQgY29uc3QgWUVBUlNfUEVSX1BBR0U6IG51bWJlciA9IDI0O1xuXG4vKipcbiAqIEFic3RyYWN0IGRhdGUgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL21hdGVyaWFsL2NvcmUvZGF0ZXRpbWUvZGF0ZS1hZGFwdGVyLnRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRlQWRhcHRlcjxUID0gYW55PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1dG9mZlllYXJPZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIGN1dG9mZlllYXJPZmZzZXQgVGhlIHRocmVzaG9sZCBvbiB3aGV0aGVyIGEgdHdvLWRpZ2l0IHllYXJcbiAgICogc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYmVsb25naW5nIHRvIDIwMDAgb3IgMTkwMC4gZS5nLiB3aXRoIDE1IChkZWZhdWx0KVxuICAgKiB0aGUgY3VycmVudCB5ZWFyIHBsdXMgMTUgd2lsbCBiZSB0cmVhdGVkIGFzIGJlbG9uZ2luZyB0byAyMDAwLCBhbmQgdGhlIHJlc3QgdG8gMTkwMC5cbiAgICogU28gZS5nLiB3aXRoIHRoZSBjdXJyZW50IHllYXIgMjAyNSwgNDAgd2lsbCBiZSB0cmVhdGVkIGFzIDIwNDAsIHdoaWxlIDQxIHdpbGwgYmUgdHJlYXRlZCBhcyAxOTQxLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGN1dG9mZlllYXJPZmZzZXQ6IG51bWJlciA9IDE1KSB7XG4gICAgdGhpcy5fY3V0b2ZmWWVhck9mZnNldCA9IGN1dG9mZlllYXJPZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB5ZWFyIGFzIGEgbnVtYmVyLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldFllYXIoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aCBhcyBhIG51bWJlci5cbiAgICogQXR0ZW50aW9uOiBUaGlzIHJldHVybnMgMS0xMiBhbmQgbWl0aWdhdGVzIHRoZSBkZWZhdWx0IEphdmFTY3JpcHQgRGF0ZSBiZWhhdmlvci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRNb250aChkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgbW9udGggYXMgYSBudW1iZXIuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF0ZShkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIERheSBvZiB0aGUgd2VlayBhcyBhIG51bWJlci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXlPZldlZWsoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKiogR2V0IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDA6IHN1bmRheTsgMTogbW9uZGF5OyBldGMuKS4gKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE51bURheXNJbk1vbnRoKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSBtb250aHMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgLyoqIEdldCBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDMxLCBmaWxsZWQgd2l0aCB0aGUgZGF5cyBpbiBhIG1vbnRoLCBzdGFydGluZyBmcm9tIDEuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSB3ZWVrIGRheXMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gIC8qKiBDcmVhdGVzIHRvZGF5J3MgZGF0ZS4gKi9cbiAgcHVibGljIGFic3RyYWN0IHRvZGF5KCk6IFQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gYGRhdGVgIGlzIHZhbGlkLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiBkYXRlIGlzIFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBjbG9uaW5nIHRoZSBnaXZlbiBvbmUuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2xvbmUoZGF0ZTogVCk6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSwgZ2l2ZW4gZGF5LCBtb250aCBhbmQgeWVhcjsgd2l0aG91dCBkYXRlJ3Mgb3ZlcmZsb3cuXG4gICAqIEBwYXJhbSB5ZWFyXG4gICAqIEBwYXJhbSBtb250aCBUaGUgbW9udGggb2YgdGhlIGRhdGUgKDEtaW5kZXhlZCwgMSA9IEphbnVhcnkpLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIDEyLlxuICAgKiBAcGFyYW0gZGF5XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gZGVzZXJpYWxpemUgYSB2YWx1ZSB0byBhIHZhbGlkIGRhdGUgb2JqZWN0LiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHBhcnNpbmcgaW4gdGhhdFxuICAgKiBkZXNlcmlhbGl6ZSBzaG91bGQgb25seSBhY2NlcHQgbm9uLWFtYmlndW91cywgbG9jYWxlLWluZGVwZW5kZW50IGZvcm1hdHMgKGUuZy4gYSBJU08gODYwMVxuICAgKiBzdHJpbmcpLiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhbGxvdyBhbnkgZGVzZXJpYWxpemF0aW9uLCBpdCBzaW1wbHkgY2hlY2tzIHRoYXRcbiAgICogdGhlIGdpdmVuIHZhbHVlIGlzIGFscmVhZHkgYSB2YWxpZCBkYXRlIG9iamVjdCBvciBudWxsLlxuICAgKiBAcGFyYW0gdmFsdWUgRWl0aGVyIGEgZGF0ZSBvYmplY3QsIElTTyBzdHJpbmcgb3IgYW4gZW1wdHkgdmFsdWUuXG4gICAqIEByZXR1cm5zIFRoZSBkYXRlIGlmIHRoZSBpbnB1dCBpcyB2YWxpZCwgYG51bGxgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBkZXNlcmlhbGl6ZSh2YWx1ZTogVCB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBUIHwgbnVsbCB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fFxuICAgICAgKHRoaXMuaXNEYXRlSW5zdGFuY2UodmFsdWUpICYmIHRoaXMuaXNWYWxpZCh2YWx1ZSBhcyBUIHwgbnVsbCB8IHVuZGVmaW5lZCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdmFsdWUgYXMgVCB8IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmludmFsaWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYHllYXJzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIHllYXJzIFRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogVCwgeWVhcnM6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgbW9udGhzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBJZiB0aGUgY2FsY3VsYXRlZCBtb250aCBoYXMgZmV3ZXIgZGF5cyB0aGFuIHRoZSBvcmlnaW5hbCBvbmUsIHRoZSBkYXRlIGlzIHNldCB0byB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuICAgKiBFLmcuIHdpdGggYGRhdGVgID0gbmV3IERhdGUoMjAyMiwgMCwgMzEpIGFuZCBgbW9udGhzYCA9IDEsIGl0IHJldHVybnMgbmV3IERhdGUoMjAyMiwgMSwgMjgpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIG1vbnRocyBUaGUgbnVtYmVyIG9mIG1vbnRocyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogVCwgbW9udGhzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYGRheXNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0gZGF5cyBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyRGF5cyhkYXRlOiBULCBkYXlzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRhdGUgaW4gdGhlIGxvY2FsIGZvcm1hdC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIFRoZSBgZGF0ZWAgaW4gdGhlIGxvY2FsIGZvcm1hdCBhcyBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0QWNjZXNzaWJpbGl0eUZvcm1hdERhdGUoZGF0ZTogVCB8IHN0cmluZyk6IHN0cmluZztcblxuICAvKipcbiAgICogR2V0IHRoZSBnaXZlbiBzdHJpbmcgYXMgRGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBkYXRlIGluIHRoZSBmb3JtYXQgREQuTU0uWVlZWS5cbiAgICovXG4gIHB1YmxpYyBwYXJzZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFQgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgZGF0ZTogVCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGlzb01hdGNoID0gdmFsdWUubWF0Y2goSVNPODYwMV9GT1JNQVRfREFURSk7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGUgPSBpc29NYXRjaCA/IHRoaXMuY3JlYXRlRGF0ZSgraXNvTWF0Y2hbMV0sICtpc29NYXRjaFsyXSwgK2lzb01hdGNoWzNdKSA6IG51bGw7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpcHBlZFZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxEL2csICcgJykudHJpbSgpO1xuXG4gICAgY29uc3QgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkID0gc3RyaXBwZWRWYWx1ZT8ubWF0Y2goRk9STUFUX0RBVEUpO1xuICAgIGlmIChcbiAgICAgICFtYXRjaCB8fFxuICAgICAgbWF0Y2guaW5kZXggIT09IDAgfHxcbiAgICAgIG1hdGNoLmxlbmd0aCA8PSAyIHx8XG4gICAgICBtYXRjaC5zb21lKChlKSA9PiBlID09PSB1bmRlZmluZWQpIHx8XG4gICAgICAhdGhpcy5pc1ZhbGlkKHRoaXMuY3JlYXRlRGF0ZSgrbWF0Y2hbM10sICttYXRjaFsyXSwgK21hdGNoWzFdKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB5ZWFyID0gK21hdGNoWzNdO1xuXG4gICAgaWYgKHR5cGVvZiB5ZWFyID09PSAnbnVtYmVyJyAmJiB5ZWFyIDwgMTAwICYmIHllYXIgPj0gMCkge1xuICAgICAgY29uc3Qgc2hpZnQgPSB0aGlzLmdldFllYXIodGhpcy50b2RheSgpKSAtIDIwMDAgKyB0aGlzLl9jdXRvZmZZZWFyT2Zmc2V0O1xuICAgICAgeWVhciA9IHllYXIgPD0gc2hpZnQgPyAyMDAwICsgeWVhciA6IDE5MDAgKyB5ZWFyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZURhdGUoeWVhciwgK21hdGNoWzJdLCArbWF0Y2hbMV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCB0aGUgZ2l2ZW4gZGF0ZSBhcyBzdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGZvcm1hdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9ucyBvYmplY3Qgd2l0aCB3ZWVrZGF5U3R5bGUgYXMgcHJvcGVydHlcbiAgICovXG4gIHB1YmxpYyBmb3JtYXQoXG4gICAgZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgb3B0aW9ucz86IHsgd2Vla2RheVN0eWxlPzogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnIHwgJ25vbmUnIH0sXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBEYXRlKHRoaXMudG9Jc284NjAxKGRhdGUhKSArICdUMDA6MDA6MDAnKTtcbiAgICBjb25zdCBkYXRlRm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2RlLUNIJywge1xuICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnM/LndlZWtkYXlTdHlsZSA9PT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHdlZWtkYXlTdHlsZSA9IG9wdGlvbnM/LndlZWtkYXlTdHlsZSA/PyAnc2hvcnQnO1xuICAgIGxldCB3ZWVrZGF5ID0gdGhpcy5nZXREYXlPZldlZWtOYW1lcyh3ZWVrZGF5U3R5bGUpW3RoaXMuZ2V0RGF5T2ZXZWVrKGRhdGUhKV07XG4gICAgd2Vla2RheSA9IHdlZWtkYXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3ZWVrZGF5LnN1YnN0cmluZygxKTtcbiAgICAvLyBXZSBoYXZlIHRoZSBzcGVjaWFsIHJlcXVpcmVtZW50IGZvciBkYXRlIGZvcm1hdHMgYXQgU0JCLCB3aGVyZSB0aGUgc2hvcnQgZm9ybVxuICAgIC8vIGZvciB3ZWVrZGF5cyBzaG91bGQgYmUgdHdvIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLlxuICAgIGlmICh3ZWVrZGF5U3R5bGUgPT09ICdzaG9ydCcpIHtcbiAgICAgIHdlZWtkYXkgPSB3ZWVrZGF5LnN1YnN0cmluZygwLCAyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7d2Vla2RheX0sICR7ZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUpfWA7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBvYmpgIGlzIGEgRGF0ZS5cbiAgICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2V0cyBkYXRlIGluc3RhbmNlIHRoYXQgaXMgbm90IHZhbGlkLlxuICAgKiBAcmV0dXJucyBBbiBpbnZhbGlkIGRhdGUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaW52YWxpZCgpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGdpdmVuIGRhdGUgYXMgSVNPIFN0cmluZy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY29udmVydCB0byBJU08gU3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHRvSXNvODYwMShkYXRlOiBUKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYWQgPSAodmFsdWU6IG51bWJlciwgbGVuZ3RoID0gMik6IHN0cmluZyA9PiBgJHt2YWx1ZX1gLnBhZFN0YXJ0KGxlbmd0aCwgJzAnKTtcbiAgICByZXR1cm4gYCR7cGFkKHRoaXMuZ2V0WWVhcihkYXRlKSwgNCl9LSR7cGFkKHRoaXMuZ2V0TW9udGgoZGF0ZSkpfS0ke3BhZCh0aGlzLmdldERhdGUoZGF0ZSkpfWA7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBwb3RlbnRpYWwgZGF0ZSBvYmplY3QsIHJldHVybnMgdGhhdCBzYW1lIGRhdGUgb2JqZWN0IGlmIGl0IGlzXG4gICAqIGEgdmFsaWQgZGF0ZSwgb3IgYG51bGxgIGlmIGl0J3Mgbm90IGEgdmFsaWQgZGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBvYmplY3QgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIEEgZGF0ZSBvciBgbnVsbGAuXG4gICAqL1xuICBwdWJsaWMgZ2V0VmFsaWREYXRlT3JOdWxsKHZhbHVlOiB1bmtub3duKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmlzRGF0ZUluc3RhbmNlKHZhbHVlKSAmJiB0aGlzLmlzVmFsaWQodmFsdWUgYXMgVCkgPyAodmFsdWUgYXMgVCkgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCwgYW5kIHRoZW4gaXRzIG9mZnNldCBmcm9tIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAqL1xuICBwdWJsaWMgZ2V0Rmlyc3RXZWVrT2Zmc2V0KGRhdGU6IFQpOiBudW1iZXIge1xuICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IHRoaXMuY3JlYXRlRGF0ZSh0aGlzLmdldFllYXIoZGF0ZSksIHRoaXMuZ2V0TW9udGgoZGF0ZSksIDEpITtcbiAgICByZXR1cm4gKDcgKyB0aGlzLmdldERheU9mV2VlayhmaXJzdE9mTW9udGgpIC0gdGhpcy5nZXRGaXJzdERheU9mV2VlaygpKSAlIDc7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIGRhdGVzLlxuICAgKiBAcGFyYW0gZmlyc3QgVGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHJldHVybnMgMCBpZiB0aGUgZGF0ZXMgYXJlIGVxdWFsLCBhIG51bWJlciBsZXNzIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBlYXJsaWVyLFxuICAgKiAgICAgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDAgaWYgdGhlIGZpcnN0IGRhdGUgaXMgbGF0ZXIuXG4gICAqL1xuICBwdWJsaWMgY29tcGFyZURhdGUoZmlyc3Q6IFQsIHNlY29uZDogVCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0WWVhcihmaXJzdCkgLSB0aGlzLmdldFllYXIoc2Vjb25kKSB8fFxuICAgICAgdGhpcy5nZXRNb250aChmaXJzdCkgLSB0aGlzLmdldE1vbnRoKHNlY29uZCkgfHxcbiAgICAgIHRoaXMuZ2V0RGF0ZShmaXJzdCkgLSB0aGlzLmdldERhdGUoc2Vjb25kKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqIEBwYXJhbSBmaXJzdCBUaGUgZmlyc3QgZGF0ZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqICAgICBOdWxsIGRhdGVzIGFyZSBjb25zaWRlcmVkIGVxdWFsIHRvIG90aGVyIG51bGwgZGF0ZXMuXG4gICAqL1xuICBwdWJsaWMgc2FtZURhdGUoZmlyc3Q6IFQgfCBudWxsLCBzZWNvbmQ6IFQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpcnN0ICYmIHNlY29uZCkge1xuICAgICAgY29uc3QgZmlyc3RWYWxpZCA9IHRoaXMuaXNWYWxpZChmaXJzdCk7XG4gICAgICBjb25zdCBzZWNvbmRWYWxpZCA9IHRoaXMuaXNWYWxpZChzZWNvbmQpO1xuICAgICAgaWYgKGZpcnN0VmFsaWQgJiYgc2Vjb25kVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbXBhcmVEYXRlKGZpcnN0LCBzZWNvbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpcnN0VmFsaWQgPT0gc2Vjb25kVmFsaWQ7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdCA9PSBzZWNvbmQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xhbXAgdGhlIGdpdmVuIGRhdGUgYmV0d2VlbiBtaW4gYW5kIG1heCBkYXRlcy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xhbXAuXG4gICAqIEBwYXJhbSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtaW4gaXMgZW5mb3JjZWQuXG4gICAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtYXggaXMgZW5mb3JjZWQuXG4gICAqIEByZXR1cm5zIGBtaW5gIGlmIGBkYXRlYCBpcyBsZXNzIHRoYW4gYG1pbmAsIGBtYXhgIGlmIGRhdGUgaXMgZ3JlYXRlciB0aGFuIGBtYXhgLFxuICAgKiAgICAgb3RoZXJ3aXNlIGBkYXRlYC5cbiAgICovXG4gIHB1YmxpYyBjbGFtcERhdGUoZGF0ZTogVCwgbWluPzogVCB8IG51bGwsIG1heD86IFQgfCBudWxsKTogVCB7XG4gICAgaWYgKG1pbiAmJiB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIG1pbikgPCAwKSB7XG4gICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBpZiAobWF4ICYmIHRoaXMuY29tcGFyZURhdGUoZGF0ZSwgbWF4KSA+IDApIHtcbiAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFhLGNBQ1g7QUFDRixJQUFhLHNCQUFzQjtBQUNuQyxJQUFhLFNBQVM7QUFDdEIsSUFBYSxVQUFVO0FBQ3ZCLElBQWEsWUFBWTtBQUN6QixJQUFhLFdBQVc7QUFDeEIsSUFBYSxTQUFTO0FBQ3RCLElBQWEsV0FBVztBQUN4QixJQUFhLFNBQVM7QUFHdEIsSUFBYSxlQUF1QjtBQUNwQyxJQUFhLGlCQUF5QjtBQUN0QyxJQUFhLGdCQUF3QjtBQUNyQyxJQUFhLGtCQUEwQjtBQUN2QyxJQUFhLGlCQUF5Qjs7Ozs7O0FBT3RDLElBQXNCLGNBQXRCLE1BQWlDOzs7Ozs7O0NBUy9CLFlBQW1CLG1CQUEyQixJQUFFO0FBQzlDLE9BQUssb0JBQW9COzs7Ozs7Ozs7O0NBbUZwQixZQUFZLE9BQW9DO0FBQ3JELE1BQ0UsU0FBUyxRQUNSLEtBQUssZUFBZSxNQUFNLElBQUksS0FBSyxRQUFRLE1BQThCLENBRTFFLFFBQU87QUFFVCxTQUFPLEtBQUssU0FBUzs7Ozs7O0NBcUNoQixNQUFNLE9BQWdDO0FBQzNDLE1BQUksQ0FBQyxNQUNILFFBQU87RUFHVCxJQUFJLE9BQWlCO0VBQ3JCLE1BQU0sV0FBVyxNQUFNLE1BQU0sb0JBQW9CO0FBQ2pELE1BQUk7QUFDRixVQUFPLFdBQVcsS0FBSyxXQUFXLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUc7VUFDeEU7QUFHUixNQUFJLEtBQUssUUFBUSxLQUFLLENBQ3BCLFFBQU87RUFLVCxNQUFNLFFBRmdCLE1BQU0sUUFBUSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBRVksTUFBTSxZQUFZO0FBQ3BGLE1BQ0UsQ0FBQyxTQUNE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
151
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1hZGFwdGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRk9STUFUX0RBVEUgPVxuICAvKDA/WzEtOV18WzEyXVswLTldfDNbMDFdKVsuLFxcXFwvXFwtXFxzXSgwP1sxLTldfDFbMC0yXSlbLixcXFxcL1xcLVxcc10oWzAtOV17MSw0fSQpPy87XG5leHBvcnQgY29uc3QgSVNPODYwMV9GT1JNQVRfREFURSA9IC9eKFswLTldezR9KS0oMFsxLTldfDFbMC0yXSktKDBbMS05XXxbMS0zXVswLTldKSQvO1xuZXhwb3J0IGNvbnN0IE1PTkRBWSA9IDE7XG5leHBvcnQgY29uc3QgVFVFU0RBWSA9IDI7XG5leHBvcnQgY29uc3QgV0VETkVTREFZID0gMztcbmV4cG9ydCBjb25zdCBUSFVSU0RBWSA9IDQ7XG5leHBvcnQgY29uc3QgRlJJREFZID0gNTtcbmV4cG9ydCBjb25zdCBTQVRVUkRBWSA9IDY7XG5leHBvcnQgY29uc3QgU1VOREFZID0gMDtcblxuLy8gVE9ETyhicmVha2luZy1jaGFuZ2UpOiBNb3ZlIHRoZXNlIHZhcmlhYmxlcyB0byBjYWxlbmRhclxuZXhwb3J0IGNvbnN0IERBWVNfUEVSX1JPVzogbnVtYmVyID0gNztcbmV4cG9ydCBjb25zdCBNT05USFNfUEVSX1JPVzogbnVtYmVyID0gNDtcbmV4cG9ydCBjb25zdCBZRUFSU19QRVJfUk9XOiBudW1iZXIgPSA0O1xuZXhwb3J0IGNvbnN0IE1PTlRIU19QRVJfUEFHRTogbnVtYmVyID0gMTI7XG5leHBvcnQgY29uc3QgWUVBUlNfUEVSX1BBR0U6IG51bWJlciA9IDI0O1xuXG4vKipcbiAqIEFic3RyYWN0IGRhdGUgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL21hdGVyaWFsL2NvcmUvZGF0ZXRpbWUvZGF0ZS1hZGFwdGVyLnRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRlQWRhcHRlcjxUID0gYW55PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1dG9mZlllYXJPZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIGN1dG9mZlllYXJPZmZzZXQgVGhlIHRocmVzaG9sZCBvbiB3aGV0aGVyIGEgdHdvLWRpZ2l0IHllYXJcbiAgICogc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYmVsb25naW5nIHRvIDIwMDAgb3IgMTkwMC4gZS5nLiB3aXRoIDE1IChkZWZhdWx0KVxuICAgKiB0aGUgY3VycmVudCB5ZWFyIHBsdXMgMTUgd2lsbCBiZSB0cmVhdGVkIGFzIGJlbG9uZ2luZyB0byAyMDAwLCBhbmQgdGhlIHJlc3QgdG8gMTkwMC5cbiAgICogU28gZS5nLiB3aXRoIHRoZSBjdXJyZW50IHllYXIgMjAyNSwgNDAgd2lsbCBiZSB0cmVhdGVkIGFzIDIwNDAsIHdoaWxlIDQxIHdpbGwgYmUgdHJlYXRlZCBhcyAxOTQxLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGN1dG9mZlllYXJPZmZzZXQ6IG51bWJlciA9IDE1KSB7XG4gICAgdGhpcy5fY3V0b2ZmWWVhck9mZnNldCA9IGN1dG9mZlllYXJPZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB5ZWFyIGFzIGEgbnVtYmVyLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldFllYXIoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aCBhcyBhIG51bWJlci5cbiAgICogQXR0ZW50aW9uOiBUaGlzIHJldHVybnMgMS0xMiBhbmQgbWl0aWdhdGVzIHRoZSBkZWZhdWx0IEphdmFTY3JpcHQgRGF0ZSBiZWhhdmlvci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRNb250aChkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgbW9udGggYXMgYSBudW1iZXIuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF0ZShkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIERheSBvZiB0aGUgd2VlayBhcyBhIG51bWJlci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXlPZldlZWsoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKiogR2V0IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDA6IHN1bmRheTsgMTogbW9uZGF5OyBldGMuKS4gKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE51bURheXNJbk1vbnRoKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSBtb250aHMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgLyoqIEdldCBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDMxLCBmaWxsZWQgd2l0aCB0aGUgZGF5cyBpbiBhIG1vbnRoLCBzdGFydGluZyBmcm9tIDEuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSB3ZWVrIGRheXMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gIC8qKiBDcmVhdGVzIHRvZGF5J3MgZGF0ZS4gKi9cbiAgcHVibGljIGFic3RyYWN0IHRvZGF5KCk6IFQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gYGRhdGVgIGlzIHZhbGlkLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiBkYXRlIGlzIFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBjbG9uaW5nIHRoZSBnaXZlbiBvbmUuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2xvbmUoZGF0ZTogVCk6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSwgZ2l2ZW4gZGF5LCBtb250aCBhbmQgeWVhcjsgd2l0aG91dCBkYXRlJ3Mgb3ZlcmZsb3cuXG4gICAqIEBwYXJhbSB5ZWFyXG4gICAqIEBwYXJhbSBtb250aCBUaGUgbW9udGggb2YgdGhlIGRhdGUgKDEtaW5kZXhlZCwgMSA9IEphbnVhcnkpLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIDEyLlxuICAgKiBAcGFyYW0gZGF5XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gZGVzZXJpYWxpemUgYSB2YWx1ZSB0byBhIHZhbGlkIGRhdGUgb2JqZWN0LiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHBhcnNpbmcgaW4gdGhhdFxuICAgKiBkZXNlcmlhbGl6ZSBzaG91bGQgb25seSBhY2NlcHQgbm9uLWFtYmlndW91cywgbG9jYWxlLWluZGVwZW5kZW50IGZvcm1hdHMgKGUuZy4gYSBJU08gODYwMVxuICAgKiBzdHJpbmcpLiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhbGxvdyBhbnkgZGVzZXJpYWxpemF0aW9uLCBpdCBzaW1wbHkgY2hlY2tzIHRoYXRcbiAgICogdGhlIGdpdmVuIHZhbHVlIGlzIGFscmVhZHkgYSB2YWxpZCBkYXRlIG9iamVjdCBvciBudWxsLlxuICAgKiBAcGFyYW0gdmFsdWUgRWl0aGVyIGEgZGF0ZSBvYmplY3QsIElTTyBzdHJpbmcgb3IgYW4gZW1wdHkgdmFsdWUuXG4gICAqIEByZXR1cm5zIFRoZSBkYXRlIGlmIHRoZSBpbnB1dCBpcyB2YWxpZCwgYG51bGxgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBkZXNlcmlhbGl6ZSh2YWx1ZTogVCB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBUIHwgbnVsbCB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fFxuICAgICAgKHRoaXMuaXNEYXRlSW5zdGFuY2UodmFsdWUpICYmIHRoaXMuaXNWYWxpZCh2YWx1ZSBhcyBUIHwgbnVsbCB8IHVuZGVmaW5lZCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdmFsdWUgYXMgVCB8IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmludmFsaWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYHllYXJzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIHllYXJzIFRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogVCwgeWVhcnM6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgbW9udGhzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBJZiB0aGUgY2FsY3VsYXRlZCBtb250aCBoYXMgZmV3ZXIgZGF5cyB0aGFuIHRoZSBvcmlnaW5hbCBvbmUsIHRoZSBkYXRlIGlzIHNldCB0byB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuICAgKiBFLmcuIHdpdGggYGRhdGVgID0gbmV3IERhdGUoMjAyMiwgMCwgMzEpIGFuZCBgbW9udGhzYCA9IDEsIGl0IHJldHVybnMgbmV3IERhdGUoMjAyMiwgMSwgMjgpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIG1vbnRocyBUaGUgbnVtYmVyIG9mIG1vbnRocyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogVCwgbW9udGhzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYGRheXNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0gZGF5cyBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyRGF5cyhkYXRlOiBULCBkYXlzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRhdGUgaW4gdGhlIGxvY2FsIGZvcm1hdC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIFRoZSBgZGF0ZWAgaW4gdGhlIGxvY2FsIGZvcm1hdCBhcyBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0QWNjZXNzaWJpbGl0eUZvcm1hdERhdGUoZGF0ZTogVCB8IHN0cmluZyk6IHN0cmluZztcblxuICAvKipcbiAgICogR2V0IHRoZSBnaXZlbiBzdHJpbmcgYXMgRGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBkYXRlIGluIHRoZSBmb3JtYXQgREQuTU0uWVlZWS5cbiAgICovXG4gIHB1YmxpYyBwYXJzZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFQgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgZGF0ZTogVCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGlzb01hdGNoID0gdmFsdWUubWF0Y2goSVNPODYwMV9GT1JNQVRfREFURSk7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGUgPSBpc29NYXRjaCA/IHRoaXMuY3JlYXRlRGF0ZSgraXNvTWF0Y2hbMV0sICtpc29NYXRjaFsyXSwgK2lzb01hdGNoWzNdKSA6IG51bGw7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpcHBlZFZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxEL2csICcgJykudHJpbSgpO1xuXG4gICAgY29uc3QgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkID0gc3RyaXBwZWRWYWx1ZT8ubWF0Y2goRk9STUFUX0RBVEUpO1xuICAgIGlmIChcbiAgICAgICFtYXRjaCB8fFxuICAgICAgbWF0Y2guaW5kZXggIT09IDAgfHxcbiAgICAgIG1hdGNoLmxlbmd0aCA8PSAyIHx8XG4gICAgICBtYXRjaC5zb21lKChlKSA9PiBlID09PSB1bmRlZmluZWQpIHx8XG4gICAgICAhdGhpcy5pc1ZhbGlkKHRoaXMuY3JlYXRlRGF0ZSgrbWF0Y2hbM10sICttYXRjaFsyXSwgK21hdGNoWzFdKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB5ZWFyID0gK21hdGNoWzNdO1xuXG4gICAgaWYgKHR5cGVvZiB5ZWFyID09PSAnbnVtYmVyJyAmJiB5ZWFyIDwgMTAwICYmIHllYXIgPj0gMCkge1xuICAgICAgY29uc3Qgc2hpZnQgPSB0aGlzLmdldFllYXIodGhpcy50b2RheSgpKSAtIDIwMDAgKyB0aGlzLl9jdXRvZmZZZWFyT2Zmc2V0O1xuICAgICAgeWVhciA9IHllYXIgPD0gc2hpZnQgPyAyMDAwICsgeWVhciA6IDE5MDAgKyB5ZWFyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZURhdGUoeWVhciwgK21hdGNoWzJdLCArbWF0Y2hbMV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCB0aGUgZ2l2ZW4gZGF0ZSBhcyBzdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGZvcm1hdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9ucyBvYmplY3Qgd2l0aCB3ZWVrZGF5U3R5bGUgYXMgcHJvcGVydHlcbiAgICovXG4gIHB1YmxpYyBmb3JtYXQoXG4gICAgZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgb3B0aW9ucz86IHsgd2Vla2RheVN0eWxlPzogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnIHwgJ25vbmUnIH0sXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBEYXRlKHRoaXMudG9Jc284NjAxKGRhdGUhKSArICdUMDA6MDA6MDAnKTtcbiAgICBjb25zdCBkYXRlRm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2RlLUNIJywge1xuICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnM/LndlZWtkYXlTdHlsZSA9PT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHdlZWtkYXlTdHlsZSA9IG9wdGlvbnM/LndlZWtkYXlTdHlsZSA/PyAnc2hvcnQnO1xuICAgIGxldCB3ZWVrZGF5ID0gdGhpcy5nZXREYXlPZldlZWtOYW1lcyh3ZWVrZGF5U3R5bGUpW3RoaXMuZ2V0RGF5T2ZXZWVrKGRhdGUhKV07XG4gICAgd2Vla2RheSA9IHdlZWtkYXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3ZWVrZGF5LnN1YnN0cmluZygxKTtcbiAgICAvLyBXZSBoYXZlIHRoZSBzcGVjaWFsIHJlcXVpcmVtZW50IGZvciBkYXRlIGZvcm1hdHMgYXQgU0JCLCB3aGVyZSB0aGUgc2hvcnQgZm9ybVxuICAgIC8vIGZvciB3ZWVrZGF5cyBzaG91bGQgYmUgdHdvIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLlxuICAgIGlmICh3ZWVrZGF5U3R5bGUgPT09ICdzaG9ydCcpIHtcbiAgICAgIHdlZWtkYXkgPSB3ZWVrZGF5LnN1YnN0cmluZygwLCAyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7d2Vla2RheX0sICR7ZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUpfWA7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBvYmpgIGlzIGEgRGF0ZS5cbiAgICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2V0cyBkYXRlIGluc3RhbmNlIHRoYXQgaXMgbm90IHZhbGlkLlxuICAgKiBAcmV0dXJucyBBbiBpbnZhbGlkIGRhdGUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaW52YWxpZCgpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGdpdmVuIGRhdGUgYXMgSVNPIFN0cmluZy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY29udmVydCB0byBJU08gU3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHRvSXNvODYwMShkYXRlOiBUKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYWQgPSAodmFsdWU6IG51bWJlciwgbGVuZ3RoID0gMik6IHN0cmluZyA9PiBgJHt2YWx1ZX1gLnBhZFN0YXJ0KGxlbmd0aCwgJzAnKTtcbiAgICByZXR1cm4gYCR7cGFkKHRoaXMuZ2V0WWVhcihkYXRlKSwgNCl9LSR7cGFkKHRoaXMuZ2V0TW9udGgoZGF0ZSkpfS0ke3BhZCh0aGlzLmdldERhdGUoZGF0ZSkpfWA7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBwb3RlbnRpYWwgZGF0ZSBvYmplY3QsIHJldHVybnMgdGhhdCBzYW1lIGRhdGUgb2JqZWN0IGlmIGl0IGlzXG4gICAqIGEgdmFsaWQgZGF0ZSwgb3IgYG51bGxgIGlmIGl0J3Mgbm90IGEgdmFsaWQgZGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBvYmplY3QgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIEEgZGF0ZSBvciBgbnVsbGAuXG4gICAqL1xuICBwdWJsaWMgZ2V0VmFsaWREYXRlT3JOdWxsKHZhbHVlOiB1bmtub3duKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmlzRGF0ZUluc3RhbmNlKHZhbHVlKSAmJiB0aGlzLmlzVmFsaWQodmFsdWUgYXMgVCkgPyAodmFsdWUgYXMgVCkgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCwgYW5kIHRoZW4gaXRzIG9mZnNldCBmcm9tIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAqL1xuICBwdWJsaWMgZ2V0Rmlyc3RXZWVrT2Zmc2V0KGRhdGU6IFQpOiBudW1iZXIge1xuICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IHRoaXMuY3JlYXRlRGF0ZSh0aGlzLmdldFllYXIoZGF0ZSksIHRoaXMuZ2V0TW9udGgoZGF0ZSksIDEpITtcbiAgICByZXR1cm4gKDcgKyB0aGlzLmdldERheU9mV2VlayhmaXJzdE9mTW9udGgpIC0gdGhpcy5nZXRGaXJzdERheU9mV2VlaygpKSAlIDc7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIGRhdGVzLlxuICAgKiBAcGFyYW0gZmlyc3QgVGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHJldHVybnMgMCBpZiB0aGUgZGF0ZXMgYXJlIGVxdWFsLCBhIG51bWJlciBsZXNzIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBlYXJsaWVyLFxuICAgKiAgICAgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDAgaWYgdGhlIGZpcnN0IGRhdGUgaXMgbGF0ZXIuXG4gICAqL1xuICBwdWJsaWMgY29tcGFyZURhdGUoZmlyc3Q6IFQsIHNlY29uZDogVCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0WWVhcihmaXJzdCkgLSB0aGlzLmdldFllYXIoc2Vjb25kKSB8fFxuICAgICAgdGhpcy5nZXRNb250aChmaXJzdCkgLSB0aGlzLmdldE1vbnRoKHNlY29uZCkgfHxcbiAgICAgIHRoaXMuZ2V0RGF0ZShmaXJzdCkgLSB0aGlzLmdldERhdGUoc2Vjb25kKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqIEBwYXJhbSBmaXJzdCBUaGUgZmlyc3QgZGF0ZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqICAgICBOdWxsIGRhdGVzIGFyZSBjb25zaWRlcmVkIGVxdWFsIHRvIG90aGVyIG51bGwgZGF0ZXMuXG4gICAqL1xuICBwdWJsaWMgc2FtZURhdGUoZmlyc3Q6IFQgfCBudWxsLCBzZWNvbmQ6IFQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpcnN0ICYmIHNlY29uZCkge1xuICAgICAgY29uc3QgZmlyc3RWYWxpZCA9IHRoaXMuaXNWYWxpZChmaXJzdCk7XG4gICAgICBjb25zdCBzZWNvbmRWYWxpZCA9IHRoaXMuaXNWYWxpZChzZWNvbmQpO1xuICAgICAgaWYgKGZpcnN0VmFsaWQgJiYgc2Vjb25kVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbXBhcmVEYXRlKGZpcnN0LCBzZWNvbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpcnN0VmFsaWQgPT0gc2Vjb25kVmFsaWQ7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdCA9PSBzZWNvbmQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xhbXAgdGhlIGdpdmVuIGRhdGUgYmV0d2VlbiBtaW4gYW5kIG1heCBkYXRlcy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xhbXAuXG4gICAqIEBwYXJhbSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtaW4gaXMgZW5mb3JjZWQuXG4gICAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtYXggaXMgZW5mb3JjZWQuXG4gICAqIEByZXR1cm5zIGBtaW5gIGlmIGBkYXRlYCBpcyBsZXNzIHRoYW4gYG1pbmAsIGBtYXhgIGlmIGRhdGUgaXMgZ3JlYXRlciB0aGFuIGBtYXhgLFxuICAgKiAgICAgb3RoZXJ3aXNlIGBkYXRlYC5cbiAgICovXG4gIHB1YmxpYyBjbGFtcERhdGUoZGF0ZTogVCwgbWluPzogVCB8IG51bGwsIG1heD86IFQgfCBudWxsKTogVCB7XG4gICAgaWYgKG1pbiAmJiB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIG1pbikgPCAwKSB7XG4gICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBpZiAobWF4ICYmIHRoaXMuY29tcGFyZURhdGUoZGF0ZSwgbWF4KSA+IDApIHtcbiAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFhLGNBQ1g7QUFDRixJQUFhLHNCQUFzQjtBQUNuQyxJQUFhLFNBQVM7QUFDdEIsSUFBYSxVQUFVO0FBQ3ZCLElBQWEsWUFBWTtBQUN6QixJQUFhLFdBQVc7QUFDeEIsSUFBYSxTQUFTO0FBQ3RCLElBQWEsV0FBVztBQUN4QixJQUFhLFNBQVM7QUFHdEIsSUFBYSxlQUF1QjtBQUNwQyxJQUFhLGlCQUF5QjtBQUN0QyxJQUFhLGdCQUF3QjtBQUNyQyxJQUFhLGtCQUEwQjtBQUN2QyxJQUFhLGlCQUF5Qjs7Ozs7O0FBT3RDLElBQXNCLGNBQXRCLE1BQWlDOzs7Ozs7O0NBUy9CLFlBQW1CLG1CQUEyQixJQUFFO0FBQzlDLE9BQUssb0JBQW9COzs7Ozs7Ozs7O0NBbUZwQixZQUFZLE9BQW9DO0FBQ3JELE1BQ0UsU0FBUyxRQUNSLEtBQUssZUFBZSxNQUFNLElBQUksS0FBSyxRQUFRLE1BQThCLENBRTFFLFFBQU87QUFFVCxTQUFPLEtBQUssU0FBUzs7Ozs7O0NBcUNoQixNQUFNLE9BQWdDO0FBQzNDLE1BQUksQ0FBQyxNQUNILFFBQU87RUFHVCxJQUFJLE9BQWlCO0VBQ3JCLE1BQU0sV0FBVyxNQUFNLE1BQU0sb0JBQW9CO0FBQ2pELE1BQUk7QUFDRixVQUFPLFdBQVcsS0FBSyxXQUFXLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUc7VUFDeEU7QUFHUixNQUFJLEtBQUssUUFBUSxLQUFLLENBQ3BCLFFBQU87RUFLVCxNQUFNLFFBRmdCLE1BQU0sUUFBUSxPQUFPLElBQUksQ0FBQyxNQUVHLEVBQWUsTUFBTSxZQUFZO0FBQ3BGLE1BQ0UsQ0FBQyxTQUNE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
@@ -141,4 +141,4 @@ var defaultDateAdapter = new NativeDateAdapter();
141
141
  //#endregion
142
142
  export { NativeDateAdapter, defaultDateAdapter };
143
143
 
144
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWRhdGUtYWRhcHRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kYXRldGltZS9uYXRpdmUtZGF0ZS1hZGFwdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uL2NvbnRyb2xsZXJzLnRzJztcblxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGUtYWRhcHRlci50cyc7XG5cbi8qKlxuICogTWF0Y2hlcyBzdHJpbmdzIHRoYXQgaGF2ZSB0aGUgZm9ybSBvZiBhIHZhbGlkIFJGQyAzMzM5IHN0cmluZ1xuICogKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5KS4gTm90ZSB0aGF0IHRoZSBzdHJpbmcgbWF5IG5vdCBhY3R1YWxseSBiZSBhIHZhbGlkIGRhdGVcbiAqIGJlY2F1c2UgdGhlIHJlZ2V4IHdpbGwgbWF0Y2ggc3RyaW5ncyBhbmQgd2l0aG91dCBvZiBib3VuZHMgbW9udGgsIGRhdGUsIGV0Yy5cbiAqL1xuY29uc3QgSVNPXzg2MDFfUkVHRVggPVxuICAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9KD86VFxcZHsyfTpcXGR7Mn06XFxkezJ9KD86XFwuXFxkKyk/KD86WnwoPzooPzpcXCt8LSlcXGR7Mn06XFxkezJ9KSk/KT8kLztcblxuZXhwb3J0IGNsYXNzIE5hdGl2ZURhdGVBZGFwdGVyIGV4dGVuZHMgRGF0ZUFkYXB0ZXI8RGF0ZT4ge1xuICAvKiogR2V0cyB0aGUgeWVhciBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldFllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBtb250aCBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldE1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRheSBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldERhdGUoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RGF0ZSgpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldERheU9mV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXREYXkoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBkYXRlIGluIHRoZSBsb2NhbCBmb3JtYXQuICovXG4gIHB1YmxpYyBnZXRBY2Nlc3NpYmlsaXR5Rm9ybWF0RGF0ZShkYXRlOiBEYXRlIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBvcHRpb25zOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICBkYXk6ICdudW1lcmljJyxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgb3B0aW9ucykuZm9ybWF0KG5ldyBEYXRlKGRhdGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHN0cmluZ3Mgd2l0aCBsZW5ndGggPSAxMiwgZmlsbGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIG1vbnRocyBzdGFydGluZyBmcm9tIEphbnVhcnksIGluIHRoZSBkb2N1bWVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIHN0eWxlIFNlZSBgbW9udGhgIGluIGBEYXRlVGltZUZvcm1hdE9wdGlvbnNgOiBgbG9uZ2AgZm9yIGZ1bGwgbmFtZSwgYHNob3J0YCBmb3Igc2hvcnQgbmFtZSwgYG5hcnJvd2AgZm9yIHNpbmdsZSBsZXR0ZXIsXG4gICAqIEUuZy4sIHdpdGggSmFudWFyeSBpbiBlbi1nYjogYGxvbmdgIHJldHVybnMgXCJKYW51YXJ5XCIsIGBzaG9ydGAgcmV0dXJucyBcIkphblwiLCBgbmFycm93YCByZXR1cm5zIFwiSlwiLlxuICAgKi9cbiAgcHVibGljIGdldE1vbnRoTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyBtb250aDogc3R5bGUgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlKDEyLCAoaSkgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCBpLCAxKSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSAzMSwgZmlsbGVkIHdpdGggdGhlIGRheXMgaW4gYSBtb250aCwgc3RhcnRpbmcgZnJvbSAxLiAqL1xuICBwdWJsaWMgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyBkYXk6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UoMzEsIChpKSA9PiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDAsIGkgKyAxKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSA3LCBmaWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZGF5cyBpbiBhIHdlZWsgc3RhcnRpbmcgZnJvbSBTdW5kYXksIGluIHRoZSBkb2N1bWVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIHN0eWxlIFNlZSBgd2Vla2RheWAgaW4gYERhdGVUaW1lRm9ybWF0T3B0aW9uc2AgLSAnbG9uZycgZm9yIGZ1bGwgbmFtZSwgJ3Nob3J0JyBmb3Igc2hvcnQgbmFtZSwgJ25hcnJvdycgZm9yIHNpbmdsZSBsZXR0ZXI7XG4gICAqIEUuZy4sIHdpdGggTW9uZGF5IGluIGVuLWdiOiBgbG9uZ2AgcmV0dXJucyBcIk1vbmRheVwiLCBgc2hvcnRgIHJldHVybnMgXCJNb25cIiwgYG5hcnJvd2AgcmV0dXJucyBcIk1cIi5cbiAgICovXG4gIHB1YmxpYyBnZXREYXlPZldlZWtOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IHdlZWtkYXk6IHN0eWxlIH0pO1xuICAgIHJldHVybiB0aGlzLl9yYW5nZSg3LCAoaSkgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCAwLCBpICsgMSkpKTtcbiAgfVxuXG4gIC8qKiBEZWZpbmVzIHdoaWNoIGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDA6IHN1bmRheTsgMTogbW9uZGF5OyBldGMuKS4gKi9cbiAgcHVibGljIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvKiogQ2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aCBnaXZlbiB0aGUgeWVhciBhbmQgdGhlIG1vbnRoLiAqL1xuICBwdWJsaWMgZ2V0TnVtRGF5c0luTW9udGgoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZSh0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHRoaXMuZ2V0WWVhcihkYXRlKSwgdGhpcy5nZXRNb250aChkYXRlKSwgMCkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgdG9kYXkncyBkYXRlLiAqL1xuICBwdWJsaWMgdG9kYXkoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBuZXcgZGF0ZSwgZ2l2ZW4gZGF5LCBtb250aCBhbmQgeWVhcjsgdGhlIG1ldGhvZCBkb2Vzbid0IGFsbG93IGRhdGUncyBvdmVyZmxvdy4gKi9cbiAgcHVibGljIGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlcik6IERhdGUge1xuICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIG1vbnRoIGFuZCBkYXRlIChleGNlcHQgdXBwZXIgYm91bmQgb24gZGF0ZSB3aGljaCB3ZSBoYXZlIHRvIGNoZWNrIGFmdGVyIGNyZWF0aW5nIHRoZSBEYXRlKS5cbiAgICBpZiAobW9udGggPCAxIHx8IG1vbnRoID4gMTIpIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIG1vbnRoIFwiJHttb250aH1cIi4gTW9udGggaGFzIHRvIGJlIGJldHdlZW4gMSBhbmQgMTIuYCk7XG4gICAgfSBlbHNlIGlmIChkYXkgPCAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXkgXCIke2RheX1cIi4gRGF5IGhhcyB0byBiZSBncmVhdGVyIHRoYW4gMC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcbiAgICAvLyBDaGVjayB0aGF0IHRoZSBkYXRlIHdhc24ndCBhYm92ZSB0aGUgdXBwZXIgYm91bmQgZm9yIHRoZSBtb250aCwgY2F1c2luZyB0aGUgbW9udGggdG8gb3ZlcmZsb3dcbiAgICBpZiAocmVzdWx0LmdldE1vbnRoKCkgKyAxICE9PSBtb250aCkge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgZGF5IFwiJHtkYXl9XCIgZm9yIG1vbnRoIFwiJHttb250aH1cIi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBgb2JqYCBpcyBhIERhdGUuICovXG4gIHB1YmxpYyBpc0RhdGVJbnN0YW5jZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEYXRlO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBgZGF0ZWAgaXMgYSB2YWxpZCBEYXRlLiAqL1xuICBwdWJsaWMgaXNWYWxpZChkYXRlOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGRhdGUgaXMgRGF0ZSB7XG4gICAgcmV0dXJuICEhZGF0ZSAmJiAhaXNOYU4oZGF0ZS52YWx1ZU9mKCkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBjbG9uaW5nIHRoZSBnaXZlbiBvbmUuICovXG4gIHB1YmxpYyBjbG9uZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYHllYXJzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIHllYXJzIFRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogRGF0ZSwgeWVhcnM6IG51bWJlcik6IERhdGUge1xuICAgIHJldHVybiB0aGlzLmFkZENhbGVuZGFyTW9udGhzKGRhdGUsIHllYXJzICogMTIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgbW9udGhzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBJZiB0aGUgY2FsY3VsYXRlZCBtb250aCBoYXMgZmV3ZXIgZGF5cyB0aGFuIHRoZSBvcmlnaW5hbCBvbmUsIHRoZSBkYXRlIGlzIHNldCB0byB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuICAgKiBFLmcuLCB3aXRoIGBkYXRlYCA9IG5ldyBEYXRlKDIwMjIsIDAsIDMxKSBhbmQgYG1vbnRoc2AgPSAxLCBpdCByZXR1cm5zIG5ldyBEYXRlKDIwMjIsIDEsIDI4KS5cbiAgICovXG4gIHB1YmxpYyBhZGRDYWxlbmRhck1vbnRocyhkYXRlOiBEYXRlLCBtb250aHM6IG51bWJlcik6IERhdGUge1xuICAgIGNvbnN0IHRhcmdldE1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgbW9udGhzO1xuICAgIGNvbnN0IGRhdGVXaXRoQ29ycmVjdE1vbnRoID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCB0YXJnZXRNb250aCwgMSwgMCwgMCwgMCwgMCk7XG4gICAgY29uc3QgZGF5c0luTW9udGggPSB0aGlzLmdldE51bURheXNJbk1vbnRoKGRhdGVXaXRoQ29ycmVjdE1vbnRoKTtcbiAgICAvLyBBZGFwdCB0aGUgbGFzdCBkYXkgb2YgbW9udGggZm9yIHNob3J0ZXIgbW9udGhzXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY2xvbmUoZGF0ZSkuc2V0TW9udGgodGFyZ2V0TW9udGgsIE1hdGgubWluKGRheXNJbk1vbnRoLCBkYXRlLmdldERhdGUoKSkpKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYGRheXNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuICovXG4gIHB1YmxpYyBhZGRDYWxlbmRhckRheXMoZGF0ZTogRGF0ZSwgZGF5czogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgdGFyZ2V0RGF5ID0gZGF0ZS5nZXREYXRlKCkgKyBkYXlzO1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgdGFyZ2V0RGF5LCAwLCAwLCAwLCAwKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgRGF0ZSBmcm9tIGEgdmFsaWQgaW5wdXQgKERhdGUgb3IgSVNPIHN0cmluZykuICovXG4gIHB1YmxpYyBvdmVycmlkZSBkZXNlcmlhbGl6ZShkYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2UgaWYgKElTT184NjAxX1JFR0VYLnRlc3QoZGF0ZSkpIHtcbiAgICAgICAgLy8gVGhlIGBEYXRlYCBjb25zdHJ1Y3RvciBhY2NlcHRzIGZvcm1hdHMgb3RoZXIgdGhhbiBJU08gODYwMSwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlXG4gICAgICAgIC8vIHN0cmluZyBpcyB0aGUgcmlnaHQgZm9ybWF0IGZpcnN0LlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWxpZERhdGVPck51bGwobmV3IERhdGUoZGF0ZS5pbmNsdWRlcygnVCcpID8gZGF0ZSA6IGRhdGUgKyAnVDAwOjAwOjAwJykpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuZGVzZXJpYWxpemUoZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgaW52YWxpZCgpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFycmF5IHdpdGggdGhlIGdpdmVuIGxlbmd0aCBhbmQgZmlsbHMgaXQgYnkgbWFwcGluZyB3aXRoIHRoZSBwcm92aWRlZCBmdW5jdGlvbi5cbiAgICogQHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB0byBiZSBjcmVhdGVkLlxuICAgKiBAcGFyYW0gdmFsdWVGdW5jdGlvbiBUaGUgZnVuY3Rpb24gb2YgYXJyYXkncyBpbmRleCB1c2VkIHRvIGZpbGwgdGhlIGFycmF5LlxuICAgKi9cbiAgcHJpdmF0ZSBfcmFuZ2U8VD4obGVuZ3RoOiBudW1iZXIsIHZhbHVlRnVuY3Rpb246IChpbmRleDogbnVtYmVyKSA9PiBUKTogVFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aCB9KS5tYXAoKF8sIGkpID0+IHZhbHVlRnVuY3Rpb24oaSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBkYXRlIGJ1dCBhbGxvd3MgdGhlIG1vbnRoIGFuZCBkYXRlIHRvIG92ZXJmbG93LiAqL1xuICBwcml2YXRlIF9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF0ZTogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRhdGUpO1xuICAgIC8vIFdlIG5lZWQgdG8gY29ycmVjdCBmb3IgdGhlIGZhY3QgdGhhdCBKUyBuYXRpdmUgRGF0ZSB0cmVhdHMgeWVhcnMgaW4gcmFuZ2UgWzAsIDk5XSBhc1xuICAgIC8vIGFiYnJldmlhdGlvbnMgZm9yIDE5eHguXG4gICAgaWYgKHllYXIgPj0gMCAmJiB5ZWFyIDwgMTAwKSB7XG4gICAgICByZXN1bHQuc2V0RnVsbFllYXIodGhpcy5nZXRZZWFyKHJlc3VsdCkgLSAxOTAwKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdERhdGVBZGFwdGVyID0gbmV3IE5hdGl2ZURhdGVBZGFwdGVyKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBU0EsSUFBTSxpQkFDSjtBQUVGLElBQWEsb0JBQWIsY0FBdUMsWUFBaUI7O0NBRS9DLFFBQVEsTUFBVTtBQUN2QixTQUFPLEtBQUssYUFBYTs7O0NBSXBCLFNBQVMsTUFBVTtBQUN4QixTQUFPLEtBQUssVUFBVSxHQUFHOzs7Q0FJcEIsUUFBUSxNQUFVO0FBQ3ZCLFNBQU8sS0FBSyxTQUFT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
144
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWRhdGUtYWRhcHRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kYXRldGltZS9uYXRpdmUtZGF0ZS1hZGFwdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uL2NvbnRyb2xsZXJzLnRzJztcblxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGUtYWRhcHRlci50cyc7XG5cbi8qKlxuICogTWF0Y2hlcyBzdHJpbmdzIHRoYXQgaGF2ZSB0aGUgZm9ybSBvZiBhIHZhbGlkIFJGQyAzMzM5IHN0cmluZ1xuICogKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5KS4gTm90ZSB0aGF0IHRoZSBzdHJpbmcgbWF5IG5vdCBhY3R1YWxseSBiZSBhIHZhbGlkIGRhdGVcbiAqIGJlY2F1c2UgdGhlIHJlZ2V4IHdpbGwgbWF0Y2ggc3RyaW5ncyBhbmQgd2l0aG91dCBvZiBib3VuZHMgbW9udGgsIGRhdGUsIGV0Yy5cbiAqL1xuY29uc3QgSVNPXzg2MDFfUkVHRVggPVxuICAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9KD86VFxcZHsyfTpcXGR7Mn06XFxkezJ9KD86XFwuXFxkKyk/KD86WnwoPzooPzpcXCt8LSlcXGR7Mn06XFxkezJ9KSk/KT8kLztcblxuZXhwb3J0IGNsYXNzIE5hdGl2ZURhdGVBZGFwdGVyIGV4dGVuZHMgRGF0ZUFkYXB0ZXI8RGF0ZT4ge1xuICAvKiogR2V0cyB0aGUgeWVhciBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldFllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBtb250aCBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldE1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRheSBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldERhdGUoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RGF0ZSgpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldERheU9mV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXREYXkoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBkYXRlIGluIHRoZSBsb2NhbCBmb3JtYXQuICovXG4gIHB1YmxpYyBnZXRBY2Nlc3NpYmlsaXR5Rm9ybWF0RGF0ZShkYXRlOiBEYXRlIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBvcHRpb25zOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICBkYXk6ICdudW1lcmljJyxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgb3B0aW9ucykuZm9ybWF0KG5ldyBEYXRlKGRhdGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHN0cmluZ3Mgd2l0aCBsZW5ndGggPSAxMiwgZmlsbGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIG1vbnRocyBzdGFydGluZyBmcm9tIEphbnVhcnksIGluIHRoZSBkb2N1bWVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIHN0eWxlIFNlZSBgbW9udGhgIGluIGBEYXRlVGltZUZvcm1hdE9wdGlvbnNgOiBgbG9uZ2AgZm9yIGZ1bGwgbmFtZSwgYHNob3J0YCBmb3Igc2hvcnQgbmFtZSwgYG5hcnJvd2AgZm9yIHNpbmdsZSBsZXR0ZXIsXG4gICAqIEUuZy4sIHdpdGggSmFudWFyeSBpbiBlbi1nYjogYGxvbmdgIHJldHVybnMgXCJKYW51YXJ5XCIsIGBzaG9ydGAgcmV0dXJucyBcIkphblwiLCBgbmFycm93YCByZXR1cm5zIFwiSlwiLlxuICAgKi9cbiAgcHVibGljIGdldE1vbnRoTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyBtb250aDogc3R5bGUgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlKDEyLCAoaSkgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCBpLCAxKSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSAzMSwgZmlsbGVkIHdpdGggdGhlIGRheXMgaW4gYSBtb250aCwgc3RhcnRpbmcgZnJvbSAxLiAqL1xuICBwdWJsaWMgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyBkYXk6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UoMzEsIChpKSA9PiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDAsIGkgKyAxKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSA3LCBmaWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZGF5cyBpbiBhIHdlZWsgc3RhcnRpbmcgZnJvbSBTdW5kYXksIGluIHRoZSBkb2N1bWVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIHN0eWxlIFNlZSBgd2Vla2RheWAgaW4gYERhdGVUaW1lRm9ybWF0T3B0aW9uc2AgLSAnbG9uZycgZm9yIGZ1bGwgbmFtZSwgJ3Nob3J0JyBmb3Igc2hvcnQgbmFtZSwgJ25hcnJvdycgZm9yIHNpbmdsZSBsZXR0ZXI7XG4gICAqIEUuZy4sIHdpdGggTW9uZGF5IGluIGVuLWdiOiBgbG9uZ2AgcmV0dXJucyBcIk1vbmRheVwiLCBgc2hvcnRgIHJldHVybnMgXCJNb25cIiwgYG5hcnJvd2AgcmV0dXJucyBcIk1cIi5cbiAgICovXG4gIHB1YmxpYyBnZXREYXlPZldlZWtOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IHdlZWtkYXk6IHN0eWxlIH0pO1xuICAgIHJldHVybiB0aGlzLl9yYW5nZSg3LCAoaSkgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCAwLCBpICsgMSkpKTtcbiAgfVxuXG4gIC8qKiBEZWZpbmVzIHdoaWNoIGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDA6IHN1bmRheTsgMTogbW9uZGF5OyBldGMuKS4gKi9cbiAgcHVibGljIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvKiogQ2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aCBnaXZlbiB0aGUgeWVhciBhbmQgdGhlIG1vbnRoLiAqL1xuICBwdWJsaWMgZ2V0TnVtRGF5c0luTW9udGgoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZSh0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHRoaXMuZ2V0WWVhcihkYXRlKSwgdGhpcy5nZXRNb250aChkYXRlKSwgMCkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgdG9kYXkncyBkYXRlLiAqL1xuICBwdWJsaWMgdG9kYXkoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBuZXcgZGF0ZSwgZ2l2ZW4gZGF5LCBtb250aCBhbmQgeWVhcjsgdGhlIG1ldGhvZCBkb2Vzbid0IGFsbG93IGRhdGUncyBvdmVyZmxvdy4gKi9cbiAgcHVibGljIGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlcik6IERhdGUge1xuICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIG1vbnRoIGFuZCBkYXRlIChleGNlcHQgdXBwZXIgYm91bmQgb24gZGF0ZSB3aGljaCB3ZSBoYXZlIHRvIGNoZWNrIGFmdGVyIGNyZWF0aW5nIHRoZSBEYXRlKS5cbiAgICBpZiAobW9udGggPCAxIHx8IG1vbnRoID4gMTIpIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIG1vbnRoIFwiJHttb250aH1cIi4gTW9udGggaGFzIHRvIGJlIGJldHdlZW4gMSBhbmQgMTIuYCk7XG4gICAgfSBlbHNlIGlmIChkYXkgPCAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXkgXCIke2RheX1cIi4gRGF5IGhhcyB0byBiZSBncmVhdGVyIHRoYW4gMC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcbiAgICAvLyBDaGVjayB0aGF0IHRoZSBkYXRlIHdhc24ndCBhYm92ZSB0aGUgdXBwZXIgYm91bmQgZm9yIHRoZSBtb250aCwgY2F1c2luZyB0aGUgbW9udGggdG8gb3ZlcmZsb3dcbiAgICBpZiAocmVzdWx0LmdldE1vbnRoKCkgKyAxICE9PSBtb250aCkge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgZGF5IFwiJHtkYXl9XCIgZm9yIG1vbnRoIFwiJHttb250aH1cIi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBgb2JqYCBpcyBhIERhdGUuICovXG4gIHB1YmxpYyBpc0RhdGVJbnN0YW5jZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEYXRlO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBgZGF0ZWAgaXMgYSB2YWxpZCBEYXRlLiAqL1xuICBwdWJsaWMgaXNWYWxpZChkYXRlOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGRhdGUgaXMgRGF0ZSB7XG4gICAgcmV0dXJuICEhZGF0ZSAmJiAhaXNOYU4oZGF0ZS52YWx1ZU9mKCkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBjbG9uaW5nIHRoZSBnaXZlbiBvbmUuICovXG4gIHB1YmxpYyBjbG9uZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYHllYXJzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIHllYXJzIFRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogRGF0ZSwgeWVhcnM6IG51bWJlcik6IERhdGUge1xuICAgIHJldHVybiB0aGlzLmFkZENhbGVuZGFyTW9udGhzKGRhdGUsIHllYXJzICogMTIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgbW9udGhzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBJZiB0aGUgY2FsY3VsYXRlZCBtb250aCBoYXMgZmV3ZXIgZGF5cyB0aGFuIHRoZSBvcmlnaW5hbCBvbmUsIHRoZSBkYXRlIGlzIHNldCB0byB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuICAgKiBFLmcuLCB3aXRoIGBkYXRlYCA9IG5ldyBEYXRlKDIwMjIsIDAsIDMxKSBhbmQgYG1vbnRoc2AgPSAxLCBpdCByZXR1cm5zIG5ldyBEYXRlKDIwMjIsIDEsIDI4KS5cbiAgICovXG4gIHB1YmxpYyBhZGRDYWxlbmRhck1vbnRocyhkYXRlOiBEYXRlLCBtb250aHM6IG51bWJlcik6IERhdGUge1xuICAgIGNvbnN0IHRhcmdldE1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgbW9udGhzO1xuICAgIGNvbnN0IGRhdGVXaXRoQ29ycmVjdE1vbnRoID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCB0YXJnZXRNb250aCwgMSwgMCwgMCwgMCwgMCk7XG4gICAgY29uc3QgZGF5c0luTW9udGggPSB0aGlzLmdldE51bURheXNJbk1vbnRoKGRhdGVXaXRoQ29ycmVjdE1vbnRoKTtcbiAgICAvLyBBZGFwdCB0aGUgbGFzdCBkYXkgb2YgbW9udGggZm9yIHNob3J0ZXIgbW9udGhzXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY2xvbmUoZGF0ZSkuc2V0TW9udGgodGFyZ2V0TW9udGgsIE1hdGgubWluKGRheXNJbk1vbnRoLCBkYXRlLmdldERhdGUoKSkpKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYGRheXNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuICovXG4gIHB1YmxpYyBhZGRDYWxlbmRhckRheXMoZGF0ZTogRGF0ZSwgZGF5czogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgdGFyZ2V0RGF5ID0gZGF0ZS5nZXREYXRlKCkgKyBkYXlzO1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgdGFyZ2V0RGF5LCAwLCAwLCAwLCAwKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgRGF0ZSBmcm9tIGEgdmFsaWQgaW5wdXQgKERhdGUgb3IgSVNPIHN0cmluZykuICovXG4gIHB1YmxpYyBvdmVycmlkZSBkZXNlcmlhbGl6ZShkYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2UgaWYgKElTT184NjAxX1JFR0VYLnRlc3QoZGF0ZSkpIHtcbiAgICAgICAgLy8gVGhlIGBEYXRlYCBjb25zdHJ1Y3RvciBhY2NlcHRzIGZvcm1hdHMgb3RoZXIgdGhhbiBJU08gODYwMSwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlXG4gICAgICAgIC8vIHN0cmluZyBpcyB0aGUgcmlnaHQgZm9ybWF0IGZpcnN0LlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWxpZERhdGVPck51bGwobmV3IERhdGUoZGF0ZS5pbmNsdWRlcygnVCcpID8gZGF0ZSA6IGRhdGUgKyAnVDAwOjAwOjAwJykpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuZGVzZXJpYWxpemUoZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgaW52YWxpZCgpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFycmF5IHdpdGggdGhlIGdpdmVuIGxlbmd0aCBhbmQgZmlsbHMgaXQgYnkgbWFwcGluZyB3aXRoIHRoZSBwcm92aWRlZCBmdW5jdGlvbi5cbiAgICogQHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB0byBiZSBjcmVhdGVkLlxuICAgKiBAcGFyYW0gdmFsdWVGdW5jdGlvbiBUaGUgZnVuY3Rpb24gb2YgYXJyYXkncyBpbmRleCB1c2VkIHRvIGZpbGwgdGhlIGFycmF5LlxuICAgKi9cbiAgcHJpdmF0ZSBfcmFuZ2U8VD4obGVuZ3RoOiBudW1iZXIsIHZhbHVlRnVuY3Rpb246IChpbmRleDogbnVtYmVyKSA9PiBUKTogVFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aCB9KS5tYXAoKF8sIGkpID0+IHZhbHVlRnVuY3Rpb24oaSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBkYXRlIGJ1dCBhbGxvd3MgdGhlIG1vbnRoIGFuZCBkYXRlIHRvIG92ZXJmbG93LiAqL1xuICBwcml2YXRlIF9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF0ZTogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRhdGUpO1xuICAgIC8vIFdlIG5lZWQgdG8gY29ycmVjdCBmb3IgdGhlIGZhY3QgdGhhdCBKUyBuYXRpdmUgRGF0ZSB0cmVhdHMgeWVhcnMgaW4gcmFuZ2UgWzAsIDk5XSBhc1xuICAgIC8vIGFiYnJldmlhdGlvbnMgZm9yIDE5eHguXG4gICAgaWYgKHllYXIgPj0gMCAmJiB5ZWFyIDwgMTAwKSB7XG4gICAgICByZXN1bHQuc2V0RnVsbFllYXIodGhpcy5nZXRZZWFyKHJlc3VsdCkgLSAxOTAwKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdERhdGVBZGFwdGVyID0gbmV3IE5hdGl2ZURhdGVBZGFwdGVyKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBU0EsSUFBTSxpQkFDSjtBQUVGLElBQWEsb0JBQWIsY0FBdUMsWUFBaUI7O0NBRS9DLFFBQVEsTUFBVTtBQUN2QixTQUFPLEtBQUssYUFBYTs7O0NBSXBCLFNBQVMsTUFBVTtBQUN4QixTQUFPLEtBQUssVUFBVSxHQUFHOzs7Q0FJcEIsUUFBUSxNQUFVO0FBQ3ZCLFNBQU8sS0FBSyxTQUFT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