@sbb-esta/lyne-elements 1.0.0 → 1.2.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 (218) hide show
  1. package/button/common/button-common.d.ts.map +1 -1
  2. package/button/mini-button.js +5 -5
  3. package/calendar/calendar.d.ts +3 -1
  4. package/calendar/calendar.d.ts.map +1 -1
  5. package/calendar.js +62 -52
  6. package/card/common/card-action-common.d.ts.map +1 -1
  7. package/checkbox/common/checkbox-common.d.ts.map +1 -1
  8. package/clock/clock.d.ts.map +1 -1
  9. package/clock.js +45 -50
  10. package/core/decorators/host-attributes.d.ts.map +1 -1
  11. package/core/eventing/throttle.d.ts.map +1 -1
  12. package/core/i18n/i18n.d.ts +1 -3
  13. package/core/i18n/i18n.d.ts.map +1 -1
  14. package/core/i18n.js +91 -127
  15. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  16. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  17. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  18. package/core/mixins/hydration-mixin.d.ts +2 -8
  19. package/core/mixins/hydration-mixin.d.ts.map +1 -1
  20. package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  21. package/core/mixins/negative-mixin.d.ts.map +1 -1
  22. package/core/mixins/panel-mixin.d.ts.map +1 -1
  23. package/core/mixins/required-mixin.d.ts.map +1 -1
  24. package/core/mixins/update-scheduler-mixin.d.ts.map +1 -1
  25. package/core/mixins.js +90 -99
  26. package/core/observers/intersection-observer.d.ts +1 -1
  27. package/core/styles/_index.scss +1 -0
  28. package/core/styles/mixins/buttons.scss +1 -1
  29. package/core/styles/mixins/table.scss +148 -0
  30. package/core/styles/standard-theme.scss +1 -0
  31. package/core/styles/table.scss +56 -0
  32. package/core/testing/private.d.ts +0 -1
  33. package/core/testing/private.d.ts.map +1 -1
  34. package/core/testing/wait-for-render.d.ts +1 -1
  35. package/core/testing/wait-for-render.d.ts.map +1 -1
  36. package/core/testing.js +40 -37
  37. package/custom-elements.json +557 -864
  38. package/datepicker/datepicker-next-day.js +5 -5
  39. package/datepicker/datepicker-previous-day.js +1 -1
  40. package/datepicker/datepicker-toggle.js +7 -7
  41. package/development/accordion.js +7 -1
  42. package/development/action-group.js +7 -1
  43. package/development/alert/alert-group.js +7 -1
  44. package/development/alert/alert.js +7 -1
  45. package/development/autocomplete.js +7 -1
  46. package/development/breadcrumb/breadcrumb-group.js +7 -1
  47. package/development/breadcrumb/breadcrumb.js +7 -1
  48. package/development/button/common/button-common.d.ts.map +1 -1
  49. package/development/button/common.js +7 -1
  50. package/development/button/mini-button.js +8 -2
  51. package/development/calendar/calendar.d.ts +3 -1
  52. package/development/calendar/calendar.d.ts.map +1 -1
  53. package/development/calendar.js +18 -2
  54. package/development/card/card-badge.js +7 -1
  55. package/development/card/card.js +7 -1
  56. package/development/card/common/card-action-common.d.ts.map +1 -1
  57. package/development/card/common.js +7 -1
  58. package/development/checkbox/checkbox-group.js +7 -1
  59. package/development/checkbox/checkbox.js +7 -1
  60. package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
  61. package/development/checkbox/common.js +7 -1
  62. package/development/chip.js +7 -1
  63. package/development/clock/clock.d.ts.map +1 -1
  64. package/development/clock.js +35 -31
  65. package/development/container/container.js +7 -1
  66. package/development/container/sticky-bar.js +7 -1
  67. package/development/core/decorators/host-attributes.d.ts.map +1 -1
  68. package/development/core/eventing/throttle.d.ts.map +1 -1
  69. package/development/core/i18n/i18n.d.ts +1 -3
  70. package/development/core/i18n/i18n.d.ts.map +1 -1
  71. package/development/core/i18n.js +5 -43
  72. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  73. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  74. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  75. package/development/core/mixins/hydration-mixin.d.ts +2 -8
  76. package/development/core/mixins/hydration-mixin.d.ts.map +1 -1
  77. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  78. package/development/core/mixins/negative-mixin.d.ts.map +1 -1
  79. package/development/core/mixins/panel-mixin.d.ts.map +1 -1
  80. package/development/core/mixins/required-mixin.d.ts.map +1 -1
  81. package/development/core/mixins/update-scheduler-mixin.d.ts.map +1 -1
  82. package/development/core/mixins.js +26 -36
  83. package/development/core/observers/intersection-observer.d.ts +1 -1
  84. package/development/core/testing/private.d.ts +0 -1
  85. package/development/core/testing/private.d.ts.map +1 -1
  86. package/development/core/testing/wait-for-render.d.ts +1 -1
  87. package/development/core/testing/wait-for-render.d.ts.map +1 -1
  88. package/development/core/testing.js +6 -2
  89. package/development/datepicker/datepicker-next-day.js +8 -2
  90. package/development/datepicker/datepicker-previous-day.js +8 -2
  91. package/development/datepicker/datepicker-toggle.js +7 -2
  92. package/development/datepicker/datepicker.js +7 -1
  93. package/development/dialog/dialog-actions.js +7 -1
  94. package/development/dialog/dialog-content.js +7 -1
  95. package/development/dialog/dialog-title.js +7 -1
  96. package/development/dialog/dialog.js +7 -1
  97. package/development/divider.js +7 -1
  98. package/development/expansion-panel/expansion-panel-content.js +7 -1
  99. package/development/expansion-panel/expansion-panel-header.js +7 -1
  100. package/development/expansion-panel/expansion-panel.js +7 -1
  101. package/development/file-selector.js +7 -1
  102. package/development/footer.js +7 -1
  103. package/development/form-error.js +7 -1
  104. package/development/form-field/form-field-clear.js +8 -2
  105. package/development/form-field/form-field.js +7 -1
  106. package/development/header/common/header-action-common.d.ts.map +1 -1
  107. package/development/header/common.js +7 -1
  108. package/development/header/header.js +7 -1
  109. package/development/icon/icon-name-mixin.d.ts.map +1 -1
  110. package/development/icon/icon-request.d.ts.map +1 -1
  111. package/development/icon.js +7 -1
  112. package/development/image.js +7 -1
  113. package/development/journey-header.js +7 -1
  114. package/development/lead-container.js +7 -1
  115. package/development/link/common/block-link-common.d.ts.map +1 -1
  116. package/development/link/common/inline-link-common.d.ts.map +1 -1
  117. package/development/link/common/link-common.d.ts.map +1 -1
  118. package/development/link/common.js +19 -1
  119. package/development/link-list.js +7 -1
  120. package/development/loading-indicator.js +7 -1
  121. package/development/logo.js +7 -1
  122. package/development/map-container.js +7 -1
  123. package/development/menu/common/menu-action-common.d.ts.map +1 -1
  124. package/development/menu/common.js +7 -1
  125. package/development/menu/menu.js +7 -1
  126. package/development/message.js +7 -1
  127. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  128. package/development/navigation/common.js +7 -1
  129. package/development/navigation/navigation-list.js +7 -1
  130. package/development/navigation/navigation-marker.js +7 -1
  131. package/development/navigation/navigation-section.js +7 -1
  132. package/development/navigation/navigation.js +7 -1
  133. package/development/notification.js +8 -1
  134. package/development/option/optgroup/optgroup.d.ts +2 -0
  135. package/development/option/optgroup/optgroup.d.ts.map +1 -1
  136. package/development/option/optgroup.js +21 -4
  137. package/development/option/option/option.d.ts +6 -5
  138. package/development/option/option/option.d.ts.map +1 -1
  139. package/development/option/option.js +53 -29
  140. package/development/overlay.js +7 -1
  141. package/development/popover/popover-trigger.js +8 -2
  142. package/development/popover/popover.js +7 -1
  143. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  144. package/development/radio-button/common.js +7 -1
  145. package/development/radio-button/radio-button-group.js +7 -1
  146. package/development/radio-button/radio-button.js +7 -1
  147. package/development/screen-reader-only.js +7 -1
  148. package/development/select.js +7 -1
  149. package/development/selection-expansion-panel.js +7 -1
  150. package/development/signet.js +7 -1
  151. package/development/skiplink-list.js +7 -1
  152. package/development/slider.js +7 -1
  153. package/development/status.js +7 -1
  154. package/development/stepper/step-label.js +7 -1
  155. package/development/stepper/step.js +7 -1
  156. package/development/stepper/stepper.js +7 -1
  157. package/development/table/table-wrapper/table-wrapper.d.ts +24 -0
  158. package/development/table/table-wrapper/table-wrapper.d.ts.map +1 -0
  159. package/development/table/table-wrapper.d.ts +2 -0
  160. package/development/table/table-wrapper.d.ts.map +1 -0
  161. package/development/table/table-wrapper.js +130 -0
  162. package/development/table.d.ts +2 -0
  163. package/development/table.d.ts.map +1 -0
  164. package/development/table.js +2 -0
  165. package/development/tabs/tab-group/tab-group.d.ts +4 -7
  166. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  167. package/development/tabs/tab-group.js +69 -73
  168. package/development/tabs/tab-label.js +7 -1
  169. package/development/tabs/tab.js +7 -1
  170. package/development/tag/tag-group.js +7 -1
  171. package/development/tag/tag.js +7 -1
  172. package/development/teaser.js +7 -1
  173. package/development/time-input.js +7 -1
  174. package/development/timetable-occupancy-icon.js +7 -1
  175. package/development/timetable-occupancy.js +7 -1
  176. package/development/title.js +13 -1
  177. package/development/toast.js +7 -1
  178. package/development/toggle/toggle-option.js +7 -1
  179. package/development/toggle/toggle.js +7 -1
  180. package/development/toggle-check.js +7 -1
  181. package/development/train/train-blocked-passage.js +7 -1
  182. package/development/train/train-formation.js +7 -1
  183. package/development/train/train-wagon.js +7 -1
  184. package/development/train/train.js +7 -1
  185. package/development/visual-checkbox.js +7 -1
  186. package/form-field/form-field-clear.js +1 -1
  187. package/header/common/header-action-common.d.ts.map +1 -1
  188. package/icon/icon-name-mixin.d.ts.map +1 -1
  189. package/icon/icon-request.d.ts.map +1 -1
  190. package/index.d.ts +2 -0
  191. package/index.js +2 -0
  192. package/link/common/block-link-common.d.ts.map +1 -1
  193. package/link/common/inline-link-common.d.ts.map +1 -1
  194. package/link/common/link-common.d.ts.map +1 -1
  195. package/menu/common/menu-action-common.d.ts.map +1 -1
  196. package/navigation/common/navigation-action-common.d.ts.map +1 -1
  197. package/notification.js +1 -1
  198. package/option/optgroup/optgroup.d.ts +2 -0
  199. package/option/optgroup/optgroup.d.ts.map +1 -1
  200. package/option/optgroup.js +24 -21
  201. package/option/option/option.d.ts +6 -5
  202. package/option/option/option.d.ts.map +1 -1
  203. package/option/option.js +72 -69
  204. package/package.json +11 -1
  205. package/popover/popover-trigger.js +1 -1
  206. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  207. package/standard-theme.css +196 -0
  208. package/table/table-wrapper/table-wrapper.d.ts +24 -0
  209. package/table/table-wrapper/table-wrapper.d.ts.map +1 -0
  210. package/table/table-wrapper.d.ts +2 -0
  211. package/table/table-wrapper.d.ts.map +1 -0
  212. package/table/table-wrapper.js +39 -0
  213. package/table.d.ts +2 -0
  214. package/table.d.ts.map +1 -0
  215. package/table.js +1 -0
  216. package/tabs/tab-group/tab-group.d.ts +4 -7
  217. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  218. package/tabs/tab-group.js +80 -81
