@sbb-esta/lyne-elements 1.15.1 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,12 +22,12 @@ Lyne Design Tokens and Lyne Components are available for developers and designer
22
22
 
23
23
  ## 🔗 Packages
24
24
 
25
- | Package | Description |
26
- | ---------------------------------- | --------------------------------------------------------------------------- |
27
- | `@lyne-esta/elements` | Web components built on top of the Lyne Design System |
28
- | `@lyne-esta/elements-experimental` | Web components that do not yet align with our architecture or testing goals |
29
- | `@lyne-esta/react` | React wrappers for `@lyne-esta/elements` |
30
- | `@lyne-esta/react-experimental` | React wrappers for `@lyne-esta/elements-experimental` |
25
+ | Package | Description |
26
+ | -------------------------------------- | --------------------------------------------------------------------------- |
27
+ | `@sbb-esta/lyne-elements` | Web components built on top of the Lyne Design System |
28
+ | `@sbb-esta/lyne-elements-experimental` | Web components that do not yet align with our architecture or testing goals |
29
+ | `@sbb-esta/lyne-react` | React wrappers for `@sbb-esta/lyne-elements` |
30
+ | `@sbb-esta/lyne-react-experimental` | React wrappers for `@sbb-esta/lyne-elements-experimental` |
31
31
 
32
32
  - [NPM Packages](https://www.npmjs.com/search?q=%40sbb-esta%2Flyne-)
33
33
 
@@ -0,0 +1,44 @@
1
+ @use './mixins/scrollbar';
2
+
3
+ .sbb-scrollbar,
4
+ .sbb-scrollbar-negative,
5
+ .sbb-scrollbar-thick,
6
+ .sbb-scrollbar-thick-negative,
7
+ .sbb-scrollbar-track-visible,
8
+ .sbb-scrollbar-negative-track-visible,
9
+ .sbb-scrollbar-thick-track-visible,
10
+ .sbb-scrollbar-thick-negative-track-visible {
11
+ @include scrollbar.scrollbar-rules;
12
+ }
13
+
14
+ .sbb-scrollbar {
15
+ @include scrollbar.scrollbar-variables($size: thin, $negative: false, $track-visible: false);
16
+ }
17
+
18
+ .sbb-scrollbar-negative {
19
+ @include scrollbar.scrollbar-variables($size: thin, $negative: true, $track-visible: false);
20
+ }
21
+
22
+ .sbb-scrollbar-thick {
23
+ @include scrollbar.scrollbar-variables($size: thick, $negative: false, $track-visible: false);
24
+ }
25
+
26
+ .sbb-scrollbar-thick-negative {
27
+ @include scrollbar.scrollbar-variables($size: thick, $negative: true, $track-visible: false);
28
+ }
29
+
30
+ .sbb-scrollbar-track-visible {
31
+ @include scrollbar.scrollbar-variables($size: thin, $negative: false, $track-visible: true);
32
+ }
33
+
34
+ .sbb-scrollbar-negative-track-visible {
35
+ @include scrollbar.scrollbar-variables($size: thin, $negative: true, $track-visible: true);
36
+ }
37
+
38
+ .sbb-scrollbar-thick-track-visible {
39
+ @include scrollbar.scrollbar-variables($size: thick, $negative: false, $track-visible: true);
40
+ }
41
+
42
+ .sbb-scrollbar-thick-negative-track-visible {
43
+ @include scrollbar.scrollbar-variables($size: thick, $negative: true, $track-visible: true);
44
+ }
@@ -7,4 +7,5 @@
7
7
  @use './animation';
8
8
  @use './layout';
9
9
  @use './lists';
10
+ @use './scrollbar';
10
11
  @use './table';
@@ -42888,6 +42888,26 @@
42888
42888
  }
42889
42889
  }
42890
42890
  },
