@sbb-esta/lyne-elements 1.7.0 → 1.8.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 (88) hide show
  1. package/calendar/calendar.d.ts +5 -2
  2. package/calendar/calendar.d.ts.map +1 -1
  3. package/calendar.js +73 -66
  4. package/container/container.js +5 -5
  5. package/core/base-elements/open-close-base-element.d.ts +10 -0
  6. package/core/base-elements/open-close-base-element.d.ts.map +1 -1
  7. package/core/base-elements.js +4 -0
  8. package/core/controllers/inert-controller.d.ts +18 -0
  9. package/core/controllers/inert-controller.d.ts.map +1 -0
  10. package/core/controllers.d.ts +1 -0
  11. package/core/controllers.d.ts.map +1 -1
  12. package/core/controllers.js +67 -23
  13. package/core/overlay/overlay.d.ts +0 -13
  14. package/core/overlay/overlay.d.ts.map +1 -1
  15. package/core/overlay.js +36 -86
  16. package/custom-elements.json +369 -65
  17. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +4 -0
  18. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  19. package/datepicker/datepicker-toggle.js +51 -41
  20. package/development/calendar/calendar.d.ts +5 -2
  21. package/development/calendar/calendar.d.ts.map +1 -1
  22. package/development/calendar.js +35 -19
  23. package/development/container/container.js +8 -4
  24. package/development/core/base-elements/open-close-base-element.d.ts +10 -0
  25. package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
  26. package/development/core/base-elements.js +5 -1
  27. package/development/core/controllers/inert-controller.d.ts +18 -0
  28. package/development/core/controllers/inert-controller.d.ts.map +1 -0
  29. package/development/core/controllers.d.ts +1 -0
  30. package/development/core/controllers.d.ts.map +1 -1
  31. package/development/core/controllers.js +90 -1
  32. package/development/core/overlay/overlay.d.ts +0 -13
  33. package/development/core/overlay/overlay.d.ts.map +1 -1
  34. package/development/core/overlay.js +1 -87
  35. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +4 -0
  36. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  37. package/development/datepicker/datepicker-toggle.js +17 -2
  38. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  39. package/development/dialog/dialog.js +3 -4
  40. package/development/flip-card/flip-card/flip-card.d.ts.map +1 -1
  41. package/development/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  42. package/development/flip-card/flip-card-details.js +28 -9
  43. package/development/flip-card/flip-card-summary.js +6 -1
  44. package/development/flip-card/flip-card.js +43 -12
  45. package/development/form-field/form-field.js +4 -2
  46. package/development/lead-container.js +5 -1
  47. package/development/menu/menu/menu.d.ts +1 -0
  48. package/development/menu/menu/menu.d.ts.map +1 -1
  49. package/development/menu/menu.js +6 -9
  50. package/development/navigation/navigation/navigation.d.ts +1 -0
  51. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  52. package/development/navigation/navigation.js +6 -9
  53. package/development/overlay/overlay-base-element.d.ts +2 -1
  54. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  55. package/development/overlay/overlay.d.ts.map +1 -1
  56. package/development/overlay.js +5 -9
  57. package/development/popover/popover.js +2 -2
  58. package/development/toggle/toggle/toggle.d.ts +2 -1
  59. package/development/toggle/toggle/toggle.d.ts.map +1 -1
  60. package/development/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  61. package/development/toggle/toggle-option.js +3 -2
  62. package/development/toggle/toggle.js +7 -7
  63. package/dialog/dialog/dialog.d.ts.map +1 -1
  64. package/dialog/dialog.js +11 -12
  65. package/flip-card/flip-card/flip-card.d.ts.map +1 -1
  66. package/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  67. package/flip-card/flip-card-details.js +19 -17
  68. package/flip-card/flip-card-summary.js +13 -13
  69. package/flip-card/flip-card.js +26 -24
  70. package/form-field/form-field.js +1 -1
  71. package/lead-container.js +1 -1
  72. package/menu/menu/menu.d.ts +1 -0
  73. package/menu/menu/menu.d.ts.map +1 -1
  74. package/menu/menu.js +30 -30
  75. package/navigation/navigation/navigation.d.ts +1 -0
  76. package/navigation/navigation/navigation.d.ts.map +1 -1
  77. package/navigation/navigation.js +37 -37
  78. package/overlay/overlay-base-element.d.ts +2 -1
  79. package/overlay/overlay-base-element.d.ts.map +1 -1
  80. package/overlay/overlay.d.ts.map +1 -1
  81. package/overlay.js +44 -45
  82. package/package.json +1 -1
  83. package/popover/popover.js +1 -1
  84. package/toggle/toggle/toggle.d.ts +2 -1
  85. package/toggle/toggle/toggle.d.ts.map +1 -1
  86. package/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  87. package/toggle/toggle-option.js +8 -8
  88. package/toggle/toggle.js +20 -21
@@ -1,5 +1,4 @@
1
1
  import { html } from "lit";
2
- const IS_OPEN_OVERLAY_QUERY = `:is(sbb-dialog, sbb-navigation, sbb-menu, sbb-overlay)[data-state='opened']`;
3
2
  function overlayGapFixCorners() {
4
3
  return html`
5
4
  <div class="sbb-gap-fix-wrapper">
@@ -10,89 +9,6 @@ function overlayGapFixCorners() {
10
9
  </div>
11
10
  `;
12
11
  }
