@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1779298726 → 5.0.0-next.3-dev.1779349365

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 (36) hide show
  1. package/autocomplete/autocomplete-base-element.js +1 -1
  2. package/autocomplete/autocomplete.component.js +4 -4
  3. package/{autocomplete-base-element-DjfmUS0W.js → autocomplete-base-element-k9uIbFBu.js} +1 -1
  4. package/autocomplete.js +1 -1
  5. package/autocomplete.pure.js +1 -1
  6. package/custom-elements.json +0 -21
  7. package/development/autocomplete/autocomplete-base-element.js +1 -1
  8. package/development/autocomplete/autocomplete.component.d.ts.map +1 -1
  9. package/development/autocomplete/autocomplete.component.js +5 -5
  10. package/development/{autocomplete-base-element-CTZEg--s.js → autocomplete-base-element-D1b0RA_u.js} +2 -2
  11. package/development/autocomplete.js +1 -1
  12. package/development/autocomplete.pure.js +1 -1
  13. package/development/option/option/option-base-element.d.ts +0 -2
  14. package/development/option/option/option-base-element.d.ts.map +1 -1
  15. package/development/option/option/option-base-element.js +1 -6
  16. package/development/option/option/option.component.d.ts +0 -1
  17. package/development/option/option/option.component.d.ts.map +1 -1
  18. package/development/option/option/option.component.js +1 -1
  19. package/development/{option.component-BrTjDq6X.js → option.component-ImZLdB0V.js} +1 -2
  20. package/development/option.js +1 -1
  21. package/development/option.pure.js +1 -1
  22. package/development/select/select.component.d.ts.map +1 -1
  23. package/development/select/select.component.js +1 -1
  24. package/development/{select.component-BE7ZMrAc.js → select.component-o-3HlzOK.js} +3 -3
  25. package/development/select.js +1 -1
  26. package/development/select.pure.js +1 -1
  27. package/option/option/option-base-element.js +16 -19
  28. package/option/option/option.component.js +1 -1
  29. package/{option.component-DiH8AMlV.js → option.component-BgcpoHWM.js} +1 -1
  30. package/option.js +1 -1
  31. package/option.pure.js +1 -1
  32. package/package.json +2 -2
  33. package/select/select.component.js +1 -1
  34. package/{select.component-UcWSndDu.js → select.component-CDv5tSW6.js} +2 -2
  35. package/select.js +1 -1
  36. package/select.pure.js +1 -1
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "../autocomplete-base-element-DjfmUS0W.js";
1
+ import { n as e, t } from "../autocomplete-base-element-k9uIbFBu.js";
2
2
  export { t as SbbAutocompleteBaseElement, e as SbbInputAutocompleteEvent };
@@ -1,4 +1,4 @@
1
- import { t as e } from "../autocomplete-base-element-DjfmUS0W.js";
1
+ import { t as e } from "../autocomplete-base-element-k9uIbFBu.js";
2
2
  import { getNextElementIndex as t, isSafari as n, setAriaComboBoxAttributes as r } from "../core.js";
3
3
  //#region src/elements/autocomplete/autocomplete.component.ts
