@dsivd/prestations-ng 16.4.3 → 16.4.4-beta.1

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/CHANGELOG.md CHANGED
@@ -6,6 +6,36 @@
6
6
 
7
7
  ---
8
8
 
9
+ ## [16.4.4]
10
+
11
+ ### Fixed
12
+
13
+ - [foehn-input.component.ts](projects/prestations-ng/src/foehn-input/foehn-input.component.ts)
14
+
15
+ - fixed focus for component containing foehnInput subcomponents
16
+
17
+ - [foehn-input-prefixed-text.component.html](projects/prestations-ng/src/foehn-input/foehn-input-prefixed-text.component.html)
18
+ - [foehn-input-date-time.component.html](projects/prestations-ng/src/foehn-input-date-time/foehn-input-date-time.component.html)
19
+ - [foehn-input-date.component.html](projects/prestations-ng/src/foehn-input-date/foehn-input-date.component.html)
20
+ - [foehn-input-time.component.html](projects/prestations-ng/src/foehn-input-time/foehn-input-time.component.html)
21
+ - [foehn-input-nav13.component.html](projects/prestations-ng/src/foehn-nav13/foehn-input-nav13.component.html)
22
+
23
+ - fixed margin bottom being to big due to component having subcomponents
24
+
25
+ - [foehn-input-date-time.component.ts](projects/prestations-ng/src/foehn-input-date-time/foehn-input-date-time.component.ts)
26
+
27
+ - fixed model not being updated properly when clearing model
28
+ - fixed clearing model not taking into account disabled fields
29
+
30
+ - [foehn-input-date-time.component.html](projects/prestations-ng/src/foehn-input-date-time/foehn-input-date-time.component.html)
31
+ - fixed clear button visibility not taking into account disabled fields
32
+
33
+ ### Added
34
+
35
+ - [foehn-input-date-time.component.html](projects/prestations-ng/src/foehn-input-date-time/foehn-input-date-time.component.html)
36
+ - [foehn-input-time.component.html](projects/prestations-ng/src/foehn-input-time/foehn-input-time.component.html)
37
+ - Added clear button to empty fields
38
+
9
39
  ## [16.4.3]
10
40
 
11
41
  ### Fixed
@@ -96,7 +96,7 @@ FoehnInputPrefixedTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion:
96
96
  useExisting: forwardRef(() => FoehnInputPrefixedTextComponent),
97
97
  multi: true
98
98
  }
99
- ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend\n [attr.for]=\"buildChildId()\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"row\">\n <div [class]=\"prefixColClass\">\n <foehn-input-text\n [name]=\"name + '_prefix'\"\n [id]=\"buildId() + '_prefix'\"\n [model]=\"prefix\"\n [autocomplete]=\"'off'\"\n [disabled]=\"true\"\n ></foehn-input-text>\n </div>\n\n <div [class]=\"textColClass\">\n <foehn-input-text\n [name]=\"name + '_text'\"\n [id]=\"buildId() + '_text'\"\n [model]=\"text | async\"\n (modelChange)=\"onTextChange($event)\"\n [autocomplete]=\"'off'\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n </div>\n </div>\n </fieldset>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: i3.FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SdkDictionaryPipe, name: "fromDictionary" }] });
99
+ ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"form-group mb-0\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend\n [attr.for]=\"buildChildId()\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"row\">\n <div [class]=\"prefixColClass\">\n <foehn-input-text\n [name]=\"name + '_prefix'\"\n [id]=\"buildId() + '_prefix'\"\n [model]=\"prefix\"\n [autocomplete]=\"'off'\"\n [disabled]=\"true\"\n ></foehn-input-text>\n </div>\n\n <div [class]=\"textColClass\">\n <foehn-input-text\n [name]=\"name + '_text'\"\n [id]=\"buildId() + '_text'\"\n [model]=\"text | async\"\n (modelChange)=\"onTextChange($event)\"\n [autocomplete]=\"'off'\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n </div>\n </div>\n </fieldset>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: i3.FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SdkDictionaryPipe, name: "fromDictionary" }] });
100
100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FoehnInputPrefixedTextComponent, decorators: [{
101
101
  type: Component,
102
102
  args: [{ selector: 'foehn-input-prefixed-text', providers: [
@@ -105,7 +105,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
105
105
  useExisting: forwardRef(() => FoehnInputPrefixedTextComponent),
106
106
  multi: true
107
107
  }
108
- ], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend\n [attr.for]=\"buildChildId()\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"row\">\n <div [class]=\"prefixColClass\">\n <foehn-input-text\n [name]=\"name + '_prefix'\"\n [id]=\"buildId() + '_prefix'\"\n [model]=\"prefix\"\n [autocomplete]=\"'off'\"\n [disabled]=\"true\"\n ></foehn-input-text>\n </div>\n\n <div [class]=\"textColClass\">\n <foehn-input-text\n [name]=\"name + '_text'\"\n [id]=\"buildId() + '_text'\"\n [model]=\"text | async\"\n (modelChange)=\"onTextChange($event)\"\n [autocomplete]=\"'off'\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n </div>\n </div>\n </fieldset>\n</div>\n" }]
108
+ ], template: "<div\n class=\"form-group mb-0\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend\n [attr.for]=\"buildChildId()\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"row\">\n <div [class]=\"prefixColClass\">\n <foehn-input-text\n [name]=\"name + '_prefix'\"\n [id]=\"buildId() + '_prefix'\"\n [model]=\"prefix\"\n [autocomplete]=\"'off'\"\n [disabled]=\"true\"\n ></foehn-input-text>\n </div>\n\n <div [class]=\"textColClass\">\n <foehn-input-text\n [name]=\"name + '_text'\"\n [id]=\"buildId() + '_text'\"\n [model]=\"text | async\"\n (modelChange)=\"onTextChange($event)\"\n [autocomplete]=\"'off'\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n </div>\n </div>\n </fieldset>\n</div>\n" }]
109
109
  }], ctorParameters: function () { return []; }, propDecorators: { prefix: [{
110
110
  type: Input
111
111
  }], prefixColClass: [{
@@ -113,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
113
113
  }], textColClass: [{
114
114
  type: Input
115
115
  }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtcHJlZml4ZWQtdGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4taW5wdXQvZm9laG4taW5wdXQtcHJlZml4ZWQtdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4taW5wdXQvZm9laG4taW5wdXQtcHJlZml4ZWQtdGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBS1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGVBQWUsRUFDZixhQUFhLEVBQ2IsWUFBWSxFQUdaLEdBQUcsRUFDTixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFFM0UsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQWF4QyxNQUFNLE9BQU8sK0JBQ1QsU0FBUSx5QkFBeUI7SUFrQmpDO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFoQlosV0FBTSxHQUFHLGNBQWMsQ0FBQztRQUd4QixtQkFBYyxHQUFHLFVBQVUsQ0FBQztRQUc1QixpQkFBWSxHQUFHLFVBQVUsQ0FBQztRQUlsQixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFTLGNBQWMsQ0FBQyxDQUFDO1FBQzVELGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVMsU0FBUyxDQUFDLENBQUM7UUFDdEQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBUyxTQUFTLENBQUMsQ0FBQztRQUt6RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXO2FBQ3ZCLFlBQVks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QUFPLElBQUksQ0FBQzthQUNmO1lBRUQsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN0QztRQUNELE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUMxRCxDQUFDOzs0SEF2R1EsK0JBQStCO2dIQUEvQiwrQkFBK0Isa0pBUjdCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsK0JBQStCLENBQUM7WUFDOUQsS0FBSyxFQUFFLElBQUk7U0FDZDtLQUNKLHNFQ2hDTCwwakVBOERBOzJGRDVCYSwrQkFBK0I7a0JBWDNDLFNBQVM7K0JBQ0ksMkJBQTJCLGFBRTFCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdDQUFnQyxDQUFDOzRCQUM5RCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjswRUFNRCxNQUFNO3NCQURMLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQmVoYXZpb3JTdWJqZWN0LFxuICAgIGNvbWJpbmVMYXRlc3QsXG4gICAgZGVib3VuY2VUaW1lLFxuICAgIE9ic2VydmFibGUsXG4gICAgU3Vic2NyaXB0aW9uLFxuICAgIHRhcFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZm9laG4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvZWhuSW5wdXRTdHJpbmdDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLWlucHV0LXN0cmluZy5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QUkVGSVggPSAncHJlZml4ICc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4taW5wdXQtcHJlZml4ZWQtdGV4dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLWlucHV0LXByZWZpeGVkLXRleHQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5JbnB1dFByZWZpeGVkVGV4dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobklucHV0UHJlZml4ZWRUZXh0Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBGb2VobklucHV0U3RyaW5nQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KClcbiAgICBwcmVmaXggPSBERUZBVUxUX1BSRUZJWDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHJlZml4Q29sQ2xhc3MgPSAnY29sLW1kLTQnO1xuXG4gICAgQElucHV0KClcbiAgICB0ZXh0Q29sQ2xhc3MgPSAnY29sLW1kLTgnO1xuXG4gICAgdGV4dDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gICAgcHJpdmF0ZSBwcmVmaXhTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KERFRkFVTFRfUFJFRklYKTtcbiAgICBwcml2YXRlIG1vZGVsU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xuICAgIHByaXZhdGUgdGV4dFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odW5kZWZpbmVkKTtcbiAgICBwcml2YXRlIHByZWZpeE1vZGVsU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy50ZXh0U3ViamVjdFxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy51cGRhdGVGdWxsVGV4dCgpKSk7XG4gICAgICAgIHRoaXMucHJlZml4TW9kZWxTdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMucHJlZml4U3ViamVjdC5hc09ic2VydmFibGUoKSxcbiAgICAgICAgICAgIHRoaXMubW9kZWxTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgIF0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICAgICAgdGFwKChbcHJlZml4LCBtb2RlbF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNFbXB0eShtb2RlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dFN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBQcmVmaXggbmVlZHMgdG8gYmUgZXh0cmFjdGVkIHRvIHNldCAndGV4dCcgbW9kZWxcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRW1wdHkocHJlZml4KSAmJiBtb2RlbC5pbmNsdWRlcyhwcmVmaXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRTdWJqZWN0Lm5leHQobW9kZWwuc2xpY2UocHJlZml4Lmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgcHJlZml4IGhhcyBjaGFuZ2VkXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0VtcHR5KHByZWZpeCkgJiYgIW1vZGVsLmluY2x1ZGVzKHByZWZpeCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBtb2RlbCBmb3IgZG91YmxlLWJpbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRnVsbFRleHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgdXNlciBpbnB1dCBiZWNhdXNlIG1vZGVsIGhhcyBjaGFuZ2VkIGNvbnRhaW5pbmcgdGhlIG5ldyBwcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblByZWZpeENoYW5nZXMoY2hhbmdlcy5wcmVmaXgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLnByZWZpeE1vZGVsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBvblByZWZpeENoYW5nZXMoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSAmJiAhY2hhbmdlLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5wcmVmaXhTdWJqZWN0Lm5leHQoY2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRleHRDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnRleHRTdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHVwZGF0ZUZ1bGxUZXh0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZSgpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSh0aGlzLnRleHRTdWJqZWN0LmdldFZhbHVlKCkpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbF8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzRW1wdHkodGhpcy5wcmVmaXgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnByZWZpeH0ke3RoaXMudGV4dFN1YmplY3QuZ2V0VmFsdWUoKX1gO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgICA8ZmllbGRzZXRcbiAgICAgICAgY2xhc3M9XCJtYi0zXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgID5cbiAgICAgICAgPGxlZ2VuZFxuICAgICAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlzTGFiZWxTck9ubHkgPyAnc3Itb25seScgOiAndmQtcCdcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnZm9laG4taW5wdXQub3B0aW9uYWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sZWdlbmQ+XG5cbiAgICAgICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzIFtjb21wb25lbnRdPVwidGhpc1wiPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cImhlbHBUZXh0XCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoKSArICdIZWxwJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImhlbHBUZXh0XCJcbiAgICAgICAgPjwvc21hbGw+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cInByZWZpeENvbENsYXNzXCI+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWlucHV0LXRleHRcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICdfcHJlZml4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCkgKyAnX3ByZWZpeCdcIlxuICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwicHJlZml4XCJcbiAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInb2ZmJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9mb2Vobi1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cInRleHRDb2xDbGFzc1wiPlxuICAgICAgICAgICAgICAgIDxmb2Vobi1pbnB1dC10ZXh0XG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnX3RleHQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoKSArICdfdGV4dCdcIlxuICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwidGV4dCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInb2ZmJ1wiXG4gICAgICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgICAgICAgICBbaXNFcnJvckluaGVyaXRlZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taW5wdXQtdGV4dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuPC9kaXY+XG4iXX0=
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtcHJlZml4ZWQtdGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4taW5wdXQvZm9laG4taW5wdXQtcHJlZml4ZWQtdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4taW5wdXQvZm9laG4taW5wdXQtcHJlZml4ZWQtdGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBS1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGVBQWUsRUFDZixhQUFhLEVBQ2IsWUFBWSxFQUdaLEdBQUcsRUFDTixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFFM0UsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQWF4QyxNQUFNLE9BQU8sK0JBQ1QsU0FBUSx5QkFBeUI7SUFrQmpDO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFoQlosV0FBTSxHQUFHLGNBQWMsQ0FBQztRQUd4QixtQkFBYyxHQUFHLFVBQVUsQ0FBQztRQUc1QixpQkFBWSxHQUFHLFVBQVUsQ0FBQztRQUlsQixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFTLGNBQWMsQ0FBQyxDQUFDO1FBQzVELGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVMsU0FBUyxDQUFDLENBQUM7UUFDdEQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBUyxTQUFTLENBQUMsQ0FBQztRQUt6RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXO2FBQ3ZCLFlBQVks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QUFPLElBQUksQ0FBQzthQUNmO1lBRUQsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN0QztRQUNELE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUMxRCxDQUFDOzs0SEF2R1EsK0JBQStCO2dIQUEvQiwrQkFBK0Isa0pBUjdCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsK0JBQStCLENBQUM7WUFDOUQsS0FBSyxFQUFFLElBQUk7U0FDZDtLQUNKLHNFQ2hDTCx1aUVBNkRBOzJGRDNCYSwrQkFBK0I7a0JBWDNDLFNBQVM7K0JBQ0ksMkJBQTJCLGFBRTFCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdDQUFnQyxDQUFDOzRCQUM5RCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjswRUFNRCxNQUFNO3NCQURMLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQmVoYXZpb3JTdWJqZWN0LFxuICAgIGNvbWJpbmVMYXRlc3QsXG4gICAgZGVib3VuY2VUaW1lLFxuICAgIE9ic2VydmFibGUsXG4gICAgU3Vic2NyaXB0aW9uLFxuICAgIHRhcFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZm9laG4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvZWhuSW5wdXRTdHJpbmdDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLWlucHV0LXN0cmluZy5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QUkVGSVggPSAncHJlZml4ICc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4taW5wdXQtcHJlZml4ZWQtdGV4dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLWlucHV0LXByZWZpeGVkLXRleHQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5JbnB1dFByZWZpeGVkVGV4dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobklucHV0UHJlZml4ZWRUZXh0Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBGb2VobklucHV0U3RyaW5nQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KClcbiAgICBwcmVmaXggPSBERUZBVUxUX1BSRUZJWDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHJlZml4Q29sQ2xhc3MgPSAnY29sLW1kLTQnO1xuXG4gICAgQElucHV0KClcbiAgICB0ZXh0Q29sQ2xhc3MgPSAnY29sLW1kLTgnO1xuXG4gICAgdGV4dDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gICAgcHJpdmF0ZSBwcmVmaXhTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KERFRkFVTFRfUFJFRklYKTtcbiAgICBwcml2YXRlIG1vZGVsU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xuICAgIHByaXZhdGUgdGV4dFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odW5kZWZpbmVkKTtcbiAgICBwcml2YXRlIHByZWZpeE1vZGVsU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy50ZXh0U3ViamVjdFxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy51cGRhdGVGdWxsVGV4dCgpKSk7XG4gICAgICAgIHRoaXMucHJlZml4TW9kZWxTdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMucHJlZml4U3ViamVjdC5hc09ic2VydmFibGUoKSxcbiAgICAgICAgICAgIHRoaXMubW9kZWxTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgIF0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICAgICAgdGFwKChbcHJlZml4LCBtb2RlbF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNFbXB0eShtb2RlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dFN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBQcmVmaXggbmVlZHMgdG8gYmUgZXh0cmFjdGVkIHRvIHNldCAndGV4dCcgbW9kZWxcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRW1wdHkocHJlZml4KSAmJiBtb2RlbC5pbmNsdWRlcyhwcmVmaXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRTdWJqZWN0Lm5leHQobW9kZWwuc2xpY2UocHJlZml4Lmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgcHJlZml4IGhhcyBjaGFuZ2VkXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0VtcHR5KHByZWZpeCkgJiYgIW1vZGVsLmluY2x1ZGVzKHByZWZpeCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBtb2RlbCBmb3IgZG91YmxlLWJpbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRnVsbFRleHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgdXNlciBpbnB1dCBiZWNhdXNlIG1vZGVsIGhhcyBjaGFuZ2VkIGNvbnRhaW5pbmcgdGhlIG5ldyBwcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblByZWZpeENoYW5nZXMoY2hhbmdlcy5wcmVmaXgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLnByZWZpeE1vZGVsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBvblByZWZpeENoYW5nZXMoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSAmJiAhY2hhbmdlLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5wcmVmaXhTdWJqZWN0Lm5leHQoY2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRleHRDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnRleHRTdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHVwZGF0ZUZ1bGxUZXh0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZSgpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSh0aGlzLnRleHRTdWJqZWN0LmdldFZhbHVlKCkpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbF8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzRW1wdHkodGhpcy5wcmVmaXgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnByZWZpeH0ke3RoaXMudGV4dFN1YmplY3QuZ2V0VmFsdWUoKX1gO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMFwiXG4gICAgW2NsYXNzLmhhcy1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFtjbGFzcy52ZC1mb3JtLWdyb3VwLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2F0dHIuaWRdPVwiYnVpbGRJZCgnQ29udGFpbmVyJylcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuPlxuICAgIDxmaWVsZHNldFxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImdldERlc2NyaWJlZEJ5KClcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgbnVsbFwiXG4gICAgPlxuICAgICAgICA8bGVnZW5kXG4gICAgICAgICAgICBbYXR0ci5mb3JdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNMYWJlbFNyT25seSA/ICdzci1vbmx5JyA6ICd2ZC1wJ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlcXVpcmVkICYmICFoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1pbnB1dC5vcHRpb25hbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xlZ2VuZD5cblxuICAgICAgICA8Zm9laG4tdmFsaWRhdGlvbi1hbGVydHMgW2NvbXBvbmVudF09XCJ0aGlzXCI+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiaGVscFRleHRcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRJZCgpICsgJ0hlbHAnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHRcIlxuICAgICAgICA+PC9zbWFsbD5cblxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwicHJlZml4Q29sQ2xhc3NcIj5cbiAgICAgICAgICAgICAgICA8Zm9laG4taW5wdXQtdGV4dFxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJ19wcmVmaXgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoKSArICdfcHJlZml4J1wiXG4gICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJwcmVmaXhcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIidvZmYnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LXRleHQ+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwidGV4dENvbENsYXNzXCI+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWlucHV0LXRleHRcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICdfdGV4dCdcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgpICsgJ190ZXh0J1wiXG4gICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJ0ZXh0IHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwib25UZXh0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIidvZmYnXCJcbiAgICAgICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0Vycm9ySW5oZXJpdGVkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICA+PC9mb2Vobi1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG48L2Rpdj5cbiJdfQ==
@@ -279,7 +279,9 @@ export class FoehnInputComponent {
279
279
  subComponents
280
280
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
281
281
  ) {
282
- const foehnInputComponents = subComponents.filter(item => item.inputElement && !item._disabled);
282
+ const foehnInputComponents = subComponents.filter(item => item.inputElement &&
283
+ item.inputElement.nativeElement &&
284
+ !item._disabled);
283
285
  if (!!foehnInputComponents && foehnInputComponents.length) {
284
286
  return foehnInputComponents[0];
285
287
  }
@@ -387,4 +389,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
387
389
  }], disabled: [{
388
390
  type: Input
389
391
  }] } });
