@byuhbll/components 4.0.0-alpha.8 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/animations/animations.mjs +5 -5
- package/esm2022/lib/checkbox/checkbox.component.mjs +15 -0
- package/esm2022/lib/contact-utils.mjs +41 -0
- package/esm2022/lib/copy-tooltip/copy-tooltip.component.mjs +3 -3
- package/esm2022/lib/expand-collapse/expand-collapse.component.mjs +3 -3
- package/esm2022/lib/hbll-footer/hbll-footer.component.mjs +98 -0
- package/esm2022/lib/hbll-header/hbll-header.component.mjs +30 -25
- package/esm2022/lib/hbll-header/nav-bar/nav-bar.component.mjs +255 -229
- package/esm2022/lib/hbll-header/nav-bar-dropdown/nav-bar-dropdown.component.mjs +3 -3
- package/esm2022/lib/header-with-impersonation/header-with-impersonation.component.mjs +39 -0
- package/esm2022/lib/impersonate-modal/impersonate-modal.component.mjs +190 -0
- package/esm2022/lib/impersonation-banner/impersonation-banner.component.mjs +9 -10
- package/esm2022/lib/impersonation-banner/models/application-access.mjs +7 -0
- package/esm2022/lib/impersonation-banner/models/person-summary.mjs +15 -0
- package/esm2022/lib/models/token-payload.mjs +2 -0
- package/esm2022/lib/multi-select/multi-select.component.mjs +115 -0
- package/esm2022/lib/pipes/hbll-item-type-icon.pipe.mjs +128 -0
- package/esm2022/lib/ss-search-bar/advanced-search/advanced-search.component.mjs +5 -5
- package/esm2022/lib/ss-search-bar/date-range/date-range.component.mjs +3 -3
- package/esm2022/lib/ss-search-bar/ss-search-bar.component.mjs +3 -3
- package/esm2022/lib/utils.mjs +2 -3
- package/esm2022/public-api.mjs +6 -1
- package/fesm2022/byuhbll-components.mjs +791 -468
- package/fesm2022/byuhbll-components.mjs.map +1 -1
- package/lib/{hbll-checkbox/hbll-checkbox.component.d.ts → checkbox/checkbox.component.d.ts} +1 -1
- package/lib/contact-utils.d.ts +19 -0
- package/lib/hbll-footer/hbll-footer.component.d.ts +30 -0
- package/lib/hbll-header/hbll-header.component.d.ts +12 -16
- package/lib/hbll-header/nav-bar/nav-bar.component.d.ts +5 -3
- package/lib/header-with-impersonation/header-with-impersonation.component.d.ts +20 -0
- package/lib/{hbll-header/impersonate-modal → impersonate-modal}/impersonate-modal.component.d.ts +3 -1
- package/lib/impersonation-banner/impersonation-banner.component.d.ts +6 -5
- package/lib/{hbll-multi-select/hbll-multi-select.component.d.ts → multi-select/multi-select.component.d.ts} +1 -1
- package/lib/pipes/hbll-item-type-icon.pipe.d.ts +17 -0
- package/lib/ss-search-bar/advanced-search/advanced-search.component.d.ts +4 -1
- package/package.json +1 -1
- package/public-api.d.ts +5 -0
- package/styles/scss/_mixins.scss +1 -1
- package/styles/scss/_vars.scss +1 -0
- package/styles/scss/base.scss +1 -2
- package/styles/scss/shared.scss +8 -0
- package/esm2022/lib/hbll-checkbox/hbll-checkbox.component.mjs +0 -15
- package/esm2022/lib/hbll-header/impersonate-modal/impersonate-modal.component.mjs +0 -188
- package/esm2022/lib/hbll-header/models/application-access.mjs +0 -7
- package/esm2022/lib/hbll-header/models/person-summary.mjs +0 -15
- package/esm2022/lib/hbll-header/models/token-payload.mjs +0 -2
- package/esm2022/lib/hbll-multi-select/hbll-multi-select.component.mjs +0 -115
- /package/lib/{hbll-header → impersonation-banner}/models/application-access.d.ts +0 -0
- /package/lib/{hbll-header → impersonation-banner}/models/person-summary.d.ts +0 -0
- /package/lib/{hbll-header/models → models}/token-payload.d.ts +0 -0
|
@@ -52,11 +52,11 @@ export class DateRangeComponent {
|
|
|
52
52
|
this.dateForm.controls.to.setValue(to);
|
|
53
53
|
}
|
|
54
54
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: DateRangeComponent, isStandalone: true, selector: "lib-date-range", inputs: { from: "from", to: "to" }, outputs: { validDateChange: "validDateChange", fromChange: "fromChange", toChange: "toChange" }, ngImport: i0, template: "<form id=\"fromTo\" data-testid=\"fromTo\" [formGroup]=\"dateForm\">\n <label for=\"fromFacet\">Between</label>\n <input\n formControlName=\"from\"\n id=\"fromFacet\"\n name=\"fromFacet\"\n data-testid=\"from\"\n placeholder=\"YYYY\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n (input)=\"onFromChange()\"\n [class.error]=\"\n dateForm.errors?.['fromInvalid'] || dateForm.controls.from.errors?.['pattern']\n \"\n />\n <label for=\"toFacet\">and</label>\n <input\n formControlName=\"to\"\n id=\"toFacet\"\n name=\"toFacet\"\n data-testid=\"to\"\n placeholder=\"YYYY\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n (input)=\"onToChange()\"\n [class.error]=\"dateForm.errors?.['toInvalid'] || dateForm.controls.to.errors?.['pattern']\"\n />\n</form>\n", styles: ["input{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}input:focus{
|
|
55
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: DateRangeComponent, isStandalone: true, selector: "lib-date-range", inputs: { from: "from", to: "to" }, outputs: { validDateChange: "validDateChange", fromChange: "fromChange", toChange: "toChange" }, ngImport: i0, template: "<form id=\"fromTo\" data-testid=\"fromTo\" [formGroup]=\"dateForm\">\n <label for=\"fromFacet\">Between</label>\n <input\n formControlName=\"from\"\n id=\"fromFacet\"\n name=\"fromFacet\"\n data-testid=\"from\"\n placeholder=\"YYYY\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n (input)=\"onFromChange()\"\n [class.error]=\"\n dateForm.errors?.['fromInvalid'] || dateForm.controls.from.errors?.['pattern']\n \"\n />\n <label for=\"toFacet\">and</label>\n <input\n formControlName=\"to\"\n id=\"toFacet\"\n name=\"toFacet\"\n data-testid=\"to\"\n placeholder=\"YYYY\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n (input)=\"onToChange()\"\n [class.error]=\"dateForm.errors?.['toInvalid'] || dateForm.controls.to.errors?.['pattern']\"\n />\n</form>\n", styles: ["input{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}input:focus{outline-color:#3a6093}#fromTo{margin-top:.6rem;margin-bottom:.8rem}#fromTo label{margin-right:.7em}#fromTo label:not(:first-of-type){margin-left:.7em}#fromTo input{font-size:inherit;width:3.5em}#fromTo input.error{border-color:#b04940}@media screen and (min-width: 690px){#fromTo{margin-bottom:1.4rem}#fromTo label{margin-right:.65em}#fromTo label:not(:first-of-type){margin-left:.65em}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], animations: [libHbllFadeInOut], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
56
56
|
}
|
|
57
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DateRangeComponent, decorators: [{
|
|
58
58
|
type: Component,
|
|
59
|
-
args: [{ selector: 'lib-date-range', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, ReactiveFormsModule], animations: [libHbllFadeInOut], template: "<form id=\"fromTo\" data-testid=\"fromTo\" [formGroup]=\"dateForm\">\n <label for=\"fromFacet\">Between</label>\n <input\n formControlName=\"from\"\n id=\"fromFacet\"\n name=\"fromFacet\"\n data-testid=\"from\"\n placeholder=\"YYYY\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n (input)=\"onFromChange()\"\n [class.error]=\"\n dateForm.errors?.['fromInvalid'] || dateForm.controls.from.errors?.['pattern']\n \"\n />\n <label for=\"toFacet\">and</label>\n <input\n formControlName=\"to\"\n id=\"toFacet\"\n name=\"toFacet\"\n data-testid=\"to\"\n placeholder=\"YYYY\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n (input)=\"onToChange()\"\n [class.error]=\"dateForm.errors?.['toInvalid'] || dateForm.controls.to.errors?.['pattern']\"\n />\n</form>\n", styles: ["input{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}input:focus{
|
|
59
|
+
args: [{ selector: 'lib-date-range', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, ReactiveFormsModule], animations: [libHbllFadeInOut], template: "<form id=\"fromTo\" data-testid=\"fromTo\" [formGroup]=\"dateForm\">\n <label for=\"fromFacet\">Between</label>\n <input\n formControlName=\"from\"\n id=\"fromFacet\"\n name=\"fromFacet\"\n data-testid=\"from\"\n placeholder=\"YYYY\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n (input)=\"onFromChange()\"\n [class.error]=\"\n dateForm.errors?.['fromInvalid'] || dateForm.controls.from.errors?.['pattern']\n \"\n />\n <label for=\"toFacet\">and</label>\n <input\n formControlName=\"to\"\n id=\"toFacet\"\n name=\"toFacet\"\n data-testid=\"to\"\n placeholder=\"YYYY\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n (input)=\"onToChange()\"\n [class.error]=\"dateForm.errors?.['toInvalid'] || dateForm.controls.to.errors?.['pattern']\"\n />\n</form>\n", styles: ["input{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}input:focus{outline-color:#3a6093}#fromTo{margin-top:.6rem;margin-bottom:.8rem}#fromTo label{margin-right:.7em}#fromTo label:not(:first-of-type){margin-left:.7em}#fromTo input{font-size:inherit;width:3.5em}#fromTo input.error{border-color:#b04940}@media screen and (min-width: 690px){#fromTo{margin-bottom:1.4rem}#fromTo label{margin-right:.65em}#fromTo label:not(:first-of-type){margin-left:.65em}}\n"] }]
|
|
60
60
|
}], propDecorators: { validDateChange: [{
|
|
61
61
|
type: Output
|
|
62
62
|
}], fromChange: [{
|
|
@@ -68,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
68
68
|
}], to: [{
|
|
69
69
|
type: Input
|
|
70
70
|
}] } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc3Mtc2VhcmNoLWJhci9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NzLXNlYXJjaC1iYXIvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBV25ELE1BQU0sT0FBTyxrQkFBa0I7SUFUL0I7UUFVcUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JEOztXQUVHO1FBQ08sb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBZ0MsQ0FBQztRQUNuRSxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN0QyxhQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQzlCO1lBQ0ksSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFD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akIsTUFBTTtnQkFRTSxJQUFJO3NCQUFoQixLQUFLO2dCQUdPLEVBQUU7c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgbGliSGJsbEZhZGVJbk91dCB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbnMvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyB2YWxpZGF0ZURhdGVSYW5nZUZpZWxkcyB9IGZyb20gJy4uL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItZGF0ZS1yYW5nZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RhdGUtcmFuZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICAgIGFuaW1hdGlvbnM6IFtsaWJIYmxsRmFkZUluT3V0XSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIpO1xuICAgIC8qKlxuICAgICAqIEVtaXRzIGB7IGZyb206IHN0cmluZywgdG86IHN0cmluZyB9YCBvYmplY3QgaWYgYm90aCB2YWx1ZXMgYXJlIHNldCB0byBhIHZhbGlkIG9yIGVtcHR5IHN0YXRlIGJ5IHRoZSB1c2VyLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB2YWxpZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH0+KCk7XG4gICAgQE91dHB1dCgpIGZyb21DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgdG9DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBwcm90ZWN0ZWQgZGF0ZUZvcm0gPSB0aGlzLmZiLmdyb3VwKFxuICAgICAgICB7XG4gICAgICAgICAgICBmcm9tOiBbJycsIFtWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05XXs0fSQnKV1dLFxuICAgICAgICAgICAgdG86IFsnJywgW1ZhbGlkYXRvcnMucGF0dGVybignXlswLTldezR9JCcpXV0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgdmFsaWRhdG9yczogdmFsaWRhdGVEYXRlUmFuZ2VGaWVsZHMoKSB9LFxuICAgICk7XG4gICAgQElucHV0KCkgc2V0IGZyb20oZnJvbTogc3RyaW5nKSB7XG4gICAgICAgIGlmIChmcm9tICE9PSB0aGlzLmRhdGVGb3JtLmNvbnRyb2xzLmZyb20udmFsdWUpIHRoaXMuZGF0ZUZvcm0uY29udHJvbHMuZnJvbS5zZXRWYWx1ZShmcm9tKTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IHRvKHRvOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRvICE9PSB0aGlzLmRhdGVGb3JtLmNvbnRyb2xzLnRvLnZhbHVlKSB0aGlzLmRhdGVGb3JtLmNvbnRyb2xzLnRvLnNldFZhbHVlKHRvKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIG9uRnJvbUNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMuZnJvbUNoYW5nZS5lbWl0KHRoaXMuZGF0ZUZvcm0uY29udHJvbHMuZnJvbS52YWx1ZSk7XG4gICAgfTtcbiAgICBwcm90ZWN0ZWQgb25Ub0NoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMudG9DaGFuZ2UuZW1pdCh0aGlzLmRhdGVGb3JtLmNvbnRyb2xzLnRvLnZhbHVlKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvbklucHV0Q2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBsZXQgZnJvbSA9IHRoaXMuZGF0ZUZvcm0uY29udHJvbHMuZnJvbS52YWx1ZTtcbiAgICAgICAgbGV0IHRvID0gdGhpcy5kYXRlRm9ybS5jb250cm9scy50by52YWx1ZTtcbiAgICAgICAgaWYgKGZyb20gJiYgdG8gJiYgdGhpcy5kYXRlRm9ybS5jb250cm9scy5mcm9tLnZhbGlkICYmIHRoaXMuZGF0ZUZvcm0uY29udHJvbHMudG8udmFsaWQpIHtcbiAgICAgICAgICAgIC8vIEVuc3VyZSAndG8nIGNvbnRhaW5zIHRoZSBsYXJnZXIgeWVhci4gU3dhcCBpZiBuZWNlc3NhcnkuXG4gICAgICAgICAgICBpZiAocGFyc2VJbnQoZnJvbSkgPiBwYXJzZUludCh0bykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzd2FwID0gZnJvbTtcbiAgICAgICAgICAgICAgICBmcm9tID0gdG87XG4gICAgICAgICAgICAgICAgdG8gPSBzd2FwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy52YWxpZERhdGVDaGFuZ2UuZW1pdCh7IGZyb20sIHRvIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKCFmcm9tICYmICF0bykge1xuICAgICAgICAgICAgdGhpcy52YWxpZERhdGVDaGFuZ2UuZW1pdCh7IGZyb20sIHRvIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiIsIjxmb3JtIGlkPVwiZnJvbVRvXCIgZGF0YS10ZXN0aWQ9XCJmcm9tVG9cIiBbZm9ybUdyb3VwXT1cImRhdGVGb3JtXCI+XG4gICAgPGxhYmVsIGZvcj1cImZyb21GYWNldFwiPkJldHdlZW48L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmcm9tXCJcbiAgICAgICAgaWQ9XCJmcm9tRmFjZXRcIlxuICAgICAgICBuYW1lPVwiZnJvbUZhY2V0XCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJmcm9tXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJZWVlZXCJcbiAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgIG1pbmxlbmd0aD1cIjRcIlxuICAgICAgICBtYXhsZW5ndGg9XCI0XCJcbiAgICAgICAgKGlucHV0KT1cIm9uRnJvbUNoYW5nZSgpXCJcbiAgICAgICAgW2NsYXNzLmVycm9yXT1cIlxuICAgICAgICAgICAgZGF0ZUZvcm0uZXJyb3JzPy5bJ2Zyb21JbnZhbGlkJ10gfHwgZGF0ZUZvcm0uY29udHJvbHMuZnJvbS5lcnJvcnM/LlsncGF0dGVybiddXG4gICAgICAgIFwiXG4gICAgLz5cbiAgICA8bGFiZWwgZm9yPVwidG9GYWNldFwiPmFuZDwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRvXCJcbiAgICAgICAgaWQ9XCJ0b0ZhY2V0XCJcbiAgICAgICAgbmFtZT1cInRvRmFjZXRcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInRvXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJZWVlZXCJcbiAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgIG1pbmxlbmd0aD1cIjRcIlxuICAgICAgICBtYXhsZW5ndGg9XCI0XCJcbiAgICAgICAgKGlucHV0KT1cIm9uVG9DaGFuZ2UoKVwiXG4gICAgICAgIFtjbGFzcy5lcnJvcl09XCJkYXRlRm9ybS5lcnJvcnM/LlsndG9JbnZhbGlkJ10gfHwgZGF0ZUZvcm0uY29udHJvbHMudG8uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiXG4gICAgLz5cbjwvZm9ybT5cbiJdfQ==
|