4
4
  var i = 0, a = n, o = class extends e {
@@ -33,15 +33,15 @@ var i = 0, a = n, o = class extends e {
33
33
  }
34
34
  setNextActiveOption(e) {
35
35
  let n = this.options.filter((e) => !e.matches(":is(:state(disabled),[state--disabled])"));
36
- if (this.activeOption?.setActive(!1), this.triggerElement?.removeAttribute("aria-activedescendant"), !n.length) {
36
+ if (this.activeOption?.setActive(!1), this.triggerElement.ariaActiveDescendantElement = null, !n.length) {
37
37
  this.activeOption = null;
38
38
  return;
39
39
  }
40
40
  let r = t(e, this.activeOption ? n.indexOf(this.activeOption) : -1, n.length);
41
- this.activeOption = n[r], this.activeOption.setActive(!0), this.triggerElement?.setAttribute("aria-activedescendant", this.activeOption.id), this.activeOption.scrollIntoView({ block: "nearest" }), e && e.preventDefault(), this.autoSelectActiveOption && e && this.setPendingSelection(this.activeOption);
41
+ this.activeOption = n[r], this.activeOption.setActive(!0), this.triggerElement.ariaActiveDescendantElement = this.activeOption, this.activeOption.scrollIntoView({ block: "nearest" }), e && e.preventDefault(), this.autoSelectActiveOption && e && this.setPendingSelection(this.activeOption);
42
42
  }
43
43
  resetActiveElement() {
44
- this.activeOption?.setActive(!1), this.triggerElement?.removeAttribute("aria-activedescendant"), this.activeOption = null;
44
+ this.activeOption?.setActive(!1), this.activeOption = null, this.triggerElement && (this.triggerElement.ariaActiveDescendantElement = null);
45
45
  }
46
46
  setTriggerAttributes(e) {
47
47
  r(e, a ? this.id : this.overlayId, !1);
@@ -320,7 +320,7 @@ var x = ":host{display:none}:host(:is(:is(:state(state-opening),[state--state-op
320
320
  this.pendingAutoSelectedOption = e, this._setInputValue(e);
321
321
  }
322
322
  _setValueAndDispatchEvents(e, t = !1) {
323
- this.options.filter((t) => t.id !== e.id && t.selected).forEach((e) => e.selected = !1), this.pendingAutoSelectedOption = null, this.triggerElement && (this._setInputValue(e), this._isCustomChangeEvent = !0, this.triggerElement.dispatchEvent(new Event("change", { bubbles: !0 })), this.triggerElement.dispatchEvent(new InputEvent("input", {
323
+ this.options.filter((t) => t !== e && t.selected).forEach((e) => e.selected = !1), this.pendingAutoSelectedOption = null, this.triggerElement && (this._setInputValue(e), this._isCustomChangeEvent = !0, this.triggerElement.dispatchEvent(new Event("change", { bubbles: !0 })), this.triggerElement.dispatchEvent(new InputEvent("input", {
324
324
  bubbles: !0,
325
325
  composed: !0
326
326
  })), this._lastUserInput = null, this.triggerElement.dispatchEvent(new C(e)), t || this.triggerElement.focus());
package/autocomplete.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as e, t } from "./autocomplete-base-element-DjfmUS0W.js";
1
+ import { n as e, t } from "./autocomplete-base-element-k9uIbFBu.js";
2
2
  import { SbbAutocompleteElement as n } from "./autocomplete/autocomplete.component.js";
3
3
  import "./autocomplete.pure.js";
4
4
  //#region src/elements/autocomplete.ts
@@ -1,3 +1,3 @@
1
- import { n as e, t } from "./autocomplete-base-element-DjfmUS0W.js";
1
+ import { n as e, t } from "./autocomplete-base-element-k9uIbFBu.js";
2
2
  import { SbbAutocompleteElement as n } from "./autocomplete/autocomplete.component.js";
3
3
  export { t as SbbAutocompleteBaseElement, n as SbbAutocompleteElement, e as SbbInputAutocompleteEvent };
@@ -59775,14 +59775,6 @@
59775
59775
  "text": "{\n optionselected: 'optionselected',\n }"
59776
59776
  }
59777
59777
  },
59778
- {
59779
- "kind": "field",
59780
- "name": "optionId",
59781
- "type": {
59782
- "text": "string"
59783
- },
59784
- "privacy": "protected"
59785
- },
59786
59778
  {
59787
59779
  "kind": "field",
59788
59780
  "name": "value",
@@ -61054,19 +61046,6 @@
61054
61046
  "module": "option/option/option-base-element.js"
61055
61047
  }
61056
61048
  },
61057
- {
61058
- "kind": "field",
61059
- "name": "optionId",
61060
- "type": {
61061
- "text": "string"
61062
- },
61063
- "privacy": "protected",
61064
- "default": "`sbb-option`",
61065
- "inheritedFrom": {
61066
- "name": "SbbOptionBaseElement",
61067
- "module": "option/option/option-base-element.js"
61068
- }
61069
- },
61070
61049
  {
61071
61050
  "kind": "field",
61072
61051
  "name": "_variant",
@@ -1,2 +1,2 @@
1
- import { n as SbbInputAutocompleteEvent, t as SbbAutocompleteBaseElement } from "../autocomplete-base-element-CTZEg--s.js";
1
+ import { n as SbbInputAutocompleteEvent, t as SbbAutocompleteBaseElement } from "../autocomplete-base-element-D1b0RA_u.js";
2
2
  export { SbbAutocompleteBaseElement, SbbInputAutocompleteEvent };
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete.component.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAU5E;;;;;;;;;GASG;AACH,qBAAa,sBAAsB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,0BAA0B,CAAC,CAAC,CAAC;IACnF,gBAAgC,WAAW,EAAE,MAAM,CAAsB;IACzE,gBAAgC,IAAI,gBAAqC;IACzE,SAAS,CAAC,SAAS,SAAkC;IACrD,SAAS,CAAC,SAAS,SAAa;IAEhC,SAAS,KAAK,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAE7C;IAED,SAAS,CAAC,YAAY,IAAI,IAAI;IAM9B,SAAS,CAAC,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAgBpE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAStD,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI;IAkC1D,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAMpC,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;CAGhE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,kBAAkB,EAAE,sBAAsB,CAAC;KAC5C;CACF"}
1
+ {"version":3,"file":"autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete.component.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAU5E;;;;;;;;;GASG;AACH,qBAAa,sBAAsB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,0BAA0B,CAAC,CAAC,CAAC;IACnF,gBAAgC,WAAW,EAAE,MAAM,CAAsB;IACzE,gBAAgC,IAAI,gBAAqC;IACzE,SAAS,CAAC,SAAS,SAAkC;IACrD,SAAS,CAAC,SAAS,SAAa;IAEhC,SAAS,KAAK,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAE7C;IAED,SAAS,CAAC,YAAY,IAAI,IAAI;IAM9B,SAAS,CAAC,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAgBpE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAStD,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI;IAkC1D,SAAS,CAAC,kBAAkB,IAAI,IAAI;IASpC,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;CAIhE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,kBAAkB,EAAE,sBAAsB,CAAC;KAC5C;CACF"}
@@ -1,4 +1,4 @@
1
- import { t as SbbAutocompleteBaseElement } from "../autocomplete-base-element-CTZEg--s.js";
1
+ import { t as SbbAutocompleteBaseElement } from "../autocomplete-base-element-D1b0RA_u.js";
2
2
  import { getNextElementIndex, isSafari, setAriaComboBoxAttributes } from "../core.js";
3
3
  //#region src/elements/autocomplete/autocomplete.component.ts
4
4
  var nextId = 0;
@@ -56,7 +56,7 @@ var SbbAutocompleteElement = class extends SbbAutocompleteBaseElement {
56
56
  setNextActiveOption(event) {
57
57
  const enabledOptions = this.options.filter((opt) => !opt.matches(":is(:state(disabled),[state--disabled])"));
58
58
  this.activeOption?.setActive(false);
59
- this.triggerElement?.removeAttribute("aria-activedescendant");
59
+ this.triggerElement.ariaActiveDescendantElement = null;
60
60
  if (!enabledOptions.length) {
61
61
  this.activeOption = null;
62
62
  return;
@@ -64,15 +64,15 @@ var SbbAutocompleteElement = class extends SbbAutocompleteBaseElement {
64
64
  const next = getNextElementIndex(event, this.activeOption ? enabledOptions.indexOf(this.activeOption) : -1, enabledOptions.length);
65
65
  this.activeOption = enabledOptions[next];
66
66
  this.activeOption.setActive(true);
67
- this.triggerElement?.setAttribute("aria-activedescendant", this.activeOption.id);
67
+ this.triggerElement.ariaActiveDescendantElement = this.activeOption;
68
68
  this.activeOption.scrollIntoView({ block: "nearest" });
69
69
  if (event) event.preventDefault();
70
70
  if (this.autoSelectActiveOption && event) this.setPendingSelection(this.activeOption);
71
71
  }
72
72
  resetActiveElement() {
73
73
  this.activeOption?.setActive(false);
74
- this.triggerElement?.removeAttribute("aria-activedescendant");
75
74
  this.activeOption = null;
75
+ if (this.triggerElement) this.triggerElement.ariaActiveDescendantElement = null;
76
76
  }
77
77
  setTriggerAttributes(element) {
78
78
  setAriaComboBoxAttributes(element, ariaRoleOnHost ? this.id : this.overlayId, false);
@@ -81,4 +81,4 @@ var SbbAutocompleteElement = class extends SbbAutocompleteBaseElement {
81
81
  //#endregion
82
82
  export { SbbAutocompleteElement };
83
83
 
84
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaXNTYWZhcmksIHNldEFyaWFDb21ib0JveEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9jb3JlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRGl2aWRlckVsZW1lbnQgfSBmcm9tICcuLi9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiT3B0aW9uRWxlbWVudCwgU2JiT3B0aW9uSGludEVsZW1lbnQgfSBmcm9tICcuLi9vcHRpb24ucHVyZS50cyc7XG5cbmltcG9ydCB7IFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LnRzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogT24gU2FmYXJpLCB0aGUgYXJpYSByb2xlICdsaXN0Ym94JyBtdXN0IGJlIG9uIHRoZSBob3N0IGVsZW1lbnQsIG9yIGVsc2UgVm9pY2VPdmVyIHdvbid0IHdvcmsgYXQgYWxsLlxuICogT24gdGhlIG90aGVyIGhhbmQsIEpBV1MgYW5kIE5WREEgbmVlZCB0aGUgcm9sZSB0byBiZSBcImNsb3NlclwiIHRvIHRoZSBvcHRpb25zLCBvciBlbHNlIG9wdGdyb3VwcyB3b24ndCB3b3JrLlxuICovXG5jb25zdCBhcmlhUm9sZU9uSG9zdCA9IGlzU2FmYXJpO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBuYXRpdmUgaW5wdXQsIGl0IGRpc3BsYXlzIGEgcGFuZWwgd2l0aCBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1vcHRpb25gIG9yIGBzYmItb3B0Z3JvdXBgIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAuXG4gKiBAY3NzcHJvcCBbLS1zYmItYXV0b2NvbXBsZXRlLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1vcHRpb25zLXBhbmVsLW1heC1oZWlnaHRdIC0gTWF4aW11bSBoZWlnaHQgb2YgdGhlIG9wdGlvbnMgcGFuZWwuXG4gKiBJZiB0aGUgY2FsY3VsYXRlZCByZW1haW5pbmcgc3BhY2UgaXMgc21hbGxlciwgdGhlIHZhbHVlIGdldHMgaWdub3JlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkF1dG9jb21wbGV0ZUVsZW1lbnQ8VCA9IHN0cmluZz4gZXh0ZW5kcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudDxUPiB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItYXV0b2NvbXBsZXRlJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gYXJpYVJvbGVPbkhvc3QgPyAnbGlzdGJveCcgOiBudWxsO1xuICBwcm90ZWN0ZWQgb3ZlcmxheUlkID0gYHNiYi1hdXRvY29tcGxldGUtJHsrK25leHRJZH1gO1xuICBwcm90ZWN0ZWQgcGFuZWxSb2xlID0gJ2xpc3Rib3gnO1xuXG4gIHByb3RlY3RlZCBnZXQgb3B0aW9ucygpOiBTYmJPcHRpb25FbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYk9wdGlvbkVsZW1lbnQ8VD4+KCdzYmItb3B0aW9uJykgPz8gW10pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJEaXZpZGVyRWxlbWVudCB8IFNiYk9wdGlvbkhpbnRFbGVtZW50PihcbiAgICAgICdzYmItZGl2aWRlciwgc2JiLW9wdGlvbi1oaW50JyxcbiAgICApLmZvckVhY2goKGVsKSA9PiAoZWwubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICB0aGlzLnNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0QnlLZXlib2FyZChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZU9wdGlvbikge1xuICAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSBzZWxlY3RpbmcgYW4gb3B0aW9uIGFuZCB0aGVyZWZvcmUgdGhlIEVudGVyIHByZXNzIHNob3VsZG4ndCB0cmlnZ2VyIGEgZm9ybSBzdWJtaXRcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIHRoaXMuYWN0aXZlT3B0aW9uWydzZWxlY3RWaWFVc2VySW50ZXJhY3Rpb24nXSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudD86IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdCkgPT4gIW9wdC5tYXRjaGVzKCc6c3RhdGUoZGlzYWJsZWQpJykpO1xuXG4gICAgLy8gUmVzZXQgcG90ZW50aWFsbHkgYWN0aXZlIG9wdGlvblxuICAgIHRoaXMuYWN0aXZlT3B0aW9uPy5zZXRBY3RpdmUoZmFsc2UpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG5cbiAgICBpZiAoIWVuYWJsZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5hY3RpdmVPcHRpb24gPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IHRoaXMuYWN0aXZlT3B0aW9uXG4gICAgICA/IGVuYWJsZWRPcHRpb25zLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24gYXMgU2JiT3B0aW9uRWxlbWVudDxUPilcbiAgICAgIDogLTE7XG5cbiAgICAvLyBHZXQgYW5kIGFjdGl2YXRlIHRoZSBuZXh0IGFjdGl2ZSBvcHRpb25cbiAgICBjb25zdCBuZXh0ID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldmVudCwgYWN0aXZlSXRlbUluZGV4LCBlbmFibGVkT3B0aW9ucy5sZW5ndGgpO1xuICAgIHRoaXMuYWN0aXZlT3B0aW9uID0gZW5hYmxlZE9wdGlvbnNbbmV4dF07XG4gICAgdGhpcy5hY3RpdmVPcHRpb24uc2V0QWN0aXZlKHRydWUpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgdGhpcy5hY3RpdmVPcHRpb24uaWQpO1xuICAgIHRoaXMuYWN0aXZlT3B0aW9uLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JyB9KTtcblxuICAgIC8vIE1vdmluZyB0aGUgYWN0aXZlIG9wdGlvbiBzaG91bGQgbm90IG1vdmUgdGhlIGlucHV0IGN1cnNvciAoY2FyZXQpXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIC8vIElmICdhdXRvU2VsZWN0QWN0aXZlT3B0aW9uJyBhbmQgaXMgdHJpZ2dlcmVkIGZyb20gYSBrZXlib2FyZCBldmVudFxuICAgIGlmICh0aGlzLmF1dG9TZWxlY3RBY3RpdmVPcHRpb24gJiYgZXZlbnQpIHtcbiAgICAgIHRoaXMuc2V0UGVuZGluZ1NlbGVjdGlvbih0aGlzLmFjdGl2ZU9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0QWN0aXZlRWxlbWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbj8uc2V0QWN0aXZlKGZhbHNlKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuICAgIHRoaXMuYWN0aXZlT3B0aW9uID0gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRUcmlnZ2VyQXR0cmlidXRlcyhlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgc2V0QXJpYUNvbWJvQm94QXR0cmlidXRlcyhlbGVtZW50LCBhcmlhUm9sZU9uSG9zdCA/IHRoaXMuaWQgOiB0aGlzLm92ZXJsYXlJZCwgZmFsc2UpO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItYXV0b2NvbXBsZXRlJzogU2JiQXV0b2NvbXBsZXRlRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFNQSxJQUFJLFNBQVM7Ozs7O0FBTWIsSUFBTSxpQkFBaUI7Ozs7Ozs7Ozs7O0FBWXZCLElBQWEseUJBQWIsY0FBd0QsMkJBQTZCO0NBQXJGLGNBQUE7O0VBR1ksS0FBQSxZQUFZLG9CQUFvQixFQUFFO0VBQ2xDLEtBQUEsWUFBWTtDQWdGeEI7O0VBbkZrQyxLQUFBLGNBQXNCO0NBQW1COztFQUN6QyxLQUFBLE9BQU8saUJBQWlCLFlBQVk7Q0FBSztDQUl6RSxJQUFjLFVBQU87RUFDbkIsT0FBTyxNQUFNLEtBQUssS0FBSyxtQkFBd0MsWUFBWSxLQUFLLENBQUEsQ0FBRTtDQUNwRjtDQUVVLGVBQVk7RUFDcEIsS0FBSyxtQkFDSCw4QkFBOEIsRUFDOUIsU0FBUyxPQUFRLEdBQUcsV0FBVyxLQUFLLFFBQVM7Q0FDakQ7Q0FFVSwrQkFBK0IsT0FBb0I7RUFDM0QsSUFBSSxDQUFDLEtBQUssUUFDUjtFQUVGLFFBQVEsTUFBTSxLQUFkO0dBQ0UsS0FBSztJQUNILEtBQUssaUJBQWlCLEtBQUs7SUFDM0I7R0FFRixLQUFLO0dBQ0wsS0FBSztJQUNILEtBQUssb0JBQW9CLEtBQUs7SUFDOUI7RUFDSjtDQUNGO0NBRVUsaUJBQWlCLE9BQW9CO0VBQzdDLElBQUksS0FBSyxjQUFjO0dBRXJCLE1BQU0sZUFBYztHQUVwQixLQUFLLGFBQWEsNEJBQTRCLElBQUk7RUFDcEQ7Q0FDRjtDQUVVLG9CQUFvQixPQUFxQjtFQUNqRCxNQUFNLGlCQUFpQixLQUFLLFFBQVEsUUFBUSxRQUFRLENBQUMsSUFBSSxRQUFRLHlDQUFrQixDQUFDO0VBR3BGLEtBQUssY0FBYyxVQUFVLEtBQUs7RUFDbEMsS0FBSyxnQkFBZ0IsZ0JBQWdCLHVCQUF1QjtFQUU1RCxJQUFJLENBQUMsZUFBZSxRQUFRO0dBQzFCLEtBQUssZUFBZTtHQUNwQjtFQUNGO0VBT0EsTUFBTSxPQUFPLG9CQUFvQixPQUxULEtBQUssZUFDekIsZUFBZSxRQUFRLEtBQUssWUFBbUMsSUFDL0QsSUFHcUQsZUFBZSxNQUFNO0VBQzlFLEtBQUssZUFBZSxlQUFlO0VBQ25DLEtBQUssYUFBYSxVQUFVLElBQUk7RUFDaEMsS0FBSyxnQkFBZ0IsYUFBYSx5QkFBeUIsS0FBSyxhQUFhLEVBQUU7RUFDL0UsS0FBSyxhQUFhLGVBQWUsRUFBRSxPQUFPLFVBQVMsQ0FBRTtFQUdyRCxJQUFJLE9BQ0YsTUFBTSxlQUFjO0VBSXRCLElBQUksS0FBSywwQkFBMEIsT0FDakMsS0FBSyxvQkFBb0IsS0FBSyxZQUFZO0NBRTlDO0NBRVUscUJBQWtCO0VBQzFCLEtBQUssY0FBYyxVQUFVLEtBQUs7RUFDbEMsS0FBSyxnQkFBZ0IsZ0JBQWdCLHVCQUF1QjtFQUM1RCxLQUFLLGVBQWU7Q0FDdEI7Q0FFVSxxQkFBcUIsU0FBeUI7RUFDdEQsMEJBQTBCLFNBQVMsaUJBQWlCLEtBQUssS0FBSyxLQUFLLFdBQVcsS0FBSztDQUNyRiJ9
84
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaXNTYWZhcmksIHNldEFyaWFDb21ib0JveEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9jb3JlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRGl2aWRlckVsZW1lbnQgfSBmcm9tICcuLi9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiT3B0aW9uRWxlbWVudCwgU2JiT3B0aW9uSGludEVsZW1lbnQgfSBmcm9tICcuLi9vcHRpb24ucHVyZS50cyc7XG5cbmltcG9ydCB7IFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LnRzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogT24gU2FmYXJpLCB0aGUgYXJpYSByb2xlICdsaXN0Ym94JyBtdXN0IGJlIG9uIHRoZSBob3N0IGVsZW1lbnQsIG9yIGVsc2UgVm9pY2VPdmVyIHdvbid0IHdvcmsgYXQgYWxsLlxuICogT24gdGhlIG90aGVyIGhhbmQsIEpBV1MgYW5kIE5WREEgbmVlZCB0aGUgcm9sZSB0byBiZSBcImNsb3NlclwiIHRvIHRoZSBvcHRpb25zLCBvciBlbHNlIG9wdGdyb3VwcyB3b24ndCB3b3JrLlxuICovXG5jb25zdCBhcmlhUm9sZU9uSG9zdCA9IGlzU2FmYXJpO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBuYXRpdmUgaW5wdXQsIGl0IGRpc3BsYXlzIGEgcGFuZWwgd2l0aCBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1vcHRpb25gIG9yIGBzYmItb3B0Z3JvdXBgIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAuXG4gKiBAY3NzcHJvcCBbLS1zYmItYXV0b2NvbXBsZXRlLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1vcHRpb25zLXBhbmVsLW1heC1oZWlnaHRdIC0gTWF4aW11bSBoZWlnaHQgb2YgdGhlIG9wdGlvbnMgcGFuZWwuXG4gKiBJZiB0aGUgY2FsY3VsYXRlZCByZW1haW5pbmcgc3BhY2UgaXMgc21hbGxlciwgdGhlIHZhbHVlIGdldHMgaWdub3JlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkF1dG9jb21wbGV0ZUVsZW1lbnQ8VCA9IHN0cmluZz4gZXh0ZW5kcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudDxUPiB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItYXV0b2NvbXBsZXRlJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gYXJpYVJvbGVPbkhvc3QgPyAnbGlzdGJveCcgOiBudWxsO1xuICBwcm90ZWN0ZWQgb3ZlcmxheUlkID0gYHNiYi1hdXRvY29tcGxldGUtJHsrK25leHRJZH1gO1xuICBwcm90ZWN0ZWQgcGFuZWxSb2xlID0gJ2xpc3Rib3gnO1xuXG4gIHByb3RlY3RlZCBnZXQgb3B0aW9ucygpOiBTYmJPcHRpb25FbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYk9wdGlvbkVsZW1lbnQ8VD4+KCdzYmItb3B0aW9uJykgPz8gW10pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJEaXZpZGVyRWxlbWVudCB8IFNiYk9wdGlvbkhpbnRFbGVtZW50PihcbiAgICAgICdzYmItZGl2aWRlciwgc2JiLW9wdGlvbi1oaW50JyxcbiAgICApLmZvckVhY2goKGVsKSA9PiAoZWwubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICB0aGlzLnNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0QnlLZXlib2FyZChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZU9wdGlvbikge1xuICAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSBzZWxlY3RpbmcgYW4gb3B0aW9uIGFuZCB0aGVyZWZvcmUgdGhlIEVudGVyIHByZXNzIHNob3VsZG4ndCB0cmlnZ2VyIGEgZm9ybSBzdWJtaXRcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIHRoaXMuYWN0aXZlT3B0aW9uWydzZWxlY3RWaWFVc2VySW50ZXJhY3Rpb24nXSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudD86IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdCkgPT4gIW9wdC5tYXRjaGVzKCc6c3RhdGUoZGlzYWJsZWQpJykpO1xuXG4gICAgLy8gUmVzZXQgcG90ZW50aWFsbHkgYWN0aXZlIG9wdGlvblxuICAgIHRoaXMuYWN0aXZlT3B0aW9uPy5zZXRBY3RpdmUoZmFsc2UpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQhLmFyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCA9IG51bGw7XG5cbiAgICBpZiAoIWVuYWJsZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5hY3RpdmVPcHRpb24gPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IHRoaXMuYWN0aXZlT3B0aW9uXG4gICAgICA/IGVuYWJsZWRPcHRpb25zLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24gYXMgU2JiT3B0aW9uRWxlbWVudDxUPilcbiAgICAgIDogLTE7XG5cbiAgICAvLyBHZXQgYW5kIGFjdGl2YXRlIHRoZSBuZXh0IGFjdGl2ZSBvcHRpb25cbiAgICBjb25zdCBuZXh0ID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldmVudCwgYWN0aXZlSXRlbUluZGV4LCBlbmFibGVkT3B0aW9ucy5sZW5ndGgpO1xuICAgIHRoaXMuYWN0aXZlT3B0aW9uID0gZW5hYmxlZE9wdGlvbnNbbmV4dF07XG4gICAgdGhpcy5hY3RpdmVPcHRpb24uc2V0QWN0aXZlKHRydWUpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQhLmFyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCA9IHRoaXMuYWN0aXZlT3B0aW9uO1xuICAgIHRoaXMuYWN0aXZlT3B0aW9uLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JyB9KTtcblxuICAgIC8vIE1vdmluZyB0aGUgYWN0aXZlIG9wdGlvbiBzaG91bGQgbm90IG1vdmUgdGhlIGlucHV0IGN1cnNvciAoY2FyZXQpXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIC8vIElmICdhdXRvU2VsZWN0QWN0aXZlT3B0aW9uJyBhbmQgaXMgdHJpZ2dlcmVkIGZyb20gYSBrZXlib2FyZCBldmVudFxuICAgIGlmICh0aGlzLmF1dG9TZWxlY3RBY3RpdmVPcHRpb24gJiYgZXZlbnQpIHtcbiAgICAgIHRoaXMuc2V0UGVuZGluZ1NlbGVjdGlvbih0aGlzLmFjdGl2ZU9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0QWN0aXZlRWxlbWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbj8uc2V0QWN0aXZlKGZhbHNlKTtcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IG51bGw7XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyRWxlbWVudCkge1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5hcmlhQWN0aXZlRGVzY2VuZGFudEVsZW1lbnQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRUcmlnZ2VyQXR0cmlidXRlcyhlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgLy8gYXV0b2NvbXBsZXRlIGNhbm5vdCB1c2UgYXJpYSBwcm9wZXJ0aWVzIGJlY2F1c2UgdGhleSBkbyBub3QgcGllcmNlIHNoYWRvdyBET01cbiAgICBzZXRBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzKGVsZW1lbnQsIGFyaWFSb2xlT25Ib3N0ID8gdGhpcy5pZCA6IHRoaXMub3ZlcmxheUlkLCBmYWxzZSk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1hdXRvY29tcGxldGUnOiBTYmJBdXRvY29tcGxldGVFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQU1BLElBQUksU0FBUzs7Ozs7QUFNYixJQUFNLGlCQUFpQjs7Ozs7Ozs7Ozs7QUFZdkIsSUFBYSx5QkFBYixjQUF3RCwyQkFBNkI7Q0FBckYsY0FBQTs7RUFHWSxLQUFBLFlBQVksb0JBQW9CLEVBQUU7RUFDbEMsS0FBQSxZQUFZO0NBb0Z4Qjs7RUF2RmtDLEtBQUEsY0FBc0I7Q0FBbUI7O0VBQ3pDLEtBQUEsT0FBTyxpQkFBaUIsWUFBWTtDQUFLO0NBSXpFLElBQWMsVUFBTztFQUNuQixPQUFPLE1BQU0sS0FBSyxLQUFLLG1CQUF3QyxZQUFZLEtBQUssQ0FBQSxDQUFFO0NBQ3BGO0NBRVUsZUFBWTtFQUNwQixLQUFLLG1CQUNILDhCQUE4QixFQUM5QixTQUFTLE9BQVEsR0FBRyxXQUFXLEtBQUssUUFBUztDQUNqRDtDQUVVLCtCQUErQixPQUFvQjtFQUMzRCxJQUFJLENBQUMsS0FBSyxRQUNSO0VBRUYsUUFBUSxNQUFNLEtBQWQ7R0FDRSxLQUFLO0lBQ0gsS0FBSyxpQkFBaUIsS0FBSztJQUMzQjtHQUVGLEtBQUs7R0FDTCxLQUFLO0lBQ0gsS0FBSyxvQkFBb0IsS0FBSztJQUM5QjtFQUNKO0NBQ0Y7Q0FFVSxpQkFBaUIsT0FBb0I7RUFDN0MsSUFBSSxLQUFLLGNBQWM7R0FFckIsTUFBTSxlQUFjO0dBRXBCLEtBQUssYUFBYSw0QkFBNEIsSUFBSTtFQUNwRDtDQUNGO0NBRVUsb0JBQW9CLE9BQXFCO0VBQ2pELE1BQU0saUJBQWlCLEtBQUssUUFBUSxRQUFRLFFBQVEsQ0FBQyxJQUFJLFFBQVEseUNBQWtCLENBQUM7RUFHcEYsS0FBSyxjQUFjLFVBQVUsS0FBSztFQUNsQyxLQUFLLGVBQWdCLDhCQUE4QjtFQUVuRCxJQUFJLENBQUMsZUFBZSxRQUFRO0dBQzFCLEtBQUssZUFBZTtHQUNwQjtFQUNGO0VBT0EsTUFBTSxPQUFPLG9CQUFvQixPQUxULEtBQUssZUFDekIsZUFBZSxRQUFRLEtBQUssWUFBbUMsSUFDL0QsSUFHcUQsZUFBZSxNQUFNO0VBQzlFLEtBQUssZUFBZSxlQUFlO0VBQ25DLEtBQUssYUFBYSxVQUFVLElBQUk7RUFDaEMsS0FBSyxlQUFnQiw4QkFBOEIsS0FBSztFQUN4RCxLQUFLLGFBQWEsZUFBZSxFQUFFLE9BQU8sVUFBUyxDQUFFO0VBR3JELElBQUksT0FDRixNQUFNLGVBQWM7RUFJdEIsSUFBSSxLQUFLLDBCQUEwQixPQUNqQyxLQUFLLG9CQUFvQixLQUFLLFlBQVk7Q0FFOUM7Q0FFVSxxQkFBa0I7RUFDMUIsS0FBSyxjQUFjLFVBQVUsS0FBSztFQUNsQyxLQUFLLGVBQWU7RUFFcEIsSUFBSSxLQUFLLGdCQUNQLEtBQUssZUFBZSw4QkFBOEI7Q0FFdEQ7Q0FFVSxxQkFBcUIsU0FBeUI7RUFFdEQsMEJBQTBCLFNBQVMsaUJBQWlCLEtBQUssS0FBSyxLQUFLLFdBQVcsS0FBSztDQUNyRiJ9
@@ -493,7 +493,7 @@ var SbbAutocompleteBaseElement = (() => {
493
493
  this._setInputValue(activeOption);
494
494
  }
495
495
  _setValueAndDispatchEvents(selectedOption, preventFocus = false) {
496
- this.options.filter((option) => option.id !== selectedOption.id && option.selected).forEach((option) => option.selected = false);
496
+ this.options.filter((option) => option !== selectedOption && option.selected).forEach((option) => option.selected = false);
497
497
  this.pendingAutoSelectedOption = null;
498
498
  if (this.triggerElement) {
499
499
  this._setInputValue(selectedOption);
@@ -692,4 +692,4 @@ var SbbAutocompleteBaseElement = (() => {
692
692
  //#endregion
693
693
  export { SbbInputAutocompleteEvent as n, SbbAutocompleteBaseElement as t };
694
694
 
695
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWJhc2UtZWxlbWVudC1DVFpFZy0tcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG46aG9zdCg6aXMoOnN0YXRlKHN0YXRlLW9wZW5pbmcpLCA6c3RhdGUoc3RhdGUtb3BlbmVkKSwgOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSkge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbiIsImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG4gIHVuc2FmZUNTUyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBpZFJlZmVyZW5jZSxcbiAgaXNFdmVudE9uRWxlbWVudCxcbiAgaXNTYWZhcmksXG4gIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uLFxuICBwb3BvdmVyUmVzZXRTdHlsZXMsXG4gIHJlbW92ZUFyaWFDb21ib0JveEF0dHJpYnV0ZXMsXG4gIFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLFxuICBTYmJOZWdhdGl2ZU1peGluLFxuICBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCxcbiAgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcixcbiAgc2Nyb2xsYmFyU3R5bGVzLFxuICBzZXRPdmVybGF5UG9zaXRpb24sXG59IGZyb20gJy4uL2NvcmUudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJGb3JtRmllbGRFbGVtZW50IH0gZnJvbSAnLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzJztcbmltcG9ydCB7IG9wdGlvblBhbmVsU3R5bGVzLCB0eXBlIFNiYk9wdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi4vb3B0aW9uLnB1cmUudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LnNjc3M/aW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbmV4cG9ydCBjbGFzcyBTYmJJbnB1dEF1dG9jb21wbGV0ZUV2ZW50PFQ+IGV4dGVuZHMgRXZlbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+O1xuXG4gIHB1YmxpYyBnZXQgb3B0aW9uKCk6IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+IHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9uO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4pIHtcbiAgICBzdXBlcignaW5wdXRBdXRvY29tcGxldGUnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pO1xuICAgIHRoaXMuX29wdGlvbiA9IG9wdGlvbjtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGF1dG9jb21wbGV0ZSBjb21wb25lbnRzLlxuICpcbiAqIEBldmVudCB7RXZlbnR9IGNoYW5nZSAtIFRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgb24gdGhlIGF1dG9jb21wbGV0ZSdzIHRyaWdnZXIgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgZWxlbWVudCdzIHZhbHVlLiBVbmxpa2UgdGhlIGlucHV0IGV2ZW50LCB0aGUgY2hhbmdlIGV2ZW50IGlzIG5vdCBuZWNlc3NhcmlseSBmaXJlZCBmb3IgZWFjaCBhbHRlcmF0aW9uIHRvIGFuIGVsZW1lbnQncyB2YWx1ZS5cbiAqIEBldmVudCB7SW5wdXRFdmVudH0gaW5wdXQgLSBUaGUgaW5wdXQgZXZlbnQgZmlyZXMgIG9uIHRoZSBhdXRvY29tcGxldGUncyB0cmlnZ2VyIHdoZW4gdGhlIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgYXMgYSBkaXJlY3QgcmVzdWx0IG9mIGEgdXNlciBhY3Rpb24uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oXG4gIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50LFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtcbiAgICBwb3BvdmVyUmVzZXRTdHlsZXMsXG4gICAgc2Nyb2xsYmFyU3R5bGVzLFxuICAgIG9wdGlvblBhbmVsU3R5bGVzLFxuICAgIHVuc2FmZUNTUyhzdHlsZSksXG4gIF07XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHdoZXJlIHRoZSBhdXRvY29tcGxldGUgd2lsbCBhdHRhY2guXG4gICAqIElmIG5vdCBzZXQsIGFzIGZhbGxiYWNrIHRoZXJlIGFyZSB0d28gZWxlbWVudHMgd2hpY2ggY2FuIGFjdCBhcyBvcmlnaW4gd2l0aCBmb2xsb3dpbmcgcHJpb3JpdHkgb3JkZXI6XG4gICAqIDEuIGBzYmItZm9ybS1maWVsZGAgaWYgaXQgaXMgYW4gYW5jZXN0b3IuXG4gICAqIDIuIHRyaWdnZXIgZWxlbWVudCBpZiBzZXQuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIG9yaWdpbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGlucHV0IGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGF1dG9jb21wbGV0ZSBvcGVuaW5nLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgYXV0b2NvbXBsZXRlIHdpbGwgb3BlbiBvbiBmb2N1cywgY2xpY2ssIGlucHV0IG9yIGBBcnJvd0Rvd25gIGtleXByZXNzIG9mIHRoZSAndHJpZ2dlcicgZWxlbWVudC5cbiAgICogSWYgbm90IHNldCwgd2lsbCBzZWFyY2ggZm9yIHRoZSBmaXJzdCAnaW5wdXQnIGNoaWxkIG9mIGEgJ3NiYi1mb3JtLWZpZWxkJyBhbmNlc3Rvci5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdHJpZ2dlcjogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpY29uIHNwYWNlIGlzIHByZXNlcnZlZCB3aGVuIG5vIGljb24gaXMgc2V0LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncHJlc2VydmUtaWNvbi1zcGFjZScsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHByZXNlcnZlSWNvblNwYWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGZpcnN0IG9wdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlZCB3aGVuIHRoZSBhdXRvY29tcGxldGUgaXMgb3BlbmVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1hY3RpdmUtZmlyc3Qtb3B0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgbWFwcyBhbiBvcHRpb24ncyBjb250cm9sIHZhbHVlIHRvIGl0cyBkaXNwbGF5IHZhbHVlIGluIHRoZSB0cmlnZ2VyLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNwbGF5V2l0aDogKCh2YWx1ZTogVCkgPT4gc3RyaW5nKSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBzIChsZWFuIHRoZW1lIGRlZmF1bHQpIG9yIG0gKHN0YW5kYXJkIHRoZW1lIGRlZmF1bHQpLlxuICAgKiBXaGVuIHBsYWNlZCBpbnNpZGUgYW4gYDxzYmItZm9ybS1maWVsZD5gLCB0aGUgc2l6ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgZm9ybSBmaWVsZC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBhY3RpdmUgb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZCBhcyB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1zZWxlY3QtYWN0aXZlLW9wdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGF1dG9TZWxlY3RBY3RpdmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCB0aGUgYWN0aXZlIG9wdGlvbiBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIG9uIGJsdXIuXG4gICAqIFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUuIEl0IG1pZ2h0IGJlIHN1YmplY3QgdG8gY2hhbmdlcy5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhdXRvLXNlbGVjdC1hY3RpdmUtb3B0aW9uLW9uLWJsdXInLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhdXRvU2VsZWN0QWN0aXZlT3B0aW9uT25CbHVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHVzZXIgaXMgcmVxdWlyZWQgdG8gbWFrZSBhIHNlbGVjdGlvbiB3aGVuIHRoZXkncmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGVcbiAgICogYXV0b2NvbXBsZXRlLiBJZiB0aGUgdXNlciBtb3ZlcyBhd2F5IGZyb20gdGhlIGF1dG9jb21wbGV0ZSB3aXRob3V0IHNlbGVjdGluZyBhbiBvcHRpb24gZnJvbVxuICAgKiB0aGUgbGlzdCwgdGhlIHZhbHVlIHdpbGwgYmUgcmVzZXQuIElmIHRoZSB1c2VyIG9wZW5zIHRoZSBwYW5lbCBhbmQgY2xvc2VzIGl0IHdpdGhvdXRcbiAgICogaW50ZXJhY3Rpbmcgb3Igc2VsZWN0aW5nIGEgdmFsdWUsIHRoZSBpbml0aWFsIHZhbHVlIHdpbGwgYmUga2VwdC5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdyZXF1aXJlLXNlbGVjdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHJlcXVpcmVTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBhdXRvY29tcGxldGUgcGFuZWwgcmVsYXRpdmUgdG8gdGhlIHRyaWdnZXIuXG4gICAqIEBkZWZhdWx0ICdhdXRvJ1xuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHBvc2l0aW9uOiAnYXV0bycgfCAnYWJvdmUnIHwgJ2JlbG93JyA9ICdhdXRvJztcblxuICAvKiogUmV0dXJucyB0aGUgZWxlbWVudCB3aGVyZSB0aGUgYXV0b2NvbXBsZXRlIG92ZXJsYXkgaXMgYXR0YWNoZWQgdG8uICovXG4gIHB1YmxpYyBnZXQgb3JpZ2luRWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm9yaWdpbiA/P1xuICAgICAgdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk/LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I/LignI292ZXJsYXktYW5jaG9yJykgPz9cbiAgICAgIHRoaXMudHJpZ2dlciA/P1xuICAgICAgbnVsbFxuICAgICk7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgdHJpZ2dlciBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IHRyaWdnZXJFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlckVsZW1lbnQgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudD86IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvdmVybGF5SWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHBhbmVsUm9sZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYWN0aXZlT3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPiB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgcGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIC8vIFRoaXMgaXMgYW4gSUlGRSwgYmVjYXVzZSB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHRpbWVvdXQgc3RhdGVcbiAgICAvLyBmb3IgZGVib3VuY2luZyB0aGUgcmVzaXplIGNhbGxiYWNrcy5cbiAgICBjYWxsYmFjazogKCgpID0+IHtcbiAgICAgIGxldCB0aW1lb3V0SWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnN0YXRlICE9PSAnY2xvc2VkJykge1xuICAgICAgICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMCk7XG4gICAgICB9O1xuICAgIH0pKCksXG4gIH0pO1xuICAvKiogTGlzdGVucyB0byB0aGUgY2hhbmdlcyBvbiB0aGUgYGRpc2FibGVkYCBvciBgcmVhZG9ubHlgIGF0dHJpYnV0ZSBvZiB0aGUgdHJpZ2dlci4gKi9cbiAgcHJpdmF0ZSBfdHJpZ2dlckF0dHJpYnV0ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gbXV0YXRpb25zWzBdLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBpZiAoaW5wdXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpIHx8IGlucHV0Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSkge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICA6IG51bGw7XG4gIHByaXZhdGUgX292ZXJsYXkhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckFib3J0Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9vcHRpb25zQ291bnQgPSAwO1xuICBwcml2YXRlIF9wcmV2aW91c0VsZW1lbnRzPzogRWxlbWVudFtdO1xuXG4gIC8qKiBUcmFja3MgaW5wdXQgZnJvbSBrZXlib2FyZC4gKi9cbiAgcHJpdmF0ZSBfbGFzdFVzZXJJbnB1dDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIElmIHRydWUsIHRoZSAnY2hhbmdlJyBldmVudCBzb3VyY2UgaXMgYW4gb3B0aW9uIHNlbGVjdGlvbiBvciBhICdyZXF1aXJlU2VsZWN0aW9uJyBmaWVsZCBjbGVhbnVwICovXG4gIHByaXZhdGUgX2lzQ3VzdG9tQ2hhbmdlRXZlbnQgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IG9wdGlvbnMoKTogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD5bXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Lignb3B0aW9uc2VsZWN0ZWQnLCAoZTogRXZlbnQpID0+IHRoaXMub25PcHRpb25TZWxlY3RlZChlKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ8m1b3B0Z3JvdXBzbG90Y2hhbmdlJywgKCkgPT4gdGhpcy5faGFuZGxlU2xvdGNoYW5nZSgpLCB7XG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICAoKSA9PiB0aGlzLmNsb3Nlc3Q8U2JiRm9ybUZpZWxkRWxlbWVudD4oJ3NiYi1mb3JtLWZpZWxkJyksXG4gICAgICAgIHtcbiAgICAgICAgICBuZWdhdGl2ZTogKGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmVnYXRpdmUgPSBlLm5lZ2F0aXZlO1xuICAgICAgICAgICAgdGhpcy5zeW5jTmVnYXRpdmUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJvcmRlcmxlc3M6IChlKSA9PiB0aGlzLnRvZ2dsZVN0YXRlKCdvcHRpb24tcGFuZWwtb3JpZ2luLWJvcmRlcmxlc3MnLCBlLmJvcmRlcmxlc3MpLFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHN5bmNOZWdhdGl2ZSgpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0VHJpZ2dlckF0dHJpYnV0ZXMoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvcGVuZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2VsZWN0QnlLZXlib2FyZChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50PzogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZXNldEFjdGl2ZUVsZW1lbnQoKTogdm9pZDtcblxuICAvKiogT3BlbnMgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnIHx8XG4gICAgICB0aGlzLnN0YXRlID09PSAnb3BlbmVkJyB8fFxuICAgICAgIXRoaXMuX292ZXJsYXkgfHxcbiAgICAgIHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDAgfHxcbiAgICAgIHRoaXMuX3JlYWRvbmx5KCkgfHxcbiAgICAgICF0aGlzLmRpc3BhdGNoQmVmb3JlT3BlbkV2ZW50KClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dQb3BvdmVyPy4oKTtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5pbmcnO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1leHBhbmRlZCcsIHRydWUpO1xuICAgIGNvbnN0IG9yaWdpbkVsZW1lbnQgPSB0aGlzLm9yaWdpbkVsZW1lbnQ7XG4gICAgaWYgKCFvcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgZmluZCB0aGUgb3JpZ2luIGVsZW1lbnQuIFBsZWFzZSBzcGVjaWZ5IGEgdmFsaWQgZWxlbWVudCBvciBjaGVjayB0aGUgdXNhZ2Ugb2YgdGhlIFwib3JpZ2luXCIgcHJvcGVydHkgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbicsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24ob3JpZ2luRWxlbWVudCk7XG4gICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk7XG4gICAgdGhpcy5fYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCgpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xvc2VzIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnIHx8IHRoaXMuc3RhdGUgPT09ICdjbG9zZWQnIHx8ICF0aGlzLmRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQSAncGVuZGluZyBzZWxlY3Rpb24nIGlzIGNvbmZpcm1lZCBvbiBwYW5lbCBjbG9zZVxuICAgIGlmICh0aGlzLnBlbmRpbmdBdXRvU2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgIHRoaXMucGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLl9zZXRWYWx1ZUFuZERpc3BhdGNoRXZlbnRzKHRoaXMucGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbiwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnKTtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLmFib3J0KCk7XG4gICAgaWYgKHRoaXMub3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMub3JpZ2luRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLW9wdGlvbnMtcGFuZWwtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAoYXJpYVJvbGVPbkhvc3QpIHtcbiAgICAgIHRoaXMuaWQgfHw9IHRoaXMub3ZlcmxheUlkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFNldHVwKCk7XG4gICAgfVxuICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnYXV0b0FjdGl2ZUZpcnN0T3B0aW9uJykgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKGlzU2VydmVyIHx8ICF0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFuYW1lIHx8IG5hbWUgPT09ICd0cmlnZ2VyJykge1xuICAgICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICAgIH0gZWxzZSBpZiAoKCFuYW1lIHx8IG5hbWUgPT09ICdvcmlnaW4nKSAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZW4gYW4gb3B0aW9uIGlzIHNlbGVjdGVkLCB1cGRhdGUgdGhlIGlucHV0IHZhbHVlIGFuZCBjbG9zZSB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwcm90ZWN0ZWQgb25PcHRpb25TZWxlY3RlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD47XG4gICAgdGhpcy5fc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyh0YXJnZXQpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBICdwZW5kaW5nIHNlbGVjdGlvbicgc2V0cyB0aGUgb3B0aW9uIHZhbHVlIGluIHRoZSBpbnB1dCBlbGVtZW50IHdpdGhvdXQgZW1pdHRpbmcgZXZlbnRzLlxuICAgKiBBICdwZW5kaW5nIHNlbGVjdGlvbicgaXMgY29uZmlybWVkIHdoZW4gdGhlIHBhbmVsIGNsb3Nlcy4gQW55IG90aGVyIHVzZXIgaW50ZXJhY3Rpb25cbiAgICogd2lsbCByZXNldCB0aGUgcGVuZGluZyB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBzZXRQZW5kaW5nU2VsZWN0aW9uKGFjdGl2ZU9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmdBdXRvU2VsZWN0ZWRPcHRpb24gPSBhY3RpdmVPcHRpb247XG4gICAgdGhpcy5fc2V0SW5wdXRWYWx1ZShhY3RpdmVPcHRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyhcbiAgICBzZWxlY3RlZE9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4sXG4gICAgcHJldmVudEZvY3VzID0gZmFsc2UsXG4gICk6IHZvaWQge1xuICAgIC8vIERlc2VsZWN0IHRoZSBwcmV2aW91cyBvcHRpb25zXG4gICAgdGhpcy5vcHRpb25zXG4gICAgICAuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi5pZCAhPT0gc2VsZWN0ZWRPcHRpb24uaWQgJiYgb3B0aW9uLnNlbGVjdGVkKVxuICAgICAgLmZvckVhY2goKG9wdGlvbikgPT4gKG9wdGlvbi5zZWxlY3RlZCA9IGZhbHNlKSk7XG4gICAgdGhpcy5wZW5kaW5nQXV0b1NlbGVjdGVkT3B0aW9uID0gbnVsbDtcblxuICAgIGlmICh0aGlzLnRyaWdnZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLl9zZXRJbnB1dFZhbHVlKHNlbGVjdGVkT3B0aW9uKTtcblxuICAgICAgLy8gTWFudWFsbHkgdHJpZ2dlciB0aGUgY2hhbmdlIGV2ZW50c1xuICAgICAgdGhpcy5faXNDdXN0b21DaGFuZ2VFdmVudCA9IHRydWU7XG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuXG4gICAgICAvLyBEaXNwYXRjaGluZyB0aGUgaW5wdXQgZXZlbnQgY2hhbmdlcyBfbGFzdElucHV0LCB3aGljaCBzaG91bGQgc3RheSBlbXB0eSBzaW5jZSB0aGVyZSdzIG5vIGtleWJvYXJkIGludGVyYWN0aW9uLlxuICAgICAgdGhpcy5fbGFzdFVzZXJJbnB1dCA9IG51bGw7XG5cbiAgICAgIC8vIEN1c3RvbSBpbnB1dCBldmVudCBlbWl0dGVkIHdoZW4gaW5wdXQgdmFsdWUgY2hhbmdlcyBhZnRlciBhbiBvcHRpb24gaXMgc2VsZWN0ZWRcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgU2JiSW5wdXRBdXRvY29tcGxldGVFdmVudChzZWxlY3RlZE9wdGlvbikpO1xuICAgICAgaWYgKCFwcmV2ZW50Rm9jdXMpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBTZXQgdGhlIG9wdGlvbiB2YWx1ZSB3aXRoaW4gdGhlIGlucHV0IGVsZW1lbnQgKi9cbiAgcHJpdmF0ZSBfc2V0SW5wdXRWYWx1ZShvcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW4gYSB2YWx1ZSwgcmV0dXJucyB0aGUgc3RyaW5nIHRoYXQgc2hvdWxkIGJlIHNob3duIHdpdGhpbiB0aGUgaW5wdXQuXG4gICAgY29uc3QgdG9EaXNwbGF5ID0gdGhpcy5kaXNwbGF5V2l0aD8uKG9wdGlvbi52YWx1ZSBhcyBUKSA/PyBvcHRpb24udmFsdWU7XG5cbiAgICAvLyBTZXQgdGhlIG9wdGlvbiB2YWx1ZVxuICAgIC8vIEluIG9yZGVyIHRvIHN1cHBvcnQgUmVhY3Qgb25DaGFuZ2UgZXZlbnQsIHdlIGhhdmUgdG8gZ2V0IHRoZSBzZXR0ZXIgYW5kIGNhbGwgaXQuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMTYwMCNpc3N1ZWNvbW1lbnQtMzQ1ODEzMTMwXG4gICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICBzZXRWYWx1ZS5jYWxsKHRoaXMudHJpZ2dlckVsZW1lbnQsIHRvRGlzcGxheSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Y2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbnModGhpcy50cmlnZ2VyRWxlbWVudD8udmFsdWUpO1xuXG4gICAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCBhbiBlbGVtZW50IGlzIGFkZGVkIHRoYXQgaGFzIG5vdCBiZWVuIHJlbmRlcmVkXG4gICAgLy8geWV0IGFuZCB0aGVyZWZvcmUgaGFzIGhlaWdodCAwLiBUaGVyZWZvcmUsIHdlIGFsc28gb2JzZXJ2ZSB0aGUgc2l6ZVxuICAgIC8vIG9mIGFsbCBjaGlsZCBlbGVtZW50cy5cbiAgICBjb25zdCBjdXJyZW50RWxlbWVudHMgPSBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbCgnKicpKTtcbiAgICB0aGlzLl9wcmV2aW91c0VsZW1lbnRzPy5mb3JFYWNoKChlKSA9PiB0aGlzLl9yZXNpemVPYnNlcnZlci51bm9ic2VydmUoZSkpO1xuICAgIHRoaXMuX3ByZXZpb3VzRWxlbWVudHMgPSBjdXJyZW50RWxlbWVudHM7XG4gICAgdGhpcy5fcHJldmlvdXNFbGVtZW50cy5mb3JFYWNoKChlKSA9PiB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGUpKTtcblxuICAgIC8qKlxuICAgICAqIEl0J3MgcG9zc2libGUgdG8gZmlsdGVyIG91dCBvcHRpb25zIHdpdGggYW4gb3BlbmVkIHBhbmVsIG9uIGlucHV0IGNoYW5nZS5cbiAgICAgKiBJbiB0aGlzIGNhc2UsIHRoZSBwYW5lbCdzIHBvc2l0aW9uIG11c3QgYmUgcmVjYWxjdWxhdGVkIGNvbnNpZGVyaW5nIHRoZSBuZXcgb3B0aW9uJ3MgbGlzdC5cbiAgICAgKi9cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpO1xuICAgICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk7XG5cbiAgICAgIC8vIElmIHRoZSBhdXRvY29tcGxldGUgaXMgb3BlbiBhbmQgdGhlIG9wdGlvbiBjb3VudCBnZXRzIHRvIHplcm8sIHdlIGNsb3NlIHRoZSBhdXRvY29tcGxldGUuXG4gICAgICBpZiAodGhpcy5fb3B0aW9uc0NvdW50ID4gMCAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgLy8gSWYgdGhlICdpbnB1dCcgaXMgZm9jdXNlZCBhbmQgdGhlIGNvdW50IG9mIG9wdGlvbnMgY2hhbmdlcyBmcm9tIDAgdG8gPiAwLFxuICAgICAgLy8gdGhlIGF1dG9jb21wbGV0ZSBzaG91bGQgb3BlbiBhdXRvbWF0aWNhbGx5LlxuICAgICAgZG9jdW1lbnQ/LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMudHJpZ2dlckVsZW1lbnQgJiZcbiAgICAgIHRoaXMuX29wdGlvbnNDb3VudCA9PT0gMCAmJlxuICAgICAgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIHRoaXMuX29wdGlvbnNDb3VudCA9IHRoaXMub3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIF9zZXROZXh0QWN0aXZlT3B0aW9uSWZBdXRvQWN0aXZlRmlyc3RPcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b0FjdGl2ZUZpcnN0T3B0aW9uKSB7XG4gICAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgICAgdGhpcy5zZXROZXh0QWN0aXZlT3B0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBhdXRvY29tcGxldGUgc2hvdWxkIGluaGVyaXQgJ3JlYWRvbmx5JyBzdGF0ZSBmcm9tIHRoZSB0cmlnZ2VyLiAqL1xuICBwcml2YXRlIF9yZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyRWxlbWVudD8uaGFzQXR0cmlidXRlKCdyZWFkb25seScpID8/IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcG9uZW50U2V0dXAoKTogdm9pZCB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlVHJpZ2dlcigpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyRWxlbWVudCA9ICh0aGlzLnRyaWdnZXIgPz9cbiAgICAgIHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcbiAgICBpZiAodHJpZ2dlckVsZW1lbnQgPT09IHRoaXMudHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHJlbW92ZUFyaWFDb21ib0JveEF0dHJpYnV0ZXModGhpcy50cmlnZ2VyRWxlbWVudCk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJyk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyRWxlbWVudDtcblxuICAgIGlmICghdGhpcy50cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFzIHRoZSB0cmlnZ2VyIGNhbiBiZSB0aGUgZmFsbGJhY2sgb2YgdGhlIG9yaWdpbiwgd2UgZXZlbnR1YWxseSBoYXZlIHRvIHVwZGF0ZSB0aGUgcG9zaXRpb24uXG4gICAgY29uc3Qgb3JpZ2luRWxlbWVudCA9IHRoaXMub3JpZ2luRWxlbWVudDtcbiAgICBpZiAodGhpcy50cmlnZ2VyRWxlbWVudCA9PT0gb3JpZ2luRWxlbWVudCAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbkVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuX3RyaWdnZXJBdHRyaWJ1dGVPYnNlcnZlcj8ub2JzZXJ2ZSh0aGlzLnRyaWdnZXJFbGVtZW50ISwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydkaXNhYmxlZCcsICdyZWFkb25seSddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLnRyaWdnZXJFbGVtZW50KTtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gT3BlbiB0aGUgb3ZlcmxheSBvbiBmb2N1cywgY2xpY2ssIGlucHV0IGFuZCBgQXJyb3dEb3duYCBldmVudFxuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB0aGlzLm9wZW4oKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2lucHV0JyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgICAgICAvLyBEbyBub3Qgb3BlbiBpZiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkIHZpYSBkaXNwYXRjaEV2ZW50IChlLmcuIGNsaWNrIG9uIHRpbWV0YWJsZS1zd2FwLWJ1dHRvbilcbiAgICAgICAgaWYgKHZhbHVlICYmIGV2ZW50LmlzVHJ1c3RlZCkge1xuICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbnModmFsdWUpO1xuICAgICAgICB0aGlzLl9sYXN0VXNlcklucHV0ID0gdmFsdWU7XG4gICAgICAgIHRoaXMucGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogSW4gJ3JlcXVpcmVTZWxlY3Rpb24nIG1vZGUsIHdlIGJsb2NrIHRoZSBuYXRpdmUgY2hhbmdlIGV2ZW50cyBhbmRcbiAgICAgICAgICogbGV0IG9ubHkgcGFzcyB0aGUgb25lcyB0aGF0IGNvbWUgd2l0aCBhIHZhbGlkIHZhbHVlICh3aGVuIGFuIG9wdGlvbiBpcyBzZWxlY3RlZClcbiAgICAgICAgICovXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVTZWxlY3Rpb24gJiYgIXRoaXMuX2lzQ3VzdG9tQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pc0N1c3RvbUNoYW5nZUV2ZW50ID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLCBjYXB0dXJlOiB0cnVlIH0sXG4gICAgKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMuX2Nsb3NlZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCksXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIC8vIFdlIG5lZWQga2V5IGV2ZW50IHRvIHJ1biBiZWZvcmUgYW55IG90aGVyIHN1YnNjcmlwdGlvbiB0byBndWFyYW50ZWUgYSBjb3JyZWN0XG4gICAgICAgIC8vIGludGVyYWN0aW9uIHdpdGggb3RoZXIgY29tcG9uZW50cyAobmVjZXNzYXJ5IGZvciB0aGUgJ3NiYi1jaGlwLWdyb3VwJyB1c2UgY2FzZSkuXG4gICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnYmx1cicsXG4gICAgICAoZSkgPT4ge1xuICAgICAgICAvLyBJZiB0aGUgbmV3IGZvY3VzIGlzIHRoZSBhdXRvY29tcGxldGUgb3IgaW5zaWRlIG9mIGl0IHRoZW4gYW4gb3B0aW9uXG4gICAgICAgIC8vIHdhcyBzZWxlY3RlZC4gVGhlcmVmb3JlLCB0aGUgZm9jdXMgaXMgc3RpbGwgb24gdGhlIGNvbXBvbmVudC5cbiAgICAgICAgaWYgKHRoaXMuY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgJ2F1dG9TZWxlY3RBY3RpdmVPcHRpb25PbkJsdXInIGlzIGVuYWJsZWQsIHNlbGVjdCB0aGUgYWN0aXZlIG9wdGlvbiBvbiBibHVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmF1dG9TZWxlY3RBY3RpdmVPcHRpb25PbkJsdXIgJiZcbiAgICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiAmJlxuICAgICAgICAgIHRoaXMuX2xhc3RVc2VySW5wdXQgJiZcbiAgICAgICAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py52YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyh0aGlzLmFjdGl2ZU9wdGlvbiwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGVhcnMgdGhlIGlucHV0IGlmIHRoZXJlJ3MgdXNlciBpbnRlcmFjdGlvbiB3aXRob3V0IHNlbGVjdGlvbiAoc2VsZWN0aW9uIGNsZWFycyBgX2xhc3RVc2VySW5wdXRgKS5cbiAgICAgICAgLy8gQSBcInBlbmRpbmcgc2VsZWN0aW9uXCIgaXMgY29uc2lkZXJlZCBhIHVzZXIgaW50ZXJhY3Rpb24uXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnJlcXVpcmVTZWxlY3Rpb24gJiZcbiAgICAgICAgICB0aGlzLnRyaWdnZXJFbGVtZW50ICYmXG4gICAgICAgICAgdGhpcy5fbGFzdFVzZXJJbnB1dCAhPSBudWxsICYmXG4gICAgICAgICAgIXRoaXMucGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBzZXRWYWx1ZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZSxcbiAgICAgICAgICAgICd2YWx1ZScsXG4gICAgICAgICAgKSEuc2V0ITtcbiAgICAgICAgICBzZXRWYWx1ZS5jYWxsKHRoaXMudHJpZ2dlckVsZW1lbnQsICcnKTtcbiAgICAgICAgICB0aGlzLl9oaWdobGlnaHRPcHRpb25zKCcnKTtcbiAgICAgICAgICB0aGlzLl9pc0N1c3RvbUNoYW5nZUV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsIGNhcHR1cmU6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgLy8gU2V0IG92ZXJsYXkgcG9zaXRpb24sIHdpZHRoIGFuZCBtYXggaGVpZ2h0XG4gIHByaXZhdGUgX3NldE92ZXJsYXlQb3NpdGlvbihvcmlnaW5FbGVtZW50ID0gdGhpcy5vcmlnaW5FbGVtZW50KTogdm9pZCB7XG4gICAgLy8gQW4gdW5kZWZpbmVkIG9yaWdpbkVsZW1lbnQgc2hvdWxkIG9ubHkgb2NjdXIgaW4gdGhlIHVubGlrZWx5IGV2ZW50XG4gICAgLy8gdGhhdCB0aGUgYXV0b2NvbXBsZXRlIGxvc2VzIGl0cyBvcmlnaW5FbGVtZW50IGFuZCB0cmlnZ2VyRWxlbWVudCBkdXJpbmcgYW4gb3BlbiBzdGF0ZS5cbiAgICBpZiAoIW9yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0T3ZlcmxheVBvc2l0aW9uKFxuICAgICAgdGhpcy5fb3ZlcmxheSxcbiAgICAgIG9yaWdpbkVsZW1lbnQsXG4gICAgICB0aGlzLl9vdmVybGF5LFxuICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLW9wdGlvbi1wYW5lbF9fb3ZlcmxheS1jb250YWluZXInKSEsXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIG9wZW4vY2xvc2UgYW5pbWF0aW9uIGVuZC5cbiAgICogSW4gcmFyZSBjYXNlcyBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgICogVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgaWYgKHRoaXMub3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLm9yaWdpbkVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgIHRoaXMuZGlzcGF0Y2hPcGVuRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuaGlkZVBvcG92ZXI/LigpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuXG4gICAgdGhpcy5yZXNldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICB0aGlzLl9vdmVybGF5LnNjcm9sbFRvcCA9IDA7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hPcGVuUGFuZWxFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIFJlY2FsY3VsYXRlIHRoZSBvdmVybGF5IHBvc2l0aW9uIG9uIHNjcm9sbCBhbmQgd2luZG93IHJlc2l6ZVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIC8vIFdpdGhvdXQgY2FwdHVyZSwgb3RoZXIgc2Nyb2xsIGNvbnRleHRzIHdvdWxkIG5vdCBidWJibGUgdG8gdGhpcyBldmVudCBsaXN0ZW5lci5cbiAgICAgIC8vIENhcHR1cmUgYWxsb3dzIHVzIHRvIHJlYWN0IHRvIGFsbCBzY3JvbGwgY29udGV4dHMgaW4gdGhpcyBET00uXG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICAvLyBDbG9zZSBhdXRvY29tcGxldGUgb24gYmFja2Ryb3AgY2xpY2tcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoZXYpID0+IHRoaXMuX3BvaW50ZXJEb3duTGlzdGVuZXIoZXYpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCAoZXYpID0+IHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICfJtWRpc2FibGVkY2hhbmdlJyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlT3B0aW9uPy5kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMucmVzZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk7XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLy8gS2V5Ym9hcmQgaW50ZXJhY3Rpb25zXG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdrZXlkb3duJyxcbiAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5vcGVuZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQpLFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICAvLyBXZSBuZWVkIGtleSBldmVudCB0byBydW4gYmVmb3JlIGFueSBvdGhlciBzdWJzY3JpcHRpb24gdG8gZ3VhcmFudGVlIGEgY29ycmVjdFxuICAgICAgICAvLyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGNvbXBvbmVudHMgKG5lY2Vzc2FyeSBmb3IgdGhlICdzYmItY2hpcC1ncm91cCcgdXNlIGNhc2UpLlxuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHBvaW50ZXJkb3duIGV2ZW50IHRhcmdldCBpcyB0cmlnZ2VyZWQgb24gdGhlIG1lbnUuXG4gIHByaXZhdGUgX3BvaW50ZXJEb3duTGlzdGVuZXIgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTWVudSA9IGlzRXZlbnRPbkVsZW1lbnQodGhpcy5fb3ZlcmxheSwgZXZlbnQpO1xuICB9O1xuXG4gIC8vIElmIHRoZSBjbGljayBpcyBvdXRzaWRlIHRoZSBhdXRvY29tcGxldGUsIGNsb3NlcyB0aGUgcGFuZWwuXG4gIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ICYmXG4gICAgICAhaXNFdmVudE9uRWxlbWVudCh0aGlzLl9vdmVybGF5LCBldmVudCkgJiZcbiAgICAgICFpc0V2ZW50T25FbGVtZW50KHRoaXMub3JpZ2luRWxlbWVudCwgZXZlbnQpXG4gICAgKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX2Nsb3NlZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnb3BlbmluZycgfHwgdGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhpZ2hsaWdodCB0aGUgc2VhcmNoZWQgdGV4dCBvbiB0aGUgb3B0aW9ucy4gKi9cbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0T3B0aW9ucyhzZWFyY2hUZXJtPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHNlYXJjaFRlcm0gPT09IG51bGwgfHwgc2VhcmNoVGVybSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IG9wdGlvbi5oaWdobGlnaHQoc2VhcmNoVGVybSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgLy8gU2Nyb2xsIGFyZWFzIHdpdGhvdXQgY29udGFpbmluZyBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgcmVjZWl2ZSBmb2N1cyB3aGVuIHRhYmJpbmcgdGhyb3VnaCB0aGUgZG9jdW1lbnQuXG4gICAgLy8gSWYgdGhlcmUgYXJlIGEgbG90IG9mIG9wdGlvbnMgYW5kIHdoZW4gcHJlc3NpbmcgdGFiIGtleSwgdGhlIHNjcm9sbCBhcmVhIG9uIHNiYi1hdXRvY29tcGxldGVfX29wdGlvbnMgZ2V0cyBmb2N1cy5cbiAgICAvLyBBcyBlbGVtZW50cyBpbnNpZGUgdGhlIHBhbmVsIHNob3VsZCBuZXZlciBnZXQgZm9jdXMsIHdlIGhhdmUgdG8gYXZvaWQgdGhhdCBieSBzZXR0aW5nIHRhYmluZGV4PS0xLlxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1vcHRpb24tcGFuZWxfX292ZXJsYXktY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNiYi1vcHRpb24tcGFuZWxfX292ZXJsYXkgJHt0aGlzLm5lZ2F0aXZlXG4gICAgICAgICAgICA/ICdzYmItc2Nyb2xsYmFyLW5lZ2F0aXZlJ1xuICAgICAgICAgICAgOiAnc2JiLXNjcm9sbGJhcid9XCJcbiAgICAgICAgICByb2xlPSR7IWFyaWFSb2xlT25Ib3N0ID8gdGhpcy5wYW5lbFJvbGUgOiBub3RoaW5nfVxuICAgICAgICAgIGlkPSR7IWFyaWFSb2xlT25Ib3N0ID8gdGhpcy5vdmVybGF5SWQgOiBub3RoaW5nfVxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHt0aGlzLl9vbkFuaW1hdGlvbkVuZH1cbiAgICAgICAgICAke3JlZigob3ZlcmxheVJlZj86IEVsZW1lbnQpID0+ICh0aGlzLl9vdmVybGF5ID0gb3ZlcmxheVJlZiBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBpbnB1dEF1dG9jb21wbGV0ZTogU2JiSW5wdXRBdXRvY29tcGxldGVFdmVudDxhbnk+O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQ3NDQSxJQUFNLGlCQUFpQjtBQUV2QixJQUFhLDRCQUFiLGNBQWtELE1BQUs7Q0FHckQsSUFBVyxTQUFNO0VBQ2YsT0FBTyxLQUFLO0NBQ2Q7Q0FFQSxZQUFtQixRQUErQjtFQUNoRCxNQUFNLHFCQUFxQjtHQUFFLFNBQVM7R0FBTSxVQUFVO0VBQUksQ0FBRTtFQUM1RCxLQUFLLFVBQVU7Q0FDakI7Ozs7Ozs7O0lBU29CLG9DQUEwQjttQkFBcUIsaUJBQ25FLHVCQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjQURILG1DQUErQyxZQUVwRTs7O3lCQWdCRSxZQUFXLEdBQ1gsU0FBUSxDQUFFOzBCQVVWLFlBQVcsR0FDWCxTQUFRLENBQUU7b0NBSVYsVUFBUyxHQUNULFNBQVM7SUFBRSxXQUFXO0lBQXVCLFNBQVM7SUFBTSxNQUFNO0dBQU8sQ0FBRSxDQUFDO3dDQUk1RSxVQUFTLEdBQ1Qs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
695
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWJhc2UtZWxlbWVudC1EMWIwUkFfdS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG46aG9zdCg6aXMoOnN0YXRlKHN0YXRlLW9wZW5pbmcpLCA6c3RhdGUoc3RhdGUtb3BlbmVkKSwgOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSkge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbiIsImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG4gIHVuc2FmZUNTUyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBpZFJlZmVyZW5jZSxcbiAgaXNFdmVudE9uRWxlbWVudCxcbiAgaXNTYWZhcmksXG4gIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uLFxuICBwb3BvdmVyUmVzZXRTdHlsZXMsXG4gIHJlbW92ZUFyaWFDb21ib0JveEF0dHJpYnV0ZXMsXG4gIFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLFxuICBTYmJOZWdhdGl2ZU1peGluLFxuICBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCxcbiAgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcixcbiAgc2Nyb2xsYmFyU3R5bGVzLFxuICBzZXRPdmVybGF5UG9zaXRpb24sXG59IGZyb20gJy4uL2NvcmUudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJGb3JtRmllbGRFbGVtZW50IH0gZnJvbSAnLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzJztcbmltcG9ydCB7IG9wdGlvblBhbmVsU3R5bGVzLCB0eXBlIFNiYk9wdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi4vb3B0aW9uLnB1cmUudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LnNjc3M/aW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbmV4cG9ydCBjbGFzcyBTYmJJbnB1dEF1dG9jb21wbGV0ZUV2ZW50PFQ+IGV4dGVuZHMgRXZlbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+O1xuXG4gIHB1YmxpYyBnZXQgb3B0aW9uKCk6IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+IHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9uO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4pIHtcbiAgICBzdXBlcignaW5wdXRBdXRvY29tcGxldGUnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pO1xuICAgIHRoaXMuX29wdGlvbiA9IG9wdGlvbjtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGF1dG9jb21wbGV0ZSBjb21wb25lbnRzLlxuICpcbiAqIEBldmVudCB7RXZlbnR9IGNoYW5nZSAtIFRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgb24gdGhlIGF1dG9jb21wbGV0ZSdzIHRyaWdnZXIgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgZWxlbWVudCdzIHZhbHVlLiBVbmxpa2UgdGhlIGlucHV0IGV2ZW50LCB0aGUgY2hhbmdlIGV2ZW50IGlzIG5vdCBuZWNlc3NhcmlseSBmaXJlZCBmb3IgZWFjaCBhbHRlcmF0aW9uIHRvIGFuIGVsZW1lbnQncyB2YWx1ZS5cbiAqIEBldmVudCB7SW5wdXRFdmVudH0gaW5wdXQgLSBUaGUgaW5wdXQgZXZlbnQgZmlyZXMgIG9uIHRoZSBhdXRvY29tcGxldGUncyB0cmlnZ2VyIHdoZW4gdGhlIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgYXMgYSBkaXJlY3QgcmVzdWx0IG9mIGEgdXNlciBhY3Rpb24uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oXG4gIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50LFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtcbiAgICBwb3BvdmVyUmVzZXRTdHlsZXMsXG4gICAgc2Nyb2xsYmFyU3R5bGVzLFxuICAgIG9wdGlvblBhbmVsU3R5bGVzLFxuICAgIHVuc2FmZUNTUyhzdHlsZSksXG4gIF07XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHdoZXJlIHRoZSBhdXRvY29tcGxldGUgd2lsbCBhdHRhY2guXG4gICAqIElmIG5vdCBzZXQsIGFzIGZhbGxiYWNrIHRoZXJlIGFyZSB0d28gZWxlbWVudHMgd2hpY2ggY2FuIGFjdCBhcyBvcmlnaW4gd2l0aCBmb2xsb3dpbmcgcHJpb3JpdHkgb3JkZXI6XG4gICAqIDEuIGBzYmItZm9ybS1maWVsZGAgaWYgaXQgaXMgYW4gYW5jZXN0b3IuXG4gICAqIDIuIHRyaWdnZXIgZWxlbWVudCBpZiBzZXQuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIG9yaWdpbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGlucHV0IGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGF1dG9jb21wbGV0ZSBvcGVuaW5nLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgYXV0b2NvbXBsZXRlIHdpbGwgb3BlbiBvbiBmb2N1cywgY2xpY2ssIGlucHV0IG9yIGBBcnJvd0Rvd25gIGtleXByZXNzIG9mIHRoZSAndHJpZ2dlcicgZWxlbWVudC5cbiAgICogSWYgbm90IHNldCwgd2lsbCBzZWFyY2ggZm9yIHRoZSBmaXJzdCAnaW5wdXQnIGNoaWxkIG9mIGEgJ3NiYi1mb3JtLWZpZWxkJyBhbmNlc3Rvci5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdHJpZ2dlcjogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpY29uIHNwYWNlIGlzIHByZXNlcnZlZCB3aGVuIG5vIGljb24gaXMgc2V0LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncHJlc2VydmUtaWNvbi1zcGFjZScsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHByZXNlcnZlSWNvblNwYWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGZpcnN0IG9wdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlZCB3aGVuIHRoZSBhdXRvY29tcGxldGUgaXMgb3BlbmVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1hY3RpdmUtZmlyc3Qtb3B0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgbWFwcyBhbiBvcHRpb24ncyBjb250cm9sIHZhbHVlIHRvIGl0cyBkaXNwbGF5IHZhbHVlIGluIHRoZSB0cmlnZ2VyLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNwbGF5V2l0aDogKCh2YWx1ZTogVCkgPT4gc3RyaW5nKSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBzIChsZWFuIHRoZW1lIGRlZmF1bHQpIG9yIG0gKHN0YW5kYXJkIHRoZW1lIGRlZmF1bHQpLlxuICAgKiBXaGVuIHBsYWNlZCBpbnNpZGUgYW4gYDxzYmItZm9ybS1maWVsZD5gLCB0aGUgc2l6ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgZm9ybSBmaWVsZC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBhY3RpdmUgb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZCBhcyB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1zZWxlY3QtYWN0aXZlLW9wdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGF1dG9TZWxlY3RBY3RpdmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCB0aGUgYWN0aXZlIG9wdGlvbiBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIG9uIGJsdXIuXG4gICAqIFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUuIEl0IG1pZ2h0IGJlIHN1YmplY3QgdG8gY2hhbmdlcy5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhdXRvLXNlbGVjdC1hY3RpdmUtb3B0aW9uLW9uLWJsdXInLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhdXRvU2VsZWN0QWN0aXZlT3B0aW9uT25CbHVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHVzZXIgaXMgcmVxdWlyZWQgdG8gbWFrZSBhIHNlbGVjdGlvbiB3aGVuIHRoZXkncmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGVcbiAgICogYXV0b2NvbXBsZXRlLiBJZiB0aGUgdXNlciBtb3ZlcyBhd2F5IGZyb20gdGhlIGF1dG9jb21wbGV0ZSB3aXRob3V0IHNlbGVjdGluZyBhbiBvcHRpb24gZnJvbVxuICAgKiB0aGUgbGlzdCwgdGhlIHZhbHVlIHdpbGwgYmUgcmVzZXQuIElmIHRoZSB1c2VyIG9wZW5zIHRoZSBwYW5lbCBhbmQgY2xvc2VzIGl0IHdpdGhvdXRcbiAgICogaW50ZXJhY3Rpbmcgb3Igc2VsZWN0aW5nIGEgdmFsdWUsIHRoZSBpbml0aWFsIHZhbHVlIHdpbGwgYmUga2VwdC5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdyZXF1aXJlLXNlbGVjdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHJlcXVpcmVTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBhdXRvY29tcGxldGUgcGFuZWwgcmVsYXRpdmUgdG8gdGhlIHRyaWdnZXIuXG4gICAqIEBkZWZhdWx0ICdhdXRvJ1xuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHBvc2l0aW9uOiAnYXV0bycgfCAnYWJvdmUnIHwgJ2JlbG93JyA9ICdhdXRvJztcblxuICAvKiogUmV0dXJucyB0aGUgZWxlbWVudCB3aGVyZSB0aGUgYXV0b2NvbXBsZXRlIG92ZXJsYXkgaXMgYXR0YWNoZWQgdG8uICovXG4gIHB1YmxpYyBnZXQgb3JpZ2luRWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm9yaWdpbiA/P1xuICAgICAgdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk/LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I/LignI292ZXJsYXktYW5jaG9yJykgPz9cbiAgICAgIHRoaXMudHJpZ2dlciA/P1xuICAgICAgbnVsbFxuICAgICk7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgdHJpZ2dlciBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IHRyaWdnZXJFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlckVsZW1lbnQgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudD86IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvdmVybGF5SWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHBhbmVsUm9sZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYWN0aXZlT3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPiB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgcGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIC8vIFRoaXMgaXMgYW4gSUlGRSwgYmVjYXVzZSB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHRpbWVvdXQgc3RhdGVcbiAgICAvLyBmb3IgZGVib3VuY2luZyB0aGUgcmVzaXplIGNhbGxiYWNrcy5cbiAgICBjYWxsYmFjazogKCgpID0+IHtcbiAgICAgIGxldCB0aW1lb3V0SWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnN0YXRlICE9PSAnY2xvc2VkJykge1xuICAgICAgICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMCk7XG4gICAgICB9O1xuICAgIH0pKCksXG4gIH0pO1xuICAvKiogTGlzdGVucyB0byB0aGUgY2hhbmdlcyBvbiB0aGUgYGRpc2FibGVkYCBvciBgcmVhZG9ubHlgIGF0dHJpYnV0ZSBvZiB0aGUgdHJpZ2dlci4gKi9cbiAgcHJpdmF0ZSBfdHJpZ2dlckF0dHJpYnV0ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gbXV0YXRpb25zWzBdLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBpZiAoaW5wdXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpIHx8IGlucHV0Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSkge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICA6IG51bGw7XG4gIHByaXZhdGUgX292ZXJsYXkhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckFib3J0Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9vcHRpb25zQ291bnQgPSAwO1xuICBwcml2YXRlIF9wcmV2aW91c0VsZW1lbnRzPzogRWxlbWVudFtdO1xuXG4gIC8qKiBUcmFja3MgaW5wdXQgZnJvbSBrZXlib2FyZC4gKi9cbiAgcHJpdmF0ZSBfbGFzdFVzZXJJbnB1dDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIElmIHRydWUsIHRoZSAnY2hhbmdlJyBldmVudCBzb3VyY2UgaXMgYW4gb3B0aW9uIHNlbGVjdGlvbiBvciBhICdyZXF1aXJlU2VsZWN0aW9uJyBmaWVsZCBjbGVhbnVwICovXG4gIHByaXZhdGUgX2lzQ3VzdG9tQ2hhbmdlRXZlbnQgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IG9wdGlvbnMoKTogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD5bXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Lignb3B0aW9uc2VsZWN0ZWQnLCAoZTogRXZlbnQpID0+IHRoaXMub25PcHRpb25TZWxlY3RlZChlKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ8m1b3B0Z3JvdXBzbG90Y2hhbmdlJywgKCkgPT4gdGhpcy5faGFuZGxlU2xvdGNoYW5nZSgpLCB7XG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICAoKSA9PiB0aGlzLmNsb3Nlc3Q8U2JiRm9ybUZpZWxkRWxlbWVudD4oJ3NiYi1mb3JtLWZpZWxkJyksXG4gICAgICAgIHtcbiAgICAgICAgICBuZWdhdGl2ZTogKGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmVnYXRpdmUgPSBlLm5lZ2F0aXZlO1xuICAgICAgICAgICAgdGhpcy5zeW5jTmVnYXRpdmUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJvcmRlcmxlc3M6IChlKSA9PiB0aGlzLnRvZ2dsZVN0YXRlKCdvcHRpb24tcGFuZWwtb3JpZ2luLWJvcmRlcmxlc3MnLCBlLmJvcmRlcmxlc3MpLFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHN5bmNOZWdhdGl2ZSgpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0VHJpZ2dlckF0dHJpYnV0ZXMoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvcGVuZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2VsZWN0QnlLZXlib2FyZChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50PzogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZXNldEFjdGl2ZUVsZW1lbnQoKTogdm9pZDtcblxuICAvKiogT3BlbnMgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnIHx8XG4gICAgICB0aGlzLnN0YXRlID09PSAnb3BlbmVkJyB8fFxuICAgICAgIXRoaXMuX292ZXJsYXkgfHxcbiAgICAgIHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDAgfHxcbiAgICAgIHRoaXMuX3JlYWRvbmx5KCkgfHxcbiAgICAgICF0aGlzLmRpc3BhdGNoQmVmb3JlT3BlbkV2ZW50KClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dQb3BvdmVyPy4oKTtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5pbmcnO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1leHBhbmRlZCcsIHRydWUpO1xuICAgIGNvbnN0IG9yaWdpbkVsZW1lbnQgPSB0aGlzLm9yaWdpbkVsZW1lbnQ7XG4gICAgaWYgKCFvcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgZmluZCB0aGUgb3JpZ2luIGVsZW1lbnQuIFBsZWFzZSBzcGVjaWZ5IGEgdmFsaWQgZWxlbWVudCBvciBjaGVjayB0aGUgdXNhZ2Ugb2YgdGhlIFwib3JpZ2luXCIgcHJvcGVydHkgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbicsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24ob3JpZ2luRWxlbWVudCk7XG4gICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk7XG4gICAgdGhpcy5fYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCgpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xvc2VzIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnIHx8IHRoaXMuc3RhdGUgPT09ICdjbG9zZWQnIHx8ICF0aGlzLmRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQSAncGVuZGluZyBzZWxlY3Rpb24nIGlzIGNvbmZpcm1lZCBvbiBwYW5lbCBjbG9zZVxuICAgIGlmICh0aGlzLnBlbmRpbmdBdXRvU2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgIHRoaXMucGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLl9zZXRWYWx1ZUFuZERpc3BhdGNoRXZlbnRzKHRoaXMucGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbiwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnKTtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLmFib3J0KCk7XG4gICAgaWYgKHRoaXMub3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMub3JpZ2luRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLW9wdGlvbnMtcGFuZWwtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAoYXJpYVJvbGVPbkhvc3QpIHtcbiAgICAgIHRoaXMuaWQgfHw9IHRoaXMub3ZlcmxheUlkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFNldHVwKCk7XG4gICAgfVxuICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnYXV0b0FjdGl2ZUZpcnN0T3B0aW9uJykgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKGlzU2VydmVyIHx8ICF0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFuYW1lIHx8IG5hbWUgPT09ICd0cmlnZ2VyJykge1xuICAgICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICAgIH0gZWxzZSBpZiAoKCFuYW1lIHx8IG5hbWUgPT09ICdvcmlnaW4nKSAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZW4gYW4gb3B0aW9uIGlzIHNlbGVjdGVkLCB1cGRhdGUgdGhlIGlucHV0IHZhbHVlIGFuZCBjbG9zZSB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwcm90ZWN0ZWQgb25PcHRpb25TZWxlY3RlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD47XG4gICAgdGhpcy5fc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyh0YXJnZXQpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBICdwZW5kaW5nIHNlbGVjdGlvbicgc2V0cyB0aGUgb3B0aW9uIHZhbHVlIGluIHRoZSBpbnB1dCBlbGVtZW50IHdpdGhvdXQgZW1pdHRpbmcgZXZlbnRzLlxuICAgKiBBICdwZW5kaW5nIHNlbGVjdGlvbicgaXMgY29uZmlybWVkIHdoZW4gdGhlIHBhbmVsIGNsb3Nlcy4gQW55IG90aGVyIHVzZXIgaW50ZXJhY3Rpb25cbiAgICogd2lsbCByZXNldCB0aGUgcGVuZGluZyB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBzZXRQZW5kaW5nU2VsZWN0aW9uKGFjdGl2ZU9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmdBdXRvU2VsZWN0ZWRPcHRpb24gPSBhY3RpdmVPcHRpb247XG4gICAgdGhpcy5fc2V0SW5wdXRWYWx1ZShhY3RpdmVPcHRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyhcbiAgICBzZWxlY3RlZE9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4sXG4gICAgcHJldmVudEZvY3VzID0gZmFsc2UsXG4gICk6IHZvaWQge1xuICAgIC8vIERlc2VsZWN0IHRoZSBwcmV2aW91cyBvcHRpb25zXG4gICAgdGhpcy5vcHRpb25zXG4gICAgICAuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbiAhPT0gc2VsZWN0ZWRPcHRpb24gJiYgb3B0aW9uLnNlbGVjdGVkKVxuICAgICAgLmZvckVhY2goKG9wdGlvbikgPT4gKG9wdGlvbi5zZWxlY3RlZCA9IGZhbHNlKSk7XG4gICAgdGhpcy5wZW5kaW5nQXV0b1NlbGVjdGVkT3B0aW9uID0gbnVsbDtcblxuICAgIGlmICh0aGlzLnRyaWdnZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLl9zZXRJbnB1dFZhbHVlKHNlbGVjdGVkT3B0aW9uKTtcblxuICAgICAgLy8gTWFudWFsbHkgdHJpZ2dlciB0aGUgY2hhbmdlIGV2ZW50c1xuICAgICAgdGhpcy5faXNDdXN0b21DaGFuZ2VFdmVudCA9IHRydWU7XG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuXG4gICAgICAvLyBEaXNwYXRjaGluZyB0aGUgaW5wdXQgZXZlbnQgY2hhbmdlcyBfbGFzdElucHV0LCB3aGljaCBzaG91bGQgc3RheSBlbXB0eSBzaW5jZSB0aGVyZSdzIG5vIGtleWJvYXJkIGludGVyYWN0aW9uLlxuICAgICAgdGhpcy5fbGFzdFVzZXJJbnB1dCA9IG51bGw7XG5cbiAgICAgIC8vIEN1c3RvbSBpbnB1dCBldmVudCBlbWl0dGVkIHdoZW4gaW5wdXQgdmFsdWUgY2hhbmdlcyBhZnRlciBhbiBvcHRpb24gaXMgc2VsZWN0ZWRcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgU2JiSW5wdXRBdXRvY29tcGxldGVFdmVudChzZWxlY3RlZE9wdGlvbikpO1xuICAgICAgaWYgKCFwcmV2ZW50Rm9jdXMpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBTZXQgdGhlIG9wdGlvbiB2YWx1ZSB3aXRoaW4gdGhlIGlucHV0IGVsZW1lbnQgKi9cbiAgcHJpdmF0ZSBfc2V0SW5wdXRWYWx1ZShvcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW4gYSB2YWx1ZSwgcmV0dXJucyB0aGUgc3RyaW5nIHRoYXQgc2hvdWxkIGJlIHNob3duIHdpdGhpbiB0aGUgaW5wdXQuXG4gICAgY29uc3QgdG9EaXNwbGF5ID0gdGhpcy5kaXNwbGF5V2l0aD8uKG9wdGlvbi52YWx1ZSBhcyBUKSA/PyBvcHRpb24udmFsdWU7XG5cbiAgICAvLyBTZXQgdGhlIG9wdGlvbiB2YWx1ZVxuICAgIC8vIEluIG9yZGVyIHRvIHN1cHBvcnQgUmVhY3Qgb25DaGFuZ2UgZXZlbnQsIHdlIGhhdmUgdG8gZ2V0IHRoZSBzZXR0ZXIgYW5kIGNhbGwgaXQuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMTYwMCNpc3N1ZWNvbW1lbnQtMzQ1ODEzMTMwXG4gICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICBzZXRWYWx1ZS5jYWxsKHRoaXMudHJpZ2dlckVsZW1lbnQsIHRvRGlzcGxheSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Y2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbnModGhpcy50cmlnZ2VyRWxlbWVudD8udmFsdWUpO1xuXG4gICAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCBhbiBlbGVtZW50IGlzIGFkZGVkIHRoYXQgaGFzIG5vdCBiZWVuIHJlbmRlcmVkXG4gICAgLy8geWV0IGFuZCB0aGVyZWZvcmUgaGFzIGhlaWdodCAwLiBUaGVyZWZvcmUsIHdlIGFsc28gb2JzZXJ2ZSB0aGUgc2l6ZVxuICAgIC8vIG9mIGFsbCBjaGlsZCBlbGVtZW50cy5cbiAgICBjb25zdCBjdXJyZW50RWxlbWVudHMgPSBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbCgnKicpKTtcbiAgICB0aGlzLl9wcmV2aW91c0VsZW1lbnRzPy5mb3JFYWNoKChlKSA9PiB0aGlzLl9yZXNpemVPYnNlcnZlci51bm9ic2VydmUoZSkpO1xuICAgIHRoaXMuX3ByZXZpb3VzRWxlbWVudHMgPSBjdXJyZW50RWxlbWVudHM7XG4gICAgdGhpcy5fcHJldmlvdXNFbGVtZW50cy5mb3JFYWNoKChlKSA9PiB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGUpKTtcblxuICAgIC8qKlxuICAgICAqIEl0J3MgcG9zc2libGUgdG8gZmlsdGVyIG91dCBvcHRpb25zIHdpdGggYW4gb3BlbmVkIHBhbmVsIG9uIGlucHV0IGNoYW5nZS5cbiAgICAgKiBJbiB0aGlzIGNhc2UsIHRoZSBwYW5lbCdzIHBvc2l0aW9uIG11c3QgYmUgcmVjYWxjdWxhdGVkIGNvbnNpZGVyaW5nIHRoZSBuZXcgb3B0aW9uJ3MgbGlzdC5cbiAgICAgKi9cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpO1xuICAgICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk7XG5cbiAgICAgIC8vIElmIHRoZSBhdXRvY29tcGxldGUgaXMgb3BlbiBhbmQgdGhlIG9wdGlvbiBjb3VudCBnZXRzIHRvIHplcm8sIHdlIGNsb3NlIHRoZSBhdXRvY29tcGxldGUuXG4gICAgICBpZiAodGhpcy5fb3B0aW9uc0NvdW50ID4gMCAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgLy8gSWYgdGhlICdpbnB1dCcgaXMgZm9jdXNlZCBhbmQgdGhlIGNvdW50IG9mIG9wdGlvbnMgY2hhbmdlcyBmcm9tIDAgdG8gPiAwLFxuICAgICAgLy8gdGhlIGF1dG9jb21wbGV0ZSBzaG91bGQgb3BlbiBhdXRvbWF0aWNhbGx5LlxuICAgICAgZG9jdW1lbnQ/LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMudHJpZ2dlckVsZW1lbnQgJiZcbiAgICAgIHRoaXMuX29wdGlvbnNDb3VudCA9PT0gMCAmJlxuICAgICAgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIHRoaXMuX29wdGlvbnNDb3VudCA9IHRoaXMub3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIF9zZXROZXh0QWN0aXZlT3B0aW9uSWZBdXRvQWN0aXZlRmlyc3RPcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b0FjdGl2ZUZpcnN0T3B0aW9uKSB7XG4gICAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgICAgdGhpcy5zZXROZXh0QWN0aXZlT3B0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBhdXRvY29tcGxldGUgc2hvdWxkIGluaGVyaXQgJ3JlYWRvbmx5JyBzdGF0ZSBmcm9tIHRoZSB0cmlnZ2VyLiAqL1xuICBwcml2YXRlIF9yZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyRWxlbWVudD8uaGFzQXR0cmlidXRlKCdyZWFkb25seScpID8/IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcG9uZW50U2V0dXAoKTogdm9pZCB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlVHJpZ2dlcigpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyRWxlbWVudCA9ICh0aGlzLnRyaWdnZXIgPz9cbiAgICAgIHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcbiAgICBpZiAodHJpZ2dlckVsZW1lbnQgPT09IHRoaXMudHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHJlbW92ZUFyaWFDb21ib0JveEF0dHJpYnV0ZXModGhpcy50cmlnZ2VyRWxlbWVudCk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJyk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyRWxlbWVudDtcblxuICAgIGlmICghdGhpcy50cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFzIHRoZSB0cmlnZ2VyIGNhbiBiZSB0aGUgZmFsbGJhY2sgb2YgdGhlIG9yaWdpbiwgd2UgZXZlbnR1YWxseSBoYXZlIHRvIHVwZGF0ZSB0aGUgcG9zaXRpb24uXG4gICAgY29uc3Qgb3JpZ2luRWxlbWVudCA9IHRoaXMub3JpZ2luRWxlbWVudDtcbiAgICBpZiAodGhpcy50cmlnZ2VyRWxlbWVudCA9PT0gb3JpZ2luRWxlbWVudCAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbkVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuX3RyaWdnZXJBdHRyaWJ1dGVPYnNlcnZlcj8ub2JzZXJ2ZSh0aGlzLnRyaWdnZXJFbGVtZW50ISwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydkaXNhYmxlZCcsICdyZWFkb25seSddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLnRyaWdnZXJFbGVtZW50KTtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gT3BlbiB0aGUgb3ZlcmxheSBvbiBmb2N1cywgY2xpY2ssIGlucHV0IGFuZCBgQXJyb3dEb3duYCBldmVudFxuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB0aGlzLm9wZW4oKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2lucHV0JyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgICAgICAvLyBEbyBub3Qgb3BlbiBpZiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkIHZpYSBkaXNwYXRjaEV2ZW50IChlLmcuIGNsaWNrIG9uIHRpbWV0YWJsZS1zd2FwLWJ1dHRvbilcbiAgICAgICAgaWYgKHZhbHVlICYmIGV2ZW50LmlzVHJ1c3RlZCkge1xuICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbnModmFsdWUpO1xuICAgICAgICB0aGlzLl9sYXN0VXNlcklucHV0ID0gdmFsdWU7XG4gICAgICAgIHRoaXMucGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogSW4gJ3JlcXVpcmVTZWxlY3Rpb24nIG1vZGUsIHdlIGJsb2NrIHRoZSBuYXRpdmUgY2hhbmdlIGV2ZW50cyBhbmRcbiAgICAgICAgICogbGV0IG9ubHkgcGFzcyB0aGUgb25lcyB0aGF0IGNvbWUgd2l0aCBhIHZhbGlkIHZhbHVlICh3aGVuIGFuIG9wdGlvbiBpcyBzZWxlY3RlZClcbiAgICAgICAgICovXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVTZWxlY3Rpb24gJiYgIXRoaXMuX2lzQ3VzdG9tQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pc0N1c3RvbUNoYW5nZUV2ZW50ID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLCBjYXB0dXJlOiB0cnVlIH0sXG4gICAgKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMuX2Nsb3NlZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCksXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIC8vIFdlIG5lZWQga2V5IGV2ZW50IHRvIHJ1biBiZWZvcmUgYW55IG90aGVyIHN1YnNjcmlwdGlvbiB0byBndWFyYW50ZWUgYSBjb3JyZWN0XG4gICAgICAgIC8vIGludGVyYWN0aW9uIHdpdGggb3RoZXIgY29tcG9uZW50cyAobmVjZXNzYXJ5IGZvciB0aGUgJ3NiYi1jaGlwLWdyb3VwJyB1c2UgY2FzZSkuXG4gICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnYmx1cicsXG4gICAgICAoZSkgPT4ge1xuICAgICAgICAvLyBJZiB0aGUgbmV3IGZvY3VzIGlzIHRoZSBhdXRvY29tcGxldGUgb3IgaW5zaWRlIG9mIGl0IHRoZW4gYW4gb3B0aW9uXG4gICAgICAgIC8vIHdhcyBzZWxlY3RlZC4gVGhlcmVmb3JlLCB0aGUgZm9jdXMgaXMgc3RpbGwgb24gdGhlIGNvbXBvbmVudC5cbiAgICAgICAgaWYgKHRoaXMuY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgJ2F1dG9TZWxlY3RBY3RpdmVPcHRpb25PbkJsdXInIGlzIGVuYWJsZWQsIHNlbGVjdCB0aGUgYWN0aXZlIG9wdGlvbiBvbiBibHVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmF1dG9TZWxlY3RBY3RpdmVPcHRpb25PbkJsdXIgJiZcbiAgICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiAmJlxuICAgICAgICAgIHRoaXMuX2xhc3RVc2VySW5wdXQgJiZcbiAgICAgICAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py52YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyh0aGlzLmFjdGl2ZU9wdGlvbiwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGVhcnMgdGhlIGlucHV0IGlmIHRoZXJlJ3MgdXNlciBpbnRlcmFjdGlvbiB3aXRob3V0IHNlbGVjdGlvbiAoc2VsZWN0aW9uIGNsZWFycyBgX2xhc3RVc2VySW5wdXRgKS5cbiAgICAgICAgLy8gQSBcInBlbmRpbmcgc2VsZWN0aW9uXCIgaXMgY29uc2lkZXJlZCBhIHVzZXIgaW50ZXJhY3Rpb24uXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnJlcXVpcmVTZWxlY3Rpb24gJiZcbiAgICAgICAgICB0aGlzLnRyaWdnZXJFbGVtZW50ICYmXG4gICAgICAgICAgdGhpcy5fbGFzdFVzZXJJbnB1dCAhPSBudWxsICYmXG4gICAgICAgICAgIXRoaXMucGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBzZXRWYWx1ZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZSxcbiAgICAgICAgICAgICd2YWx1ZScsXG4gICAgICAgICAgKSEuc2V0ITtcbiAgICAgICAgICBzZXRWYWx1ZS5jYWxsKHRoaXMudHJpZ2dlckVsZW1lbnQsICcnKTtcbiAgICAgICAgICB0aGlzLl9oaWdobGlnaHRPcHRpb25zKCcnKTtcbiAgICAgICAgICB0aGlzLl9pc0N1c3RvbUNoYW5nZUV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsIGNhcHR1cmU6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgLy8gU2V0IG92ZXJsYXkgcG9zaXRpb24sIHdpZHRoIGFuZCBtYXggaGVpZ2h0XG4gIHByaXZhdGUgX3NldE92ZXJsYXlQb3NpdGlvbihvcmlnaW5FbGVtZW50ID0gdGhpcy5vcmlnaW5FbGVtZW50KTogdm9pZCB7XG4gICAgLy8gQW4gdW5kZWZpbmVkIG9yaWdpbkVsZW1lbnQgc2hvdWxkIG9ubHkgb2NjdXIgaW4gdGhlIHVubGlrZWx5IGV2ZW50XG4gICAgLy8gdGhhdCB0aGUgYXV0b2NvbXBsZXRlIGxvc2VzIGl0cyBvcmlnaW5FbGVtZW50IGFuZCB0cmlnZ2VyRWxlbWVudCBkdXJpbmcgYW4gb3BlbiBzdGF0ZS5cbiAgICBpZiAoIW9yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0T3ZlcmxheVBvc2l0aW9uKFxuICAgICAgdGhpcy5fb3ZlcmxheSxcbiAgICAgIG9yaWdpbkVsZW1lbnQsXG4gICAgICB0aGlzLl9vdmVybGF5LFxuICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLW9wdGlvbi1wYW5lbF9fb3ZlcmxheS1jb250YWluZXInKSEsXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIG9wZW4vY2xvc2UgYW5pbWF0aW9uIGVuZC5cbiAgICogSW4gcmFyZSBjYXNlcyBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgICogVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgaWYgKHRoaXMub3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLm9yaWdpbkVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgIHRoaXMuZGlzcGF0Y2hPcGVuRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuaGlkZVBvcG92ZXI/LigpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuXG4gICAgdGhpcy5yZXNldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICB0aGlzLl9vdmVybGF5LnNjcm9sbFRvcCA9IDA7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hPcGVuUGFuZWxFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIFJlY2FsY3VsYXRlIHRoZSBvdmVybGF5IHBvc2l0aW9uIG9uIHNjcm9sbCBhbmQgd2luZG93IHJlc2l6ZVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIC8vIFdpdGhvdXQgY2FwdHVyZSwgb3RoZXIgc2Nyb2xsIGNvbnRleHRzIHdvdWxkIG5vdCBidWJibGUgdG8gdGhpcyBldmVudCBsaXN0ZW5lci5cbiAgICAgIC8vIENhcHR1cmUgYWxsb3dzIHVzIHRvIHJlYWN0IHRvIGFsbCBzY3JvbGwgY29udGV4dHMgaW4gdGhpcyBET00uXG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICAvLyBDbG9zZSBhdXRvY29tcGxldGUgb24gYmFja2Ryb3AgY2xpY2tcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoZXYpID0+IHRoaXMuX3BvaW50ZXJEb3duTGlzdGVuZXIoZXYpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCAoZXYpID0+IHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICfJtWRpc2FibGVkY2hhbmdlJyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlT3B0aW9uPy5kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMucmVzZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk7XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLy8gS2V5Ym9hcmQgaW50ZXJhY3Rpb25zXG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdrZXlkb3duJyxcbiAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5vcGVuZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQpLFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICAvLyBXZSBuZWVkIGtleSBldmVudCB0byBydW4gYmVmb3JlIGFueSBvdGhlciBzdWJzY3JpcHRpb24gdG8gZ3VhcmFudGVlIGEgY29ycmVjdFxuICAgICAgICAvLyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGNvbXBvbmVudHMgKG5lY2Vzc2FyeSBmb3IgdGhlICdzYmItY2hpcC1ncm91cCcgdXNlIGNhc2UpLlxuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHBvaW50ZXJkb3duIGV2ZW50IHRhcmdldCBpcyB0cmlnZ2VyZWQgb24gdGhlIG1lbnUuXG4gIHByaXZhdGUgX3BvaW50ZXJEb3duTGlzdGVuZXIgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTWVudSA9IGlzRXZlbnRPbkVsZW1lbnQodGhpcy5fb3ZlcmxheSwgZXZlbnQpO1xuICB9O1xuXG4gIC8vIElmIHRoZSBjbGljayBpcyBvdXRzaWRlIHRoZSBhdXRvY29tcGxldGUsIGNsb3NlcyB0aGUgcGFuZWwuXG4gIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ICYmXG4gICAgICAhaXNFdmVudE9uRWxlbWVudCh0aGlzLl9vdmVybGF5LCBldmVudCkgJiZcbiAgICAgICFpc0V2ZW50T25FbGVtZW50KHRoaXMub3JpZ2luRWxlbWVudCwgZXZlbnQpXG4gICAgKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX2Nsb3NlZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnb3BlbmluZycgfHwgdGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhpZ2hsaWdodCB0aGUgc2VhcmNoZWQgdGV4dCBvbiB0aGUgb3B0aW9ucy4gKi9cbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0T3B0aW9ucyhzZWFyY2hUZXJtPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHNlYXJjaFRlcm0gPT09IG51bGwgfHwgc2VhcmNoVGVybSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IG9wdGlvbi5oaWdobGlnaHQoc2VhcmNoVGVybSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgLy8gU2Nyb2xsIGFyZWFzIHdpdGhvdXQgY29udGFpbmluZyBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgcmVjZWl2ZSBmb2N1cyB3aGVuIHRhYmJpbmcgdGhyb3VnaCB0aGUgZG9jdW1lbnQuXG4gICAgLy8gSWYgdGhlcmUgYXJlIGEgbG90IG9mIG9wdGlvbnMgYW5kIHdoZW4gcHJlc3NpbmcgdGFiIGtleSwgdGhlIHNjcm9sbCBhcmVhIG9uIHNiYi1hdXRvY29tcGxldGVfX29wdGlvbnMgZ2V0cyBmb2N1cy5cbiAgICAvLyBBcyBlbGVtZW50cyBpbnNpZGUgdGhlIHBhbmVsIHNob3VsZCBuZXZlciBnZXQgZm9jdXMsIHdlIGhhdmUgdG8gYXZvaWQgdGhhdCBieSBzZXR0aW5nIHRhYmluZGV4PS0xLlxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1vcHRpb24tcGFuZWxfX292ZXJsYXktY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNiYi1vcHRpb24tcGFuZWxfX292ZXJsYXkgJHt0aGlzLm5lZ2F0aXZlXG4gICAgICAgICAgICA/ICdzYmItc2Nyb2xsYmFyLW5lZ2F0aXZlJ1xuICAgICAgICAgICAgOiAnc2JiLXNjcm9sbGJhcid9XCJcbiAgICAgICAgICByb2xlPSR7IWFyaWFSb2xlT25Ib3N0ID8gdGhpcy5wYW5lbFJvbGUgOiBub3RoaW5nfVxuICAgICAgICAgIGlkPSR7IWFyaWFSb2xlT25Ib3N0ID8gdGhpcy5vdmVybGF5SWQgOiBub3RoaW5nfVxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHt0aGlzLl9vbkFuaW1hdGlvbkVuZH1cbiAgICAgICAgICAke3JlZigob3ZlcmxheVJlZj86IEVsZW1lbnQpID0+ICh0aGlzLl9vdmVybGF5ID0gb3ZlcmxheVJlZiBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBpbnB1dEF1dG9jb21wbGV0ZTogU2JiSW5wdXRBdXRvY29tcGxldGVFdmVudDxhbnk+O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQ3NDQSxJQUFNLGlCQUFpQjtBQUV2QixJQUFhLDRCQUFiLGNBQWtELE1BQUs7Q0FHckQsSUFBVyxTQUFNO0VBQ2YsT0FBTyxLQUFLO0NBQ2Q7Q0FFQSxZQUFtQixRQUErQjtFQUNoRCxNQUFNLHFCQUFxQjtHQUFFLFNBQVM7R0FBTSxVQUFVO0VBQUksQ0FBRTtFQUM1RCxLQUFLLFVBQVU7Q0FDakI7Ozs7Ozs7O0lBU29CLG9DQUEwQjttQkFBcUIsaUJBQ25FLHVCQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjQURILG1DQUErQyxZQUVwRTs7O3lCQWdCRSxZQUFXLEdBQ1gsU0FBUSxDQUFFOzBCQVVWLFlBQVcsR0FDWCxTQUFRLENBQUU7b0NBSVYsVUFBUyxHQUNULFNBQVM7SUFBRSxXQUFXO0lBQXVCLFNBQVM7SUFBTSxNQUFNO0dBQU8sQ0FBRSxDQUFDO3dDQUk1RSxVQUFTLEdBQ1QsU0FBUztJ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
@@ -1,4 +1,4 @@
1
- import { n as SbbInputAutocompleteEvent, t as SbbAutocompleteBaseElement } from "./autocomplete-base-element-CTZEg--s.js";
1
+ import { n as SbbInputAutocompleteEvent, t as SbbAutocompleteBaseElement } from "./autocomplete-base-element-D1b0RA_u.js";
2
2
  import { SbbAutocompleteElement } from "./autocomplete/autocomplete.component.js";
3
3
  import "./autocomplete.pure.js";
4
4
  //#region src/elements/autocomplete.ts
@@ -1,3 +1,3 @@
1
- import { n as SbbInputAutocompleteEvent, t as SbbAutocompleteBaseElement } from "./autocomplete-base-element-CTZEg--s.js";
1
+ import { n as SbbInputAutocompleteEvent, t as SbbAutocompleteBaseElement } from "./autocomplete-base-element-D1b0RA_u.js";
2
2
  import { SbbAutocompleteElement } from "./autocomplete/autocomplete.component.js";
3
3
  export { SbbAutocompleteBaseElement, SbbAutocompleteElement, SbbInputAutocompleteEvent };
@@ -6,7 +6,6 @@ export declare abstract class SbbOptionBaseElement<T = string> extends SbbOption
6
6
  readonly optionselected: "optionselected";
7
7
  };
8
8
  static styles: CSSResultGroup;
9
- protected abstract optionId: string;
10
9
  /**
11
10
  * Value of the option.
12
11
  *
@@ -38,7 +37,6 @@ export declare abstract class SbbOptionBaseElement<T = string> extends SbbOption
38
37
  */
39
38
  highlight(value: string): void;
40
39
  protected selectViaUserInteraction(selected: boolean): void;
41
- connectedCallback(): void;
42
40
  requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration): void;
43
41
  protected firstUpdated(changedProperties: PropertyValues<this>): void;
44
42
  protected abstract selectByClick(event: MouseEvent): void;
@@ -1 +1 @@
1
- {"version":3,"file":"option-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/option/option/option-base-element.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAEnB,OAAO,EACP,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAIb,OAAO,EAKL,UAAU,EAIX,MAAM,eAAe,CAAC;;AAoBvB,8BAAsB,oBAAoB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,yBAE9D;IACC,gBAAuB,MAAM;;MAElB;IACX,OAAuB,MAAM,EAAE,cAAc,CAA4B;IAEzE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAEpC;;;;;OAKG;IACH,IACW,KAAK,CAAC,KAAK,EAAE,CAAC,EAUxB;IACD,IAAW,KAAK,IAAI,CAAC,CAEpB;IACD,OAAO,CAAC,MAAM,CAAkB;IAEhC,sCAAsC;IACtC,IACW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAGjC;IACD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,yFAAyF;IAChF,SAAS,CAAC,QAAQ,CAAC,iBAAiB,UAAS;IAE7C,SAAS,CAAC,QAAQ,CAAC,UAAU,SAAM;IAEnC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAG,MAAM,CAAC;IAE3C,0CAA0C;IACjC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAS;IAEnE,4CAA4C;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;IAExD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAEnD,OAAO,CAAC,aAAa,CAA0B;IAE/C,SAAS;IAsDO,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IAMP;;;;OAIG;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIrC,SAAS,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAQ3C,iBAAiB,IAAI,IAAI;IAKzB,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;cAaY,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAO9E,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAEzD,SAAS,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAKzD;;;OAGG;IACI,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAQpC,OAAO,CAAC,mBAAmB;IAI3B,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAuBtC,SAAS,CAAC,mBAAmB,IAAI,cAAc;IAwB/C,SAAS,CAAC,UAAU,IAAI,cAAc;IAItC,SAAS,CAAC,WAAW,IAAI,cAAc,GAAG,OAAO,OAAO;IAIxD,SAAS,CAAC,UAAU,IAAI,cAAc,GAAG,OAAO,OAAO;cAIpC,MAAM,IAAI,cAAc;CA2B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,2BAA2B;QACnC,cAAc,EAAE,KAAK,CAAC;KACvB;CACF"}
1
+ {"version":3,"file":"option-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/option/option/option-base-element.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAEnB,OAAO,EACP,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAIb,OAAO,EAKL,UAAU,EAIX,MAAM,eAAe,CAAC;;AAkBvB,8BAAsB,oBAAoB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,yBAE9D;IACC,gBAAuB,MAAM;;MAElB;IACX,OAAuB,MAAM,EAAE,cAAc,CAA4B;IAEzE;;;;;OAKG;IACH,IACW,KAAK,CAAC,KAAK,EAAE,CAAC,EAUxB;IACD,IAAW,KAAK,IAAI,CAAC,CAEpB;IACD,OAAO,CAAC,MAAM,CAAkB;IAEhC,sCAAsC;IACtC,IACW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAGjC;IACD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,yFAAyF;IAChF,SAAS,CAAC,QAAQ,CAAC,iBAAiB,UAAS;IAE7C,SAAS,CAAC,QAAQ,CAAC,UAAU,SAAM;IAEnC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAG,MAAM,CAAC;IAE3C,0CAA0C;IACjC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAS;IAEnE,4CAA4C;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;IAExD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAEnD,OAAO,CAAC,aAAa,CAA0B;IAE/C,SAAS;IAsDO,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IAMP;;;;OAIG;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIrC,SAAS,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAQ3C,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;cAaY,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAO9E,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAEzD,SAAS,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAKzD;;;OAGG;IACI,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAQpC,OAAO,CAAC,mBAAmB;IAI3B,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAuBtC,SAAS,CAAC,mBAAmB,IAAI,cAAc;IAwB/C,SAAS,CAAC,UAAU,IAAI,cAAc;IAItC,SAAS,CAAC,WAAW,IAAI,cAAc,GAAG,OAAO,OAAO;IAIxD,SAAS,CAAC,UAAU,IAAI,cAAc,GAAG,OAAO,OAAO;cAIpC,MAAM,IAAI,cAAc;CA2B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,2BAA2B;QACnC,cAAc,EAAE,KAAK,CAAC;KACvB;CACF"}
@@ -5,7 +5,6 @@ import { SbbDisabledMixin, SbbElement, SbbPropertyWatcherController, isAndroid,
5
5
  import { SbbIconNameMixin } from "../../icon.pure.js";
6
6
  import { MutationController } from "@lit-labs/observers/mutation-controller.js";
7
7
  //#region src/elements/option/option/option-base-element.ts
8
- var nextId = 0;
9
8
  /**
10
9
  * On Safari, the groups labels are not read by VoiceOver.
11
10
  * To solve the problem, we remove the role="group" and add an hidden span containing the group name
@@ -293,10 +292,6 @@ var SbbOptionBaseElement = (() => {
293
292
  composed: true
294
293
  }));
295
294
  }
296
- connectedCallback() {
297
- super.connectedCallback();
298
- this.id ||= `${this.optionId}-${nextId++}`;
299
- }
300
295
  requestUpdate(name, oldValue, options) {
301
296
  super.requestUpdate(name, oldValue, options);
302
297
  if (name === "disabled" || name === "disabledFromGroup") {
@@ -377,4 +372,4 @@ var SbbOptionBaseElement = (() => {
377
372
  //#endregion
378
373
  export { SbbOptionBaseElement };
379
374
 
380
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWJhc2UtZWxlbWVudC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvb3B0aW9uL29wdGlvbi9vcHRpb24tYmFzZS1lbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiQXV0b2NvbXBsZXRlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9hdXRvY29tcGxldGUucHVyZS50cyc7XG5pbXBvcnQge1xuICBpc0FuZHJvaWQsXG4gIGlzQmxpbmssXG4gIGlzU2FmYXJpLFxuICBTYmJEaXNhYmxlZE1peGluLFxuICBTYmJFbGVtZW50LFxuICBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyLFxuICBzY3JlZW5SZWFkZXJPbmx5U3R5bGVzLFxuICBzZXRPclJlbW92ZUF0dHJpYnV0ZSxcbn0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5pbXBvcnQgeyBTYmJJY29uTmFtZU1peGluIH0gZnJvbSAnLi4vLi4vaWNvbi5wdXJlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiU2VsZWN0RWxlbWVudCB9IGZyb20gJy4uLy4uL3NlbGVjdC5wdXJlLnRzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogT24gU2FmYXJpLCB0aGUgZ3JvdXBzIGxhYmVscyBhcmUgbm90IHJlYWQgYnkgVm9pY2VPdmVyLlxuICogVG8gc29sdmUgdGhlIHByb2JsZW0sIHdlIHJlbW92ZSB0aGUgcm9sZT1cImdyb3VwXCIgYW5kIGFkZCBhbiBoaWRkZW4gc3BhbiBjb250YWluaW5nIHRoZSBncm91cCBuYW1lXG4gKiBUT0RPOiBXZSBzaG91bGQgcGVyaW9kaWNhbGx5IGNoZWNrIGlmIGl0IGhhcyBiZWVuIHNvbHZlZCBhbmQsIGlmIHNvLCByZW1vdmUgdGhlIHByb3BlcnR5LlxuICovXG5jb25zdCBpbmVydEFyaWFHcm91cHMgPSBpc1NhZmFyaTtcblxuLyoqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBhdHRyaWJ1dGUgdG8gbG9vayBhdCBpZiBjb21wb25lbnQgaXMgbmVzdGVkIGluIGFuIG9wdGlvbiBncm91cCAqL1xuY29uc3Qgb3B0aW9uT2JzZXJ2ZXJDb25maWc6IE11dGF0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICBjaGlsZExpc3Q6IHRydWUsXG4gIHN1YnRyZWU6IHRydWUsXG4gIGNoYXJhY3RlckRhdGE6IHRydWUsXG59O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VCA9IHN0cmluZz4gZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFxuICBTYmJJY29uTmFtZU1peGluKFNiYkVsZW1lbnQpLFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIG9wdGlvbnNlbGVjdGVkOiAnb3B0aW9uc2VsZWN0ZWQnLFxuICB9IGFzIGNvbnN0O1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbc2NyZWVuUmVhZGVyT25seVN0eWxlc107XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IG9wdGlvbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBvcHRpb24uXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXZlbG9wZXIgbm90ZTogSW4gdGhpcyBjYXNlIHVwZGF0aW5nIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBzeW5jaHJvbm91cy5cbiAgICogRHVlIHRvIHRoaXMsIGl0IGlzIGltcGxlbWVudGVkIGFzIGEgZ2V0dGVyL3NldHRlciBhbmQgdGhlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaygpIGhhbmRsZXMgdGhlIGRpZmYgY2hlY2suXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBUKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGAke3ZhbHVlfWApO1xuICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICAvLyBOb3RpZnkgdGhlIHNiYi1zZWxlY3QgdG8gcmUtY2hlY2sgaXRzIHZhbHVlIGFnYWluc3QgdGhlIG9wdGlvbidzIG9uZS5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnybVvcHRpb252YWx1ZWNoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gKHRoaXMuX3ZhbHVlID8/IHRoaXMuZ2V0QXR0cmlidXRlKCd2YWx1ZScpKSBhcyBUO1xuICB9XG4gIHByaXZhdGUgX3ZhbHVlOiBUIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ3NlbGVjdGVkJywgdmFsdWUpO1xuICAgIHRoaXMuX3VwZGF0ZUFyaWFTZWxlY3RlZCgpO1xuICB9XG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlKCdzZWxlY3RlZCcpO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBtdXN0IGJlIHNldCBkaXNhYmxlZCBkdWUgZGlzYWJsZWQgYXR0cmlidXRlIG9uIHNiYi1vcHRncm91cC4gKi9cbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGFjY2Vzc29yIGRpc2FibGVkRnJvbUdyb3VwID0gZmFsc2U7XG5cbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGFjY2Vzc29yIGdyb3VwTGFiZWwgPSAnJztcblxuICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgbGFiZWwhOiBzdHJpbmc7XG5cbiAgLyoqIERpc2FibGUgdGhlIGhpZ2hsaWdodCBvZiB0aGUgbGFiZWwuICovXG4gIEBzdGF0ZSgpIHByb3RlY3RlZCBhY2Nlc3NvciBkaXNhYmxlTGFiZWxIaWdobGlnaHQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogVGhlIHBvcnRpb24gb2YgdGhlIGhpZ2hsaWdodGVkIGxhYmVsLiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9oaWdobGlnaHRTdHJpbmc6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2luZXJ0QXJpYUdyb3VwcyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3ByZXZpb3VzU2l6ZTogJ3MnIHwgJ20nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NsaWNrJywgKGU6IE1vdXNlRXZlbnQpID0+IHRoaXMuc2VsZWN0QnlDbGljayhlKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBNdXRhdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgICAgICBjb25maWc6IG9wdGlvbk9ic2VydmVyQ29uZmlnLFxuICAgICAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlSGlnaGxpZ2h0U3RhdGUoKTtcbiAgICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnb3B0aW9uTGFiZWxDaGFuZ2VkJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgKCkgPT4gdGhpcy5jbG9zZXN0KCdzYmItYXV0b2NvbXBsZXRlLCBzYmItYXV0b2NvbXBsZXRlLWdyaWQnKSBhcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudCxcbiAgICAgICAge1xuICAgICAgICAgIG5lZ2F0aXZlOiAoZSkgPT4gdGhpcy50b2dnbGVTdGF0ZSgnbmVnYXRpdmUnLCBlLm5lZ2F0aXZlKSxcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyPFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IHwgU2JiU2VsZWN0RWxlbWVudD4oXG4gICAgICAgIHRoaXMsXG4gICAgICAgICgpID0+IHRoaXMuY2xvc2VzdCgnc2JiLWF1dG9jb21wbGV0ZSwgc2JiLWF1dG9jb21wbGV0ZS1ncmlkLCBzYmItc2VsZWN0JyksXG4gICAgICAgIHtcbiAgICAgICAgICBzaXplOiAoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3ByZXZpb3VzU2l6ZSkge1xuICAgICAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBzaXplLSR7dGhpcy5fcHJldmlvdXNTaXplfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTaXplID0gZS5zaXplO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3ByZXZpb3VzU2l6ZSkge1xuICAgICAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGBzaXplLSR7dGhpcy5fcHJldmlvdXNTaXplfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICApLFxuICAgICk7XG5cbiAgICBpZiAoaW5lcnRBcmlhR3JvdXBzKSB7XG4gICAgICBpZiAodGhpcy5oeWRyYXRpb25SZXF1aXJlZCkge1xuICAgICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT4gKHRoaXMuX2luZXJ0QXJpYUdyb3VwcyA9IGluZXJ0QXJpYUdyb3VwcykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faW5lcnRBcmlhR3JvdXBzID0gaW5lcnRBcmlhR3JvdXBzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIG9sZDogc3RyaW5nIHwgbnVsbCxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKG5hbWUgIT09ICd2YWx1ZScgfHwgb2xkICE9PSB2YWx1ZSkge1xuICAgICAgc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG5hbWUsIG9sZCwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIaWdobGlnaHQgdGhlIGxhYmVsIG9mIHRoZSBvcHRpb25cbiAgICogQHBhcmFtIHZhbHVlIHRoZSBoaWdobGlnaHRlZCBwb3J0aW9uIG9mIHRoZSBsYWJlbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBoaWdobGlnaHQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2hpZ2hsaWdodFN0cmluZyA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbihzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgLyoqIEVtaXRzIHdoZW4gYW4gb3B0aW9uIHdhcyBzZWxlY3RlZCBieSB1c2VyLiAqL1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnb3B0aW9uc2VsZWN0ZWQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmlkIHx8PSBgJHt0aGlzLm9wdGlvbklkfS0ke25leHRJZCsrfWA7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcbiAgICBpZiAobmFtZSA9PT0gJ2Rpc2FibGVkJyB8fCBuYW1lID09PSAnZGlzYWJsZWRGcm9tR3JvdXAnKSB7XG4gICAgICB0aGlzLnRvZ2dsZVN0YXRlKCdkaXNhYmxlZCcsIHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEZyb21Hcm91cCk7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ3RhYmluZGV4JyxcbiAgICAgICAgaXNBbmRyb2lkICYmICF0aGlzLmRpc2FibGVkICYmICF0aGlzLmRpc2FibGVkRnJvbUdyb3VwID8gMCA6IG51bGwsXG4gICAgICApO1xuICAgICAgdGhpcy51cGRhdGVBcmlhRGlzYWJsZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICAvLyBJbml0IGZpcnN0IHNlbGVjdCBzdGF0ZSBiZWNhdXNlIGZhbHNlIHdvdWxkIG5vdCBjYWxsIHNldHRlciBvZiBzZWxlY3RlZCBwcm9wZXJ0eS5cbiAgICB0aGlzLl91cGRhdGVBcmlhU2VsZWN0ZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZWxlY3RCeUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZDtcblxuICBwcm90ZWN0ZWQgdXBkYXRlRGlzYWJsZUhpZ2hsaWdodChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZUxhYmVsSGlnaGxpZ2h0ID0gZGlzYWJsZWQ7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnZGlzYWJsZS1oaWdobGlnaHQnLCBkaXNhYmxlZCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgb3B0aW9uIGlzIGN1cnJlbnRseSBhY3RpdmUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHNldEFjdGl2ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2FjdGl2ZScsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVBcmlhRGlzYWJsZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYURpc2FibGVkID0gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwID8gJ3RydWUnIDogbnVsbDtcblxuICAgIC8vIExpc3RlbmVkIGJ5IGF1dG9jb21wbGV0ZVxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCfJtWRpc2FibGVkY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUFyaWFTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmludGVybmFscy5hcmlhU2VsZWN0ZWQgPSBgJHt0aGlzLnNlbGVjdGVkfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlSGlnaGxpZ2h0U3RhdGUoKTogdm9pZCB7XG4gICAgY29uc3Qgc2xvdE5vZGVzID0gQXJyYXkuZnJvbSh0aGlzLmNoaWxkTm9kZXMgPz8gW10pLmZpbHRlcihcbiAgICAgIChuKSA9PiBuLm5vZGVUeXBlICE9PSBOb2RlLkNPTU1FTlRfTk9ERSAmJiAoIShuIGluc3RhbmNlb2YgRWxlbWVudCkgfHwgbi5zbG90ICE9PSAnaWNvbicpLFxuICAgICk7XG4gICAgY29uc3QgbGFiZWxOb2RlcyA9IHNsb3ROb2Rlcy5maWx0ZXIoKGVsKSA9PiBlbC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIGFzIFRleHRbXTtcblxuICAgIC8vIERpc2FibGUgdGhlIGhpZ2hsaWdodCBpZiB0aGUgc2xvdCBjb250YWluIG1vcmUgdGhhbiBqdXN0IHRleHQgbm9kZXMuXG4gICAgLy8gV2UgbmVlZCB0byBpZ25vcmUgdGVtcGxhdGUgZWxlbWVudHMsIGFzIFNTUiBhZGRzIGEgZGVjbGFyYXRpdmUgc2hhZG93IERPTVxuICAgIC8vIGluIHRoZSBmb3JtIG9mIGEgdGVtcGxhdGUgZWxlbWVudC5cbiAgICBpZiAoXG4gICAgICBsYWJlbE5vZGVzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgc2xvdE5vZGVzLmZpbHRlcigobikgPT4gIShuIGluc3RhbmNlb2YgRWxlbWVudCkgfHwgbi5sb2NhbE5hbWUgIT09ICd0ZW1wbGF0ZScpLmxlbmd0aCAhPT1cbiAgICAgICAgbGFiZWxOb2Rlcy5sZW5ndGhcbiAgICApIHtcbiAgICAgIHRoaXMudXBkYXRlRGlzYWJsZUhpZ2hsaWdodCh0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsTm9kZXNcbiAgICAgIC5tYXAoKGwpID0+IGwud2hvbGVUZXh0KVxuICAgICAgLmZpbHRlcigobCkgPT4gbC50cmltKCkpXG4gICAgICAuam9pbignJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SGlnaGxpZ2h0ZWRMYWJlbCgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgaWYgKCF0aGlzLl9oaWdobGlnaHRTdHJpbmcgfHwgIXRoaXMuX2hpZ2hsaWdodFN0cmluZy50cmltKCkpIHtcbiAgICAgIHJldHVybiBodG1sYCR7dGhpcy5sYWJlbH1gO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoSW5kZXggPSB0aGlzLmxhYmVsIS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5faGlnaGxpZ2h0U3RyaW5nLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gaHRtbGAke3RoaXMubGFiZWx9YDtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmxhYmVsIS5zdWJzdHJpbmcoMCwgbWF0Y2hJbmRleCk7XG4gICAgY29uc3QgaGlnaGxpZ2h0ZWQgPSB0aGlzLmxhYmVsIS5zdWJzdHJpbmcoXG4gICAgICBtYXRjaEluZGV4LFxuICAgICAgbWF0Y2hJbmRleCArIHRoaXMuX2hpZ2hsaWdodFN0cmluZy5sZW5ndGgsXG4gICAgKTtcbiAgICBjb25zdCBwb3N0Zml4ID0gdGhpcy5sYWJlbCEuc3Vic3RyaW5nKG1hdGNoSW5kZXggKyB0aGlzLl9oaWdobGlnaHRTdHJpbmcubGVuZ3RoKTtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNwYW4gY2xhc3M9XCJzYmItb3B0aW9uX19sYWJlbC0taGlnaGxpZ2h0XCI+JHtwcmVmaXh9PC9zcGFuPjxzcGFuPiR7aGlnaGxpZ2h0ZWR9PC9zcGFuXG4gICAgICA+PHNwYW4gY2xhc3M9XCJzYmItb3B0aW9uX19sYWJlbC0taGlnaGxpZ2h0XCI+JHtwb3N0Zml4fTwvc3Bhbj5cbiAgICBgO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbmRlckljb24oKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxzcGFuIGNsYXNzPVwic2JiLW9wdGlvbl9faWNvblwiPiAke3RoaXMucmVuZGVySWNvblNsb3QoKX0gPC9zcGFuPmA7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVuZGVyTGFiZWwoKTogVGVtcGxhdGVSZXN1bHQgfCB0eXBlb2Ygbm90aGluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWwgJiYgIXRoaXMuZGlzYWJsZUxhYmVsSGlnaGxpZ2h0ID8gdGhpcy5nZXRIaWdobGlnaHRlZExhYmVsKCkgOiBub3RoaW5nO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbmRlclRpY2soKTogVGVtcGxhdGVSZXN1bHQgfCB0eXBlb2Ygbm90aGluZyB7XG4gICAgcmV0dXJuIG5vdGhpbmc7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItb3B0aW9uXCI+XG4gICAgICAgICR7dGhpcy5yZW5kZXJJY29uKCl9XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLW9wdGlvbl9fbGFiZWxcIj5cbiAgICAgICAgICA8c2xvdCBAc2xvdGNoYW5nZT0ke3RoaXMuaGFuZGxlSGlnaGxpZ2h0U3RhdGV9Pjwvc2xvdD5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgYXJpYS1oaWRkZW49JHtcbiAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAqIFNjcmVlbiByZWFkZXJzIHdpdGggQ2hyb21pdW0gcmVhZCB0aGUgb3B0aW9uIHR3aWNlLlxuICAgICAgICAgICAgICAgKiBXZSB0aGVyZWZvcmUgaGF2ZSB0byBoaWRlIHRoZSBvcHRpb24gZm9yIHRoZSBzY3JlZW4gcmVhZGVycy5cbiAgICAgICAgICAgICAgICogVE9ETzogUmVjaGVjayBwZXJpb2RpY2FsbHkgaWYgdGhpcyBpcyBzdGlsbCBuZWNlc3NhcnkuXG4gICAgICAgICAgICAgICAqIGh0dHBzOi8vaXNzdWVzLmNocm9taXVtLm9yZy9pc3N1ZXMvNDYwMTY1NzQxXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICBpc0JsaW5rID8gJ3RydWUnIDogbm90aGluZ1xuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgICR7dGhpcy5yZW5kZXJMYWJlbCgpfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAke3RoaXMuX2luZXJ0QXJpYUdyb3VwcyAmJiB0aGlzLmdyb3VwTGFiZWxcbiAgICAgICAgICAgID8gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4gKCR7dGhpcy5ncm91cExhYmVsfSk8L3NwYW4+YFxuICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgICR7dGhpcy5yZW5kZXJUaWNrKCl9XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEdsb2JhbEV2ZW50SGFuZGxlcnNFdmVudE1hcCB7XG4gICAgb3B0aW9uc2VsZWN0ZWQ6IEV2ZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUF5QkEsSUFBSSxTQUFTOzs7Ozs7QUFPYixJQUFNLGtCQUFrQjs7QUFHeEIsSUFBTSx1QkFBNkM7Q0FDakQsV0FBVztDQUNYLFNBQVM7Q0FDVCxlQUFlOztJQUdLLDhCQUFvQjttQkFBcUIsaUJBQzdELGlCQUFpQixVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FEUiw2QkFBeUMsWUFFOUQ7Ozs0QkFjRSxTQUFRLENBQUU7K0JBa0JWLFNBQVMsRUFBRSxNQUFNLFFBQU8sQ0FBRSxDQUFDO29DQVUz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
375
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWJhc2UtZWxlbWVudC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvb3B0aW9uL29wdGlvbi9vcHRpb24tYmFzZS1lbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiQXV0b2NvbXBsZXRlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9hdXRvY29tcGxldGUucHVyZS50cyc7XG5pbXBvcnQge1xuICBpc0FuZHJvaWQsXG4gIGlzQmxpbmssXG4gIGlzU2FmYXJpLFxuICBTYmJEaXNhYmxlZE1peGluLFxuICBTYmJFbGVtZW50LFxuICBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyLFxuICBzY3JlZW5SZWFkZXJPbmx5U3R5bGVzLFxuICBzZXRPclJlbW92ZUF0dHJpYnV0ZSxcbn0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5pbXBvcnQgeyBTYmJJY29uTmFtZU1peGluIH0gZnJvbSAnLi4vLi4vaWNvbi5wdXJlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiU2VsZWN0RWxlbWVudCB9IGZyb20gJy4uLy4uL3NlbGVjdC5wdXJlLnRzJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBncm91cHMgbGFiZWxzIGFyZSBub3QgcmVhZCBieSBWb2ljZU92ZXIuXG4gKiBUbyBzb2x2ZSB0aGUgcHJvYmxlbSwgd2UgcmVtb3ZlIHRoZSByb2xlPVwiZ3JvdXBcIiBhbmQgYWRkIGFuIGhpZGRlbiBzcGFuIGNvbnRhaW5pbmcgdGhlIGdyb3VwIG5hbWVcbiAqIFRPRE86IFdlIHNob3VsZCBwZXJpb2RpY2FsbHkgY2hlY2sgaWYgaXQgaGFzIGJlZW4gc29sdmVkIGFuZCwgaWYgc28sIHJlbW92ZSB0aGUgcHJvcGVydHkuXG4gKi9cbmNvbnN0IGluZXJ0QXJpYUdyb3VwcyA9IGlzU2FmYXJpO1xuXG4vKiogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGF0dHJpYnV0ZSB0byBsb29rIGF0IGlmIGNvbXBvbmVudCBpcyBuZXN0ZWQgaW4gYW4gb3B0aW9uIGdyb3VwICovXG5jb25zdCBvcHRpb25PYnNlcnZlckNvbmZpZzogTXV0YXRpb25PYnNlcnZlckluaXQgPSB7XG4gIGNoaWxkTGlzdDogdHJ1ZSxcbiAgc3VidHJlZTogdHJ1ZSxcbiAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJPcHRpb25CYXNlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oXG4gIFNiYkljb25OYW1lTWl4aW4oU2JiRWxlbWVudCksXG4pIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgb3B0aW9uc2VsZWN0ZWQ6ICdvcHRpb25zZWxlY3RlZCcsXG4gIH0gYXMgY29uc3Q7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtzY3JlZW5SZWFkZXJPbmx5U3R5bGVzXTtcblxuICAvKipcbiAgICogVmFsdWUgb2YgdGhlIG9wdGlvbi5cbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIERldmVsb3BlciBub3RlOiBJbiB0aGlzIGNhc2UgdXBkYXRpbmcgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHN5bmNocm9ub3VzLlxuICAgKiBEdWUgdG8gdGhpcywgaXQgaXMgaW1wbGVtZW50ZWQgYXMgYSBnZXR0ZXIvc2V0dGVyIGFuZCB0aGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKCkgaGFuZGxlcyB0aGUgZGlmZiBjaGVjay5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgYCR7dmFsdWV9YCk7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIC8vIE5vdGlmeSB0aGUgc2JiLXNlbGVjdCB0byByZS1jaGVjayBpdHMgdmFsdWUgYWdhaW5zdCB0aGUgb3B0aW9uJ3Mgb25lLlxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCfJtW9wdGlvbnZhbHVlY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiAodGhpcy5fdmFsdWUgPz8gdGhpcy5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpIGFzIFQ7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IFQgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCB2YWx1ZSk7XG4gICAgdGhpcy5fdXBkYXRlQXJpYVNlbGVjdGVkKCk7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNBdHRyaWJ1dGUoJ3NlbGVjdGVkJyk7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IG11c3QgYmUgc2V0IGRpc2FibGVkIGR1ZSBkaXNhYmxlZCBhdHRyaWJ1dGUgb24gc2JiLW9wdGdyb3VwLiAqL1xuICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgZGlzYWJsZWRGcm9tR3JvdXAgPSBmYWxzZTtcblxuICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgZ3JvdXBMYWJlbCA9ICcnO1xuXG4gIEBzdGF0ZSgpIHByb3RlY3RlZCBhY2Nlc3NvciBsYWJlbCE6IHN0cmluZztcblxuICAvKiogRGlzYWJsZSB0aGUgaGlnaGxpZ2h0IG9mIHRoZSBsYWJlbC4gKi9cbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGFjY2Vzc29yIGRpc2FibGVMYWJlbEhpZ2hsaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgcG9ydGlvbiBvZiB0aGUgaGlnaGxpZ2h0ZWQgbGFiZWwuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2hpZ2hsaWdodFN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaW5lcnRBcmlhR3JvdXBzID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfcHJldmlvdXNTaXplOiAncycgfCAnbScgfCBudWxsID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignY2xpY2snLCAoZTogTW91c2VFdmVudCkgPT4gdGhpcy5zZWxlY3RCeUNsaWNrKGUpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb250cm9sbGVyKFxuICAgICAgbmV3IE11dGF0aW9uQ29udHJvbGxlcih0aGlzLCB7XG4gICAgICAgIGNvbmZpZzogb3B0aW9uT2JzZXJ2ZXJDb25maWcsXG4gICAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVIaWdobGlnaHRTdGF0ZSgpO1xuICAgICAgICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdvcHRpb25MYWJlbENoYW5nZWQnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICAoKSA9PiB0aGlzLmNsb3Nlc3QoJ3NiYi1hdXRvY29tcGxldGUsIHNiYi1hdXRvY29tcGxldGUtZ3JpZCcpIGFzIFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50LFxuICAgICAgICB7XG4gICAgICAgICAgbmVnYXRpdmU6IChlKSA9PiB0aGlzLnRvZ2dsZVN0YXRlKCduZWdhdGl2ZScsIGUubmVnYXRpdmUpLFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgdGhpcy5hZGRDb250cm9sbGVyKFxuICAgICAgbmV3IFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXI8U2JiQXV0b2NvbXBsZXRlQmFzZUVsZW1lbnQgfCBTYmJTZWxlY3RFbGVtZW50PihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgKCkgPT4gdGhpcy5jbG9zZXN0KCdzYmItYXV0b2NvbXBsZXRlLCBzYmItYXV0b2NvbXBsZXRlLWdyaWQsIHNiYi1zZWxlY3QnKSxcbiAgICAgICAge1xuICAgICAgICAgIHNpemU6IChlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTaXplKSB7XG4gICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoYHNpemUtJHt0aGlzLl9wcmV2aW91c1NpemV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9wcmV2aW91c1NpemUgPSBlLnNpemU7XG4gICAgICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTaXplKSB7XG4gICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYHNpemUtJHt0aGlzLl9wcmV2aW91c1NpemV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIGlmIChpbmVydEFyaWFHcm91cHMpIHtcbiAgICAgIGlmICh0aGlzLmh5ZHJhdGlvblJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuaHlkcmF0aW9uQ29tcGxldGUudGhlbigoKSA9PiAodGhpcy5faW5lcnRBcmlhR3JvdXBzID0gaW5lcnRBcmlhR3JvdXBzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pbmVydEFyaWFHcm91cHMgPSBpbmVydEFyaWFHcm91cHM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgb2xkOiBzdHJpbmcgfCBudWxsLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsLFxuICApOiB2b2lkIHtcbiAgICBpZiAobmFtZSAhPT0gJ3ZhbHVlJyB8fCBvbGQgIT09IHZhbHVlKSB7XG4gICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhpZ2hsaWdodCB0aGUgbGFiZWwgb2YgdGhlIG9wdGlvblxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIGhpZ2hsaWdodGVkIHBvcnRpb24gb2YgdGhlIGxhYmVsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGhpZ2hsaWdodCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5faGlnaGxpZ2h0U3RyaW5nID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0VmlhVXNlckludGVyYWN0aW9uKHNlbGVjdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAvKiogRW1pdHMgd2hlbiBhbiBvcHRpb24gd2FzIHNlbGVjdGVkIGJ5IHVzZXIuICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdvcHRpb25zZWxlY3RlZCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuICAgIGlmIChuYW1lID09PSAnZGlzYWJsZWQnIHx8IG5hbWUgPT09ICdkaXNhYmxlZEZyb21Hcm91cCcpIHtcbiAgICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2Rpc2FibGVkJywgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwKTtcbiAgICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICAndGFiaW5kZXgnLFxuICAgICAgICBpc0FuZHJvaWQgJiYgIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZGlzYWJsZWRGcm9tR3JvdXAgPyAwIDogbnVsbCxcbiAgICAgICk7XG4gICAgICB0aGlzLnVwZGF0ZUFyaWFEaXNhYmxlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIC8vIEluaXQgZmlyc3Qgc2VsZWN0IHN0YXRlIGJlY2F1c2UgZmFsc2Ugd291bGQgbm90IGNhbGwgc2V0dGVyIG9mIHNlbGVjdGVkIHByb3BlcnR5LlxuICAgIHRoaXMuX3VwZGF0ZUFyaWFTZWxlY3RlZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbGVjdEJ5Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkO1xuXG4gIHByb3RlY3RlZCB1cGRhdGVEaXNhYmxlSGlnaGxpZ2h0KGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlTGFiZWxIaWdobGlnaHQgPSBkaXNhYmxlZDtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdkaXNhYmxlLWhpZ2hsaWdodCcsIGRpc2FibGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgY3VycmVudGx5IGFjdGl2ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2V0QWN0aXZlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnYWN0aXZlJywgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUFyaWFEaXNhYmxlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmludGVybmFscy5hcmlhRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWRGcm9tR3JvdXAgPyAndHJ1ZScgOiBudWxsO1xuXG4gICAgLy8gTGlzdGVuZWQgYnkgYXV0b2NvbXBsZXRlXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ8m1ZGlzYWJsZWRjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQXJpYVNlbGVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFTZWxlY3RlZCA9IGAke3RoaXMuc2VsZWN0ZWR9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVIaWdobGlnaHRTdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzbG90Tm9kZXMgPSBBcnJheS5mcm9tKHRoaXMuY2hpbGROb2RlcyA/PyBbXSkuZmlsdGVyKFxuICAgICAgKG4pID0+IG4ubm9kZVR5cGUgIT09IE5vZGUuQ09NTUVOVF9OT0RFICYmICghKG4gaW5zdGFuY2VvZiBFbGVtZW50KSB8fCBuLnNsb3QgIT09ICdpY29uJyksXG4gICAgKTtcbiAgICBjb25zdCBsYWJlbE5vZGVzID0gc2xvdE5vZGVzLmZpbHRlcigoZWwpID0+IGVsLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkgYXMgVGV4dFtdO1xuXG4gICAgLy8gRGlzYWJsZSB0aGUgaGlnaGxpZ2h0IGlmIHRoZSBzbG90IGNvbnRhaW4gbW9yZSB0aGFuIGp1c3QgdGV4dCBub2Rlcy5cbiAgICAvLyBXZSBuZWVkIHRvIGlnbm9yZSB0ZW1wbGF0ZSBlbGVtZW50cywgYXMgU1NSIGFkZHMgYSBkZWNsYXJhdGl2ZSBzaGFkb3cgRE9NXG4gICAgLy8gaW4gdGhlIGZvcm0gb2YgYSB0ZW1wbGF0ZSBlbGVtZW50LlxuICAgIGlmIChcbiAgICAgIGxhYmVsTm9kZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICBzbG90Tm9kZXMuZmlsdGVyKChuKSA9PiAhKG4gaW5zdGFuY2VvZiBFbGVtZW50KSB8fCBuLmxvY2FsTmFtZSAhPT0gJ3RlbXBsYXRlJykubGVuZ3RoICE9PVxuICAgICAgICBsYWJlbE5vZGVzLmxlbmd0aFxuICAgICkge1xuICAgICAgdGhpcy51cGRhdGVEaXNhYmxlSGlnaGxpZ2h0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxhYmVsID0gbGFiZWxOb2Rlc1xuICAgICAgLm1hcCgobCkgPT4gbC53aG9sZVRleHQpXG4gICAgICAuZmlsdGVyKChsKSA9PiBsLnRyaW0oKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRIaWdobGlnaHRlZExhYmVsKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBpZiAoIXRoaXMuX2hpZ2hsaWdodFN0cmluZyB8fCAhdGhpcy5faGlnaGxpZ2h0U3RyaW5nLnRyaW0oKSkge1xuICAgICAgcmV0dXJuIGh0bWxgJHt0aGlzLmxhYmVsfWA7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hJbmRleCA9IHRoaXMubGFiZWwhLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLl9oaWdobGlnaHRTdHJpbmcudG9Mb3dlckNhc2UoKSk7XG5cbiAgICBpZiAobWF0Y2hJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBodG1sYCR7dGhpcy5sYWJlbH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMubGFiZWwhLnN1YnN0cmluZygwLCBtYXRjaEluZGV4KTtcbiAgICBjb25zdCBoaWdobGlnaHRlZCA9IHRoaXMubGFiZWwhLnN1YnN0cmluZyhcbiAgICAgIG1hdGNoSW5kZXgsXG4gICAgICBtYXRjaEluZGV4ICsgdGhpcy5faGlnaGxpZ2h0U3RyaW5nLmxlbmd0aCxcbiAgICApO1xuICAgIGNvbnN0IHBvc3RmaXggPSB0aGlzLmxhYmVsIS5zdWJzdHJpbmcobWF0Y2hJbmRleCArIHRoaXMuX2hpZ2hsaWdodFN0cmluZy5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi1vcHRpb25fX2xhYmVsLS1oaWdobGlnaHRcIj4ke3ByZWZpeH08L3NwYW4+PHNwYW4+JHtoaWdobGlnaHRlZH08L3NwYW5cbiAgICAgID48c3BhbiBjbGFzcz1cInNiYi1vcHRpb25fX2xhYmVsLS1oaWdobGlnaHRcIj4ke3Bvc3RmaXh9PC9zcGFuPlxuICAgIGA7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVuZGVySWNvbigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItb3B0aW9uX19pY29uXCI+ICR7dGhpcy5yZW5kZXJJY29uU2xvdCgpfSA8L3NwYW4+YDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZW5kZXJMYWJlbCgpOiBUZW1wbGF0ZVJlc3VsdCB8IHR5cGVvZiBub3RoaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbCAmJiAhdGhpcy5kaXNhYmxlTGFiZWxIaWdobGlnaHQgPyB0aGlzLmdldEhpZ2hsaWdodGVkTGFiZWwoKSA6IG5vdGhpbmc7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVuZGVyVGljaygpOiBUZW1wbGF0ZVJlc3VsdCB8IHR5cGVvZiBub3RoaW5nIHtcbiAgICByZXR1cm4gbm90aGluZztcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1vcHRpb25cIj5cbiAgICAgICAgJHt0aGlzLnJlbmRlckljb24oKX1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItb3B0aW9uX19sYWJlbFwiPlxuICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5oYW5kbGVIaWdobGlnaHRTdGF0ZX0+PC9zbG90PlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj0ke1xuICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogU2NyZWVuIHJlYWRlcnMgd2l0aCBDaHJvbWl1bSByZWFkIHRoZSBvcHRpb24gdHdpY2UuXG4gICAgICAgICAgICAgICAqIFdlIHRoZXJlZm9yZSBoYXZlIHRvIGhpZGUgdGhlIG9wdGlvbiBmb3IgdGhlIHNjcmVlbiByZWFkZXJzLlxuICAgICAgICAgICAgICAgKiBUT0RPOiBSZWNoZWNrIHBlcmlvZGljYWxseSBpZiB0aGlzIGlzIHN0aWxsIG5lY2Vzc2FyeS5cbiAgICAgICAgICAgICAgICogaHR0cHM6Ly9pc3N1ZXMuY2hyb21pdW0ub3JnL2lzc3Vlcy80NjAxNjU3NDFcbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIGlzQmxpbmsgPyAndHJ1ZScgOiBub3RoaW5nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgJHt0aGlzLnJlbmRlckxhYmVsKCl9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICR7dGhpcy5faW5lcnRBcmlhR3JvdXBzICYmIHRoaXMuZ3JvdXBMYWJlbFxuICAgICAgICAgICAgPyBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPiAoJHt0aGlzLmdyb3VwTGFiZWx9KTwvc3Bhbj5gXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgJHt0aGlzLnJlbmRlclRpY2soKX1cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgR2xvYmFsRXZlbnRIYW5kbGVyc0V2ZW50TWFwIHtcbiAgICBvcHRpb25zZWxlY3RlZDogRXZlbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBOEJBLElBQU0sa0JBQWtCOztBQUd4QixJQUFNLHVCQUE2QztDQUNqRCxXQUFXO0NBQ1gsU0FBUztDQUNULGVBQWU7O0lBR0ssOEJBQW9CO21CQUFxQixpQkFDN0QsaUJBQWlCLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjQURSLDZCQUF5QyxZQUU5RDs7OzRCQVlFLFNBQVEsQ0FBRTsrQkFrQlYsU0FBUyxFQUFFLE1BQU0sUUFBTyxDQUFFLENBQUM7b0NBVTNCLE1BQUssQ0FBRTs2QkFFUCxNQUFLLENBQUU7d0JBRVAsTUFBSyxDQUFFO3dDQUdQLE1BQUssQ0FBRTttQ0FHUCxNQUFLLENBQUU7bUNBRVAsTUFBSyxDQUFFO0dBdkNSLGFBQUEsTUFBQSxNQUFBLHVCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsV0FBQTtLQUFBLE1BQUEsS0FBQSxVQUFBO01B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