390
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFFcEYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0FBRzVDLE1BQU0sT0FBZ0IsbUJBQW1CO0lBNElyQztRQTdHQSxpQkFBWSxHQUE4QixFQUFFLENBQUM7UUFNN0MsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBZ0JoQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUdyQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQjs7V0FFRztRQUVILDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUVoQzs7V0FFRztRQUVILDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUdsQyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekI7O1dBRUc7UUFFSCwwQkFBcUIsR0FB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QUROLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sdUJBQXVCO3NCQUR0QixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBUU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBT04sdUJBQXVCO3NCQUR0QixLQUFLO2dCQU9OLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFPTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBU04sY0FBYztzQkFEYixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixjQUFjO3NCQURiLFlBQVk7dUJBQUMsT0FBTztnQkFJckIsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGdCQUFnQjs7UUFJM0IsOERBQThEO1FBQzlELGFBQWE7c0JBRlosWUFBWTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBUW5ELFdBQVc7c0JBRFYsTUFBTTtnQkFPUCxTQUFTO3NCQURSLE1BQU07Z0JBS1AsV0FBVztzQkFEVixNQUFNO3VCQUFDLE1BQU07Z0JBS2QsWUFBWTtzQkFEWCxNQUFNO3VCQUFDLE9BQU87Z0JBSWYsTUFBTTtzQkFETCxXQUFXO3VCQUFDLFNBQVM7Z0JBOENsQixLQUFLO3NCQURSLEtBQUs7Z0JBV0YsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdNb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFJlZ2lzdGVyTmdNb2RlbFNlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi1mb3JtL3JlZ2lzdGVyLW5nLW1vZGVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVscE1vZGFsIH0gZnJvbSAnLi4vZm9laG4taGVscC1tb2RhbC9mb2Vobi1oZWxwLW1vZGFsLnR5cGUnO1xuaW1wb3J0IHsgRm9ybUVycm9yIH0gZnJvbSAnLi4vZm9ybS1lcnJvcic7XG5pbXBvcnQgeyBTZXJ2aWNlTG9jYXRvciB9IGZyb20gJy4uL3NlcnZpY2UtbG9jYXRvcic7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyBWYWxpZGF0aW9uSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24taGFuZGxlci5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IEdFU0RFTV9NQVhfREFUQV9MRU5HVEggPSAxMDAwMDtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRm9laG5JbnB1dENvbXBvbmVudDxUPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIFRSVUUsIGFkZHMgY2xhc3MgJ3NyLW9ubHknIChvbmx5IGZvciBzY3JlZW4gcmVhZGVycykgb24gdGFnIDxsYWJlbD4gb3IgPGxlZ2VuZD5cbiAgICAgKiBkZXBlbmRpbmcgb24gY29tcG9uZW50IGV4dGVuZGluZyB0aGlzIGNsYXNzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc0xhYmVsU3JPbmx5OiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBoZWxwVGV4dDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHBhdHRlcm46IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgbGFiZWxTdHlsZU1vZGlmaWVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGN1c3RvbUVycm9yczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gICAgQElucHV0KClcbiAgICBtYXhsZW5ndGg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgb3ZlcnJpZGVHZXNkZW1NYXhsZW5ndGggPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIG1heDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGF0dHJpYnV0ZSBtdXN0IHRha2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuICAgICAqIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9IVE1ML0F0dHJpYnV0ZXMvYXV0b2NvbXBsZXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhdXRvY29tcGxldGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHJldmVudFBhc3RlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGNsZWFyQnV0dG9uID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFeGNsdWRlIHRoZSBjb21wb25lbnQgZnJvbSB0aGUgZXJyb3Igc3VtbWFyeSBpZiB0aGUgY29tcG9uZW50IGhhcyBhbiBlcnJvci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGV4Y2x1ZGVGcm9tRXJyb3JTdW1tYXJ5ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBIaWRlIHRoZSAnZmFjdWx0YXRpZicgZXh0cmEgbGFiZWwuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGlzRXJyb3JJbmhlcml0ZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gc2V0IHRvIFRSVUU6IFNob3dzIGVycm9yIGV2ZW4gaWYgaW5wdXQgaXMgZGlzYWJsZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dFcnJvcldoZW5EaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGF1dG9jYXBpdGFsaXplIGF0dHJpYnV0ZSBuZXZlciBjYXVzZXMgYXV0b2NhcGl0YWxpemF0aW9uIHRvIGJlIGVuYWJsZWQgZm9yXG4gICAgICogYW4gPGlucHV0PiBlbGVtZW50IHdpdGggYSB0eXBlIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZSBpcyB1cmwsIGVtYWlsLCBvciBwYXNzd29yZC5cbiAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2F1dG9jYXBpdGFsaXplXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhdXRvY2FwaXRhbGl6ZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBoZWxwTW9kYWw6IEhlbHBNb2RhbDtcblxuICAgIEBWaWV3Q2hpbGRyZW4oTmdNb2RlbClcbiAgICBpbnB1dE1vZGVsTGlzdDogUXVlcnlMaXN0PE5nTW9kZWw+O1xuXG4gICAgQFZpZXdDaGlsZCgnZW50cnlDb21wb25lbnQnKVxuICAgIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBGb2VobklucHV0Q29tcG9uZW50KSlcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHN1YkNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxGb2VobklucHV0Q29tcG9uZW50PGFueT4+O1xuXG4gICAgLyoqXG4gICAgICogRmlyZWQgd2hlbiB0aGUgbW9kZWwgY2hhbmdlcyBmb3IgYW55IHJlYXNvblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gICAgLyoqXG4gICAgICogRmlyZWQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIGEgdmFsdWUsIGFmdGVyIHRoZSBtb2RlbCBpcyB1cGRhdGVkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHVzZXJJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZSxAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LXJlbmFtZVxuICAgIEBPdXRwdXQoJ2JsdXInKVxuICAgIGJsdXJIYW5kbGVyID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlLEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXG4gICAgQE91dHB1dCgnZm9jdXMnKVxuICAgIGZvY3VzSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgaG9zdElkOiBzdHJpbmc7XG5cbiAgICB0eXBlOiBzdHJpbmc7XG5cbiAgICB2YWxpZGF0aW9uSGFuZGxlclNlcnZpY2U6IFZhbGlkYXRpb25IYW5kbGVyU2VydmljZTtcblxuICAgIG1vZGVsXzogVDtcblxuICAgIHByaXZhdGUgX2Vycm9yczogRm9ybUVycm9yW107XG5cbiAgICBwcml2YXRlIHZhbGlkYXRpb25FcnJvcnNTdWJqZWN0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSByZWdpc3Rlck5nTW9kZWxTZXJ2aWNlOiBSZWdpc3Rlck5nTW9kZWxTZXJ2aWNlO1xuXG4gICAgcHJpdmF0ZSBzaG93Q2xlYXJCdXR0b246IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcHJpdmF0ZSB1c2VySW5wdXRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8VD4oKTtcbiAgICBwcml2YXRlIHVzZXJJbnB1dFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uSGFuZGxlclNlcnZpY2UgPSBTZXJ2aWNlTG9jYXRvci5pbmplY3Rvci5nZXQoXG4gICAgICAgICAgICBWYWxpZGF0aW9uSGFuZGxlclNlcnZpY2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZWdpc3Rlck5nTW9kZWxTZXJ2aWNlID0gU2VydmljZUxvY2F0b3IuaW5qZWN0b3IuZ2V0KFxuICAgICAgICAgICAgUmVnaXN0ZXJOZ01vZGVsU2VydmljZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzU3ViamVjdFN1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uSGFuZGxlclNlcnZpY2UudmFsaWRhdGlvbkVycm9yc1N1YmplY3QsXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25IYW5kbGVyU2VydmljZS52YWxpZGF0aW9uRGlzcGxheVN1YmplY3RcbiAgICAgICAgXSkuc3Vic2NyaWJlKHZhbHVlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hFcnJvcnModmFsdWVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGVycm9ycygpOiBGb3JtRXJyb3JbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lcnJvcnM7XG4gICAgfVxuXG4gICAgZ2V0IG1vZGVsKCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbF87XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgbW9kZWwodmFsdWU6IFQpIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9zdCBoYXMgYW4gSWQgZm9yIGluc3RydW1lbnRhbGl6YXRpb24gb2YgdGhlIERPTSBieSBhdXRvbWF0ZWQgdGVzdHMuXG4gICAgICAgIHRoaXMuaG9zdElkID0gdGhpcy5idWlsZElkKCk7XG5cbiAgICAgICAgdGhpcy5zaG93Q2xlYXJCdXR0b24gPSB0aGlzLm1vZGVsQ2hhbmdlXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKG1hcChtb2RlbCA9PiB0aGlzLmNsZWFyQnV0dG9uICYmICEhbW9kZWwgJiYgIXRoaXMuX2Rpc2FibGVkKSk7XG5cbiAgICAgICAgdGhpcy51c2VySW5wdXRTdWJzY3JpcHRpb24gPSB0aGlzLnVzZXJJbnB1dFN1YmplY3RcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdXNlZCB0byBlbnN1cmUgdGhhdCB3ZSBvbmx5IGNhdGNoIHRoZSBsYXRlc3Qgb2YgbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAvLyBxdWljayB1cGRhdGVzLCBhbmQgdG8gbWFrZSBzdXJlIHRoZSB1c2VySW5wdXQgaXMgZmlyZWQgd2hlblxuICAgICAgICAgICAgICAgIC8vIHRoZSBjb21wb25lbnQgaXMgZG9uZSB1cGRhdGluZy5cbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlcklucHV0LmVtaXQodmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRpb25FcnJvcnNTdWJqZWN0U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnNTdWJqZWN0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy51c2VySW5wdXRTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudXNlcklucHV0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3ViQ29tcG9uZW50cy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PlxuICAgICAgICAgICAgdGhpcy5yZWdpc3Rlck5nTW9kZWxTZXJ2aWNlLnVwZGF0ZVJlZ2lzdGVyZWROZ01vZGVscygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsdWUpO1xuICAgIH1cblxuICAgIGhhbmRsZUNoYW5nZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRyaWdnZXJVc2VySW5wdXQodmFsdWUpO1xuICAgIH1cblxuICAgIHVwZGF0ZU5nTW9kZWwodmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlbF8gPSB2YWx1ZTtcbiAgICAgICAgaWYgKCF0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhc0Vycm9yc1RvRGlzcGxheSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaGFzRXJyb3JzKCkgJiYgKCF0aGlzLl9kaXNhYmxlZCB8fCB0aGlzLnNob3dFcnJvcldoZW5EaXNhYmxlZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lcnJvcnMgJiYgdGhpcy5fZXJyb3JzLmxlbmd0aCA+IDAgJiYgdGhpcy5pc1ByaXN0aW5lKCk7XG4gICAgfVxuXG4gICAgaGFzSW5oZXJpdEVycm9yRnJvbVBhcmVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNFcnJvckluaGVyaXRlZDtcbiAgICB9XG5cbiAgICBpc1ByaXN0aW5lKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pbnB1dE1vZGVsTGlzdC5maWx0ZXIobSA9PiAhbS5wcmlzdGluZSkubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICB0aGlzLnN1YkNvbXBvbmVudHMuZmlsdGVyKGMgPT4gIWMuaXNQcmlzdGluZSgpKS5sZW5ndGggPT09IDBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtYXJrQXNEaXJ0eSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dE1vZGVsTGlzdC5mb3JFYWNoKG5nTW9kZWwgPT4ge1xuICAgICAgICAgICAgbmdNb2RlbC5jb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YkNvbXBvbmVudHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgICAgIGMubWFya0FzRGlydHkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWFya0FzUHJpc3RpbmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRNb2RlbExpc3QuZm9yRWFjaChuZ01vZGVsID0+IHtcbiAgICAgICAgICAgIG5nTW9kZWwuY29udHJvbC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdWJDb21wb25lbnRzLmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgICBjLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldE5hdGl2ZUlucHV0TGlzdCgpOiBOZ01vZGVsW10ge1xuICAgICAgICBsZXQgcmVzdWx0OiBOZ01vZGVsW10gPSB0aGlzLmlucHV0TW9kZWxMaXN0LnRvQXJyYXkoKTtcbiAgICAgICAgdGhpcy5zdWJDb21wb25lbnRzLmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGMuZ2V0TmF0aXZlSW5wdXRMaXN0KCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGdldE1lQW5kU3ViQ29tcG9uZW50cygpOiBGb2VobklucHV0Q29tcG9uZW50PGFueT5bXSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGxldCByZXN1bHQ6IEZvZWhuSW5wdXRDb21wb25lbnQ8YW55PltdID0gW3RoaXNdO1xuICAgICAgICBpZiAodGhpcy5zdWJDb21wb25lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLnN1YkNvbXBvbmVudHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGMuZ2V0TWVBbmRTdWJDb21wb25lbnRzKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHJlZnJlc2hFcnJvcnMocmVzdWx0czogYW55W10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBGb3JtRXJyb3JbXSA9IHJlc3VsdHNbMF07XG4gICAgICAgIGNvbnN0IHNob3VsZERpc3BsYXlFcnJvcnM6IGJvb2xlYW4gPSByZXN1bHRzWzFdO1xuICAgICAgICBpZiAoc2hvdWxkRGlzcGxheUVycm9ycykge1xuICAgICAgICAgICAgdGhpcy5fZXJyb3JzID0gZXJyb3JzLmZpbHRlcihlID0+IGUubmFtZSA9PT0gdGhpcy5uYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICBsZXQgZWxlbWVudENvbnRhaW5lcjtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50ICYmIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkSWQoJ0NvbnRhaW5lcicpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBTY3JvbGwgaW4gdmlldyBzaG91bGQgYmUgZG9uZSBvbiBpbnB1dCBjb250YWluZXJcbiAgICAgICAgICAgICAgICBlbGVtZW50Q29udGFpbmVyLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGb2N1cyBzaG91bGQgYmUgb24gdGhlIGlucHV0IGl0c2VsZlxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdGhpcy5zdWJDb21wb25lbnRzICYmXG4gICAgICAgICAgICB0aGlzLmdldEZpcnN0SW5wdXRDb21wb25lbnRFbmFibGVkKHRoaXMuc3ViQ29tcG9uZW50cylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dENvbXBvbmVudCA9IHRoaXMuZ2V0Rmlyc3RJbnB1dENvbXBvbmVudEVuYWJsZWQoXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJDb21wb25lbnRzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZWxlbWVudENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgICAgIGlucHV0Q29tcG9uZW50LmJ1aWxkSWQoJ0NvbnRhaW5lcicpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBTY3JvbGwgaW4gdmlldyBzaG91bGQgYmUgZG9uZSBvbiBpbnB1dCBjb250YWluZXJcbiAgICAgICAgICAgICAgICBlbGVtZW50Q29udGFpbmVyLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGb2N1cyBzaG91bGQgYmUgb24gdGhlIGlucHV0IGl0c2VsZlxuICAgICAgICAgICAgaW5wdXRDb21wb25lbnQuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIENhc2UgZm9yIGNvbXBvbmVudCB3aG8gZG8gbm90IGhhdmUgYW55ICcjZW50cnlDb21wb25lbnQnIGluIHRoZWlyIGh0bWwgdGVtcGxhdGUgKGkuZS4gZm9laG4tcmFkaW8sIGZvZWhuLWNoZWNrYm94LC4uLilcbiAgICAgICAgICAgIGVsZW1lbnRDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkSWQoJ0NvbnRhaW5lcicpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBTY3JvbGwgaW4gdmlldyBzaG91bGQgYmUgZG9uZSBvbiBpbnB1dCBjb250YWluZXJcbiAgICAgICAgICAgICAgICBlbGVtZW50Q29udGFpbmVyLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50Tm9kZUxpc3RPZiA9IGVsZW1lbnRDb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICBgaW5wdXRbaWRePVwiJHt0aGlzLm5hbWV9XCJdYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChlbGVtZW50Tm9kZUxpc3RPZiAmJiBlbGVtZW50Tm9kZUxpc3RPZi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy5maW5kRmlyc3RIdG1sSW5wdXRFbGVtZW50RW5hYmxlZChcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudE5vZGVMaXN0T2ZcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBpbnB1dCBpdHNlbGZcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TWF4TGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIGlmICghdGhpcy5tYXhsZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBHRVNERU1fTUFYX0RBVEFfTEVOR1RIO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5tYXhsZW5ndGggPiBHRVNERU1fTUFYX0RBVEFfTEVOR1RIICYmXG4gICAgICAgICAgICAhdGhpcy5vdmVycmlkZUdlc2RlbU1heGxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIGBtYXhMZW5ndGggaW4gJHt0aGlzLm5hbWV9IGNhbm5vdCBiZSBtb3JlIHRoYW4gJHtHRVNERU1fTUFYX0RBVEFfTEVOR1RIfSAhYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBHRVNERU1fTUFYX0RBVEFfTEVOR1RIO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWF4bGVuZ3RoO1xuICAgIH1cblxuICAgIGJ1aWxkSWQoc3VmZml4OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIC8vIFRoZSBiYXNlSWQgaXMgZWl0aGVyIGFuIGlkIGdpdmVuIGJ5IHRoZSB1c2VyIG9yIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZS5cbiAgICAgICAgLy8gRm9yIGludGVncmF0aW9uIHB1cnBvc2VzLCB0aGUgY29udGFpbmVyIGZvZWhuLSogbXVzdCBoYXZlIGFuIElkLlxuICAgICAgICBjb25zdCBiYXNlSWQgPSB0aGlzLmlkIHx8IHRoaXMubmFtZTtcbiAgICAgICAgaWYgKCFiYXNlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGAke2Jhc2VJZH0ke3N1ZmZpeH1gO1xuICAgIH1cblxuICAgIGJ1aWxkQ2hpbGRJZChzdWZmaXg6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRJZChgQ2hpbGQke3N1ZmZpeH1gKTtcbiAgICB9XG5cbiAgICBidWlsZENoaWxkTmFtZShzdWZmaXg6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMubmFtZX1DaGlsZCR7c3VmZml4fWA7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIG9uS2V5ZG93bihrZXk6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gRG8gbm90aGluZywgb3ZlcnJpZGVuIGJ5IHN1YmNvbXBvbmVudFxuICAgIH1cblxuICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwobnVsbCk7XG4gICAgfVxuXG4gICAgb25QYXN0ZShlOiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wcmV2ZW50UGFzdGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQmx1cihlOiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYmx1ckhhbmRsZXIuZW1pdChlKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKGU6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c0hhbmRsZXIuZW1pdChlKTtcbiAgICB9XG5cbiAgICBvbkNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwobnVsbCk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKG51bGwpO1xuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgZGlzcGxheUNsZWFyQnV0dG9uKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICAvLyBUaGlzIGhhcyB0byBiZSBhbiBvYnNlcnZhYmxlIHRvIHJlYWN0IHRvIHRoZSBjaGFuZ2Ugb2YgbW9kZWwgdmFsdWUuXG4gICAgICAgIHJldHVybiB0aGlzLnNob3dDbGVhckJ1dHRvbjtcbiAgICB9XG5cbiAgICBnZXREZXNjcmliZWRCeSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBoZWxwVGV4dElkID0gdGhpcy5oZWxwVGV4dCA/IGAke3RoaXMuYnVpbGRDaGlsZElkKCl9SGVscGAgOiBudWxsO1xuICAgICAgICBjb25zdCBlcnJvcklkID0gdGhpcy5oYXNFcnJvcnNUb0Rpc3BsYXkoKVxuICAgICAgICAgICAgPyBgJHt0aGlzLmJ1aWxkSWQoKX1FcnJvcnNDb250YWluZXJgXG4gICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgLy8gYXJpYS1kZXNjcmliZWRieSBjYW4gYmUgbGlua2VkIHRvIG11bHRpcGxlIElkcyBzZXBhcmF0ZWQgYnkgYSBjb21tYS5cbiAgICAgICAgcmV0dXJuIFtoZWxwVGV4dElkLCBlcnJvcklkXS5maWx0ZXIoaWQgPT4gISFpZCkuam9pbignLCcpIHx8IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0QXV0b0NvbXBsZXRlKCk6IHN0cmluZyB7XG4gICAgICAgIC8vIHJldHJvIGNvbXBhdGliaWxpdHkgKGF1dG9jb21wbGV0ZSB1c2VkIHRvIGJlIGEgYm9vbGVhbilcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiAnb2ZmJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAodGhpcy5hdXRvY29tcGxldGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0Rmlyc3RJbnB1dENvbXBvbmVudEVuYWJsZWQoXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHN1YkNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxGb2VobklucHV0Q29tcG9uZW50PGFueT4+XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgKTogRm9laG5JbnB1dENvbXBvbmVudDxhbnk+IHtcbiAgICAgICAgY29uc3QgZm9laG5JbnB1dENvbXBvbmVudHMgPSBzdWJDb21wb25lbnRzLmZpbHRlcihcbiAgICAgICAgICAgIGl0ZW0gPT4gaXRlbS5pbnB1dEVsZW1lbnQgJiYgIWl0ZW0uX2Rpc2FibGVkXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCEhZm9laG5JbnB1dENvbXBvbmVudHMgJiYgZm9laG5JbnB1dENvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9laG5JbnB1dENvbXBvbmVudHNbMF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZEZpcnN0SHRtbElucHV0RWxlbWVudEVuYWJsZWQoXG4gICAgICAgIGVsZW1lbnROb2RlTGlzdE9mOiBOb2RlTGlzdE9mPEVsZW1lbnQ+XG4gICAgKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudE5vZGVMaXN0T2YubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGh0bWxJbnB1dEVsZW1lbnQgPSBlbGVtZW50Tm9kZUxpc3RPZi5pdGVtKFxuICAgICAgICAgICAgICAgIGlcbiAgICAgICAgICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgIGlmICghaHRtbElucHV0RWxlbWVudC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBodG1sSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJvdGVjdGVkIGlzRW1wdHkoZGF0YTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBkYXRhID09PSBudWxsIHx8IGRhdGEgPT09IHVuZGVmaW5lZCB8fCBkYXRhID09PSAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdHJpZ2dlclVzZXJJbnB1dCh2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAvLyBJZiB0aGUgY2FsbGJhY2sgaXMgZGVmaW5lZFxuICAgICAgICAgICAgISF0aGlzLnVzZXJJbnB1dCAmJlxuICAgICAgICAgICAgLy8gSWYgdGhlIHZhbHVlIGlzIGFjdHVhbGx5IHNvbWV0aGluZyAoVCBvciBudWxsKVxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgLy8gSWYgaW5wdXQgaXNuJ3QgZGlzYWJsZWRcbiAgICAgICAgICAgICF0aGlzLl9kaXNhYmxlZFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMudXNlcklucHV0U3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFFcEYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0FBRzVDLE1BQU0sT0FBZ0IsbUJBQW1CO0lBNElyQztRQTdHQSxpQkFBWSxHQUE4QixFQUFFLENBQUM7UUFNN0MsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBZ0JoQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUdyQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQjs7V0FFRztRQUVILDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUVoQzs7V0FFRztRQUVILDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUdsQyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekI7O1dBRUc7UUFFSCwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUF1QjlCOztXQUVHO1FBRUgsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFDO1FBRXBDOztXQUVHO1FBRUgsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7UUFFbEMsNkZBQTZGO1FBRTdGLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUU3Qyw2RkFBNkY7UUFFN0YsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBaUJ0QyxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBSyxDQUFDO1FBTXhDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDdkQsd0JBQXdCLENBQzNCLENBQUM7UUFDRixJQUFJLENBQUMsc0JBQXNCLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ3JELHNCQUFzQixDQUN6QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFFdEIsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLGFBQWEsQ0FBQztZQUNyRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCO1lBQ3JELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx3QkFBd0I7U0FDekQsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUNJLEtBQUssQ0FBQyxLQUFRO1FBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsOERBQThEO0lBQzlELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxRQUFRLENBQUMsS0FBYztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNKLHlGQUF5RjtRQUN6RixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXO2FBQ2xDLFlBQVksRUFBRTthQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjthQUM3QyxJQUFJO1FBQ0QsbUVBQW1FO1FBQ25FLDhEQUE4RDtRQUM5RCxrQ0FBa0M7UUFDbEMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUNsQjthQUNBLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxtQ0FBbUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDMUQ7UUFFRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDdEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHdCQUF3QixFQUFFLENBQ3pELENBQUM7SUFDTixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVE7UUFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVE7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBUTtRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxPQUFPLENBQ0gsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUN0RSxDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVM7UUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBRUQseUJBQXlCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxDQUNILElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQy9ELENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxNQUFNLEdBQWMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELDhEQUE4RDtJQUM5RCxxQkFBcUI7UUFDakIsOERBQThEO1FBQzlELElBQUksTUFBTSxHQUErQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDM0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztZQUN0RCxDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELDhEQUE4RDtJQUM5RCxhQUFhLENBQUMsT0FBYztRQUN4QixNQUFNLE1BQU0sR0FBZ0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sbUJBQW1CLEdBQVksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksbUJBQW1CLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0Q7SUFDTCxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksZ0JBQWdCLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFO1lBQ3RELGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQzVCLENBQUM7WUFDRixJQUFJLGdCQUFnQixFQUFFO2dCQUNsQixtREFBbUQ7Z0JBQ25ELGdCQUFnQixDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3JDO1lBQ0Qsc0NBQXNDO1lBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzNDO2FBQU0sSUFDSCxJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUN4RDtZQUNFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FDckQsSUFBSSxDQUFDLGFBQWEsQ0FDckIsQ0FBQztZQUNGLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQ3RDLGNBQWMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQ3RDLENBQUM7WUFDRixJQUFJLGdCQUFnQixFQUFFO2dCQUNsQixtREFBbUQ7Z0JBQ25ELGdCQUFnQixDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3JDO1lBQ0Qsc0NBQXNDO1lBQ3RDLGNBQWMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3JEO2FBQU07WUFDSCx5SEFBeUg7WUFDekgsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FDNUIsQ0FBQztZQUNGLElBQUksZ0JBQWdCLEVBQUU7Z0JBQ2xCLG1EQUFtRDtnQkFDbkQsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDckM7WUFDRCxNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUN2RCxjQUFjLElBQUksQ0FBQyxJQUFJLElBQUksQ0FDOUIsQ0FBQztZQUNGLElBQUksaUJBQWlCLElBQUksaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDbkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxDQUN0RCxpQkFBaUIsQ0FDcEIsQ0FBQztnQkFDRixJQUFJLFlBQVksRUFBRTtvQkFDZCxzQ0FBc0M7b0JBQ3RDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDeEI7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixPQUFPLHNCQUFzQixDQUFDO1NBQ2pDO1FBRUQsSUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLHNCQUFzQjtZQUN2QyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFDL0I7WUFDRSxPQUFPLENBQUMsR0FBRyxDQUNQLGdCQUFnQixJQUFJLENBQUMsSUFBSSx3QkFBd0Isc0JBQXNCLElBQUksQ0FDOUUsQ0FBQztZQUNGLE9BQU8sc0JBQXNCLENBQUM7U0FDakM7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxTQUFpQixFQUFFO1FBQ3ZCLHlFQUF5RTtRQUN6RSxtRUFBbUU7UUFDbkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsT0FBTyxHQUFHLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWlCLEVBQUU7UUFDNUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQWlCLEVBQUU7UUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLFFBQVEsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxTQUFTLENBQUMsR0FBa0I7UUFDeEIsd0NBQXdDO0lBQzVDLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTyxDQUFDLENBQWlCO1FBQ3JCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDNUIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxDQUFhO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBYTtRQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELGtCQUFrQjtRQUNkLHNFQUFzRTtRQUN0RSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWM7UUFDVixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3JDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCO1lBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFWCx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN0RSxDQUFDO0lBRUQsZUFBZTtRQUNYLDBEQUEwRDtRQUMxRCw2REFBNkQ7UUFDN0QsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxLQUFLLEVBQUU7WUFDN0IsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCw2REFBNkQ7UUFDN0QsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDNUIsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRVMsNkJBQTZCO0lBQ25DLDhEQUE4RDtJQUM5RCxhQUFrRDtJQUNsRCw4REFBOEQ7O1FBRTlELE1BQU0sb0JBQW9CLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FDN0MsSUFBSSxDQUFDLEVBQUUsQ0FDSCxJQUFJLENBQUMsWUFBWTtZQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWE7WUFDL0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUN0QixDQUFDO1FBRUYsSUFBSSxDQUFDLENBQUMsb0JBQW9CLElBQUksb0JBQW9CLENBQUMsTUFBTSxFQUFFO1lBQ3ZELE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRVMsZ0NBQWdDLENBQ3RDLGlCQUFzQztRQUV0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9DLE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUMzQyxDQUFDLENBQ2dCLENBQUM7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtnQkFDNUIsT0FBTyxnQkFBZ0IsQ0FBQzthQUMzQjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELDhEQUE4RDtJQUNwRCxPQUFPLENBQUMsSUFBUztRQUN2QixPQUFPLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQzlELENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxLQUFRO1FBQy9CO1FBQ0ksNkJBQTZCO1FBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUztZQUNoQixpREFBaUQ7WUFDakQsT0FBTyxLQUFLLEtBQUssV0FBVztZQUM1QiwwQkFBMEI7WUFDMUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUNqQjtZQUNFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckM7SUFDTCxDQUFDOztnSEFsZmlCLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHkvQkEwRnZCLE9BQU8sc0dBTVUsbUJBQW1COzJGQWhHaEMsbUJBQW1CO2tCQUR4QyxTQUFTOzBFQUlOLEVBQUU7c0JBREQsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFRTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFPTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBT04seUJBQXlCO3NCQUR4QixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQU9OLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFTTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxPQUFPO2dCQUlyQixZQUFZO3NCQURYLFNBQVM7dUJBQUMsZ0JBQWdCOztRQUkzQiw4REFBOEQ7UUFDOUQsYUFBYTtzQkFGWixZQUFZO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFRbkQsV0FBVztzQkFEVixNQUFNO2dCQU9QLFNBQVM7c0JBRFIsTUFBTTtnQkFLUCxXQUFXO3NCQURWLE1BQU07dUJBQUMsTUFBTTtnQkFLZCxZQUFZO3NCQURYLE1BQU07dUJBQUMsT0FBTztnQkFJZixNQUFNO3NCQURMLFdBQVc7dUJBQUMsU0FBUztnQkE4Q2xCLEtBQUs7c0JBRFIsS0FBSztnQkFXRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUmVnaXN0ZXJOZ01vZGVsU2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLWZvcm0vcmVnaXN0ZXItbmctbW9kZWwuc2VydmljZSc7XG5pbXBvcnQgeyBIZWxwTW9kYWwgfSBmcm9tICcuLi9mb2Vobi1oZWxwLW1vZGFsL2ZvZWhuLWhlbHAtbW9kYWwudHlwZSc7XG5pbXBvcnQgeyBGb3JtRXJyb3IgfSBmcm9tICcuLi9mb3JtLWVycm9yJztcbmltcG9ydCB7IFNlcnZpY2VMb2NhdG9yIH0gZnJvbSAnLi4vc2VydmljZS1sb2NhdG9yJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IFZhbGlkYXRpb25IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi1oYW5kbGVyLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgR0VTREVNX01BWF9EQVRBX0xFTkdUSCA9IDEwMDAwO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGb2VobklucHV0Q29tcG9uZW50PFQ+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICByZXF1aXJlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFdoZW4gVFJVRSwgYWRkcyBjbGFzcyAnc3Itb25seScgKG9ubHkgZm9yIHNjcmVlbiByZWFkZXJzKSBvbiB0YWcgPGxhYmVsPiBvciA8bGVnZW5kPlxuICAgICAqIGRlcGVuZGluZyBvbiBjb21wb25lbnQgZXh0ZW5kaW5nIHRoaXMgY2xhc3NcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzTGFiZWxTck9ubHk6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIGhlbHBUZXh0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcGF0dGVybjogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBsYWJlbFN0eWxlTW9kaWZpZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgY3VzdG9tRXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICBASW5wdXQoKVxuICAgIG1heGxlbmd0aDogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBvdmVycmlkZUdlc2RlbU1heGxlbmd0aCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBtaW46IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYXR0cmlidXRlIG11c3QgdGFrZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4gICAgICogU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlcy9hdXRvY29tcGxldGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dG9jb21wbGV0ZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwcmV2ZW50UGFzdGUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgY2xlYXJCdXR0b24gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEV4Y2x1ZGUgdGhlIGNvbXBvbmVudCBmcm9tIHRoZSBlcnJvciBzdW1tYXJ5IGlmIHRoZSBjb21wb25lbnQgaGFzIGFuIGVycm9yLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXhjbHVkZUZyb21FcnJvclN1bW1hcnkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEhpZGUgdGhlICdmYWN1bHRhdGlmJyBleHRyYSBsYWJlbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWwgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgaXNFcnJvckluaGVyaXRlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBzZXQgdG8gVFJVRTogU2hvd3MgZXJyb3IgZXZlbiBpZiBpbnB1dCBpcyBkaXNhYmxlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0Vycm9yV2hlbkRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYXV0b2NhcGl0YWxpemUgYXR0cmlidXRlIG5ldmVyIGNhdXNlcyBhdXRvY2FwaXRhbGl6YXRpb24gdG8gYmUgZW5hYmxlZCBmb3JcbiAgICAgKiBhbiA8aW5wdXQ+IGVsZW1lbnQgd2l0aCBhIHR5cGUgYXR0cmlidXRlIHdob3NlIHZhbHVlIGlzIHVybCwgZW1haWwsIG9yIHBhc3N3b3JkLlxuICAgICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2ZyL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvYXV0b2NhcGl0YWxpemVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dG9jYXBpdGFsaXplOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGhlbHBNb2RhbDogSGVscE1vZGFsO1xuXG4gICAgQFZpZXdDaGlsZHJlbihOZ01vZGVsKVxuICAgIGlucHV0TW9kZWxMaXN0OiBRdWVyeUxpc3Q8TmdNb2RlbD47XG5cbiAgICBAVmlld0NoaWxkKCdlbnRyeUNvbXBvbmVudCcpXG4gICAgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEZvZWhuSW5wdXRDb21wb25lbnQpKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgc3ViQ29tcG9uZW50czogUXVlcnlMaXN0PEZvZWhuSW5wdXRDb21wb25lbnQ8YW55Pj47XG5cbiAgICAvKipcbiAgICAgKiBGaXJlZCB3aGVuIHRoZSBtb2RlbCBjaGFuZ2VzIGZvciBhbnkgcmVhc29uXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBGaXJlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgYSB2YWx1ZSwgYWZ0ZXIgdGhlIG1vZGVsIGlzIHVwZGF0ZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgdXNlcklucHV0ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlLEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXG4gICAgQE91dHB1dCgnYmx1cicpXG4gICAgYmx1ckhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmUsQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1yZW5hbWVcbiAgICBAT3V0cHV0KCdmb2N1cycpXG4gICAgZm9jdXNIYW5kbGVyID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBob3N0SWQ6IHN0cmluZztcblxuICAgIHR5cGU6IHN0cmluZztcblxuICAgIHZhbGlkYXRpb25IYW5kbGVyU2VydmljZTogVmFsaWRhdGlvbkhhbmRsZXJTZXJ2aWNlO1xuXG4gICAgbW9kZWxfOiBUO1xuXG4gICAgcHJpdmF0ZSBfZXJyb3JzOiBGb3JtRXJyb3JbXTtcblxuICAgIHByaXZhdGUgdmFsaWRhdGlvbkVycm9yc1N1YmplY3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIHJlZ2lzdGVyTmdNb2RlbFNlcnZpY2U6IFJlZ2lzdGVyTmdNb2RlbFNlcnZpY2U7XG5cbiAgICBwcml2YXRlIHNob3dDbGVhckJ1dHRvbjogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBwcml2YXRlIHVzZXJJbnB1dFN1YmplY3QgPSBuZXcgU3ViamVjdDxUPigpO1xuICAgIHByaXZhdGUgdXNlcklucHV0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25IYW5kbGVyU2VydmljZSA9IFNlcnZpY2VMb2NhdG9yLmluamVjdG9yLmdldChcbiAgICAgICAgICAgIFZhbGlkYXRpb25IYW5kbGVyU2VydmljZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyTmdNb2RlbFNlcnZpY2UgPSBTZXJ2aWNlTG9jYXRvci5pbmplY3Rvci5nZXQoXG4gICAgICAgICAgICBSZWdpc3Rlck5nTW9kZWxTZXJ2aWNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVxdWlyZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnNTdWJqZWN0U3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25IYW5kbGVyU2VydmljZS52YWxpZGF0aW9uRXJyb3JzU3ViamVjdCxcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkhhbmRsZXJTZXJ2aWNlLnZhbGlkYXRpb25EaXNwbGF5U3ViamVjdFxuICAgICAgICBdKS5zdWJzY3JpYmUodmFsdWVzID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEVycm9ycyh2YWx1ZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgZXJyb3JzKCk6IEZvcm1FcnJvcltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Vycm9ycztcbiAgICB9XG5cbiAgICBnZXQgbW9kZWwoKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsXztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtb2RlbCh2YWx1ZTogVCkge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gRW5zdXJlcyB0aGF0IHRoZSBob3N0IGhhcyBhbiBJZCBmb3IgaW5zdHJ1bWVudGFsaXphdGlvbiBvZiB0aGUgRE9NIGJ5IGF1dG9tYXRlZCB0ZXN0cy5cbiAgICAgICAgdGhpcy5ob3N0SWQgPSB0aGlzLmJ1aWxkSWQoKTtcblxuICAgICAgICB0aGlzLnNob3dDbGVhckJ1dHRvbiA9IHRoaXMubW9kZWxDaGFuZ2VcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUobWFwKG1vZGVsID0+IHRoaXMuY2xlYXJCdXR0b24gJiYgISFtb2RlbCAmJiAhdGhpcy5fZGlzYWJsZWQpKTtcblxuICAgICAgICB0aGlzLnVzZXJJbnB1dFN1YnNjcmlwdGlvbiA9IHRoaXMudXNlcklucHV0U3ViamVjdFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IHdlIG9ubHkgY2F0Y2ggdGhlIGxhdGVzdCBvZiBtdWx0aXBsZVxuICAgICAgICAgICAgICAgIC8vIHF1aWNrIHVwZGF0ZXMsIGFuZCB0byBtYWtlIHN1cmUgdGhlIHVzZXJJbnB1dCBpcyBmaXJlZCB3aGVuXG4gICAgICAgICAgICAgICAgLy8gdGhlIGNvbXBvbmVudCBpcyBkb25lIHVwZGF0aW5nLlxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgwKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VySW5wdXQuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdGlvbkVycm9yc1N1YmplY3RTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yc1N1YmplY3RTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnVzZXJJbnB1dFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy51c2VySW5wdXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJDb21wb25lbnRzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyTmdNb2RlbFNlcnZpY2UudXBkYXRlUmVnaXN0ZXJlZE5nTW9kZWxzKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2hhbmdlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMudHJpZ2dlclVzZXJJbnB1dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdXBkYXRlTmdNb2RlbCh2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsXyA9IHZhbHVlO1xuICAgICAgICBpZiAoIXRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFzRXJyb3JzVG9EaXNwbGF5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5oYXNFcnJvcnMoKSAmJiAoIXRoaXMuX2Rpc2FibGVkIHx8IHRoaXMuc2hvd0Vycm9yV2hlbkRpc2FibGVkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGhhc0Vycm9ycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Vycm9ycyAmJiB0aGlzLl9lcnJvcnMubGVuZ3RoID4gMCAmJiB0aGlzLmlzUHJpc3RpbmUoKTtcbiAgICB9XG5cbiAgICBoYXNJbmhlcml0RXJyb3JGcm9tUGFyZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Vycm9ySW5oZXJpdGVkO1xuICAgIH1cblxuICAgIGlzUHJpc3RpbmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmlucHV0TW9kZWxMaXN0LmZpbHRlcihtID0+ICFtLnByaXN0aW5lKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIHRoaXMuc3ViQ29tcG9uZW50cy5maWx0ZXIoYyA9PiAhYy5pc1ByaXN0aW5lKCkpLmxlbmd0aCA9PT0gMFxuICAgICAgICApO1xuICAgIH1cblxuICAgIG1hcmtBc0RpcnR5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0TW9kZWxMaXN0LmZvckVhY2gobmdNb2RlbCA9PiB7XG4gICAgICAgICAgICBuZ01vZGVsLmNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3ViQ29tcG9uZW50cy5mb3JFYWNoKGMgPT4ge1xuICAgICAgICAgICAgYy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtYXJrQXNQcmlzdGluZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dE1vZGVsTGlzdC5mb3JFYWNoKG5nTW9kZWwgPT4ge1xuICAgICAgICAgICAgbmdNb2RlbC5jb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YkNvbXBvbmVudHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgICAgIGMubWFya0FzRGlydHkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TmF0aXZlSW5wdXRMaXN0KCk6IE5nTW9kZWxbXSB7XG4gICAgICAgIGxldCByZXN1bHQ6IE5nTW9kZWxbXSA9IHRoaXMuaW5wdXRNb2RlbExpc3QudG9BcnJheSgpO1xuICAgICAgICB0aGlzLnN1YkNvbXBvbmVudHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoYy5nZXROYXRpdmVJbnB1dExpc3QoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZ2V0TWVBbmRTdWJDb21wb25lbnRzKCk6IEZvZWhuSW5wdXRDb21wb25lbnQ8YW55PltdIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgbGV0IHJlc3VsdDogRm9laG5JbnB1dENvbXBvbmVudDxhbnk+W10gPSBbdGhpc107XG4gICAgICAgIGlmICh0aGlzLnN1YkNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIHRoaXMuc3ViQ29tcG9uZW50cy5mb3JFYWNoKGMgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoYy5nZXRNZUFuZFN1YkNvbXBvbmVudHMoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcmVmcmVzaEVycm9ycyhyZXN1bHRzOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBlcnJvcnM6IEZvcm1FcnJvcltdID0gcmVzdWx0c1swXTtcbiAgICAgICAgY29uc3Qgc2hvdWxkRGlzcGxheUVycm9yczogYm9vbGVhbiA9IHJlc3VsdHNbMV07XG4gICAgICAgIGlmIChzaG91bGREaXNwbGF5RXJyb3JzKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnJvcnMgPSBlcnJvcnMuZmlsdGVyKGUgPT4gZS5uYW1lID09PSB0aGlzLm5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGxldCBlbGVtZW50Q29udGFpbmVyO1xuICAgICAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQgJiYgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgZWxlbWVudENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRJZCgnQ29udGFpbmVyJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoZWxlbWVudENvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIC8vIFNjcm9sbCBpbiB2aWV3IHNob3VsZCBiZSBkb25lIG9uIGlucHV0IGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGVsZW1lbnRDb250YWluZXIuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZvY3VzIHNob3VsZCBiZSBvbiB0aGUgaW5wdXQgaXRzZWxmXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0aGlzLnN1YkNvbXBvbmVudHMgJiZcbiAgICAgICAgICAgIHRoaXMuZ2V0Rmlyc3RJbnB1dENvbXBvbmVudEVuYWJsZWQodGhpcy5zdWJDb21wb25lbnRzKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0Q29tcG9uZW50ID0gdGhpcy5nZXRGaXJzdElucHV0Q29tcG9uZW50RW5hYmxlZChcbiAgICAgICAgICAgICAgICB0aGlzLnN1YkNvbXBvbmVudHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBlbGVtZW50Q29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgICAgICAgaW5wdXRDb21wb25lbnQuYnVpbGRJZCgnQ29udGFpbmVyJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoZWxlbWVudENvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIC8vIFNjcm9sbCBpbiB2aWV3IHNob3VsZCBiZSBkb25lIG9uIGlucHV0IGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGVsZW1lbnRDb250YWluZXIuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZvY3VzIHNob3VsZCBiZSBvbiB0aGUgaW5wdXQgaXRzZWxmXG4gICAgICAgICAgICBpbnB1dENvbXBvbmVudC5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2FzZSBmb3IgY29tcG9uZW50IHdobyBkbyBub3QgaGF2ZSBhbnkgJyNlbnRyeUNvbXBvbmVudCcgaW4gdGhlaXIgaHRtbCB0ZW1wbGF0ZSAoaS5lLiBmb2Vobi1yYWRpbywgZm9laG4tY2hlY2tib3gsLi4uKVxuICAgICAgICAgICAgZWxlbWVudENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRJZCgnQ29udGFpbmVyJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoZWxlbWVudENvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIC8vIFNjcm9sbCBpbiB2aWV3IHNob3VsZCBiZSBkb25lIG9uIGlucHV0IGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGVsZW1lbnRDb250YWluZXIuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnROb2RlTGlzdE9mID0gZWxlbWVudENvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgICAgIGBpbnB1dFtpZF49XCIke3RoaXMubmFtZX1cIl1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnROb2RlTGlzdE9mICYmIGVsZW1lbnROb2RlTGlzdE9mLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLmZpbmRGaXJzdEh0bWxJbnB1dEVsZW1lbnRFbmFibGVkKFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50Tm9kZUxpc3RPZlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBGb2N1cyBzaG91bGQgYmUgb24gdGhlIGlucHV0IGl0c2VsZlxuICAgICAgICAgICAgICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRNYXhMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCF0aGlzLm1heGxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIEdFU0RFTV9NQVhfREFUQV9MRU5HVEg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm1heGxlbmd0aCA+IEdFU0RFTV9NQVhfREFUQV9MRU5HVEggJiZcbiAgICAgICAgICAgICF0aGlzLm92ZXJyaWRlR2VzZGVtTWF4bGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgYG1heExlbmd0aCBpbiAke3RoaXMubmFtZX0gY2Fubm90IGJlIG1vcmUgdGhhbiAke0dFU0RFTV9NQVhfREFUQV9MRU5HVEh9ICFgXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIEdFU0RFTV9NQVhfREFUQV9MRU5HVEg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tYXhsZW5ndGg7XG4gICAgfVxuXG4gICAgYnVpbGRJZChzdWZmaXg6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcbiAgICAgICAgLy8gVGhlIGJhc2VJZCBpcyBlaXRoZXIgYW4gaWQgZ2l2ZW4gYnkgdGhlIHVzZXIgb3IgdGhlIHZhbHVlIG9mIHRoZSBuYW1lLlxuICAgICAgICAvLyBGb3IgaW50ZWdyYXRpb24gcHVycG9zZXMsIHRoZSBjb250YWluZXIgZm9laG4tKiBtdXN0IGhhdmUgYW4gSWQuXG4gICAgICAgIGNvbnN0IGJhc2VJZCA9IHRoaXMuaWQgfHwgdGhpcy5uYW1lO1xuICAgICAgICBpZiAoIWJhc2VJZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7YmFzZUlkfSR7c3VmZml4fWA7XG4gICAgfVxuXG4gICAgYnVpbGRDaGlsZElkKHN1ZmZpeDogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZElkKGBDaGlsZCR7c3VmZml4fWApO1xuICAgIH1cblxuICAgIGJ1aWxkQ2hpbGROYW1lKHN1ZmZpeDogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5uYW1lfUNoaWxkJHtzdWZmaXh9YDtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgb25LZXlkb3duKGtleTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyBEbyBub3RoaW5nLCBvdmVycmlkZW4gYnkgc3ViY29tcG9uZW50XG4gICAgfVxuXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbChudWxsKTtcbiAgICB9XG5cbiAgICBvblBhc3RlKGU6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnByZXZlbnRQYXN0ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25CbHVyKGU6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ibHVySGFuZGxlci5lbWl0KGUpO1xuICAgIH1cblxuICAgIG9uRm9jdXMoZTogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzSGFuZGxlci5lbWl0KGUpO1xuICAgIH1cblxuICAgIG9uQ2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbChudWxsKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UobnVsbCk7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBkaXNwbGF5Q2xlYXJCdXR0b24oKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIC8vIFRoaXMgaGFzIHRvIGJlIGFuIG9ic2VydmFibGUgdG8gcmVhY3QgdG8gdGhlIGNoYW5nZSBvZiBtb2RlbCB2YWx1ZS5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0NsZWFyQnV0dG9uO1xuICAgIH1cblxuICAgIGdldERlc2NyaWJlZEJ5KCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGhlbHBUZXh0SWQgPSB0aGlzLmhlbHBUZXh0ID8gYCR7dGhpcy5idWlsZENoaWxkSWQoKX1IZWxwYCA6IG51bGw7XG4gICAgICAgIGNvbnN0IGVycm9ySWQgPSB0aGlzLmhhc0Vycm9yc1RvRGlzcGxheSgpXG4gICAgICAgICAgICA/IGAke3RoaXMuYnVpbGRJZCgpfUVycm9yc0NvbnRhaW5lcmBcbiAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAvLyBhcmlhLWRlc2NyaWJlZGJ5IGNhbiBiZSBsaW5rZWQgdG8gbXVsdGlwbGUgSWRzIHNlcGFyYXRlZCBieSBhIGNvbW1hLlxuICAgICAgICByZXR1cm4gW2hlbHBUZXh0SWQsIGVycm9ySWRdLmZpbHRlcihpZCA9PiAhIWlkKS5qb2luKCcsJykgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBnZXRBdXRvQ29tcGxldGUoKTogc3RyaW5nIHtcbiAgICAgICAgLy8gcmV0cm8gY29tcGF0aWJpbGl0eSAoYXV0b2NvbXBsZXRlIHVzZWQgdG8gYmUgYSBib29sZWFuKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuICdvZmYnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0b2NvbXBsZXRlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaXJzdElucHV0Q29tcG9uZW50RW5hYmxlZChcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgc3ViQ29tcG9uZW50czogUXVlcnlMaXN0PEZvZWhuSW5wdXRDb21wb25lbnQ8YW55Pj5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICApOiBGb2VobklucHV0Q29tcG9uZW50PGFueT4ge1xuICAgICAgICBjb25zdCBmb2VobklucHV0Q29tcG9uZW50cyA9IHN1YkNvbXBvbmVudHMuZmlsdGVyKFxuICAgICAgICAgICAgaXRlbSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0uaW5wdXRFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgaXRlbS5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCAmJlxuICAgICAgICAgICAgICAgICFpdGVtLl9kaXNhYmxlZFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghIWZvZWhuSW5wdXRDb21wb25lbnRzICYmIGZvZWhuSW5wdXRDb21wb25lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZvZWhuSW5wdXRDb21wb25lbnRzWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZpbmRGaXJzdEh0bWxJbnB1dEVsZW1lbnRFbmFibGVkKFxuICAgICAgICBlbGVtZW50Tm9kZUxpc3RPZjogTm9kZUxpc3RPZjxFbGVtZW50PlxuICAgICk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnROb2RlTGlzdE9mLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBodG1sSW5wdXRFbGVtZW50ID0gZWxlbWVudE5vZGVMaXN0T2YuaXRlbShcbiAgICAgICAgICAgICAgICBpXG4gICAgICAgICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIWh0bWxJbnB1dEVsZW1lbnQuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaHRtbElucHV0RWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByb3RlY3RlZCBpc0VtcHR5KGRhdGE6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSB1bmRlZmluZWQgfHwgZGF0YSA9PT0gJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHRyaWdnZXJVc2VySW5wdXQodmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGxiYWNrIGlzIGRlZmluZWRcbiAgICAgICAgICAgICEhdGhpcy51c2VySW5wdXQgJiZcbiAgICAgICAgICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBhY3R1YWxseSBzb21ldGhpbmcgKFQgb3IgbnVsbClcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgIC8vIElmIGlucHV0IGlzbid0IGRpc2FibGVkXG4gICAgICAgICAgICAhdGhpcy5fZGlzYWJsZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnVzZXJJbnB1dFN1YmplY3QubmV4dCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -43,9 +43,9 @@ export class FoehnDateComponent extends FoehnInputComponent {
43
43
  }