@@ -23,6 +23,12 @@ const style = css`/**
23
23
  * }
24
24
  */
25
25
  /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
26
+ /*
27
+ * SBB table mixin
28
+ * Notes:
29
+ * We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
30
+ * Therefore, we have to build the grid avoiding double borders.
31
+ */
26
32
  *,
27
33
  ::before,
28
34
  ::after {
@@ -36,7 +42,6 @@ const style = css`/**
36
42
  }
37
43
 
38
44
  sbb-popover-trigger {
39
- --sbb-button-display: flex;
40
45
  color: var(--sbb-datepicker-control-color);
41
46
  height: unset;
42
47
  }
@@ -230,4 +235,4 @@ SbbDatepickerToggleElement = __decorateClass([
230
235
  export {
231
236
  SbbDatepickerToggleElement
232
237
  };
233
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10b2dnbGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItdG9nZ2xlL2RhdGVwaWNrZXItdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkNhbGVuZGFyRWxlbWVudCB9IGZyb20gJy4uLy4uL2NhbGVuZGFyLmpzJztcbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGkxOG5TaG93Q2FsZW5kYXIgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlBvcG92ZXJFbGVtZW50LCBTYmJQb3BvdmVyVHJpZ2dlckVsZW1lbnQgfSBmcm9tICcuLi8uLi9wb3BvdmVyLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZXBpY2tlckVsZW1lbnQsIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcbmltcG9ydCB7IGRhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZEV2ZW50RmFjdG9yeSwgZ2V0RGF0ZVBpY2tlciB9IGZyb20gJy4uL2RhdGVwaWNrZXIuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kYXRlcGlja2VyLXRvZ2dsZS5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2NhbGVuZGFyLmpzJztcbmltcG9ydCAnLi4vLi4vcG9wb3Zlci5qcyc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItZGF0ZXBpY2tlcmAsIGl0IGNhbiBiZSB1c2VkIHRvIHNlbGVjdCBhIGRhdGUgZnJvbSBhIGBzYmItY2FsZW5kYXJgLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXItdG9nZ2xlJylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHNsb3Q6ICdwcmVmaXgnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIERhdGVwaWNrZXIgcmVmZXJlbmNlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkYXRlLXBpY2tlcicgfSkgcHVibGljIGRhdGVQaWNrZXI/OiBzdHJpbmcgfCBTYmJEYXRlcGlja2VyRWxlbWVudDtcblxuICBAc3RhdGUoKSBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX21pbjogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfbWF4OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICBAc3RhdGUoKSBwcml2YXRlIF9yZW5kZXJDYWxlbmRhciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJFbGVtZW50OiBTYmJEYXRlcGlja2VyRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXJFbGVtZW50ITogU2JiQ2FsZW5kYXJFbGVtZW50O1xuXG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50ITogU2JiUG9wb3ZlclRyaWdnZXJFbGVtZW50O1xuXG4gIHByaXZhdGUgX3BvcG92ZXJFbGVtZW50ITogU2JiUG9wb3ZlckVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG5cbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIHRoaXMuaHlkcmF0aW9uQ29tcGxldGUudGhlbigoKSA9PiAodGhpcy5fcmVuZGVyQ2FsZW5kYXIgPSB0cnVlKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCdzYmItcG9wb3Zlci10cmlnZ2VyJykhO1xuICAgIH1cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgaWYgKCF0aGlzLmRhdGVQaWNrZXIpIHtcbiAgICAgIHRoaXMuX2luaXQoKTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKSA/PyB0aGlzLmNsb3Nlc3Q/LignW2RhdGEtZm9ybS1maWVsZF0nKTtcbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gZm9ybUZpZWxkLmhhc0F0dHJpYnV0ZSgnbmVnYXRpdmUnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2RhdGVQaWNrZXInKSkge1xuICAgICAgdGhpcy5faW5pdCh0aGlzLmRhdGVQaWNrZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdChkYXRlUGlja2VyPzogc3RyaW5nIHwgU2JiRGF0ZXBpY2tlckVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudCA9IGdldERhdGVQaWNrZXIodGhpcywgZGF0ZVBpY2tlcik7XG4gICAgaWYgKCF0aGlzLl9kYXRlUGlja2VyRWxlbWVudCkge1xuICAgICAgLy8gSWYgdGhlIGNvbXBvbmVudCBpcyBhdHRhY2hlZCB0byB0aGUgRE9NIGJlZm9yZSB0aGUgZGF0ZXBpY2tlciwgaXQgaGFzIHRvIGxpc3RlbiBmb3IgdGhlIGRhdGVwaWNrZXIgaW5pdCxcbiAgICAgIC8vIGFzc3VtaW5nIHRoYXQgdGhlIHR3byBjb21wb25lbnRzIHNoYXJlIHRoZSBzYW1lIHBhcmVudCBlbGVtZW50LlxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnaW5wdXRVcGRhdGVkJyxcbiAgICAgICAgKGU6IEV2ZW50KSA9PiB0aGlzLl9pbml0KGUudGFyZ2V0IGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50KSxcbiAgICAgICAgeyBvbmNlOiB0cnVlLCBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdpbnB1dFVwZGF0ZWQnLFxuICAgICAgKGV2ZW50OiBDdXN0b21FdmVudDxTYmJJbnB1dFVwZGF0ZUV2ZW50PikgPT4ge1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBTYmJEYXRlcGlja2VyRWxlbWVudDtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSAhIShldmVudC5kZXRhaWwuZGlzYWJsZWQgfHwgZXZlbnQuZGV0YWlsLnJlYWRvbmx5KTtcbiAgICAgICAgdGhpcy5fbWluID0gZXZlbnQuZGV0YWlsLm1pbjtcbiAgICAgICAgdGhpcy5fbWF4ID0gZXZlbnQuZGV0YWlsLm1heDtcbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjaGFuZ2UnLFxuICAgICAgKGV2ZW50OiBFdmVudCkgPT4gdGhpcy5fZGF0ZVBpY2tlckNoYW5nZWQoZXZlbnQpLFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdkYXRlUGlja2VyVXBkYXRlZCcsXG4gICAgICAoZXZlbnQ6IEV2ZW50KSA9PlxuICAgICAgICB0aGlzLl9jb25maWd1cmVDYWxlbmRhcih0aGlzLl9jYWxlbmRhckVsZW1lbnQsIGV2ZW50LnRhcmdldCBhcyBTYmJEYXRlcGlja2VyRWxlbWVudCksXG4gICAgICB7IHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KGRhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZEV2ZW50RmFjdG9yeSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZUNhbGVuZGFyKGNhbGVuZGFyOiBTYmJDYWxlbmRhckVsZW1lbnQsIGRhdGVwaWNrZXI6IFNiYkRhdGVwaWNrZXJFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKCFjYWxlbmRhciB8fCAhZGF0ZXBpY2tlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjYWxlbmRhci53aWRlID0gZGF0ZXBpY2tlci53aWRlO1xuICAgIGNhbGVuZGFyLm5vdyA9IHRoaXMuX25vd09yVW5kZWZpbmVkKCk7XG4gICAgY2FsZW5kYXIuZGF0ZUZpbHRlciA9IGRhdGVwaWNrZXIuZGF0ZUZpbHRlcjtcbiAgfVxuXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJDaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50O1xuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LmdldFZhbHVlQXNEYXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hc3NpZ25DYWxlbmRhcihjYWxlbmRhcjogU2JiQ2FsZW5kYXJFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NhbGVuZGFyRWxlbWVudCAmJiB0aGlzLl9jYWxlbmRhckVsZW1lbnQgPT09IGNhbGVuZGFyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudCA9IGNhbGVuZGFyO1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9kYXRlUGlja2VyRWxlbWVudCB8fFxuICAgICAgIXRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LmdldFZhbHVlQXNEYXRlIHx8XG4gICAgICAhdGhpcy5fY2FsZW5kYXJFbGVtZW50Py5yZXNldFBvc2l0aW9uXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LmdldFZhbHVlQXNEYXRlKCk7XG4gICAgdGhpcy5fY29uZmlndXJlQ2FsZW5kYXIodGhpcy5fY2FsZW5kYXJFbGVtZW50LCB0aGlzLl9kYXRlUGlja2VyRWxlbWVudCk7XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnJlc2V0UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5fcG9wb3ZlckVsZW1lbnQudHJpZ2dlciA9IHRoaXMuX3RyaWdnZXJFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfbm93T3JVbmRlZmluZWQoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5oYXNDdXN0b21Ob3coKSA/IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Lm5vdyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1wb3BvdmVyLXRyaWdnZXJcbiAgICAgICAgaWNvbi1uYW1lPVwiY2FsZW5kYXItc21hbGxcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7aTE4blNob3dDYWxlbmRhclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgP2Rpc2FibGVkPSR7IWlzU2VydmVyICYmICghdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgfHwgdGhpcy5fZGlzYWJsZWQpfVxuICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICBkYXRhLWljb24tc21hbGxcbiAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gZWwgYXMgU2JiUG9wb3ZlclRyaWdnZXJFbGVtZW50KSl9XG4gICAgICA+PC9zYmItcG9wb3Zlci10cmlnZ2VyPlxuICAgICAgPHNiYi1wb3BvdmVyXG4gICAgICAgIEB3aWxsT3Blbj0keygpID0+IHRoaXMuX2NhbGVuZGFyRWxlbWVudC5yZXNldFBvc2l0aW9uKCl9XG4gICAgICAgIEBkaWRPcGVuPSR7KCkgPT4ge1xuICAgICAgICAgIHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCcgJiZcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9fVxuICAgICAgICAudHJpZ2dlcj0ke3RoaXMuX3RyaWdnZXJFbGVtZW50fVxuICAgICAgICBoaWRlLWNsb3NlLWJ1dHRvblxuICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fcG9wb3ZlckVsZW1lbnQgPSBlbCBhcyBTYmJQb3BvdmVyRWxlbWVudCkpfVxuICAgICAgPlxuICAgICAgICAke3RoaXMuX3JlbmRlckNhbGVuZGFyXG4gICAgICAgICAgPyBodG1sYDxzYmItY2FsZW5kYXJcbiAgICAgICAgICAgICAgLm1pbj0ke3RoaXMuX21pbn1cbiAgICAgICAgICAgICAgLm1heD0ke3RoaXMuX21heH1cbiAgICAgICAgICAgICAgLm5vdz0ke3RoaXMuX25vd09yVW5kZWZpbmVkKCl9XG4gICAgICAgICAgICAgID93aWRlPSR7dGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LndpZGV9XG4gICAgICAgICAgICAgIC5kYXRlRmlsdGVyPSR7dGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmRhdGVGaWx0ZXJ9XG4gICAgICAgICAgICAgIEBkYXRlU2VsZWN0ZWQ9JHsoZDogQ3VzdG9tRXZlbnQ8RGF0ZT4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoZC5kZXRhaWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IG5ld0RhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LnNldFZhbHVlQXNEYXRlKG5ld0RhdGUpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAke3JlZigoY2FsZW5kYXI/OiBFbGVtZW50KSA9PiB0aGlzLl9hc3NpZ25DYWxlbmRhcihjYWxlbmRhciBhcyBTYmJDYWxlbmRhckVsZW1lbnQpKX1cbiAgICAgICAgICAgID48L3NiYi1jYWxlbmRhcj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgPC9zYmItcG9wb3Zlcj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGF0ZXBpY2tlci10b2dnbGUnOiBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJCTyxJQUFNLDZCQUFOLGNBQXlDLGlCQUFpQixrQkFBa0IsVUFBVSxDQUFDLEVBQUU7QUFBQSxFQTBCdkYsY0FBYztBQUNiO0FBckJDLFNBQVEsWUFBWTtBQUVwQixTQUFRLE9BQTJDO0FBRW5ELFNBQVEsT0FBMkM7QUFFbkQsU0FBUSxrQkFBa0I7QUFZM0IsU0FBQSxZQUFZLElBQUksc0JBQXNCLElBQUk7QUFJaEQsUUFBSSxDQUFDLFVBQVU7QUFDYixXQUFLLGtCQUFrQixLQUFLLE1BQU8sS0FBSyxrQkFBa0IsSUFBSztBQUFBLElBQ2pFO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS08sT0FBYTtBQUNkLFFBQUEsQ0FBQyxLQUFLLGlCQUFpQjtBQUN6QixXQUFLLGtCQUFrQixLQUFLLFdBQVksY0FBYyxxQkFBcUI7QUFBQSxJQUM3RTtBQUNBLFNBQUssZ0JBQWdCO0VBQ3ZCO0FBQUEsRUFFZ0Isb0JBQTBCOztBQUN4QyxVQUFNLGtCQUFrQjtBQUNwQixRQUFBLENBQUMsS0FBSyxZQUFZO0FBQ3BCLFdBQUssTUFBTTtBQUFBLElBQ2I7QUFFQSxVQUFNLGNBQVksVUFBSyxZQUFMLDhCQUFlLHdCQUFxQixVQUFLLFlBQUwsOEJBQWU7QUFDckUsUUFBSSxXQUFXO0FBQ1IsV0FBQSxXQUFXLFVBQVUsYUFBYSxVQUFVO0FBQUEsSUFDbkQ7QUFBQSxFQUNGO0FBQUEsRUFFZ0IsV0FBVyxtQkFBK0M7QUFDeEUsVUFBTSxXQUFXLGlCQUFpQjtBQUU5QixRQUFBLGtCQUFrQixJQUFJLFlBQVksR0FBRztBQUNsQyxXQUFBLE1BQU0sS0FBSyxVQUFVO0FBQUEsSUFDNUI7QUFBQSxF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
238
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10b2dnbGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItdG9nZ2xlL2RhdGVwaWNrZXItdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkNhbGVuZGFyRWxlbWVudCB9IGZyb20gJy4uLy4uL2NhbGVuZGFyLmpzJztcbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGkxOG5TaG93Q2FsZW5kYXIgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlBvcG92ZXJFbGVtZW50LCBTYmJQb3BvdmVyVHJpZ2dlckVsZW1lbnQgfSBmcm9tICcuLi8uLi9wb3BvdmVyLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZXBpY2tlckVsZW1lbnQsIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcbmltcG9ydCB7IGRhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZEV2ZW50RmFjdG9yeSwgZ2V0RGF0ZVBpY2tlciB9IGZyb20gJy4uL2RhdGVwaWNrZXIuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kYXRlcGlja2VyLXRvZ2dsZS5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2NhbGVuZGFyLmpzJztcbmltcG9ydCAnLi4vLi4vcG9wb3Zlci5qcyc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItZGF0ZXBpY2tlcmAsIGl0IGNhbiBiZSB1c2VkIHRvIHNlbGVjdCBhIGRhdGUgZnJvbSBhIGBzYmItY2FsZW5kYXJgLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXItdG9nZ2xlJylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHNsb3Q6ICdwcmVmaXgnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIERhdGVwaWNrZXIgcmVmZXJlbmNlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkYXRlLXBpY2tlcicgfSkgcHVibGljIGRhdGVQaWNrZXI/OiBzdHJpbmcgfCBTYmJEYXRlcGlja2VyRWxlbWVudDtcblxuICBAc3RhdGUoKSBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX21pbjogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfbWF4OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICBAc3RhdGUoKSBwcml2YXRlIF9yZW5kZXJDYWxlbmRhciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJFbGVtZW50OiBTYmJEYXRlcGlja2VyRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXJFbGVtZW50ITogU2JiQ2FsZW5kYXJFbGVtZW50O1xuXG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50ITogU2JiUG9wb3ZlclRyaWdnZXJFbGVtZW50O1xuXG4gIHByaXZhdGUgX3BvcG92ZXJFbGVtZW50ITogU2JiUG9wb3ZlckVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG5cbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIHRoaXMuaHlkcmF0aW9uQ29tcGxldGUudGhlbigoKSA9PiAodGhpcy5fcmVuZGVyQ2FsZW5kYXIgPSB0cnVlKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCdzYmItcG9wb3Zlci10cmlnZ2VyJykhO1xuICAgIH1cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgaWYgKCF0aGlzLmRhdGVQaWNrZXIpIHtcbiAgICAgIHRoaXMuX2luaXQoKTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKSA/PyB0aGlzLmNsb3Nlc3Q/LignW2RhdGEtZm9ybS1maWVsZF0nKTtcbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gZm9ybUZpZWxkLmhhc0F0dHJpYnV0ZSgnbmVnYXRpdmUnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2RhdGVQaWNrZXInKSkge1xuICAgICAgdGhpcy5faW5pdCh0aGlzLmRhdGVQaWNrZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdChkYXRlUGlja2VyPzogc3RyaW5nIHwgU2JiRGF0ZXBpY2tlckVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudCA9IGdldERhdGVQaWNrZXIodGhpcywgZGF0ZVBpY2tlcik7XG4gICAgaWYgKCF0aGlzLl9kYXRlUGlja2VyRWxlbWVudCkge1xuICAgICAgLy8gSWYgdGhlIGNvbXBvbmVudCBpcyBhdHRhY2hlZCB0byB0aGUgRE9NIGJlZm9yZSB0aGUgZGF0ZXBpY2tlciwgaXQgaGFzIHRvIGxpc3RlbiBmb3IgdGhlIGRhdGVwaWNrZXIgaW5pdCxcbiAgICAgIC8vIGFzc3VtaW5nIHRoYXQgdGhlIHR3byBjb21wb25lbnRzIHNoYXJlIHRoZSBzYW1lIHBhcmVudCBlbGVtZW50LlxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnaW5wdXRVcGRhdGVkJyxcbiAgICAgICAgKGU6IEV2ZW50KSA9PiB0aGlzLl9pbml0KGUudGFyZ2V0IGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50KSxcbiAgICAgICAgeyBvbmNlOiB0cnVlLCBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdpbnB1dFVwZGF0ZWQnLFxuICAgICAgKGV2ZW50OiBDdXN0b21FdmVudDxTYmJJbnB1dFVwZGF0ZUV2ZW50PikgPT4ge1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBTYmJEYXRlcGlja2VyRWxlbWVudDtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSAhIShldmVudC5kZXRhaWwuZGlzYWJsZWQgfHwgZXZlbnQuZGV0YWlsLnJlYWRvbmx5KTtcbiAgICAgICAgdGhpcy5fbWluID0gZXZlbnQuZGV0YWlsLm1pbjtcbiAgICAgICAgdGhpcy5fbWF4ID0gZXZlbnQuZGV0YWlsLm1heDtcbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjaGFuZ2UnLFxuICAgICAgKGV2ZW50OiBFdmVudCkgPT4gdGhpcy5fZGF0ZVBpY2tlckNoYW5nZWQoZXZlbnQpLFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdkYXRlUGlja2VyVXBkYXRlZCcsXG4gICAgICAoZXZlbnQ6IEV2ZW50KSA9PlxuICAgICAgICB0aGlzLl9jb25maWd1cmVDYWxlbmRhcih0aGlzLl9jYWxlbmRhckVsZW1lbnQsIGV2ZW50LnRhcmdldCBhcyBTYmJEYXRlcGlja2VyRWxlbWVudCksXG4gICAgICB7IHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KGRhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZEV2ZW50RmFjdG9yeSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZUNhbGVuZGFyKGNhbGVuZGFyOiBTYmJDYWxlbmRhckVsZW1lbnQsIGRhdGVwaWNrZXI6IFNiYkRhdGVwaWNrZXJFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKCFjYWxlbmRhciB8fCAhZGF0ZXBpY2tlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjYWxlbmRhci53aWRlID0gZGF0ZXBpY2tlci53aWRlO1xuICAgIGNhbGVuZGFyLm5vdyA9IHRoaXMuX25vd09yVW5kZWZpbmVkKCk7XG4gICAgY2FsZW5kYXIuZGF0ZUZpbHRlciA9IGRhdGVwaWNrZXIuZGF0ZUZpbHRlcjtcbiAgfVxuXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJDaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50O1xuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LmdldFZhbHVlQXNEYXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hc3NpZ25DYWxlbmRhcihjYWxlbmRhcjogU2JiQ2FsZW5kYXJFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NhbGVuZGFyRWxlbWVudCAmJiB0aGlzLl9jYWxlbmRhckVsZW1lbnQgPT09IGNhbGVuZGFyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudCA9IGNhbGVuZGFyO1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9kYXRlUGlja2VyRWxlbWVudCB8fFxuICAgICAgIXRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LmdldFZhbHVlQXNEYXRlIHx8XG4gICAgICAhdGhpcy5fY2FsZW5kYXJFbGVtZW50Py5yZXNldFBvc2l0aW9uXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LmdldFZhbHVlQXNEYXRlKCk7XG4gICAgdGhpcy5fY29uZmlndXJlQ2FsZW5kYXIodGhpcy5fY2FsZW5kYXJFbGVtZW50LCB0aGlzLl9kYXRlUGlja2VyRWxlbWVudCk7XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnJlc2V0UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5fcG9wb3ZlckVsZW1lbnQudHJpZ2dlciA9IHRoaXMuX3RyaWdnZXJFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfbm93T3JVbmRlZmluZWQoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5oYXNDdXN0b21Ob3coKSA/IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Lm5vdyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1wb3BvdmVyLXRyaWdnZXJcbiAgICAgICAgaWNvbi1uYW1lPVwiY2FsZW5kYXItc21hbGxcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7aTE4blNob3dDYWxlbmRhclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgP2Rpc2FibGVkPSR7IWlzU2VydmVyICYmICghdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgfHwgdGhpcy5fZGlzYWJsZWQpfVxuICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICBkYXRhLWljb24tc21hbGxcbiAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gZWwgYXMgU2JiUG9wb3ZlclRyaWdnZXJFbGVtZW50KSl9XG4gICAgICA+PC9zYmItcG9wb3Zlci10cmlnZ2VyPlxuICAgICAgPHNiYi1wb3BvdmVyXG4gICAgICAgIEB3aWxsT3Blbj0keygpID0+IHRoaXMuX2NhbGVuZGFyRWxlbWVudC5yZXNldFBvc2l0aW9uKCl9XG4gICAgICAgIEBkaWRPcGVuPSR7KCkgPT4ge1xuICAgICAgICAgIHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCcgJiZcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9fVxuICAgICAgICAudHJpZ2dlcj0ke3RoaXMuX3RyaWdnZXJFbGVtZW50fVxuICAgICAgICBoaWRlLWNsb3NlLWJ1dHRvblxuICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fcG9wb3ZlckVsZW1lbnQgPSBlbCBhcyBTYmJQb3BvdmVyRWxlbWVudCkpfVxuICAgICAgPlxuICAgICAgICAke3RoaXMuX3JlbmRlckNhbGVuZGFyXG4gICAgICAgICAgPyBodG1sYDxzYmItY2FsZW5kYXJcbiAgICAgICAgICAgICAgLm1pbj0ke3RoaXMuX21pbn1cbiAgICAgICAgICAgICAgLm1heD0ke3RoaXMuX21heH1cbiAgICAgICAgICAgICAgLm5vdz0ke3RoaXMuX25vd09yVW5kZWZpbmVkKCl9XG4gICAgICAgICAgICAgID93aWRlPSR7dGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LndpZGV9XG4gICAgICAgICAgICAgIC5kYXRlRmlsdGVyPSR7dGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmRhdGVGaWx0ZXJ9XG4gICAgICAgICAgICAgIEBkYXRlU2VsZWN0ZWQ9JHsoZDogQ3VzdG9tRXZlbnQ8RGF0ZT4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoZC5kZXRhaWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IG5ld0RhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LnNldFZhbHVlQXNEYXRlKG5ld0RhdGUpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAke3JlZigoY2FsZW5kYXI/OiBFbGVtZW50KSA9PiB0aGlzLl9hc3NpZ25DYWxlbmRhcihjYWxlbmRhciBhcyBTYmJDYWxlbmRhckVsZW1lbnQpKX1cbiAgICAgICAgICAgID48L3NiYi1jYWxlbmRhcj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgPC9zYmItcG9wb3Zlcj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGF0ZXBpY2tlci10b2dnbGUnOiBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJPLElBQU0sNkJBQU4sY0FBeUMsaUJBQWlCLGtCQUFrQixVQUFVLENBQUMsRUFBRTtBQUFBLEVBMEJ2RixjQUFjO0FBQ2I7QUFyQkMsU0FBUSxZQUFZO0FBRXBCLFNBQVEsT0FBMkM7QUFFbkQsU0FBUSxPQUEyQztBQUVuRCxTQUFRLGtCQUFrQjtBQVkzQixTQUFBLFlBQVksSUFBSSxzQkFBc0IsSUFBSTtBQUloRCxRQUFJLENBQUMsVUFBVTtBQUNiLFdBQUssa0JBQWtCLEtBQUssTUFBTyxLQUFLLGtCQUFrQixJQUFLO0FBQUEsSUFDakU7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxPQUFhO0FBQ2QsUUFBQSxDQUFDLEtBQUssaUJBQWlCO0FBQ3pCLFdBQUssa0JBQWtCLEtBQUssV0FBWSxjQUFjLHFCQUFxQjtBQUFBLElBQzdFO0FBQ0EsU0FBSyxnQkFBZ0I7RUFDdkI7QUFBQSxFQUVnQixvQkFBMEI7O0FBQ3hDLFVBQU0sa0JBQWtCO0FBQ3BCLFFBQUEsQ0FBQyxLQUFLLFlBQVk7QUFDcEIsV0FBSyxNQUFNO0FBQUEsSUFDYjtBQUVBLFVBQU0sY0FBWSxVQUFLLFlBQUwsOEJBQWUsd0JBQXFCLFVBQUssWUFBTCw4QkFBZTtBQUNyRSxRQUFJLFdBQVc7QUFDUixXQUFBLFdBQVcsVUFBVSxhQUFhLFVBQVU7QUFBQSxJQUNuRDtBQUFBLEVBQ0Y7QUFBQSxFQUVnQixXQUFXLG1CQUErQztBQUN4RSxVQUFNLFdBQVcsaUJBQWlCO0FBRTlCLFFBQUEsa0JBQWtCLElBQUksWUFBWSxHQUFHO0FBQ2xDLFdBQUEsTUFBTSxLQUFLLFVBQVU7QUFBQSxJQUM1QjtB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
@@ -21,6 +21,12 @@ const style = css`/**
21
21
  * }
22
22
  */
23
23
  /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