42891
+ {
42892
+ "kind": "method",
42893
+ "name": "_patchInputValue",
42894
+ "privacy": "private",
42895
+ "return": {
42896
+ "type": {
42897
+ "text": "void"
42898
+ }
42899
+ }
42900
+ },
42901
+ {
42902
+ "kind": "method",
42903
+ "name": "_unpatchInputValue",
42904
+ "privacy": "private",
42905
+ "return": {
42906
+ "type": {
42907
+ "text": "void"
42908
+ }
42909
+ }
42910
+ },
42891
42911
  {
42892
42912
  "kind": "method",
42893
42913
  "name": "_checkAndUpdateInputEmpty",
@@ -68,6 +68,8 @@ export declare class SbbFormFieldElement extends SbbFormFieldElement_base {
68
68
  private _syncLabelInputReferences;
69
69
  private _registerInputListener;
70
70
  private _getInputForm;
71
+ private _patchInputValue;
72
+ private _unpatchInputValue;
71
73
  private _checkAndUpdateInputEmpty;
72
74
  private _isInputEmpty;
73
75
  private _isInputValueEmpty;
@@ -1 +1 @@
1
- {"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../../../../src/elements/form-field/form-field/form-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAY,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC9F,OAAO,EAAQ,UAAU,EAAW,MAAM,KAAK,CAAC;AAchD,OAAO,eAAe,CAAC;;AAOvB;;;;;;;;GAQG;AACH,qBAGM,mBAAoB,SAAQ,wBAA+C;IAC/E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAmC;IAEjF,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAItC;IAEF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA6B;IAEpE,OAAO,CAAC,QAAQ,CAAC,oCAAoC,CAKnD;IAEF,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAQhD;IAEF;;;;OAIG;IACH,SACgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAU;IAExD,+CAA+C;IAC/C,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C,mCAAmC;IACnC,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAO;IAEzE,0DAA0D;IAC1D,SAEgB,UAAU,EAAE,OAAO,CAAS;IAE5C;;+EAE2E;IAC3E,SAA6C,KAAK,EAAE,SAAS,GAAG,UAAU,CAAa;IAEvF,wFAAwF;IACxF,SAEgB,WAAW,EAAE,OAAO,CAAS;IAE7C,4FAA4F;IAC5F,SAEgB,aAAa,EAAE,OAAO,CAAS;IAE/C,qDAAqD;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEzD,oEAAoE;IACpE,OAAO,CAAC,6BAA6B,CAAC,CAAgB;IAEtD,8CAA8C;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkE;IAElG,+CAA+C;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAEpD,iCAAiC;IACjC,IAAW,YAAY,IAAI,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS,CAExF;IAED,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,SAAS,CAAmC;IAEpD;;OAEG;IACH,OAAO,CAAC,2BAA2B,CAM1B;IAET,OAAO,CAAC,qBAAqB,CAAyB;IAEtC,iBAAiB,IAAI,IAAI;cAStB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ5D,oBAAoB,IAAI,IAAI;IAM5C,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,yBAAyB;IA4BjC,OAAO,CAAC,sBAAsB;IAuD9B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,qBAAqB;IAiB7B,qFAAqF;IAC9E,KAAK,IAAI,IAAI;IAIpB,4FAA4F;IACrF,KAAK,IAAI,IAAI;IAQpB;;;OAGG;IACI,eAAe,IAAI,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS;IAIxF,OAAO,CAAC,aAAa;cAMF,MAAM,IAAI,cAAc;CAmC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,mBAAmB,CAAC;KACvC;CACF"}
1
+ {"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../../../../src/elements/form-field/form-field/form-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAY,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC9F,OAAO,EAAQ,UAAU,EAAW,MAAM,KAAK,CAAC;AAchD,OAAO,eAAe,CAAC;;AASvB;;;;;;;;GAQG;AACH,qBAGM,mBAAoB,SAAQ,wBAA+C;IAC/E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAmC;IAEjF,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAItC;IAEF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA6B;IAEpE,OAAO,CAAC,QAAQ,CAAC,oCAAoC,CAKnD;IAEF,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAQhD;IAEF;;;;OAIG;IACH,SACgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAU;IAExD,+CAA+C;IAC/C,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C,mCAAmC;IACnC,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAO;IAEzE,0DAA0D;IAC1D,SAEgB,UAAU,EAAE,OAAO,CAAS;IAE5C;;+EAE2E;IAC3E,SAA6C,KAAK,EAAE,SAAS,GAAG,UAAU,CAAa;IAEvF,wFAAwF;IACxF,SAEgB,WAAW,EAAE,OAAO,CAAS;IAE7C,4FAA4F;IAC5F,SAEgB,aAAa,EAAE,OAAO,CAAS;IAE/C,qDAAqD;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEzD,oEAAoE;IACpE,OAAO,CAAC,6BAA6B,CAAC,CAAgB;IAEtD,8CAA8C;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkE;IAElG,+CAA+C;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAEpD,iCAAiC;IACjC,IAAW,YAAY,IAAI,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS,CAExF;IAED,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,SAAS,CAAmC;IAEpD;;OAEG;IACH,OAAO,CAAC,2BAA2B,CAM1B;IAET,OAAO,CAAC,qBAAqB,CAAyB;IAEtC,iBAAiB,IAAI,IAAI;cAStB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ5D,oBAAoB,IAAI,IAAI;IAS5C,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,yBAAyB;IA4BjC,OAAO,CAAC,sBAAsB;IAyD9B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,qBAAqB;IAiB7B,qFAAqF;IAC9E,KAAK,IAAI,IAAI;IAIpB,4FAA4F;IACrF,KAAK,IAAI,IAAI;IAQpB;;;OAGG;IACI,eAAe,IAAI,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS;IAIxF,OAAO,CAAC,aAAa;cAMF,MAAM,IAAI,cAAc;CAmC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,mBAAmB,CAAC;KACvC;CACF"}
@@ -539,6 +539,7 @@ const style = css`@charset "UTF-8";
539
539
  let nextId = 0;
540
540
  let nextFormFieldErrorId = 0;
541
541
  const supportedPopupTagNames = ["sbb-autocomplete", "sbb-autocomplete-grid", "sbb-select"];
542
+ const patchedInputs = /* @__PURE__ */ new WeakMap();
542
543
  let SbbFormFieldElement = (() => {
543
544
  var _errorSpace_accessor_storage, _optional_accessor_storage, _size_accessor_storage, _borderless_accessor_storage, _width_accessor_storage, _hiddenLabel_accessor_storage, _floatingLabel_accessor_storage, __errorElements_accessor_storage, __input_accessor_storage, __label_accessor_storage, _a;
544
545
  let _classDecorators = [customElement("sbb-form-field"), slotState()];
@@ -726,10 +727,13 @@ let SbbFormFieldElement = (() => {
726
727
  }
727
728
  }
728
729
  disconnectedCallback() {
729
- var _a2;
730
+ var _a2, _b;
730
731
  super.disconnectedCallback();
731
732
  (_a2 = this._formFieldAttributeObserver) == null ? void 0 : _a2.disconnect();
732
733
  this._inputAbortController.abort();
734
+ if (((_b = this._input) == null ? void 0 : _b.localName) === "input") {
735
+ this._unpatchInputValue();
736
+ }
733
737
  }
734
738
  _onPopupOpen({ target }) {
735
739
  if (supportedPopupTagNames.includes(target.localName)) {
@@ -769,8 +773,12 @@ let SbbFormFieldElement = (() => {
769
773
  */
770
774
  _onSlotInputChange(event) {
771
775
  var _a2, _b;
772
- this._input = event.target.assignedElements().find((e) => this._supportedInputElements.includes(e.localName));
776
+ const newInput = event.target.assignedElements().find((e) => this._supportedInputElements.includes(e.localName));
773
777
  this._assignSlots();
778
+ if (this._input && this._input.localName === "input" && newInput !== this._input) {
779
+ this._unpatchInputValue();
780
+ }
781
+ this._input = newInput;
774
782
  if (!this._input) {
775
783
  return;
776
784
  }
@@ -825,7 +833,9 @@ let SbbFormFieldElement = (() => {
825
833
  signal: this._inputAbortController.signal
826
834
  });
827
835
  let inputFocusElement = this._input;
828
- if (this._input.localName === "sbb-select") {
836
+ if (this._input.localName === "input") {
837
+ this._patchInputValue();
838
+ } else if (this._input.localName === "sbb-select") {
829
839
  this._input.addEventListener("stateChange", () => this._checkAndUpdateInputEmpty(), {
830
840
  signal: this._inputAbortController.signal
831
841
  });
@@ -848,6 +858,36 @@ let SbbFormFieldElement = (() => {
848
858
  }
849
859
  return (_a2 = this._input) == null ? void 0 : _a2.closest("form");
850
860
  }
861
+ // We need to patch the value property of the HTMLInputElement in order
862
+ // to be able to reset the floating label in the empty state.
863
+ _patchInputValue() {
864
+ const inputElement = this._input;
865
+ const originalDescriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(inputElement), "value");
866
+ if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.get) {
867
+ return;
868
+ }
869
+ patchedInputs.set(inputElement, originalDescriptor);
870
+ const { get: getter, set: setter } = originalDescriptor;
871
+ const checkAndUpdateInputEmpty = () => this._checkAndUpdateInputEmpty();
872
+ Object.defineProperty(inputElement, "value", {
873
+ ...originalDescriptor,
874
+ get() {
875
+ return getter.call(this);
876
+ },
877
+ set(newValue) {
878
+ setter.call(this, newValue);
879
+ checkAndUpdateInputEmpty();
880
+ }
881
+ });
882
+ }
883
+ _unpatchInputValue() {
884
+ const inputElement = this._input;
885
+ const originalDescriptor = patchedInputs.get(inputElement);
886
+ if (originalDescriptor) {
887
+ Object.defineProperty(inputElement, "value", originalDescriptor);
888
+ patchedInputs.delete(inputElement);
889
+ }
890
+ }
851
891
  _checkAndUpdateInputEmpty() {
852
892
  var _a2;
853
893
  this.toggleAttribute("data-input-empty", this._floatingLabelSupportedInputElements.includes((_a2 = this._input) == null ? void 0 : _a2.localName) && this._isInputEmpty());
@@ -1021,4 +1061,4 @@ let SbbFormFieldElement = (() => {
1021
1061
  export {
1022
1062
  SbbFormFieldElement
1023
1063
  };
1024
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGlzU2VydmVyLCB0eXBlIFByb3BlcnR5VmFsdWVzLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYklucHV0TW9kYWxpdHkgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUsIHNsb3RTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpc0ZpcmVmb3gsIHNldE9yUmVtb3ZlQXR0cmlidXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgaTE4bk9wdGlvbmFsIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluLCBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTZWxlY3RFbGVtZW50IH0gZnJvbSAnLi4vLi4vc2VsZWN0LmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZm9ybS1maWVsZC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2ljb24uanMnO1xuXG5sZXQgbmV4dElkID0gMDtcbmxldCBuZXh0Rm9ybUZpZWxkRXJyb3JJZCA9IDA7XG5cbmNvbnN0IHN1cHBvcnRlZFBvcHVwVGFnTmFtZXMgPSBbJ3NiYi1hdXRvY29tcGxldGUnLCAnc2JiLWF1dG9jb21wbGV0ZS1ncmlkJywgJ3NiYi1zZWxlY3QnXTtcblxuLyoqXG4gKiBJdCB3cmFwcyBhbiBpbnB1dCBlbGVtZW50IGFkZGluZyBsYWJlbCwgZXJyb3JzLCBpY29uLCBldGMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpbnB1dC9zZWxlY3Qgb3IgYSBzdXBwb3J0ZWQgbm9uLW5hdGl2ZSBlbGVtZW50LlxuICogQHNsb3QgbGFiZWwgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhIGxhYmVsLlxuICogQHNsb3QgcHJlZml4IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaWNvbiBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBpbnB1dC5cbiAqIEBzbG90IHN1ZmZpeCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGljb24gb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGlucHV0LlxuICogQHNsb3QgZXJyb3IgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBlcnJvci5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWZvcm0tZmllbGQnKVxuQHNsb3RTdGF0ZSgpXG5jbGFzcyBTYmJGb3JtRmllbGRFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWROYXRpdmVJbnB1dEVsZW1lbnRzID0gWydpbnB1dCcsICdzZWxlY3QnLCAndGV4dGFyZWEnXTtcbiAgLy8gTGlzdCBvZiBzdXBwb3J0ZWQgZWxlbWVudCBzZWxlY3RvcnMgaW4gdW5uYW1lZCBzbG90XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1cHBvcnRlZElucHV0RWxlbWVudHMgPSBbXG4gICAgLi4udGhpcy5fc3VwcG9ydGVkTmF0aXZlSW5wdXRFbGVtZW50cyxcbiAgICAnc2JiLXNlbGVjdCcsXG4gICAgJ3NiYi1zbGlkZXInLFxuICBdO1xuICAvLyBMaXN0IG9mIGVsZW1lbnRzIHRoYXQgc2hvdWxkIG5vdCBmb2N1cyBpbnB1dCBvbiBjbGlja1xuICBwcml2YXRlIHJlYWRvbmx5IF9leGNsdWRlZEZvY3VzRWxlbWVudHMgPSBbJ2J1dHRvbicsICdzYmItcG9wb3ZlciddO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dEVsZW1lbnRzID0gW1xuICAgICdpbnB1dCcsXG4gICAgJ3NlbGVjdCcsXG4gICAgJ3NiYi1zZWxlY3QnLFxuICAgICd0ZXh0YXJlYScsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmxvYXRpbmdMYWJlbFN1cHBvcnRlZElucHV0VHlwZXMgPSBbXG4gICAgJ2VtYWlsJyxcbiAgICAnbnVtYmVyJyxcbiAgICAncGFzc3dvcmQnLFxuICAgICdzZWFyY2gnLFxuICAgICd0ZWwnLFxuICAgICd0ZXh0JyxcbiAgICAndXJsJyxcbiAgXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXNlcnZlIHNwYWNlIGZvciBhbiBlcnJvciBtZXNzYWdlLlxuICAgKiBgbm9uZWAgZG9lcyBub3QgcmVzZXJ2ZSBhbnkgc3BhY2UuXG4gICAqIGByZXNlcnZlYCBkb2VzIHJlc2VydmUgb25lIHJvdyBmb3IgYW4gZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Vycm9yLXNwYWNlJywgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZXJyb3JTcGFjZTogJ25vbmUnIHwgJ3Jlc2VydmUnID0gJ25vbmUnO1xuXG4gIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5wdXQgaXMgb3B0aW9uYWwuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBvcHRpb25hbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsIG9yIG0uICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdsJyB8ICdtJyB8ICdzJyA9ICdtJztcblxuICAvKiogV2hldGhlciB0byBkaXNwbGF5IHRoZSBmb3JtIGZpZWxkIHdpdGhvdXQgYSBib3JkZXIuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBib3JkZXJsZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBjb21wb25lbnQ6XG4gICAqIC0gYGRlZmF1bHRgOiB0aGUgY29tcG9uZW50IGhhcyBkZWZpbmVkIHdpZHRoIGFuZCBtaW4td2lkdGg7XG4gICAqIC0gYGNvbGxhcHNlYDogdGhlIGNvbXBvbmVudCBhZGFwdHMgaXRzZWxmIHRvIGl0cyBpbm5lciBpbnB1dCBjb250ZW50LiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciB3aWR0aDogJ2RlZmF1bHQnIHwgJ2NvbGxhcHNlJyA9ICdkZWZhdWx0JztcblxuICAvKiogV2hldGhlciB0byB2aXN1YWxseSBoaWRlIHRoZSBsYWJlbC4gSWYgaGlkZGVuLCBzY3JlZW4gcmVhZGVycyB3aWxsIHN0aWxsIHJlYWQgaXQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoaWRkZW4tbGFiZWwnLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBoaWRkZW5MYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgZmxvYXQuIElmIGFjdGl2YXRlZCwgdGhlIHBsYWNlaG9sZGVyIG9mIHRoZSBpbnB1dCBpcyBoaWRkZW4uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmbG9hdGluZy1sYWJlbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGZsb2F0aW5nTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGdldCB0aGUgYGVycm9yYCBzbG90LiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9lcnJvckVsZW1lbnRzOiBFbGVtZW50W10gPSBbXTtcblxuICAvKiogT3JpZ2luYWwgYXJpYS1kZXNjcmliZWRieSB2YWx1ZSBvZiB0aGUgc2xvdHRlZCBpbnB1dCBlbGVtZW50LiAqL1xuICBwcml2YXRlIF9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5Pzogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzbG90dGVkIGlucHV0IGVsZW1lbnQuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2lucHV0ITogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2xvdHRlZCBsYWJlbCBlbGVtZW50cy4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfbGFiZWwhOiBIVE1MTGFiZWxFbGVtZW50O1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnQgPSBuZXcgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gdGhlIGNoYW5nZXMgb24gYHJlYWRvbmx5YCBhbmQgYGRpc2FibGVkYCBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YC5cbiAgICovXG4gIHByaXZhdGUgX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICAgIGlmIChtdXRhdGlvbnMuc29tZSgobSkgPT4gbS50eXBlID09PSAnYXR0cmlidXRlcycpKSB7XG4gICAgICAgICAgdGhpcy5fcmVhZElucHV0U3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICA6IG51bGw7XG5cbiAgcHJpdmF0ZSBfaW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignd2lsbE9wZW4nLCAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+IHRoaXMuX29uUG9wdXBPcGVuKGUpLCB7IHNpZ25hbCB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2RpZENsb3NlJywgKGU6IEN1c3RvbUV2ZW50PHZvaWQ+KSA9PiB0aGlzLl9vblBvcHVwQ2xvc2UoZSksIHsgc2lnbmFsIH0pO1xuICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpO1xuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gIH1cblxuICBwcml2YXRlIF9vblBvcHVwT3Blbih7IHRhcmdldCB9OiBDdXN0b21FdmVudDx2b2lkPik6IHZvaWQge1xuICAgIGlmIChzdXBwb3J0ZWRQb3B1cFRhZ05hbWVzLmluY2x1ZGVzKCh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSkpIHtcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWhhcy1wb3B1cC1vcGVuJywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25Qb3B1cENsb3NlKHsgdGFyZ2V0IH06IEN1c3RvbUV2ZW50PHZvaWQ+KTogdm9pZCB7XG4gICAgaWYgKHN1cHBvcnRlZFBvcHVwVGFnTmFtZXMuaW5jbHVkZXMoKHRhcmdldCBhcyBIVE1MRWxlbWVudCkubG9jYWxOYW1lKSkge1xuICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtaGFzLXBvcHVwLW9wZW4nKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVXcmFwcGVyQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzQnV0dG9uT3JQb3B1cChldmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faW5wdXQ/LmxvY2FsTmFtZSA9PT0gJ3NiYi1zZWxlY3QnKSB7XG4gICAgICB0aGlzLl9pbnB1dC5jbGljaygpO1xuICAgICAgdGhpcy5faW5wdXQuZm9jdXMoKTtcbiAgICB9IGVsc2UgaWYgKChldmVudC50YXJnZXQgYXMgRWxlbWVudCkubG9jYWxOYW1lICE9PSAnbGFiZWwnKSB7XG4gICAgICB0aGlzLl9pbnB1dD8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0J1dHRvbk9yUG9wdXAoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGV2ZW50XG4gICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgIC5zb21lKFxuICAgICAgICAoZWwpID0+XG4gICAgICAgICAgKGVsIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50ICYmIGVsLmdldEF0dHJpYnV0ZSgncm9sZScpID09PSAnYnV0dG9uJykgfHxcbiAgICAgICAgICB0aGlzLl9leGNsdWRlZEZvY3VzRWxlbWVudHMuaW5jbHVkZXMoKGVsIGFzIEhUTUxFbGVtZW50KS5sb2NhbE5hbWUpLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uU2xvdExhYmVsQ2hhbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGxhYmVscyA9IEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsKCdsYWJlbCcpKTtcbiAgICBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFViAmJiBsYWJlbHMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgRGV0ZWN0ZWQgbW9yZSB0aGFuIG9uZSBsYWJlbCBpbiBzYmItZm9ybS1maWVsZCMke3RoaXMuaWR9LiBPbmx5IG9uZSBsYWJlbCBpcyBzdXBwb3J0ZWQuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX2xhYmVsID0gbGFiZWxzWzBdO1xuICAgIHRoaXMuX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBhc3NpZ24gdGhlIGF0dHJpYnV0ZXMgb2YgYDxpbnB1dD5gIHRvIGBfaWRgIGFuZCBgX2lucHV0YCBhbmQgdG8gb2JzZXJ2ZSB0aGUgbmF0aXZlIHJlYWRvbmx5IGFuZCBkaXNhYmxlZCBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25TbG90SW5wdXRDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5faW5wdXQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTbG90RWxlbWVudClcbiAgICAgIC5hc3NpZ25lZEVsZW1lbnRzKClcbiAgICAgIC5maW5kKChlKTogZSBpcyBIVE1MRWxlbWVudCA9PiB0aGlzLl9zdXBwb3J0ZWRJbnB1dEVsZW1lbnRzLmluY2x1ZGVzKGUubG9jYWxOYW1lKSk7XG4gICAgdGhpcy5fYXNzaWduU2xvdHMoKTtcblxuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5ID0gdGhpcy5faW5wdXQuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jyk7XG4gICAgdGhpcy5fYXBwbHlBcmlhRGVzY3JpYmVkYnkoKTtcbiAgICB0aGlzLl9yZWFkSW5wdXRTdGF0ZSgpO1xuICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpO1xuXG4gICAgaWYgKHRoaXMuX2lucHV0LmxvY2FsTmFtZSA9PT0gJ3RleHRhcmVhJykge1xuICAgICAgdGhpcy5faW5wdXQuc2V0QXR0cmlidXRlKCdyb3dzJywgdGhpcy5faW5wdXQuZ2V0QXR0cmlidXRlKCdyb3dzJykgfHwgJzMnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyPy5vYnNlcnZlKHRoaXMuX2lucHV0LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3JlYWRvbmx5JywgJ2Rpc2FibGVkJywgJ2NsYXNzJywgJ2RhdGEtc2JiLWludmFsaWQnXSxcbiAgICB9KTtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZGF0YS1pbnB1dC10eXBlJywgdGhpcy5faW5wdXQubG9jYWxOYW1lKTtcbiAgICB0aGlzLl9zeW5jTGFiZWxJbnB1dFJlZmVyZW5jZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0IHx8ICF0aGlzLl9sYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdXBwb3J0ZWROYXRpdmVJbnB1dEVsZW1lbnRzLmluY2x1ZGVzKHRoaXMuX2lucHV0LmxvY2FsTmFtZSkpIHtcbiAgICAgIC8vIEZvciBuYXRpdmUgaW5wdXQgZWxlbWVudHMgd2UgdXNlIHRoZSBgZm9yYCBhdHRyaWJ1dGUgb24gdGhlIGxhYmVsIHRvIHJlZmVyZW5jZSB0aGUgaW5wdXRcbiAgICAgIC8vIHZpYSBpZCByZWZlcmVuY2UuXG4gICAgICBpZiAoIXRoaXMuX2lucHV0LmlkKSB7XG4gICAgICAgIHRoaXMuX2lucHV0LmlkID0gYHNiYi1mb3JtLWZpZWxkLWlucHV0LSR7bmV4dElkKyt9YDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbGFiZWwuaHRtbEZvciA9IHRoaXMuX2lucHV0LmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb3Igbm9uLW5hdGl2ZSBpbnB1dCBlbGVtZW50cywgdGhhdCBkbyBub3Qgc3VwcG9ydCByZWZlcmVuY2VzIHZpYSB0aGUgbGFiZWwgZm9yIGF0dHJpYnV0ZSxcbiAgICAgIC8vIHdlIHVzZSBhcmlhLWxhYmVsbGVkYnkgb24gdGhlIGlucHV0IGVsZW1lbnQgdG8gcmVmZXJlbmNlIHRoZSBsYWJlbCBlbGVtZW50IHZpYSBpZC5cbiAgICAgIGlmICghdGhpcy5fbGFiZWwuaWQpIHtcbiAgICAgICAgdGhpcy5fbGFiZWwuaWQgPSBgc2JiLWZvcm0tZmllbGQtbGFiZWwtJHtuZXh0SWQrK31gO1xuICAgICAgfVxuICAgICAgY29uc3QgbGFiZWxsZWRieSA9XG4gICAgICAgIHRoaXMuX2lucHV0XG4gICAgICAgICAgLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JylcbiAgICAgICAgICA/LnNwbGl0KCcgJylcbiAgICAgICAgICAuZmlsdGVyKChsKSA9PiAhIWwgJiYgbCAhPT0gdGhpcy5fbGFiZWwhLmlkKSA/PyBbXTtcbiAgICAgIHRoaXMuX2lucHV0LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JywgWy4uLmxhYmVsbGVkYnksIHRoaXMuX2xhYmVsLmlkXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG5cbiAgICAvLyBUaW1lb3V0IG5lZWRlZCB0byBoYXZlIHZhbHVlIHVwZGF0ZWRcbiAgICB0aGlzLl9nZXRJbnB1dEZvcm0oKT8uYWRkRXZlbnRMaXN0ZW5lcigncmVzZXQnLCAoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVzZXQoKSksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5faW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgbGV0IGlucHV0Rm9jdXNFbGVtZW50ID0gdGhpcy5faW5wdXQ7XG5cbiAgICBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlQ2hhbmdlJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCksIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KTtcblxuICAgICAgaW5wdXRGb2N1c0VsZW1lbnQgPSAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuaW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIGlucHV0Rm9jdXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnZm9jdXNpbicsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWlucHV0LWZvY3VzZWQnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgJ2RhdGEtZm9jdXMtb3JpZ2luJyxcbiAgICAgICAgICAoc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLm1vc3RSZWNlbnRNb2RhbGl0eSBhcyBTYmJJbnB1dE1vZGFsaXR5KSA/PyAnJyxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaW5wdXRGb2N1c0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdmb2N1c291dCcsXG4gICAgICAoKSA9PlxuICAgICAgICBbJ2RhdGEtZm9jdXMtb3JpZ2luJywgJ2RhdGEtaW5wdXQtZm9jdXNlZCddLmZvckVhY2goKG5hbWUpID0+IHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpKSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRJbnB1dEZvcm0oKTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX2lucHV0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCB0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXQuZm9ybTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0Py5jbG9zZXN0KCdmb3JtJyk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1pbnB1dC1lbXB0eScsXG4gICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cy5pbmNsdWRlcyh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lIGFzIHN0cmluZykgJiZcbiAgICAgICAgdGhpcy5faXNJbnB1dEVtcHR5KCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRFbXB0eSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRUeXBlcy5pbmNsdWRlcyh0aGlzLl9pbnB1dC50eXBlKSAmJlxuICAgICAgICB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2lucHV0LnNlbGVjdGVkT3B0aW9ucz8uaXRlbSgwKT8ubGFiZWw/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHJldHVybiAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuZ2V0RGlzcGxheVZhbHVlKCk/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRWYWx1ZUVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuX2lucHV0IGFzIHsgdmFsdWU6IHN0cmluZyB9KS52YWx1ZTtcbiAgICByZXR1cm4gWycnLCB1bmRlZmluZWQsIG51bGxdLmluY2x1ZGVzKHZhbHVlKSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnblNsb3RzKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnbGFiZWw6bm90KFtzbG90XSknKS5mb3JFYWNoKChlKSA9PiBlLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdsYWJlbCcpKTtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NiYi1mb3JtLWVycm9yOm5vdChbc2xvdF0pJykuZm9yRWFjaCgoZSkgPT5cbiAgICAgIGUuc2V0QXR0cmlidXRlKCdzbG90JywgJ2Vycm9yJyksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRJbnB1dFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtcmVhZG9ubHknLCB0aGlzLl9pbnB1dC5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGVkJywgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLWludmFsaWQnLFxuICAgICAgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJykgfHxcbiAgICAgICAgdGhpcy5faW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzYmItaW52YWxpZCcpIHx8XG4gICAgICAgICh0aGlzLl9pbnB1dC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXRvdWNoZWQnKSAmJlxuICAgICAgICAgIHRoaXMuX2lucHV0LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBzZXQgdGhlIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlIGZvciB0aGUgc2xvdHRlZCBpbnB1dCByZWZlcmVuY2luZyBhdmFpbGFibGUgPHNiYi1mb3JtLWVycm9yPiBpbnN0YW5jZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RFcnJvckNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9lcnJvckVsZW1lbnRzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKTtcblxuICAgIGZvciAoY29uc3QgZWwgb2YgdGhpcy5fZXJyb3JFbGVtZW50cykge1xuICAgICAgLy8gQWx0aG91Z2ggYSBmb3JtIGVycm9yIGFzc2lnbnMgYW4gaWQgaXRzZWxmLCB3ZSBuZWVkIHRvIGJlIGVhcmxpZXIgYnkgY3JlYXRpbmcgb25lIGhlcmVcbiAgICAgIGlmICghZWwuaWQpIHtcbiAgICAgICAgZWwuaWQgPSBgc2JiLWZvcm0tZmllbGQtZXJyb3ItJHsrK25leHRGb3JtRmllbGRFcnJvcklkfWA7XG4gICAgICB9XG4gICAgICBpZiAoIWVsLnJvbGUpIHtcbiAgICAgICAgLy8gSW5zdGVhZCBvZiBkZWZpbmluZyBhIGNvbnRhaW5lciB3aXRoIGFuIGFyaWEtbGl2ZSByZWdpb24gYXMgZXhwZWN0ZWQsIHdlIGhhZCB0byBjaGFuZ2VcbiAgICAgICAgLy8gc2V0dGluZyBpdCBmb3IgZXZlcnkgc2xvdHRlZCBlbGVtZW50IHRvIHByb3Blcmx5IHdvcmsgaW4gYWxsIGJyb3dzZXJzIGFuZCBzY3JlZW4gcmVhZGVyIGNvbWJpbmF0aW9ucy5cbiAgICAgICAgZWwucm9sZSA9ICdzdGF0dXMnO1xuICAgICAgICBpZiAoaXNGaXJlZm94KSB7XG4gICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3N0YXR1cycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2FwcGx5QXJpYURlc2NyaWJlZGJ5KCk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaGFzLWVycm9yJywgISF0aGlzLl9lcnJvckVsZW1lbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUFyaWFEZXNjcmliZWRieSgpOiB2b2lkIHtcbiAgICBjb25zdCBpZHMgPSBbXTtcblxuICAgIGlmICh0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5KSB7XG4gICAgICBpZHMucHVzaCh0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXJyb3JFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2Vycm9yRWxlbWVudHMuZm9yRWFjaCgoZSkgPT4gaWRzLnB1c2goZS5pZCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGFyaWFEZXNjcmliZWRieSA9IGlkcy5qb2luKCcgJyk7XG4gICAgaWYgKHRoaXMuX2lucHV0KSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLl9pbnB1dCwgJ2FyaWEtZGVzY3JpYmVkYnknLCBhcmlhRGVzY3JpYmVkYnkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBNYW51YWxseSByZXNldCB0aGUgZm9ybSBmaWVsZC4gQ3VycmVudGx5LCB0aGlzIG9ubHkgcmVzZXRzIHRoZSBmbG9hdGluZyBsYWJlbC4gKi9cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICB9XG5cbiAgLyoqIE1hbnVhbGx5IGNsZWFycyB0aGUgaW5wdXQgdmFsdWUuIEl0IG9ubHkgd29ya3MgZm9yIGlucHV0cywgc2VsZWN0cyBhcmUgbm90IHN1cHBvcnRlZC4gKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICgodGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpICE9PSAnaW5wdXQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgICh0aGlzLl9pbnB1dCBhcyB7IHZhbHVlOiBzdHJpbmcgfSkudmFsdWUgPSAnJztcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlICdpbnB1dEVsZW1lbnQnIHByb3BlcnR5IGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBnZXRJbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dDtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LihcbiAgICAgICdzYmItZm9ybS1lcnJvcixzYmItbWluaS1idXR0b24sc2JiLXBvcG92ZXItdHJpZ2dlcixzYmItZm9ybS1maWVsZC1jbGVhcixzYmItZGF0ZXBpY2tlci1uZXh0LWRheSxzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXksc2JiLWRhdGVwaWNrZXItdG9nZ2xlLHNiYi1zZWxlY3Qsc2JiLWF1dG9jb21wbGV0ZSxzYmItYXV0b2NvbXBsZXRlLWdyaWQnLFxuICAgICkuZm9yRWFjaCgoZWxlbWVudCkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ25lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX3NwYWNlLXdyYXBwZXJcIj5cbiAgICAgICAgJHsvKiBRdWVyaWVkIGJ5IGlkIGZyb20gdGhlIGF1dG9jb21wbGV0ZS9zZWxlY3QgdG8gYmUgdXNlZCBhcyB0aGUgYW5jaG9yIGVsZW1lbnQgKi8gJyd9XG4gICAgICAgIDxkaXYgQGNsaWNrPSR7dGhpcy5faGFuZGxlV3JhcHBlckNsaWNrfSBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX193cmFwcGVyXCIgaWQ9XCJvdmVybGF5LWFuY2hvclwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9faW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1zcGFjZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJsYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90TGFiZWxDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgICAgICAke3RoaXMub3B0aW9uYWxcbiAgICAgICAgICAgICAgICAgID8gaHRtbGAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+ICR7aTE4bk9wdGlvbmFsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSA8L3NwYW4+YFxuICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2lucHV0XCI+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90SW5wdXRDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHtbJ3NlbGVjdCcsICdzYmItc2VsZWN0J10uaW5jbHVkZXModGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgID8gaHRtbGA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLWRvd24tc21hbGxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fc2VsZWN0LWlucHV0LWljb25cIlxuICAgICAgICAgICAgICAgID48L3NiYi1pY29uPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJzdWZmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2Vycm9yXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImVycm9yXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblNsb3RFcnJvckNoYW5nZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1mb3JtLWZpZWxkJzogU2JiRm9ybUZpZWxkRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
1064
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGlzU2VydmVyLCB0eXBlIFByb3BlcnR5VmFsdWVzLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYklucHV0TW9kYWxpdHkgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUsIHNsb3RTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpc0ZpcmVmb3gsIHNldE9yUmVtb3ZlQXR0cmlidXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgaTE4bk9wdGlvbmFsIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluLCBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTZWxlY3RFbGVtZW50IH0gZnJvbSAnLi4vLi4vc2VsZWN0LmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZm9ybS1maWVsZC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2ljb24uanMnO1xuXG5sZXQgbmV4dElkID0gMDtcbmxldCBuZXh0Rm9ybUZpZWxkRXJyb3JJZCA9IDA7XG5cbmNvbnN0IHN1cHBvcnRlZFBvcHVwVGFnTmFtZXMgPSBbJ3NiYi1hdXRvY29tcGxldGUnLCAnc2JiLWF1dG9jb21wbGV0ZS1ncmlkJywgJ3NiYi1zZWxlY3QnXTtcblxuY29uc3QgcGF0Y2hlZElucHV0cyA9IG5ldyBXZWFrTWFwPEhUTUxJbnB1dEVsZW1lbnQsIFByb3BlcnR5RGVzY3JpcHRvcj4oKTtcblxuLyoqXG4gKiBJdCB3cmFwcyBhbiBpbnB1dCBlbGVtZW50IGFkZGluZyBsYWJlbCwgZXJyb3JzLCBpY29uLCBldGMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpbnB1dC9zZWxlY3Qgb3IgYSBzdXBwb3J0ZWQgbm9uLW5hdGl2ZSBlbGVtZW50LlxuICogQHNsb3QgbGFiZWwgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhIGxhYmVsLlxuICogQHNsb3QgcHJlZml4IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaWNvbiBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBpbnB1dC5cbiAqIEBzbG90IHN1ZmZpeCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGljb24gb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGlucHV0LlxuICogQHNsb3QgZXJyb3IgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBlcnJvci5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWZvcm0tZmllbGQnKVxuQHNsb3RTdGF0ZSgpXG5jbGFzcyBTYmJGb3JtRmllbGRFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWROYXRpdmVJbnB1dEVsZW1lbnRzID0gWydpbnB1dCcsICdzZWxlY3QnLCAndGV4dGFyZWEnXTtcbiAgLy8gTGlzdCBvZiBzdXBwb3J0ZWQgZWxlbWVudCBzZWxlY3RvcnMgaW4gdW5uYW1lZCBzbG90XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1cHBvcnRlZElucHV0RWxlbWVudHMgPSBbXG4gICAgLi4udGhpcy5fc3VwcG9ydGVkTmF0aXZlSW5wdXRFbGVtZW50cyxcbiAgICAnc2JiLXNlbGVjdCcsXG4gICAgJ3NiYi1zbGlkZXInLFxuICBdO1xuICAvLyBMaXN0IG9mIGVsZW1lbnRzIHRoYXQgc2hvdWxkIG5vdCBmb2N1cyBpbnB1dCBvbiBjbGlja1xuICBwcml2YXRlIHJlYWRvbmx5IF9leGNsdWRlZEZvY3VzRWxlbWVudHMgPSBbJ2J1dHRvbicsICdzYmItcG9wb3ZlciddO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dEVsZW1lbnRzID0gW1xuICAgICdpbnB1dCcsXG4gICAgJ3NlbGVjdCcsXG4gICAgJ3NiYi1zZWxlY3QnLFxuICAgICd0ZXh0YXJlYScsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmxvYXRpbmdMYWJlbFN1cHBvcnRlZElucHV0VHlwZXMgPSBbXG4gICAgJ2VtYWlsJyxcbiAgICAnbnVtYmVyJyxcbiAgICAncGFzc3dvcmQnLFxuICAgICdzZWFyY2gnLFxuICAgICd0ZWwnLFxuICAgICd0ZXh0JyxcbiAgICAndXJsJyxcbiAgXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXNlcnZlIHNwYWNlIGZvciBhbiBlcnJvciBtZXNzYWdlLlxuICAgKiBgbm9uZWAgZG9lcyBub3QgcmVzZXJ2ZSBhbnkgc3BhY2UuXG4gICAqIGByZXNlcnZlYCBkb2VzIHJlc2VydmUgb25lIHJvdyBmb3IgYW4gZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Vycm9yLXNwYWNlJywgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZXJyb3JTcGFjZTogJ25vbmUnIHwgJ3Jlc2VydmUnID0gJ25vbmUnO1xuXG4gIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5wdXQgaXMgb3B0aW9uYWwuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBvcHRpb25hbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsIG9yIG0uICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdsJyB8ICdtJyB8ICdzJyA9ICdtJztcblxuICAvKiogV2hldGhlciB0byBkaXNwbGF5IHRoZSBmb3JtIGZpZWxkIHdpdGhvdXQgYSBib3JkZXIuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBib3JkZXJsZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBjb21wb25lbnQ6XG4gICAqIC0gYGRlZmF1bHRgOiB0aGUgY29tcG9uZW50IGhhcyBkZWZpbmVkIHdpZHRoIGFuZCBtaW4td2lkdGg7XG4gICAqIC0gYGNvbGxhcHNlYDogdGhlIGNvbXBvbmVudCBhZGFwdHMgaXRzZWxmIHRvIGl0cyBpbm5lciBpbnB1dCBjb250ZW50LiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciB3aWR0aDogJ2RlZmF1bHQnIHwgJ2NvbGxhcHNlJyA9ICdkZWZhdWx0JztcblxuICAvKiogV2hldGhlciB0byB2aXN1YWxseSBoaWRlIHRoZSBsYWJlbC4gSWYgaGlkZGVuLCBzY3JlZW4gcmVhZGVycyB3aWxsIHN0aWxsIHJlYWQgaXQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoaWRkZW4tbGFiZWwnLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBoaWRkZW5MYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgZmxvYXQuIElmIGFjdGl2YXRlZCwgdGhlIHBsYWNlaG9sZGVyIG9mIHRoZSBpbnB1dCBpcyBoaWRkZW4uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmbG9hdGluZy1sYWJlbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGZsb2F0aW5nTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGdldCB0aGUgYGVycm9yYCBzbG90LiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9lcnJvckVsZW1lbnRzOiBFbGVtZW50W10gPSBbXTtcblxuICAvKiogT3JpZ2luYWwgYXJpYS1kZXNjcmliZWRieSB2YWx1ZSBvZiB0aGUgc2xvdHRlZCBpbnB1dCBlbGVtZW50LiAqL1xuICBwcml2YXRlIF9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5Pzogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzbG90dGVkIGlucHV0IGVsZW1lbnQuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2lucHV0ITogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2xvdHRlZCBsYWJlbCBlbGVtZW50cy4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfbGFiZWwhOiBIVE1MTGFiZWxFbGVtZW50O1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnQgPSBuZXcgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gdGhlIGNoYW5nZXMgb24gYHJlYWRvbmx5YCBhbmQgYGRpc2FibGVkYCBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YC5cbiAgICovXG4gIHByaXZhdGUgX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICAgIGlmIChtdXRhdGlvbnMuc29tZSgobSkgPT4gbS50eXBlID09PSAnYXR0cmlidXRlcycpKSB7XG4gICAgICAgICAgdGhpcy5fcmVhZElucHV0U3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICA6IG51bGw7XG5cbiAgcHJpdmF0ZSBfaW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignd2lsbE9wZW4nLCAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+IHRoaXMuX29uUG9wdXBPcGVuKGUpLCB7IHNpZ25hbCB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2RpZENsb3NlJywgKGU6IEN1c3RvbUV2ZW50PHZvaWQ+KSA9PiB0aGlzLl9vblBvcHVwQ2xvc2UoZSksIHsgc2lnbmFsIH0pO1xuICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpO1xuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgaWYgKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgPT09ICdpbnB1dCcpIHtcbiAgICAgIHRoaXMuX3VucGF0Y2hJbnB1dFZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25Qb3B1cE9wZW4oeyB0YXJnZXQgfTogQ3VzdG9tRXZlbnQ8dm9pZD4pOiB2b2lkIHtcbiAgICBpZiAoc3VwcG9ydGVkUG9wdXBUYWdOYW1lcy5pbmNsdWRlcygodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5sb2NhbE5hbWUpKSB7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1oYXMtcG9wdXAtb3BlbicsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uUG9wdXBDbG9zZSh7IHRhcmdldCB9OiBDdXN0b21FdmVudDx2b2lkPik6IHZvaWQge1xuICAgIGlmIChzdXBwb3J0ZWRQb3B1cFRhZ05hbWVzLmluY2x1ZGVzKCh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSkpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWhhcy1wb3B1cC1vcGVuJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlV3JhcHBlckNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0J1dHRvbk9yUG9wdXAoZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgPT09ICdzYmItc2VsZWN0Jykge1xuICAgICAgdGhpcy5faW5wdXQuY2xpY2soKTtcbiAgICAgIHRoaXMuX2lucHV0LmZvY3VzKCk7XG4gICAgfSBlbHNlIGlmICgoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmxvY2FsTmFtZSAhPT0gJ2xhYmVsJykge1xuICAgICAgdGhpcy5faW5wdXQ/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNCdXR0b25PclBvcHVwKGV2ZW50OiBFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmVudFxuICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAuc29tZShcbiAgICAgICAgKGVsKSA9PlxuICAgICAgICAgIChlbCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudCAmJiBlbC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSA9PT0gJ2J1dHRvbicpIHx8XG4gICAgICAgICAgdGhpcy5fZXhjbHVkZWRGb2N1c0VsZW1lbnRzLmluY2x1ZGVzKChlbCBhcyBIVE1MRWxlbWVudCkubG9jYWxOYW1lKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9vblNsb3RMYWJlbENoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCBsYWJlbHMgPSBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbCgnbGFiZWwnKSk7XG4gICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgbGFiZWxzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYERldGVjdGVkIG1vcmUgdGhhbiBvbmUgbGFiZWwgaW4gc2JiLWZvcm0tZmllbGQjJHt0aGlzLmlkfS4gT25seSBvbmUgbGFiZWwgaXMgc3VwcG9ydGVkLmAsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9sYWJlbCA9IGxhYmVsc1swXTtcbiAgICB0aGlzLl9zeW5jTGFiZWxJbnB1dFJlZmVyZW5jZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBpcyB1c2VkIGludGVybmFsbHkgdG8gYXNzaWduIHRoZSBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YCB0byBgX2lkYCBhbmQgYF9pbnB1dGAgYW5kIHRvIG9ic2VydmUgdGhlIG5hdGl2ZSByZWFkb25seSBhbmQgZGlzYWJsZWQgYXR0cmlidXRlcy5cbiAgICovXG4gIHByaXZhdGUgX29uU2xvdElucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IG5ld0lucHV0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpXG4gICAgICAuYXNzaWduZWRFbGVtZW50cygpXG4gICAgICAuZmluZCgoZSk6IGUgaXMgSFRNTEVsZW1lbnQgPT4gdGhpcy5fc3VwcG9ydGVkSW5wdXRFbGVtZW50cy5pbmNsdWRlcyhlLmxvY2FsTmFtZSkpO1xuICAgIHRoaXMuX2Fzc2lnblNsb3RzKCk7XG5cbiAgICBpZiAodGhpcy5faW5wdXQgJiYgdGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnaW5wdXQnICYmIG5ld0lucHV0ICE9PSB0aGlzLl9pbnB1dCkge1xuICAgICAgdGhpcy5fdW5wYXRjaElucHV0VmFsdWUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dCA9IG5ld0lucHV0O1xuXG4gICAgaWYgKCF0aGlzLl9pbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX29yaWdpbmFsSW5wdXRBcmlhRGVzY3JpYmVkYnkgPSB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICB0aGlzLl9hcHBseUFyaWFEZXNjcmliZWRieSgpO1xuICAgIHRoaXMuX3JlYWRJbnB1dFN0YXRlKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJJbnB1dExpc3RlbmVyKCk7XG5cbiAgICBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgICB0aGlzLl9pbnB1dC5zZXRBdHRyaWJ1dGUoJ3Jvd3MnLCB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ3Jvd3MnKSB8fCAnMycpO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXI/Lm9ic2VydmUodGhpcy5faW5wdXQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsncmVhZG9ubHknLCAnZGlzYWJsZWQnLCAnY2xhc3MnLCAnZGF0YS1zYmItaW52YWxpZCddLFxuICAgIH0pO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLWlucHV0LXR5cGUnLCB0aGlzLl9pbnB1dC5sb2NhbE5hbWUpO1xuICAgIHRoaXMuX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY0xhYmVsSW5wdXRSZWZlcmVuY2VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQgfHwgIXRoaXMuX2xhYmVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N1cHBvcnRlZE5hdGl2ZUlucHV0RWxlbWVudHMuaW5jbHVkZXModGhpcy5faW5wdXQubG9jYWxOYW1lKSkge1xuICAgICAgLy8gRm9yIG5hdGl2ZSBpbnB1dCBlbGVtZW50cyB3ZSB1c2UgdGhlIGBmb3JgIGF0dHJpYnV0ZSBvbiB0aGUgbGFiZWwgdG8gcmVmZXJlbmNlIHRoZSBpbnB1dFxuICAgICAgLy8gdmlhIGlkIHJlZmVyZW5jZS5cbiAgICAgIGlmICghdGhpcy5faW5wdXQuaWQpIHtcbiAgICAgICAgdGhpcy5faW5wdXQuaWQgPSBgc2JiLWZvcm0tZmllbGQtaW5wdXQtJHtuZXh0SWQrK31gO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sYWJlbC5odG1sRm9yID0gdGhpcy5faW5wdXQuaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBub24tbmF0aXZlIGlucHV0IGVsZW1lbnRzLCB0aGF0IGRvIG5vdCBzdXBwb3J0IHJlZmVyZW5jZXMgdmlhIHRoZSBsYWJlbCBmb3IgYXR0cmlidXRlLFxuICAgICAgLy8gd2UgdXNlIGFyaWEtbGFiZWxsZWRieSBvbiB0aGUgaW5wdXQgZWxlbWVudCB0byByZWZlcmVuY2UgdGhlIGxhYmVsIGVsZW1lbnQgdmlhIGlkLlxuICAgICAgaWYgKCF0aGlzLl9sYWJlbC5pZCkge1xuICAgICAgICB0aGlzLl9sYWJlbC5pZCA9IGBzYmItZm9ybS1maWVsZC1sYWJlbC0ke25leHRJZCsrfWA7XG4gICAgICB9XG4gICAgICBjb25zdCBsYWJlbGxlZGJ5ID1cbiAgICAgICAgdGhpcy5faW5wdXRcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKVxuICAgICAgICAgID8uc3BsaXQoJyAnKVxuICAgICAgICAgIC5maWx0ZXIoKGwpID0+ICEhbCAmJiBsICE9PSB0aGlzLl9sYWJlbCEuaWQpID8/IFtdO1xuICAgICAgdGhpcy5faW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCBbLi4ubGFiZWxsZWRieSwgdGhpcy5fbGFiZWwuaWRdLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJJbnB1dExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcblxuICAgIC8vIFRpbWVvdXQgbmVlZGVkIHRvIGhhdmUgdmFsdWUgdXBkYXRlZFxuICAgIHRoaXMuX2dldElucHV0Rm9ybSgpPy5hZGRFdmVudExpc3RlbmVyKCdyZXNldCcsICgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNldCgpKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICBsZXQgaW5wdXRGb2N1c0VsZW1lbnQgPSB0aGlzLl9pbnB1dDtcblxuICAgIGlmICh0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICdpbnB1dCcpIHtcbiAgICAgIHRoaXMuX3BhdGNoSW5wdXRWYWx1ZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlQ2hhbmdlJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCksIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KTtcblxuICAgICAgaW5wdXRGb2N1c0VsZW1lbnQgPSAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuaW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIGlucHV0Rm9jdXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnZm9jdXNpbicsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWlucHV0LWZvY3VzZWQnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgJ2RhdGEtZm9jdXMtb3JpZ2luJyxcbiAgICAgICAgICAoc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLm1vc3RSZWNlbnRNb2RhbGl0eSBhcyBTYmJJbnB1dE1vZGFsaXR5KSA/PyAnJyxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaW5wdXRGb2N1c0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdmb2N1c291dCcsXG4gICAgICAoKSA9PlxuICAgICAgICBbJ2RhdGEtZm9jdXMtb3JpZ2luJywgJ2RhdGEtaW5wdXQtZm9jdXNlZCddLmZvckVhY2goKG5hbWUpID0+IHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpKSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRJbnB1dEZvcm0oKTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX2lucHV0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCB0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXQuZm9ybTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0Py5jbG9zZXN0KCdmb3JtJyk7XG4gIH1cblxuICAvLyBXZSBuZWVkIHRvIHBhdGNoIHRoZSB2YWx1ZSBwcm9wZXJ0eSBvZiB0aGUgSFRNTElucHV0RWxlbWVudCBpbiBvcmRlclxuICAvLyB0byBiZSBhYmxlIHRvIHJlc2V0IHRoZSBmbG9hdGluZyBsYWJlbCBpbiB0aGUgZW1wdHkgc3RhdGUuXG4gIHByaXZhdGUgX3BhdGNoSW5wdXRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLl9pbnB1dCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IG9yaWdpbmFsRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5wdXRFbGVtZW50KSxcbiAgICAgICd2YWx1ZScsXG4gICAgKTtcblxuICAgIGlmICghb3JpZ2luYWxEZXNjcmlwdG9yIHx8ICFvcmlnaW5hbERlc2NyaXB0b3Iuc2V0IHx8ICFvcmlnaW5hbERlc2NyaXB0b3IuZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGF0Y2hlZElucHV0cy5zZXQoaW5wdXRFbGVtZW50LCBvcmlnaW5hbERlc2NyaXB0b3IpO1xuXG4gICAgY29uc3QgeyBnZXQ6IGdldHRlciwgc2V0OiBzZXR0ZXIgfSA9IG9yaWdpbmFsRGVzY3JpcHRvcjtcbiAgICBjb25zdCBjaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkgPSAoKTogdm9pZCA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnB1dEVsZW1lbnQsICd2YWx1ZScsIHtcbiAgICAgIC4uLm9yaWdpbmFsRGVzY3JpcHRvcixcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGdldHRlci5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICAgIHNldChuZXdWYWx1ZSkge1xuICAgICAgICBzZXR0ZXIuY2FsbCh0aGlzLCBuZXdWYWx1ZSk7XG4gICAgICAgIGNoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VucGF0Y2hJbnB1dFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuX2lucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3Qgb3JpZ2luYWxEZXNjcmlwdG9yID0gcGF0Y2hlZElucHV0cy5nZXQoaW5wdXRFbGVtZW50KTtcbiAgICBpZiAob3JpZ2luYWxEZXNjcmlwdG9yKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5wdXRFbGVtZW50LCAndmFsdWUnLCBvcmlnaW5hbERlc2NyaXB0b3IpO1xuICAgICAgcGF0Y2hlZElucHV0cy5kZWxldGUoaW5wdXRFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1pbnB1dC1lbXB0eScsXG4gICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cy5pbmNsdWRlcyh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lIGFzIHN0cmluZykgJiZcbiAgICAgICAgdGhpcy5faXNJbnB1dEVtcHR5KCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRFbXB0eSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRUeXBlcy5pbmNsdWRlcyh0aGlzLl9pbnB1dC50eXBlKSAmJlxuICAgICAgICB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2lucHV0LnNlbGVjdGVkT3B0aW9ucz8uaXRlbSgwKT8ubGFiZWw/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHJldHVybiAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuZ2V0RGlzcGxheVZhbHVlKCk/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRWYWx1ZUVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuX2lucHV0IGFzIHsgdmFsdWU6IHN0cmluZyB9KS52YWx1ZTtcbiAgICByZXR1cm4gWycnLCB1bmRlZmluZWQsIG51bGxdLmluY2x1ZGVzKHZhbHVlKSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnblNsb3RzKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnbGFiZWw6bm90KFtzbG90XSknKS5mb3JFYWNoKChlKSA9PiBlLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdsYWJlbCcpKTtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NiYi1mb3JtLWVycm9yOm5vdChbc2xvdF0pJykuZm9yRWFjaCgoZSkgPT5cbiAgICAgIGUuc2V0QXR0cmlidXRlKCdzbG90JywgJ2Vycm9yJyksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRJbnB1dFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtcmVhZG9ubHknLCB0aGlzLl9pbnB1dC5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGVkJywgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLWludmFsaWQnLFxuICAgICAgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJykgfHxcbiAgICAgICAgdGhpcy5faW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzYmItaW52YWxpZCcpIHx8XG4gICAgICAgICh0aGlzLl9pbnB1dC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXRvdWNoZWQnKSAmJlxuICAgICAgICAgIHRoaXMuX2lucHV0LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBzZXQgdGhlIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlIGZvciB0aGUgc2xvdHRlZCBpbnB1dCByZWZlcmVuY2luZyBhdmFpbGFibGUgPHNiYi1mb3JtLWVycm9yPiBpbnN0YW5jZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RFcnJvckNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9lcnJvckVsZW1lbnRzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKTtcblxuICAgIGZvciAoY29uc3QgZWwgb2YgdGhpcy5fZXJyb3JFbGVtZW50cykge1xuICAgICAgLy8gQWx0aG91Z2ggYSBmb3JtIGVycm9yIGFzc2lnbnMgYW4gaWQgaXRzZWxmLCB3ZSBuZWVkIHRvIGJlIGVhcmxpZXIgYnkgY3JlYXRpbmcgb25lIGhlcmVcbiAgICAgIGlmICghZWwuaWQpIHtcbiAgICAgICAgZWwuaWQgPSBgc2JiLWZvcm0tZmllbGQtZXJyb3ItJHsrK25leHRGb3JtRmllbGRFcnJvcklkfWA7XG4gICAgICB9XG4gICAgICBpZiAoIWVsLnJvbGUpIHtcbiAgICAgICAgLy8gSW5zdGVhZCBvZiBkZWZpbmluZyBhIGNvbnRhaW5lciB3aXRoIGFuIGFyaWEtbGl2ZSByZWdpb24gYXMgZXhwZWN0ZWQsIHdlIGhhZCB0byBjaGFuZ2VcbiAgICAgICAgLy8gc2V0dGluZyBpdCBmb3IgZXZlcnkgc2xvdHRlZCBlbGVtZW50IHRvIHByb3Blcmx5IHdvcmsgaW4gYWxsIGJyb3dzZXJzIGFuZCBzY3JlZW4gcmVhZGVyIGNvbWJpbmF0aW9ucy5cbiAgICAgICAgZWwucm9sZSA9ICdzdGF0dXMnO1xuICAgICAgICBpZiAoaXNGaXJlZm94KSB7XG4gICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3N0YXR1cycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2FwcGx5QXJpYURlc2NyaWJlZGJ5KCk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaGFzLWVycm9yJywgISF0aGlzLl9lcnJvckVsZW1lbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUFyaWFEZXNjcmliZWRieSgpOiB2b2lkIHtcbiAgICBjb25zdCBpZHMgPSBbXTtcblxuICAgIGlmICh0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5KSB7XG4gICAgICBpZHMucHVzaCh0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXJyb3JFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2Vycm9yRWxlbWVudHMuZm9yRWFjaCgoZSkgPT4gaWRzLnB1c2goZS5pZCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGFyaWFEZXNjcmliZWRieSA9IGlkcy5qb2luKCcgJyk7XG4gICAgaWYgKHRoaXMuX2lucHV0KSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLl9pbnB1dCwgJ2FyaWEtZGVzY3JpYmVkYnknLCBhcmlhRGVzY3JpYmVkYnkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBNYW51YWxseSByZXNldCB0aGUgZm9ybSBmaWVsZC4gQ3VycmVudGx5LCB0aGlzIG9ubHkgcmVzZXRzIHRoZSBmbG9hdGluZyBsYWJlbC4gKi9cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICB9XG5cbiAgLyoqIE1hbnVhbGx5IGNsZWFycyB0aGUgaW5wdXQgdmFsdWUuIEl0IG9ubHkgd29ya3MgZm9yIGlucHV0cywgc2VsZWN0cyBhcmUgbm90IHN1cHBvcnRlZC4gKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICgodGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpICE9PSAnaW5wdXQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgICh0aGlzLl9pbnB1dCBhcyB7IHZhbHVlOiBzdHJpbmcgfSkudmFsdWUgPSAnJztcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlICdpbnB1dEVsZW1lbnQnIHByb3BlcnR5IGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBnZXRJbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dDtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LihcbiAgICAgICdzYmItZm9ybS1lcnJvcixzYmItbWluaS1idXR0b24sc2JiLXBvcG92ZXItdHJpZ2dlcixzYmItZm9ybS1maWVsZC1jbGVhcixzYmItZGF0ZXBpY2tlci1uZXh0LWRheSxzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXksc2JiLWRhdGVwaWNrZXItdG9nZ2xlLHNiYi1zZWxlY3Qsc2JiLWF1dG9jb21wbGV0ZSxzYmItYXV0b2NvbXBsZXRlLWdyaWQnLFxuICAgICkuZm9yRWFjaCgoZWxlbWVudCkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ25lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX3NwYWNlLXdyYXBwZXJcIj5cbiAgICAgICAgJHsvKiBRdWVyaWVkIGJ5IGlkIGZyb20gdGhlIGF1dG9jb21wbGV0ZS9zZWxlY3QgdG8gYmUgdXNlZCBhcyB0aGUgYW5jaG9yIGVsZW1lbnQgKi8gJyd9XG4gICAgICAgIDxkaXYgQGNsaWNrPSR7dGhpcy5faGFuZGxlV3JhcHBlckNsaWNrfSBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX193cmFwcGVyXCIgaWQ9XCJvdmVybGF5LWFuY2hvclwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9faW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1zcGFjZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJsYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90TGFiZWxDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgICAgICAke3RoaXMub3B0aW9uYWxcbiAgICAgICAgICAgICAgICAgID8gaHRtbGAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+ICR7aTE4bk9wdGlvbmFsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSA8L3NwYW4+YFxuICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2lucHV0XCI+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90SW5wdXRDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHtbJ3NlbGVjdCcsICdzYmItc2VsZWN0J10uaW5jbHVkZXModGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgID8gaHRtbGA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLWRvd24tc21hbGxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fc2VsZWN0LWlucHV0LWljb25cIlxuICAgICAgICAgICAgICAgID48L3NiYi1pY29uPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJzdWZmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2Vycm9yXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImVycm9yXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblNsb3RFcnJvckNoYW5nZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1mb3JtLWZpZWxkJzogU2JiRm9ybUZpZWxkRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -1 +1 @@
1
- {"version":3,"file":"tab-group.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tabs/tab-group/tab-group.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AASvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1C,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,kBAAkB,CAAC;IACnC,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACjD,WAAW,EAAE,aAAa,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,IAAI,IAAI,CAAC;IACjB,UAAU,IAAI,IAAI,CAAC;IACnB,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,2BAA2B,CAAC;IAC9C,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;CACxB;;AAQD;;;;;;GAMG;AACH,qBAEM,kBAAmB,SAAQ,uBAA6B;IAC5D,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;MAElB;IAEX,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAAC,CAA0B;IAC/C,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,qBAAqB,CAI1B;IACH,OAAO,CAAC,uBAAuB,CAI5B;IACH,OAAO,CAAC,yBAAyB,CAI9B;IAEH,uCAAuC;IACvC,IACW,IAAI,CAAC,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,EAGrD;IACD,IAAW,IAAI,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAEjD;IACD,OAAO,CAAC,KAAK,CAAwC;IAErD;;;OAGG;IACH,SAEgB,oBAAoB,EAAE,MAAM,CAAK;IAEjD,6CAA6C;IAC7C,OAAO,CAAC,mBAAmB,CAGzB;IAEc,iBAAiB,IAAI,IAAI;cAMtB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS9E;;;OAGG;IACI,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIzC;;;OAGG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxC;;;OAGG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI1C,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,oBAAoB,CAS1B;IAEF,OAAO,CAAC,iBAAiB,CAavB;IAEF,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,UAAU;IAkGlB,OAAO,CAAC,cAAc;cAoBH,MAAM,IAAI,cAAc;CAe5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
1
+ {"version":3,"file":"tab-group.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tabs/tab-group/tab-group.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AASvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1C,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,kBAAkB,CAAC;IACnC,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACjD,WAAW,EAAE,aAAa,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,IAAI,IAAI,CAAC;IACjB,UAAU,IAAI,IAAI,CAAC;IACnB,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,2BAA2B,CAAC;IAC9C,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;CACxB;;AAQD;;;;;;GAMG;AACH,qBAEM,kBAAmB,SAAQ,uBAA6B;IAC5D,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;MAElB;IAEX,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAAC,CAA0B;IAC/C,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,qBAAqB,CAI1B;IACH,OAAO,CAAC,uBAAuB,CAI5B;IACH,OAAO,CAAC,yBAAyB,CAI9B;IAEH,uCAAuC;IACvC,IACW,IAAI,CAAC,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,EAGrD;IACD,IAAW,IAAI,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAEjD;IACD,OAAO,CAAC,KAAK,CAAwC;IAErD;;;OAGG;IACH,SAEgB,oBAAoB,EAAE,MAAM,CAAK;IAEjD,6CAA6C;IAC7C,OAAO,CAAC,mBAAmB,CAGzB;IAEc,iBAAiB,IAAI,IAAI;cAMtB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS9E;;;OAGG;IACI,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIzC;;;OAGG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxC;;;OAGG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI1C,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,oBAAoB,CAY1B;IAEF,OAAO,CAAC,iBAAiB,CAavB;IAEF,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,UAAU;IAmGlB,OAAO,CAAC,cAAc;cAoBH,MAAM,IAAI,cAAc;CAe5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
@@ -102,11 +102,13 @@ let SbbTabGroupElement = (() => {
102
102
  __privateSet(this, _initialSelectedIndex_accessor_storage, __runInitializers(this, _initialSelectedIndex_initializers, 0));
103
103
  this._selectedTabChanged = (__runInitializers(this, _initialSelectedIndex_extraInitializers), new EventEmitter(this, SbbTabGroupElement2.events.didChange));
104
104
  this._onContentSlotChange = () => {
105
+ var _a2, _b;
105
106
  this._tabContentElement = this.shadowRoot.querySelector("div.tab-content");
106
107
  const loadedTabs = this._getTabs().filter((tab) => !this._tabs.includes(tab));
107
108
  if (loadedTabs.length) {
108
109
  loadedTabs.forEach((tab) => this._configure(tab));
109
110
  this._tabs = this._tabs.concat(loadedTabs);
111
+ (_b = (_a2 = loadedTabs.find((tab) => tab.active)) == null ? void 0 : _a2.tabGroupActions) == null ? void 0 : _b.select();
110
112
  }
111
113
  };
112
114
  this._onTabsSlotChange = () => {
@@ -231,6 +233,9 @@ let SbbTabGroupElement = (() => {
231
233
  }
232
234
  }
233
235
  _onTabContentElementResize(entries) {
236
+ if (!this._tabContentElement) {
237
+ return;
238
+ }
234
239
  for (const entry of entries) {
235
240
  const contentHeight = Math.floor(entry.contentRect.height);
236
241
  this._tabContentElement.style.height = `${contentHeight}px`;
@@ -320,7 +325,7 @@ let SbbTabGroupElement = (() => {
320
325
  tabLabel.disabled = tabLabel.hasAttribute("disabled");
321
326
  tabLabel.active = tabLabel.hasAttribute("active") && !tabLabel.disabled;
322
327
  tabLabel.setAttribute("role", "tab");
323
- tabLabel.setAttribute("aria-selected", "false");
328
+ tabLabel.setAttribute("aria-selected", String(tabLabel.active));
324
329
  tabLabel.addEventListener("click", () => {
325
330
  var _a3;
326
331
  (_a3 = tabLabel.tabGroupActions) == null ? void 0 : _a3.select();
@@ -384,4 +389,4 @@ let SbbTabGroupElement = (() => {
384
389
  export {
385
390
  SbbTabGroupElement
386
391
  };
387
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvdGFicy90YWItZ3JvdXAvdGFiLWdyb3VwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBSZXNpemVDb250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9yZXNpemUtY29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IGdldE5leHRFbGVtZW50SW5kZXgsIGlzQXJyb3dLZXlQcmVzc2VkIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgdGhyb3R0bGUgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUYWJMYWJlbEVsZW1lbnQgfSBmcm9tICcuLi90YWItbGFiZWwuanMnO1xuaW1wb3J0IHsgU2JiVGFiRWxlbWVudCB9IGZyb20gJy4uL3RhYi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RhYi1ncm91cC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgdHlwZSBTYmJUYWJDaGFuZ2VkRXZlbnREZXRhaWxzID0ge1xuICBhY3RpdmVJbmRleDogbnVtYmVyO1xuICBhY3RpdmVUYWJMYWJlbDogU2JiVGFiTGFiZWxFbGVtZW50O1xuICBhY3RpdmVUYWI6IFNiYlRhYkVsZW1lbnQ7XG4gIHByZXZpb3VzSW5kZXg6IG51bWJlcjtcbiAgcHJldmlvdXNUYWJMYWJlbDogU2JiVGFiTGFiZWxFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBwcmV2aW91c1RhYjogU2JiVGFiRWxlbWVudCB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlU2JiVGFiR3JvdXBBY3Rpb25zIHtcbiAgYWN0aXZhdGUoKTogdm9pZDtcbiAgZGVhY3RpdmF0ZSgpOiB2b2lkO1xuICBlbmFibGUoKTogdm9pZDtcbiAgZGlzYWJsZSgpOiB2b2lkO1xuICBzZWxlY3QoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYiBleHRlbmRzIFNiYlRhYkxhYmVsRWxlbWVudCB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHRhYj86IFNiYlRhYkVsZW1lbnQ7XG4gIGluZGV4PzogbnVtYmVyO1xuICB0YWJHcm91cEFjdGlvbnM/OiBJbnRlcmZhY2VTYmJUYWJHcm91cEFjdGlvbnM7XG4gIHNpemU6ICdzJyB8ICdsJyB8ICd4bCc7XG59XG5cbmNvbnN0IHRhYk9ic2VydmVyQ29uZmlnOiBNdXRhdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgYXR0cmlidXRlRmlsdGVyOiBbJ2FjdGl2ZScsICdkaXNhYmxlZCddLFxufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgb25lIG9yIG1vcmUgdGFicywgZWFjaCBvbmUgd2l0aCBhIGxhYmVsIGFuZCBhIGNvbnRlbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgY29udGVudCB0byB0aGUgYHNiYi10YWItZ3JvdXBgIHZpYVxuICogYHNiYi10YWItbGFiZWxgIGFuZCBgc2JiLXRhYmAgaW5zdGFuY2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDxTYmJUYWJDaGFuZ2VkRXZlbnREZXRhaWxzPn0gZGlkQ2hhbmdlIC0gRW1pdHMgYW4gZXZlbnQgb24gc2VsZWN0ZWQgdGFiIGNoYW5nZS5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLXRhYi1ncm91cCcpXG5jbGFzcyBTYmJUYWJHcm91cEVsZW1lbnQgZXh0ZW5kcyBTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBkaWRDaGFuZ2U6ICdkaWRDaGFuZ2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIHByaXZhdGUgX3RhYnM6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW10gPSBbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRUYWI/OiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYjtcbiAgcHJpdmF0ZSBfdGFiR3JvdXBFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3RhYkNvbnRlbnRFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2Fib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfdGFiQXR0cmlidXRlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25Db250cm9sbGVyKHRoaXMsIHtcbiAgICB0YXJnZXQ6IG51bGwsXG4gICAgY29uZmlnOiB0YWJPYnNlcnZlckNvbmZpZyxcbiAgICBjYWxsYmFjazogKG11dGF0aW9uc0xpc3QpID0+IHRoaXMuX29uVGFiQXR0cmlidXRlc0NoYW5nZShtdXRhdGlvbnNMaXN0KSxcbiAgfSk7XG4gIHByaXZhdGUgX3RhYkdyb3VwUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoZW50cmllcykgPT4gdGhpcy5fb25UYWJHcm91cEVsZW1lbnRSZXNpemUoZW50cmllcyksXG4gIH0pO1xuICBwcml2YXRlIF90YWJDb250ZW50UmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoZW50cmllcykgPT4gdGhpcy5fb25UYWJDb250ZW50RWxlbWVudFJlc2l6ZShlbnRyaWVzKSxcbiAgfSk7XG5cbiAgLyoqIFNpemUgdmFyaWFudCwgZWl0aGVyIHMsIGwgb3IgeGwuICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgc2l6ZSh2YWx1ZTogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWJbJ3NpemUnXSkge1xuICAgIHRoaXMuX3NpemUgPSB2YWx1ZTtcbiAgICB0aGlzLl91cGRhdGVTaXplKCk7XG4gIH1cbiAgcHVibGljIGdldCBzaXplKCk6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiWydzaXplJ10ge1xuICAgIHJldHVybiB0aGlzLl9zaXplO1xuICB9XG4gIHByaXZhdGUgX3NpemU6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiWydzaXplJ10gPSAnbCc7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluaXRpYWwgdGFiLiBJZiBpdCBtYXRjaGVzIGEgZGlzYWJsZWQgdGFiIG9yIGV4Y2VlZHMgdGhlIGxlbmd0aCBvZlxuICAgKiB0aGUgdGFiIGdyb3VwLCB0aGUgZmlyc3QgZW5hYmxlZCB0YWIgd2lsbCBiZSBzZWxlY3RlZC5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdpbml0aWFsLXNlbGVjdGVkLWluZGV4JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBpbml0aWFsU2VsZWN0ZWRJbmRleDogbnVtYmVyID0gMDtcblxuICAvKiogRW1pdHMgYW4gZXZlbnQgb24gc2VsZWN0ZWQgdGFiIGNoYW5nZS4gKi9cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRUYWJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8U2JiVGFiQ2hhbmdlZEV2ZW50RGV0YWlscz4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiVGFiR3JvdXBFbGVtZW50LmV2ZW50cy5kaWRDaGFuZ2UsXG4gICk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpLCB7IHNpZ25hbCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIHRoaXMuX3RhYnMgPSB0aGlzLl9nZXRUYWJzKCk7XG4gICAgdGhpcy5fdGFicy5mb3JFYWNoKCh0YWIpID0+IHRoaXMuX2NvbmZpZ3VyZSh0YWIpKTtcbiAgICB0aGlzLl9pbml0U2VsZWN0aW9uKCk7XG4gICAgdGhpcy5fdGFiR3JvdXBSZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX3RhYkdyb3VwRWxlbWVudCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZXMgYSB0YWIgYnkgaW5kZXguXG4gICAqIEBwYXJhbSB0YWJJbmRleCBUaGUgaW5kZXggb2YgdGhlIHRhYiB5b3Ugd2FudCB0byBkaXNhYmxlLlxuICAgKi9cbiAgcHVibGljIGRpc2FibGVUYWIodGFiSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3RhYnNbdGFiSW5kZXhdPy50YWJHcm91cEFjdGlvbnM/LmRpc2FibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGEgdGFiIGJ5IGluZGV4LlxuICAgKiBAcGFyYW0gdGFiSW5kZXggVGhlIGluZGV4IG9mIHRoZSB0YWIgeW91IHdhbnQgdG8gZW5hYmxlLlxuICAgKi9cbiAgcHVibGljIGVuYWJsZVRhYih0YWJJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdGFic1t0YWJJbmRleF0/LnRhYkdyb3VwQWN0aW9ucz8uZW5hYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIGEgdGFiIGJ5IGluZGV4LlxuICAgKiBAcGFyYW0gdGFiSW5kZXggVGhlIGluZGV4IG9mIHRoZSB0YWIgeW91IHdhbnQgdG8gYWN0aXZhdGUuXG4gICAqL1xuICBwdWJsaWMgYWN0aXZhdGVUYWIodGFiSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3RhYnNbdGFiSW5kZXhdPy50YWJHcm91cEFjdGlvbnM/LnNlbGVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VGFicygpOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuID8/IFtdKS5maWx0ZXIoKGNoaWxkKSA9PlxuICAgICAgL15zYmItdGFiLWxhYmVsJC91LnRlc3QoY2hpbGQubG9jYWxOYW1lKSxcbiAgICApIGFzIEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW107XG4gIH1cblxuICBwcml2YXRlIF9lbmFibGVkVGFicygpOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYltdIHtcbiAgICByZXR1cm4gdGhpcy5fdGFicy5maWx0ZXIoKHQpID0+ICF0Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTaXplKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgdGFiIG9mIHRoaXMuX3RhYnMpIHtcbiAgICAgIHRhYi5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2l6ZScsIHRoaXMuc2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25Db250ZW50U2xvdENoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLl90YWJDb250ZW50RWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignZGl2LnRhYi1jb250ZW50JykhO1xuICAgIGNvbnN0IGxvYWRlZFRhYnMgPSB0aGlzLl9nZXRUYWJzKCkuZmlsdGVyKCh0YWIpID0+ICF0aGlzLl90YWJzLmluY2x1ZGVzKHRhYikpO1xuXG4gICAgLy8gaWYgYSBuZXcgdGFiL2NvbnRlbnQgaXMgYWRkZWQgdG8gdGhlIHRhYiBncm91cFxuICAgIGlmIChsb2FkZWRUYWJzLmxlbmd0aCkge1xuICAgICAgbG9hZGVkVGFicy5mb3JFYWNoKCh0YWIpID0+IHRoaXMuX2NvbmZpZ3VyZSh0YWIpKTtcbiAgICAgIHRoaXMuX3RhYnMgPSB0aGlzLl90YWJzLmNvbmNhdChsb2FkZWRUYWJzKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25UYWJzU2xvdENoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCB0YWJzID0gdGhpcy5fZ2V0VGFicygpO1xuXG4gICAgLy8gaWYgYSB0YWIgaXMgcmVtb3ZlZCBmcm9tIHRoZSB0YWIgZ3JvdXBcbiAgICBpZiAodGFicy5sZW5ndGggPCB0aGlzLl90YWJzLmxlbmd0aCkge1xuICAgICAgY29uc3QgcmVtb3ZlZFRhYnMgPSB0aGlzLl90YWJzLmZpbHRlcigodGFiKSA9PiAhdGFicy5pbmNsdWRlcyh0YWIpKTtcblxuICAgICAgcmVtb3ZlZFRhYnMuZm9yRWFjaCgocmVtb3ZlZFRhYikgPT4ge1xuICAgICAgICByZW1vdmVkVGFiLnRhYj8ucmVtb3ZlKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3RhYnMgPSB0YWJzO1xuICAgIH1cbiAgICB0aGlzLl90YWJzLmZvckVhY2goKHRhYjogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWIpID0+IHRhYi5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2l6ZScsIHRoaXMuc2l6ZSkpO1xuICB9O1xuXG4gIHByaXZhdGUgX2Fzc2lnbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBzYmItdGFiLXBhbmVsLSR7KytuZXh0SWR9YDtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5pbml0aWFsU2VsZWN0ZWRJbmRleCA+PSAwICYmXG4gICAgICB0aGlzLmluaXRpYWxTZWxlY3RlZEluZGV4IDwgdGhpcy5fdGFicy5sZW5ndGggJiZcbiAgICAgICF0aGlzLl90YWJzW3RoaXMuaW5pdGlhbFNlbGVjdGVkSW5kZXhdLmRpc2FibGVkXG4gICAgKSB7XG4gICAgICB0aGlzLl90YWJzW3RoaXMuaW5pdGlhbFNlbGVjdGVkSW5kZXhdLnRhYkdyb3VwQWN0aW9ucz8uc2VsZWN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VuYWJsZWRUYWJzKClbMF0/LnRhYkdyb3VwQWN0aW9ucz8uc2VsZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25UYWJBdHRyaWJ1dGVzQ2hhbmdlKG11dGF0aW9uc0xpc3Q6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHtcbiAgICAgIGlmIChtdXRhdGlvbi50eXBlICE9PSAnYXR0cmlidXRlcycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFiID0gbXV0YXRpb24udGFyZ2V0IGFzIEludGVyZmFjZVNiYlRhYkdyb3VwVGFiO1xuXG4gICAgICBpZiAobXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ2Rpc2FibGVkJykge1xuICAgICAgICBpZiAodGFiLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSAmJiB0YWIgIT09IHRoaXMuX3NlbGVjdGVkVGFiKSB7XG4gICAgICAgICAgdGFiLnRhYkdyb3VwQWN0aW9ucz8uZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhYi5kaXNhYmxlZCkge1xuICAgICAgICAgIHRhYi50YWJHcm91cEFjdGlvbnM/LmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgICAgaWYgKHRhYi5oYXNBdHRyaWJ1dGUoJ2FjdGl2ZScpICYmICF0YWIuZGlzYWJsZWQpIHtcbiAgICAgICAgICB0YWIudGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YWIgPT09IHRoaXMuX3NlbGVjdGVkVGFiKSB7XG4gICAgICAgICAgdGFiLnRvZ2dsZUF0dHJpYnV0ZSgnYWN0aXZlJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vblRhYkdyb3VwRWxlbWVudFJlc2l6ZShlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IHRhYlRpdGxlcyA9IChcbiAgICAgICAgZW50cnkudGFyZ2V0LmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxTbG90RWxlbWVudFxuICAgICAgKS5hc3NpZ25lZEVsZW1lbnRzKCkgYXMgU2JiVGFiTGFiZWxFbGVtZW50W107XG5cbiAgICAgIGZvciAoY29uc3QgdGFiIG9mIHRhYlRpdGxlcykge1xuICAgICAgICB0YWIudG9nZ2xlQXR0cmlidXRlKFxuICAgICAgICAgICdkYXRhLWhhcy1kaXZpZGVyJyxcbiAgICAgICAgICB0YWIgPT09IHRhYlRpdGxlc1swXSB8fCB0YWIub2Zmc2V0TGVmdCA9PT0gdGFiVGl0bGVzWzBdLm9mZnNldExlZnQsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXRhYi1ncm91cC13aWR0aCcsIGAke3RoaXMuX3RhYkdyb3VwRWxlbWVudC5jbGllbnRXaWR0aH1weGApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uVGFiQ29udGVudEVsZW1lbnRSZXNpemUoZW50cmllczogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBjb25zdCBjb250ZW50SGVpZ2h0ID0gTWF0aC5mbG9vcihlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQpO1xuXG4gICAgICAodGhpcy5fdGFiQ29udGVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmhlaWdodCA9IGAke2NvbnRlbnRIZWlnaHR9cHhgO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZSh0YWJMYWJlbDogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWIpOiB2b2lkIHtcbiAgICB0YWJMYWJlbC50YWJHcm91cEFjdGlvbnMgPSB7XG4gICAgICBhY3RpdmF0ZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICB0YWJMYWJlbC50b2dnbGVBdHRyaWJ1dGUoJ2FjdGl2ZScsIHRydWUpO1xuICAgICAgICB0YWJMYWJlbC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0YWJMYWJlbC50YWJJbmRleCA9IDA7XG4gICAgICAgIHRhYkxhYmVsLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsICd0cnVlJyk7XG4gICAgICAgIHRhYkxhYmVsLnRhYj8udG9nZ2xlQXR0cmlidXRlKCdhY3RpdmUnLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICBkZWFjdGl2YXRlOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRhYkxhYmVsLnJlbW92ZUF0dHJpYnV0ZSgnYWN0aXZlJyk7XG4gICAgICAgIHRhYkxhYmVsLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0YWJMYWJlbC50YWJJbmRleCA9IC0xO1xuICAgICAgICB0YWJMYWJlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgdGFiTGFiZWwudGFiPy5yZW1vdmVBdHRyaWJ1dGUoJ2FjdGl2ZScpO1xuICAgICAgfSxcbiAgICAgIGRpc2FibGU6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKHRhYkxhYmVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGFiTGFiZWwuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKSB7XG4gICAgICAgICAgdGFiTGFiZWwudG9nZ2xlQXR0cmlidXRlKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRhYkxhYmVsLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgdGFiTGFiZWwudGFiSW5kZXggPSAtMTtcbiAgICAgICAgdGFiTGFiZWwuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyk7XG4gICAgICAgIHRhYkxhYmVsLnRhYj8ucmVtb3ZlQXR0cmlidXRlKCdhY3RpdmUnKTtcbiAgICAgICAgaWYgKHRhYkxhYmVsLmFjdGl2ZSkge1xuICAgICAgICAgIHRhYkxhYmVsLnJlbW92ZUF0dHJpYnV0ZSgnYWN0aXZlJyk7XG4gICAgICAgICAgdGFiTGFiZWwuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fZW5hYmxlZFRhYnMoKVswXT8udGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVuYWJsZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGFiTGFiZWwuZGlzYWJsZWQpIHtcbiAgICAgICAgICB0YWJMYWJlbC5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgdGFiTGFiZWwuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHNlbGVjdDogKCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGFiTGFiZWwgIT09IHRoaXMuX3NlbGVjdGVkVGFiICYmICF0YWJMYWJlbC5kaXNhYmxlZCkge1xuICAgICAgICAgIGNvbnN0IHByZXZUYWIgPSB0aGlzLl9zZWxlY3RlZFRhYjtcblxuICAgICAgICAgIGlmIChwcmV2VGFiKSB7XG4gICAgICAgICAgICBwcmV2VGFiLnRhYkdyb3VwQWN0aW9ucz8uZGVhY3RpdmF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5fdGFiQ29udGVudFJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShwcmV2VGFiLnRhYiEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRhYkxhYmVsLnRhYkdyb3VwQWN0aW9ucz8uYWN0aXZhdGUoKTtcbiAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYiA9IHRhYkxhYmVsO1xuXG4gICAgICAgICAgdGhpcy5fdGFiQ29udGVudFJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGFiTGFiZWwudGFiISk7XG4gICAgICAgICAgY29uc3QgdGFicyA9IHRoaXMuX3RhYnM7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgICAgYWN0aXZlSW5kZXg6IHRhYnMuZmluZEluZGV4KChlKSA9PiBlID09PSB0YWJMYWJlbCksXG4gICAgICAgICAgICBhY3RpdmVUYWJMYWJlbDogdGFiTGFiZWwsXG4gICAgICAgICAgICBhY3RpdmVUYWI6IHRhYkxhYmVsLnRhYiBhcyBTYmJUYWJFbGVtZW50LFxuICAgICAgICAgICAgcHJldmlvdXNJbmRleDogdGFicy5maW5kSW5kZXgoKGUpID0+IGUgPT09IHByZXZUYWIpLFxuICAgICAgICAgICAgcHJldmlvdXNUYWJMYWJlbDogcHJldlRhYixcbiAgICAgICAgICAgIHByZXZpb3VzVGFiOiBwcmV2VGFiPy50YWIgYXMgU2JiVGFiRWxlbWVudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChpbXBvcnQubWV0YS5lbnYuREVWICYmIHRhYkxhYmVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdZb3UgY2Fubm90IGFjdGl2YXRlIGEgZGlzYWJsZWQgdGFiJyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAodGFiTGFiZWwubmV4dEVsZW1lbnRTaWJsaW5nPy5sb2NhbE5hbWUgPT09ICdzYmItdGFiJykge1xuICAgICAgdGFiTGFiZWwudGFiID0gdGFiTGFiZWwubmV4dEVsZW1lbnRTaWJsaW5nIGFzIFNiYlRhYkVsZW1lbnQ7XG4gICAgICB0YWJMYWJlbC50YWIuaWQgPSB0aGlzLl9hc3NpZ25JZCgpO1xuICAgICAgaWYgKHRhYkxhYmVsLnRhYiBpbnN0YW5jZW9mIFNiYlRhYkVsZW1lbnQpIHtcbiAgICAgICAgdGFiTGFiZWwudGFiLnRhYkluZGV4ID0gMDtcbiAgICAgICAgdGFiTGFiZWwudGFiLmNvbmZpZ3VyZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuICAgICAgdGFiTGFiZWwuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsICc8c2JiLXRhYj5ObyBjb250ZW50Ljwvc2JiLXRhYj4nKTtcbiAgICAgIHRhYkxhYmVsLnRhYiA9IHRhYkxhYmVsLm5leHRFbGVtZW50U2libGluZyBhcyBTYmJUYWJFbGVtZW50O1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgTWlzc2luZyBjb250ZW50OiB5b3Ugc2hvdWxkIHByb3ZpZGUgYSByZWxhdGVkIGNvbnRlbnQgZm9yIHRoZSB0YWIgJHt0YWJMYWJlbC5vdXRlckhUTUx9LmAsXG4gICAgICApO1xuICAgIH1cbiAgICB0YWJMYWJlbC50YWJJbmRleCA9IC0xO1xuICAgIHRhYkxhYmVsLmRpc2FibGVkID0gdGFiTGFiZWwuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICAgIHRhYkxhYmVsLmFjdGl2ZSA9IHRhYkxhYmVsLmhhc0F0dHJpYnV0ZSgnYWN0aXZlJykgJiYgIXRhYkxhYmVsLmRpc2FibGVkO1xuICAgIHRhYkxhYmVsLnNldEF0dHJpYnV0ZSgncm9sZScsICd0YWInKTtcbiAgICB0YWJMYWJlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCAnZmFsc2UnKTtcbiAgICB0YWJMYWJlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRhYkxhYmVsLnRhYkdyb3VwQWN0aW9ucz8uc2VsZWN0KCk7XG4gICAgfSk7XG4gICAgaWYgKHRhYkxhYmVsLnRhYikge1xuICAgICAgdGFiTGFiZWwuc2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJywgdGFiTGFiZWwudGFiLmlkKTtcbiAgICAgIHRhYkxhYmVsLnRhYi5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAndGFicGFuZWwnKTtcbiAgICAgIHRhYkxhYmVsLnRhYi50b2dnbGVBdHRyaWJ1dGUoJ2FjdGl2ZScsIHRhYkxhYmVsLmFjdGl2ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fdGFiQXR0cmlidXRlT2JzZXJ2ZXIub2JzZXJ2ZSh0YWJMYWJlbCk7XG4gICAgdGFiTGFiZWwuc2xvdCA9ICd0YWItYmFyJztcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUtleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZFRhYnM6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW10gPSB0aGlzLl9lbmFibGVkVGFicygpO1xuXG4gICAgaWYgKFxuICAgICAgIWVuYWJsZWRUYWJzIHx8XG4gICAgICAvLyBkb24ndCB0cmFwIG5lc3RlZCBoYW5kbGluZ1xuICAgICAgKChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAhPT0gdGhpcyAmJiAoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudCAhPT0gdGhpcylcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJvd0tleVByZXNzZWQoZXZ0KSkge1xuICAgICAgY29uc3QgY3VycmVudDogbnVtYmVyID0gZW5hYmxlZFRhYnMuZmluZEluZGV4KCh0OiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYikgPT4gdC5hY3RpdmUpO1xuICAgICAgY29uc3QgbmV4dEluZGV4OiBudW1iZXIgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2dCwgY3VycmVudCwgZW5hYmxlZFRhYnMubGVuZ3RoKTtcbiAgICAgIGVuYWJsZWRUYWJzW25leHRJbmRleF0/LnRhYkdyb3VwQWN0aW9ucz8uc2VsZWN0KCk7XG4gICAgICBlbmFibGVkVGFic1tuZXh0SW5kZXhdPy5mb2N1cygpO1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGFiLWdyb3VwXCJcbiAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fdGFiR3JvdXBFbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRhYi1iYXJcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX29uVGFic1Nsb3RDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cbiAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aHJvdHRsZSh0aGlzLl9vbkNvbnRlbnRTbG90Q2hhbmdlLCAxNTApfT48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdGFiLWdyb3VwJzogU2JiVGFiR3JvdXBFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiU2JiVGFiR3JvdXBFbGVtZW50IiwiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJDQSxNQUFNLG9CQUEwQztBQUFBLEVBQzlDLGlCQUFpQixDQUFDLFVBQVUsVUFBVTs7QUFHeEMsSUFBSSxTQUFTO0lBV1Asc0JBQWtCLE1BQUE7OzBCQUR2QixjQUFjLGVBQWUsQ0FBQzs7OztvQkFDRSxrQkFBa0IsVUFBVTs7Ozs7O0FBQXBDQSxNQUFBQSx1QkFBQSxtQkFBUSxZQUE2QjtBQUFBOztBQTRDNUQ7QUF0Q1EsV0FBQSxTQU5KLGtCQUFBLE1BQUEsMEJBQUEsR0FNdUMsQ0FBQTtBQUluQyxXQUFBLFNBQVMsSUFBSSw0QkFBNEIsSUFBSTtBQUM3QyxXQUFBLHdCQUF3QixJQUFJLG1CQUFtQixNQUFNO0FBQUEsUUFDM0QsUUFBUTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsVUFBVSxDQUFDLGtCQUFrQixLQUFLLHVCQUF1QixhQUFhO0FBQUEsTUFBQSxDQUN2RTtBQUNPLFdBQUEsMEJBQTBCLElBQUksaUJBQWlCLE1BQU07QUFBQSxRQUMzRCxRQUFRO0FBQUEsUUFDUixhQUFhO0FBQUEsUUFDYixVQUFVLENBQUMsWUFBWSxLQUFLLHlCQUF5QixPQUFPO0FBQUEsTUFBQSxDQUM3RDtBQUNPLFdBQUEsNEJBQTRCLElBQUksaUJBQWlCLE1BQU07QUFBQSxRQUM3RCxRQUFRO0FBQUEsUUFDUixhQUFhO0FBQUEsUUFDYixVQUFVLENBQUMsWUFBWSxL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
392
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvdGFicy90YWItZ3JvdXAvdGFiLWdyb3VwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBSZXNpemVDb250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9yZXNpemUtY29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IGdldE5leHRFbGVtZW50SW5kZXgsIGlzQXJyb3dLZXlQcmVzc2VkIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgdGhyb3R0bGUgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUYWJMYWJlbEVsZW1lbnQgfSBmcm9tICcuLi90YWItbGFiZWwuanMnO1xuaW1wb3J0IHsgU2JiVGFiRWxlbWVudCB9IGZyb20gJy4uL3RhYi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RhYi1ncm91cC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgdHlwZSBTYmJUYWJDaGFuZ2VkRXZlbnREZXRhaWxzID0ge1xuICBhY3RpdmVJbmRleDogbnVtYmVyO1xuICBhY3RpdmVUYWJMYWJlbDogU2JiVGFiTGFiZWxFbGVtZW50O1xuICBhY3RpdmVUYWI6IFNiYlRhYkVsZW1lbnQ7XG4gIHByZXZpb3VzSW5kZXg6IG51bWJlcjtcbiAgcHJldmlvdXNUYWJMYWJlbDogU2JiVGFiTGFiZWxFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBwcmV2aW91c1RhYjogU2JiVGFiRWxlbWVudCB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlU2JiVGFiR3JvdXBBY3Rpb25zIHtcbiAgYWN0aXZhdGUoKTogdm9pZDtcbiAgZGVhY3RpdmF0ZSgpOiB2b2lkO1xuICBlbmFibGUoKTogdm9pZDtcbiAgZGlzYWJsZSgpOiB2b2lkO1xuICBzZWxlY3QoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYiBleHRlbmRzIFNiYlRhYkxhYmVsRWxlbWVudCB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHRhYj86IFNiYlRhYkVsZW1lbnQ7XG4gIGluZGV4PzogbnVtYmVyO1xuICB0YWJHcm91cEFjdGlvbnM/OiBJbnRlcmZhY2VTYmJUYWJHcm91cEFjdGlvbnM7XG4gIHNpemU6ICdzJyB8ICdsJyB8ICd4bCc7XG59XG5cbmNvbnN0IHRhYk9ic2VydmVyQ29uZmlnOiBNdXRhdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgYXR0cmlidXRlRmlsdGVyOiBbJ2FjdGl2ZScsICdkaXNhYmxlZCddLFxufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgb25lIG9yIG1vcmUgdGFicywgZWFjaCBvbmUgd2l0aCBhIGxhYmVsIGFuZCBhIGNvbnRlbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgY29udGVudCB0byB0aGUgYHNiYi10YWItZ3JvdXBgIHZpYVxuICogYHNiYi10YWItbGFiZWxgIGFuZCBgc2JiLXRhYmAgaW5zdGFuY2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDxTYmJUYWJDaGFuZ2VkRXZlbnREZXRhaWxzPn0gZGlkQ2hhbmdlIC0gRW1pdHMgYW4gZXZlbnQgb24gc2VsZWN0ZWQgdGFiIGNoYW5nZS5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLXRhYi1ncm91cCcpXG5jbGFzcyBTYmJUYWJHcm91cEVsZW1lbnQgZXh0ZW5kcyBTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBkaWRDaGFuZ2U6ICdkaWRDaGFuZ2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIHByaXZhdGUgX3RhYnM6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW10gPSBbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRUYWI/OiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYjtcbiAgcHJpdmF0ZSBfdGFiR3JvdXBFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3RhYkNvbnRlbnRFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2Fib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfdGFiQXR0cmlidXRlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25Db250cm9sbGVyKHRoaXMsIHtcbiAgICB0YXJnZXQ6IG51bGwsXG4gICAgY29uZmlnOiB0YWJPYnNlcnZlckNvbmZpZyxcbiAgICBjYWxsYmFjazogKG11dGF0aW9uc0xpc3QpID0+IHRoaXMuX29uVGFiQXR0cmlidXRlc0NoYW5nZShtdXRhdGlvbnNMaXN0KSxcbiAgfSk7XG4gIHByaXZhdGUgX3RhYkdyb3VwUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoZW50cmllcykgPT4gdGhpcy5fb25UYWJHcm91cEVsZW1lbnRSZXNpemUoZW50cmllcyksXG4gIH0pO1xuICBwcml2YXRlIF90YWJDb250ZW50UmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoZW50cmllcykgPT4gdGhpcy5fb25UYWJDb250ZW50RWxlbWVudFJlc2l6ZShlbnRyaWVzKSxcbiAgfSk7XG5cbiAgLyoqIFNpemUgdmFyaWFudCwgZWl0aGVyIHMsIGwgb3IgeGwuICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgc2l6ZSh2YWx1ZTogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWJbJ3NpemUnXSkge1xuICAgIHRoaXMuX3NpemUgPSB2YWx1ZTtcbiAgICB0aGlzLl91cGRhdGVTaXplKCk7XG4gIH1cbiAgcHVibGljIGdldCBzaXplKCk6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiWydzaXplJ10ge1xuICAgIHJldHVybiB0aGlzLl9zaXplO1xuICB9XG4gIHByaXZhdGUgX3NpemU6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiWydzaXplJ10gPSAnbCc7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluaXRpYWwgdGFiLiBJZiBpdCBtYXRjaGVzIGEgZGlzYWJsZWQgdGFiIG9yIGV4Y2VlZHMgdGhlIGxlbmd0aCBvZlxuICAgKiB0aGUgdGFiIGdyb3VwLCB0aGUgZmlyc3QgZW5hYmxlZCB0YWIgd2lsbCBiZSBzZWxlY3RlZC5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdpbml0aWFsLXNlbGVjdGVkLWluZGV4JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBpbml0aWFsU2VsZWN0ZWRJbmRleDogbnVtYmVyID0gMDtcblxuICAvKiogRW1pdHMgYW4gZXZlbnQgb24gc2VsZWN0ZWQgdGFiIGNoYW5nZS4gKi9cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRUYWJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8U2JiVGFiQ2hhbmdlZEV2ZW50RGV0YWlscz4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiVGFiR3JvdXBFbGVtZW50LmV2ZW50cy5kaWRDaGFuZ2UsXG4gICk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpLCB7IHNpZ25hbCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIHRoaXMuX3RhYnMgPSB0aGlzLl9nZXRUYWJzKCk7XG4gICAgdGhpcy5fdGFicy5mb3JFYWNoKCh0YWIpID0+IHRoaXMuX2NvbmZpZ3VyZSh0YWIpKTtcbiAgICB0aGlzLl9pbml0U2VsZWN0aW9uKCk7XG4gICAgdGhpcy5fdGFiR3JvdXBSZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX3RhYkdyb3VwRWxlbWVudCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZXMgYSB0YWIgYnkgaW5kZXguXG4gICAqIEBwYXJhbSB0YWJJbmRleCBUaGUgaW5kZXggb2YgdGhlIHRhYiB5b3Ugd2FudCB0byBkaXNhYmxlLlxuICAgKi9cbiAgcHVibGljIGRpc2FibGVUYWIodGFiSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3RhYnNbdGFiSW5kZXhdPy50YWJHcm91cEFjdGlvbnM/LmRpc2FibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGEgdGFiIGJ5IGluZGV4LlxuICAgKiBAcGFyYW0gdGFiSW5kZXggVGhlIGluZGV4IG9mIHRoZSB0YWIgeW91IHdhbnQgdG8gZW5hYmxlLlxuICAgKi9cbiAgcHVibGljIGVuYWJsZVRhYih0YWJJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdGFic1t0YWJJbmRleF0/LnRhYkdyb3VwQWN0aW9ucz8uZW5hYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIGEgdGFiIGJ5IGluZGV4LlxuICAgKiBAcGFyYW0gdGFiSW5kZXggVGhlIGluZGV4IG9mIHRoZSB0YWIgeW91IHdhbnQgdG8gYWN0aXZhdGUuXG4gICAqL1xuICBwdWJsaWMgYWN0aXZhdGVUYWIodGFiSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3RhYnNbdGFiSW5kZXhdPy50YWJHcm91cEFjdGlvbnM/LnNlbGVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VGFicygpOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuID8/IFtdKS5maWx0ZXIoKGNoaWxkKSA9PlxuICAgICAgL15zYmItdGFiLWxhYmVsJC91LnRlc3QoY2hpbGQubG9jYWxOYW1lKSxcbiAgICApIGFzIEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW107XG4gIH1cblxuICBwcml2YXRlIF9lbmFibGVkVGFicygpOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYltdIHtcbiAgICByZXR1cm4gdGhpcy5fdGFicy5maWx0ZXIoKHQpID0+ICF0Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTaXplKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgdGFiIG9mIHRoaXMuX3RhYnMpIHtcbiAgICAgIHRhYi5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2l6ZScsIHRoaXMuc2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25Db250ZW50U2xvdENoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLl90YWJDb250ZW50RWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignZGl2LnRhYi1jb250ZW50JykhO1xuICAgIGNvbnN0IGxvYWRlZFRhYnMgPSB0aGlzLl9nZXRUYWJzKCkuZmlsdGVyKCh0YWIpID0+ICF0aGlzLl90YWJzLmluY2x1ZGVzKHRhYikpO1xuXG4gICAgLy8gaWYgYSBuZXcgdGFiL2NvbnRlbnQgaXMgYWRkZWQgdG8gdGhlIHRhYiBncm91cFxuICAgIGlmIChsb2FkZWRUYWJzLmxlbmd0aCkge1xuICAgICAgbG9hZGVkVGFicy5mb3JFYWNoKCh0YWIpID0+IHRoaXMuX2NvbmZpZ3VyZSh0YWIpKTtcbiAgICAgIHRoaXMuX3RhYnMgPSB0aGlzLl90YWJzLmNvbmNhdChsb2FkZWRUYWJzKTtcblxuICAgICAgLy8gSWYgdGhlcmUgaXMgYW4gYWN0aXZlIHRhYiBpbiB0aGUgbmV3IGJhdGNoLCBpdCBiZWNvbWVzIHRoZSBuZXcgc2VsZWN0ZWRcbiAgICAgIGxvYWRlZFRhYnMuZmluZCgodGFiKSA9PiB0YWIuYWN0aXZlKT8udGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25UYWJzU2xvdENoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCB0YWJzID0gdGhpcy5fZ2V0VGFicygpO1xuXG4gICAgLy8gaWYgYSB0YWIgaXMgcmVtb3ZlZCBmcm9tIHRoZSB0YWIgZ3JvdXBcbiAgICBpZiAodGFicy5sZW5ndGggPCB0aGlzLl90YWJzLmxlbmd0aCkge1xuICAgICAgY29uc3QgcmVtb3ZlZFRhYnMgPSB0aGlzLl90YWJzLmZpbHRlcigodGFiKSA9PiAhdGFicy5pbmNsdWRlcyh0YWIpKTtcblxuICAgICAgcmVtb3ZlZFRhYnMuZm9yRWFjaCgocmVtb3ZlZFRhYikgPT4ge1xuICAgICAgICByZW1vdmVkVGFiLnRhYj8ucmVtb3ZlKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3RhYnMgPSB0YWJzO1xuICAgIH1cbiAgICB0aGlzLl90YWJzLmZvckVhY2goKHRhYjogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWIpID0+IHRhYi5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2l6ZScsIHRoaXMuc2l6ZSkpO1xuICB9O1xuXG4gIHByaXZhdGUgX2Fzc2lnbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBzYmItdGFiLXBhbmVsLSR7KytuZXh0SWR9YDtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5pbml0aWFsU2VsZWN0ZWRJbmRleCA+PSAwICYmXG4gICAgICB0aGlzLmluaXRpYWxTZWxlY3RlZEluZGV4IDwgdGhpcy5fdGFicy5sZW5ndGggJiZcbiAgICAgICF0aGlzLl90YWJzW3RoaXMuaW5pdGlhbFNlbGVjdGVkSW5kZXhdLmRpc2FibGVkXG4gICAgKSB7XG4gICAgICB0aGlzLl90YWJzW3RoaXMuaW5pdGlhbFNlbGVjdGVkSW5kZXhdLnRhYkdyb3VwQWN0aW9ucz8uc2VsZWN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VuYWJsZWRUYWJzKClbMF0/LnRhYkdyb3VwQWN0aW9ucz8uc2VsZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25UYWJBdHRyaWJ1dGVzQ2hhbmdlKG11dGF0aW9uc0xpc3Q6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHtcbiAgICAgIGlmIChtdXRhdGlvbi50eXBlICE9PSAnYXR0cmlidXRlcycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFiID0gbXV0YXRpb24udGFyZ2V0IGFzIEludGVyZmFjZVNiYlRhYkdyb3VwVGFiO1xuXG4gICAgICBpZiAobXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ2Rpc2FibGVkJykge1xuICAgICAgICBpZiAodGFiLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSAmJiB0YWIgIT09IHRoaXMuX3NlbGVjdGVkVGFiKSB7XG4gICAgICAgICAgdGFiLnRhYkdyb3VwQWN0aW9ucz8uZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhYi5kaXNhYmxlZCkge1xuICAgICAgICAgIHRhYi50YWJHcm91cEFjdGlvbnM/LmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgICAgaWYgKHRhYi5oYXNBdHRyaWJ1dGUoJ2FjdGl2ZScpICYmICF0YWIuZGlzYWJsZWQpIHtcbiAgICAgICAgICB0YWIudGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YWIgPT09IHRoaXMuX3NlbGVjdGVkVGFiKSB7XG4gICAgICAgICAgdGFiLnRvZ2dsZUF0dHJpYnV0ZSgnYWN0aXZlJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vblRhYkdyb3VwRWxlbWVudFJlc2l6ZShlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IHRhYlRpdGxlcyA9IChcbiAgICAgICAgZW50cnkudGFyZ2V0LmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxTbG90RWxlbWVudFxuICAgICAgKS5hc3NpZ25lZEVsZW1lbnRzKCkgYXMgU2JiVGFiTGFiZWxFbGVtZW50W107XG5cbiAgICAgIGZvciAoY29uc3QgdGFiIG9mIHRhYlRpdGxlcykge1xuICAgICAgICB0YWIudG9nZ2xlQXR0cmlidXRlKFxuICAgICAgICAgICdkYXRhLWhhcy1kaXZpZGVyJyxcbiAgICAgICAgICB0YWIgPT09IHRhYlRpdGxlc1swXSB8fCB0YWIub2Zmc2V0TGVmdCA9PT0gdGFiVGl0bGVzWzBdLm9mZnNldExlZnQsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXRhYi1ncm91cC13aWR0aCcsIGAke3RoaXMuX3RhYkdyb3VwRWxlbWVudC5jbGllbnRXaWR0aH1weGApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uVGFiQ29udGVudEVsZW1lbnRSZXNpemUoZW50cmllczogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90YWJDb250ZW50RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSBNYXRoLmZsb29yKGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodCk7XG5cbiAgICAgIHRoaXMuX3RhYkNvbnRlbnRFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2NvbnRlbnRIZWlnaHR9cHhgO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZSh0YWJMYWJlbDogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWIpOiB2b2lkIHtcbiAgICB0YWJMYWJlbC50YWJHcm91cEFjdGlvbnMgPSB7XG4gICAgICBhY3RpdmF0ZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICB0YWJMYWJlbC50b2dnbGVBdHRyaWJ1dGUoJ2FjdGl2ZScsIHRydWUpO1xuICAgICAgICB0YWJMYWJlbC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0YWJMYWJlbC50YWJJbmRleCA9IDA7XG4gICAgICAgIHRhYkxhYmVsLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsICd0cnVlJyk7XG4gICAgICAgIHRhYkxhYmVsLnRhYj8udG9nZ2xlQXR0cmlidXRlKCdhY3RpdmUnLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICBkZWFjdGl2YXRlOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRhYkxhYmVsLnJlbW92ZUF0dHJpYnV0ZSgnYWN0aXZlJyk7XG4gICAgICAgIHRhYkxhYmVsLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0YWJMYWJlbC50YWJJbmRleCA9IC0xO1xuICAgICAgICB0YWJMYWJlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgdGFiTGFiZWwudGFiPy5yZW1vdmVBdHRyaWJ1dGUoJ2FjdGl2ZScpO1xuICAgICAgfSxcbiAgICAgIGRpc2FibGU6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKHRhYkxhYmVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGFiTGFiZWwuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKSB7XG4gICAgICAgICAgdGFiTGFiZWwudG9nZ2xlQXR0cmlidXRlKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRhYkxhYmVsLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgdGFiTGFiZWwudGFiSW5kZXggPSAtMTtcbiAgICAgICAgdGFiTGFiZWwuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyk7XG4gICAgICAgIHRhYkxhYmVsLnRhYj8ucmVtb3ZlQXR0cmlidXRlKCdhY3RpdmUnKTtcbiAgICAgICAgaWYgKHRhYkxhYmVsLmFjdGl2ZSkge1xuICAgICAgICAgIHRhYkxhYmVsLnJlbW92ZUF0dHJpYnV0ZSgnYWN0aXZlJyk7XG4gICAgICAgICAgdGFiTGFiZWwuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fZW5hYmxlZFRhYnMoKVswXT8udGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVuYWJsZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGFiTGFiZWwuZGlzYWJsZWQpIHtcbiAgICAgICAgICB0YWJMYWJlbC5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgdGFiTGFiZWwuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHNlbGVjdDogKCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGFiTGFiZWwgIT09IHRoaXMuX3NlbGVjdGVkVGFiICYmICF0YWJMYWJlbC5kaXNhYmxlZCkge1xuICAgICAgICAgIGNvbnN0IHByZXZUYWIgPSB0aGlzLl9zZWxlY3RlZFRhYjtcblxuICAgICAgICAgIGlmIChwcmV2VGFiKSB7XG4gICAgICAgICAgICBwcmV2VGFiLnRhYkdyb3VwQWN0aW9ucz8uZGVhY3RpdmF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5fdGFiQ29udGVudFJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShwcmV2VGFiLnRhYiEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRhYkxhYmVsLnRhYkdyb3VwQWN0aW9ucz8uYWN0aXZhdGUoKTtcbiAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYiA9IHRhYkxhYmVsO1xuXG4gICAgICAgICAgdGhpcy5fdGFiQ29udGVudFJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGFiTGFiZWwudGFiISk7XG4gICAgICAgICAgY29uc3QgdGFicyA9IHRoaXMuX3RhYnM7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgICAgYWN0aXZlSW5kZXg6IHRhYnMuZmluZEluZGV4KChlKSA9PiBlID09PSB0YWJMYWJlbCksXG4gICAgICAgICAgICBhY3RpdmVUYWJMYWJlbDogdGFiTGFiZWwsXG4gICAgICAgICAgICBhY3RpdmVUYWI6IHRhYkxhYmVsLnRhYiBhcyBTYmJUYWJFbGVtZW50LFxuICAgICAgICAgICAgcHJldmlvdXNJbmRleDogdGFicy5maW5kSW5kZXgoKGUpID0+IGUgPT09IHByZXZUYWIpLFxuICAgICAgICAgICAgcHJldmlvdXNUYWJMYWJlbDogcHJldlRhYixcbiAgICAgICAgICAgIHByZXZpb3VzVGFiOiBwcmV2VGFiPy50YWIgYXMgU2JiVGFiRWxlbWVudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChpbXBvcnQubWV0YS5lbnYuREVWICYmIHRhYkxhYmVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdZb3UgY2Fubm90IGFjdGl2YXRlIGEgZGlzYWJsZWQgdGFiJyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGlmICh0YWJMYWJlbC5uZXh0RWxlbWVudFNpYmxpbmc/LmxvY2FsTmFtZSA9PT0gJ3NiYi10YWInKSB7XG4gICAgICB0YWJMYWJlbC50YWIgPSB0YWJMYWJlbC5uZXh0RWxlbWVudFNpYmxpbmcgYXMgU2JiVGFiRWxlbWVudDtcbiAgICAgIHRhYkxhYmVsLnRhYi5pZCA9IHRoaXMuX2Fzc2lnbklkKCk7XG4gICAgICBpZiAodGFiTGFiZWwudGFiIGluc3RhbmNlb2YgU2JiVGFiRWxlbWVudCkge1xuICAgICAgICB0YWJMYWJlbC50YWIudGFiSW5kZXggPSAwO1xuICAgICAgICB0YWJMYWJlbC50YWIuY29uZmlndXJlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpbXBvcnQubWV0YS5lbnYuREVWKSB7XG4gICAgICB0YWJMYWJlbC5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywgJzxzYmItdGFiPk5vIGNvbnRlbnQuPC9zYmItdGFiPicpO1xuICAgICAgdGFiTGFiZWwudGFiID0gdGFiTGFiZWwubmV4dEVsZW1lbnRTaWJsaW5nIGFzIFNiYlRhYkVsZW1lbnQ7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBNaXNzaW5nIGNvbnRlbnQ6IHlvdSBzaG91bGQgcHJvdmlkZSBhIHJlbGF0ZWQgY29udGVudCBmb3IgdGhlIHRhYiAke3RhYkxhYmVsLm91dGVySFRNTH0uYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRhYkxhYmVsLnRhYkluZGV4ID0gLTE7XG4gICAgdGFiTGFiZWwuZGlzYWJsZWQgPSB0YWJMYWJlbC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XG4gICAgdGFiTGFiZWwuYWN0aXZlID0gdGFiTGFiZWwuaGFzQXR0cmlidXRlKCdhY3RpdmUnKSAmJiAhdGFiTGFiZWwuZGlzYWJsZWQ7XG4gICAgdGFiTGFiZWwuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3RhYicpO1xuICAgIHRhYkxhYmVsLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsIFN0cmluZyh0YWJMYWJlbC5hY3RpdmUpKTtcbiAgICB0YWJMYWJlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRhYkxhYmVsLnRhYkdyb3VwQWN0aW9ucz8uc2VsZWN0KCk7XG4gICAgfSk7XG4gICAgaWYgKHRhYkxhYmVsLnRhYikge1xuICAgICAgdGFiTGFiZWwuc2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJywgdGFiTGFiZWwudGFiLmlkKTtcbiAgICAgIHRhYkxhYmVsLnRhYi5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAndGFicGFuZWwnKTtcbiAgICAgIHRhYkxhYmVsLnRhYi50b2dnbGVBdHRyaWJ1dGUoJ2FjdGl2ZScsIHRhYkxhYmVsLmFjdGl2ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fdGFiQXR0cmlidXRlT2JzZXJ2ZXIub2JzZXJ2ZSh0YWJMYWJlbCk7XG4gICAgdGFiTGFiZWwuc2xvdCA9ICd0YWItYmFyJztcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUtleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZFRhYnM6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW10gPSB0aGlzLl9lbmFibGVkVGFicygpO1xuXG4gICAgaWYgKFxuICAgICAgIWVuYWJsZWRUYWJzIHx8XG4gICAgICAvLyBkb24ndCB0cmFwIG5lc3RlZCBoYW5kbGluZ1xuICAgICAgKChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAhPT0gdGhpcyAmJiAoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudCAhPT0gdGhpcylcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJvd0tleVByZXNzZWQoZXZ0KSkge1xuICAgICAgY29uc3QgY3VycmVudDogbnVtYmVyID0gZW5hYmxlZFRhYnMuZmluZEluZGV4KCh0OiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYikgPT4gdC5hY3RpdmUpO1xuICAgICAgY29uc3QgbmV4dEluZGV4OiBudW1iZXIgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2dCwgY3VycmVudCwgZW5hYmxlZFRhYnMubGVuZ3RoKTtcbiAgICAgIGVuYWJsZWRUYWJzW25leHRJbmRleF0/LnRhYkdyb3VwQWN0aW9ucz8uc2VsZWN0KCk7XG4gICAgICBlbmFibGVkVGFic1tuZXh0SW5kZXhdPy5mb2N1cygpO1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGFiLWdyb3VwXCJcbiAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fdGFiR3JvdXBFbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRhYi1iYXJcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX29uVGFic1Nsb3RDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cbiAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aHJvdHRsZSh0aGlzLl9vbkNvbnRlbnRTbG90Q2hhbmdlLCAxNTApfT48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdGFiLWdyb3VwJzogU2JiVGFiR3JvdXBFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiU2JiVGFiR3JvdXBFbGVtZW50IiwiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJDQSxNQUFNLG9CQUEwQztBQUFBLEVBQzlDLGlCQUFpQixDQUFDLFVBQVUsVUFBVTs7QUFHeEMsSUFBSSxTQUFTO0lBV1Asc0JBQWtCLE1BQUE7OzBCQUR2QixjQUFjLGVBQWUsQ0FBQzs7OztvQkFDRSxrQkFBa0IsVUFBVTs7Ozs7O0FBQXBDQSxNQUFBQSx1QkFBQSxtQkFBUSxZQUE2QjtBQUFBOztBQTRDNUQ7QUF0Q1EsV0FBQSxTQU5KLGtCQUFBLE1BQUEsMEJBQUEsR0FNdUMsQ0FBQTtBQUluQyxXQUFBLFNBQVMsSUFBSSw0QkFBNEIsSUFBSTtBQUM3QyxXQUFBLHdCQUF3QixJQUFJLG1CQUFtQixNQUFNO0FBQUEsUUFDM0QsUUFBUTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsVUFBVSxDQUFDLGtCQUFrQixLQUFLLHVCQUF1QixhQUFhO0FBQUEsTUFBQSxDQUN2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
@@ -68,6 +68,8 @@ export declare class SbbFormFieldElement extends SbbFormFieldElement_base {
68
68
  private _syncLabelInputReferences;
69
69
  private _registerInputListener;
70
70
  private _getInputForm;
71
+ private _patchInputValue;
72
+ private _unpatchInputValue;
71
73
  private _checkAndUpdateInputEmpty;
72
74
  private _isInputEmpty;
73
75
  private _isInputValueEmpty;
@@ -1 +1 @@
1
- {"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../../../src/elements/form-field/form-field/form-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAY,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC9F,OAAO,EAAQ,UAAU,EAAW,MAAM,KAAK,CAAC;AAchD,OAAO,eAAe,CAAC;;AAOvB;;;;;;;;GAQG;AACH,qBAGM,mBAAoB,SAAQ,wBAA+C;IAC/E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAmC;IAEjF,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAItC;IAEF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA6B;IAEpE,OAAO,CAAC,QAAQ,CAAC,oCAAoC,CAKnD;IAEF,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAQhD;IAEF;;;;OAIG;IACH,SACgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAU;IAExD,+CAA+C;IAC/C,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C,mCAAmC;IACnC,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAO;IAEzE,0DAA0D;IAC1D,SAEgB,UAAU,EAAE,OAAO,CAAS;IAE5C;;+EAE2E;IAC3E,SAA6C,KAAK,EAAE,SAAS,GAAG,UAAU,CAAa;IAEvF,wFAAwF;IACxF,SAEgB,WAAW,EAAE,OAAO,CAAS;IAE7C,4FAA4F;IAC5F,SAEgB,aAAa,EAAE,OAAO,CAAS;IAE/C,qDAAqD;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEzD,oEAAoE;IACpE,OAAO,CAAC,6BAA6B,CAAC,CAAgB;IAEtD,8CAA8C;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkE;IAElG,+CAA+C;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAEpD,iCAAiC;IACjC,IAAW,YAAY,IAAI,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS,CAExF;IAED,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,SAAS,CAAmC;IAEpD;;OAEG;IACH,OAAO,CAAC,2BAA2B,CAM1B;IAET,OAAO,CAAC,qBAAqB,CAAyB;IAEtC,iBAAiB,IAAI,IAAI;cAStB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ5D,oBAAoB,IAAI,IAAI;IAM5C,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,yBAAyB;IA4BjC,OAAO,CAAC,sBAAsB;IAuD9B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,qBAAqB;IAiB7B,qFAAqF;IAC9E,KAAK,IAAI,IAAI;IAIpB,4FAA4F;IACrF,KAAK,IAAI,IAAI;IAQpB;;;OAGG;IACI,eAAe,IAAI,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS;IAIxF,OAAO,CAAC,aAAa;cAMF,MAAM,IAAI,cAAc;CAmC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,mBAAmB,CAAC;KACvC;CACF"}
1
+ {"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../../../src/elements/form-field/form-field/form-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAY,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC9F,OAAO,EAAQ,UAAU,EAAW,MAAM,KAAK,CAAC;AAchD,OAAO,eAAe,CAAC;;AASvB;;;;;;;;GAQG;AACH,qBAGM,mBAAoB,SAAQ,wBAA+C;IAC/E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAmC;IAEjF,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAItC;IAEF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA6B;IAEpE,OAAO,CAAC,QAAQ,CAAC,oCAAoC,CAKnD;IAEF,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAQhD;IAEF;;;;OAIG;IACH,SACgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAU;IAExD,+CAA+C;IAC/C,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C,mCAAmC;IACnC,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAO;IAEzE,0DAA0D;IAC1D,SAEgB,UAAU,EAAE,OAAO,CAAS;IAE5C;;+EAE2E;IAC3E,SAA6C,KAAK,EAAE,SAAS,GAAG,UAAU,CAAa;IAEvF,wFAAwF;IACxF,SAEgB,WAAW,EAAE,OAAO,CAAS;IAE7C,4FAA4F;IAC5F,SAEgB,aAAa,EAAE,OAAO,CAAS;IAE/C,qDAAqD;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEzD,oEAAoE;IACpE,OAAO,CAAC,6BAA6B,CAAC,CAAgB;IAEtD,8CAA8C;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkE;IAElG,+CAA+C;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAEpD,iCAAiC;IACjC,IAAW,YAAY,IAAI,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS,CAExF;IAED,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,SAAS,CAAmC;IAEpD;;OAEG;IACH,OAAO,CAAC,2BAA2B,CAM1B;IAET,OAAO,CAAC,qBAAqB,CAAyB;IAEtC,iBAAiB,IAAI,IAAI;cAStB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ5D,oBAAoB,IAAI,IAAI;IAS5C,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,yBAAyB;IA4BjC,OAAO,CAAC,sBAAsB;IAyD9B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,qBAAqB;IAiB7B,qFAAqF;IAC9E,KAAK,IAAI,IAAI;IAIpB,4FAA4F;IACrF,KAAK,IAAI,IAAI;IAQpB;;;OAGG;IACI,eAAe,IAAI,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS;IAIxF,OAAO,CAAC,aAAa;cAMF,MAAM,IAAI,cAAc;CAmC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,mBAAmB,CAAC;KACvC;CACF"}