44
44
  onModelChange(value) {
45
45
  if (value && value.length > 2) {
46
- this.year = this.toString(value[0]);
47
- this.month = this.toString(value[1]);
48
- this.day = this.toString(value[2]);
46
+ this.year = this.numberToString(value[0]);
47
+ this.month = this.numberToString(value[1]);
48
+ this.day = this.numberToString(value[2]);
49
49
  this.datePickerModel = value;
50
50
  }
51
51
  else if (!value) {
@@ -57,12 +57,11 @@ export class FoehnDateComponent extends FoehnInputComponent {
57
57
  }
58
58
  displayClearButton() {
59
59
  // Override the clear button fonction not worry about the model at this stage.
60
- return of(this.clearButton);
60
+ const visible = this.clearButton && !this.isDisabled();
61
+ return of(visible);
61
62
  }
62
63
  getValidValue() {
63
- if (this.isEmpty(this.day) &&
64
- this.isEmpty(this.month) &&
65
- this.isEmpty(this.year)) {
64
+ if (this.isEmpty()) {
66
65
  if (this.model_ !== undefined) {
67
66
  return null;
68
67
  }
@@ -82,16 +81,49 @@ export class FoehnDateComponent extends FoehnInputComponent {
82
81
  !this.disableDay);
83
82
  }
84
83
  resetModel() {
85
- this.year = null;
86
- this.month = null;
87
- this.day = null;
88
- this.datePickerModel = null;
84
+ if (this.isDisabled()) {
85
+ return;
86
+ }
87
+ if (!this.disableYear) {
88
+ this.year = null;
89
+ }
90
+ if (!this.disableMonth) {
91
+ this.month = null;
92
+ }
93
+ if (!this.disableDay) {
94
+ this.day = null;
95
+ }
96
+ if (!this.disableYear && !this.disableMonth && !this.disableDay) {
97
+ this.datePickerModel = null;
98
+ }
99
+ this.model_ = [
100
+ this.toNumber(this.year),
101
+ this.toNumber(this.month),
102
+ this.toNumber(this.day)
103
+ ];
89
104
  this.updateDate();
105
+ this.handleUserInput();
106
+ this.focus();
107
+ }
108
+ isEmpty() {
109
+ return (super.isEmpty(this.day) &&
110
+ super.isEmpty(this.month) &&
111
+ super.isEmpty(this.year));
112
+ }
113
+ isEmptyDependingOnDisabled() {
114
+ const dayEmptyOrDisabled = this.disableDay || super.isEmpty(this.day);
115
+ const monthEmptyOrDisabled = this.disableMonth || super.isEmpty(this.month);
116
+ const yearEmptyOrDisabled = this.disableYear || super.isEmpty(this.year);
117
+ return (dayEmptyOrDisabled && monthEmptyOrDisabled && yearEmptyOrDisabled);
118
+ }
119
+ isDisabled() {
120
+ return (this.disabled ||
121
+ (this.disableDay && this.disableMonth && this.disableYear));
90
122
  }
91
123
  toNumber(str) {
92
124
  return str ? Number(str) : null;
93
125
  }
94
- toString(num) {
126
+ numberToString(num) {
95
127
  return num ? num.toString() : null;
96
128
  }
97
129
  }
@@ -102,7 +134,7 @@ FoehnDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
102
134
  useExisting: forwardRef(() => FoehnDateComponent),
103
135
  multi: true
104
136
  }
105
- ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"vd-form-flex\">\n <div class=\"vd-form-flex__item vd-form-flex__item--3-char-width\">\n <foehn-input-number\n [id]=\"buildId() + '_day'\"\n [name]=\"name + '_day'\"\n [label]=\"'foehn-input-date.day.label' | fromDictionary\"\n [(model)]=\"day\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableDay\"\n [maxlength]=\"2\"\n [allowNegative]=\"false\"\n [max]=\"31\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [hideStandardHelpText]=\"true\"\n [isLabelSrOnly]=\"childrenLabelSrOnly\"\n #entryComponent\n ></foehn-input-number>\n </div>\n <div class=\"vd-form-flex__item vd-form-flex__item--3-char-width\">\n <foehn-input-number\n [id]=\"buildId() + '_month'\"\n [name]=\"name + '_month'\"\n [label]=\"'foehn-input-date.month.label' | fromDictionary\"\n [(model)]=\"month\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableMonth\"\n [maxlength]=\"2\"\n [allowNegative]=\"false\"\n [max]=\"12\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [hideStandardHelpText]=\"true\"\n [isLabelSrOnly]=\"childrenLabelSrOnly\"\n ></foehn-input-number>\n </div>\n <div\n class=\"vd-form-flex__item vd-form-flex__item--4-char-width\"\n [class.mr-0]=\"shouldDisplayDatePicker()\"\n >\n <foehn-input-number\n [id]=\"buildId() + '_year'\"\n [name]=\"name + '_year'\"\n [label]=\"'foehn-input-date.year.label' | fromDictionary\"\n [(model)]=\"year\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableYear\"\n [allowNegative]=\"false\"\n [maxlength]=\"4\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [hideStandardHelpText]=\"true\"\n [isLabelSrOnly]=\"childrenLabelSrOnly\"\n ></foehn-input-number>\n </div>\n <foehn-date-picker-button\n *ngIf=\"shouldDisplayDatePicker()\"\n [id]=\"buildId() + '_datePickerButton'\"\n [(model)]=\"datePickerModel\"\n (modelChange)=\"updateDateFromDatePicker($event)\"\n (userInput)=\"handleDatePickerUserInput($event)\"\n [displaySelectedDate]=\"false\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n class=\"align-self-center\"\n ></foehn-date-picker-button>\n\n <div\n class=\"align-self-center position-relative\"\n *ngIf=\"!isEmpty(model) && (displayClearButton() | async)\"\n >\n <button\n [id]=\"buildId() + '_clearButton'\"\n type=\"button\"\n class=\"clear-button btn d-flex\"\n (click)=\"resetModel()\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-input.clear-button.label' | fromDictionary\n \"\n ></foehn-icon-times>\n </button>\n </div>\n </div>\n </fieldset>\n</div>\n", styles: [":host ::ng-deep .clear-button.btn .svg-inline--fa{font-size:1.5rem;color:#000!important}.clear-button{background:none}\n"], dependencies: [{ kind: "component", type: i1.FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: i4.FoehnDatePickerButtonComponent, selector: "foehn-date-picker-button", inputs: ["id", "name", "minYear", "maxYear", "minDate", "maxDate", "displaySelectedDate", "selectedDateSrOnlyLabelKey", "model"], outputs: ["modelChange", "userInput"] }, { kind: "component", type: i5.FoehnInputNumberComponent, selector: "foehn-input-number", inputs: ["hideStandardHelpText", "allowDecimal", "allowNegative", "maxDecimalCount", "allowFreeInput", "allowLeadingZero", "model"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.SdkDictionaryPipe, name: "fromDictionary" }] });
137
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group mb-0\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"vd-form-flex\">\n <div class=\"vd-form-flex__item vd-form-flex__item--3-char-width\">\n <foehn-input-number\n [id]=\"buildId() + '_day'\"\n [name]=\"name + '_day'\"\n [label]=\"'foehn-input-date.day.label' | fromDictionary\"\n [(model)]=\"day\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableDay\"\n [maxlength]=\"2\"\n [allowNegative]=\"false\"\n [max]=\"31\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [hideStandardHelpText]=\"true\"\n [isLabelSrOnly]=\"childrenLabelSrOnly\"\n #entryComponent\n ></foehn-input-number>\n </div>\n <div class=\"vd-form-flex__item vd-form-flex__item--3-char-width\">\n <foehn-input-number\n [id]=\"buildId() + '_month'\"\n [name]=\"name + '_month'\"\n [label]=\"'foehn-input-date.month.label' | fromDictionary\"\n [(model)]=\"month\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableMonth\"\n [maxlength]=\"2\"\n [allowNegative]=\"false\"\n [max]=\"12\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [hideStandardHelpText]=\"true\"\n [isLabelSrOnly]=\"childrenLabelSrOnly\"\n ></foehn-input-number>\n </div>\n <div\n class=\"vd-form-flex__item vd-form-flex__item--4-char-width\"\n [class.mr-0]=\"shouldDisplayDatePicker()\"\n >\n <foehn-input-number\n [id]=\"buildId() + '_year'\"\n [name]=\"name + '_year'\"\n [label]=\"'foehn-input-date.year.label' | fromDictionary\"\n [(model)]=\"year\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableYear\"\n [allowNegative]=\"false\"\n [maxlength]=\"4\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [hideStandardHelpText]=\"true\"\n [isLabelSrOnly]=\"childrenLabelSrOnly\"\n ></foehn-input-number>\n </div>\n <foehn-date-picker-button\n *ngIf=\"shouldDisplayDatePicker()\"\n [id]=\"buildId() + '_datePickerButton'\"\n [(model)]=\"datePickerModel\"\n (modelChange)=\"updateDateFromDatePicker($event)\"\n (userInput)=\"handleDatePickerUserInput($event)\"\n [displaySelectedDate]=\"false\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n class=\"align-self-center\"\n ></foehn-date-picker-button>\n\n <div\n class=\"align-self-center position-relative\"\n *ngIf=\"\n !isEmptyDependingOnDisabled() &&\n (displayClearButton() | async)\n \"\n >\n <button\n [id]=\"buildId() + '_clearButton'\"\n type=\"button\"\n class=\"clear-button btn d-flex\"\n (click)=\"resetModel()\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-input.clear-button.label' | fromDictionary\n \"\n ></foehn-icon-times>\n </button>\n </div>\n </div>\n </fieldset>\n</div>\n", styles: [":host ::ng-deep .clear-button.btn .svg-inline--fa{font-size:1.5rem;color:#000!important}.clear-button{background:none}\n"], dependencies: [{ kind: "component", type: i1.FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: i4.FoehnDatePickerButtonComponent, selector: "foehn-date-picker-button", inputs: ["id", "name", "minYear", "maxYear", "minDate", "maxDate", "displaySelectedDate", "selectedDateSrOnlyLabelKey", "model"], outputs: ["modelChange", "userInput"] }, { kind: "component", type: i5.FoehnInputNumberComponent, selector: "foehn-input-number", inputs: ["hideStandardHelpText", "allowDecimal", "allowNegative", "maxDecimalCount", "allowFreeInput", "allowLeadingZero", "model"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.SdkDictionaryPipe, name: "fromDictionary" }] });
106
138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FoehnDateComponent, decorators: [{
107
139
  type: Component,
108
140
  args: [{ selector: 'foehn-input-date', providers: [
@@ -111,7 +143,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
111
143
  useExisting: forwardRef(() => FoehnDateComponent),
112
144
  multi: true
113
145
  }
114
- ], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"vd-form-flex\">\n <div class=\"vd-form-flex__item vd-form-flex__item--3-char-width\">\n <foehn-input-number\n [id]=\"buildId() + '_day'\"\n [name]=\"name + '_day'\"\n [label]=\"'foehn-input-date.day.label' | fromDictionary\"\n [(model)]=\"day\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableDay\"\n [maxlength]=\"2\"\n [allowNegative]=\"false\"\n [max]=\"31\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [hideStandardHelpText]=\"true\"\n [isLabelSrOnly]=\"childrenLabelSrOnly\"\n #entryComponent\n ></foehn-input-number>\n </div>\n <div class=\"vd-form-flex__item vd-form-flex__item--3-char-width\">\n <foehn-input-number\n [id]=\"buildId() + '_month'\"\n [name]=\"name + '_month'\"\n [label]=\"'foehn-input-date.month.label' | fromDictionary\"\n [(model)]=\"month\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableMonth\"\n [maxlength]=\"2\"\n [allowNegative]=\"false\"\n [max]=\"12\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [hideStandardHelpText]=\"true\"\n [isLabelSrOnly]=\"childrenLabelSrOnly\"\n ></foehn-input-number>\n </div>\n <div\n class=\"vd-form-flex__item vd-form-flex__item--4-char-width\"\n [class.mr-0]=\"shouldDisplayDatePicker()\"\n >\n <foehn-input-number\n [id]=\"buildId() + '_year'\"\n [name]=\"name + '_year'\"\n [label]=\"'foehn-input-date.year.label' | fromDictionary\"\n [(model)]=\"year\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableYear\"\n [allowNegative]=\"false\"\n [maxlength]=\"4\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [hideStandardHelpText]=\"true\"\n [isLabelSrOnly]=\"childrenLabelSrOnly\"\n ></foehn-input-number>\n </div>\n <foehn-date-picker-button\n *ngIf=\"shouldDisplayDatePicker()\"\n [id]=\"buildId() + '_datePickerButton'\"\n [(model)]=\"datePickerModel\"\n (modelChange)=\"updateDateFromDatePicker($event)\"\n (userInput)=\"handleDatePickerUserInput($event)\"\n [displaySelectedDate]=\"false\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n class=\"align-self-center\"\n ></foehn-date-picker-button>\n\n <div\n class=\"align-self-center position-relative\"\n *ngIf=\"!isEmpty(model) && (displayClearButton() | async)\"\n >\n <button\n [id]=\"buildId() + '_clearButton'\"\n type=\"button\"\n class=\"clear-button btn d-flex\"\n (click)=\"resetModel()\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-input.clear-button.label' | fromDictionary\n \"\n ></foehn-icon-times>\n </button>\n </div>\n </div>\n </fieldset>\n</div>\n", styles: [":host ::ng-deep .clear-button.btn .svg-inline--fa{font-size:1.5rem;color:#000!important}.clear-button{background:none}\n"] }]
146
+ ], template: "<div\n class=\"form-group mb-0\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"vd-form-flex\">\n <div class=\"vd-form-flex__item vd-form-flex__item--3-char-width\">\n <foehn-input-number\n [id]=\"buildId() + '_day'\"\n [name]=\"name + '_day'\"\n [label]=\"'foehn-input-date.day.label' | fromDictionary\"\n [(model)]=\"day\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableDay\"\n [maxlength]=\"2\"\n [allowNegative]=\"false\"\n [max]=\"31\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [hideStandardHelpText]=\"true\"\n [isLabelSrOnly]=\"childrenLabelSrOnly\"\n #entryComponent\n ></foehn-input-number>\n </div>\n <div class=\"vd-form-flex__item vd-form-flex__item--3-char-width\">\n <foehn-input-number\n [id]=\"buildId() + '_month'\"\n [name]=\"name + '_month'\"\n [label]=\"'foehn-input-date.month.label' | fromDictionary\"\n [(model)]=\"month\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableMonth\"\n [maxlength]=\"2\"\n [allowNegative]=\"false\"\n [max]=\"12\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [hideStandardHelpText]=\"true\"\n [isLabelSrOnly]=\"childrenLabelSrOnly\"\n ></foehn-input-number>\n </div>\n <div\n class=\"vd-form-flex__item vd-form-flex__item--4-char-width\"\n [class.mr-0]=\"shouldDisplayDatePicker()\"\n >\n <foehn-input-number\n [id]=\"buildId() + '_year'\"\n [name]=\"name + '_year'\"\n [label]=\"'foehn-input-date.year.label' | fromDictionary\"\n [(model)]=\"year\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableYear\"\n [allowNegative]=\"false\"\n [maxlength]=\"4\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [hideStandardHelpText]=\"true\"\n [isLabelSrOnly]=\"childrenLabelSrOnly\"\n ></foehn-input-number>\n </div>\n <foehn-date-picker-button\n *ngIf=\"shouldDisplayDatePicker()\"\n [id]=\"buildId() + '_datePickerButton'\"\n [(model)]=\"datePickerModel\"\n (modelChange)=\"updateDateFromDatePicker($event)\"\n (userInput)=\"handleDatePickerUserInput($event)\"\n [displaySelectedDate]=\"false\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n class=\"align-self-center\"\n ></foehn-date-picker-button>\n\n <div\n class=\"align-self-center position-relative\"\n *ngIf=\"\n !isEmptyDependingOnDisabled() &&\n (displayClearButton() | async)\n \"\n >\n <button\n [id]=\"buildId() + '_clearButton'\"\n type=\"button\"\n class=\"clear-button btn d-flex\"\n (click)=\"resetModel()\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-input.clear-button.label' | fromDictionary\n \"\n ></foehn-icon-times>\n </button>\n </div>\n </div>\n </fieldset>\n</div>\n", styles: [":host ::ng-deep .clear-button.btn .svg-inline--fa{font-size:1.5rem;color:#000!important}.clear-button{background:none}\n"] }]
115
147
  }], ctorParameters: function () { return []; }, propDecorators: { disableDay: [{
116
148
  type: Input
117
149
  }], disableMonth: [{
@@ -127,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
127
159
  }], childrenLabelSrOnly: [{
128
160
  type: Input
129
161
  }] } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4taW5wdXQtZGF0ZS9mb2Vobi1pbnB1dC1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1pbnB1dC1kYXRlL2ZvZWhuLWlucHV0LWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0FBYzNFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxtQkFBNkI7SUEyQmpFO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUExQlosZUFBVSxHQUFHLEtBQUssQ0FBQztRQUduQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUdyQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQVNwQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFHN0Isd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBU3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVO1FBQ04sTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLElBQUksT0FBTyxVQUFVLEtBQUssV0FBVyxFQUFFO1lBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBYztRQUNuQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUM3QixJQUFJLENB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QUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxRQUFRLENBQUMsR0FBVztRQUN4QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkMsQ0FBQzs7K0dBekhRLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZRQVJoQjtRQUNQO1lBQ0ksT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pELEtBQUssRUFBRSxJQUFJO1NBQ2Q7S0FDSixpRENmTCwwdUtBOEhBOzJGRDdHYSxrQkFBa0I7a0JBWjlCLFNBQVM7K0JBQ0ksa0JBQWtCLGFBR2pCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDOzRCQUNqRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjswRUFJRCxVQUFVO3NCQURULEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFJTixtQkFBbUI7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGb2VobklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4taW5wdXQvZm9laG4taW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1pbnB1dC1kYXRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtZGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9laG4taW5wdXQtZGF0ZS5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2VobkRhdGVDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5EYXRlQ29tcG9uZW50IGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxudW1iZXJbXT4ge1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZURheSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlTW9udGggPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZVllYXIgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluRGF0ZTogbnVtYmVyW107XG5cbiAgICBASW5wdXQoKVxuICAgIG1heERhdGU6IG51bWJlcltdO1xuXG4gICAgQElucHV0KClcbiAgICBoaWRlRGF0ZVBpY2tlckJ1dHRvbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBjaGlsZHJlbkxhYmVsU3JPbmx5ID0gZmFsc2U7XG5cbiAgICBkYXk6IHN0cmluZztcbiAgICBtb250aDogc3RyaW5nO1xuICAgIHllYXI6IHN0cmluZztcbiAgICBkYXRlUGlja2VyTW9kZWw6IG51bWJlcltdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2xlYXJCdXR0b24gPSB0cnVlO1xuICAgIH1cblxuICAgIHVwZGF0ZURhdGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlRGF0ZUZyb21EYXRlUGlja2VyKGRhdGU6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbChkYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZURhdGVQaWNrZXJVc2VySW5wdXQoZGF0ZTogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UoZGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgdGhpcy55ZWFyID0gdGhpcy50b1N0cmluZyh2YWx1ZVswXSk7XG4gICAgICAgICAgICB0aGlzLm1vbnRoID0gdGhpcy50b1N0cmluZyh2YWx1ZVsxXSk7XG4gICAgICAgICAgICB0aGlzLmRheSA9IHRoaXMudG9TdHJpbmcodmFsdWVbMl0pO1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTW9kZWwgPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMueWVhciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLm1vbnRoID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZGF5ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck1vZGVsID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpc3BsYXlDbGVhckJ1dHRvbigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgLy8gT3ZlcnJpZGUgdGhlIGNsZWFyIGJ1dHRvbiBmb25jdGlvbiBub3Qgd29ycnkgYWJvdXQgdGhlIG1vZGVsIGF0IHRoaXMgc3RhZ2UuXG4gICAgICAgIHJldHVybiBvZih0aGlzLmNsZWFyQnV0dG9uKTtcbiAgICB9XG5cbiAgICBnZXRWYWxpZFZhbHVlKCk6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaXNFbXB0eSh0aGlzLmRheSkgJiZcbiAgICAgICAgICAgIHRoaXMuaXNFbXB0eSh0aGlzLm1vbnRoKSAmJlxuICAgICAgICAgICAgdGhpcy5pc0VtcHR5KHRoaXMueWVhcilcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbF8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLnRvTnVtYmVyKHRoaXMueWVhciksXG4gICAgICAgICAgICB0aGlzLnRvTnVtYmVyKHRoaXMubW9udGgpLFxuICAgICAgICAgICAgdGhpcy50b051bWJlcih0aGlzLmRheSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBzaG91bGREaXNwbGF5RGF0ZVBpY2tlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzLmhpZGVEYXRlUGlja2VyQnV0dG9uICYmXG4gICAgICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgIXRoaXMuZGlzYWJsZVllYXIgJiZcbiAgICAgICAgICAgICF0aGlzLmRpc2FibGVNb250aCAmJlxuICAgICAgICAgICAgIXRoaXMuZGlzYWJsZURheVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJlc2V0TW9kZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMueWVhciA9IG51bGw7XG4gICAgICAgIHRoaXMubW9udGggPSBudWxsO1xuICAgICAgICB0aGlzLmRheSA9IG51bGw7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlck1vZGVsID0gbnVsbDtcbiAgICAgICAgdGhpcy51cGRhdGVEYXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b051bWJlcihzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBzdHIgPyBOdW1iZXIoc3RyKSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b1N0cmluZyhudW06IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBudW0gPyBudW0udG9TdHJpbmcoKSA6IG51bGw7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cFwiXG4gICAgW2NsYXNzLmhhcy1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFtjbGFzcy52ZC1mb3JtLWdyb3VwLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2F0dHIuaWRdPVwiYnVpbGRJZCgnQ29udGFpbmVyJylcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuPlxuICAgIDxmaWVsZHNldFxuICAgICAgICBjbGFzcz1cIm1iLTNcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImdldERlc2NyaWJlZEJ5KClcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgbnVsbFwiXG4gICAgPlxuICAgICAgICA8bGVnZW5kICpuZ0lmPVwiISFsYWJlbFwiIFtuZ0NsYXNzXT1cImlzTGFiZWxTck9ubHkgPyAnc3Itb25seScgOiAndmQtcCdcIj5cbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlcXVpcmVkICYmICFoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1pbnB1dC5vcHRpb25hbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xlZ2VuZD5cblxuICAgICAgICA8Zm9laG4tdmFsaWRhdGlvbi1hbGVydHMgW2NvbXBvbmVudF09XCJ0aGlzXCI+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiaGVscFRleHRcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRJZCgpICsgJ0hlbHAnXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJoZWxwVGV4dFwiXG4gICAgICAgID48L3NtYWxsPlxuXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidmQtZm9ybS1mbGV4XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmQtZm9ybS1mbGV4X19pdGVtIHZkLWZvcm0tZmxleF9faXRlbS0tMy1jaGFyLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWlucHV0LW51bWJlclxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgpICsgJ19kYXknXCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICdfZGF5J1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInZm9laG4taW5wdXQtZGF0ZS5kYXkubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJkYXlcIlxuICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlRGF0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGRpc2FibGVEYXlcIlxuICAgICAgICAgICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIjJcIlxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dOZWdhdGl2ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhdPVwiMzFcIlxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0Vycm9ySW5oZXJpdGVkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGVTdGFuZGFyZEhlbHBUZXh0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbaXNMYWJlbFNyT25seV09XCJjaGlsZHJlbkxhYmVsU3JPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgI2VudHJ5Q29tcG9uZW50XG4gICAgICAgICAgICAgICAgPjwvZm9laG4taW5wdXQtbnVtYmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmQtZm9ybS1mbGV4X19pdGVtIHZkLWZvcm0tZmxleF9faXRlbS0tMy1jaGFyLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWlucHV0LW51bWJlclxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgpICsgJ19tb250aCdcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJ19tb250aCdcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2ZvZWhuLWlucHV0LWRhdGUubW9udGgubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJtb250aFwiXG4gICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVEYXRlKClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgZGlzYWJsZU1vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgW21heGxlbmd0aF09XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93TmVnYXRpdmVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgICAgICAgICBbaXNFcnJvckluaGVyaXRlZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtoaWRlU3RhbmRhcmRIZWxwVGV4dF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzTGFiZWxTck9ubHldPVwiY2hpbGRyZW5MYWJlbFNyT25seVwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taW5wdXQtbnVtYmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1mb3JtLWZsZXhfX2l0ZW0gdmQtZm9ybS1mbGV4X19pdGVtLS00LWNoYXItd2lkdGhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tci0wXT1cInNob3VsZERpc3BsYXlEYXRlUGlja2VyKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmb2Vobi1pbnB1dC1udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoKSArICdfeWVhcidcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJ195ZWFyJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInZm9laG4taW5wdXQtZGF0ZS55ZWFyLmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwieWVhclwiXG4gICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVEYXRlKClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgZGlzYWJsZVllYXJcIlxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dOZWdhdGl2ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiNFwiXG4gICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzRXJyb3JJbmhlcml0ZWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZVN0YW5kYXJkSGVscFRleHRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0xhYmVsU3JPbmx5XT1cImNoaWxkcmVuTGFiZWxTck9ubHlcIlxuICAgICAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LW51bWJlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGZvZWhuLWRhdGUtcGlja2VyLWJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvdWxkRGlzcGxheURhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoKSArICdfZGF0ZVBpY2tlckJ1dHRvbidcIlxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImRhdGVQaWNrZXJNb2RlbFwiXG4gICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInVwZGF0ZURhdGVGcm9tRGF0ZVBpY2tlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZURhdGVQaWNrZXJVc2VySW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2Rpc3BsYXlTZWxlY3RlZERhdGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxpZ24tc2VsZi1jZW50ZXJcIlxuICAgICAgICAgICAgPjwvZm9laG4tZGF0ZS1waWNrZXItYnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhbGlnbi1zZWxmLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNFbXB0eShtb2RlbCkgJiYgKGRpc3BsYXlDbGVhckJ1dHRvbigpIHwgYXN5bmMpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCkgKyAnX2NsZWFyQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyLWJ1dHRvbiBidG4gZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0TW9kZWwoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi10aW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC5jbGVhci1idXR0b24ubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tdGltZXM+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cbjwvZGl2PlxuIl19
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4taW5wdXQtZGF0ZS9mb2Vobi1pbnB1dC1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1pbnB1dC1kYXRlL2ZvZWhuLWlucHV0LWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0FBYzNFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxtQkFBNkI7SUEyQmpFO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUExQlosZUFBVSxHQUFHLEtBQUssQ0FBQztRQUduQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUdyQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQVNwQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFHN0Isd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBU3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVO1FBQ04sTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLElBQUksT0FBTyxVQUFVLEtBQUssV0FBVyxFQUFFO1lBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBYztRQUNuQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUM3QixJQUFJLENB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YXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGb2VobklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4taW5wdXQvZm9laG4taW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1pbnB1dC1kYXRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtZGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9laG4taW5wdXQtZGF0ZS5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2VobkRhdGVDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5EYXRlQ29tcG9uZW50IGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxudW1iZXJbXT4ge1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZURheSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlTW9udGggPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZVllYXIgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluRGF0ZTogbnVtYmVyW107XG5cbiAgICBASW5wdXQoKVxuICAgIG1heERhdGU6IG51bWJlcltdO1xuXG4gICAgQElucHV0KClcbiAgICBoaWRlRGF0ZVBpY2tlckJ1dHRvbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBjaGlsZHJlbkxhYmVsU3JPbmx5ID0gZmFsc2U7XG5cbiAgICBkYXk6IHN0cmluZztcbiAgICBtb250aDogc3RyaW5nO1xuICAgIHllYXI6IHN0cmluZztcbiAgICBkYXRlUGlja2VyTW9kZWw6IG51bWJlcltdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2xlYXJCdXR0b24gPSB0cnVlO1xuICAgIH1cblxuICAgIHVwZGF0ZURhdGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlRGF0ZUZyb21EYXRlUGlja2VyKGRhdGU6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbChkYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZURhdGVQaWNrZXJVc2VySW5wdXQoZGF0ZTogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UoZGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgdGhpcy55ZWFyID0gdGhpcy5udW1iZXJUb1N0cmluZyh2YWx1ZVswXSk7XG4gICAgICAgICAgICB0aGlzLm1vbnRoID0gdGhpcy5udW1iZXJUb1N0cmluZyh2YWx1ZVsxXSk7XG4gICAgICAgICAgICB0aGlzLmRheSA9IHRoaXMubnVtYmVyVG9TdHJpbmcodmFsdWVbMl0pO1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTW9kZWwgPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMueWVhciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLm1vbnRoID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZGF5ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck1vZGVsID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpc3BsYXlDbGVhckJ1dHRvbigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgLy8gT3ZlcnJpZGUgdGhlIGNsZWFyIGJ1dHRvbiBmb25jdGlvbiBub3Qgd29ycnkgYWJvdXQgdGhlIG1vZGVsIGF0IHRoaXMgc3RhZ2UuXG4gICAgICAgIGNvbnN0IHZpc2libGUgPSB0aGlzLmNsZWFyQnV0dG9uICYmICF0aGlzLmlzRGlzYWJsZWQoKTtcbiAgICAgICAgcmV0dXJuIG9mKHZpc2libGUpO1xuICAgIH1cblxuICAgIGdldFZhbGlkVmFsdWUoKTogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbF8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMudG9OdW1iZXIodGhpcy55ZWFyKSxcbiAgICAgICAgICAgIHRoaXMudG9OdW1iZXIodGhpcy5tb250aCksXG4gICAgICAgICAgICB0aGlzLnRvTnVtYmVyKHRoaXMuZGF5KVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHNob3VsZERpc3BsYXlEYXRlUGlja2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMuaGlkZURhdGVQaWNrZXJCdXR0b24gJiZcbiAgICAgICAgICAgICF0aGlzLmRpc2FibGVkICYmXG4gICAgICAgICAgICAhdGhpcy5kaXNhYmxlWWVhciAmJlxuICAgICAgICAgICAgIXRoaXMuZGlzYWJsZU1vbnRoICYmXG4gICAgICAgICAgICAhdGhpcy5kaXNhYmxlRGF5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmVzZXRNb2RlbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZVllYXIpIHtcbiAgICAgICAgICAgIHRoaXMueWVhciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVNb250aCkge1xuICAgICAgICAgICAgdGhpcy5tb250aCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVEYXkpIHtcbiAgICAgICAgICAgIHRoaXMuZGF5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZVllYXIgJiYgIXRoaXMuZGlzYWJsZU1vbnRoICYmICF0aGlzLmRpc2FibGVEYXkpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck1vZGVsID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vZGVsXyA9IFtcbiAgICAgICAgICAgIHRoaXMudG9OdW1iZXIodGhpcy55ZWFyKSxcbiAgICAgICAgICAgIHRoaXMudG9OdW1iZXIodGhpcy5tb250aCksXG4gICAgICAgICAgICB0aGlzLnRvTnVtYmVyKHRoaXMuZGF5KVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMudXBkYXRlRGF0ZSgpO1xuICAgICAgICB0aGlzLmhhbmRsZVVzZXJJbnB1dCgpO1xuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHN1cGVyLmlzRW1wdHkodGhpcy5kYXkpICYmXG4gICAgICAgICAgICBzdXBlci5pc0VtcHR5KHRoaXMubW9udGgpICYmXG4gICAgICAgICAgICBzdXBlci5pc0VtcHR5KHRoaXMueWVhcilcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc0VtcHR5RGVwZW5kaW5nT25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGF5RW1wdHlPckRpc2FibGVkID0gdGhpcy5kaXNhYmxlRGF5IHx8IHN1cGVyLmlzRW1wdHkodGhpcy5kYXkpO1xuICAgICAgICBjb25zdCBtb250aEVtcHR5T3JEaXNhYmxlZCA9XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVNb250aCB8fCBzdXBlci5pc0VtcHR5KHRoaXMubW9udGgpO1xuICAgICAgICBjb25zdCB5ZWFyRW1wdHlPckRpc2FibGVkID1cbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVllYXIgfHwgc3VwZXIuaXNFbXB0eSh0aGlzLnllYXIpO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBkYXlFbXB0eU9yRGlzYWJsZWQgJiYgbW9udGhFbXB0eU9yRGlzYWJsZWQgJiYgeWVhckVtcHR5T3JEaXNhYmxlZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICh0aGlzLmRpc2FibGVEYXkgJiYgdGhpcy5kaXNhYmxlTW9udGggJiYgdGhpcy5kaXNhYmxlWWVhcilcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvTnVtYmVyKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHN0ciA/IE51bWJlcihzdHIpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG51bWJlclRvU3RyaW5nKG51bTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG51bSA/IG51bS50b1N0cmluZygpIDogbnVsbDtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgICA8ZmllbGRzZXRcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgID5cbiAgICAgICAgPGxlZ2VuZCAqbmdJZj1cIiEhbGFiZWxcIiBbbmdDbGFzc109XCJpc0xhYmVsU3JPbmx5ID8gJ3NyLW9ubHknIDogJ3ZkLXAnXCI+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnZm9laG4taW5wdXQub3B0aW9uYWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sZWdlbmQ+XG5cbiAgICAgICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzIFtjb21wb25lbnRdPVwidGhpc1wiPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cImhlbHBUZXh0XCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoKSArICdIZWxwJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHRcIlxuICAgICAgICA+PC9zbWFsbD5cblxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZkLWZvcm0tZmxleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZkLWZvcm0tZmxleF9faXRlbSB2ZC1mb3JtLWZsZXhfX2l0ZW0tLTMtY2hhci13aWR0aFwiPlxuICAgICAgICAgICAgICAgIDxmb2Vobi1pbnB1dC1udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoKSArICdfZGF5J1wiXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnX2RheSdcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2ZvZWhuLWlucHV0LWRhdGUuZGF5LmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiZGF5XCJcbiAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInVwZGF0ZURhdGUoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBkaXNhYmxlRGF5XCJcbiAgICAgICAgICAgICAgICAgICAgW21heGxlbmd0aF09XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93TmVnYXRpdmVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIjMxXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgICAgICAgICBbaXNFcnJvckluaGVyaXRlZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtoaWRlU3RhbmRhcmRIZWxwVGV4dF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzTGFiZWxTck9ubHldPVwiY2hpbGRyZW5MYWJlbFNyT25seVwiXG4gICAgICAgICAgICAgICAgICAgICNlbnRyeUNvbXBvbmVudFxuICAgICAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LW51bWJlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZkLWZvcm0tZmxleF9faXRlbSB2ZC1mb3JtLWZsZXhfX2l0ZW0tLTMtY2hhci13aWR0aFwiPlxuICAgICAgICAgICAgICAgIDxmb2Vobi1pbnB1dC1udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoKSArICdfbW9udGgnXCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICdfbW9udGgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb2Vobi1pbnB1dC1kYXRlLm1vbnRoLmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwibW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlRGF0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGRpc2FibGVNb250aFwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd05lZ2F0aXZlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW21heF09XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzRXJyb3JJbmhlcml0ZWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZVN0YW5kYXJkSGVscFRleHRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0xhYmVsU3JPbmx5XT1cImNoaWxkcmVuTGFiZWxTck9ubHlcIlxuICAgICAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LW51bWJlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtZm9ybS1mbGV4X19pdGVtIHZkLWZvcm0tZmxleF9faXRlbS0tNC1jaGFyLXdpZHRoXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubXItMF09XCJzaG91bGREaXNwbGF5RGF0ZVBpY2tlcigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Zm9laG4taW5wdXQtbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCkgKyAnX3llYXInXCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICdfeWVhcidcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2ZvZWhuLWlucHV0LWRhdGUueWVhci5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInllYXJcIlxuICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlRGF0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGRpc2FibGVZZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93TmVnYXRpdmVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIjRcIlxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0Vycm9ySW5oZXJpdGVkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGVTdGFuZGFyZEhlbHBUZXh0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbaXNMYWJlbFNyT25seV09XCJjaGlsZHJlbkxhYmVsU3JPbmx5XCJcbiAgICAgICAgICAgICAgICA+PC9mb2Vobi1pbnB1dC1udW1iZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxmb2Vobi1kYXRlLXBpY2tlci1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3VsZERpc3BsYXlEYXRlUGlja2VyKClcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCkgKyAnX2RhdGVQaWNrZXJCdXR0b24nXCJcbiAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJkYXRlUGlja2VyTW9kZWxcIlxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVEYXRlRnJvbURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVEYXRlUGlja2VyVXNlcklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5U2VsZWN0ZWREYXRlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFsaWduLXNlbGYtY2VudGVyXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWRhdGUtcGlja2VyLWJ1dHRvbj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxpZ24tc2VsZi1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICFpc0VtcHR5RGVwZW5kaW5nT25EaXNhYmxlZCgpICYmXG4gICAgICAgICAgICAgICAgICAgIChkaXNwbGF5Q2xlYXJCdXR0b24oKSB8IGFzeW5jKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgpICsgJ19jbGVhckJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbGVhci1idXR0b24gYnRuIGQtZmxleFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNldE1vZGVsKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWljb24tdGltZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4taW5wdXQuY2xlYXItYnV0dG9uLmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mb2Vobi1pY29uLXRpbWVzPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG48L2Rpdj5cbiJdfQ==