24
+ /*
25
+ * SBB table mixin
26
+ * Notes:
27
+ * We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
28
+ * Therefore, we have to build the grid avoiding double borders.
29
+ */
24
30
  :host {
25
31
  border: 0;
26
32
  clip: rect(0 0 0 0);
@@ -377,4 +383,4 @@ export {
377
383
  getDatePicker,
378
384
  isDateAvailable
379
385
  };
380
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlnLmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyB0eXBlIERhdGVBZGFwdGVyLCBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB7IGZpbmRJbnB1dCwgZmluZFJlZmVyZW5jZWRFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGF0ZUNoYW5nZWRUbywgaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlciB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVMaWtlLCBTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgQWdub3N0aWNNdXRhdGlvbk9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlcGlja2VyQnV0dG9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLXRvZ2dsZS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXIuc2Nzcz9saXQmaW5saW5lJztcblxuY29uc3QgRk9STUFUX0RBVEUgPVxuICAvKF4wP1sxLTldP3xbMTJdP1swLTldP3wzP1swMV0/KVsuLFxcXFwvXFwtXFxzXSgwP1sxLTldP3wxP1swLTJdPyk/Wy4sXFxcXC9cXC1cXHNdKFxcZHsxLDR9JCk/LztcblxuZXhwb3J0IGludGVyZmFjZSBTYmJJbnB1dFVwZGF0ZUV2ZW50IHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIG1pbj86IHN0cmluZyB8IG51bWJlcjtcbiAgbWF4Pzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudCwgYSBTYmJEYXRlcGlja2VyTmV4dERheUVsZW1lbnQgb3IgYSBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudCBjb21wb25lbnQsXG4gKiBpdCByZXR1cm5zIHRoZSByZWxhdGVkIFNiYkRhdGVwaWNrZXJFbGVtZW50IHJlZmVyZW5jZSwgaWYgZXhpc3RzLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgcG90ZW50aWFsbHkgY29ubmVjdGVkIHRvIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudC5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBpZCBvciB0aGUgcmVmZXJlbmNlIG9mIHRoZSBTYmJEYXRlUGlja2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0ZVBpY2tlcihcbiAgZWxlbWVudDogU2JiRGF0ZXBpY2tlckJ1dHRvbiB8IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50LFxuICB0cmlnZ2VyPzogc3RyaW5nIHwgSFRNTEVsZW1lbnQsXG4pOiBTYmJEYXRlcGlja2VyRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQge1xuICBpZiAoIXRyaWdnZXIpIHtcbiAgICBjb25zdCBwYXJlbnQgPSBlbGVtZW50LmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKTtcbiAgICByZXR1cm4gcGFyZW50Py5xdWVyeVNlbGVjdG9yKCdzYmItZGF0ZXBpY2tlcicpO1xuICB9XG5cbiAgcmV0dXJuIGZpbmRSZWZlcmVuY2VkRWxlbWVudDxTYmJEYXRlcGlja2VyRWxlbWVudD4odHJpZ2dlcik7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYmVmb3JlIG9yIGFmdGVyIGEgZ2l2ZW4gb25lLCBjb25zaWRlcmluZyB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQgYGRhdGVGaWx0ZXJgIHByb3BlcnR5LlxuICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAqIEBwYXJhbSBkZWx0YSBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkL3N1YnRyYWN0IGZyb20gdGhlIHN0YXJ0aW5nIG9uZS5cbiAqIEBwYXJhbSBkYXRlRmlsdGVyIFRoZSBkYXRlRmlsdGVyIGZ1bmN0aW9uIGZyb20gdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50LlxuICogQHBhcmFtIGRhdGVBZGFwdGVyIFRoZSBhZGFwdGVyIGNsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXZhaWxhYmxlRGF0ZShcbiAgZGF0ZTogRGF0ZSxcbiAgZGVsdGE6IG51bWJlcixcbiAgZGF0ZUZpbHRlcjogKChkYXRlOiBEYXRlKSA9PiBib29sZWFuKSB8IG51bGwsXG4gIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxEYXRlPixcbik6IERhdGUge1xuICBsZXQgYXZhaWxhYmxlRGF0ZSA9IGRhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhkYXRlLCBkZWx0YSk7XG5cbiAgaWYgKGRhdGVGaWx0ZXIpIHtcbiAgICB3aGlsZSAoIWRhdGVGaWx0ZXIoYXZhaWxhYmxlRGF0ZSkpIHtcbiAgICAgIGF2YWlsYWJsZURhdGUgPSBkYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoYXZhaWxhYmxlRGF0ZSwgZGVsdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhdmFpbGFibGVEYXRlO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGJlZm9yZSB0aGUgZ2l2ZW4gb25lLFxuICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1pbmAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAqIEBwYXJhbSBkYXRlRmlsdGVyIFRoZSBkYXRlRmlsdGVyIGZ1bmN0aW9uIGZyb20gdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50LlxuICogQHBhcmFtIGRhdGVBZGFwdGVyIFRoZSBhZGFwdGVyIGNsYXNzLlxuICogQHBhcmFtIG1pbiBUaGUgbWluaW11bSB2YWx1ZSB0byBjb25zaWRlciBpbiBjYWxjdWxhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUHJldmlvdXNBdmFpbGFibGVEYXRlKFxuICBkYXRlOiBEYXRlLFxuICBkYXRlRmlsdGVyOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCxcbiAgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+LFxuICBtaW46IHN0cmluZyB8IG51bWJlciB8IG51bGwsXG4pOiBEYXRlIHtcbiAgY29uc3QgcHJldmlvdXNEYXRlID0gZ2V0QXZhaWxhYmxlRGF0ZShkYXRlLCAtMSwgZGF0ZUZpbHRlciwgZGF0ZUFkYXB0ZXIpO1xuICBjb25zdCBkYXRlTWluID0gZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUobWluKTtcblxuICBpZiAoXG4gICAgIWRhdGVNaW4gfHxcbiAgICAoZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWluKSAmJiBkYXRlQWRhcHRlci5jb21wYXJlRGF0ZShwcmV2aW91c0RhdGUsIGRhdGVNaW4pID49IDApXG4gICkge1xuICAgIHJldHVybiBwcmV2aW91c0RhdGU7XG4gIH1cbiAgcmV0dXJuIGRhdGU7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYWZ0ZXIgdGhlIGdpdmVuIG9uZSxcbiAqIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHkgYW5kIGBtYXhgIHBhcmFtZXRlciAoZS5nLiBmcm9tIHRoZSBzZWxmLW5hbWVkIGlucHV0J3MgYXR0cmlidXRlKS5cbiAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlIGZvciBjYWxjdWxhdGlvbnMuXG4gKiBAcGFyYW0gZGF0ZUZpbHRlciBUaGUgZGF0ZUZpbHRlciBmdW5jdGlvbiBmcm9tIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudC5cbiAqIEBwYXJhbSBkYXRlQWRhcHRlciBUaGUgYWRhcHRlciBjbGFzcy5cbiAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gY29uc2lkZXIgaW4gY2FsY3VsYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE5leHRBdmFpbGFibGVEYXRlKFxuICBkYXRlOiBEYXRlLFxuICBkYXRlRmlsdGVyOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCxcbiAgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+LFxuICBtYXg6IHN0cmluZyB8IG51bWJlciB8IG51bGwsXG4pOiBEYXRlIHtcbiAgY29uc3QgbmV4dERhdGUgPSBnZXRBdmFpbGFibGVEYXRlKGRhdGUsIDEsIGRhdGVGaWx0ZXIsIGRhdGVBZGFwdGVyKTtcbiAgY29uc3QgZGF0ZU1heCA9IGRhdGVBZGFwdGVyLmRlc2VyaWFsaXplKG1heCk7XG5cbiAgaWYgKFxuICAgICFkYXRlTWF4IHx8XG4gICAgKGRhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1heCkgJiYgZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUobmV4dERhdGUsIGRhdGVNYXgpIDw9IDApXG4gICkge1xuICAgIHJldHVybiBuZXh0RGF0ZTtcbiAgfVxuICByZXR1cm4gZGF0ZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHByb3ZpZGVkIGRhdGUgaXMgYSB2YWxpZCBvbmUsIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHlcbiAqIGFuZCBgbWluYCBhbmQgYG1heGAgcGFyYW1ldGVycyAoZS5nLiBmcm9tIHRoZSBzZWxmLW5hbWVkIGlucHV0J3MgYXR0cmlidXRlcykuXG4gKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICogQHBhcmFtIGRhdGVGaWx0ZXIgVGhlIGRhdGVGaWx0ZXIgZnVuY3Rpb24gZnJvbSB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQuXG4gKiBAcGFyYW0gbWluIFRoZSBtaW5pbXVtIHZhbHVlIHRvIGNvbnNpZGVyIGluIGNhbGN1bGF0aW9ucy5cbiAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gY29uc2lkZXIgaW4gY2FsY3VsYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlQXZhaWxhYmxlKFxuICBkYXRlOiBEYXRlLFxuICBkYXRlRmlsdGVyOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCxcbiAgbWluOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBtYXg6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgLy8gVE9ETzogR2V0IGRhdGUgYWRhcHRlciBmcm9tIGNvbmZpZ1xuICBjb25zdCBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8RGF0ZT4gPSBkZWZhdWx0RGF0ZUFkYXB0ZXI7XG4gIGNvbnN0IGRhdGVNaW4gPSBkYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShtaW4pO1xuICBjb25zdCBkYXRlTWF4ID0gZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUobWF4KTtcblxuICBpZiAoXG4gICAgKGRhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1pbikgJiYgZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUoZGF0ZSwgZGF0ZU1pbiEpIDwgMCkgfHxcbiAgICAoZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWF4KSAmJiBkYXRlQWRhcHRlci5jb21wYXJlRGF0ZShkYXRlLCBkYXRlTWF4ISkgPiAwKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZGF0ZUZpbHRlciA/IGRhdGVGaWx0ZXIoZGF0ZSkgOiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkRXZlbnRGYWN0b3J5ID0gKCk6IEN1c3RvbUV2ZW50ID0+XG4gIG5ldyBDdXN0b21FdmVudCgnZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkJywge1xuICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgIGNvbXBvc2VkOiB0cnVlLFxuICB9KTtcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgbmF0aXZlIGlucHV0LCBpdCBkaXNwbGF5cyB0aGUgaW5wdXQncyB2YWx1ZSBhcyBhIGZvcm1hdHRlZCBkYXRlLlxuICpcbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENoYW5nZSAtIERlcHJlY2F0ZWQuIHVzZWQgZm9yIFJlYWN0LiBXaWxsIHByb2JhYmx5IGJlIHJlbW92ZWQgb25jZSBSZWFjdCAxOSBpcyBhdmFpbGFibGUuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBjaGFuZ2UgLSBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+fSBpbnB1dFVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGF0ZVBpY2tlclVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50Pn0gdmFsaWRhdGlvbkNoYW5nZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBpbnRlcm5hbCB2YWxpZGF0aW9uIHN0YXRlIGNoYW5nZXMuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItZGF0ZXBpY2tlcicpXG5leHBvcnQgY2xhc3MgU2JiRGF0ZXBpY2tlckVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGRpZENoYW5nZTogJ2RpZENoYW5nZScsXG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBpbnB1dFVwZGF0ZWQ6ICdpbnB1dFVwZGF0ZWQnLFxuICAgIGRhdGVQaWNrZXJVcGRhdGVkOiAnZGF0ZVBpY2tlclVwZGF0ZWQnLFxuICAgIHZhbGlkYXRpb25DaGFuZ2U6ICd2YWxpZGF0aW9uQ2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogSWYgc2V0IHRvIHRydWUsIHR3byBtb250aHMgYXJlIGRpc3BsYXllZC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgd2lkZSA9IGZhbHNlO1xuXG4gIC8qKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIG91dCBkYXRlcy4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGF0ZS1maWx0ZXInIH0pIHB1YmxpYyBkYXRlRmlsdGVyOiAoZGF0ZTogRGF0ZSB8IG51bGwpID0+IGJvb2xlYW4gPSAoKSA9PlxuICAgIHRydWU7XG5cbiAgLyoqIEEgZnVuY3Rpb24gdXNlZCB0byBwYXJzZSBzdHJpbmcgdmFsdWUgaW50byBkYXRlcy4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGF0ZS1wYXJzZXInIH0pIHB1YmxpYyBkYXRlUGFyc2VyPzogKHZhbHVlOiBzdHJpbmcpID0+IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIEEgZnVuY3Rpb24gdXNlZCB0byBmb3JtYXQgZGF0ZXMgaW50byB0aGUgcHJlZmVycmVkIHN0cmluZyBmb3JtYXQuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBmb3JtYXQ/OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuXG4gIC8qKiBSZWZlcmVuY2Ugb2YgdGhlIG5hdGl2ZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBpbnB1dD86IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBBIGNvbmZpZ3VyZWQgZGF0ZSB3aGljaCBhY3RzIGFzIHRoZSBjdXJyZW50IGRhdGUgaW5zdGVhZCBvZiB0aGUgcmVhbCBjdXJyZW50IGRhdGUuIFJlY29tbWVuZGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IG5vdyh2YWx1ZTogU2JiRGF0ZUxpa2UgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ub3cgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgfVxuICBwdWJsaWMgZ2V0IG5vdygpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbm93ID8/IHRoaXMuX2RhdGVBZGFwdGVyLnRvZGF5KCk7XG4gIH1cbiAgcHJpdmF0ZSBfbm93OiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIG9ubHkgdXNlZCBmb3IgUmVhY3QuIFdpbGwgcHJvYmFibHkgYmUgcmVtb3ZlZCBvbmNlIFJlYWN0IDE5IGlzIGF2YWlsYWJsZS5cbiAgICovXG4gIHByaXZhdGUgX2RpZENoYW5nZTogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuZGlkQ2hhbmdlLCB7XG4gICAgYnViYmxlczogdHJ1ZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICB9KTtcblxuICAvKiogTm90aWZpZXMgdGhhdCB0aGUgY29ubmVjdGVkIGlucHV0IGhhcyBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9jaGFuZ2U6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIodGhpcywgU2JiRGF0ZXBpY2tlckVsZW1lbnQuZXZlbnRzLmNoYW5nZSwge1xuICAgIGJ1YmJsZXM6IHRydWUsXG4gIH0pO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9pbnB1dFVwZGF0ZWQ6IEV2ZW50RW1pdHRlcjxTYmJJbnB1dFVwZGF0ZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuaW5wdXRVcGRhdGVkLFxuICAgIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9LFxuICApO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlclVwZGF0ZWQ6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuZGF0ZVBpY2tlclVwZGF0ZWQsXG4gICAge1xuICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGludGVybmFsIHZhbGlkYXRpb24gc3RhdGUgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFNiYlZhbGlkYXRpb25DaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiRGF0ZXBpY2tlckVsZW1lbnQuZXZlbnRzLnZhbGlkYXRpb25DaGFuZ2UsXG4gICk7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBnZXQgX2lucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudFN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgX2lucHV0RWxlbWVudCh2YWx1ZSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5faW5wdXRFbGVtZW50U3RhdGU7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50U3RhdGUgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWdpc3RlcklucHV0RWxlbWVudCh0aGlzLl9pbnB1dEVsZW1lbnRTdGF0ZSwgb2xkVmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5wdXRFbGVtZW50U3RhdGU6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9maW5kSW5wdXQobmV3VmFsdWU6IHN0cmluZyB8IEhUTUxFbGVtZW50LCBvbGRWYWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQgPSBmaW5kSW5wdXQodGhpcywgdGhpcy5pbnB1dCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX3JlZ2lzdGVySW5wdXRFbGVtZW50KFxuICAgIG5ld1ZhbHVlOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCxcbiAgICBvbGRWYWx1ZTogSFRNTElucHV0RWxlbWVudCB8IG51bGwsXG4gICk6IHZvaWQge1xuICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAgIGlmICghdGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5wdXRPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5faW5wdXRPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2lucHV0RWxlbWVudCwge1xuICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnZGlzYWJsZWQnLCAncmVhZG9ubHknLCAnbWluJywgJ21heCcsICd2YWx1ZSddLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC50eXBlID0gJ3RleHQnO1xuXG4gICAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudC5wbGFjZWhvbGRlcikge1xuICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQucGxhY2Vob2xkZXIgPSBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2NoYW5nZScsXG4gICAgICAgIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoIShldmVudCBpbnN0YW5jZW9mIEN1c3RvbUV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWVDaGFuZ2VkKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEdldHMgdGhlIGlucHV0IHZhbHVlIHdpdGggdGhlIGNvcnJlY3QgZGF0ZSBmb3JtYXQuICovXG4gIHB1YmxpYyBnZXRWYWx1ZUFzRGF0ZSgpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50ICYmIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlKHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiogU2V0IHRoZSBpbnB1dCB2YWx1ZSB0byB0aGUgY29ycmVjdGx5IGZvcm1hdHRlZCB2YWx1ZS4gKi9cbiAgcHVibGljIHNldFZhbHVlQXNEYXRlKGRhdGU6IFNiYkRhdGVMaWtlKTogdm9pZCB7XG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9IGRhdGUgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZSA6IG5ldyBEYXRlKGRhdGUpO1xuICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2Zvcm1hdEFuZFVwZGF0ZVZhbHVlKHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSwgcGFyc2VkRGF0ZSk7XG4gICAgICAvKiBFbWl0IGJsdXIgZXZlbnQgd2hlbiB2YWx1ZSBpcyBjaGFuZ2VkIHByb2dyYW1tYXRpY2FsbHkgdG8gbm90aWZ5XG4gICAgICBmcmFtZXdvcmtzIHRoYXQgcmVseSBvbiB0aGF0IGV2ZW50IHRvIHVwZGF0ZSBmb3JtIHN0YXR1cy4gKi9cbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmx1cicsIHsgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogV2hldGhlciBhIGN1c3RvbSBub3cgaXMgY29uZmlndXJlZC5cbiAgICovXG4gIHB1YmxpYyBoYXNDdXN0b21Ob3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fbm93O1xuICB9XG5cbiAgcHJpdmF0ZSBfb25JbnB1dFByb3BlcnRpZXNDaGFuZ2UobXV0YXRpb25zTGlzdD86IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dFVwZGF0ZWQuZW1pdCh7XG4gICAgICBkaXNhYmxlZDogdGhpcy5faW5wdXRFbGVtZW50Py5kaXNhYmxlZCxcbiAgICAgIHJlYWRvbmx5OiB0aGlzLl9pbnB1dEVsZW1lbnQ/LnJlYWRPbmx5LFxuICAgICAgbWluOiB0aGlzLl9pbnB1dEVsZW1lbnQ/Lm1pbixcbiAgICAgIG1heDogdGhpcy5faW5wdXRFbGVtZW50Py5tYXgsXG4gICAgfSk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQgJiZcbiAgICAgIG11dGF0aW9uc0xpc3QgJiZcbiAgICAgIEFycmF5LmZyb20obXV0YXRpb25zTGlzdCkuc29tZSgoZSkgPT4gZS5hdHRyaWJ1dGVOYW1lID09PSAndmFsdWUnKVxuICAgICkge1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnZhbHVlID0gdGhpcy5fZ2V0VmFsaWRWYWx1ZSh0aGlzLl9pbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpISk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG5cbiAgcHJpdmF0ZSBfaW5wdXRPYnNlcnZlciA9IG5ldyBBZ25vc3RpY011dGF0aW9uT2JzZXJ2ZXIodGhpcy5fb25JbnB1dFByb3BlcnRpZXNDaGFuZ2UuYmluZCh0aGlzKSk7XG5cbiAgcHJpdmF0ZSBfZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+ID1cbiAgICByZWFkQ29uZmlnKCkuZGF0ZXRpbWU/LmRhdGVBZGFwdGVyID8/IGRlZmF1bHREYXRlQWRhcHRlcjtcblxuICBwcml2YXRlIF9hYm9ydCA9IG5ldyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKS53aXRoSGFuZGxlcigoKSA9PiB7XG4gICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnBsYWNlaG9sZGVyID0gaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XTtcbiAgICAgIGNvbnN0IHZhbHVlQXNEYXRlID0gdGhpcy5nZXRWYWx1ZUFzRGF0ZSgpO1xuICAgICAgaWYgKHZhbHVlQXNEYXRlKSB7XG4gICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMuX2Zvcm1hdCh2YWx1ZUFzRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBjb25zdCBzaWduYWwgPSB0aGlzLl9hYm9ydC5zaWduYWw7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWQnLCAoKSA9PiB0aGlzLl9vbklucHV0UHJvcGVydGllc0NoYW5nZSgpLCB7XG4gICAgICBzaWduYWwsXG4gICAgfSk7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50ID0gZmluZElucHV0KHRoaXMsIHRoaXMuaW5wdXQpO1xuICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMuX2dldFZhbGlkVmFsdWUodGhpcy5faW5wdXRFbGVtZW50LnZhbHVlKTtcbiAgICAgIHRoaXMuX2lucHV0VXBkYXRlZC5lbWl0KHtcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuX2lucHV0RWxlbWVudC5kaXNhYmxlZCxcbiAgICAgICAgcmVhZG9ubHk6IHRoaXMuX2lucHV0RWxlbWVudC5yZWFkT25seSxcbiAgICAgICAgbWluOiB0aGlzLl9pbnB1dEVsZW1lbnQubWluLFxuICAgICAgICBtYXg6IHRoaXMuX2lucHV0RWxlbWVudC5tYXgsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2lucHV0JykpIHtcbiAgICAgIHRoaXMuX2ZpbmRJbnB1dCh0aGlzLmlucHV0ISwgY2hhbmdlZFByb3BlcnRpZXMuZ2V0KCdpbnB1dCcpISk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnd2lkZScpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2RhdGVGaWx0ZXInKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdub3cnKVxuICAgICkge1xuICAgICAgdGhpcy5fZGF0ZVBpY2tlclVwZGF0ZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9zZXRBcmlhTGl2ZU1lc3NhZ2UodGhpcy5nZXRWYWx1ZUFzRGF0ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlQW5kRm9ybWF0VmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZCA9IHRoaXMuX3BhcnNlKHZhbHVlKTtcbiAgICByZXR1cm4gIXRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZCkgPyB2YWx1ZSA6IHRoaXMuX2Zvcm1hdChkISk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVBbmRDb21wb3NlRGF0ZSh2YWx1ZTogU2JiRGF0ZUxpa2UpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1hdChkYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlQ2hhbmdlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLl9mb3JtYXRBbmRVcGRhdGVWYWx1ZSh2YWx1ZSwgdGhpcy5fcGFyc2UodmFsdWUpKTtcbiAgfVxuXG4gIC8qKiBBcHBsaWVzIHRoZSBjb3JyZWN0IGZvcm1hdCB0byB2YWx1ZXMgYW5kIHRyaWdnZXJzIGV2ZW50IGRpc3BhdGNoLiAqL1xuICBwcml2YXRlIF9mb3JtYXRBbmRVcGRhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nLCB2YWx1ZUFzRGF0ZTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQudmFsdWUgPSAhdGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZCh2YWx1ZUFzRGF0ZSlcbiAgICAgICAgPyB2YWx1ZVxuICAgICAgICA6IHRoaXMuX2Zvcm1hdCh2YWx1ZUFzRGF0ZSEpO1xuXG4gICAgICBjb25zdCBpc0VtcHR5T3JWYWxpZCA9XG4gICAgICAgICF2YWx1ZSB8fFxuICAgICAgICAoISF2YWx1ZUFzRGF0ZSAmJlxuICAgICAgICAgIGlzRGF0ZUF2YWlsYWJsZShcbiAgICAgICAgICAgIHZhbHVlQXNEYXRlLFxuICAgICAgICAgICAgdGhpcy5kYXRlRmlsdGVyLFxuICAgICAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50Py5taW4sXG4gICAgICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQ/Lm1heCxcbiAgICAgICAgICApKTtcbiAgICAgIGNvbnN0IHdhc1ZhbGlkID0gIXRoaXMuX2lucHV0RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnKTtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnLCAhaXNFbXB0eU9yVmFsaWQpO1xuICAgICAgaWYgKHdhc1ZhbGlkICE9PSBpc0VtcHR5T3JWYWxpZCkge1xuICAgICAgICB0aGlzLl92YWxpZGF0aW9uQ2hhbmdlLmVtaXQoeyB2YWxpZDogaXNFbXB0eU9yVmFsaWQgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9lbWl0Q2hhbmdlKHZhbHVlQXNEYXRlISk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEVtaXRzIHRoZSBjaGFuZ2UgZXZlbnQuICovXG4gIHByaXZhdGUgX2VtaXRDaGFuZ2UoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZShkYXRlKTtcblxuICAgIHRoaXMuX2NoYW5nZS5lbWl0KCk7XG4gICAgdGhpcy5fZGlkQ2hhbmdlLmVtaXQoKTtcblxuICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VmFsaWRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsID0gdmFsdWUubWF0Y2goRk9STUFUX0RBVEUpO1xuXG4gICAgaWYgKG1hdGNoPy5pbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlQW5kRm9ybWF0VmFsdWUodmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoTnVtYmVyLmlzSW50ZWdlcigrdmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY3JlYXRlQW5kQ29tcG9zZURhdGUoK3ZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQobmV3IERhdGUodmFsdWUpKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUFuZENvbXBvc2VEYXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBhcnNlciA/IHRoaXMuZGF0ZVBhcnNlcih2YWx1ZSkgOiB0aGlzLl9kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZSwgdGhpcy5ub3cpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdCA/IHRoaXMuZm9ybWF0KGRhdGUpIDogdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KGRhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0QXJpYUxpdmVNZXNzYWdlKGRhdGU/OiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgYXJpYUxpdmVGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChgJHt0aGlzLl9sYW5ndWFnZS5jdXJyZW50fS1DSGAsIHtcbiAgICAgIHdlZWtkYXk6ICdsb25nJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRhdGVGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZGUtQ0gnLCB7XG4gICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50OiBIVE1MUGFyYWdyYXBoRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy48SFRNTFBhcmFncmFwaEVsZW1lbnQ+KCcjc3RhdHVzLWNvbnRhaW5lcicpO1xuXG4gICAgaWYgKGNvbnRhaW5lckVsZW1lbnQpIHtcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuaW5uZXJUZXh0ID0gZGF0ZVxuICAgICAgICA/IGAke2kxOG5EYXRlQ2hhbmdlZFRvW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2FyaWFMaXZlRm9ybWF0dGVyLmZvcm1hdChcbiAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgKX0sICR7ZGF0ZUZvcm1hdHRlci5mb3JtYXQoZGF0ZSl9YFxuICAgICAgICA6ICcnO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxwIGlkPVwic3RhdHVzLWNvbnRhaW5lclwiIHJvbGU9XCJzdGF0dXNcIj48L3A+YDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXInOiBTYmJEYXRlcGlja2VyRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIGlucHV0VXBkYXRlZDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD47XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxNQUFNLGNBQ0o7QUFlYyxTQUFBLGNBQ2QsU0FDQSxTQUN5Qzs7QUFDekMsTUFBSSxDQUFDLFNBQVM7QUFDTixVQUFBLFVBQVMsYUFBUSxZQUFSLGlDQUFrQjtBQUMxQixXQUFBLGlDQUFRLGNBQWM7QUFBQSxFQUMvQjtBQUVBLFNBQU8sc0JBQTRDLE9BQU87QUFDNUQ7QUFTTyxTQUFTLGlCQUNkLE1BQ0EsT0FDQSxZQUNBLGFBQ007QUFDTixNQUFJLGdCQUFnQixZQUFZLGdCQUFnQixNQUFNLEtBQUs7QUFFM0QsTUFBSSxZQUFZO0FBQ1AsV0FBQSxDQUFDLFdBQVcsYUFBYSxHQUFHO0FBQ2pCLHNCQUFBLFlBQVksZ0JBQWdCLGVBQWUsS0FBSztBQUFBLElBQ2xFO0FBQUEsRUFDRjtBQUVPLFNBQUE7QUFDVDtBQVVPLFNBQVMsMEJBQ2QsTUFDQSxZQUNBLGFBQ0EsS0FDTTtBQUNOLFFBQU0sZUFBZSxpQkFBaUIsTUFBTSxJQUFJLFlBQVksV0FBVztBQUNqRSxRQUFBLFVBQVUsWUFBWSxZQUFZLEdBQUc7QUFHekMsTUFBQSxDQUFDLFdBQ0EsWUFBWSxRQUFRLE9BQU8sS0FBSyxZQUFZLFlB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
386
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlnLmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyB0eXBlIERhdGVBZGFwdGVyLCBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB7IGZpbmRJbnB1dCwgZmluZFJlZmVyZW5jZWRFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGF0ZUNoYW5nZWRUbywgaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlciB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVMaWtlLCBTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgQWdub3N0aWNNdXRhdGlvbk9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlcGlja2VyQnV0dG9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLXRvZ2dsZS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXIuc2Nzcz9saXQmaW5saW5lJztcblxuY29uc3QgRk9STUFUX0RBVEUgPVxuICAvKF4wP1sxLTldP3xbMTJdP1swLTldP3wzP1swMV0/KVsuLFxcXFwvXFwtXFxzXSgwP1sxLTldP3wxP1swLTJdPyk/Wy4sXFxcXC9cXC1cXHNdKFxcZHsxLDR9JCk/LztcblxuZXhwb3J0IGludGVyZmFjZSBTYmJJbnB1dFVwZGF0ZUV2ZW50IHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIG1pbj86IHN0cmluZyB8IG51bWJlcjtcbiAgbWF4Pzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudCwgYSBTYmJEYXRlcGlja2VyTmV4dERheUVsZW1lbnQgb3IgYSBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudCBjb21wb25lbnQsXG4gKiBpdCByZXR1cm5zIHRoZSByZWxhdGVkIFNiYkRhdGVwaWNrZXJFbGVtZW50IHJlZmVyZW5jZSwgaWYgZXhpc3RzLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgcG90ZW50aWFsbHkgY29ubmVjdGVkIHRvIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudC5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBpZCBvciB0aGUgcmVmZXJlbmNlIG9mIHRoZSBTYmJEYXRlUGlja2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0ZVBpY2tlcihcbiAgZWxlbWVudDogU2JiRGF0ZXBpY2tlckJ1dHRvbiB8IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50LFxuICB0cmlnZ2VyPzogc3RyaW5nIHwgSFRNTEVsZW1lbnQsXG4pOiBTYmJEYXRlcGlja2VyRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQge1xuICBpZiAoIXRyaWdnZXIpIHtcbiAgICBjb25zdCBwYXJlbnQgPSBlbGVtZW50LmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKTtcbiAgICByZXR1cm4gcGFyZW50Py5xdWVyeVNlbGVjdG9yKCdzYmItZGF0ZXBpY2tlcicpO1xuICB9XG5cbiAgcmV0dXJuIGZpbmRSZWZlcmVuY2VkRWxlbWVudDxTYmJEYXRlcGlja2VyRWxlbWVudD4odHJpZ2dlcik7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYmVmb3JlIG9yIGFmdGVyIGEgZ2l2ZW4gb25lLCBjb25zaWRlcmluZyB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQgYGRhdGVGaWx0ZXJgIHByb3BlcnR5LlxuICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAqIEBwYXJhbSBkZWx0YSBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkL3N1YnRyYWN0IGZyb20gdGhlIHN0YXJ0aW5nIG9uZS5cbiAqIEBwYXJhbSBkYXRlRmlsdGVyIFRoZSBkYXRlRmlsdGVyIGZ1bmN0aW9uIGZyb20gdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50LlxuICogQHBhcmFtIGRhdGVBZGFwdGVyIFRoZSBhZGFwdGVyIGNsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXZhaWxhYmxlRGF0ZShcbiAgZGF0ZTogRGF0ZSxcbiAgZGVsdGE6IG51bWJlcixcbiAgZGF0ZUZpbHRlcjogKChkYXRlOiBEYXRlKSA9PiBib29sZWFuKSB8IG51bGwsXG4gIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxEYXRlPixcbik6IERhdGUge1xuICBsZXQgYXZhaWxhYmxlRGF0ZSA9IGRhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhkYXRlLCBkZWx0YSk7XG5cbiAgaWYgKGRhdGVGaWx0ZXIpIHtcbiAgICB3aGlsZSAoIWRhdGVGaWx0ZXIoYXZhaWxhYmxlRGF0ZSkpIHtcbiAgICAgIGF2YWlsYWJsZURhdGUgPSBkYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoYXZhaWxhYmxlRGF0ZSwgZGVsdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhdmFpbGFibGVEYXRlO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGJlZm9yZSB0aGUgZ2l2ZW4gb25lLFxuICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1pbmAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAqIEBwYXJhbSBkYXRlRmlsdGVyIFRoZSBkYXRlRmlsdGVyIGZ1bmN0aW9uIGZyb20gdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50LlxuICogQHBhcmFtIGRhdGVBZGFwdGVyIFRoZSBhZGFwdGVyIGNsYXNzLlxuICogQHBhcmFtIG1pbiBUaGUgbWluaW11bSB2YWx1ZSB0byBjb25zaWRlciBpbiBjYWxjdWxhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUHJldmlvdXNBdmFpbGFibGVEYXRlKFxuICBkYXRlOiBEYXRlLFxuICBkYXRlRmlsdGVyOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCxcbiAgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+LFxuICBtaW46IHN0cmluZyB8IG51bWJlciB8IG51bGwsXG4pOiBEYXRlIHtcbiAgY29uc3QgcHJldmlvdXNEYXRlID0gZ2V0QXZhaWxhYmxlRGF0ZShkYXRlLCAtMSwgZGF0ZUZpbHRlciwgZGF0ZUFkYXB0ZXIpO1xuICBjb25zdCBkYXRlTWluID0gZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUobWluKTtcblxuICBpZiAoXG4gICAgIWRhdGVNaW4gfHxcbiAgICAoZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWluKSAmJiBkYXRlQWRhcHRlci5jb21wYXJlRGF0ZShwcmV2aW91c0RhdGUsIGRhdGVNaW4pID49IDApXG4gICkge1xuICAgIHJldHVybiBwcmV2aW91c0RhdGU7XG4gIH1cbiAgcmV0dXJuIGRhdGU7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYWZ0ZXIgdGhlIGdpdmVuIG9uZSxcbiAqIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHkgYW5kIGBtYXhgIHBhcmFtZXRlciAoZS5nLiBmcm9tIHRoZSBzZWxmLW5hbWVkIGlucHV0J3MgYXR0cmlidXRlKS5cbiAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlIGZvciBjYWxjdWxhdGlvbnMuXG4gKiBAcGFyYW0gZGF0ZUZpbHRlciBUaGUgZGF0ZUZpbHRlciBmdW5jdGlvbiBmcm9tIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudC5cbiAqIEBwYXJhbSBkYXRlQWRhcHRlciBUaGUgYWRhcHRlciBjbGFzcy5cbiAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gY29uc2lkZXIgaW4gY2FsY3VsYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE5leHRBdmFpbGFibGVEYXRlKFxuICBkYXRlOiBEYXRlLFxuICBkYXRlRmlsdGVyOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCxcbiAgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+LFxuICBtYXg6IHN0cmluZyB8IG51bWJlciB8IG51bGwsXG4pOiBEYXRlIHtcbiAgY29uc3QgbmV4dERhdGUgPSBnZXRBdmFpbGFibGVEYXRlKGRhdGUsIDEsIGRhdGVGaWx0ZXIsIGRhdGVBZGFwdGVyKTtcbiAgY29uc3QgZGF0ZU1heCA9IGRhdGVBZGFwdGVyLmRlc2VyaWFsaXplKG1heCk7XG5cbiAgaWYgKFxuICAgICFkYXRlTWF4IHx8XG4gICAgKGRhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1heCkgJiYgZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUobmV4dERhdGUsIGRhdGVNYXgpIDw9IDApXG4gICkge1xuICAgIHJldHVybiBuZXh0RGF0ZTtcbiAgfVxuICByZXR1cm4gZGF0ZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHByb3ZpZGVkIGRhdGUgaXMgYSB2YWxpZCBvbmUsIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHlcbiAqIGFuZCBgbWluYCBhbmQgYG1heGAgcGFyYW1ldGVycyAoZS5nLiBmcm9tIHRoZSBzZWxmLW5hbWVkIGlucHV0J3MgYXR0cmlidXRlcykuXG4gKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICogQHBhcmFtIGRhdGVGaWx0ZXIgVGhlIGRhdGVGaWx0ZXIgZnVuY3Rpb24gZnJvbSB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQuXG4gKiBAcGFyYW0gbWluIFRoZSBtaW5pbXVtIHZhbHVlIHRvIGNvbnNpZGVyIGluIGNhbGN1bGF0aW9ucy5cbiAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gY29uc2lkZXIgaW4gY2FsY3VsYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlQXZhaWxhYmxlKFxuICBkYXRlOiBEYXRlLFxuICBkYXRlRmlsdGVyOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCxcbiAgbWluOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBtYXg6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgLy8gVE9ETzogR2V0IGRhdGUgYWRhcHRlciBmcm9tIGNvbmZpZ1xuICBjb25zdCBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8RGF0ZT4gPSBkZWZhdWx0RGF0ZUFkYXB0ZXI7XG4gIGNvbnN0IGRhdGVNaW4gPSBkYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShtaW4pO1xuICBjb25zdCBkYXRlTWF4ID0gZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUobWF4KTtcblxuICBpZiAoXG4gICAgKGRhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1pbikgJiYgZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUoZGF0ZSwgZGF0ZU1pbiEpIDwgMCkgfHxcbiAgICAoZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWF4KSAmJiBkYXRlQWRhcHRlci5jb21wYXJlRGF0ZShkYXRlLCBkYXRlTWF4ISkgPiAwKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZGF0ZUZpbHRlciA/IGRhdGVGaWx0ZXIoZGF0ZSkgOiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkRXZlbnRGYWN0b3J5ID0gKCk6IEN1c3RvbUV2ZW50ID0+XG4gIG5ldyBDdXN0b21FdmVudCgnZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkJywge1xuICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgIGNvbXBvc2VkOiB0cnVlLFxuICB9KTtcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgbmF0aXZlIGlucHV0LCBpdCBkaXNwbGF5cyB0aGUgaW5wdXQncyB2YWx1ZSBhcyBhIGZvcm1hdHRlZCBkYXRlLlxuICpcbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENoYW5nZSAtIERlcHJlY2F0ZWQuIHVzZWQgZm9yIFJlYWN0LiBXaWxsIHByb2JhYmx5IGJlIHJlbW92ZWQgb25jZSBSZWFjdCAxOSBpcyBhdmFpbGFibGUuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBjaGFuZ2UgLSBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+fSBpbnB1dFVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGF0ZVBpY2tlclVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50Pn0gdmFsaWRhdGlvbkNoYW5nZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBpbnRlcm5hbCB2YWxpZGF0aW9uIHN0YXRlIGNoYW5nZXMuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItZGF0ZXBpY2tlcicpXG5leHBvcnQgY2xhc3MgU2JiRGF0ZXBpY2tlckVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGRpZENoYW5nZTogJ2RpZENoYW5nZScsXG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBpbnB1dFVwZGF0ZWQ6ICdpbnB1dFVwZGF0ZWQnLFxuICAgIGRhdGVQaWNrZXJVcGRhdGVkOiAnZGF0ZVBpY2tlclVwZGF0ZWQnLFxuICAgIHZhbGlkYXRpb25DaGFuZ2U6ICd2YWxpZGF0aW9uQ2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogSWYgc2V0IHRvIHRydWUsIHR3byBtb250aHMgYXJlIGRpc3BsYXllZC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgd2lkZSA9IGZhbHNlO1xuXG4gIC8qKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIG91dCBkYXRlcy4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGF0ZS1maWx0ZXInIH0pIHB1YmxpYyBkYXRlRmlsdGVyOiAoZGF0ZTogRGF0ZSB8IG51bGwpID0+IGJvb2xlYW4gPSAoKSA9PlxuICAgIHRydWU7XG5cbiAgLyoqIEEgZnVuY3Rpb24gdXNlZCB0byBwYXJzZSBzdHJpbmcgdmFsdWUgaW50byBkYXRlcy4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGF0ZS1wYXJzZXInIH0pIHB1YmxpYyBkYXRlUGFyc2VyPzogKHZhbHVlOiBzdHJpbmcpID0+IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIEEgZnVuY3Rpb24gdXNlZCB0byBmb3JtYXQgZGF0ZXMgaW50byB0aGUgcHJlZmVycmVkIHN0cmluZyBmb3JtYXQuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBmb3JtYXQ/OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuXG4gIC8qKiBSZWZlcmVuY2Ugb2YgdGhlIG5hdGl2ZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBpbnB1dD86IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBBIGNvbmZpZ3VyZWQgZGF0ZSB3aGljaCBhY3RzIGFzIHRoZSBjdXJyZW50IGRhdGUgaW5zdGVhZCBvZiB0aGUgcmVhbCBjdXJyZW50IGRhdGUuIFJlY29tbWVuZGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IG5vdyh2YWx1ZTogU2JiRGF0ZUxpa2UgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ub3cgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgfVxuICBwdWJsaWMgZ2V0IG5vdygpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbm93ID8/IHRoaXMuX2RhdGVBZGFwdGVyLnRvZGF5KCk7XG4gIH1cbiAgcHJpdmF0ZSBfbm93OiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIG9ubHkgdXNlZCBmb3IgUmVhY3QuIFdpbGwgcHJvYmFibHkgYmUgcmVtb3ZlZCBvbmNlIFJlYWN0IDE5IGlzIGF2YWlsYWJsZS5cbiAgICovXG4gIHByaXZhdGUgX2RpZENoYW5nZTogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuZGlkQ2hhbmdlLCB7XG4gICAgYnViYmxlczogdHJ1ZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICB9KTtcblxuICAvKiogTm90aWZpZXMgdGhhdCB0aGUgY29ubmVjdGVkIGlucHV0IGhhcyBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9jaGFuZ2U6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIodGhpcywgU2JiRGF0ZXBpY2tlckVsZW1lbnQuZXZlbnRzLmNoYW5nZSwge1xuICAgIGJ1YmJsZXM6IHRydWUsXG4gIH0pO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9pbnB1dFVwZGF0ZWQ6IEV2ZW50RW1pdHRlcjxTYmJJbnB1dFVwZGF0ZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuaW5wdXRVcGRhdGVkLFxuICAgIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9LFxuICApO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlclVwZGF0ZWQ6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuZGF0ZVBpY2tlclVwZGF0ZWQsXG4gICAge1xuICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGludGVybmFsIHZhbGlkYXRpb24gc3RhdGUgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFNiYlZhbGlkYXRpb25DaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiRGF0ZXBpY2tlckVsZW1lbnQuZXZlbnRzLnZhbGlkYXRpb25DaGFuZ2UsXG4gICk7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBnZXQgX2lucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudFN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgX2lucHV0RWxlbWVudCh2YWx1ZSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5faW5wdXRFbGVtZW50U3RhdGU7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50U3RhdGUgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWdpc3RlcklucHV0RWxlbWVudCh0aGlzLl9pbnB1dEVsZW1lbnRTdGF0ZSwgb2xkVmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5wdXRFbGVtZW50U3RhdGU6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9maW5kSW5wdXQobmV3VmFsdWU6IHN0cmluZyB8IEhUTUxFbGVtZW50LCBvbGRWYWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQgPSBmaW5kSW5wdXQodGhpcywgdGhpcy5pbnB1dCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX3JlZ2lzdGVySW5wdXRFbGVtZW50KFxuICAgIG5ld1ZhbHVlOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCxcbiAgICBvbGRWYWx1ZTogSFRNTElucHV0RWxlbWVudCB8IG51bGwsXG4gICk6IHZvaWQge1xuICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAgIGlmICghdGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5wdXRPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5faW5wdXRPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2lucHV0RWxlbWVudCwge1xuICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnZGlzYWJsZWQnLCAncmVhZG9ubHknLCAnbWluJywgJ21heCcsICd2YWx1ZSddLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC50eXBlID0gJ3RleHQnO1xuXG4gICAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudC5wbGFjZWhvbGRlcikge1xuICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQucGxhY2Vob2xkZXIgPSBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2NoYW5nZScsXG4gICAgICAgIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoIShldmVudCBpbnN0YW5jZW9mIEN1c3RvbUV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWVDaGFuZ2VkKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEdldHMgdGhlIGlucHV0IHZhbHVlIHdpdGggdGhlIGNvcnJlY3QgZGF0ZSBmb3JtYXQuICovXG4gIHB1YmxpYyBnZXRWYWx1ZUFzRGF0ZSgpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50ICYmIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlKHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiogU2V0IHRoZSBpbnB1dCB2YWx1ZSB0byB0aGUgY29ycmVjdGx5IGZvcm1hdHRlZCB2YWx1ZS4gKi9cbiAgcHVibGljIHNldFZhbHVlQXNEYXRlKGRhdGU6IFNiYkRhdGVMaWtlKTogdm9pZCB7XG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9IGRhdGUgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZSA6IG5ldyBEYXRlKGRhdGUpO1xuICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2Zvcm1hdEFuZFVwZGF0ZVZhbHVlKHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSwgcGFyc2VkRGF0ZSk7XG4gICAgICAvKiBFbWl0IGJsdXIgZXZlbnQgd2hlbiB2YWx1ZSBpcyBjaGFuZ2VkIHByb2dyYW1tYXRpY2FsbHkgdG8gbm90aWZ5XG4gICAgICBmcmFtZXdvcmtzIHRoYXQgcmVseSBvbiB0aGF0IGV2ZW50IHRvIHVwZGF0ZSBmb3JtIHN0YXR1cy4gKi9cbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmx1cicsIHsgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogV2hldGhlciBhIGN1c3RvbSBub3cgaXMgY29uZmlndXJlZC5cbiAgICovXG4gIHB1YmxpYyBoYXNDdXN0b21Ob3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fbm93O1xuICB9XG5cbiAgcHJpdmF0ZSBfb25JbnB1dFByb3BlcnRpZXNDaGFuZ2UobXV0YXRpb25zTGlzdD86IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dFVwZGF0ZWQuZW1pdCh7XG4gICAgICBkaXNhYmxlZDogdGhpcy5faW5wdXRFbGVtZW50Py5kaXNhYmxlZCxcbiAgICAgIHJlYWRvbmx5OiB0aGlzLl9pbnB1dEVsZW1lbnQ/LnJlYWRPbmx5LFxuICAgICAgbWluOiB0aGlzLl9pbnB1dEVsZW1lbnQ/Lm1pbixcbiAgICAgIG1heDogdGhpcy5faW5wdXRFbGVtZW50Py5tYXgsXG4gICAgfSk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQgJiZcbiAgICAgIG11dGF0aW9uc0xpc3QgJiZcbiAgICAgIEFycmF5LmZyb20obXV0YXRpb25zTGlzdCkuc29tZSgoZSkgPT4gZS5hdHRyaWJ1dGVOYW1lID09PSAndmFsdWUnKVxuICAgICkge1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnZhbHVlID0gdGhpcy5fZ2V0VmFsaWRWYWx1ZSh0aGlzLl9pbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpISk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG5cbiAgcHJpdmF0ZSBfaW5wdXRPYnNlcnZlciA9IG5ldyBBZ25vc3RpY011dGF0aW9uT2JzZXJ2ZXIodGhpcy5fb25JbnB1dFByb3BlcnRpZXNDaGFuZ2UuYmluZCh0aGlzKSk7XG5cbiAgcHJpdmF0ZSBfZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+ID1cbiAgICByZWFkQ29uZmlnKCkuZGF0ZXRpbWU/LmRhdGVBZGFwdGVyID8/IGRlZmF1bHREYXRlQWRhcHRlcjtcblxuICBwcml2YXRlIF9hYm9ydCA9IG5ldyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKS53aXRoSGFuZGxlcigoKSA9PiB7XG4gICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnBsYWNlaG9sZGVyID0gaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XTtcbiAgICAgIGNvbnN0IHZhbHVlQXNEYXRlID0gdGhpcy5nZXRWYWx1ZUFzRGF0ZSgpO1xuICAgICAgaWYgKHZhbHVlQXNEYXRlKSB7XG4gICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMuX2Zvcm1hdCh2YWx1ZUFzRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBjb25zdCBzaWduYWwgPSB0aGlzLl9hYm9ydC5zaWduYWw7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWQnLCAoKSA9PiB0aGlzLl9vbklucHV0UHJvcGVydGllc0NoYW5nZSgpLCB7XG4gICAgICBzaWduYWwsXG4gICAgfSk7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50ID0gZmluZElucHV0KHRoaXMsIHRoaXMuaW5wdXQpO1xuICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMuX2dldFZhbGlkVmFsdWUodGhpcy5faW5wdXRFbGVtZW50LnZhbHVlKTtcbiAgICAgIHRoaXMuX2lucHV0VXBkYXRlZC5lbWl0KHtcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuX2lucHV0RWxlbWVudC5kaXNhYmxlZCxcbiAgICAgICAgcmVhZG9ubHk6IHRoaXMuX2lucHV0RWxlbWVudC5yZWFkT25seSxcbiAgICAgICAgbWluOiB0aGlzLl9pbnB1dEVsZW1lbnQubWluLFxuICAgICAgICBtYXg6IHRoaXMuX2lucHV0RWxlbWVudC5tYXgsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2lucHV0JykpIHtcbiAgICAgIHRoaXMuX2ZpbmRJbnB1dCh0aGlzLmlucHV0ISwgY2hhbmdlZFByb3BlcnRpZXMuZ2V0KCdpbnB1dCcpISk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnd2lkZScpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2RhdGVGaWx0ZXInKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdub3cnKVxuICAgICkge1xuICAgICAgdGhpcy5fZGF0ZVBpY2tlclVwZGF0ZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9zZXRBcmlhTGl2ZU1lc3NhZ2UodGhpcy5nZXRWYWx1ZUFzRGF0ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlQW5kRm9ybWF0VmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZCA9IHRoaXMuX3BhcnNlKHZhbHVlKTtcbiAgICByZXR1cm4gIXRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZCkgPyB2YWx1ZSA6IHRoaXMuX2Zvcm1hdChkISk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVBbmRDb21wb3NlRGF0ZSh2YWx1ZTogU2JiRGF0ZUxpa2UpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1hdChkYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlQ2hhbmdlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLl9mb3JtYXRBbmRVcGRhdGVWYWx1ZSh2YWx1ZSwgdGhpcy5fcGFyc2UodmFsdWUpKTtcbiAgfVxuXG4gIC8qKiBBcHBsaWVzIHRoZSBjb3JyZWN0IGZvcm1hdCB0byB2YWx1ZXMgYW5kIHRyaWdnZXJzIGV2ZW50IGRpc3BhdGNoLiAqL1xuICBwcml2YXRlIF9mb3JtYXRBbmRVcGRhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nLCB2YWx1ZUFzRGF0ZTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQudmFsdWUgPSAhdGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZCh2YWx1ZUFzRGF0ZSlcbiAgICAgICAgPyB2YWx1ZVxuICAgICAgICA6IHRoaXMuX2Zvcm1hdCh2YWx1ZUFzRGF0ZSEpO1xuXG4gICAgICBjb25zdCBpc0VtcHR5T3JWYWxpZCA9XG4gICAgICAgICF2YWx1ZSB8fFxuICAgICAgICAoISF2YWx1ZUFzRGF0ZSAmJlxuICAgICAgICAgIGlzRGF0ZUF2YWlsYWJsZShcbiAgICAgICAgICAgIHZhbHVlQXNEYXRlLFxuICAgICAgICAgICAgdGhpcy5kYXRlRmlsdGVyLFxuICAgICAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50Py5taW4sXG4gICAgICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQ/Lm1heCxcbiAgICAgICAgICApKTtcbiAgICAgIGNvbnN0IHdhc1ZhbGlkID0gIXRoaXMuX2lucHV0RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnKTtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnLCAhaXNFbXB0eU9yVmFsaWQpO1xuICAgICAgaWYgKHdhc1ZhbGlkICE9PSBpc0VtcHR5T3JWYWxpZCkge1xuICAgICAgICB0aGlzLl92YWxpZGF0aW9uQ2hhbmdlLmVtaXQoeyB2YWxpZDogaXNFbXB0eU9yVmFsaWQgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9lbWl0Q2hhbmdlKHZhbHVlQXNEYXRlISk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEVtaXRzIHRoZSBjaGFuZ2UgZXZlbnQuICovXG4gIHByaXZhdGUgX2VtaXRDaGFuZ2UoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZShkYXRlKTtcblxuICAgIHRoaXMuX2NoYW5nZS5lbWl0KCk7XG4gICAgdGhpcy5fZGlkQ2hhbmdlLmVtaXQoKTtcblxuICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VmFsaWRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsID0gdmFsdWUubWF0Y2goRk9STUFUX0RBVEUpO1xuXG4gICAgaWYgKG1hdGNoPy5pbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlQW5kRm9ybWF0VmFsdWUodmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoTnVtYmVyLmlzSW50ZWdlcigrdmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY3JlYXRlQW5kQ29tcG9zZURhdGUoK3ZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQobmV3IERhdGUodmFsdWUpKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUFuZENvbXBvc2VEYXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBhcnNlciA/IHRoaXMuZGF0ZVBhcnNlcih2YWx1ZSkgOiB0aGlzLl9kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZSwgdGhpcy5ub3cpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdCA/IHRoaXMuZm9ybWF0KGRhdGUpIDogdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KGRhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0QXJpYUxpdmVNZXNzYWdlKGRhdGU/OiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgYXJpYUxpdmVGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChgJHt0aGlzLl9sYW5ndWFnZS5jdXJyZW50fS1DSGAsIHtcbiAgICAgIHdlZWtkYXk6ICdsb25nJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRhdGVGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZGUtQ0gnLCB7XG4gICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50OiBIVE1MUGFyYWdyYXBoRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy48SFRNTFBhcmFncmFwaEVsZW1lbnQ+KCcjc3RhdHVzLWNvbnRhaW5lcicpO1xuXG4gICAgaWYgKGNvbnRhaW5lckVsZW1lbnQpIHtcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuaW5uZXJUZXh0ID0gZGF0ZVxuICAgICAgICA/IGAke2kxOG5EYXRlQ2hhbmdlZFRvW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2FyaWFMaXZlRm9ybWF0dGVyLmZvcm1hdChcbiAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgKX0sICR7ZGF0ZUZvcm1hdHRlci5mb3JtYXQoZGF0ZSl9YFxuICAgICAgICA6ICcnO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxwIGlkPVwic3RhdHVzLWNvbnRhaW5lclwiIHJvbGU9XCJzdGF0dXNcIj48L3A+YDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXInOiBTYmJEYXRlcGlja2VyRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIGlucHV0VXBkYXRlZDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD47XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxNQUFNLGNBQ0o7QUFlYyxTQUFBLGNBQ2QsU0FDQSxTQUN5Qzs7QUFDekMsTUFBSSxDQUFDLFNBQVM7QUFDTixVQUFBLFVBQVMsYUFBUSxZQUFSLGlDQUFrQjtBQUMxQixXQUFBLGlDQUFRLGNBQWM7QUFBQSxFQUMvQjtBQUVBLFNBQU8sc0JBQTRDLE9BQU87QUFDNUQ7QUFTTyxTQUFTLGlCQUNkLE1BQ0EsT0FDQSxZQUNBLGFBQ007QUFDTixNQUFJLGdCQUFnQixZQUFZLGdCQUFnQixNQUFNLEtBQUs7QUFFM0QsTUFBSSxZQUFZO0FBQ1AsV0FBQSxDQUFDLFdBQVcsYUFBYSxHQUFHO0FBQ2pCLHNCQUFBLFlBQVksZ0JBQWdCLGVBQWUsS0FBSztBQUFBLElBQ2xFO0FBQUEsRUFDRjtBQUVPLFNBQUE7QUFDVDtBQVVPLFNBQVMsMEJBQ2QsTUFDQSxZQUNBLGFBQ0EsS0FDTTtBQUNOLFFBQU0sZUFBZSxpQkFBaUIsTUFBTSxJQUFJLFlBQVksV0FBVztBQUNqRSxRQUFBLFVBQVUsWUFBWSxZQUFZLEdBQUc7QUFHekMsTUFBQSxDQUFDLFdBQ0EsWUFBWSxRQUFRLE9BQU8sS0FBSyxZ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
@@ -15,6 +15,12 @@ const style = css`/**
15
15
  * }
16
16
  */
17
17
  /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
18
+ /*
19
+ * SBB table mixin
20
+ * Notes:
21
+ * We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
22
+ * Therefore, we have to build the grid avoiding double borders.
23
+ */
18
24
  *,
19
25
  ::before,
20
26
  ::after {
@@ -62,4 +68,4 @@ SbbDialogActionsElement = __decorateClass([
62
68
  export {
63
69
  SbbDialogActionsElement
64
70
  };
65
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWFjdGlvbnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kaWFsb2cvZGlhbG9nLWFjdGlvbnMvZGlhbG9nLWFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJBY3Rpb25Hcm91cEVsZW1lbnQgfSBmcm9tICcuLi8uLi9hY3Rpb24tZ3JvdXAuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kaWFsb2ctYWN0aW9ucy5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIFVzZSB0aGlzIGNvbXBvbmVudCB0byBkaXNwbGF5IGEgZm9vdGVyIGludG8gYW4gYHNiYi1kaWFsb2dgIHdpdGggYW4gYWN0aW9uIGdyb3VwLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItYmxvY2stbGlua2Agb3IgYHNiYi1idXR0b25gIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWRpYWxvZy1hY3Rpb25zYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kaWFsb2ctYWN0aW9ucycpXG5leHBvcnQgY2xhc3MgU2JiRGlhbG9nQWN0aW9uc0VsZW1lbnQgZXh0ZW5kcyBTYmJBY3Rpb25Hcm91cEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbU2JiQWN0aW9uR3JvdXBFbGVtZW50LnN0eWxlcywgc3R5bGVdO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYCA8ZGl2IGNsYXNzPVwic2JiLWRpYWxvZy1hY3Rpb25zXCI+JHtzdXBlci5yZW5kZXIoKX08L2Rpdj4gYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRpYWxvZy1hY3Rpb25zJzogU2JiRGlhbG9nQWN0aW9uc0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY2EsSUFBQSwwQkFBTixjQUFzQyxzQkFBc0I7QUFBQSxFQUc5QyxTQUF5QjtBQUNuQyxXQUFBLHdDQUF3QyxNQUFNLE9BQVEsQ0FBQTtBQUFBLEVBQy9EO0FBQ0Y7QUFOYSx3QkFDWSxTQUF5QixDQUFDLHNCQUFzQixRQUFRLEtBQUs7QUFEekUsMEJBQU4sZ0JBQUE7QUFBQSxFQUROLGNBQWMsb0JBQW9CO0FBQUEsR0FDdEIsdUJBQUE7In0=
71
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWFjdGlvbnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kaWFsb2cvZGlhbG9nLWFjdGlvbnMvZGlhbG9nLWFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJBY3Rpb25Hcm91cEVsZW1lbnQgfSBmcm9tICcuLi8uLi9hY3Rpb24tZ3JvdXAuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kaWFsb2ctYWN0aW9ucy5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIFVzZSB0aGlzIGNvbXBvbmVudCB0byBkaXNwbGF5IGEgZm9vdGVyIGludG8gYW4gYHNiYi1kaWFsb2dgIHdpdGggYW4gYWN0aW9uIGdyb3VwLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItYmxvY2stbGlua2Agb3IgYHNiYi1idXR0b25gIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWRpYWxvZy1hY3Rpb25zYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kaWFsb2ctYWN0aW9ucycpXG5leHBvcnQgY2xhc3MgU2JiRGlhbG9nQWN0aW9uc0VsZW1lbnQgZXh0ZW5kcyBTYmJBY3Rpb25Hcm91cEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbU2JiQWN0aW9uR3JvdXBFbGVtZW50LnN0eWxlcywgc3R5bGVdO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYCA8ZGl2IGNsYXNzPVwic2JiLWRpYWxvZy1hY3Rpb25zXCI+JHtzdXBlci5yZW5kZXIoKX08L2Rpdj4gYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRpYWxvZy1hY3Rpb25zJzogU2JiRGlhbG9nQWN0aW9uc0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY2EsSUFBQSwwQkFBTixjQUFzQyxzQkFBc0I7QUFBQSxFQUc5QyxTQUF5QjtBQUNuQyxXQUFBLHdDQUF3QyxNQUFNLE9BQVEsQ0FBQTtBQUFBLEVBQy9EO0FBQ0Y7QUFOYSx3QkFDWSxTQUF5QixDQUFDLHNCQUFzQixRQUFRLEtBQUs7QUFEekUsMEJBQU4sZ0JBQUE7QUFBQSxFQUROLGNBQWMsb0JBQW9CO0FBQUEsR0FDdEIsdUJBQUE7In0=
@@ -14,6 +14,12 @@ const style = css`/**
14
14
  * }
15
15
  */
16
16
  /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
17
+ /*
18
+ * SBB table mixin
19
+ * Notes:
20
+ * We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
21
+ * Therefore, we have to build the grid avoiding double borders.
22
+ */
17
23
  *,
18
24
  ::before,
19
25
  ::after {
@@ -87,4 +93,4 @@ SbbDialogContentElement = __decorateClass([
87
93
  export {
88
94
  SbbDialogContentElement
89
95
  };
90
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWNvbnRlbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kaWFsb2cvZGlhbG9nLWNvbnRlbnQvZGlhbG9nLWNvbnRlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kaWFsb2ctY29udGVudC5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIFVzZSB0aGlzIGNvbXBvbmVudCB0byBwcm92aWRlIGEgY29udGVudCBmb3IgYW4gYHNiYi1kaWFsb2dgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gcHJvdmlkZSBhIGRpYWxvZyBjb250ZW50LlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWRpYWxvZy1jb250ZW50JylcbmV4cG9ydCBjbGFzcyBTYmJEaWFsb2dDb250ZW50RWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZGlhbG9nLWNvbnRlbnRcIj5cbiAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRpYWxvZy1jb250ZW50JzogU2JiRGlhbG9nQ29udGVudEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWWEsSUFBQSwwQkFBTixjQUFzQyxXQUFXO0FBQUEsRUFHbkMsU0FBeUI7QUFDbkMsV0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLVDtBQUNGO0FBVmEsd0JBQ1ksU0FBeUI7QUFEckMsMEJBQU4sZ0JBQUE7QUFBQSxFQUROLGNBQWMsb0JBQW9CO0FBQUEsR0FDdEIsdUJBQUE7In0=
96
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWNvbnRlbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kaWFsb2cvZGlhbG9nLWNvbnRlbnQvZGlhbG9nLWNvbnRlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kaWFsb2ctY29udGVudC5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIFVzZSB0aGlzIGNvbXBvbmVudCB0byBwcm92aWRlIGEgY29udGVudCBmb3IgYW4gYHNiYi1kaWFsb2dgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gcHJvdmlkZSBhIGRpYWxvZyBjb250ZW50LlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWRpYWxvZy1jb250ZW50JylcbmV4cG9ydCBjbGFzcyBTYmJEaWFsb2dDb250ZW50RWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZGlhbG9nLWNvbnRlbnRcIj5cbiAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRpYWxvZy1jb250ZW50JzogU2JiRGlhbG9nQ29udGVudEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWWEsSUFBQSwwQkFBTixjQUFzQyxXQUFXO0FBQUEsRUFHbkMsU0FBeUI7QUFDbkMsV0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLVDtBQUNGO0FBVmEsd0JBQ1ksU0FBeUI7QUFEckMsMEJBQU4sZ0JBQUE7QUFBQSxFQUROLGNBQWMsb0JBQW9CO0FBQUEsR0FDdEIsdUJBQUE7In0=
@@ -22,6 +22,12 @@ const style = css`/**
22
22
  * }
23
23
  */
24
24
  /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
25
+ /*
26
+ * SBB table mixin
27
+ * Notes:
28
+ * We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
29
+ * Therefore, we have to build the grid avoiding double borders.
30
+ */
25
31
  :host {
26
32
  --sbb-dialog-title-padding-block: var(--sbb-spacing-responsive-s) 0;
27
33
  display: contents;
@@ -164,4 +170,4 @@ SbbDialogTitleElement = __decorateClass([
164
170
  export {
165
171
  SbbDialogTitleElement
166
172
  };
167
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXRpdGxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy10aXRsZS9kaWFsb2ctdGl0bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBodG1sLCB1bnNhZmVTdGF0aWMgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQgeyBTYmJGb2N1c1Zpc2libGVXaXRoaW5Db250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBCcmVha3BvaW50IH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuQ2xvc2VEaWFsb2csIGkxOG5Hb0JhY2sgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiVGl0bGVCYXNlIH0gZnJvbSAnLi4vLi4vdGl0bGUuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kaWFsb2ctdGl0bGUuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9idXR0b24vc2Vjb25kYXJ5LWJ1dHRvbi5qcyc7XG5pbXBvcnQgJy4uLy4uL2J1dHRvbi90cmFuc3BhcmVudC1idXR0b24uanMnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgdGl0bGUgaW5zaWRlIGEgZGlhbG9nIGhlYWRlci5cbiAqXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSByZXF1ZXN0QmFja0FjdGlvbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWRpYWxvZy10aXRsZScpXG5leHBvcnQgY2xhc3MgU2JiRGlhbG9nVGl0bGVFbGVtZW50IGV4dGVuZHMgU2JiVGl0bGVCYXNlIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW1NiYlRpdGxlQmFzZS5zdHlsZXMsIHN0eWxlXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgYmFja0NsaWNrOiAncmVxdWVzdEJhY2tBY3Rpb24nLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgYmFjayBidXR0b24gaXMgZGlzcGxheWVkIG5leHQgdG8gdGhlIHRpdGxlLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYmFjay1idXR0b24nLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBiYWNrQnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgY2xvc2UgYnV0dG9uIGVsZW1lbnQuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWNsb3NlLWxhYmVsJyB9KSBwdWJsaWMgYWNjZXNzaWJpbGl0eUNsb3NlTGFiZWw6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBiYWNrIGJ1dHRvbiBlbGVtZW50LlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1iYWNrLWxhYmVsJyB9KSBwdWJsaWMgYWNjZXNzaWJpbGl0eUJhY2tMYWJlbDpcbiAgICB8IHN0cmluZ1xuICAgIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGhpZGUgdGhlIHRpdGxlIHVwIHRvIGEgY2VydGFpbiBicmVha3BvaW50LlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaGlkZS1vbi1zY3JvbGwnIH0pXG4gIHB1YmxpYyBzZXQgaGlkZU9uU2Nyb2xsKHZhbHVlOiAnJyB8IEJyZWFrcG9pbnQgfCBib29sZWFuKSB7XG4gICAgdGhpcy5faGlkZU9uU2Nyb2xsID0gdmFsdWUgPT09ICcnID8gdHJ1ZSA6IHZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgaGlkZU9uU2Nyb2xsKCk6IEJyZWFrcG9pbnQgfCBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZU9uU2Nyb2xsO1xuICB9XG4gIHByaXZhdGUgX2hpZGVPblNjcm9sbDogQnJlYWtwb2ludCB8IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9iYWNrQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRpYWxvZ1RpdGxlRWxlbWVudC5ldmVudHMuYmFja0NsaWNrLFxuICApO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sZXZlbCA9ICcyJztcbiAgICB0aGlzLnZpc3VhbExldmVsID0gJzMnO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgbmV3IFNiYkZvY3VzVmlzaWJsZVdpdGhpbkNvbnRyb2xsZXIodGhpcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2JhY2tCdXR0b24nKSB8fCBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2FjY2Vzc2liaWxpdHlCYWNrTGFiZWwnKSkge1xuICAgICAgdGhpcy5iYWNrQnV0dG9uID0gIXRoaXMuYmFja0J1dHRvbiAmJiAhIXRoaXMuYWNjZXNzaWJpbGl0eUJhY2tMYWJlbCA/IHRydWUgOiB0aGlzLmJhY2tCdXR0b247XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgVEFHX05BTUUgPSB0aGlzLm5lZ2F0aXZlID8gJ3NiYi10cmFuc3BhcmVudC1idXR0b24nIDogJ3NiYi1zZWNvbmRhcnktYnV0dG9uJztcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGxpdC9iaW5kaW5nLXBvc2l0aW9ucyAqL1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gaHRtbGBcbiAgICAgIDwke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRSl9XG4gICAgICAgIGNsYXNzPVwic2JiLWRpYWxvZ19fY2xvc2VcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbCB8fCBpMThuQ2xvc2VEaWFsb2dbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgc2JiLWRpYWxvZy1jbG9zZVxuICAgICAgPjwvJHt1bnNhZmVTdGF0aWMoVEFHX05BTUUpfT5cbiAgICBgO1xuXG4gICAgY29uc3QgYmFja0J1dHRvbiA9IGh0bWxgXG4gICAgICA8JHt1bnNhZmVTdGF0aWMoVEFHX05BTUUpfVxuICAgICAgICBjbGFzcz1cInNiYi1kaWFsb2dfX2JhY2tcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5QmFja0xhYmVsIHx8IGkxOG5Hb0JhY2tbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb24tbmFtZT1cImNoZXZyb24tc21hbGwtbGVmdC1zbWFsbFwiXG4gICAgICAgIEBjbGljaz0keygpID0+IHRoaXMuX2JhY2tDbGljay5lbWl0KCl9XG4gICAgICA+PC8ke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRSl9PlxuICAgIGA7XG4gICAgLyogZXNsaW50LWVuYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1kaWFsb2dfX2hlYWRlclwiPlxuICAgICAgICAke3RoaXMuYmFja0J1dHRvbiA/IGJhY2tCdXR0b24gOiBub3RoaW5nfSAke3N1cGVyLnJlbmRlcigpfSAke2Nsb3NlQnV0dG9ufVxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRpYWxvZy10aXRsZSc6IFNiYkRpYWxvZ1RpdGxlRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
173
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXRpdGxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy10aXRsZS9kaWFsb2ctdGl0bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBodG1sLCB1bnNhZmVTdGF0aWMgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQgeyBTYmJGb2N1c1Zpc2libGVXaXRoaW5Db250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBCcmVha3BvaW50IH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuQ2xvc2VEaWFsb2csIGkxOG5Hb0JhY2sgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiVGl0bGVCYXNlIH0gZnJvbSAnLi4vLi4vdGl0bGUuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kaWFsb2ctdGl0bGUuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9idXR0b24vc2Vjb25kYXJ5LWJ1dHRvbi5qcyc7XG5pbXBvcnQgJy4uLy4uL2J1dHRvbi90cmFuc3BhcmVudC1idXR0b24uanMnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgdGl0bGUgaW5zaWRlIGEgZGlhbG9nIGhlYWRlci5cbiAqXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSByZXF1ZXN0QmFja0FjdGlvbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWRpYWxvZy10aXRsZScpXG5leHBvcnQgY2xhc3MgU2JiRGlhbG9nVGl0bGVFbGVtZW50IGV4dGVuZHMgU2JiVGl0bGVCYXNlIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW1NiYlRpdGxlQmFzZS5zdHlsZXMsIHN0eWxlXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgYmFja0NsaWNrOiAncmVxdWVzdEJhY2tBY3Rpb24nLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgYmFjayBidXR0b24gaXMgZGlzcGxheWVkIG5leHQgdG8gdGhlIHRpdGxlLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYmFjay1idXR0b24nLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBiYWNrQnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgY2xvc2UgYnV0dG9uIGVsZW1lbnQuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWNsb3NlLWxhYmVsJyB9KSBwdWJsaWMgYWNjZXNzaWJpbGl0eUNsb3NlTGFiZWw6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBiYWNrIGJ1dHRvbiBlbGVtZW50LlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1iYWNrLWxhYmVsJyB9KSBwdWJsaWMgYWNjZXNzaWJpbGl0eUJhY2tMYWJlbDpcbiAgICB8IHN0cmluZ1xuICAgIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGhpZGUgdGhlIHRpdGxlIHVwIHRvIGEgY2VydGFpbiBicmVha3BvaW50LlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaGlkZS1vbi1zY3JvbGwnIH0pXG4gIHB1YmxpYyBzZXQgaGlkZU9uU2Nyb2xsKHZhbHVlOiAnJyB8IEJyZWFrcG9pbnQgfCBib29sZWFuKSB7XG4gICAgdGhpcy5faGlkZU9uU2Nyb2xsID0gdmFsdWUgPT09ICcnID8gdHJ1ZSA6IHZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgaGlkZU9uU2Nyb2xsKCk6IEJyZWFrcG9pbnQgfCBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZU9uU2Nyb2xsO1xuICB9XG4gIHByaXZhdGUgX2hpZGVPblNjcm9sbDogQnJlYWtwb2ludCB8IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9iYWNrQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRpYWxvZ1RpdGxlRWxlbWVudC5ldmVudHMuYmFja0NsaWNrLFxuICApO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sZXZlbCA9ICcyJztcbiAgICB0aGlzLnZpc3VhbExldmVsID0gJzMnO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgbmV3IFNiYkZvY3VzVmlzaWJsZVdpdGhpbkNvbnRyb2xsZXIodGhpcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2JhY2tCdXR0b24nKSB8fCBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2FjY2Vzc2liaWxpdHlCYWNrTGFiZWwnKSkge1xuICAgICAgdGhpcy5iYWNrQnV0dG9uID0gIXRoaXMuYmFja0J1dHRvbiAmJiAhIXRoaXMuYWNjZXNzaWJpbGl0eUJhY2tMYWJlbCA/IHRydWUgOiB0aGlzLmJhY2tCdXR0b247XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgVEFHX05BTUUgPSB0aGlzLm5lZ2F0aXZlID8gJ3NiYi10cmFuc3BhcmVudC1idXR0b24nIDogJ3NiYi1zZWNvbmRhcnktYnV0dG9uJztcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGxpdC9iaW5kaW5nLXBvc2l0aW9ucyAqL1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gaHRtbGBcbiAgICAgIDwke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRSl9XG4gICAgICAgIGNsYXNzPVwic2JiLWRpYWxvZ19fY2xvc2VcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbCB8fCBpMThuQ2xvc2VEaWFsb2dbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgc2JiLWRpYWxvZy1jbG9zZVxuICAgICAgPjwvJHt1bnNhZmVTdGF0aWMoVEFHX05BTUUpfT5cbiAgICBgO1xuXG4gICAgY29uc3QgYmFja0J1dHRvbiA9IGh0bWxgXG4gICAgICA8JHt1bnNhZmVTdGF0aWMoVEFHX05BTUUpfVxuICAgICAgICBjbGFzcz1cInNiYi1kaWFsb2dfX2JhY2tcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5QmFja0xhYmVsIHx8IGkxOG5Hb0JhY2tbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb24tbmFtZT1cImNoZXZyb24tc21hbGwtbGVmdC1zbWFsbFwiXG4gICAgICAgIEBjbGljaz0keygpID0+IHRoaXMuX2JhY2tDbGljay5lbWl0KCl9XG4gICAgICA+PC8ke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRSl9PlxuICAgIGA7XG4gICAgLyogZXNsaW50LWVuYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1kaWFsb2dfX2hlYWRlclwiPlxuICAgICAgICAke3RoaXMuYmFja0J1dHRvbiA/IGJhY2tCdXR0b24gOiBub3RoaW5nfSAke3N1cGVyLnJlbmRlcigpfSAke2Nsb3NlQnV0dG9ufVxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRpYWxvZy10aXRsZSc6IFNiYkRpYWxvZ1RpdGxlRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCYSxJQUFBLHdCQUFOLGNBQW9DLGFBQWE7QUFBQSxFQTJDL0MsY0FBYztBQUNiO0FBbkMrQyxTQUFPLGFBQWE7QUEwQjNFLFNBQVEsZ0JBQXNDO0FBRTlDLFNBQVEsYUFBZ0MsSUFBSTtBQUFBLE1BQzFDO0FBQUEsTUFDQSxzQkFBc0IsT0FBTztBQUFBLElBQUE7QUFFdkIsU0FBQSxZQUFZLElBQUksc0JBQXNCLElBQUk7QUFJaEQsU0FBSyxRQUFRO0FBQ2IsU0FBSyxjQUFjO0FBQUEsRUFDckI7QUFBQSxFQWxCQSxJQUFXLGFBQWEsT0FBa0M7QUFDbkQsU0FBQSxnQkFBZ0IsVUFBVSxLQUFLLE9BQU87QUFBQSxFQUM3QztBQUFBLEVBQ0EsSUFBVyxlQUFxQztBQUM5QyxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsRUFlZ0Isb0JBQTBCO0FBQ3hDLFVBQU0sa0JBQWtCO0FBQ3hCLFFBQUksZ0NBQWdDLElBQUk7QUFBQSxFQUMxQztBQUFBLEVBRW1CLFdBQVcsbUJBQStDO0FBQzNFLFVBQU0sV0FBVyxpQkFBaUI7QUFFbEMsUUFBSSxrQkFBa0IsSUFBSSxZQUFZLEtBQUssa0JBQWtCLElBQUksd0JBQXdCLEdBQUc7QUFDckYsV0FBQSxhQUFhLENBQUMsS0FBSyxjQUFjLENBQUMsQ0FBQyxLQUFLLHlCQUF5QixPQUFPLEtBQUs7QUFBQSxJQUNwRjtBQUFBLEVBQ0Y7QUFBQSxFQUVtQixTQUF5QjtBQUNwQyxVQUFBLFdBQVcsS0FBSyxXQUFXLDJCQUEyQjtBQUc1RCxVQUFNLGNBQWM7QUFBQSxTQUNmLGFBQWEsUUFBUSxDQUFDO0FBQUE7QUFBQSxxQkFFVixLQUFLLDJCQUEyQixnQkFBZ0IsS0FBSyxVQUFVLE9BQU8sQ0FBQztBQUFBLG9CQUN4RSxLQUFLLFFBQVE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBS3RCLGFBQWEsUUFBUSxDQUFDO0FBQUE7QUFHN0IsVUFBTSxhQUFhO0FBQUEsU0FDZCxhQUFhLFFBQVEsQ0FBQztBQUFBO0FBQUEscUJBRVYsS0FBSywwQkFBMEIsV0FBVyxLQUFLLFVBQVUsT0FBTyxDQUFDO0FBQUEsb0JBQ2xFLEtBQUssUUFBUTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQUloQixNQUFNLEtBQUssV0FBVyxNQUFNO0FBQUEsV0FDbEMsYUFBYSxRQUFRLENBQUM7QUFBQTtBQUl0QixXQUFBO0FBQUE7QUFBQSxVQUVELEtBQUssYUFBYSxhQUFhLE9BQU8sSUFBSSxNQUFNLE9BQUEsQ0FBUSxJQUFJLFdBQVc7QUFBQTtBQUFBO0FBQUEsRUFHL0U7QUFDRjtBQWpHYSxzQkFDWSxTQUF5QixDQUFDLGFBQWEsUUFBUSxLQUFLO0FBRGhFLHNCQUVZLFNBQWlDO0FBQUEsRUFDdEQsV0FBVztBQUNiO0FBSzhELGdCQUFBO0FBQUEsRUFBN0QsU0FBUyxFQUFFLFdBQVcsZUFBZSxNQUFNLFNBQVM7QUFBQSxHQVQxQyxzQkFTbUQsV0FBQSxjQUFBLENBQUE7QUFLRCxnQkFBQTtBQUFBLEVBQTVELFNBQVMsRUFBRSxXQUFXLDZCQUE2QjtBQUFBLEdBZHpDLHNCQWNrRCxXQUFBLDJCQUFBLENBQUE7QUFPRCxnQkFBQTtBQUFBLEVBQTNELFNBQVMsRUFBRSxXQUFXLDRCQUE0QjtBQUFBLEdBckJ4QyxzQkFxQmlELFdBQUEsMEJBQUEsQ0FBQTtBQVFqRCxnQkFBQTtBQUFBLEVBRFYsU0FBUyxFQUFFLFdBQVcsa0JBQWtCO0FBQUEsR0E1QjlCLHNCQTZCQSxXQUFBLGdCQUFBLENBQUE7QUE3QkEsd0JBQU4sZ0JBQUE7QUFBQSxFQUROLGNBQWMsa0JBQWtCO0FBQUEsR0FDcEIscUJBQUE7In0=
@@ -21,6 +21,12 @@ const style = css`/**
21
21
  * }
22
22
  */
23
23
  /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
24
+ /*
25
+ * SBB table mixin
26
+ * Notes:
27
+ * We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
28
+ * Therefore, we have to build the grid avoiding double borders.
29
+ */
24
30
  *,
25
31
  ::before,
26
32
  ::after {
@@ -433,4 +439,4 @@ SbbDialogElement = __decorateClass([
433
439
  export {
434
440
  SbbDialogElement
435
441
  };
436
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy9kaWFsb2cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB7IGdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudCwgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBpc0JyZWFrcG9pbnQgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBBZ25vc3RpY1Jlc2l6ZU9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuaW1wb3J0IHsgYXBwbHlJbmVydE1lY2hhbmlzbSwgcmVtb3ZlSW5lcnRNZWNoYW5pc20gfSBmcm9tICcuLi8uLi9jb3JlL292ZXJsYXkuanMnO1xuaW1wb3J0IHsgb3ZlcmxheVJlZnMsIFNiYk92ZXJsYXlCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL292ZXJsYXkuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEaWFsb2dBY3Rpb25zRWxlbWVudCB9IGZyb20gJy4uL2RpYWxvZy1hY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGlhbG9nVGl0bGVFbGVtZW50IH0gZnJvbSAnLi4vZGlhbG9nLXRpdGxlLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGlhbG9nLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gaW50ZXJhY3RpdmUgb3ZlcmxheSBlbGVtZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gcHJvdmlkZSBhIGBzYmItZGlhbG9nLXRpdGxlYCwgYHNiYi1kaWFsb2ctY29udGVudGAgYW5kIGFuIG9wdGlvbmFsIGBzYmItZGlhbG9nLWFjdGlvbnNgLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gd2lsbE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1kaWFsb2dgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkaWRPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZGlhbG9nYCBpcyBvcGVuZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1kaWFsb2dgIGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZGlhbG9nYCBpcyBjbG9zZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItZGlhbG9nLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kaWFsb2cnKVxuZXhwb3J0IGNsYXNzIFNiYkRpYWxvZ0VsZW1lbnQgZXh0ZW5kcyBTYmJPdmVybGF5QmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogQmFja2Ryb3AgY2xpY2sgYWN0aW9uLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdiYWNrZHJvcC1hY3Rpb24nIH0pIHB1YmxpYyBiYWNrZHJvcEFjdGlvbjogJ2Nsb3NlJyB8ICdub25lJyA9ICdjbG9zZSc7XG5cbiAgLy8gV2UgdXNlIGEgdGltZW91dCBhcyBhIHdvcmthcm91bmQgdG8gdGhlIFwiUmVzaXplT2JzZXJ2ZXIgbG9vcCBjb21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJlZCBub3RpZmljYXRpb25zXCIgZXJyb3IuXG4gIC8vIEZvciBtb3JlIGRldGFpbHM6XG4gIC8vIC0gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvcmVzaXplLW9ic2VydmVyL2lzc3Vlcy8zOCNpc3N1ZWNvbW1lbnQtNDIyMTI2MDA2XG4gIC8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2p1Z2dsZS9yZXNpemUtb2JzZXJ2ZXIvaXNzdWVzLzEwMyNpc3N1ZWNvbW1lbnQtMTcxMTE0ODI4NVxuICBwcml2YXRlIF9kaWFsb2dDb250ZW50UmVzaXplT2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNSZXNpemVPYnNlcnZlcigoKSA9PlxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fb25Db250ZW50UmVzaXplKCkpLFxuICApO1xuXG4gIHByaXZhdGUgX2RpYWxvZ1RpdGxlRWxlbWVudDogU2JiRGlhbG9nVGl0bGVFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2RpYWxvZ1RpdGxlSGVpZ2h0PzogbnVtYmVyO1xuICBwcml2YXRlIF9kaWFsb2dDb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZGlhbG9nQWN0aW9uc0VsZW1lbnQ6IFNiYkRpYWxvZ0FjdGlvbnNFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2lzUG9pbnRlckRvd25FdmVudE9uRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX292ZXJmbG93czogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9sYXN0U2Nyb2xsID0gMDtcbiAgcHJpdmF0ZSBfZGlhbG9nSWQgPSBgc2JiLWRpYWxvZy0ke25leHRJZCsrfWA7XG4gIHByb3RlY3RlZCBjbG9zZUF0dHJpYnV0ZTogc3RyaW5nID0gJ3NiYi1kaWFsb2ctY2xvc2UnO1xuXG4gIC8qKiBPcGVucyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBkaWFsb2cgZWxlbWVudHNcbiAgICB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQgPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1kaWFsb2ctdGl0bGUnKTtcbiAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudCA9IHRoaXMucXVlcnlTZWxlY3Rvcignc2JiLWRpYWxvZy1jb250ZW50Jyk/LnNoYWRvd1Jvb3QhXG4gICAgICAuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5fZGlhbG9nQWN0aW9uc0VsZW1lbnQgPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1kaWFsb2ctYWN0aW9ucycpO1xuXG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG5cbiAgICAvLyBBZGQgdGhpcyBkaWFsb2cgdG8gdGhlIGdsb2JhbCBjb2xsZWN0aW9uXG4gICAgb3ZlcmxheVJlZnMucHVzaCh0aGlzIGFzIFNiYkRpYWxvZ0VsZW1lbnQpO1xuICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50KTtcblxuICAgIC8vIERpc2FibGUgc2Nyb2xsaW5nIGZvciBjb250ZW50IGJlbG93IHRoZSBkaWFsb2dcbiAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGlzYWJsZVNjcm9sbCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAvLyBDbG9zZSBkaWFsb2cgb24gYmFja2Ryb3AgY2xpY2tcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lciwge1xuICAgICAgc2lnbmFsOiB0aGlzLm92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrLCB7XG4gICAgICBzaWduYWw6IHRoaXMub3ZlcmxheUNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAvLyBTeW5jaHJvbml6ZSB0aGUgbmVnYXRpdmUgc3RhdGUgYmVmb3JlIHRoZSBmaXJzdCBvcGVuaW5nIHRvIGF2b2lkIGEgcG9zc2libGUgY29sb3IgZmxhc2ggaWYgaXQgaXMgbmVnYXRpdmUuXG4gICAgdGhpcy5fZGlhbG9nVGl0bGVFbGVtZW50ID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdzYmItZGlhbG9nLXRpdGxlJykhO1xuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTogdm9pZCB7XG4gICAgc3VwZXIuYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTtcblxuICAgIC8vIElmIHRoZSBjb250ZW50IG92ZXJmbG93cywgc2hvdy9oaWRlIHRoZSBkaWFsb2cgaGVhZGVyIG9uIHNjcm9sbC5cbiAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fb25Db250ZW50U2Nyb2xsKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0SGlkZUhlYWRlckRhdGFBdHRyaWJ1dGUoZmFsc2UpLCB7XG4gICAgICBzaWduYWw6IHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFdhaXQgZm9yIGRpYWxvZyB0cmFuc2l0aW9uIHRvIGNvbXBsZXRlLlxuICAvLyBJbiByYXJlIGNhc2VzLCBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgLy8gVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICBwcm90ZWN0ZWQgb25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgICB0aGlzLmRpZE9wZW4uZW1pdCgpO1xuICAgICAgYXBwbHlJbmVydE1lY2hhbmlzbSh0aGlzKTtcbiAgICAgIHRoaXMuYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTtcbiAgICAgIHRoaXMuc2V0T3ZlcmxheUZvY3VzKCk7XG4gICAgICAvLyBVc2UgdGltZW91dCB0byByZWFkIGxhYmVsIGFmdGVyIGZvY3VzZWQgZWxlbWVudFxuICAgICAgc2V0VGltZW91dCgoKSA9PlxuICAgICAgICB0aGlzLnNldEFyaWFMaXZlUmVmQ29udGVudChcbiAgICAgICAgICB0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCB8fCB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQ/LmlubmVyVGV4dC50cmltKCksXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgdGhpcy5mb2N1c0hhbmRsZXIudHJhcCh0aGlzKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9zZXRIaWRlSGVhZGVyRGF0YUF0dHJpYnV0ZShmYWxzZSk7XG4gICAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudD8uc2Nyb2xsVG8oMCwgMCk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgICByZW1vdmVJbmVydE1lY2hhbmlzbSgpO1xuICAgICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyh0aGlzLmxhc3RGb2N1c2VkRWxlbWVudCk7XG4gICAgICAvLyBNYW51YWxseSBmb2N1cyBsYXN0IGZvY3VzZWQgZWxlbWVudFxuICAgICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuZm9jdXNIYW5kbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLnJlbW92ZUluc3RhbmNlRnJvbUdsb2JhbENvbGxlY3Rpb24oKTtcbiAgICAgIC8vIEVuYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIGRpYWxvZyBpZiBubyBkaWFsb2cgaXMgb3BlblxuICAgICAgIW92ZXJsYXlSZWZzLmxlbmd0aCAmJiB0aGlzLnNjcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gICAgICB0aGlzLmRpZENsb3NlLmVtaXQoe1xuICAgICAgICByZXR1cm5WYWx1ZTogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgICAgY2xvc2VUYXJnZXQ6IHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBmb2N1cyBvbiB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQuXG4gIHByb3RlY3RlZCBzZXRPdmVybGF5Rm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgZmlyc3RGb2N1c2FibGUgPSBnZXRGaXJzdEZvY3VzYWJsZUVsZW1lbnQoXG4gICAgICBBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4pLmZpbHRlcigoZSk6IGUgaXMgSFRNTEVsZW1lbnQgPT4gZSBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudCksXG4gICAgKTtcbiAgICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzKGZpcnN0Rm9jdXNhYmxlKTtcbiAgICBmaXJzdEZvY3VzYWJsZT8uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlhbG9nVGl0bGVFbGVtZW50KSB7XG4gICAgICB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9kaWFsb2dBY3Rpb25zRWxlbWVudCkge1xuICAgICAgdGhpcy5fZGlhbG9nQWN0aW9uc0VsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW5lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25Db250ZW50U2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZGlhbG9nQ29udGVudEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNWaXNpYmxlSGVhZGVyID0gdGhpcy5kYXRhc2V0LmhpZGVIZWFkZXIgPT09IHVuZGVmaW5lZDtcblxuICAgIC8vIENoZWNrIHdoZXRoZXIgaGlkaW5nIHRoZSBoZWFkZXIgd291bGQgbWFrZSB0aGUgc2Nyb2xsYmFyIGRpc2FwcGVhclxuICAgIC8vIGFuZCBwcmV2ZW50IHRoZSBoaWRpbmcgYW5pbWF0aW9uIGlmIHNvLlxuICAgIGlmIChcbiAgICAgIGhhc1Zpc2libGVIZWFkZXIgJiZcbiAgICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50LmNsaWVudEhlaWdodCArIHRoaXMuX2RpYWxvZ1RpdGxlSGVpZ2h0ISA+PVxuICAgICAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gdGhpcy5fZGlhbG9nQ29udGVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgIGlmIChcbiAgICAgIE1hdGgucm91bmQoY3VycmVudFNjcm9sbCArIHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50LmNsaWVudEhlaWdodCkgPj1cbiAgICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBDaGVjayB3aGV0aGVyIGlzIHNjcm9sbGluZyBkb3duIG9yIHVwLlxuICAgIGlmIChjdXJyZW50U2Nyb2xsID4gMCAmJiB0aGlzLl9sYXN0U2Nyb2xsIDwgY3VycmVudFNjcm9sbCkge1xuICAgICAgLy8gU2Nyb2xsaW5nIGRvd25cbiAgICAgIHRoaXMuX3NldEhpZGVIZWFkZXJEYXRhQXR0cmlidXRlKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTY3JvbGxpbmcgdXBcbiAgICAgIHRoaXMuX3NldEhpZGVIZWFkZXJEYXRhQXR0cmlidXRlKGZhbHNlKTtcbiAgICB9XG4gICAgLy8gYGN1cnJlbnRTY3JvbGxgIGNhbiBiZSBuZWdhdGl2ZSwgZS5nLiBvbiBtb2JpbGU7IHRoaXMgaXMgbm90IGFsbG93ZWQuXG4gICAgdGhpcy5fbGFzdFNjcm9sbCA9IGN1cnJlbnRTY3JvbGwgPD0gMCA/IDAgOiBjdXJyZW50U2Nyb2xsO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHBvaW50ZXJkb3duIGV2ZW50IHRhcmdldCBpcyB0cmlnZ2VyZWQgb24gdGhlIGRpYWxvZy5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKHRoaXMuYmFja2Ryb3BBY3Rpb24gIT09ICdjbG9zZScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbkRpYWxvZyA9IGV2ZW50XG4gICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgIC5maWx0ZXIoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IGUgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpXG4gICAgICAuc29tZSgodGFyZ2V0KSA9PiB0YXJnZXQuaWQgPT09IHRoaXMuX2RpYWxvZ0lkKTtcbiAgfTtcblxuICAvLyBDbG9zZSBkaWFsb2cgb24gYmFja2Ryb3AgY2xpY2suXG4gIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5iYWNrZHJvcEFjdGlvbiAhPT0gJ2Nsb3NlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbkRpYWxvZyAmJlxuICAgICAgIWV2ZW50XG4gICAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgICAuZmlsdGVyKChlKTogZSBpcyBIVE1MRWxlbWVudCA9PiBlIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50KVxuICAgICAgICAuc29tZSgodGFyZ2V0KSA9PiB0YXJnZXQuaWQgPT09IHRoaXMuX2RpYWxvZ0lkKVxuICAgICkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9zZXREaWFsb2dIZWFkZXJIZWlnaHQoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nVGl0bGVIZWlnaHQgPSB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQ/LnNoYWRvd1Jvb3QhLmZpcnN0RWxlbWVudENoaWxkIS5jbGllbnRIZWlnaHQ7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItZGlhbG9nLWhlYWRlci1oZWlnaHQnLCBgJHt0aGlzLl9kaWFsb2dUaXRsZUhlaWdodH1weGApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25Db250ZW50UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMuX3NldERpYWxvZ0hlYWRlckhlaWdodCgpO1xuICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIGNvbnRlbnQgb3ZlcmZsb3dzIGFuZCBzZXQgdGhlIGBvdmVyZmxvd3NgIGF0dHJpYnV0ZS5cbiAgICB0aGlzLl9vdmVyZmxvd3MgPSB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudFxuICAgICAgPyB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudD8uc2Nyb2xsSGVpZ2h0ID4gdGhpcy5fZGlhbG9nQ29udGVudEVsZW1lbnQ/LmNsaWVudEhlaWdodFxuICAgICAgOiBmYWxzZTtcbiAgICB0aGlzLl9zZXRPdmVyZmxvd3NEYXRhQXR0cmlidXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRIaWRlSGVhZGVyRGF0YUF0dHJpYnV0ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGhpZGVPblNjcm9sbCA9IHRoaXMuX2RpYWxvZ1RpdGxlRWxlbWVudD8uaGlkZU9uU2Nyb2xsID8/IGZhbHNlO1xuICAgIGNvbnN0IGhpZGVIZWFkZXIgPVxuICAgICAgdHlwZW9mIGhpZGVPblNjcm9sbCA9PT0gJ2Jvb2xlYW4nXG4gICAgICAgID8gaGlkZU9uU2Nyb2xsXG4gICAgICAgIDogaXNCcmVha3BvaW50KCd6ZXJvJywgaGlkZU9uU2Nyb2xsLCB7IGluY2x1ZGVNYXhCcmVha3BvaW50OiB0cnVlIH0pO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWhpZGUtaGVhZGVyJywgIWhpZGVIZWFkZXIgPyBmYWxzZSA6IHZhbHVlKTtcbiAgICB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQgJiZcbiAgICAgIHRoaXMuX2RpYWxvZ1RpdGxlRWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaGlkZS1oZWFkZXInLCAhaGlkZUhlYWRlciA/IGZhbHNlIDogdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0T3ZlcmZsb3dzRGF0YUF0dHJpYnV0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1vdmVyZmxvd3MnLCB0aGlzLl9vdmVyZmxvd3MpO1xuICAgIHRoaXMuX2RpYWxvZ1RpdGxlRWxlbWVudD8udG9nZ2xlQXR0cmlidXRlKCdkYXRhLW92ZXJmbG93cycsIHRoaXMuX292ZXJmbG93cyk7XG4gICAgdGhpcy5fZGlhbG9nQWN0aW9uc0VsZW1lbnQ/LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1vdmVyZmxvd3MnLCB0aGlzLl9vdmVyZmxvd3MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWRpYWxvZ19fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7KGV2ZW50OiBBbmltYXRpb25FdmVudCkgPT4gdGhpcy5vbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQpfVxuICAgICAgICAgIGNsYXNzPVwic2JiLWRpYWxvZ1wiXG4gICAgICAgICAgaWQ9JHt0aGlzLl9kaWFsb2dJZH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIEBjbGljaz0keyhldmVudDogRXZlbnQpID0+IHRoaXMuY2xvc2VPblNiYk92ZXJsYXlDbG9zZUNsaWNrKGV2ZW50KX1cbiAgICAgICAgICAgIGNsYXNzPVwic2JiLWRpYWxvZ19fd3JhcHBlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHkgYXJpYS1saXZlPVwicG9saXRlXCI+PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kaWFsb2cnOiBTYmJEaWFsb2dFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsSUFBSSxTQUFTO0FBZUEsSUFBQSxtQkFBTixjQUErQixzQkFBc0I7QUFBQSxFQUFyRCxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFJdUMsU0FBTyxpQkFBbUM7QUFNdEYsU0FBUSwrQkFBK0IsSUFBSTtBQUFBLE1BQXVCLE1BQ2hFLFdBQVcsTUFBTSxLQUFLLGtCQUFrQjtBQUFBLElBQUE7QUFHMUMsU0FBUSxzQkFBb0Q7QUFFNUQsU0FBUSx3QkFBNEM7QUFDcEQsU0FBUSx3QkFBd0Q7QUFDaEUsU0FBUSw4QkFBdUM7QUFDL0MsU0FBUSxhQUFzQjtBQUM5QixTQUFRLGNBQWM7QUFDZCxTQUFBLFlBQVksY0FBYyxRQUFRO0FBQzFDLFNBQVUsaUJBQXlCO0FBeUszQixTQUFBLHVCQUF1QixDQUFDLFVBQThCO0FBQ3hELFVBQUEsS0FBSyxtQkFBbUIsU0FBUztBQUNuQztBQUFBLE1BQ0Y7QUFFQSxXQUFLLDhCQUE4QixNQUNoQyxhQUNBLEVBQUEsT0FBTyxD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
442
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy9kaWFsb2cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB7IGdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudCwgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBpc0JyZWFrcG9pbnQgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBBZ25vc3RpY1Jlc2l6ZU9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuaW1wb3J0IHsgYXBwbHlJbmVydE1lY2hhbmlzbSwgcmVtb3ZlSW5lcnRNZWNoYW5pc20gfSBmcm9tICcuLi8uLi9jb3JlL292ZXJsYXkuanMnO1xuaW1wb3J0IHsgb3ZlcmxheVJlZnMsIFNiYk92ZXJsYXlCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL292ZXJsYXkuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEaWFsb2dBY3Rpb25zRWxlbWVudCB9IGZyb20gJy4uL2RpYWxvZy1hY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGlhbG9nVGl0bGVFbGVtZW50IH0gZnJvbSAnLi4vZGlhbG9nLXRpdGxlLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGlhbG9nLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gaW50ZXJhY3RpdmUgb3ZlcmxheSBlbGVtZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gcHJvdmlkZSBhIGBzYmItZGlhbG9nLXRpdGxlYCwgYHNiYi1kaWFsb2ctY29udGVudGAgYW5kIGFuIG9wdGlvbmFsIGBzYmItZGlhbG9nLWFjdGlvbnNgLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gd2lsbE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1kaWFsb2dgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkaWRPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZGlhbG9nYCBpcyBvcGVuZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1kaWFsb2dgIGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZGlhbG9nYCBpcyBjbG9zZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItZGlhbG9nLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kaWFsb2cnKVxuZXhwb3J0IGNsYXNzIFNiYkRpYWxvZ0VsZW1lbnQgZXh0ZW5kcyBTYmJPdmVybGF5QmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogQmFja2Ryb3AgY2xpY2sgYWN0aW9uLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdiYWNrZHJvcC1hY3Rpb24nIH0pIHB1YmxpYyBiYWNrZHJvcEFjdGlvbjogJ2Nsb3NlJyB8ICdub25lJyA9ICdjbG9zZSc7XG5cbiAgLy8gV2UgdXNlIGEgdGltZW91dCBhcyBhIHdvcmthcm91bmQgdG8gdGhlIFwiUmVzaXplT2JzZXJ2ZXIgbG9vcCBjb21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJlZCBub3RpZmljYXRpb25zXCIgZXJyb3IuXG4gIC8vIEZvciBtb3JlIGRldGFpbHM6XG4gIC8vIC0gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvcmVzaXplLW9ic2VydmVyL2lzc3Vlcy8zOCNpc3N1ZWNvbW1lbnQtNDIyMTI2MDA2XG4gIC8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2p1Z2dsZS9yZXNpemUtb2JzZXJ2ZXIvaXNzdWVzLzEwMyNpc3N1ZWNvbW1lbnQtMTcxMTE0ODI4NVxuICBwcml2YXRlIF9kaWFsb2dDb250ZW50UmVzaXplT2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNSZXNpemVPYnNlcnZlcigoKSA9PlxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fb25Db250ZW50UmVzaXplKCkpLFxuICApO1xuXG4gIHByaXZhdGUgX2RpYWxvZ1RpdGxlRWxlbWVudDogU2JiRGlhbG9nVGl0bGVFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2RpYWxvZ1RpdGxlSGVpZ2h0PzogbnVtYmVyO1xuICBwcml2YXRlIF9kaWFsb2dDb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZGlhbG9nQWN0aW9uc0VsZW1lbnQ6IFNiYkRpYWxvZ0FjdGlvbnNFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2lzUG9pbnRlckRvd25FdmVudE9uRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX292ZXJmbG93czogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9sYXN0U2Nyb2xsID0gMDtcbiAgcHJpdmF0ZSBfZGlhbG9nSWQgPSBgc2JiLWRpYWxvZy0ke25leHRJZCsrfWA7XG4gIHByb3RlY3RlZCBjbG9zZUF0dHJpYnV0ZTogc3RyaW5nID0gJ3NiYi1kaWFsb2ctY2xvc2UnO1xuXG4gIC8qKiBPcGVucyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBkaWFsb2cgZWxlbWVudHNcbiAgICB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQgPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1kaWFsb2ctdGl0bGUnKTtcbiAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudCA9IHRoaXMucXVlcnlTZWxlY3Rvcignc2JiLWRpYWxvZy1jb250ZW50Jyk/LnNoYWRvd1Jvb3QhXG4gICAgICAuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5fZGlhbG9nQWN0aW9uc0VsZW1lbnQgPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1kaWFsb2ctYWN0aW9ucycpO1xuXG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG5cbiAgICAvLyBBZGQgdGhpcyBkaWFsb2cgdG8gdGhlIGdsb2JhbCBjb2xsZWN0aW9uXG4gICAgb3ZlcmxheVJlZnMucHVzaCh0aGlzIGFzIFNiYkRpYWxvZ0VsZW1lbnQpO1xuICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50KTtcblxuICAgIC8vIERpc2FibGUgc2Nyb2xsaW5nIGZvciBjb250ZW50IGJlbG93IHRoZSBkaWFsb2dcbiAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGlzYWJsZVNjcm9sbCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAvLyBDbG9zZSBkaWFsb2cgb24gYmFja2Ryb3AgY2xpY2tcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lciwge1xuICAgICAgc2lnbmFsOiB0aGlzLm92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrLCB7XG4gICAgICBzaWduYWw6IHRoaXMub3ZlcmxheUNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAvLyBTeW5jaHJvbml6ZSB0aGUgbmVnYXRpdmUgc3RhdGUgYmVmb3JlIHRoZSBmaXJzdCBvcGVuaW5nIHRvIGF2b2lkIGEgcG9zc2libGUgY29sb3IgZmxhc2ggaWYgaXQgaXMgbmVnYXRpdmUuXG4gICAgdGhpcy5fZGlhbG9nVGl0bGVFbGVtZW50ID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdzYmItZGlhbG9nLXRpdGxlJykhO1xuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTogdm9pZCB7XG4gICAgc3VwZXIuYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTtcblxuICAgIC8vIElmIHRoZSBjb250ZW50IG92ZXJmbG93cywgc2hvdy9oaWRlIHRoZSBkaWFsb2cgaGVhZGVyIG9uIHNjcm9sbC5cbiAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fb25Db250ZW50U2Nyb2xsKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0SGlkZUhlYWRlckRhdGFBdHRyaWJ1dGUoZmFsc2UpLCB7XG4gICAgICBzaWduYWw6IHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFdhaXQgZm9yIGRpYWxvZyB0cmFuc2l0aW9uIHRvIGNvbXBsZXRlLlxuICAvLyBJbiByYXJlIGNhc2VzLCBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgLy8gVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICBwcm90ZWN0ZWQgb25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgICB0aGlzLmRpZE9wZW4uZW1pdCgpO1xuICAgICAgYXBwbHlJbmVydE1lY2hhbmlzbSh0aGlzKTtcbiAgICAgIHRoaXMuYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTtcbiAgICAgIHRoaXMuc2V0T3ZlcmxheUZvY3VzKCk7XG4gICAgICAvLyBVc2UgdGltZW91dCB0byByZWFkIGxhYmVsIGFmdGVyIGZvY3VzZWQgZWxlbWVudFxuICAgICAgc2V0VGltZW91dCgoKSA9PlxuICAgICAgICB0aGlzLnNldEFyaWFMaXZlUmVmQ29udGVudChcbiAgICAgICAgICB0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCB8fCB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQ/LmlubmVyVGV4dC50cmltKCksXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgdGhpcy5mb2N1c0hhbmRsZXIudHJhcCh0aGlzKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9zZXRIaWRlSGVhZGVyRGF0YUF0dHJpYnV0ZShmYWxzZSk7XG4gICAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudD8uc2Nyb2xsVG8oMCwgMCk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgICByZW1vdmVJbmVydE1lY2hhbmlzbSgpO1xuICAgICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyh0aGlzLmxhc3RGb2N1c2VkRWxlbWVudCk7XG4gICAgICAvLyBNYW51YWxseSBmb2N1cyBsYXN0IGZvY3VzZWQgZWxlbWVudFxuICAgICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuZm9jdXNIYW5kbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLnJlbW92ZUluc3RhbmNlRnJvbUdsb2JhbENvbGxlY3Rpb24oKTtcbiAgICAgIC8vIEVuYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIGRpYWxvZyBpZiBubyBkaWFsb2cgaXMgb3BlblxuICAgICAgIW92ZXJsYXlSZWZzLmxlbmd0aCAmJiB0aGlzLnNjcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gICAgICB0aGlzLmRpZENsb3NlLmVtaXQoe1xuICAgICAgICByZXR1cm5WYWx1ZTogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgICAgY2xvc2VUYXJnZXQ6IHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBmb2N1cyBvbiB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQuXG4gIHByb3RlY3RlZCBzZXRPdmVybGF5Rm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgZmlyc3RGb2N1c2FibGUgPSBnZXRGaXJzdEZvY3VzYWJsZUVsZW1lbnQoXG4gICAgICBBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4pLmZpbHRlcigoZSk6IGUgaXMgSFRNTEVsZW1lbnQgPT4gZSBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudCksXG4gICAgKTtcbiAgICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzKGZpcnN0Rm9jdXNhYmxlKTtcbiAgICBmaXJzdEZvY3VzYWJsZT8uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlhbG9nVGl0bGVFbGVtZW50KSB7XG4gICAgICB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9kaWFsb2dBY3Rpb25zRWxlbWVudCkge1xuICAgICAgdGhpcy5fZGlhbG9nQWN0aW9uc0VsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW5lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25Db250ZW50U2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZGlhbG9nQ29udGVudEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNWaXNpYmxlSGVhZGVyID0gdGhpcy5kYXRhc2V0LmhpZGVIZWFkZXIgPT09IHVuZGVmaW5lZDtcblxuICAgIC8vIENoZWNrIHdoZXRoZXIgaGlkaW5nIHRoZSBoZWFkZXIgd291bGQgbWFrZSB0aGUgc2Nyb2xsYmFyIGRpc2FwcGVhclxuICAgIC8vIGFuZCBwcmV2ZW50IHRoZSBoaWRpbmcgYW5pbWF0aW9uIGlmIHNvLlxuICAgIGlmIChcbiAgICAgIGhhc1Zpc2libGVIZWFkZXIgJiZcbiAgICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50LmNsaWVudEhlaWdodCArIHRoaXMuX2RpYWxvZ1RpdGxlSGVpZ2h0ISA+PVxuICAgICAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gdGhpcy5fZGlhbG9nQ29udGVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgIGlmIChcbiAgICAgIE1hdGgucm91bmQoY3VycmVudFNjcm9sbCArIHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50LmNsaWVudEhlaWdodCkgPj1cbiAgICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBDaGVjayB3aGV0aGVyIGlzIHNjcm9sbGluZyBkb3duIG9yIHVwLlxuICAgIGlmIChjdXJyZW50U2Nyb2xsID4gMCAmJiB0aGlzLl9sYXN0U2Nyb2xsIDwgY3VycmVudFNjcm9sbCkge1xuICAgICAgLy8gU2Nyb2xsaW5nIGRvd25cbiAgICAgIHRoaXMuX3NldEhpZGVIZWFkZXJEYXRhQXR0cmlidXRlKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTY3JvbGxpbmcgdXBcbiAgICAgIHRoaXMuX3NldEhpZGVIZWFkZXJEYXRhQXR0cmlidXRlKGZhbHNlKTtcbiAgICB9XG4gICAgLy8gYGN1cnJlbnRTY3JvbGxgIGNhbiBiZSBuZWdhdGl2ZSwgZS5nLiBvbiBtb2JpbGU7IHRoaXMgaXMgbm90IGFsbG93ZWQuXG4gICAgdGhpcy5fbGFzdFNjcm9sbCA9IGN1cnJlbnRTY3JvbGwgPD0gMCA/IDAgOiBjdXJyZW50U2Nyb2xsO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHBvaW50ZXJkb3duIGV2ZW50IHRhcmdldCBpcyB0cmlnZ2VyZWQgb24gdGhlIGRpYWxvZy5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKHRoaXMuYmFja2Ryb3BBY3Rpb24gIT09ICdjbG9zZScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbkRpYWxvZyA9IGV2ZW50XG4gICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgIC5maWx0ZXIoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IGUgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpXG4gICAgICAuc29tZSgodGFyZ2V0KSA9PiB0YXJnZXQuaWQgPT09IHRoaXMuX2RpYWxvZ0lkKTtcbiAgfTtcblxuICAvLyBDbG9zZSBkaWFsb2cgb24gYmFja2Ryb3AgY2xpY2suXG4gIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5iYWNrZHJvcEFjdGlvbiAhPT0gJ2Nsb3NlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbkRpYWxvZyAmJlxuICAgICAgIWV2ZW50XG4gICAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgICAuZmlsdGVyKChlKTogZSBpcyBIVE1MRWxlbWVudCA9PiBlIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50KVxuICAgICAgICAuc29tZSgodGFyZ2V0KSA9PiB0YXJnZXQuaWQgPT09IHRoaXMuX2RpYWxvZ0lkKVxuICAgICkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9zZXREaWFsb2dIZWFkZXJIZWlnaHQoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nVGl0bGVIZWlnaHQgPSB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQ/LnNoYWRvd1Jvb3QhLmZpcnN0RWxlbWVudENoaWxkIS5jbGllbnRIZWlnaHQ7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItZGlhbG9nLWhlYWRlci1oZWlnaHQnLCBgJHt0aGlzLl9kaWFsb2dUaXRsZUhlaWdodH1weGApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25Db250ZW50UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMuX3NldERpYWxvZ0hlYWRlckhlaWdodCgpO1xuICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIGNvbnRlbnQgb3ZlcmZsb3dzIGFuZCBzZXQgdGhlIGBvdmVyZmxvd3NgIGF0dHJpYnV0ZS5cbiAgICB0aGlzLl9vdmVyZmxvd3MgPSB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudFxuICAgICAgPyB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudD8uc2Nyb2xsSGVpZ2h0ID4gdGhpcy5fZGlhbG9nQ29udGVudEVsZW1lbnQ/LmNsaWVudEhlaWdodFxuICAgICAgOiBmYWxzZTtcbiAgICB0aGlzLl9zZXRPdmVyZmxvd3NEYXRhQXR0cmlidXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRIaWRlSGVhZGVyRGF0YUF0dHJpYnV0ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGhpZGVPblNjcm9sbCA9IHRoaXMuX2RpYWxvZ1RpdGxlRWxlbWVudD8uaGlkZU9uU2Nyb2xsID8/IGZhbHNlO1xuICAgIGNvbnN0IGhpZGVIZWFkZXIgPVxuICAgICAgdHlwZW9mIGhpZGVPblNjcm9sbCA9PT0gJ2Jvb2xlYW4nXG4gICAgICAgID8gaGlkZU9uU2Nyb2xsXG4gICAgICAgIDogaXNCcmVha3BvaW50KCd6ZXJvJywgaGlkZU9uU2Nyb2xsLCB7IGluY2x1ZGVNYXhCcmVha3BvaW50OiB0cnVlIH0pO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWhpZGUtaGVhZGVyJywgIWhpZGVIZWFkZXIgPyBmYWxzZSA6IHZhbHVlKTtcbiAgICB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQgJiZcbiAgICAgIHRoaXMuX2RpYWxvZ1RpdGxlRWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaGlkZS1oZWFkZXInLCAhaGlkZUhlYWRlciA/IGZhbHNlIDogdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0T3ZlcmZsb3dzRGF0YUF0dHJpYnV0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1vdmVyZmxvd3MnLCB0aGlzLl9vdmVyZmxvd3MpO1xuICAgIHRoaXMuX2RpYWxvZ1RpdGxlRWxlbWVudD8udG9nZ2xlQXR0cmlidXRlKCdkYXRhLW92ZXJmbG93cycsIHRoaXMuX292ZXJmbG93cyk7XG4gICAgdGhpcy5fZGlhbG9nQWN0aW9uc0VsZW1lbnQ/LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1vdmVyZmxvd3MnLCB0aGlzLl9vdmVyZmxvd3MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWRpYWxvZ19fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7KGV2ZW50OiBBbmltYXRpb25FdmVudCkgPT4gdGhpcy5vbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQpfVxuICAgICAgICAgIGNsYXNzPVwic2JiLWRpYWxvZ1wiXG4gICAgICAgICAgaWQ9JHt0aGlzLl9kaWFsb2dJZH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIEBjbGljaz0keyhldmVudDogRXZlbnQpID0+IHRoaXMuY2xvc2VPblNiYk92ZXJsYXlDbG9zZUNsaWNrKGV2ZW50KX1cbiAgICAgICAgICAgIGNsYXNzPVwic2JiLWRpYWxvZ19fd3JhcHBlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHkgYXJpYS1saXZlPVwicG9saXRlXCI+PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kaWFsb2cnOiBTYmJEaWFsb2dFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsSUFBSSxTQUFTO0FBZUEsSUFBQSxtQkFBTixjQUErQixzQkFBc0I7QUFBQSxFQUFyRCxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFJdUMsU0FBTyxpQkFBbUM7QUFNdEYsU0FBUSwrQkFBK0IsSUFBSTtBQUFBLE1BQXVCLE1BQ2hFLFdBQVcsTUFBTSxLQUFLLGtCQUFrQjtBQUFBLElBQUE7QUFHMUMsU0FBUSxzQkFBb0Q7QUFFNUQsU0FBUSx3QkFBNEM7QUFDcEQsU0FBUSx3QkFBd0Q7QUFDaEUsU0FBUSw4QkFBdUM7QUFDL0MsU0FBUSxhQUFzQjtBQUM5QixTQUFRLGNBQWM7QUFDZCxTQUFBLFlBQVksY0FBYyxRQUFRO0FBQzFDLFNBQVUsaUJBQXlCO0FBeUszQixTQUFBLHVCQUF1QixDQUFDLFVBQThCO0FBQ3hELFVBQUEsS0FBSyxtQkFBbUIsU0FBUztBQUNuQztBQUFBLE1BQ0Y7QUFFQSxXQUFLLDhCQUE4QixNQUNoQyxhQUNBLEVBQUEsT0FBTyxDQUFDLE1BQXdCLGFBQWEsT0FBTyxXQUFXLEVBQy9ELEtBQUssQ0FBQyxXQUFXLE9BQU8sT0FBTyxLQUFLLFNBQVM7QUFBQSxJQUFBO0FBSTFDLFNBQUEsd0JBQXdCLENBQUMsVUFBOEI7QUFDekQsVUFBQSxLQUFLLG1CQUFtQixTQUFTO0FBQ25DO0FBQUEsTUFDRjtBQUdFLFVBQUEsQ0FBQyxLQUFLLCtCQUNOLENBQUMsTUFDRSxlQUNBLE9BQU8sQ0FBQyxNQUF3QixhQUFhLE9BQU8sV0FBVyxFQUMvRCxLQUFLLENBQUMsV0FBVyxPQUFPLE9BQU8sS0FBSyxTQUFTLEdBQ2hEO0FBQ0EsYUFBSyxNQUFNO0FBQUEsTUFDYjtBQUFBLElBQUE7QUFBQSxFQUNGO0FBQUE7QUFBQSxFQWhNTyxPQUFhOztBQUNkLFFBQUEsS0FBSyxVQUFVLFVBQVU7QUFDM0I7QUFBQSxJQUNGO0FBQ0EsU0FBSyxxQkFBcUIsU0FBUztBQUc5QixTQUFBLHNCQUFzQixLQUFLLGNBQWMsa0JBQWtCO0FBQ2hFLFNBQUsseUJBQXdCLFVBQUssY0FBYyxvQkFBb0IsTUFBdkMsbUJBQTBDLFdBQ3BFO0FBQ0UsU0FBQSx3QkFBd0IsS0FBSyxjQUFjLG9CQUFvQjtBQUVwRSxTQUFLLGNBQWM7QUFFbkIsUUFBSSxDQUFDLEtBQUssU0FBUyxRQUFRO0FBQ3pCO0FBQUEsSUFDRjtBQUNBLFNBQUssUUFBUTtBQUdiLGdCQUFZLEtBQUssSUFBd0I7QUFDcEMsU0FBQSw2QkFBNkIsUUFBUSxLQUFLLHFCQUFxQjtBQUdwRSxTQUFLLGNBQWM7RUFDckI7QUFBQSxFQUVnQixvQkFBMEI7QUFDeEMsVUFBTSxrQkFBa0I7QUFHbkIsU0FBQSxpQkFBaUIsZUFBZSxLQUFLLHNCQUFzQjtBQUFBLE1BQzlELFFBQVEsS0FBSyxrQkFBa0I7QUFBQSxJQUFBLENBQ2hDO0FBQ0ksU0FBQSxpQkFBaUIsYUFBYSxLQUFLLHVCQUF1QjtBQUFBLE1BQzdELFFBQVEsS0FBSyxrQkFBa0I7QUFBQSxJQUFBLENBQ2hDO0FBQUEsRUFDSDtBQUFBLEVBRW1CLGFBQWEsbUJBQStDO0FBRXhFLFNBQUEsc0JBQXNCLEtBQUssY0FBYyxrQkFBa0I7QUFDaEUsU0FBSyxjQUFjO0FBQ25CLFVBQU0sYUFBYSxpQkFBaUI7QUFBQSxFQUN0QztBQUFBLEVBRW1CLFdBQVcsbUJBQStDO0FBQzNFLFVBQU0sV0FBVyxpQkFBaUI7QUFFOUIsUUFBQSxrQkFBa0IsSUFBSSxVQUFVLEdBQUc7QUFDckMsV0FBSyxjQUFjO0FBQUEsSUFDckI7QUFBQSxFQUNGO0FBQUEsRUFFZ0IsdUJBQTZCO0FBQzNDLFVBQU0scUJBQXFCO0FBQzNCLFNBQUssNkJBQTZCO0VBQ3BDO0FBQUEsRUFFbUIsMEJBQWdDOztBQUNqRCxVQUFNLHdCQUF3QjtBQUc5QixlQUFLLDBCQUFMLG1CQUE0QixpQkFBaUIsVUFBVSxNQUFNLEtBQUssb0JBQW9CO0FBQUEsTUFDcEYsU0FBUztBQUFBLE1BQ1QsUUFBUSxLQUFLLHNCQUFzQjtBQUFBLElBQUE7QUFFckMsV0FBTyxpQkFBaUIsVUFBVSxNQUFNLEtBQUssNEJBQTRCLEtBQUssR0FBRztBQUFBLE1BQy9FLFFBQVEsS0FBSyxzQkFBc0I7QUFBQSxJQUFBLENBQ3BDO0FBQUEsRUFDSDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS1Usc0JBQXNCLE9BQTZCOztBQUMzRCxRQUFJLE1BQU0sa0JBQWtCLFVBQVUsS0FBSyxVQUFVLFdBQVc7QUFDOUQsV0FBSyxRQUFRO0FBQ2IsV0FBSyxRQUFRO0FBQ2IsMEJBQW9CLElBQUk7QUFDeEIsV0FBSyx3QkFBd0I7QUFDN0IsV0FBSyxnQkFBZ0I7QUFFckI7QUFBQSxRQUFXLE1BQUE7O0FBQ1Qsc0JBQUs7QUFBQSxZQUNILEtBQUssd0JBQXNCQSxNQUFBLEtBQUssd0JBQUwsZ0JBQUFBLElBQTBCLFVBQVU7QUFBQSxVQUNqRTtBQUFBO0FBQUEsTUFBQTtBQUVHLFdBQUEsYUFBYSxLQUFLLElBQUk7QUFBQSxJQUFBLFdBQ2xCLE1BQU0sa0JBQWtCLFdBQVcsS0FBSyxVQUFVLFdBQVc7QUFDdEUsV0FBSyw0QkFBNEIsS0FBSztBQUNqQyxpQkFBQSwwQkFBQSxtQkFBdUIsU0FBUyxHQUFHO0FBQ3hDLFdBQUssUUFBUTtBQUNRO0FBQ3JCLDZCQUF1QixLQUFLLGtCQUFrQjtBQUU5QyxpQkFBSyx1QkFBTCxtQkFBeUI7QUFDekIsaUJBQUssMEJBQUwsbUJBQTRCO0FBQzVCLFdBQUssYUFBYTtBQUNsQixXQUFLLDZCQUE2QjtBQUNsQyxXQUFLLG1DQUFtQztBQUV4QyxPQUFDLFlBQVksVUFBVSxLQUFLLGNBQWMsYUFBYTtBQUN2RCxXQUFLLFNBQVMsS0FBSztBQUFBLFFBQ2pCLGFBQWEsS0FBSztBQUFBLFFBQ2xCLGFBQWEsS0FBSztBQUFBLE1BQUEsQ0FDbkI7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUFBO0FBQUEsRUFHVSxrQkFBd0I7QUFDaEMsVUFBTSxpQkFBaUI7QUFBQSxNQUNyQixNQUFNLEtBQUssS0FBSyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQXdCLGFBQWEsT0FBTyxXQUFXO0FBQUEsSUFBQTtBQUUzRiwyQkFBdUIsY0FBYztBQUNyQyxxREFBZ0I7QUFBQSxFQUNsQjtBQUFBLEVBRVEsZ0JBQXNCO0FBQzVCLFFBQUksS0FBSyxxQkFBcUI7QUFDdkIsV0FBQSxvQkFBb0IsV0FBVyxLQUFLO0FBQUEsSUFDM0M7QUFFQSxRQUFJLEtBQUssdUJBQXVCO0FBQzlCLFdBQUssc0JBQXNCLGdCQUFnQixpQkFBaUIsS0FBSyxRQUFRO0FBQUEsSUFDM0U7QUFBQSxFQUNGO0FBQUEsRUFFUSxtQkFBeUI7QUFDM0IsUUFBQSxDQUFDLEtBQUssdUJBQXVCO0FBQy9CO0FBQUEsSUFDRjtBQUVNLFVBQUEsbUJBQW1CLEtBQUssUUFBUSxlQUFlO0FBS25ELFFBQUEsb0JBQ0EsS0FBSyxzQkFBc0IsZUFBZSxLQUFLLHNCQUM3QyxLQUFLLHNCQUFzQixjQUM3QjtBQUNBO0FBQUEsSUFDRjtBQUVNLFVBQUEsZ0JBQWdCLEtBQUssc0JBQXNCO0FBRS9DLFFBQUEsS0FBSyxNQUFNLGdCQUFnQixLQUFLLHNCQUFzQixZQUFZLEtBQ2xFLEtBQUssc0JBQXNCLGNBQzNCO0FBQ0E7QUFBQSxJQUNGO0FBRUEsUUFBSSxnQkFBZ0IsS0FBSyxLQUFLLGNBQWMsZUFBZTtBQUV6RCxXQUFLLDRCQUE0QixJQUFJO0FBQUEsSUFBQSxPQUNoQztBQUVMLFdBQUssNEJBQTRCLEtBQUs7QUFBQSxJQUN4QztBQUVLLFNBQUEsY0FBYyxpQkFBaUIsSUFBSSxJQUFJO0FBQUEsRUFDOUM7QUFBQSxFQStCUSx5QkFBK0I7O0FBQ3JDLFNBQUssc0JBQXFCLFVBQUssd0JBQUwsbUJBQTBCLFdBQVksa0JBQW1CO0FBQ25GLFNBQUssTUFBTSxZQUFZLDhCQUE4QixHQUFHLEtBQUssa0JBQWtCLElBQUk7QUFBQSxFQUNyRjtBQUFBLEVBRVEsbUJBQXlCOztBQUMvQixTQUFLLHVCQUF1QjtBQUV2QixTQUFBLGFBQWEsS0FBSywwQkFDbkIsVUFBSywwQkFBTCxtQkFBNEIsa0JBQWUsVUFBSywwQkFBTCxtQkFBNEIsZ0JBQ3ZFO0FBQ0osU0FBSywyQkFBMkI7QUFBQSxFQUNsQztBQUFBLEVBRVEsNEJBQTRCLE9BQXNCOztBQUNsRCxVQUFBLGlCQUFlLFVBQUssd0JBQUwsbUJBQTBCLGlCQUFnQjtBQUN6RCxVQUFBLGFBQ0osT0FBTyxpQkFBaUIsWUFDcEIsZUFDQSxhQUFhLFFBQVEsY0FBYyxFQUFFLHNCQUFzQixLQUFNLENBQUE7QUFDdkUsU0FBSyxnQkFBZ0Isb0JBQW9CLENBQUMsYUFBYSxRQUFRLEtBQUs7QUFDL0QsU0FBQSx1QkFDSCxLQUFLLG9CQUFvQixnQkFBZ0Isb0JBQW9CLENBQUMsYUFBYSxRQUFRLEtBQUs7QUFBQSxFQUM1RjtBQUFBLEVBRVEsNkJBQW1DOztBQUNwQyxTQUFBLGdCQUFnQixrQkFBa0IsS0FBSyxVQUFVO0FBQ3RELGVBQUssd0JBQUwsbUJBQTBCLGdCQUFnQixrQkFBa0IsS0FBSztBQUNqRSxlQUFLLDBCQUFMLG1CQUE0QixnQkFBZ0Isa0JBQWtCLEtBQUs7QUFBQSxFQUNyRTtBQUFBLEVBRW1CLFNBQXlCO0FBQ25DLFdBQUE7QUFBQTtBQUFBO0FBQUEsMEJBR2UsQ0FBQyxVQUEwQixLQUFLLHNCQUFzQixLQUFLLENBQUM7QUFBQTtBQUFBLGVBRXZFLEtBQUssU0FBUztBQUFBO0FBQUE7QUFBQSxxQkFHUixDQUFDLFVBQWlCLEtBQUssNEJBQTRCLEtBQUssQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVM1RTtBQUNGO0FBN1FhLGlCQUNZLFNBQXlCO0FBR0csZ0JBQUE7QUFBQSxFQUFsRCxTQUFTLEVBQUUsV0FBVyxtQkFBbUI7QUFBQSxHQUovQixpQkFJd0MsV0FBQSxrQkFBQSxDQUFBO0FBSnhDLG1CQUFOLGdCQUFBO0FBQUEsRUFETixjQUFjLFlBQVk7QUFBQSxHQUNkLGdCQUFBOyJ9
@@ -16,6 +16,12 @@ const style = css`/**
16
16
  * }
17
17
  */
18
18
  /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
19
+ /*
20
+ * SBB table mixin
21
+ * Notes:
22
+ * We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
23
+ * Therefore, we have to build the grid avoiding double borders.
24
+ */
19
25
  *,
20
26
  ::before,
21
27
  ::after {
@@ -81,4 +87,4 @@ SbbDividerElement = __decorateClass([
81
87
  export {
82
88
  SbbDividerElement
83
89
  };
84
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGl2aWRlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RpdmlkZXIvZGl2aWRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcmllbnRhdGlvbiB9IGZyb20gJy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5pbXBvcnQgeyBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vY29yZS9taXhpbnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kaXZpZGVyLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYSBkaXZpZGVyIGJldHdlZW4gc2VjdGlvbnMuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItZGl2aWRlcicpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICByb2xlOiAnc2VwYXJhdG9yJyxcbn0pXG5leHBvcnQgY2xhc3MgU2JiRGl2aWRlckVsZW1lbnQgZXh0ZW5kcyBTYmJOZWdhdGl2ZU1peGluKExpdEVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIE9yaWVudGF0aW9uIHByb3BlcnR5IHdpdGggcG9zc2libGUgdmFsdWVzICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcuIERlZmF1bHRzIHRvIGhvcml6b250YWwuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIG9yaWVudGF0aW9uOiBTYmJPcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ29yaWVudGF0aW9uJykpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhcmlhLW9yaWVudGF0aW9uJywgdGhpcy5vcmllbnRhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgIDxkaXYgY2xhc3M9XCJzYmItZGl2aWRlclwiPjwvZGl2PiBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGl2aWRlcic6IFNiYkRpdmlkZXJFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCTyxJQUFNLG9CQUFOLGNBQWdDLGlCQUFpQixVQUFVLEVBQUU7QUFBQSxFQUE3RCxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFJd0IsU0FBTyxjQUE4QjtBQUFBLEVBQUE7QUFBQSxFQUUvQyxXQUFXLG1CQUErQztBQUMzRSxVQUFNLFdBQVcsaUJBQWlCO0FBRTlCLFFBQUEsa0JBQWtCLElBQUksYUFBYSxHQUFHO0FBQ25DLFdBQUEsYUFBYSxvQkFBb0IsS0FBSyxXQUFXO0FBQUEsSUFDeEQ7QUFBQSxFQUNGO0FBQUEsRUFFbUIsU0FBeUI7QUFDbkMsV0FBQTtBQUFBLEVBQ1Q7QUFDRjtBQWpCYSxrQkFDWSxTQUF5QjtBQUdaLGdCQUFBO0FBQUEsRUFBbkMsU0FBUyxFQUFFLFNBQVMsTUFBTTtBQUFBLEdBSmhCLGtCQUl5QixXQUFBLGVBQUEsQ0FBQTtBQUp6QixvQkFBTixnQkFBQTtBQUFBLEVBSk4sY0FBYyxhQUFhO0FBQUEsRUFDM0IsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLEVBQUEsQ0FDUDtBQUFBLEdBQ1ksaUJBQUE7In0=
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGl2aWRlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RpdmlkZXIvZGl2aWRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcmllbnRhdGlvbiB9IGZyb20gJy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5pbXBvcnQgeyBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vY29yZS9taXhpbnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kaXZpZGVyLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYSBkaXZpZGVyIGJldHdlZW4gc2VjdGlvbnMuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItZGl2aWRlcicpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICByb2xlOiAnc2VwYXJhdG9yJyxcbn0pXG5leHBvcnQgY2xhc3MgU2JiRGl2aWRlckVsZW1lbnQgZXh0ZW5kcyBTYmJOZWdhdGl2ZU1peGluKExpdEVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIE9yaWVudGF0aW9uIHByb3BlcnR5IHdpdGggcG9zc2libGUgdmFsdWVzICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcuIERlZmF1bHRzIHRvIGhvcml6b250YWwuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIG9yaWVudGF0aW9uOiBTYmJPcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ29yaWVudGF0aW9uJykpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhcmlhLW9yaWVudGF0aW9uJywgdGhpcy5vcmllbnRhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgIDxkaXYgY2xhc3M9XCJzYmItZGl2aWRlclwiPjwvZGl2PiBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGl2aWRlcic6IFNiYkRpdmlkZXJFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCTyxJQUFNLG9CQUFOLGNBQWdDLGlCQUFpQixVQUFVLEVBQUU7QUFBQSxFQUE3RCxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFJd0IsU0FBTyxjQUE4QjtBQUFBLEVBQUE7QUFBQSxFQUUvQyxXQUFXLG1CQUErQztBQUMzRSxVQUFNLFdBQVcsaUJBQWlCO0FBRTlCLFFBQUEsa0JBQWtCLElBQUksYUFBYSxHQUFHO0FBQ25DLFdBQUEsYUFBYSxvQkFBb0IsS0FBSyxXQUFXO0FBQUEsSUFDeEQ7QUFBQSxFQUNGO0FBQUEsRUFFbUIsU0FBeUI7QUFDbkMsV0FBQTtBQUFBLEVBQ1Q7QUFDRjtBQWpCYSxrQkFDWSxTQUF5QjtBQUdaLGdCQUFBO0FBQUEsRUFBbkMsU0FBUyxFQUFFLFNBQVMsTUFBTTtBQUFBLEdBSmhCLGtCQUl5QixXQUFBLGVBQUEsQ0FBQTtBQUp6QixvQkFBTixnQkFBQTtBQUFBLEVBSk4sY0FBYyxhQUFhO0FBQUEsRUFDM0IsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLEVBQUEsQ0FDUDtBQUFBLEdBQ1ksaUJBQUE7In0=
@@ -15,6 +15,12 @@ const style = css`/**
15
15
  * }
16
16
  */
17
17
  /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
18
+ /*
19
+ * SBB table mixin
20
+ * Notes:
21
+ * We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
22
+ * Therefore, we have to build the grid avoiding double borders.
23
+ */
18
24
  *,
19
25
  ::before,
20
26
  ::after {
@@ -80,4 +86,4 @@ SbbExpansionPanelContentElement = __decorateClass([
80
86
  export {
81
87
  SbbExpansionPanelContentElement
82
88
  };
83
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQvZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2V4cGFuc2lvbi1wYW5lbC1jb250ZW50LnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgY2FuIGJlIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIHRoZSBjb250ZW50IG9mIHRoZSBgc2JiLWV4cGFuc2lvbi1wYW5lbGAgY29tcG9uZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGNvbnRlbnQgdG8gdGhlIGBzYmItZXhwYW5zaW9uLXBhbmVsYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1leHBhbnNpb24tcGFuZWwtY29udGVudCcpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICByb2xlOiAncmVnaW9uJyxcbiAgc2xvdDogJ2NvbnRlbnQnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJFeHBhbnNpb25QYW5lbENvbnRlbnRFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1leHBhbnNpb24tcGFuZWwtY29udGVudFwiPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQnOiBTYmJFeHBhbnNpb25QYW5lbENvbnRlbnRFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQmEsSUFBQSxrQ0FBTixjQUE4QyxXQUFXO0FBQUEsRUFHM0MsU0FBeUI7QUFDbkMsV0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLVDtBQUNGO0FBVmEsZ0NBQ1ksU0FBeUI7QUFEckMsa0NBQU4sZ0JBQUE7QUFBQSxFQUxOLGNBQWMsNkJBQTZCO0FBQUEsRUFDM0MsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLEVBQUEsQ0FDUDtBQUFBLEdBQ1ksK0JBQUE7In0=
89
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQvZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2V4cGFuc2lvbi1wYW5lbC1jb250ZW50LnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgY2FuIGJlIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIHRoZSBjb250ZW50IG9mIHRoZSBgc2JiLWV4cGFuc2lvbi1wYW5lbGAgY29tcG9uZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGNvbnRlbnQgdG8gdGhlIGBzYmItZXhwYW5zaW9uLXBhbmVsYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1leHBhbnNpb24tcGFuZWwtY29udGVudCcpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICByb2xlOiAncmVnaW9uJyxcbiAgc2xvdDogJ2NvbnRlbnQnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJFeHBhbnNpb25QYW5lbENvbnRlbnRFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1leHBhbnNpb24tcGFuZWwtY29udGVudFwiPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQnOiBTYmJFeHBhbnNpb25QYW5lbENvbnRlbnRFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQmEsSUFBQSxrQ0FBTixjQUE4QyxXQUFXO0FBQUEsRUFHM0MsU0FBeUI7QUFDbkMsV0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLVDtBQUNGO0FBVmEsZ0NBQ1ksU0FBeUI7QUFEckMsa0NBQU4sZ0JBQUE7QUFBQSxFQUxOLGNBQWMsNkJBQTZCO0FBQUEsRUFDM0MsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLEVBQUEsQ0FDUDtBQUFBLEdBQ1ksK0JBQUE7In0=