13
- const getAncestors = (overlay, root) => {
14
- let el = overlay.parentElement;
15
- const ancestors = [];
16
- while (el) {
17
- ancestors.push(el);
18
- if (el !== root) {
19
- el = el.parentElement;
20
- } else {
21
- break;
22
- }
23
- }
24
- return ancestors;
25
- };
26
- const setDataSbbInert = (el) => {
27
- el.setAttribute(
28
- "data-sbb-inert",
29
- `${+(el.getAttribute("data-sbb-inert") ?? void 0) + 1 || 0}`
30
- );
31
- };
32
- const setSbbInert = (el) => {
33
- if (!el.inert) {
34
- el.inert = true;
35
- if (el.matches(IS_OPEN_OVERLAY_QUERY)) {
36
- setDataSbbInert(el);
37
- } else {
38
- el.toggleAttribute("data-sbb-inert", true);
39
- }
40
- }
41
- if (!el.hasAttribute("aria-hidden")) {
42
- el.setAttribute("aria-hidden", "true");
43
- el.toggleAttribute("data-sbb-aria-hidden", true);
44
- }
45
- };
46
- const removeSbbInert = (el) => {
47
- if (el.hasAttribute("data-sbb-inert")) {
48
- el.inert = false;
49
- el.removeAttribute("data-sbb-inert");
50
- }
51
- if (el.hasAttribute("data-sbb-aria-hidden")) {
52
- el.removeAttribute("aria-hidden");
53
- el.removeAttribute("data-sbb-aria-hidden");
54
- }
55
- };
56
- function applyInertMechanism(overlay) {
57
- removeSbbInert(overlay);
58
- const overlayRoot = overlay.closest("body > *");
59
- const documentChildren = Array.from(document.querySelectorAll("body > *")).filter(
60
- (el) => el !== overlayRoot
61
- );
62
- documentChildren.forEach((el) => setSbbInert(el));
63
- let children = [];
64
- const ancestors = getAncestors(overlay, overlayRoot);
65
- for (const el of ancestors) {
66
- children = children.concat(
67
- Array.from(el.children).filter(
68
- (el2) => el2 !== overlay && !ancestors.includes(el2)
69
- )
70
- );
71
- if (el.matches(IS_OPEN_OVERLAY_QUERY)) {
72
- setDataSbbInert(el);
73
- }
74
- }
75
- children.forEach((el) => setSbbInert(el));
76
- }
77
- function removeInertMechanism() {
78
- const openOverlays = Array.from(
79
- document.documentElement.querySelectorAll(IS_OPEN_OVERLAY_QUERY)
80
- );
81
- if (openOverlays.length) {
82
- openOverlays.forEach((el) => {
83
- const newValue = +el.getAttribute("data-sbb-inert") - 1;
84
- el.setAttribute("data-sbb-inert", `${newValue}`);
85
- if (newValue && newValue < 0) {
86
- removeSbbInert(el);
87
- Array.from(el.children).forEach((el2) => removeSbbInert(el2));
88
- }
89
- });
90
- return;
91
- }
92
- Array.from(document.documentElement.querySelectorAll("[data-sbb-inert]")).forEach(
93
- (el) => removeSbbInert(el)
94
- );
95
- }
96
12
  function getElementRectangle(el) {
97
13
  const elementStyle = window.getComputedStyle(el), elementDisplay = elementStyle.display, elementMaxHeight = parseInt(elementStyle.maxHeight, 10).toString();
98
14
  if (elementDisplay !== "none" && elementMaxHeight !== "0") {
@@ -225,16 +141,14 @@ function removeAriaComboBoxAttributes(trigger) {
225
141
  trigger.removeAttribute("aria-expanded");
226
142
  }
227
143
  export {
228
- applyInertMechanism,
229
144
  getElementPosition,
230
145
  getElementRectangle,
231
146
  isEventOnElement,
232
147
  overlayGapFixCorners,
233
148
  removeAriaComboBoxAttributes,
234
149
  removeAriaOverlayTriggerAttributes,
235
- removeInertMechanism,
236
150
  setAriaComboBoxAttributes,
237
151
  setAriaOverlayTriggerAttributes,
238
152
  setOverlayPosition
239
153
  };
240
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvb3ZlcmxheS9vdmVybGF5LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvb3ZlcmxheS9wb3NpdGlvbi50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL292ZXJsYXkvb3ZlcmxheS1vcHRpb24tcGFuZWwudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9vdmVybGF5L292ZXJsYXktdHJpZ2dlci1hdHRyaWJ1dGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdCc7XG5cbmNvbnN0IElTX09QRU5fT1ZFUkxBWV9RVUVSWSA9IGA6aXMoc2JiLWRpYWxvZywgc2JiLW5hdmlnYXRpb24sIHNiYi1tZW51LCBzYmItb3ZlcmxheSlbZGF0YS1zdGF0ZT0nb3BlbmVkJ11gO1xuXG4vKipcbiAqIFVzZWQgdG8gY3JlYXRlIHRoZSBcIndyYXBwaW5nXCIgZWZmZWN0IGFyb3VuZCB0aGUgYW5jaG9yIGZvciBvdmVybGF5cyAoZXMuIGF1dG9jb21wbGV0ZSlcbiAqIFdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlICdvdmVybGF5R2FwRml4Q29ybmVycygpJyBmdW5jdGlvbiBpbiAnb3ZlcmxheS50cydcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG92ZXJsYXlHYXBGaXhDb3JuZXJzKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgcmV0dXJuIGh0bWxgXG4gICAgPGRpdiBjbGFzcz1cInNiYi1nYXAtZml4LXdyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZ2FwLWZpeC1jb3JuZXJcIiBpZD1cImxlZnRcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2JiLWdhcC1maXgtd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1nYXAtZml4LWNvcm5lclwiIGlkPVwicmlnaHRcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFsbCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBvdmVybGF5LlxuICovXG5jb25zdCBnZXRBbmNlc3RvcnMgPSAob3ZlcmxheTogSFRNTEVsZW1lbnQsIHJvb3Q6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnRbXSA9PiB7XG4gIGxldCBlbCA9IG92ZXJsYXkucGFyZW50RWxlbWVudDtcbiAgY29uc3QgYW5jZXN0b3JzOiBIVE1MRWxlbWVudFtdID0gW107XG4gIHdoaWxlIChlbCkge1xuICAgIGFuY2VzdG9ycy5wdXNoKGVsKTtcbiAgICBpZiAoZWwgIT09IHJvb3QpIHtcbiAgICAgIGVsID0gZWwucGFyZW50RWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbmNlc3RvcnM7XG59O1xuXG5jb25zdCBzZXREYXRhU2JiSW5lcnQgPSAoZWw6IEhUTUxFbGVtZW50KTogdm9pZCA9PiB7XG4gIGVsLnNldEF0dHJpYnV0ZShcbiAgICAnZGF0YS1zYmItaW5lcnQnLFxuICAgIGAkeysoZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcpID8/IHVuZGVmaW5lZCkhICsgMSB8fCAwfWAsXG4gICk7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgaW5lcnQgYW5kIHRoZSBkYXRhLXNiYi1pbmVydCBhdHRyaWJ1dGVzLlxuICovXG5jb25zdCBzZXRTYmJJbmVydCA9IChlbDogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgaWYgKCFlbC5pbmVydCkge1xuICAgIGVsLmluZXJ0ID0gdHJ1ZTtcbiAgICBpZiAoZWwubWF0Y2hlcyhJU19PUEVOX09WRVJMQVlfUVVFUlkpKSB7XG4gICAgICBzZXREYXRhU2JiSW5lcnQoZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWluZXJ0JywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlbC5oYXNBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykpIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICBlbC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJywgdHJ1ZSk7XG4gIH1cbn07XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgaW5lcnQgYW5kIHRoZSBkYXRhLXNiYi1pbmVydCBhdHRyaWJ1dGVzLlxuICovXG5jb25zdCByZW1vdmVTYmJJbmVydCA9IChlbDogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgaWYgKGVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnKSkge1xuICAgIGVsLmluZXJ0ID0gZmFsc2U7XG4gICAgZWwucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcpO1xuICB9XG5cbiAgaWYgKGVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItYXJpYS1oaWRkZW4nKSkge1xuICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcbiAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJyk7XG4gIH1cbn07XG5cbi8qKlxuICogQXBwbGllcyBpbmVydCB0byBldmVyeSBvdGhlciBlbGVtZW50IG9uIHRoZSBwYWdlIGV4Y2VwdCB0aGUgb3ZlcmxheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5SW5lcnRNZWNoYW5pc20ob3ZlcmxheTogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgcmVtb3ZlU2JiSW5lcnQob3ZlcmxheSk7XG5cbiAgY29uc3Qgb3ZlcmxheVJvb3QgPSBvdmVybGF5LmNsb3Nlc3QoJ2JvZHkgPiAqJykgYXMgSFRNTEVsZW1lbnQ7XG4gIGNvbnN0IGRvY3VtZW50Q2hpbGRyZW4gPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2JvZHkgPiAqJykpLmZpbHRlcihcbiAgICAoZWwpID0+IGVsICE9PSBvdmVybGF5Um9vdCxcbiAgKSBhcyBIVE1MRWxlbWVudFtdO1xuXG4gIGRvY3VtZW50Q2hpbGRyZW4uZm9yRWFjaCgoZWwpID0+IHNldFNiYkluZXJ0KGVsKSk7XG5cbiAgbGV0IGNoaWxkcmVuOiBIVE1MRWxlbWVudFtdID0gW107XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGdldEFuY2VzdG9ycyhvdmVybGF5LCBvdmVybGF5Um9vdCk7XG5cbiAgZm9yIChjb25zdCBlbCBvZiBhbmNlc3RvcnMpIHtcbiAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdChcbiAgICAgIEFycmF5LmZyb20oZWwuY2hpbGRyZW4pLmZpbHRlcihcbiAgICAgICAgKGVsOiBFbGVtZW50KSA9PiBlbCAhPT0gb3ZlcmxheSAmJiAhYW5jZXN0b3JzLmluY2x1ZGVzKGVsIGFzIEhUTUxFbGVtZW50KSxcbiAgICAgICkgYXMgSFRNTEVsZW1lbnRbXSxcbiAgICApO1xuICAgIGlmIChlbC5tYXRjaGVzKElTX09QRU5fT1ZFUkxBWV9RVUVSWSkpIHtcbiAgICAgIHNldERhdGFTYmJJbmVydChlbCk7XG4gICAgfVxuICB9XG5cbiAgY2hpbGRyZW4uZm9yRWFjaCgoZWwpID0+IHNldFNiYkluZXJ0KGVsKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVJbmVydE1lY2hhbmlzbSgpOiB2b2lkIHtcbiAgY29uc3Qgb3Blbk92ZXJsYXlzID0gQXJyYXkuZnJvbShcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChJU19PUEVOX09WRVJMQVlfUVVFUlkpLFxuICApIGFzIEhUTUxFbGVtZW50W107XG5cbiAgaWYgKG9wZW5PdmVybGF5cy5sZW5ndGgpIHtcbiAgICBvcGVuT3ZlcmxheXMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gK2VsLmdldEF0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnKSEgLSAxO1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcsIGAke25ld1ZhbHVlfWApO1xuXG4gICAgICBpZiAobmV3VmFsdWUgJiYgbmV3VmFsdWUgPCAwKSB7XG4gICAgICAgIHJlbW92ZVNiYkluZXJ0KGVsKTtcbiAgICAgICAgQXJyYXkuZnJvbShlbC5jaGlsZHJlbikuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHJlbW92ZVNiYkluZXJ0KGVsIGFzIEhUTUxFbGVtZW50KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgQXJyYXkuZnJvbShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc2JiLWluZXJ0XScpKS5mb3JFYWNoKChlbDogRWxlbWVudCkgPT5cbiAgICByZW1vdmVTYmJJbmVydChlbCBhcyBIVE1MRWxlbWVudCksXG4gICk7XG59XG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIHdpbGxPcGVuOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgICB3aWxsQ2xvc2U6IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICAgIGRpZE9wZW46IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICAgIGRpZENsb3NlOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgfVxufVxuIiwiZXhwb3J0IHR5cGUgRWxlbWVudFJlY3RhbmdsZSA9IFBpY2s8XG4gIEhUTUxFbGVtZW50LFxuICAnc2Nyb2xsSGVpZ2h0JyB8ICdjbGllbnRIZWlnaHQnIHwgJ29mZnNldEhlaWdodCcgfCAnc2Nyb2xsV2lkdGgnIHwgJ2NsaWVudFdpZHRoJyB8ICdvZmZzZXRXaWR0aCdcbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiQWxpZ25tZW50IHtcbiAgaG9yaXpvbnRhbDogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIHZlcnRpY2FsOiAnYWJvdmUnIHwgJ2JlbG93Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYmJFbGVtZW50UG9zaXRpb25JbmZvcyB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIG1heEhlaWdodDogc3RyaW5nO1xuICBhbGlnbm1lbnQ6IFNiYkFsaWdubWVudDtcbn1cblxuLyoqXG4gKiBHZXRzIGhlaWdodCBhbmQgd2lkdGggb2YgYW4gZWxlbWVudCBldmVuIGlmIGl0J3MgaGlkZGVuIChgZGlzcGxheTogbm9uZWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudFJlY3RhbmdsZShlbDogSFRNTEVsZW1lbnQpOiBFbGVtZW50UmVjdGFuZ2xlIHtcbiAgY29uc3QgZWxlbWVudFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLFxuICAgIGVsZW1lbnREaXNwbGF5ID0gZWxlbWVudFN0eWxlLmRpc3BsYXksXG4gICAgZWxlbWVudE1heEhlaWdodCA9IHBhcnNlSW50KGVsZW1lbnRTdHlsZS5tYXhIZWlnaHQsIDEwKS50b1N0cmluZygpO1xuXG4gIC8vIElmIGl0IGlzIG5vdCBoaWRkZW4gd2UganVzdCByZXR1cm4gbm9ybWFsIGhlaWdodFxuICBpZiAoZWxlbWVudERpc3BsYXkgIT09ICdub25lJyAmJiBlbGVtZW50TWF4SGVpZ2h0ICE9PSAnMCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsSGVpZ2h0OiBlbC5zY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQ6IGVsLmNsaWVudEhlaWdodCxcbiAgICAgIG9mZnNldEhlaWdodDogZWwub2Zmc2V0SGVpZ2h0LFxuICAgICAgc2Nyb2xsV2lkdGg6IGVsLnNjcm9sbFdpZHRoLFxuICAgICAgY2xpZW50V2lkdGg6IGVsLmNsaWVudFdpZHRoLFxuICAgICAgb2Zmc2V0V2lkdGg6IGVsLm9mZnNldFdpZHRoLFxuICAgIH07XG4gIH1cblxuICAvLyBUaGUgZWxlbWVudCBpcyBoaWRkZW4gc286XG4gIC8vIG1ha2UgdGhlIGVsIGJsb2NrIGluIG9yZGVyIHRvIG1lYXN1cmUgaXRzIGhlaWdodCBidXQgc3RpbGwgYmUgaGlkZGVuXG4gIGVsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICBlbC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICBjb25zdCBzY3JvbGxIZWlnaHQgPSBlbC5zY3JvbGxIZWlnaHQsXG4gICAgY2xpZW50SGVpZ2h0ID0gZWwuY2xpZW50SGVpZ2h0LFxuICAgIG9mZnNldEhlaWdodCA9IGVsLm9mZnNldEhlaWdodCxcbiAgICBzY3JvbGxXaWR0aCA9IGVsLnNjcm9sbFdpZHRoLFxuICAgIGNsaWVudFdpZHRoID0gZWwuY2xpZW50V2lkdGgsXG4gICAgb2Zmc2V0V2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcblxuICAvLyBSZXZlcnRpbmcgdG8gdGhlIG9yaWdpbmFsIHZhbHVlc1xuICBlbC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gIGVsLnN0eWxlLnBvc2l0aW9uID0gJyc7XG4gIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAnJztcblxuICByZXR1cm4geyBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCwgb2Zmc2V0SGVpZ2h0LCBzY3JvbGxXaWR0aCwgY2xpZW50V2lkdGgsIG9mZnNldFdpZHRoIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGV2ZW50IGlzIGZpcmVkIG9uIGEgc3BlY2lmaWMgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXZlbnRPbkVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGV2ZW50OiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50KTogYm9vbGVhbiB7XG4gIGlmICghZWxlbWVudCB8fCAhZXZlbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmV0dXJuIChcbiAgICByZWN0LnRvcCA8PSBldmVudC5jbGllbnRZICYmXG4gICAgZXZlbnQuY2xpZW50WSA8PSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0ICYmXG4gICAgcmVjdC5sZWZ0IDw9IGV2ZW50LmNsaWVudFggJiZcbiAgICBldmVudC5jbGllbnRYIDw9IHJlY3QubGVmdCArIHJlY3Qud2lkdGhcbiAgKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGEgdHJpZ2dlciBlbGVtZW50IGJ5IGV2YWx1YXRpbmdcbiAqIHRoZSBvcHRpbWFsIHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBhdmFpbGFibGUgc3BhY2UuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgb2Ygd2hpY2ggdG8gY2FsY3VsYXRlIHRoZSBwb3NpdGlvbi5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBlbGVtZW50IHJlbGF0aXZlIHRvIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgcG9zaXRpb24uXG4gKiBAcGFyYW0gY29udGFpbmVyIFRoZSBlbGVtZW50IHdoaWNoIGhhcyB0aGUgcG9zaXRpb246Zml4ZWQgYXBwbGllZC5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIFByb3BlcnRpZXMgdG8gdGFrZSBpbnRvIGFjY291bnQgaW4gY2FsY3VsYXRpb25zIChvcHRpb25hbCkuXG4gKiBAcGFyYW0gcHJvcGVydGllcy52ZXJ0aWNhbE9mZnNldCBUaGUgZGlzdGFuY2UgdG8gYmUgYWRkZWQgYmV0d2VlbiB0aGUgZWxlbWVudCBhbmQgdGhlIHRyaWdnZXIgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLmhvcml6b250YWxPZmZzZXQgVGhlIGhvcml6b250YWwgb2Zmc2V0IHRvIGJlIGFwcGxpZWQgdG8gdGhlIGVsZW1lbnQgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLmNlbnRlcmVkIFdoZXRoZXIgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgY2VudGVyIGJ5IGRlZmF1bHQgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLnJlc3BvbnNpdmVIZWlnaHQgV2hldGhlciB0aGUgZWxlbWVudCBjYWxjdWxhdGVzIGl0cyBoZWlnaHQgYmFzZWQgb24gaXRzIGNvbnRlbnQgKG9wdGlvbmFsKS5cbiAqIEByZXR1cm5zIFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxlZnQgcG9zaXRpb24sIHRoZSB0b3AgcG9zaXRpb24sIHRoZSBtYXhpbXVtIGhlaWdodFxuICogb2YgdGhlIGVsZW1lbnQgYW5kIHRoZSBjdXJyZW50IGFsaWdubWVudCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50UG9zaXRpb24oXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgcHJvcGVydGllcz86IHtcbiAgICB2ZXJ0aWNhbE9mZnNldD86IG51bWJlcjtcbiAgICBob3Jpem9udGFsT2Zmc2V0PzogbnVtYmVyO1xuICAgIGNlbnRlcmVkPzogYm9vbGVhbjtcbiAgICByZXNwb25zaXZlSGVpZ2h0PzogYm9vbGVhbjtcbiAgfSxcbik6IFNiYkVsZW1lbnRQb3NpdGlvbkluZm9zIHtcbiAgY29uc3QgbWF4V2lkdGhPZmZzZXQgPSAxNjtcbiAgY29uc3QgdmVydGljYWxPZmZzZXQgPSBwcm9wZXJ0aWVzPy52ZXJ0aWNhbE9mZnNldCB8fCAwO1xuICBjb25zdCBob3Jpem9udGFsT2Zmc2V0ID0gcHJvcGVydGllcz8uaG9yaXpvbnRhbE9mZnNldCB8fCAwO1xuICBjb25zdCByZXNwb25zaXZlSGVpZ2h0ID0gcHJvcGVydGllcz8ucmVzcG9uc2l2ZUhlaWdodCB8fCBmYWxzZTtcblxuICBjb25zdCB0cmlnZ2VyUmVjID0gdHJpZ2dlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZWxlbWVudFJlYyA9IGdldEVsZW1lbnRSZWN0YW5nbGUoZWxlbWVudCk7XG5cbiAgY29uc3QgdHJpZ2dlckxlZnQgPSB0cmlnZ2VyUmVjLmxlZnQ7XG4gIGNvbnN0IHRyaWdnZXJUb3AgPSB0cmlnZ2VyUmVjLnRvcDtcblxuICBjb25zdCBhdmFpbGFibGVTcGFjZVJpZ2h0ID1cbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggLSAodHJpZ2dlckxlZnQgKyB0cmlnZ2VyUmVjLndpZHRoKTtcbiAgY29uc3QgYXZhaWxhYmxlU3BhY2VBYm92ZSA9IHRyaWdnZXJUb3AgLSB2ZXJ0aWNhbE9mZnNldDtcbiAgY29uc3QgYXZhaWxhYmxlU3BhY2VCZWxvdyA9XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCAtICh0cmlnZ2VyVG9wICsgdHJpZ2dlclJlYy5oZWlnaHQgKyB2ZXJ0aWNhbE9mZnNldCk7XG5cbiAgLy8gRGVmYXVsdCBlbGVtZW50IGFsaWdubWVudCBpcyBcInN0YXJ0L2JlbG93XCJcbiAgbGV0IGVsZW1lbnRYUG9zaXRpb24gPSB0cmlnZ2VyTGVmdDtcbiAgbGV0IGVsZW1lbnRZUG9zaXRpb24gPSB0cmlnZ2VyVG9wICsgdHJpZ2dlclJlYy5oZWlnaHQgKyB2ZXJ0aWNhbE9mZnNldDtcbiAgbGV0IGVsZW1lbnRYT3ZlcmZsb3cgPSBlbGVtZW50UmVjLm9mZnNldFdpZHRoIC0gdHJpZ2dlclJlYy53aWR0aDtcbiAgY29uc3QgYWxpZ25tZW50OiBTYmJBbGlnbm1lbnQgPSB7IGhvcml6b250YWw6ICdzdGFydCcsIHZlcnRpY2FsOiAnYmVsb3cnIH07XG5cbiAgLy8gQ2FsY3VsYXRlIGVsZW1lbnQgbWF4LWhlaWdodFxuICBsZXQgZWxlbWVudE1heEhlaWdodCA9IGAke2F2YWlsYWJsZVNwYWNlQmVsb3cgLSB2ZXJ0aWNhbE9mZnNldH1weGA7XG5cbiAgLy8gQ2hlY2sgaWYgaG9yaXpvbnRhbCBhbGlnbm1lbnQgbmVlZHMgdG8gYmUgY2hhbmdlZCB0byBcImNlbnRlclwiXG4gIGlmIChcbiAgICBwcm9wZXJ0aWVzPy5jZW50ZXJlZCAmJlxuICAgIHRyaWdnZXJMZWZ0IC0gbWF4V2lkdGhPZmZzZXQgKyB0cmlnZ2VyUmVjLndpZHRoIC8gMiA+IGVsZW1lbnRSZWMub2Zmc2V0V2lkdGggLyAyICYmXG4gICAgYXZhaWxhYmxlU3BhY2VSaWdodCAtIG1heFdpZHRoT2Zmc2V0ID4gZWxlbWVudFhPdmVyZmxvdyAvIDJcbiAgKSB7XG4gICAgZWxlbWVudFhQb3NpdGlvbiAtPSBlbGVtZW50WE92ZXJmbG93IC89IDI7XG4gICAgYWxpZ25tZW50Lmhvcml6b250YWwgPSAnY2VudGVyJztcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGhvcml6b250YWwgYWxpZ25tZW50IG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gXCJlbmRcIlxuICBpZiAoYXZhaWxhYmxlU3BhY2VSaWdodCA8IGVsZW1lbnRYT3ZlcmZsb3cgJiYgdHJpZ2dlckxlZnQgPiBlbGVtZW50WE92ZXJmbG93KSB7XG4gICAgZWxlbWVudFhQb3NpdGlvbiA9IGVsZW1lbnRYUG9zaXRpb24gLSBlbGVtZW50WE92ZXJmbG93O1xuICAgIGFsaWdubWVudC5ob3Jpem9udGFsID0gJ2VuZCc7XG4gIH1cblxuICAvLyBBZGQgaG9yaXpvbnRhbCBvZmZzZXRcbiAgaWYgKFxuICAgIGhvcml6b250YWxPZmZzZXQgJiZcbiAgICBhbGlnbm1lbnQuaG9yaXpvbnRhbCAhPT0gJ2NlbnRlcicgJiZcbiAgICB0cmlnZ2VyUmVjLndpZHRoIC8gMiA8IGhvcml6b250YWxPZmZzZXRcbiAgKSB7XG4gICAgZWxlbWVudFhQb3NpdGlvbiArPSBob3Jpem9udGFsT2Zmc2V0ICogKGFsaWdubWVudC5ob3Jpem9udGFsID09PSAnc3RhcnQnID8gLTEgOiAxKTtcbiAgfVxuXG4gIC8vIENoZWNrIHdoZXRoZXIgdGhlcmUgaXMgaW5zdWZmaWNpZW50IHNwYWNlIG9uIGJvdGggc2lkZXNcbiAgaWYgKFxuICAgICh0cmlnZ2VyTGVmdCA8IGVsZW1lbnRYT3ZlcmZsb3cgJiYgYXZhaWxhYmxlU3BhY2VSaWdodCA8IGVsZW1lbnRYT3ZlcmZsb3cpIHx8XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDwgZWxlbWVudFJlYy5vZmZzZXRXaWR0aFxuICApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC8gMiAtIGVsZW1lbnRSZWMub2Zmc2V0V2lkdGggLyAyO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdmVydGljYWwgYWxpZ25tZW50IG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gXCJhYm92ZVwiOlxuICBpZiAoXG4gICAgKGF2YWlsYWJsZVNwYWNlQmVsb3cgLSB2ZXJ0aWNhbE9mZnNldCA8IGVsZW1lbnRSZWMuc2Nyb2xsSGVpZ2h0ICYmXG4gICAgICBhdmFpbGFibGVTcGFjZUFib3ZlIC0gdmVydGljYWxPZmZzZXQgPlxuICAgICAgICAocmVzcG9uc2l2ZUhlaWdodCA/IGVsZW1lbnRSZWMuY2xpZW50SGVpZ2h0IDogZWxlbWVudFJlYy5zY3JvbGxIZWlnaHQpKSB8fFxuICAgIChhdmFpbGFibGVTcGFjZUFib3ZlID4gYXZhaWxhYmxlU3BhY2VCZWxvdyAmJlxuICAgICAgYXZhaWxhYmxlU3BhY2VCZWxvdyAtIHZlcnRpY2FsT2Zmc2V0IDwgZWxlbWVudFJlYy5jbGllbnRIZWlnaHQgJiZcbiAgICAgICFyZXNwb25zaXZlSGVpZ2h0KVxuICApIHtcbiAgICBlbGVtZW50WVBvc2l0aW9uID1cbiAgICAgIGF2YWlsYWJsZVNwYWNlQWJvdmUgPCBlbGVtZW50UmVjLnNjcm9sbEhlaWdodFxuICAgICAgICA/IGVsZW1lbnRZUG9zaXRpb24gLSB0cmlnZ2VyUmVjLmhlaWdodCAtIGF2YWlsYWJsZVNwYWNlQWJvdmUgLSB2ZXJ0aWNhbE9mZnNldFxuICAgICAgICA6IHRyaWdnZXJUb3AgLSBlbGVtZW50UmVjLmNsaWVudEhlaWdodCAtIHZlcnRpY2FsT2Zmc2V0O1xuXG4gICAgZWxlbWVudE1heEhlaWdodCA9IGAke2F2YWlsYWJsZVNwYWNlQWJvdmUgLSB2ZXJ0aWNhbE9mZnNldH1weGA7XG4gICAgYWxpZ25tZW50LnZlcnRpY2FsID0gJ2Fib3ZlJztcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgLy8gV2hlbiB6b29taW5nIGluIFNhZmFyaSB0aGUgY29udGFpbmVyIHJlY3RhbmdsZSBjb250YWlucyBuZWdhdGl2ZSB2YWx1ZXMgZm9yIHRoZSBwb3NpdGlvblxuICAvLyBhbmQgd2UgbmVlZCB0byByZS1hZGQgdGhlbSB0byB0aGUgY2FsY3VsYXRlZCBjb29yZGluYXRlcy5cbiAgaWYgKGNvbnRhaW5lclJlY3QubGVmdCA8IDApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uIC09IGNvbnRhaW5lclJlY3QubGVmdDtcbiAgfVxuXG4gIC8vIE5vcm1hbGx5IHRoZSBjb250YWluZXJSZWN0J3MgdG9wIHZhbHVlIHdvdWxkIGJlIHplcm8sIGhvd2V2ZXIgd2hlbiB0aGUgb3ZlcmxheSBpcyBhdHRhY2hlZCB0byBhbiBpbnB1dFxuICAvLyAoZS5nLiBpbiBhbiBhdXRvY29tcGxldGUpLCBtb2JpbGUgYnJvd3NlcnMgd2lsbCBzaGlmdCBldmVyeXRoaW5nIGluIG9yZGVyIHRvIHB1dCB0aGUgaW5wdXQgaW4gdGhlIG1pZGRsZVxuICAvLyBvZiB0aGUgc2NyZWVuIGFuZCB0byBtYWtlIHNwYWNlIGZvciB0aGUgdmlydHVhbCBrZXlib2FyZC4gV2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIG9mZnNldCxcbiAgLy8gb3RoZXJ3aXNlIG91ciBwb3NpdGlvbmluZyB3aWxsIGJlIHRocm93biBvZmYuXG4gIC8vIEFkZGl0aW9uYWxseSwgd2hlbiB6b29taW5nIGluIFNhZmFyaSB0aGlzIGZpeGVzIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbi5cbiAgaWYgKGNvbnRhaW5lclJlY3QudG9wIDwgMCkge1xuICAgIGVsZW1lbnRZUG9zaXRpb24gLT0gY29udGFpbmVyUmVjdC50b3A7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvcDogZWxlbWVudFlQb3NpdGlvbixcbiAgICBsZWZ0OiBlbGVtZW50WFBvc2l0aW9uLFxuICAgIG1heEhlaWdodDogZWxlbWVudE1heEhlaWdodCxcbiAgICBhbGlnbm1lbnQ6IGFsaWdubWVudCxcbiAgfTtcbn1cbiIsImltcG9ydCB7IGdldEVsZW1lbnRQb3NpdGlvbiB9IGZyb20gJy4vcG9zaXRpb24uanMnO1xuXG4vKipcbiAqIFBsYWNlcyB0aGUgb3ZlcmxheSBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbi5cbiAqIEBwYXJhbSBkaWFsb2cgVGhlIHJlZmVyZW5jZSB0byB0aGUgZGlhbG9nIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3JpZ2luRWxlbWVudCBUaGUgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHRoZSBkaWFsb2cgaXMgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gb3B0aW9uQ29udGFpbmVyIFRoZSByZWZlcmVuY2UgdG8gdGhlIG9wdGlvbiBwYW5lbC5cbiAqIEBwYXJhbSBjb250YWluZXIgVGhlIGVsZW1lbnQgd2hpY2ggaGFzIHRoZSBwb3NpdGlvbjpmaXhlZCBhcHBsaWVkLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIHJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0T3ZlcmxheVBvc2l0aW9uKFxuICBkaWFsb2c6IEhUTUxFbGVtZW50LFxuICBvcmlnaW5FbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgb3B0aW9uQ29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4pOiB2b2lkIHtcbiAgaWYgKCFkaWFsb2cgfHwgIW9yaWdpbkVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBTZXQgdGhlIHdpZHRoIHRvIG1hdGNoIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbiAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3B0aW9ucy1wYW5lbC13aWR0aCcsIGAke29yaWdpbkVsZW1lbnQub2Zmc2V0V2lkdGh9cHhgKTtcblxuICAvLyBTZXQgdGhlIG9yaWdpbiBoZWlnaHRcbiAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3B0aW9ucy1wYW5lbC1vcmlnaW4taGVpZ2h0JywgYCR7b3JpZ2luRWxlbWVudC5vZmZzZXRIZWlnaHR9cHhgKTtcblxuICAvLyBDYWxjdWxhdGUgYW5kIHNldCB0aGUgcG9zaXRpb25cbiAgY29uc3QgcGFuZWxQb3NpdGlvbiA9IGdldEVsZW1lbnRQb3NpdGlvbihvcHRpb25Db250YWluZXIsIG9yaWdpbkVsZW1lbnQsIGNvbnRhaW5lcik7XG5cbiAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3B0aW9ucy1wYW5lbC1wb3NpdGlvbi14JywgYCR7cGFuZWxQb3NpdGlvbi5sZWZ0fXB4YCk7XG4gIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLW9wdGlvbnMtcGFuZWwtcG9zaXRpb24teScsIGAke3BhbmVsUG9zaXRpb24udG9wfXB4YCk7XG4gIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLW9wdGlvbnMtcGFuZWwtbWF4LWhlaWdodCcsIHBhbmVsUG9zaXRpb24ubWF4SGVpZ2h0KTtcbiAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3B0aW9ucy1wYW5lbC1wb3NpdGlvbicsIHBhbmVsUG9zaXRpb24uYWxpZ25tZW50LnZlcnRpY2FsKTtcbiAgb3JpZ2luRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3B0aW9ucy1wYW5lbC1wb3NpdGlvbicsIHBhbmVsUG9zaXRpb24uYWxpZ25tZW50LnZlcnRpY2FsKTtcbn1cbiIsIi8qKlxuICogQWRkIG1lYW5pbmdmdWwgYXJpYSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgZWxlbWVudHMgdGhhdCBhcmUgY29ubmVjdGVkIHRvXG4gKiBvdmVybGF5IGVsZW1lbnRzIHN1Y2ggYXMgbWVudXMgYW5kIGRpYWxvZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgcG9wdXBUeXBlOiAnbWVudScgfCAnZGlhbG9nJyxcbiAgb3ZlcmxheUlkOiBzdHJpbmcsXG4gIHN0YXRlOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJpZ2dlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGFzcG9wdXAnLCBwb3B1cFR5cGUpO1xuICB0cmlnZ2VyLnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsIG92ZXJsYXlJZCk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgYCR7c3RhdGUgPT09ICdvcGVuaW5nJyB8fCBzdGF0ZSA9PT0gJ29wZW5lZCd9YCk7XG59XG5cbi8qKlxuICogUmVtb3ZlIGFyaWEgYXR0cmlidXRlcyBmcm9tIHRyaWdnZXIgZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICBpZiAoIXRyaWdnZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cmlnZ2VyLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oYXNwb3B1cCcpO1xuICB0cmlnZ2VyLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpO1xuICB0cmlnZ2VyLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpO1xufVxuXG4vKipcbiAqIEFkZCBtZWFuaW5nZnVsIGFyaWEgYXR0cmlidXRlcyB0byB0cmlnZ2VyIGVsZW1lbnQgb2Ygcm9sZT0nY29tYm9ib3gnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzKFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgb3ZlcmxheUlkOiBzdHJpbmcsXG4gIGV4cGFuZGVkOiBib29sZWFuLFxuICBoYXNQb3B1cDogJ2xpc3Rib3gnIHwgJ2dyaWQnID0gJ2xpc3Rib3gnLFxuKTogdm9pZCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhdXRvY29tcGxldGUnLCAnb2ZmJyk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2NvbWJvYm94Jyk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLWF1dG9jb21wbGV0ZScsICdsaXN0Jyk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLWhhc3BvcHVwJywgaGFzUG9wdXApO1xuICB0cmlnZ2VyLnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsIG92ZXJsYXlJZCk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLW93bnMnLCBvdmVybGF5SWQpOyAvLyBGcm9tIEFyaWEgMS4yIHRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnksIGJ1dCBzYWZhcmkgc3RpbGwgbmVlZHMgaXRcbiAgdHJpZ2dlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBgJHtleHBhbmRlZH1gKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYXJpYSBhdHRyaWJ1dGVzIGZyb20gdHJpZ2dlciBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUFyaWFDb21ib0JveEF0dHJpYnV0ZXModHJpZ2dlcj86IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhdXRvY29tcGxldGUnKTtcbiAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoJ3JvbGUnKTtcbiAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtYXV0b2NvbXBsZXRlJyk7XG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWhhc3BvcHVwJyk7XG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJyk7XG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLW93bnMnKTtcbiAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKTtcbn1cbiJdLCJuYW1lcyI6WyJlbCJdLCJtYXBwaW5ncyI6IjtBQUdBLE1BQU0sd0JBQXdCO0FBTXZCLFNBQVMsdUJBQXVDO0FBQzlDLFNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFUO0FBS0EsTUFBTSxlQUFlLENBQUMsU0FBc0IsU0FBcUM7QUFDL0UsTUFBSSxLQUFLLFFBQVE7QUFDakIsUUFBTSxZQUEyQixDQUFBO0FBQ2pDLFNBQU8sSUFBSTtBQUNULGNBQVUsS0FBSyxFQUFFO0FBQ2pCLFFBQUksT0FBTyxNQUFNO0FBQ2YsV0FBSyxHQUFHO0FBQUEsSUFBQSxPQUNIO0FBQ0w7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNPLFNBQUE7QUFDVDtBQUVBLE1BQU0sa0JBQWtCLENBQUMsT0FBMEI7QUFDOUMsS0FBQTtBQUFBLElBQ0Q7QUFBQSxJQUNBLEdBQUcsRUFBRSxHQUFHLGFBQWEsZ0JBQWdCLEtBQUssVUFBYyxLQUFLLENBQUM7QUFBQSxFQUFBO0FBRWxFO0FBS0EsTUFBTSxjQUFjLENBQUMsT0FBMEI7QUFDekMsTUFBQSxDQUFDLEdBQUcsT0FBTztBQUNiLE9BQUcsUUFBUTtBQUNQLFFBQUEsR0FBRyxRQUFRLHFCQUFxQixHQUFHO0FBQ3JDLHNCQUFnQixFQUFFO0FBQUEsSUFBQSxPQUNiO0FBQ0YsU0FBQSxnQkFBZ0Isa0JBQWtCLElBQUk7QUFBQSxJQUMzQztBQUFBLEVBQ0Y7QUFFQSxNQUFJLENBQUMsR0FBRyxhQUFhLGFBQWEsR0FBRztBQUNoQyxPQUFBLGFBQWEsZUFBZSxNQUFNO0FBQ2xDLE9BQUEsZ0JBQWdCLHdCQUF3QixJQUFJ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
154
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvb3ZlcmxheS9vdmVybGF5LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvb3ZlcmxheS9wb3NpdGlvbi50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL292ZXJsYXkvb3ZlcmxheS1vcHRpb24tcGFuZWwudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9vdmVybGF5L292ZXJsYXktdHJpZ2dlci1hdHRyaWJ1dGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdCc7XG5cbi8qKlxuICogVXNlZCB0byBjcmVhdGUgdGhlIFwid3JhcHBpbmdcIiBlZmZlY3QgYXJvdW5kIHRoZSBhbmNob3IgZm9yIG92ZXJsYXlzIChlcy4gYXV0b2NvbXBsZXRlKVxuICogV29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgJ292ZXJsYXlHYXBGaXhDb3JuZXJzKCknIGZ1bmN0aW9uIGluICdvdmVybGF5LnRzJ1xuICovXG5leHBvcnQgZnVuY3Rpb24gb3ZlcmxheUdhcEZpeENvcm5lcnMoKTogVGVtcGxhdGVSZXN1bHQge1xuICByZXR1cm4gaHRtbGBcbiAgICA8ZGl2IGNsYXNzPVwic2JiLWdhcC1maXgtd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1nYXAtZml4LWNvcm5lclwiIGlkPVwibGVmdFwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzYmItZ2FwLWZpeC13cmFwcGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWdhcC1maXgtY29ybmVyXCIgaWQ9XCJyaWdodFwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICBgO1xufVxuIiwiZXhwb3J0IHR5cGUgRWxlbWVudFJlY3RhbmdsZSA9IFBpY2s8XG4gIEhUTUxFbGVtZW50LFxuICAnc2Nyb2xsSGVpZ2h0JyB8ICdjbGllbnRIZWlnaHQnIHwgJ29mZnNldEhlaWdodCcgfCAnc2Nyb2xsV2lkdGgnIHwgJ2NsaWVudFdpZHRoJyB8ICdvZmZzZXRXaWR0aCdcbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiQWxpZ25tZW50IHtcbiAgaG9yaXpvbnRhbDogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIHZlcnRpY2FsOiAnYWJvdmUnIHwgJ2JlbG93Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYmJFbGVtZW50UG9zaXRpb25JbmZvcyB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIG1heEhlaWdodDogc3RyaW5nO1xuICBhbGlnbm1lbnQ6IFNiYkFsaWdubWVudDtcbn1cblxuLyoqXG4gKiBHZXRzIGhlaWdodCBhbmQgd2lkdGggb2YgYW4gZWxlbWVudCBldmVuIGlmIGl0J3MgaGlkZGVuIChgZGlzcGxheTogbm9uZWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudFJlY3RhbmdsZShlbDogSFRNTEVsZW1lbnQpOiBFbGVtZW50UmVjdGFuZ2xlIHtcbiAgY29uc3QgZWxlbWVudFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLFxuICAgIGVsZW1lbnREaXNwbGF5ID0gZWxlbWVudFN0eWxlLmRpc3BsYXksXG4gICAgZWxlbWVudE1heEhlaWdodCA9IHBhcnNlSW50KGVsZW1lbnRTdHlsZS5tYXhIZWlnaHQsIDEwKS50b1N0cmluZygpO1xuXG4gIC8vIElmIGl0IGlzIG5vdCBoaWRkZW4gd2UganVzdCByZXR1cm4gbm9ybWFsIGhlaWdodFxuICBpZiAoZWxlbWVudERpc3BsYXkgIT09ICdub25lJyAmJiBlbGVtZW50TWF4SGVpZ2h0ICE9PSAnMCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsSGVpZ2h0OiBlbC5zY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQ6IGVsLmNsaWVudEhlaWdodCxcbiAgICAgIG9mZnNldEhlaWdodDogZWwub2Zmc2V0SGVpZ2h0LFxuICAgICAgc2Nyb2xsV2lkdGg6IGVsLnNjcm9sbFdpZHRoLFxuICAgICAgY2xpZW50V2lkdGg6IGVsLmNsaWVudFdpZHRoLFxuICAgICAgb2Zmc2V0V2lkdGg6IGVsLm9mZnNldFdpZHRoLFxuICAgIH07XG4gIH1cblxuICAvLyBUaGUgZWxlbWVudCBpcyBoaWRkZW4gc286XG4gIC8vIG1ha2UgdGhlIGVsIGJsb2NrIGluIG9yZGVyIHRvIG1lYXN1cmUgaXRzIGhlaWdodCBidXQgc3RpbGwgYmUgaGlkZGVuXG4gIGVsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICBlbC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICBjb25zdCBzY3JvbGxIZWlnaHQgPSBlbC5zY3JvbGxIZWlnaHQsXG4gICAgY2xpZW50SGVpZ2h0ID0gZWwuY2xpZW50SGVpZ2h0LFxuICAgIG9mZnNldEhlaWdodCA9IGVsLm9mZnNldEhlaWdodCxcbiAgICBzY3JvbGxXaWR0aCA9IGVsLnNjcm9sbFdpZHRoLFxuICAgIGNsaWVudFdpZHRoID0gZWwuY2xpZW50V2lkdGgsXG4gICAgb2Zmc2V0V2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcblxuICAvLyBSZXZlcnRpbmcgdG8gdGhlIG9yaWdpbmFsIHZhbHVlc1xuICBlbC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gIGVsLnN0eWxlLnBvc2l0aW9uID0gJyc7XG4gIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAnJztcblxuICByZXR1cm4geyBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCwgb2Zmc2V0SGVpZ2h0LCBzY3JvbGxXaWR0aCwgY2xpZW50V2lkdGgsIG9mZnNldFdpZHRoIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGV2ZW50IGlzIGZpcmVkIG9uIGEgc3BlY2lmaWMgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXZlbnRPbkVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGV2ZW50OiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50KTogYm9vbGVhbiB7XG4gIGlmICghZWxlbWVudCB8fCAhZXZlbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmV0dXJuIChcbiAgICByZWN0LnRvcCA8PSBldmVudC5jbGllbnRZICYmXG4gICAgZXZlbnQuY2xpZW50WSA8PSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0ICYmXG4gICAgcmVjdC5sZWZ0IDw9IGV2ZW50LmNsaWVudFggJiZcbiAgICBldmVudC5jbGllbnRYIDw9IHJlY3QubGVmdCArIHJlY3Qud2lkdGhcbiAgKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGEgdHJpZ2dlciBlbGVtZW50IGJ5IGV2YWx1YXRpbmdcbiAqIHRoZSBvcHRpbWFsIHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBhdmFpbGFibGUgc3BhY2UuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgb2Ygd2hpY2ggdG8gY2FsY3VsYXRlIHRoZSBwb3NpdGlvbi5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBlbGVtZW50IHJlbGF0aXZlIHRvIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgcG9zaXRpb24uXG4gKiBAcGFyYW0gY29udGFpbmVyIFRoZSBlbGVtZW50IHdoaWNoIGhhcyB0aGUgcG9zaXRpb246Zml4ZWQgYXBwbGllZC5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIFByb3BlcnRpZXMgdG8gdGFrZSBpbnRvIGFjY291bnQgaW4gY2FsY3VsYXRpb25zIChvcHRpb25hbCkuXG4gKiBAcGFyYW0gcHJvcGVydGllcy52ZXJ0aWNhbE9mZnNldCBUaGUgZGlzdGFuY2UgdG8gYmUgYWRkZWQgYmV0d2VlbiB0aGUgZWxlbWVudCBhbmQgdGhlIHRyaWdnZXIgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLmhvcml6b250YWxPZmZzZXQgVGhlIGhvcml6b250YWwgb2Zmc2V0IHRvIGJlIGFwcGxpZWQgdG8gdGhlIGVsZW1lbnQgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLmNlbnRlcmVkIFdoZXRoZXIgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgY2VudGVyIGJ5IGRlZmF1bHQgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLnJlc3BvbnNpdmVIZWlnaHQgV2hldGhlciB0aGUgZWxlbWVudCBjYWxjdWxhdGVzIGl0cyBoZWlnaHQgYmFzZWQgb24gaXRzIGNvbnRlbnQgKG9wdGlvbmFsKS5cbiAqIEByZXR1cm5zIFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxlZnQgcG9zaXRpb24sIHRoZSB0b3AgcG9zaXRpb24sIHRoZSBtYXhpbXVtIGhlaWdodFxuICogb2YgdGhlIGVsZW1lbnQgYW5kIHRoZSBjdXJyZW50IGFsaWdubWVudCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50UG9zaXRpb24oXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgcHJvcGVydGllcz86IHtcbiAgICB2ZXJ0aWNhbE9mZnNldD86IG51bWJlcjtcbiAgICBob3Jpem9udGFsT2Zmc2V0PzogbnVtYmVyO1xuICAgIGNlbnRlcmVkPzogYm9vbGVhbjtcbiAgICByZXNwb25zaXZlSGVpZ2h0PzogYm9vbGVhbjtcbiAgfSxcbik6IFNiYkVsZW1lbnRQb3NpdGlvbkluZm9zIHtcbiAgY29uc3QgbWF4V2lkdGhPZmZzZXQgPSAxNjtcbiAgY29uc3QgdmVydGljYWxPZmZzZXQgPSBwcm9wZXJ0aWVzPy52ZXJ0aWNhbE9mZnNldCB8fCAwO1xuICBjb25zdCBob3Jpem9udGFsT2Zmc2V0ID0gcHJvcGVydGllcz8uaG9yaXpvbnRhbE9mZnNldCB8fCAwO1xuICBjb25zdCByZXNwb25zaXZlSGVpZ2h0ID0gcHJvcGVydGllcz8ucmVzcG9uc2l2ZUhlaWdodCB8fCBmYWxzZTtcblxuICBjb25zdCB0cmlnZ2VyUmVjID0gdHJpZ2dlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZWxlbWVudFJlYyA9IGdldEVsZW1lbnRSZWN0YW5nbGUoZWxlbWVudCk7XG5cbiAgY29uc3QgdHJpZ2dlckxlZnQgPSB0cmlnZ2VyUmVjLmxlZnQ7XG4gIGNvbnN0IHRyaWdnZXJUb3AgPSB0cmlnZ2VyUmVjLnRvcDtcblxuICBjb25zdCBhdmFpbGFibGVTcGFjZVJpZ2h0ID1cbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggLSAodHJpZ2dlckxlZnQgKyB0cmlnZ2VyUmVjLndpZHRoKTtcbiAgY29uc3QgYXZhaWxhYmxlU3BhY2VBYm92ZSA9IHRyaWdnZXJUb3AgLSB2ZXJ0aWNhbE9mZnNldDtcbiAgY29uc3QgYXZhaWxhYmxlU3BhY2VCZWxvdyA9XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCAtICh0cmlnZ2VyVG9wICsgdHJpZ2dlclJlYy5oZWlnaHQgKyB2ZXJ0aWNhbE9mZnNldCk7XG5cbiAgLy8gRGVmYXVsdCBlbGVtZW50IGFsaWdubWVudCBpcyBcInN0YXJ0L2JlbG93XCJcbiAgbGV0IGVsZW1lbnRYUG9zaXRpb24gPSB0cmlnZ2VyTGVmdDtcbiAgbGV0IGVsZW1lbnRZUG9zaXRpb24gPSB0cmlnZ2VyVG9wICsgdHJpZ2dlclJlYy5oZWlnaHQgKyB2ZXJ0aWNhbE9mZnNldDtcbiAgbGV0IGVsZW1lbnRYT3ZlcmZsb3cgPSBlbGVtZW50UmVjLm9mZnNldFdpZHRoIC0gdHJpZ2dlclJlYy53aWR0aDtcbiAgY29uc3QgYWxpZ25tZW50OiBTYmJBbGlnbm1lbnQgPSB7IGhvcml6b250YWw6ICdzdGFydCcsIHZlcnRpY2FsOiAnYmVsb3cnIH07XG5cbiAgLy8gQ2FsY3VsYXRlIGVsZW1lbnQgbWF4LWhlaWdodFxuICBsZXQgZWxlbWVudE1heEhlaWdodCA9IGAke2F2YWlsYWJsZVNwYWNlQmVsb3cgLSB2ZXJ0aWNhbE9mZnNldH1weGA7XG5cbiAgLy8gQ2hlY2sgaWYgaG9yaXpvbnRhbCBhbGlnbm1lbnQgbmVlZHMgdG8gYmUgY2hhbmdlZCB0byBcImNlbnRlclwiXG4gIGlmIChcbiAgICBwcm9wZXJ0aWVzPy5jZW50ZXJlZCAmJlxuICAgIHRyaWdnZXJMZWZ0IC0gbWF4V2lkdGhPZmZzZXQgKyB0cmlnZ2VyUmVjLndpZHRoIC8gMiA+IGVsZW1lbnRSZWMub2Zmc2V0V2lkdGggLyAyICYmXG4gICAgYXZhaWxhYmxlU3BhY2VSaWdodCAtIG1heFdpZHRoT2Zmc2V0ID4gZWxlbWVudFhPdmVyZmxvdyAvIDJcbiAgKSB7XG4gICAgZWxlbWVudFhQb3NpdGlvbiAtPSBlbGVtZW50WE92ZXJmbG93IC89IDI7XG4gICAgYWxpZ25tZW50Lmhvcml6b250YWwgPSAnY2VudGVyJztcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGhvcml6b250YWwgYWxpZ25tZW50IG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gXCJlbmRcIlxuICBpZiAoYXZhaWxhYmxlU3BhY2VSaWdodCA8IGVsZW1lbnRYT3ZlcmZsb3cgJiYgdHJpZ2dlckxlZnQgPiBlbGVtZW50WE92ZXJmbG93KSB7XG4gICAgZWxlbWVudFhQb3NpdGlvbiA9IGVsZW1lbnRYUG9zaXRpb24gLSBlbGVtZW50WE92ZXJmbG93O1xuICAgIGFsaWdubWVudC5ob3Jpem9udGFsID0gJ2VuZCc7XG4gIH1cblxuICAvLyBBZGQgaG9yaXpvbnRhbCBvZmZzZXRcbiAgaWYgKFxuICAgIGhvcml6b250YWxPZmZzZXQgJiZcbiAgICBhbGlnbm1lbnQuaG9yaXpvbnRhbCAhPT0gJ2NlbnRlcicgJiZcbiAgICB0cmlnZ2VyUmVjLndpZHRoIC8gMiA8IGhvcml6b250YWxPZmZzZXRcbiAgKSB7XG4gICAgZWxlbWVudFhQb3NpdGlvbiArPSBob3Jpem9udGFsT2Zmc2V0ICogKGFsaWdubWVudC5ob3Jpem9udGFsID09PSAnc3RhcnQnID8gLTEgOiAxKTtcbiAgfVxuXG4gIC8vIENoZWNrIHdoZXRoZXIgdGhlcmUgaXMgaW5zdWZmaWNpZW50IHNwYWNlIG9uIGJvdGggc2lkZXNcbiAgaWYgKFxuICAgICh0cmlnZ2VyTGVmdCA8IGVsZW1lbnRYT3ZlcmZsb3cgJiYgYXZhaWxhYmxlU3BhY2VSaWdodCA8IGVsZW1lbnRYT3ZlcmZsb3cpIHx8XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDwgZWxlbWVudFJlYy5vZmZzZXRXaWR0aFxuICApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC8gMiAtIGVsZW1lbnRSZWMub2Zmc2V0V2lkdGggLyAyO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdmVydGljYWwgYWxpZ25tZW50IG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gXCJhYm92ZVwiOlxuICBpZiAoXG4gICAgKGF2YWlsYWJsZVNwYWNlQmVsb3cgLSB2ZXJ0aWNhbE9mZnNldCA8IGVsZW1lbnRSZWMuc2Nyb2xsSGVpZ2h0ICYmXG4gICAgICBhdmFpbGFibGVTcGFjZUFib3ZlIC0gdmVydGljYWxPZmZzZXQgPlxuICAgICAgICAocmVzcG9uc2l2ZUhlaWdodCA/IGVsZW1lbnRSZWMuY2xpZW50SGVpZ2h0IDogZWxlbWVudFJlYy5zY3JvbGxIZWlnaHQpKSB8fFxuICAgIChhdmFpbGFibGVTcGFjZUFib3ZlID4gYXZhaWxhYmxlU3BhY2VCZWxvdyAmJlxuICAgICAgYXZhaWxhYmxlU3BhY2VCZWxvdyAtIHZlcnRpY2FsT2Zmc2V0IDwgZWxlbWVudFJlYy5jbGllbnRIZWlnaHQgJiZcbiAgICAgICFyZXNwb25zaXZlSGVpZ2h0KVxuICApIHtcbiAgICBlbGVtZW50WVBvc2l0aW9uID1cbiAgICAgIGF2YWlsYWJsZVNwYWNlQWJvdmUgPCBlbGVtZW50UmVjLnNjcm9sbEhlaWdodFxuICAgICAgICA/IGVsZW1lbnRZUG9zaXRpb24gLSB0cmlnZ2VyUmVjLmhlaWdodCAtIGF2YWlsYWJsZVNwYWNlQWJvdmUgLSB2ZXJ0aWNhbE9mZnNldFxuICAgICAgICA6IHRyaWdnZXJUb3AgLSBlbGVtZW50UmVjLmNsaWVudEhlaWdodCAtIHZlcnRpY2FsT2Zmc2V0O1xuXG4gICAgZWxlbWVudE1heEhlaWdodCA9IGAke2F2YWlsYWJsZVNwYWNlQWJvdmUgLSB2ZXJ0aWNhbE9mZnNldH1weGA7XG4gICAgYWxpZ25tZW50LnZlcnRpY2FsID0gJ2Fib3ZlJztcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgLy8gV2hlbiB6b29taW5nIGluIFNhZmFyaSB0aGUgY29udGFpbmVyIHJlY3RhbmdsZSBjb250YWlucyBuZWdhdGl2ZSB2YWx1ZXMgZm9yIHRoZSBwb3NpdGlvblxuICAvLyBhbmQgd2UgbmVlZCB0byByZS1hZGQgdGhlbSB0byB0aGUgY2FsY3VsYXRlZCBjb29yZGluYXRlcy5cbiAgaWYgKGNvbnRhaW5lclJlY3QubGVmdCA8IDApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uIC09IGNvbnRhaW5lclJlY3QubGVmdDtcbiAgfVxuXG4gIC8vIE5vcm1hbGx5IHRoZSBjb250YWluZXJSZWN0J3MgdG9wIHZhbHVlIHdvdWxkIGJlIHplcm8sIGhvd2V2ZXIgd2hlbiB0aGUgb3ZlcmxheSBpcyBhdHRhY2hlZCB0byBhbiBpbnB1dFxuICAvLyAoZS5nLiBpbiBhbiBhdXRvY29tcGxldGUpLCBtb2JpbGUgYnJvd3NlcnMgd2lsbCBzaGlmdCBldmVyeXRoaW5nIGluIG9yZGVyIHRvIHB1dCB0aGUgaW5wdXQgaW4gdGhlIG1pZGRsZVxuICAvLyBvZiB0aGUgc2NyZWVuIGFuZCB0byBtYWtlIHNwYWNlIGZvciB0aGUgdmlydHVhbCBrZXlib2FyZC4gV2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIG9mZnNldCxcbiAgLy8gb3RoZXJ3aXNlIG91ciBwb3NpdGlvbmluZyB3aWxsIGJlIHRocm93biBvZmYuXG4gIC8vIEFkZGl0aW9uYWxseSwgd2hlbiB6b29taW5nIGluIFNhZmFyaSB0aGlzIGZpeGVzIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbi5cbiAgaWYgKGNvbnRhaW5lclJlY3QudG9wIDwgMCkge1xuICAgIGVsZW1lbnRZUG9zaXRpb24gLT0gY29udGFpbmVyUmVjdC50b3A7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvcDogZWxlbWVudFlQb3NpdGlvbixcbiAgICBsZWZ0OiBlbGVtZW50WFBvc2l0aW9uLFxuICAgIG1heEhlaWdodDogZWxlbWVudE1heEhlaWdodCxcbiAgICBhbGlnbm1lbnQ6IGFsaWdubWVudCxcbiAgfTtcbn1cbiIsImltcG9ydCB7IGdldEVsZW1lbnRQb3NpdGlvbiB9IGZyb20gJy4vcG9zaXRpb24uanMnO1xuXG4vKipcbiAqIFBsYWNlcyB0aGUgb3ZlcmxheSBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbi5cbiAqIEBwYXJhbSBkaWFsb2cgVGhlIHJlZmVyZW5jZSB0byB0aGUgZGlhbG9nIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3JpZ2luRWxlbWVudCBUaGUgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHRoZSBkaWFsb2cgaXMgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gb3B0aW9uQ29udGFpbmVyIFRoZSByZWZlcmVuY2UgdG8gdGhlIG9wdGlvbiBwYW5lbC5cbiAqIEBwYXJhbSBjb250YWluZXIgVGhlIGVsZW1lbnQgd2hpY2ggaGFzIHRoZSBwb3NpdGlvbjpmaXhlZCBhcHBsaWVkLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIHJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0T3ZlcmxheVBvc2l0aW9uKFxuICBkaWFsb2c6IEhUTUxFbGVtZW50LFxuICBvcmlnaW5FbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgb3B0aW9uQ29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4pOiB2b2lkIHtcbiAgaWYgKCFkaWFsb2cgfHwgIW9yaWdpbkVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBTZXQgdGhlIHdpZHRoIHRvIG1hdGNoIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbiAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3B0aW9ucy1wYW5lbC13aWR0aCcsIGAke29yaWdpbkVsZW1lbnQub2Zmc2V0V2lkdGh9cHhgKTtcblxuICAvLyBTZXQgdGhlIG9yaWdpbiBoZWlnaHRcbiAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3B0aW9ucy1wYW5lbC1vcmlnaW4taGVpZ2h0JywgYCR7b3JpZ2luRWxlbWVudC5vZmZzZXRIZWlnaHR9cHhgKTtcblxuICAvLyBDYWxjdWxhdGUgYW5kIHNldCB0aGUgcG9zaXRpb25cbiAgY29uc3QgcGFuZWxQb3NpdGlvbiA9IGdldEVsZW1lbnRQb3NpdGlvbihvcHRpb25Db250YWluZXIsIG9yaWdpbkVsZW1lbnQsIGNvbnRhaW5lcik7XG5cbiAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3B0aW9ucy1wYW5lbC1wb3NpdGlvbi14JywgYCR7cGFuZWxQb3NpdGlvbi5sZWZ0fXB4YCk7XG4gIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLW9wdGlvbnMtcGFuZWwtcG9zaXRpb24teScsIGAke3BhbmVsUG9zaXRpb24udG9wfXB4YCk7XG4gIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLW9wdGlvbnMtcGFuZWwtbWF4LWhlaWdodCcsIHBhbmVsUG9zaXRpb24ubWF4SGVpZ2h0KTtcbiAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3B0aW9ucy1wYW5lbC1wb3NpdGlvbicsIHBhbmVsUG9zaXRpb24uYWxpZ25tZW50LnZlcnRpY2FsKTtcbiAgb3JpZ2luRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3B0aW9ucy1wYW5lbC1wb3NpdGlvbicsIHBhbmVsUG9zaXRpb24uYWxpZ25tZW50LnZlcnRpY2FsKTtcbn1cbiIsIi8qKlxuICogQWRkIG1lYW5pbmdmdWwgYXJpYSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgZWxlbWVudHMgdGhhdCBhcmUgY29ubmVjdGVkIHRvXG4gKiBvdmVybGF5IGVsZW1lbnRzIHN1Y2ggYXMgbWVudXMgYW5kIGRpYWxvZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgcG9wdXBUeXBlOiAnbWVudScgfCAnZGlhbG9nJyxcbiAgb3ZlcmxheUlkOiBzdHJpbmcsXG4gIHN0YXRlOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJpZ2dlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGFzcG9wdXAnLCBwb3B1cFR5cGUpO1xuICB0cmlnZ2VyLnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsIG92ZXJsYXlJZCk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgYCR7c3RhdGUgPT09ICdvcGVuaW5nJyB8fCBzdGF0ZSA9PT0gJ29wZW5lZCd9YCk7XG59XG5cbi8qKlxuICogUmVtb3ZlIGFyaWEgYXR0cmlidXRlcyBmcm9tIHRyaWdnZXIgZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICBpZiAoIXRyaWdnZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cmlnZ2VyLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oYXNwb3B1cCcpO1xuICB0cmlnZ2VyLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpO1xuICB0cmlnZ2VyLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpO1xufVxuXG4vKipcbiAqIEFkZCBtZWFuaW5nZnVsIGFyaWEgYXR0cmlidXRlcyB0byB0cmlnZ2VyIGVsZW1lbnQgb2Ygcm9sZT0nY29tYm9ib3gnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzKFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgb3ZlcmxheUlkOiBzdHJpbmcsXG4gIGV4cGFuZGVkOiBib29sZWFuLFxuICBoYXNQb3B1cDogJ2xpc3Rib3gnIHwgJ2dyaWQnID0gJ2xpc3Rib3gnLFxuKTogdm9pZCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhdXRvY29tcGxldGUnLCAnb2ZmJyk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2NvbWJvYm94Jyk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLWF1dG9jb21wbGV0ZScsICdsaXN0Jyk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLWhhc3BvcHVwJywgaGFzUG9wdXApO1xuICB0cmlnZ2VyLnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsIG92ZXJsYXlJZCk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLW93bnMnLCBvdmVybGF5SWQpOyAvLyBGcm9tIEFyaWEgMS4yIHRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnksIGJ1dCBzYWZhcmkgc3RpbGwgbmVlZHMgaXRcbiAgdHJpZ2dlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBgJHtleHBhbmRlZH1gKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYXJpYSBhdHRyaWJ1dGVzIGZyb20gdHJpZ2dlciBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUFyaWFDb21ib0JveEF0dHJpYnV0ZXModHJpZ2dlcj86IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhdXRvY29tcGxldGUnKTtcbiAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoJ3JvbGUnKTtcbiAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtYXV0b2NvbXBsZXRlJyk7XG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWhhc3BvcHVwJyk7XG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJyk7XG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLW93bnMnKTtcbiAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBT08sU0FBUyx1QkFBdUM7QUFDOUMsU0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUVQ7QUNJTyxTQUFTLG9CQUFvQixJQUFtQztBQUNyRSxRQUFNLGVBQWUsT0FBTyxpQkFBaUIsRUFBRSxHQUM3QyxpQkFBaUIsYUFBYSxTQUM5QixtQkFBbUIsU0FBUyxhQUFhLFdBQVcsRUFBRSxFQUFFO0FBR3RELE1BQUEsbUJBQW1CLFVBQVUscUJBQXFCLEtBQUs7QUFDbEQsV0FBQTtBQUFBLE1BQ0wsY0FBYyxHQUFHO0FBQUEsTUFDakIsY0FBYyxHQUFHO0FBQUEsTUFDakIsY0FBYyxHQUFHO0FBQUEsTUFDakIsYUFBYSxHQUFHO0FBQUEsTUFDaEIsYUFBYSxHQUFHO0FBQUEsTUFDaEIsYUFBYSxHQUFHO0FBQUEsSUFBQTtBQUFBLEVBRXBCO0FBSUEsS0FBRyxNQUFNLFdBQVc7QUFDcEIsS0FBRyxNQUFNLGFBQWE7QUFDdEIsS0FBRyxNQUFNLFVBQVU7QUFFbkIsUUFBTSxlQUFlLEdBQUcsY0FDdEIsZUFBZSxHQUFHLGNBQ2xCLGVBQWUsR0FBRyxjQUNsQixjQUFjLEdBQUcsYUFDakIsY0FBYyxHQUFHLGFBQ2pCLGNBQWMsR0FBRztBQUduQixLQUFHLE1BQU0sVUFBVTtBQUNuQixLQUFHLE1BQU0sV0FBVztBQUNwQixLQUFHLE1BQU0sYUFBYTtBQUV0QixTQUFPLEVBQUUsY0FBYyxjQUFjLGNBQWMsYUFBYSxhQUFhO0FBQy9FO0FBS2dCLFNBQUEsaUJBQWlCLFNBQXNCLE9BQTJDO0FBQzVGLE1BQUEsQ0FBQyxXQUFXLENBQUMsT0FBTztBQUNmLFdBQUE7QUFBQSxFQUNUO0FBRU0sUUFBQSxPQUFPLFFBQVE7QUFDckIsU0FDRSxLQUFLLE9BQU8sTUFBTSxXQUNsQixNQUFNLFdBQVcsS0FBSyxNQUFNLEtBQUssVUFDakMsS0FBSyxRQUFRLE1BQU0sV0FDbkIsTUFBTSxXQUFXLEtBQUssT0FBTyxLQUFLO0FBRXRDO0FBaUJPLFNBQVMsbUJBQ2QsU0FDQSxTQUNBLFdBQ0EsWUFNeUI7QUFDekIsUUFBTSxpQkFBaUI7QUFDakIsUUFBQSxrQkFBaUIseUNBQVksbUJBQWtCO0FBQy9DLFFBQUEsb0JBQW1CLHlDQUFZLHFCQUFvQjtBQUNuRCxRQUFBLG9CQUFtQix5Q0FBWSxxQkFBb0I7QUFFbkQsUUFBQSxhQUFhLFFBQVE7QUFDckIsUUFBQSxhQUFhLG9CQUFvQixPQUFPO0FBRTlDLFFBQU0sY0FBYyxXQUFXO0FBQy9CLFFBQU0sYUFBYSxXQUFXO0FBRTlCLFFBQU0sc0JBQ0osU0FBUyxnQkFBZ0IsZUFBZSxjQUFjLFdBQVc7QUFDbkUsUUFBTSxzQkFBc0IsYUFBYTtBQUN6QyxRQUFNLHNCQUNKLFNBQVMsZ0JBQWdCLGdCQUFnQixhQUFhLFdBQVcsU0FBUztBQUc1RSxNQUFJLG1CQUFtQjtBQUNuQixNQUFBLG1CQUFtQixhQUFhLFdBQVcsU0FBUztBQUNwRCxNQUFBLG1CQUFtQixXQUFXLGNBQWMsV0FBVztBQUMzRCxRQUFNLFlBQTBCLEVBQUUsWUFBWSxTQUFTLFVBQVUsUUFBUTtBQUdyRSxNQUFBLG1CQUFtQixHQUFHLHNCQUFzQixjQUFjO0FBRzlELE9BQ0UseUNBQVksYUFDWixjQUFjLGlCQUFpQixXQUFXLFFBQVEsSUFBSSxXQUFXLGNBQWMsS0FDL0Usc0JBQXNCLGlCQUFpQixtQkFBbUIsR0FDMUQ7QUFDQSx3QkFBb0Isb0JBQW9CO0FBQ3hDLGNBQVUsYUFBYTtBQUFBLEVBQ3pCO0FBR0ksTUFBQSxzQkFBc0Isb0JBQW9CLGNBQWMsa0JBQWtCO0FBQzVFLHVCQUFtQixtQkFBbUI7QUFDdEMsY0FBVSxhQUFhO0FBQUEsRUFDekI7QUFHQSxNQUNFLG9CQUNBLFVBQVUsZUFBZSxZQUN6QixXQUFXLFFBQVEsSUFBSSxrQkFDdkI7QUFDQSx3QkFBb0Isb0JBQW9CLFVBQVUsZUFBZSxVQUFVLEtBQUs7QUFBQSxFQUNsRjtBQUlHLE1BQUEsY0FBYyxvQkFBb0Isc0JBQXNCLG9CQUN6RCxTQUFTLGdCQUFnQixjQUFjLFdBQVcsYUFDbEQ7QUFDQSx1QkFBbUIsU0FBUyxnQkFBZ0IsY0FBYyxJQUFJLFdBQVcsY0FBYztBQUFBLEVBQ3pGO0FBR0EsTUFDRyxzQkFBc0IsaUJBQWlCLFdBQVcsZ0JBQ2pELHNCQUFzQixrQkFDbkIsbUJBQW1CLFdBQVcsZUFBZSxXQUFXLGlCQUM1RCxzQkFBc0IsdUJBQ3JCLHNCQUFzQixpQkFBaUIsV0FBVyxnQkFDbEQsQ0FBQyxrQkFDSDtBQUVFLHVCQUFBLHNCQUFzQixXQUFXLGVBQzdCLG1CQUFtQixXQUFXLFNBQVMsc0JBQXNCLGlCQUM3RCxhQUFhLFdBQVcsZUFBZTtBQUUxQix1QkFBQSxHQUFHLHNCQUFzQixjQUFjO0FBQzFELGNBQVUsV0FBVztBQUFBLEVBQ3ZCO0FBRU0sUUFBQSxnQkFBZ0IsVUFBVTtBQUk1QixNQUFBLGNBQWMsT0FBTyxHQUFHO0FBQzFCLHdCQUFvQixjQUFjO0FBQUEsRUFDcEM7QUFPSSxNQUFBLGNBQWMsTUFBTSxHQUFHO0FBQ3pCLHdCQUFvQixjQUFjO0FBQUEsRUFDcEM7QUFFTyxTQUFBO0FBQUEsSUFDTCxLQUFLO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixXQUFXO0FBQUEsSUFDWDtBQUFBLEVBQUE7QUFFSjtBQy9MTyxTQUFTLG1CQUNkLFFBQ0EsZUFDQSxpQkFDQSxXQUNBLFNBQ007QUFDRixNQUFBLENBQUMsVUFBVSxDQUFDLGVBQWU7QUFDN0I7QUFBQSxFQUNGO0FBR0EsVUFBUSxNQUFNLFlBQVksNkJBQTZCLEdBQUcsY0FBYyxXQUFXLElBQUk7QUFHdkYsVUFBUSxNQUFNLFlBQVkscUNBQXFDLEdBQUcsY0FBYyxZQUFZLElBQUk7QUFHaEcsUUFBTSxnQkFBZ0IsbUJBQW1CLGlCQUFpQixlQUFlLFNBQVM7QUFFbEYsVUFBUSxNQUFNLFlBQVksa0NBQWtDLEdBQUcsY0FBYyxJQUFJLElBQUk7QUFDckYsVUFBUSxNQUFNLFlBQVksa0NBQWtDLEdBQUcsY0FBYyxHQUFHLElBQUk7QUFDcEYsVUFBUSxNQUFNLFlBQVksa0NBQWtDLGNBQWMsU0FBUztBQUNuRixVQUFRLGFBQWEsK0JBQStCLGNBQWMsVUFBVSxRQUFRO0FBQ3BGLGdCQUFjLGFBQWEsK0JBQStCLGNBQWMsVUFBVSxRQUFRO0FBQzVGO0FDL0JPLFNBQVMsZ0NBQ2QsU0FDQSxXQUNBLFdBQ0EsT0FDTTtBQUNOLE1BQUksQ0FBQyxTQUFTO0FBQ1o7QUFBQSxFQUNGO0FBRVEsVUFBQSxhQUFhLGlCQUFpQixTQUFTO0FBQ3ZDLFVBQUEsYUFBYSxpQkFBaUIsU0FBUztBQUMvQyxVQUFRLGFBQWEsaUJBQWlCLEdBQUcsVUFBVSxhQUFhLFVBQVUsUUFBUSxFQUFFO0FBQ3RGO0FBS08sU0FBUyxtQ0FBbUMsU0FBK0M7QUFDaEcsTUFBSSxDQUFDLFNBQVM7QUFDWjtBQUFBLEVBQ0Y7QUFFQSxVQUFRLGdCQUFnQixlQUFlO0FBQ3ZDLFVBQVEsZ0JBQWdCLGVBQWU7QUFDdkMsVUFBUSxnQkFBZ0IsZUFBZTtBQUN6QztBQUtPLFNBQVMsMEJBQ2QsU0FDQSxXQUNBLFVBQ0EsV0FBK0IsV0FDekI7QUFDTixNQUFJLENBQUMsU0FBUztBQUNaO0FBQUEsRUFDRjtBQUVRLFVBQUEsYUFBYSxnQkFBZ0IsS0FBSztBQUNsQyxVQUFBLGFBQWEsUUFBUSxVQUFVO0FBQy9CLFVBQUEsYUFBYSxxQkFBcUIsTUFBTTtBQUN4QyxVQUFBLGFBQWEsaUJBQWlCLFFBQVE7QUFDdEMsVUFBQSxhQUFhLGlCQUFpQixTQUFTO0FBQ3ZDLFVBQUEsYUFBYSxhQUFhLFNBQVM7QUFDM0MsVUFBUSxhQUFhLGlCQUFpQixHQUFHLFFBQVEsRUFBRTtBQUNyRDtBQUtPLFNBQVMsNkJBQTZCLFNBQTZCO0FBQ3hFLE1BQUksQ0FBQyxTQUFTO0FBQ1o7QUFBQSxFQUNGO0FBRUEsVUFBUSxnQkFBZ0IsY0FBYztBQUN0QyxVQUFRLGdCQUFnQixNQUFNO0FBQzlCLFVBQVEsZ0JBQWdCLG1CQUFtQjtBQUMzQyxVQUFRLGdCQUFnQixlQUFlO0FBQ3ZDLFVBQVEsZ0JBQWdCLGVBQWU7QUFDdkMsVUFBUSxnQkFBZ0IsV0FBVztBQUNuQyxVQUFRLGdCQUFnQixlQUFlO0FBQ3pDOyJ9
@@ -1,4 +1,5 @@
1
1
  import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit';
2
+ import { CalendarView } from '../../calendar.js';
2
3
  import { SbbDatepickerElement } from '../datepicker.js';
3
4
  declare const SbbDatepickerToggleElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbNegativeMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbHydrationMixinType> & typeof LitElement;
4
5
  /**
@@ -8,6 +9,8 @@ export declare class SbbDatepickerToggleElement<T = Date> extends SbbDatepickerT
8
9
  static styles: CSSResultGroup;
9
10
  /** Datepicker reference. */
10
11
  datePicker?: string | SbbDatepickerElement;
12
+ /** The initial view of calendar which should be displayed on opening. */
13
+ view: CalendarView;
11
14
  private _disabled;
12
15
  private _min;
13
16
  private _max;
@@ -18,6 +21,7 @@ export declare class SbbDatepickerToggleElement<T = Date> extends SbbDatepickerT
18
21
  private _popoverElement;
19
22
  private _datePickerController;
20
23
  private _language;
24
+ private _abort;
21
25
  constructor();
22
26
  /**
23
27
  * Opens the calendar.
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker-toggle.d.ts","sourceRoot":"","sources":["../../../../../src/elements/datepicker/datepicker-toggle/datepicker-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAkB,UAAU,EAAW,MAAM,KAAK,CAAC;AAW1D,OAAO,KAAK,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAC;AAKlF,OAAO,mBAAmB,CAAC;AAC3B,OAAO,kBAAkB,CAAC;;AAE1B;;GAEG;AACH,qBAIa,0BAA0B,CAAC,CAAC,GAAG,IAAI,CAAE,SAAQ,+BAEzD;IACC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,4BAA4B;IACmB,UAAU,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAEjF,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,IAAI,CAA4C;IAExD,OAAO,CAAC,IAAI,CAA4C;IAExD,OAAO,CAAC,eAAe,CAAS;IAEzC,OAAO,CAAC,kBAAkB,CAA6C;IAEvE,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,CAAC,eAAe,CAA4B;IAEnD,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,qBAAqB,CAAmB;IAEhD,OAAO,CAAC,SAAS,CAAmC;;IASpD;;OAEG;IACI,IAAI,IAAI,IAAI;IAOH,iBAAiB,IAAI,IAAI;IAYzB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQzD,oBAAoB,IAAI,IAAI;IAK5C,OAAO,CAAC,KAAK;IAyCb,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,eAAe;cAgBJ,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAMzE,OAAO,CAAC,eAAe;cAIJ,MAAM,IAAI,cAAc;CA0C5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uBAAuB,EAAE,0BAA0B,CAAC;KACrD;CACF"}
1
+ {"version":3,"file":"datepicker-toggle.d.ts","sourceRoot":"","sources":["../../../../../src/elements/datepicker/datepicker-toggle/datepicker-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAkB,UAAU,EAAW,MAAM,KAAK,CAAC;AAI1D,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,mBAAmB,CAAC;AAO1E,OAAO,KAAK,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAC;AAKlF,OAAO,mBAAmB,CAAC;AAC3B,OAAO,kBAAkB,CAAC;;AAE1B;;GAEG;AACH,qBAIa,0BAA0B,CAAC,CAAC,GAAG,IAAI,CAAE,SAAQ,+BAEzD;IACC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,4BAA4B;IACmB,UAAU,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAE1F,yEAAyE;IACtD,IAAI,EAAE,YAAY,CAAS;IAErC,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,IAAI,CAA4C;IAExD,OAAO,CAAC,IAAI,CAA4C;IAExD,OAAO,CAAC,eAAe,CAAS;IAEzC,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,qBAAqB,CAAmB;IAChD,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,MAAM,CAAyC;;IASvD;;OAEG;IACI,IAAI,IAAI,IAAI;IAOH,iBAAiB,IAAI,IAAI;IAsBzB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQzD,oBAAoB,IAAI,IAAI;IAK5C,OAAO,CAAC,KAAK;IAyCb,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,eAAe;cAgBJ,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAMzE,OAAO,CAAC,eAAe;cAIJ,MAAM,IAAI,cAAc;CA2C5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uBAAuB,EAAE,0BAA0B,CAAC;KACrD;CACF"}
@@ -2,7 +2,7 @@ import { css, LitElement, isServer, html, nothing } from "lit";
2
2
  import { property, state, customElement } from "lit/decorators.js";
3
3
  import { ref } from "lit/directives/ref.js";
4
4
  import { sbbInputModalityDetector } from "../core/a11y.js";
5
- import { SbbLanguageController } from "../core/controllers.js";
5
+ import { SbbLanguageController, SbbConnectedAbortController } from "../core/controllers.js";
6
6
  import { hostAttributes } from "../core/decorators.js";
7
7
  import { i18nShowCalendar } from "../core/i18n.js";
8
8
  import { SbbNegativeMixin, SbbHydrationMixin } from "../core/mixins.js";
@@ -64,11 +64,13 @@ let SbbDatepickerToggleElement = class extends SbbNegativeMixin(
64
64
  ) {
65
65
  constructor() {
66
66
  super();
67
+ this.view = "day";
67
68
  this._disabled = false;
68
69
  this._min = null;
69
70
  this._max = null;
70
71
  this._renderCalendar = false;
71
72
  this._language = new SbbLanguageController(this);
73
+ this._abort = new SbbConnectedAbortController(this);
72
74
  if (!isServer) {
73
75
  this.hydrationComplete.then(() => this._renderCalendar = true);
74
76
  }
@@ -92,6 +94,15 @@ let SbbDatepickerToggleElement = class extends SbbNegativeMixin(
92
94
  if (formField) {
93
95
  this.negative = formField.hasAttribute("negative");
94
96
  }
97
+ this.addEventListener(
98
+ "click",
99
+ (event) => {
100
+ if (event.composedPath()[0] === this) {
101
+ this.open();
102
+ }
103
+ },
104
+ { signal: this._abort.signal }
105
+ );
95
106
  }
96
107
  willUpdate(changedProperties) {
97
108
  super.willUpdate(changedProperties);
@@ -199,6 +210,7 @@ let SbbDatepickerToggleElement = class extends SbbNegativeMixin(
199
210
  ${ref((el) => this._popoverElement = el)}
200
211
  >
201
212
  ${this._renderCalendar ? html`<sbb-calendar
213
+ .view=${this.view}
202
214
  .min=${this._min}
203
215
  .max=${this._max}
204
216
  .now=${this._nowOrUndefined()}
@@ -222,6 +234,9 @@ SbbDatepickerToggleElement.styles = style;
222
234
  __decorateClass([
223
235
  property({ attribute: "date-picker" })
224
236
  ], SbbDatepickerToggleElement.prototype, "datePicker", 2);
237
+ __decorateClass([
238
+ property()
239
+ ], SbbDatepickerToggleElement.prototype, "view", 2);
225
240
  __decorateClass([
226
241
  state()
227
242
  ], SbbDatepickerToggleElement.prototype, "_disabled", 2);
@@ -243,4 +258,4 @@ SbbDatepickerToggleElement = __decorateClass([
243
258
  export {
244
259
  SbbDatepickerToggleElement
245
260
  };
246
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10b2dnbGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItdG9nZ2xlL2RhdGVwaWNrZXItdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkNhbGVuZGFyRWxlbWVudCB9IGZyb20gJy4uLy4uL2NhbGVuZGFyLmpzJztcbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGkxOG5TaG93Q2FsZW5kYXIgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlBvcG92ZXJFbGVtZW50LCBTYmJQb3BvdmVyVHJpZ2dlckVsZW1lbnQgfSBmcm9tICcuLi8uLi9wb3BvdmVyLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZXBpY2tlckVsZW1lbnQsIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcbmltcG9ydCB7IGRhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZEV2ZW50RmFjdG9yeSwgZ2V0RGF0ZVBpY2tlciB9IGZyb20gJy4uL2RhdGVwaWNrZXIuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kYXRlcGlja2VyLXRvZ2dsZS5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2NhbGVuZGFyLmpzJztcbmltcG9ydCAnLi4vLi4vcG9wb3Zlci5qcyc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItZGF0ZXBpY2tlcmAsIGl0IGNhbiBiZSB1c2VkIHRvIHNlbGVjdCBhIGRhdGUgZnJvbSBhIGBzYmItY2FsZW5kYXJgLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXItdG9nZ2xlJylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHNsb3Q6ICdwcmVmaXgnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudDxUID0gRGF0ZT4gZXh0ZW5kcyBTYmJOZWdhdGl2ZU1peGluKFxuICBTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogRGF0ZXBpY2tlciByZWZlcmVuY2UuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2RhdGUtcGlja2VyJyB9KSBwdWJsaWMgZGF0ZVBpY2tlcj86IHN0cmluZyB8IFNiYkRhdGVwaWNrZXJFbGVtZW50O1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfbWluOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICBAc3RhdGUoKSBwcml2YXRlIF9tYXg6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX3JlbmRlckNhbGVuZGFyID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckVsZW1lbnQ6IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF9jYWxlbmRhckVsZW1lbnQhOiBTYmJDYWxlbmRhckVsZW1lbnQ8VD47XG5cbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQhOiBTYmJQb3BvdmVyVHJpZ2dlckVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSBfcG9wb3ZlckVsZW1lbnQhOiBTYmJQb3BvdmVyRWxlbWVudDtcblxuICBwcml2YXRlIF9kYXRlUGlja2VyQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgdGhpcy5oeWRyYXRpb25Db21wbGV0ZS50aGVuKCgpID0+ICh0aGlzLl9yZW5kZXJDYWxlbmRhciA9IHRydWUpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1wb3BvdmVyLXRyaWdnZXInKSE7XG4gICAgfVxuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAoIXRoaXMuZGF0ZVBpY2tlcikge1xuICAgICAgdGhpcy5faW5pdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpID8/IHRoaXMuY2xvc2VzdD8uKCdbZGF0YS1mb3JtLWZpZWxkXScpO1xuICAgIGlmIChmb3JtRmllbGQpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSBmb3JtRmllbGQuaGFzQXR0cmlidXRlKCduZWdhdGl2ZScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGF0ZVBpY2tlcicpKSB7XG4gICAgICB0aGlzLl9pbml0KHRoaXMuZGF0ZVBpY2tlcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXI/LmFib3J0KCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0KGRhdGVQaWNrZXI/OiBzdHJpbmcgfCBTYmJEYXRlcGlja2VyRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ID0gZ2V0RGF0ZVBpY2tlcjxUPih0aGlzLCBkYXRlUGlja2VyKTtcbiAgICBpZiAoIXRoaXMuX2RhdGVQaWNrZXJFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgY29tcG9uZW50IGlzIGF0dGFjaGVkIHRvIHRoZSBET00gYmVmb3JlIHRoZSBkYXRlcGlja2VyLCBpdCBoYXMgdG8gbGlzdGVuIGZvciB0aGUgZGF0ZXBpY2tlciBpbml0LFxuICAgICAgLy8gYXNzdW1pbmcgdGhhdCB0aGUgdHdvIGNvbXBvbmVudHMgc2hhcmUgdGhlIHNhbWUgcGFyZW50IGVsZW1lbnQuXG4gICAgICB0aGlzLnBhcmVudEVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdpbnB1dFVwZGF0ZWQnLFxuICAgICAgICAoZTogRXZlbnQpID0+IHRoaXMuX2luaXQoZS50YXJnZXQgYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQpLFxuICAgICAgICB7IG9uY2U6IHRydWUsIHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2lucHV0VXBkYXRlZCcsXG4gICAgICAoZXZlbnQ6IEN1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+KSA9PiB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+O1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9ICEhKGV2ZW50LmRldGFpbC5kaXNhYmxlZCB8fCBldmVudC5kZXRhaWwucmVhZG9ubHkpO1xuICAgICAgICB0aGlzLl9taW4gPSBldmVudC5kZXRhaWwubWluO1xuICAgICAgICB0aGlzLl9tYXggPSBldmVudC5kZXRhaWwubWF4O1xuICAgICAgfSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwgfSxcbiAgICApO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2NoYW5nZScsXG4gICAgICAoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLl9kYXRlUGlja2VyQ2hhbmdlZChldmVudCksXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2RhdGVQaWNrZXJVcGRhdGVkJyxcbiAgICAgIChldmVudDogRXZlbnQpID0+XG4gICAgICAgIHRoaXMuX2NvbmZpZ3VyZUNhbGVuZGFyKHRoaXMuX2NhbGVuZGFyRWxlbWVudCwgZXZlbnQudGFyZ2V0IGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+KSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwgfSxcbiAgICApO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQoZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkRXZlbnRGYWN0b3J5KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlQ2FsZW5kYXIoXG4gICAgY2FsZW5kYXI6IFNiYkNhbGVuZGFyRWxlbWVudDxUPixcbiAgICBkYXRlcGlja2VyOiBTYmJEYXRlcGlja2VyRWxlbWVudDxUPixcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFjYWxlbmRhciB8fCAhZGF0ZXBpY2tlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjYWxlbmRhci53aWRlID0gZGF0ZXBpY2tlci53aWRlO1xuICAgIGNhbGVuZGFyLm5vdyA9IHRoaXMuX25vd09yVW5kZWZpbmVkKCk7XG4gICAgY2FsZW5kYXIuZGF0ZUZpbHRlciA9IGRhdGVwaWNrZXIuZGF0ZUZpbHRlcjtcbiAgfVxuXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJDaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+O1xuICAgIGlmICh0aGlzLl9jYWxlbmRhckVsZW1lbnQgJiYgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQudmFsdWVBc0RhdGUpIHtcbiAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LnZhbHVlQXNEYXRlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnbkNhbGVuZGFyKGNhbGVuZGFyOiBTYmJDYWxlbmRhckVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2FsZW5kYXJFbGVtZW50ICYmIHRoaXMuX2NhbGVuZGFyRWxlbWVudCA9PT0gY2FsZW5kYXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50ID0gY2FsZW5kYXI7XG4gICAgaWYgKFxuICAgICAgISgndmFsdWVBc0RhdGUnIGluICh0aGlzLl9kYXRlUGlja2VyRWxlbWVudCA/PyB7fSkpIHx8XG4gICAgICAhdGhpcy5fY2FsZW5kYXJFbGVtZW50Py5yZXNldFBvc2l0aW9uXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50IS52YWx1ZUFzRGF0ZSA/PyB1bmRlZmluZWQ7XG4gICAgdGhpcy5fY29uZmlndXJlQ2FsZW5kYXIodGhpcy5fY2FsZW5kYXJFbGVtZW50LCB0aGlzLl9kYXRlUGlja2VyRWxlbWVudCEpO1xuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5yZXNldFBvc2l0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci51cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIHRoaXMuX3BvcG92ZXJFbGVtZW50LnRyaWdnZXIgPSB0aGlzLl90cmlnZ2VyRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgX25vd09yVW5kZWZpbmVkKCk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyRWxlbWVudD8uaGFzQ3VzdG9tTm93KCkgPyB0aGlzLl9kYXRlUGlja2VyRWxlbWVudC5ub3cgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItcG9wb3Zlci10cmlnZ2VyXG4gICAgICAgIGljb24tbmFtZT1cImNhbGVuZGFyLXNtYWxsXCJcbiAgICAgICAgYXJpYS1sYWJlbD0ke2kxOG5TaG93Q2FsZW5kYXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9kaXNhYmxlZD0keyFpc1NlcnZlciAmJiAoIXRoaXMuX2RhdGVQaWNrZXJFbGVtZW50IHx8IHRoaXMuX2Rpc2FibGVkKX1cbiAgICAgICAgP25lZ2F0aXZlPSR7dGhpcy5uZWdhdGl2ZX1cbiAgICAgICAgZGF0YS1pY29uLXNtYWxsXG4gICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl90cmlnZ2VyRWxlbWVudCA9IGVsIGFzIFNiYlBvcG92ZXJUcmlnZ2VyRWxlbWVudCkpfVxuICAgICAgPjwvc2JiLXBvcG92ZXItdHJpZ2dlcj5cbiAgICAgIDxzYmItcG9wb3ZlclxuICAgICAgICBAd2lsbE9wZW49JHsoKSA9PiB0aGlzLl9jYWxlbmRhckVsZW1lbnQucmVzZXRQb3NpdGlvbigpfVxuICAgICAgICBAZGlkT3Blbj0keygpID0+IHtcbiAgICAgICAgICBpZiAoc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLm1vc3RSZWNlbnRNb2RhbGl0eSA9PT0gJ2tleWJvYXJkJykge1xuICAgICAgICAgICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICAudHJpZ2dlcj0ke3RoaXMuX3RyaWdnZXJFbGVtZW50fVxuICAgICAgICBoaWRlLWNsb3NlLWJ1dHRvblxuICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fcG9wb3ZlckVsZW1lbnQgPSBlbCBhcyBTYmJQb3BvdmVyRWxlbWVudCkpfVxuICAgICAgPlxuICAgICAgICAke3RoaXMuX3JlbmRlckNhbGVuZGFyXG4gICAgICAgICAgPyBodG1sYDxzYmItY2FsZW5kYXJcbiAgICAgICAgICAgICAgLm1pbj0ke3RoaXMuX21pbn1cbiAgICAgICAgICAgICAgLm1heD0ke3RoaXMuX21heH1cbiAgICAgICAgICAgICAgLm5vdz0ke3RoaXMuX25vd09yVW5kZWZpbmVkKCl9XG4gICAgICAgICAgICAgID93aWRlPSR7dGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LndpZGV9XG4gICAgICAgICAgICAgIC5kYXRlRmlsdGVyPSR7dGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmRhdGVGaWx0ZXJ9XG4gICAgICAgICAgICAgIEBkYXRlU2VsZWN0ZWQ9JHsoZDogQ3VzdG9tRXZlbnQ8VD4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQuc2VsZWN0ZWQgPSBkLmRldGFpbDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LnZhbHVlQXNEYXRlID0gZC5kZXRhaWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAke3JlZigoY2FsZW5kYXI/OiBFbGVtZW50KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuX2Fzc2lnbkNhbGVuZGFyKGNhbGVuZGFyIGFzIFNiYkNhbGVuZGFyRWxlbWVudDxUPiksXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA+PC9zYmItY2FsZW5kYXI+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgIDwvc2JiLXBvcG92ZXI+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXItdG9nZ2xlJzogU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJPLElBQU0sNkJBQU4sY0FBbUQ7QUFBQSxFQUN4RCxrQkFBa0IsVUFBVTtBQUM5QixFQUFFO0FBQUEsRUEwQk8sY0FBYztBQUNiO0FBckJDLFNBQVEsWUFBWTtBQUVwQixTQUFRLE9BQTJDO0FBRW5ELFNBQVEsT0FBMkM7QUFFbkQsU0FBUSxrQkFBa0I7QUFZM0IsU0FBQSxZQUFZLElBQUksc0JBQXNCLElBQUk7QUFJaEQsUUFBSSxDQUFDLFVBQVU7QUFDYixXQUFLLGtCQUFrQixLQUFLLE1BQU8sS0FBSyxrQkFBa0IsSUFBSztBQUFBLElBQ2pFO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS08sT0FBYTtBQUNkLFFBQUEsQ0FBQyxLQUFLLGlCQUFpQjtBQUN6QixXQUFLLGtCQUFrQixLQUFLLFdBQVksY0FBYyxxQkFBcUI7QUFBQSxJQUM3RTtBQUNBLFNBQUssZ0JBQWdCO0VBQ3ZCO0FBQUEsRUFFZ0Isb0JBQTBCOztBQUN4QyxVQUFNLGtCQUFrQjtBQUNwQixRQUFBLENBQUMsS0FBSyxZQUFZO0FBQ3BCLFdBQUssTUFBTTtBQUFBLElBQ2I7QUFFQSxVQUFNLGNBQVksVUFBSyxZQUFMLDhCQUFlLHdCQUFxQixVQUFLLFlBQUwsOEJB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
261
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10b2dnbGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItdG9nZ2xlL2RhdGVwaWNrZXItdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgdHlwZSB7IENhbGVuZGFyVmlldywgU2JiQ2FsZW5kYXJFbGVtZW50IH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIuanMnO1xuaW1wb3J0IHsgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpMThuU2hvd0NhbGVuZGFyIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluLCBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJQb3BvdmVyRWxlbWVudCwgU2JiUG9wb3ZlclRyaWdnZXJFbGVtZW50IH0gZnJvbSAnLi4vLi4vcG9wb3Zlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVwaWNrZXJFbGVtZW50LCBTYmJJbnB1dFVwZGF0ZUV2ZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci5qcyc7XG5pbXBvcnQgeyBkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWRFdmVudEZhY3RvcnksIGdldERhdGVQaWNrZXIgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGF0ZXBpY2tlci10b2dnbGUuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9jYWxlbmRhci5qcyc7XG5pbXBvcnQgJy4uLy4uL3BvcG92ZXIuanMnO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBgc2JiLWRhdGVwaWNrZXJgLCBpdCBjYW4gYmUgdXNlZCB0byBzZWxlY3QgYSBkYXRlIGZyb20gYSBgc2JiLWNhbGVuZGFyYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLXRvZ2dsZScpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBzbG90OiAncHJlZml4Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihcbiAgU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCksXG4pIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIERhdGVwaWNrZXIgcmVmZXJlbmNlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkYXRlLXBpY2tlcicgfSkgcHVibGljIGRhdGVQaWNrZXI/OiBzdHJpbmcgfCBTYmJEYXRlcGlja2VyRWxlbWVudDtcblxuICAvKiogVGhlIGluaXRpYWwgdmlldyBvZiBjYWxlbmRhciB3aGljaCBzaG91bGQgYmUgZGlzcGxheWVkIG9uIG9wZW5pbmcuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyB2aWV3OiBDYWxlbmRhclZpZXcgPSAnZGF5JztcblxuICBAc3RhdGUoKSBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX21pbjogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfbWF4OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICBAc3RhdGUoKSBwcml2YXRlIF9yZW5kZXJDYWxlbmRhciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJFbGVtZW50OiBTYmJEYXRlcGlja2VyRWxlbWVudDxUPiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2NhbGVuZGFyRWxlbWVudCE6IFNiYkNhbGVuZGFyRWxlbWVudDxUPjtcbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQhOiBTYmJQb3BvdmVyVHJpZ2dlckVsZW1lbnQ7XG4gIHByaXZhdGUgX3BvcG92ZXJFbGVtZW50ITogU2JiUG9wb3ZlckVsZW1lbnQ7XG4gIHByaXZhdGUgX2RhdGVQaWNrZXJDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2Fib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT4gKHRoaXMuX3JlbmRlckNhbGVuZGFyID0gdHJ1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3Rvcignc2JiLXBvcG92ZXItdHJpZ2dlcicpITtcbiAgICB9XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIGlmICghdGhpcy5kYXRlUGlja2VyKSB7XG4gICAgICB0aGlzLl9pbml0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybUZpZWxkID0gdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJykgPz8gdGhpcy5jbG9zZXN0Py4oJ1tkYXRhLWZvcm0tZmllbGRdJyk7XG4gICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IGZvcm1GaWVsZC5oYXNBdHRyaWJ1dGUoJ25lZ2F0aXZlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQuY29tcG9zZWRQYXRoKClbMF0gPT09IHRoaXMpIHtcbiAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl9hYm9ydC5zaWduYWwgfSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkYXRlUGlja2VyJykpIHtcbiAgICAgIHRoaXMuX2luaXQodGhpcy5kYXRlUGlja2VyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXQoZGF0ZVBpY2tlcj86IHN0cmluZyB8IFNiYkRhdGVwaWNrZXJFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgPSBnZXREYXRlUGlja2VyPFQ+KHRoaXMsIGRhdGVQaWNrZXIpO1xuICAgIGlmICghdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQpIHtcbiAgICAgIC8vIElmIHRoZSBjb21wb25lbnQgaXMgYXR0YWNoZWQgdG8gdGhlIERPTSBiZWZvcmUgdGhlIGRhdGVwaWNrZXIsIGl0IGhhcyB0byBsaXN0ZW4gZm9yIHRoZSBkYXRlcGlja2VyIGluaXQsXG4gICAgICAvLyBhc3N1bWluZyB0aGF0IHRoZSB0d28gY29tcG9uZW50cyBzaGFyZSB0aGUgc2FtZSBwYXJlbnQgZWxlbWVudC5cbiAgICAgIHRoaXMucGFyZW50RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2lucHV0VXBkYXRlZCcsXG4gICAgICAgIChlOiBFdmVudCkgPT4gdGhpcy5faW5pdChlLnRhcmdldCBhcyBTYmJEYXRlcGlja2VyRWxlbWVudCksXG4gICAgICAgIHsgb25jZTogdHJ1ZSwgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwgfSxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnaW5wdXRVcGRhdGVkJyxcbiAgICAgIChldmVudDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD4pID0+IHtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD47XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gISEoZXZlbnQuZGV0YWlsLmRpc2FibGVkIHx8IGV2ZW50LmRldGFpbC5yZWFkb25seSk7XG4gICAgICAgIHRoaXMuX21pbiA9IGV2ZW50LmRldGFpbC5taW47XG4gICAgICAgIHRoaXMuX21heCA9IGV2ZW50LmRldGFpbC5tYXg7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIChldmVudDogRXZlbnQpID0+IHRoaXMuX2RhdGVQaWNrZXJDaGFuZ2VkKGV2ZW50KSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnZGF0ZVBpY2tlclVwZGF0ZWQnLFxuICAgICAgKGV2ZW50OiBFdmVudCkgPT5cbiAgICAgICAgdGhpcy5fY29uZmlndXJlQ2FsZW5kYXIodGhpcy5fY2FsZW5kYXJFbGVtZW50LCBldmVudC50YXJnZXQgYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4pLFxuICAgICAgeyBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWRFdmVudEZhY3RvcnkoKSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVDYWxlbmRhcihcbiAgICBjYWxlbmRhcjogU2JiQ2FsZW5kYXJFbGVtZW50PFQ+LFxuICAgIGRhdGVwaWNrZXI6IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+LFxuICApOiB2b2lkIHtcbiAgICBpZiAoIWNhbGVuZGFyIHx8ICFkYXRlcGlja2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNhbGVuZGFyLndpZGUgPSBkYXRlcGlja2VyLndpZGU7XG4gICAgY2FsZW5kYXIubm93ID0gdGhpcy5fbm93T3JVbmRlZmluZWQoKTtcbiAgICBjYWxlbmRhci5kYXRlRmlsdGVyID0gZGF0ZXBpY2tlci5kYXRlRmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckNoYW5nZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD47XG4gICAgaWYgKHRoaXMuX2NhbGVuZGFyRWxlbWVudCAmJiB0aGlzLl9kYXRlUGlja2VyRWxlbWVudC52YWx1ZUFzRGF0ZSkge1xuICAgICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQudmFsdWVBc0RhdGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYXNzaWduQ2FsZW5kYXIoY2FsZW5kYXI6IFNiYkNhbGVuZGFyRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jYWxlbmRhckVsZW1lbnQgJiYgdGhpcy5fY2FsZW5kYXJFbGVtZW50ID09PSBjYWxlbmRhcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQgPSBjYWxlbmRhcjtcbiAgICBpZiAoXG4gICAgICAhKCd2YWx1ZUFzRGF0ZScgaW4gKHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ID8/IHt9KSkgfHxcbiAgICAgICF0aGlzLl9jYWxlbmRhckVsZW1lbnQ/LnJlc2V0UG9zaXRpb25cbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQhLnZhbHVlQXNEYXRlID8/IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9jb25maWd1cmVDYWxlbmRhcih0aGlzLl9jYWxlbmRhckVsZW1lbnQsIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ISk7XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnJlc2V0UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5fcG9wb3ZlckVsZW1lbnQudHJpZ2dlciA9IHRoaXMuX3RyaWdnZXJFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfbm93T3JVbmRlZmluZWQoKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5oYXNDdXN0b21Ob3coKSA/IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Lm5vdyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1wb3BvdmVyLXRyaWdnZXJcbiAgICAgICAgaWNvbi1uYW1lPVwiY2FsZW5kYXItc21hbGxcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7aTE4blNob3dDYWxlbmRhclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgP2Rpc2FibGVkPSR7IWlzU2VydmVyICYmICghdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgfHwgdGhpcy5fZGlzYWJsZWQpfVxuICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICBkYXRhLWljb24tc21hbGxcbiAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gZWwgYXMgU2JiUG9wb3ZlclRyaWdnZXJFbGVtZW50KSl9XG4gICAgICA+PC9zYmItcG9wb3Zlci10cmlnZ2VyPlxuICAgICAgPHNiYi1wb3BvdmVyXG4gICAgICAgIEB3aWxsT3Blbj0keygpID0+IHRoaXMuX2NhbGVuZGFyRWxlbWVudC5yZXNldFBvc2l0aW9uKCl9XG4gICAgICAgIEBkaWRPcGVuPSR7KCkgPT4ge1xuICAgICAgICAgIGlmIChzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5ID09PSAna2V5Ym9hcmQnKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIC50cmlnZ2VyPSR7dGhpcy5fdHJpZ2dlckVsZW1lbnR9XG4gICAgICAgIGhpZGUtY2xvc2UtYnV0dG9uXG4gICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl9wb3BvdmVyRWxlbWVudCA9IGVsIGFzIFNiYlBvcG92ZXJFbGVtZW50KSl9XG4gICAgICA+XG4gICAgICAgICR7dGhpcy5fcmVuZGVyQ2FsZW5kYXJcbiAgICAgICAgICA/IGh0bWxgPHNiYi1jYWxlbmRhclxuICAgICAgICAgICAgICAudmlldz0ke3RoaXMudmlld31cbiAgICAgICAgICAgICAgLm1pbj0ke3RoaXMuX21pbn1cbiAgICAgICAgICAgICAgLm1heD0ke3RoaXMuX21heH1cbiAgICAgICAgICAgICAgLm5vdz0ke3RoaXMuX25vd09yVW5kZWZpbmVkKCl9XG4gICAgICAgICAgICAgID93aWRlPSR7dGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LndpZGV9XG4gICAgICAgICAgICAgIC5kYXRlRmlsdGVyPSR7dGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmRhdGVGaWx0ZXJ9XG4gICAgICAgICAgICAgIEBkYXRlU2VsZWN0ZWQ9JHsoZDogQ3VzdG9tRXZlbnQ8VD4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQuc2VsZWN0ZWQgPSBkLmRldGFpbDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LnZhbHVlQXNEYXRlID0gZC5kZXRhaWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAke3JlZigoY2FsZW5kYXI/OiBFbGVtZW50KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuX2Fzc2lnbkNhbGVuZGFyKGNhbGVuZGFyIGFzIFNiYkNhbGVuZGFyRWxlbWVudDxUPiksXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA+PC9zYmItY2FsZW5kYXI+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgIDwvc2JiLXBvcG92ZXI+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXItdG9nZ2xlJzogU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJPLElBQU0sNkJBQU4sY0FBbUQ7QUFBQSxFQUN4RCxrQkFBa0IsVUFBVTtBQUM5QixFQUFFO0FBQUEsRUF5Qk8sY0FBYztB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
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../../src/elements/dialog/dialog/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAQ1E,OAAO,EAAe,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAMtE,OAAO,6BAA6B,CAAC;AAIrC;;;;;;;;;;;GAWG;AACH,qBACa,gBAAiB,SAAQ,qBAAqB;IACzD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,6BAA6B;IACsB,cAAc,EAAE,OAAO,GAAG,MAAM,CAAW;IAM9F,OAAO,CAAC,4BAA4B,CAElC;IAEF,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,qBAAqB,CAAwC;IACrE,OAAO,CAAC,2BAA2B,CAAkB;IACrD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAsB;IAEtD,2BAA2B;IACpB,IAAI,IAAI,IAAI;IA2BH,iBAAiB,IAAI,IAAI;cAYtB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAO3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ5D,oBAAoB,IAAI,IAAI;cAKzB,uBAAuB,IAAI,IAAI;IAgBlD,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAsC5D,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,oBAAoB,CAS1B;IAGF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,0BAA0B;cAMf,MAAM,IAAI,cAAc;CAmB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../../src/elements/dialog/dialog/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAO1E,OAAO,EAAe,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAMtE,OAAO,6BAA6B,CAAC;AAIrC;;;;;;;;;;;GAWG;AACH,qBACa,gBAAiB,SAAQ,qBAAqB;IACzD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,6BAA6B;IACsB,cAAc,EAAE,OAAO,GAAG,MAAM,CAAW;IAM9F,OAAO,CAAC,4BAA4B,CAElC;IAEF,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,qBAAqB,CAAwC;IACrE,OAAO,CAAC,2BAA2B,CAAkB;IACrD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAsB;IAEtD,2BAA2B;IACpB,IAAI,IAAI,IAAI;IA2BH,iBAAiB,IAAI,IAAI;cAYtB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAO3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ5D,oBAAoB,IAAI,IAAI;cAKzB,uBAAuB,IAAI,IAAI;IAgBlD,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAsC5D,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,oBAAoB,CAS1B;IAGF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,0BAA0B;cAMf,MAAM,IAAI,cAAc;CAmB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
@@ -3,7 +3,6 @@ import { html } from "lit/static-html.js";
3
3
  import { setModalityOnNextFocus, getFirstFocusableElement } from "../core/a11y.js";
4
4
  import { isBreakpoint } from "../core/dom.js";
5
5
  import { AgnosticResizeObserver } from "../core/observers.js";
6
- import { applyInertMechanism, removeInertMechanism } from "../core/overlay.js";
7
6
  import { SbbOverlayBaseElement, overlayRefs } from "../overlay.js";
8
7
  import { css } from "lit";
9
8
  import "../screen-reader-only.js";
@@ -320,7 +319,7 @@ let SbbDialogElement = class extends SbbOverlayBaseElement {
320
319
  if (event.animationName === "open" && this.state === "opening") {
321
320
  this.state = "opened";
322
321
  this.didOpen.emit();
323
- applyInertMechanism(this);
322
+ this.inertController.activate();
324
323
  this.attachOpenOverlayEvents();
325
324
  this.setOverlayFocus();
326
325
  setTimeout(
@@ -336,7 +335,7 @@ let SbbDialogElement = class extends SbbOverlayBaseElement {
336
335
  this._setHideHeaderDataAttribute(false);
337
336
  (_a = this._dialogContentElement) == null ? void 0 : _a.scrollTo(0, 0);
338
337
  this.state = "closed";
339
- removeInertMechanism();
338
+ this.inertController.deactivate();
340
339
  setModalityOnNextFocus(this.lastFocusedElement);
341
340
  (_b = this.lastFocusedElement) == null ? void 0 : _b.focus();
342
341
  (_c = this.openOverlayController) == null ? void 0 : _c.abort();
@@ -443,4 +442,4 @@ SbbDialogElement = __decorateClass([
443
442
  export {
444
443
  SbbDialogElement
445
444
  };
446
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy9kaWFsb2cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB7IGdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudCwgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBpc0JyZWFrcG9pbnQgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBBZ25vc3RpY1Jlc2l6ZU9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuaW1wb3J0IHsgYXBwbHlJbmVydE1lY2hhbmlzbSwgcmVtb3ZlSW5lcnRNZWNoYW5pc20gfSBmcm9tICcuLi8uLi9jb3JlL292ZXJsYXkuanMnO1xuaW1wb3J0IHsgb3ZlcmxheVJlZnMsIFNiYk92ZXJsYXlCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL292ZXJsYXkuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEaWFsb2dBY3Rpb25zRWxlbWVudCB9IGZyb20gJy4uL2RpYWxvZy1hY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGlhbG9nVGl0bGVFbGVtZW50IH0gZnJvbSAnLi4vZGlhbG9nLXRpdGxlLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGlhbG9nLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gaW50ZXJhY3RpdmUgb3ZlcmxheSBlbGVtZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gcHJvdmlkZSBhIGBzYmItZGlhbG9nLXRpdGxlYCwgYHNiYi1kaWFsb2ctY29udGVudGAgYW5kIGFuIG9wdGlvbmFsIGBzYmItZGlhbG9nLWFjdGlvbnNgLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gd2lsbE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1kaWFsb2dgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkaWRPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZGlhbG9nYCBpcyBvcGVuZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1kaWFsb2dgIGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZGlhbG9nYCBpcyBjbG9zZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItZGlhbG9nLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kaWFsb2cnKVxuZXhwb3J0IGNsYXNzIFNiYkRpYWxvZ0VsZW1lbnQgZXh0ZW5kcyBTYmJPdmVybGF5QmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogQmFja2Ryb3AgY2xpY2sgYWN0aW9uLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdiYWNrZHJvcC1hY3Rpb24nIH0pIHB1YmxpYyBiYWNrZHJvcEFjdGlvbjogJ2Nsb3NlJyB8ICdub25lJyA9ICdjbG9zZSc7XG5cbiAgLy8gV2UgdXNlIGEgdGltZW91dCBhcyBhIHdvcmthcm91bmQgdG8gdGhlIFwiUmVzaXplT2JzZXJ2ZXIgbG9vcCBjb21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJlZCBub3RpZmljYXRpb25zXCIgZXJyb3IuXG4gIC8vIEZvciBtb3JlIGRldGFpbHM6XG4gIC8vIC0gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvcmVzaXplLW9ic2VydmVyL2lzc3Vlcy8zOCNpc3N1ZWNvbW1lbnQtNDIyMTI2MDA2XG4gIC8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2p1Z2dsZS9yZXNpemUtb2JzZXJ2ZXIvaXNzdWVzLzEwMyNpc3N1ZWNvbW1lbnQtMTcxMTE0ODI4NVxuICBwcml2YXRlIF9kaWFsb2dDb250ZW50UmVzaXplT2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNSZXNpemVPYnNlcnZlcigoKSA9PlxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fb25Db250ZW50UmVzaXplKCkpLFxuICApO1xuXG4gIHByaXZhdGUgX2RpYWxvZ1RpdGxlRWxlbWVudDogU2JiRGlhbG9nVGl0bGVFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2RpYWxvZ1RpdGxlSGVpZ2h0PzogbnVtYmVyO1xuICBwcml2YXRlIF9kaWFsb2dDb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZGlhbG9nQWN0aW9uc0VsZW1lbnQ6IFNiYkRpYWxvZ0FjdGlvbnNFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2lzUG9pbnRlckRvd25FdmVudE9uRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX292ZXJmbG93czogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9sYXN0U2Nyb2xsID0gMDtcbiAgcHJpdmF0ZSBfZGlhbG9nSWQgPSBgc2JiLWRpYWxvZy0ke25leHRJZCsrfWA7XG4gIHByb3RlY3RlZCBjbG9zZUF0dHJpYnV0ZTogc3RyaW5nID0gJ3NiYi1kaWFsb2ctY2xvc2UnO1xuXG4gIC8qKiBPcGVucyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBkaWFsb2cgZWxlbWVudHNcbiAgICB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQgPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1kaWFsb2ctdGl0bGUnKTtcbiAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudCA9IHRoaXMucXVlcnlTZWxlY3Rvcignc2JiLWRpYWxvZy1jb250ZW50Jyk/LnNoYWRvd1Jvb3QhXG4gICAgICAuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5fZGlhbG9nQWN0aW9uc0VsZW1lbnQgPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1kaWFsb2ctYWN0aW9ucycpO1xuXG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG5cbiAgICAvLyBBZGQgdGhpcyBkaWFsb2cgdG8gdGhlIGdsb2JhbCBjb2xsZWN0aW9uXG4gICAgb3ZlcmxheVJlZnMucHVzaCh0aGlzIGFzIFNiYkRpYWxvZ0VsZW1lbnQpO1xuICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50KTtcblxuICAgIC8vIERpc2FibGUgc2Nyb2xsaW5nIGZvciBjb250ZW50IGJlbG93IHRoZSBkaWFsb2dcbiAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGlzYWJsZVNjcm9sbCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAvLyBDbG9zZSBkaWFsb2cgb24gYmFja2Ryb3AgY2xpY2tcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lciwge1xuICAgICAgc2lnbmFsOiB0aGlzLm92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrLCB7XG4gICAgICBzaWduYWw6IHRoaXMub3ZlcmxheUNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAvLyBTeW5jaHJvbml6ZSB0aGUgbmVnYXRpdmUgc3RhdGUgYmVmb3JlIHRoZSBmaXJzdCBvcGVuaW5nIHRvIGF2b2lkIGEgcG9zc2libGUgY29sb3IgZmxhc2ggaWYgaXQgaXMgbmVnYXRpdmUuXG4gICAgdGhpcy5fZGlhbG9nVGl0bGVFbGVtZW50ID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdzYmItZGlhbG9nLXRpdGxlJykhO1xuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTogdm9pZCB7XG4gICAgc3VwZXIuYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTtcblxuICAgIC8vIElmIHRoZSBjb250ZW50IG92ZXJmbG93cywgc2hvdy9oaWRlIHRoZSBkaWFsb2cgaGVhZGVyIG9uIHNjcm9sbC5cbiAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fb25Db250ZW50U2Nyb2xsKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0SGlkZUhlYWRlckRhdGFBdHRyaWJ1dGUoZmFsc2UpLCB7XG4gICAgICBzaWduYWw6IHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFdhaXQgZm9yIGRpYWxvZyB0cmFuc2l0aW9uIHRvIGNvbXBsZXRlLlxuICAvLyBJbiByYXJlIGNhc2VzLCBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgLy8gVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICBwcm90ZWN0ZWQgb25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgICB0aGlzLmRpZE9wZW4uZW1pdCgpO1xuICAgICAgYXBwbHlJbmVydE1lY2hhbmlzbSh0aGlzKTtcbiAgICAgIHRoaXMuYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTtcbiAgICAgIHRoaXMuc2V0T3ZlcmxheUZvY3VzKCk7XG4gICAgICAvLyBVc2UgdGltZW91dCB0byByZWFkIGxhYmVsIGFmdGVyIGZvY3VzZWQgZWxlbWVudFxuICAgICAgc2V0VGltZW91dCgoKSA9PlxuICAgICAgICB0aGlzLnNldEFyaWFMaXZlUmVmQ29udGVudChcbiAgICAgICAgICB0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCB8fCB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQ/LmlubmVyVGV4dC50cmltKCksXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgdGhpcy5mb2N1c0hhbmRsZXIudHJhcCh0aGlzKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9zZXRIaWRlSGVhZGVyRGF0YUF0dHJpYnV0ZShmYWxzZSk7XG4gICAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudD8uc2Nyb2xsVG8oMCwgMCk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgICByZW1vdmVJbmVydE1lY2hhbmlzbSgpO1xuICAgICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyh0aGlzLmxhc3RGb2N1c2VkRWxlbWVudCk7XG4gICAgICAvLyBNYW51YWxseSBmb2N1cyBsYXN0IGZvY3VzZWQgZWxlbWVudFxuICAgICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuZm9jdXNIYW5kbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLnJlbW92ZUluc3RhbmNlRnJvbUdsb2JhbENvbGxlY3Rpb24oKTtcbiAgICAgIC8vIEVuYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIGRpYWxvZyBpZiBubyBkaWFsb2cgaXMgb3BlblxuICAgICAgaWYgKCFvdmVybGF5UmVmcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5kaWRDbG9zZS5lbWl0KHtcbiAgICAgICAgcmV0dXJuVmFsdWU6IHRoaXMucmV0dXJuVmFsdWUsXG4gICAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgZm9jdXMgb24gdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50LlxuICBwcm90ZWN0ZWQgc2V0T3ZlcmxheUZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlID0gZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuKS5maWx0ZXIoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IGUgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpLFxuICAgICk7XG4gICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyhmaXJzdEZvY3VzYWJsZSk7XG4gICAgZmlyc3RGb2N1c2FibGU/LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jTmVnYXRpdmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2RpYWxvZ1RpdGxlRWxlbWVudCkge1xuICAgICAgdGhpcy5fZGlhbG9nVGl0bGVFbGVtZW50Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZGlhbG9nQWN0aW9uc0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2RpYWxvZ0FjdGlvbnNFbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1uZWdhdGl2ZScsIHRoaXMubmVnYXRpdmUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uQ29udGVudFNjcm9sbCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGFzVmlzaWJsZUhlYWRlciA9IHRoaXMuZGF0YXNldC5oaWRlSGVhZGVyID09PSB1bmRlZmluZWQ7XG5cbiAgICAvLyBDaGVjayB3aGV0aGVyIGhpZGluZyB0aGUgaGVhZGVyIHdvdWxkIG1ha2UgdGhlIHNjcm9sbGJhciBkaXNhcHBlYXJcbiAgICAvLyBhbmQgcHJldmVudCB0aGUgaGlkaW5nIGFuaW1hdGlvbiBpZiBzby5cbiAgICBpZiAoXG4gICAgICBoYXNWaXNpYmxlSGVhZGVyICYmXG4gICAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudC5jbGllbnRIZWlnaHQgKyB0aGlzLl9kaWFsb2dUaXRsZUhlaWdodCEgPj1cbiAgICAgICAgdGhpcy5fZGlhbG9nQ29udGVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFNjcm9sbCA9IHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50LnNjcm9sbFRvcDtcbiAgICBpZiAoXG4gICAgICBNYXRoLnJvdW5kKGN1cnJlbnRTY3JvbGwgKyB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudC5jbGllbnRIZWlnaHQpID49XG4gICAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gQ2hlY2sgd2hldGhlciBpcyBzY3JvbGxpbmcgZG93biBvciB1cC5cbiAgICBpZiAoY3VycmVudFNjcm9sbCA+IDAgJiYgdGhpcy5fbGFzdFNjcm9sbCA8IGN1cnJlbnRTY3JvbGwpIHtcbiAgICAgIC8vIFNjcm9sbGluZyBkb3duXG4gICAgICB0aGlzLl9zZXRIaWRlSGVhZGVyRGF0YUF0dHJpYnV0ZSh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU2Nyb2xsaW5nIHVwXG4gICAgICB0aGlzLl9zZXRIaWRlSGVhZGVyRGF0YUF0dHJpYnV0ZShmYWxzZSk7XG4gICAgfVxuICAgIC8vIGBjdXJyZW50U2Nyb2xsYCBjYW4gYmUgbmVnYXRpdmUsIGUuZy4gb24gbW9iaWxlOyB0aGlzIGlzIG5vdCBhbGxvd2VkLlxuICAgIHRoaXMuX2xhc3RTY3JvbGwgPSBjdXJyZW50U2Nyb2xsIDw9IDAgPyAwIDogY3VycmVudFNjcm9sbDtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBwb2ludGVyZG93biBldmVudCB0YXJnZXQgaXMgdHJpZ2dlcmVkIG9uIHRoZSBkaWFsb2cuXG4gIHByaXZhdGUgX3BvaW50ZXJEb3duTGlzdGVuZXIgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aGlzLmJhY2tkcm9wQWN0aW9uICE9PSAnY2xvc2UnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25EaWFsb2cgPSBldmVudFxuICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAuZmlsdGVyKChlKTogZSBpcyBIVE1MRWxlbWVudCA9PiBlIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50KVxuICAgICAgLnNvbWUoKHRhcmdldCkgPT4gdGFyZ2V0LmlkID09PSB0aGlzLl9kaWFsb2dJZCk7XG4gIH07XG5cbiAgLy8gQ2xvc2UgZGlhbG9nIG9uIGJhY2tkcm9wIGNsaWNrLlxuICBwcml2YXRlIF9jbG9zZU9uQmFja2Ryb3BDbGljayA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKHRoaXMuYmFja2Ryb3BBY3Rpb24gIT09ICdjbG9zZScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25EaWFsb2cgJiZcbiAgICAgICFldmVudFxuICAgICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgICAgLmZpbHRlcigoZSk6IGUgaXMgSFRNTEVsZW1lbnQgPT4gZSBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudClcbiAgICAgICAgLnNvbWUoKHRhcmdldCkgPT4gdGFyZ2V0LmlkID09PSB0aGlzLl9kaWFsb2dJZClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfc2V0RGlhbG9nSGVhZGVySGVpZ2h0KCk6IHZvaWQge1xuICAgIHRoaXMuX2RpYWxvZ1RpdGxlSGVpZ2h0ID0gdGhpcy5fZGlhbG9nVGl0bGVFbGVtZW50Py5zaGFkb3dSb290IS5maXJzdEVsZW1lbnRDaGlsZCEuY2xpZW50SGVpZ2h0O1xuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLWRpYWxvZy1oZWFkZXItaGVpZ2h0JywgYCR7dGhpcy5fZGlhbG9nVGl0bGVIZWlnaHR9cHhgKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uQ29udGVudFJlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXREaWFsb2dIZWFkZXJIZWlnaHQoKTtcbiAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBjb250ZW50IG92ZXJmbG93cyBhbmQgc2V0IHRoZSBgb3ZlcmZsb3dzYCBhdHRyaWJ1dGUuXG4gICAgdGhpcy5fb3ZlcmZsb3dzID0gdGhpcy5fZGlhbG9nQ29udGVudEVsZW1lbnRcbiAgICAgID8gdGhpcy5fZGlhbG9nQ29udGVudEVsZW1lbnQ/LnNjcm9sbEhlaWdodCA+IHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50Py5jbGllbnRIZWlnaHRcbiAgICAgIDogZmFsc2U7XG4gICAgdGhpcy5fc2V0T3ZlcmZsb3dzRGF0YUF0dHJpYnV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0SGlkZUhlYWRlckRhdGFBdHRyaWJ1dGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBoaWRlT25TY3JvbGwgPSB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQ/LmhpZGVPblNjcm9sbCA/PyBmYWxzZTtcbiAgICBjb25zdCBoaWRlSGVhZGVyID1cbiAgICAgIHR5cGVvZiBoaWRlT25TY3JvbGwgPT09ICdib29sZWFuJ1xuICAgICAgICA/IGhpZGVPblNjcm9sbFxuICAgICAgICA6IGlzQnJlYWtwb2ludCgnemVybycsIGhpZGVPblNjcm9sbCwgeyBpbmNsdWRlTWF4QnJlYWtwb2ludDogdHJ1ZSB9KTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1oaWRlLWhlYWRlcicsICFoaWRlSGVhZGVyID8gZmFsc2UgOiB2YWx1ZSk7XG4gICAgaWYgKHRoaXMuX2RpYWxvZ1RpdGxlRWxlbWVudCkge1xuICAgICAgdGhpcy5fZGlhbG9nVGl0bGVFbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1oaWRlLWhlYWRlcicsICFoaWRlSGVhZGVyID8gZmFsc2UgOiB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0T3ZlcmZsb3dzRGF0YUF0dHJpYnV0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1vdmVyZmxvd3MnLCB0aGlzLl9vdmVyZmxvd3MpO1xuICAgIHRoaXMuX2RpYWxvZ1RpdGxlRWxlbWVudD8udG9nZ2xlQXR0cmlidXRlKCdkYXRhLW92ZXJmbG93cycsIHRoaXMuX292ZXJmbG93cyk7XG4gICAgdGhpcy5fZGlhbG9nQWN0aW9uc0VsZW1lbnQ/LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1vdmVyZmxvd3MnLCB0aGlzLl9vdmVyZmxvd3MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWRpYWxvZ19fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7KGV2ZW50OiBBbmltYXRpb25FdmVudCkgPT4gdGhpcy5vbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQpfVxuICAgICAgICAgIGNsYXNzPVwic2JiLWRpYWxvZ1wiXG4gICAgICAgICAgaWQ9JHt0aGlzLl9kaWFsb2dJZH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIEBjbGljaz0keyhldmVudDogRXZlbnQpID0+IHRoaXMuY2xvc2VPblNiYk92ZXJsYXlDbG9zZUNsaWNrKGV2ZW50KX1cbiAgICAgICAgICAgIGNsYXNzPVwic2JiLWRpYWxvZ19fd3JhcHBlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHkgYXJpYS1saXZlPVwicG9saXRlXCI+PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kaWFsb2cnOiBTYmJEaWFsb2dFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsSUFBSSxTQUFTO0FBZUEsSUFBQSxtQkFBTixjQUErQixzQkFBc0I7QUFBQSxFQUFyRCxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFJdUMsU0FBTyxpQkFBbUM7QUFNdEYsU0FBUSwrQkFBK0IsSUFBSTtBQUFBLE1BQXVCLE1BQ2hFLFdBQVcsTUFBTSxLQUFLLGtCQUFrQjtBQUFBLElBQUE7QUFHMUMsU0FBUSxzQkFBb0Q7QUFFNUQsU0FBUSx3QkFBNEM7QUFDcEQsU0FBUSx3QkFBd0Q7QUFDaEUsU0FBUSw4QkFBdUM7QUFDL0MsU0FBUSxhQUFzQjtBQUM5QixTQUFRLGNBQWM7QUFDZCxTQUFBLFlBQVksY0FBYyxRQUFRO0FBQzFDLFNBQVUsaUJBQXlCO0FBMkszQixTQUFBLHVCQUF1QixDQUFDLFVBQThCO0FBQ3hELFVBQUEsS0FBSyxtQkFBbUIsU0FBUztBQUNuQztBQUFBLE1BQ0Y7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
445
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy9kaWFsb2cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB7IGdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudCwgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBpc0JyZWFrcG9pbnQgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBBZ25vc3RpY1Jlc2l6ZU9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuaW1wb3J0IHsgb3ZlcmxheVJlZnMsIFNiYk92ZXJsYXlCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL292ZXJsYXkuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEaWFsb2dBY3Rpb25zRWxlbWVudCB9IGZyb20gJy4uL2RpYWxvZy1hY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGlhbG9nVGl0bGVFbGVtZW50IH0gZnJvbSAnLi4vZGlhbG9nLXRpdGxlLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGlhbG9nLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gaW50ZXJhY3RpdmUgb3ZlcmxheSBlbGVtZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gcHJvdmlkZSBhIGBzYmItZGlhbG9nLXRpdGxlYCwgYHNiYi1kaWFsb2ctY29udGVudGAgYW5kIGFuIG9wdGlvbmFsIGBzYmItZGlhbG9nLWFjdGlvbnNgLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gd2lsbE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1kaWFsb2dgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkaWRPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZGlhbG9nYCBpcyBvcGVuZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1kaWFsb2dgIGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItZGlhbG9nYCBpcyBjbG9zZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItZGlhbG9nLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kaWFsb2cnKVxuZXhwb3J0IGNsYXNzIFNiYkRpYWxvZ0VsZW1lbnQgZXh0ZW5kcyBTYmJPdmVybGF5QmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogQmFja2Ryb3AgY2xpY2sgYWN0aW9uLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdiYWNrZHJvcC1hY3Rpb24nIH0pIHB1YmxpYyBiYWNrZHJvcEFjdGlvbjogJ2Nsb3NlJyB8ICdub25lJyA9ICdjbG9zZSc7XG5cbiAgLy8gV2UgdXNlIGEgdGltZW91dCBhcyBhIHdvcmthcm91bmQgdG8gdGhlIFwiUmVzaXplT2JzZXJ2ZXIgbG9vcCBjb21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJlZCBub3RpZmljYXRpb25zXCIgZXJyb3IuXG4gIC8vIEZvciBtb3JlIGRldGFpbHM6XG4gIC8vIC0gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvcmVzaXplLW9ic2VydmVyL2lzc3Vlcy8zOCNpc3N1ZWNvbW1lbnQtNDIyMTI2MDA2XG4gIC8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2p1Z2dsZS9yZXNpemUtb2JzZXJ2ZXIvaXNzdWVzLzEwMyNpc3N1ZWNvbW1lbnQtMTcxMTE0ODI4NVxuICBwcml2YXRlIF9kaWFsb2dDb250ZW50UmVzaXplT2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNSZXNpemVPYnNlcnZlcigoKSA9PlxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fb25Db250ZW50UmVzaXplKCkpLFxuICApO1xuXG4gIHByaXZhdGUgX2RpYWxvZ1RpdGxlRWxlbWVudDogU2JiRGlhbG9nVGl0bGVFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2RpYWxvZ1RpdGxlSGVpZ2h0PzogbnVtYmVyO1xuICBwcml2YXRlIF9kaWFsb2dDb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZGlhbG9nQWN0aW9uc0VsZW1lbnQ6IFNiYkRpYWxvZ0FjdGlvbnNFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2lzUG9pbnRlckRvd25FdmVudE9uRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX292ZXJmbG93czogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9sYXN0U2Nyb2xsID0gMDtcbiAgcHJpdmF0ZSBfZGlhbG9nSWQgPSBgc2JiLWRpYWxvZy0ke25leHRJZCsrfWA7XG4gIHByb3RlY3RlZCBjbG9zZUF0dHJpYnV0ZTogc3RyaW5nID0gJ3NiYi1kaWFsb2ctY2xvc2UnO1xuXG4gIC8qKiBPcGVucyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBkaWFsb2cgZWxlbWVudHNcbiAgICB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQgPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1kaWFsb2ctdGl0bGUnKTtcbiAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudCA9IHRoaXMucXVlcnlTZWxlY3Rvcignc2JiLWRpYWxvZy1jb250ZW50Jyk/LnNoYWRvd1Jvb3QhXG4gICAgICAuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5fZGlhbG9nQWN0aW9uc0VsZW1lbnQgPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1kaWFsb2ctYWN0aW9ucycpO1xuXG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG5cbiAgICAvLyBBZGQgdGhpcyBkaWFsb2cgdG8gdGhlIGdsb2JhbCBjb2xsZWN0aW9uXG4gICAgb3ZlcmxheVJlZnMucHVzaCh0aGlzIGFzIFNiYkRpYWxvZ0VsZW1lbnQpO1xuICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50KTtcblxuICAgIC8vIERpc2FibGUgc2Nyb2xsaW5nIGZvciBjb250ZW50IGJlbG93IHRoZSBkaWFsb2dcbiAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGlzYWJsZVNjcm9sbCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAvLyBDbG9zZSBkaWFsb2cgb24gYmFja2Ryb3AgY2xpY2tcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lciwge1xuICAgICAgc2lnbmFsOiB0aGlzLm92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrLCB7XG4gICAgICBzaWduYWw6IHRoaXMub3ZlcmxheUNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAvLyBTeW5jaHJvbml6ZSB0aGUgbmVnYXRpdmUgc3RhdGUgYmVmb3JlIHRoZSBmaXJzdCBvcGVuaW5nIHRvIGF2b2lkIGEgcG9zc2libGUgY29sb3IgZmxhc2ggaWYgaXQgaXMgbmVnYXRpdmUuXG4gICAgdGhpcy5fZGlhbG9nVGl0bGVFbGVtZW50ID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdzYmItZGlhbG9nLXRpdGxlJykhO1xuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTogdm9pZCB7XG4gICAgc3VwZXIuYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTtcblxuICAgIC8vIElmIHRoZSBjb250ZW50IG92ZXJmbG93cywgc2hvdy9oaWRlIHRoZSBkaWFsb2cgaGVhZGVyIG9uIHNjcm9sbC5cbiAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fb25Db250ZW50U2Nyb2xsKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0SGlkZUhlYWRlckRhdGFBdHRyaWJ1dGUoZmFsc2UpLCB7XG4gICAgICBzaWduYWw6IHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFdhaXQgZm9yIGRpYWxvZyB0cmFuc2l0aW9uIHRvIGNvbXBsZXRlLlxuICAvLyBJbiByYXJlIGNhc2VzLCBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgLy8gVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICBwcm90ZWN0ZWQgb25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgICB0aGlzLmRpZE9wZW4uZW1pdCgpO1xuICAgICAgdGhpcy5pbmVydENvbnRyb2xsZXIuYWN0aXZhdGUoKTtcbiAgICAgIHRoaXMuYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTtcbiAgICAgIHRoaXMuc2V0T3ZlcmxheUZvY3VzKCk7XG4gICAgICAvLyBVc2UgdGltZW91dCB0byByZWFkIGxhYmVsIGFmdGVyIGZvY3VzZWQgZWxlbWVudFxuICAgICAgc2V0VGltZW91dCgoKSA9PlxuICAgICAgICB0aGlzLnNldEFyaWFMaXZlUmVmQ29udGVudChcbiAgICAgICAgICB0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCB8fCB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQ/LmlubmVyVGV4dC50cmltKCksXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgdGhpcy5mb2N1c0hhbmRsZXIudHJhcCh0aGlzKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9zZXRIaWRlSGVhZGVyRGF0YUF0dHJpYnV0ZShmYWxzZSk7XG4gICAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudD8uc2Nyb2xsVG8oMCwgMCk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgICB0aGlzLmluZXJ0Q29udHJvbGxlci5kZWFjdGl2YXRlKCk7XG4gICAgICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzKHRoaXMubGFzdEZvY3VzZWRFbGVtZW50KTtcbiAgICAgIC8vIE1hbnVhbGx5IGZvY3VzIGxhc3QgZm9jdXNlZCBlbGVtZW50XG4gICAgICB0aGlzLmxhc3RGb2N1c2VkRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgIHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5mb2N1c0hhbmRsZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5fZGlhbG9nQ29udGVudFJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMucmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpO1xuICAgICAgLy8gRW5hYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgZGlhbG9nIGlmIG5vIGRpYWxvZyBpcyBvcGVuXG4gICAgICBpZiAoIW92ZXJsYXlSZWZzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmRpZENsb3NlLmVtaXQoe1xuICAgICAgICByZXR1cm5WYWx1ZTogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgICAgY2xvc2VUYXJnZXQ6IHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBmb2N1cyBvbiB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQuXG4gIHByb3RlY3RlZCBzZXRPdmVybGF5Rm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgZmlyc3RGb2N1c2FibGUgPSBnZXRGaXJzdEZvY3VzYWJsZUVsZW1lbnQoXG4gICAgICBBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4pLmZpbHRlcigoZSk6IGUgaXMgSFRNTEVsZW1lbnQgPT4gZSBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudCksXG4gICAgKTtcbiAgICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzKGZpcnN0Rm9jdXNhYmxlKTtcbiAgICBmaXJzdEZvY3VzYWJsZT8uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlhbG9nVGl0bGVFbGVtZW50KSB7XG4gICAgICB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9kaWFsb2dBY3Rpb25zRWxlbWVudCkge1xuICAgICAgdGhpcy5fZGlhbG9nQWN0aW9uc0VsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW5lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25Db250ZW50U2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZGlhbG9nQ29udGVudEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNWaXNpYmxlSGVhZGVyID0gdGhpcy5kYXRhc2V0LmhpZGVIZWFkZXIgPT09IHVuZGVmaW5lZDtcblxuICAgIC8vIENoZWNrIHdoZXRoZXIgaGlkaW5nIHRoZSBoZWFkZXIgd291bGQgbWFrZSB0aGUgc2Nyb2xsYmFyIGRpc2FwcGVhclxuICAgIC8vIGFuZCBwcmV2ZW50IHRoZSBoaWRpbmcgYW5pbWF0aW9uIGlmIHNvLlxuICAgIGlmIChcbiAgICAgIGhhc1Zpc2libGVIZWFkZXIgJiZcbiAgICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50LmNsaWVudEhlaWdodCArIHRoaXMuX2RpYWxvZ1RpdGxlSGVpZ2h0ISA+PVxuICAgICAgICB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gdGhpcy5fZGlhbG9nQ29udGVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgIGlmIChcbiAgICAgIE1hdGgucm91bmQoY3VycmVudFNjcm9sbCArIHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50LmNsaWVudEhlaWdodCkgPj1cbiAgICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBDaGVjayB3aGV0aGVyIGlzIHNjcm9sbGluZyBkb3duIG9yIHVwLlxuICAgIGlmIChjdXJyZW50U2Nyb2xsID4gMCAmJiB0aGlzLl9sYXN0U2Nyb2xsIDwgY3VycmVudFNjcm9sbCkge1xuICAgICAgLy8gU2Nyb2xsaW5nIGRvd25cbiAgICAgIHRoaXMuX3NldEhpZGVIZWFkZXJEYXRhQXR0cmlidXRlKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTY3JvbGxpbmcgdXBcbiAgICAgIHRoaXMuX3NldEhpZGVIZWFkZXJEYXRhQXR0cmlidXRlKGZhbHNlKTtcbiAgICB9XG4gICAgLy8gYGN1cnJlbnRTY3JvbGxgIGNhbiBiZSBuZWdhdGl2ZSwgZS5nLiBvbiBtb2JpbGU7IHRoaXMgaXMgbm90IGFsbG93ZWQuXG4gICAgdGhpcy5fbGFzdFNjcm9sbCA9IGN1cnJlbnRTY3JvbGwgPD0gMCA/IDAgOiBjdXJyZW50U2Nyb2xsO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHBvaW50ZXJkb3duIGV2ZW50IHRhcmdldCBpcyB0cmlnZ2VyZWQgb24gdGhlIGRpYWxvZy5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKHRoaXMuYmFja2Ryb3BBY3Rpb24gIT09ICdjbG9zZScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbkRpYWxvZyA9IGV2ZW50XG4gICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgIC5maWx0ZXIoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IGUgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpXG4gICAgICAuc29tZSgodGFyZ2V0KSA9PiB0YXJnZXQuaWQgPT09IHRoaXMuX2RpYWxvZ0lkKTtcbiAgfTtcblxuICAvLyBDbG9zZSBkaWFsb2cgb24gYmFja2Ryb3AgY2xpY2suXG4gIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5iYWNrZHJvcEFjdGlvbiAhPT0gJ2Nsb3NlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbkRpYWxvZyAmJlxuICAgICAgIWV2ZW50XG4gICAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgICAuZmlsdGVyKChlKTogZSBpcyBIVE1MRWxlbWVudCA9PiBlIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50KVxuICAgICAgICAuc29tZSgodGFyZ2V0KSA9PiB0YXJnZXQuaWQgPT09IHRoaXMuX2RpYWxvZ0lkKVxuICAgICkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9zZXREaWFsb2dIZWFkZXJIZWlnaHQoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nVGl0bGVIZWlnaHQgPSB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQ/LnNoYWRvd1Jvb3QhLmZpcnN0RWxlbWVudENoaWxkIS5jbGllbnRIZWlnaHQ7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItZGlhbG9nLWhlYWRlci1oZWlnaHQnLCBgJHt0aGlzLl9kaWFsb2dUaXRsZUhlaWdodH1weGApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25Db250ZW50UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMuX3NldERpYWxvZ0hlYWRlckhlaWdodCgpO1xuICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIGNvbnRlbnQgb3ZlcmZsb3dzIGFuZCBzZXQgdGhlIGBvdmVyZmxvd3NgIGF0dHJpYnV0ZS5cbiAgICB0aGlzLl9vdmVyZmxvd3MgPSB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudFxuICAgICAgPyB0aGlzLl9kaWFsb2dDb250ZW50RWxlbWVudD8uc2Nyb2xsSGVpZ2h0ID4gdGhpcy5fZGlhbG9nQ29udGVudEVsZW1lbnQ/LmNsaWVudEhlaWdodFxuICAgICAgOiBmYWxzZTtcbiAgICB0aGlzLl9zZXRPdmVyZmxvd3NEYXRhQXR0cmlidXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRIaWRlSGVhZGVyRGF0YUF0dHJpYnV0ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGhpZGVPblNjcm9sbCA9IHRoaXMuX2RpYWxvZ1RpdGxlRWxlbWVudD8uaGlkZU9uU2Nyb2xsID8/IGZhbHNlO1xuICAgIGNvbnN0IGhpZGVIZWFkZXIgPVxuICAgICAgdHlwZW9mIGhpZGVPblNjcm9sbCA9PT0gJ2Jvb2xlYW4nXG4gICAgICAgID8gaGlkZU9uU2Nyb2xsXG4gICAgICAgIDogaXNCcmVha3BvaW50KCd6ZXJvJywgaGlkZU9uU2Nyb2xsLCB7IGluY2x1ZGVNYXhCcmVha3BvaW50OiB0cnVlIH0pO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWhpZGUtaGVhZGVyJywgIWhpZGVIZWFkZXIgPyBmYWxzZSA6IHZhbHVlKTtcbiAgICBpZiAodGhpcy5fZGlhbG9nVGl0bGVFbGVtZW50KSB7XG4gICAgICB0aGlzLl9kaWFsb2dUaXRsZUVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWhpZGUtaGVhZGVyJywgIWhpZGVIZWFkZXIgPyBmYWxzZSA6IHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRPdmVyZmxvd3NEYXRhQXR0cmlidXRlKCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW92ZXJmbG93cycsIHRoaXMuX292ZXJmbG93cyk7XG4gICAgdGhpcy5fZGlhbG9nVGl0bGVFbGVtZW50Py50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtb3ZlcmZsb3dzJywgdGhpcy5fb3ZlcmZsb3dzKTtcbiAgICB0aGlzLl9kaWFsb2dBY3Rpb25zRWxlbWVudD8udG9nZ2xlQXR0cmlidXRlKCdkYXRhLW92ZXJmbG93cycsIHRoaXMuX292ZXJmbG93cyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZGlhbG9nX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHsoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSA9PiB0aGlzLm9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudCl9XG4gICAgICAgICAgY2xhc3M9XCJzYmItZGlhbG9nXCJcbiAgICAgICAgICBpZD0ke3RoaXMuX2RpYWxvZ0lkfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgQGNsaWNrPSR7KGV2ZW50OiBFdmVudCkgPT4gdGhpcy5jbG9zZU9uU2JiT3ZlcmxheUNsb3NlQ2xpY2soZXZlbnQpfVxuICAgICAgICAgICAgY2xhc3M9XCJzYmItZGlhbG9nX193cmFwcGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8c2JiLXNjcmVlbi1yZWFkZXItb25seSBhcmlhLWxpdmU9XCJwb2xpdGVcIj48L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRpYWxvZyc6IFNiYkRpYWxvZ0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsSUFBSSxTQUFTO0FBZUEsSUFBQSxtQkFBTixjQUErQixzQkFBc0I7QUFBQSxFQUFyRCxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFJdUMsU0FBTyxpQkFBbUM7QUFNdEYsU0FBUSwrQkFBK0IsSUFBSTtBQUFBLE1BQXVCLE1BQ2hFLFdBQVcsTUFBTSxLQUFLLGtCQUFrQjtBQUFBLElBQUE7QUFHMUMsU0FBUSxzQkFBb0Q7QUFFNUQsU0FBUSx3QkFBNEM7QUFDcEQsU0FBUSx3QkFBd0Q7QUFDaEUsU0FBUSw4QkFBdUM7QUFDL0MsU0FBUSxhQUFzQjtBQUM5QixTQUFRLGNBQWM7QUFDZCxTQUFBLFlBQVksY0FBYyxRQUFRO0FBQzFDLFNBQVUsaUJBQXlCO0FBMkszQixTQUFBLHVCQUF1QixDQUFDLFVBQThCO0FBQ3hELFVBQUEsS0FBSyxtQkFBbUIsU0FBUztBQUNuQztBQUFBLE1BQ0Y7QUFFQSxXQUFLLDhCQUE4QixNQUNoQyxhQUNBLEVBQUEsT0FBTyxDQUFDLE1BQXdCLGFBQWEsT0FBTyxXQUFXLEVBQy9E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
@@ -1 +1 @@
1
- {"version":3,"file":"flip-card.d.ts","sourceRoot":"","sources":["../../../../../src/elements/flip-card/flip-card/flip-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAkB,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAM3F,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAIzE,OAAO,yCAAyC,CAAC;AACjD,OAAO,6BAA6B,CAAC;;AAErC;;;;;;GAMG;AACH,qBACa,kBAAmB,SAAQ,uBAA6B;IACnE,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;MAElB;IAEX;;;OAGG;IACoD,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9F,+CAA+C;IAC/C,SAAS,CAAC,IAAI,EAAE,YAAY,CAA0D;IAEtF,iDAAiD;IACjD,IAAW,OAAO,IAAI,yBAAyB,GAAG,IAAI,CAErD;IAED,iDAAiD;IACjD,IAAW,OAAO,IAAI,yBAAyB,GAAG,IAAI,CAErD;IAED,wCAAwC;IACxC,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,0CAA0C;IACjC,OAAO,CAAC,QAAQ,CAAS;IAElC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,SAAS,CAAmC;IAEpC,iBAAiB,IAAI,IAAI;IAgBzC,8CAA8C;IACvC,MAAM,IAAI,IAAI;YAQP,mBAAmB;cAWd,MAAM,IAAI,cAAc;CAoB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
1
+ {"version":3,"file":"flip-card.d.ts","sourceRoot":"","sources":["../../../../../src/elements/flip-card/flip-card/flip-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAkB,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAM3F,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAIzE,OAAO,yCAAyC,CAAC;AACjD,OAAO,6BAA6B,CAAC;;AAErC;;;;;;GAMG;AACH,qBACa,kBAAmB,SAAQ,uBAA6B;IACnE,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;MAElB;IAEX;;;OAGG;IACoD,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9F,+CAA+C;IAC/C,SAAS,CAAC,IAAI,EAAE,YAAY,CAA0D;IAEtF,iDAAiD;IACjD,IAAW,OAAO,IAAI,yBAAyB,GAAG,IAAI,CAErD;IAED,iDAAiD;IACjD,IAAW,OAAO,IAAI,yBAAyB,GAAG,IAAI,CAErD;IAED,wCAAwC;IACxC,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,0CAA0C;IACjC,OAAO,CAAC,QAAQ,CAAS;IAElC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,SAAS,CAAmC;IAEpC,iBAAiB,IAAI,IAAI;IAgBzC,8CAA8C;IACvC,MAAM,IAAI,IAAI;YASP,mBAAmB;cAWd,MAAM,IAAI,cAAc;CAsB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"flip-card-details.d.ts","sourceRoot":"","sources":["../../../../../src/elements/flip-card/flip-card-details/flip-card-details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AASvC;;;;GAIG;AACH,qBAIa,yBAA0B,SAAQ,UAAU;IACvD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,yBAAyB,CAE/B;IAEF,OAAO,CAAC,uBAAuB;IAQf,iBAAiB,IAAI,IAAI;cAStB,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAKxD,oBAAoB,IAAI,IAAI;cAKzB,MAAM,IAAI,cAAc;CAO5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uBAAuB,EAAE,yBAAyB,CAAC;KACpD;CACF"}
1
+ {"version":3,"file":"flip-card-details.d.ts","sourceRoot":"","sources":["../../../../../src/elements/flip-card/flip-card-details/flip-card-details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AASvC;;;;GAIG;AACH,qBAIa,yBAA0B,SAAQ,UAAU;IACvD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,yBAAyB,CAE/B;IAEF,OAAO,CAAC,uBAAuB;IAQf,iBAAiB,IAAI,IAAI;cAStB,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAKxD,oBAAoB,IAAI,IAAI;cAKzB,MAAM,IAAI,cAAc;CAS5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uBAAuB,EAAE,yBAAyB,CAAC;KACpD;CACF"}