@rededor/site-front-end-lib 1.3.9 → 1.3.11
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/components/filter-letter-and-terms/filter-letter-and-terms.component.mjs +6 -3
- package/esm2022/lib/components/filters/filter-generic/filter-generic.component.mjs +220 -0
- package/esm2022/lib/components/filters/filter-planos-convenios/filter-planos-convenios.component.mjs +3 -3
- package/esm2022/lib/components/index.mjs +2 -1
- package/esm2022/lib/enums/Filter.enum.mjs +9 -0
- package/esm2022/lib/enums/index.mjs +2 -1
- package/esm2022/lib/models/filters/filter-planos-convenios.model.mjs +1 -1
- package/esm2022/lib/models/filters/filter-section.type.mjs +2 -0
- package/esm2022/lib/models/filters/filter-sections.model.mjs +2 -0
- package/fesm2022/rededor-site-front-end-lib.mjs +230 -5
- package/fesm2022/rededor-site-front-end-lib.mjs.map +1 -1
- package/lib/components/filter-letter-and-terms/filter-letter-and-terms.component.d.ts +3 -0
- package/lib/components/filters/filter-generic/filter-generic.component.d.ts +56 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/enums/Filter.enum.d.ts +7 -0
- package/lib/enums/index.d.ts +1 -0
- package/lib/models/filters/filter-planos-convenios.model.d.ts +16 -0
- package/lib/models/filters/filter-section.type.d.ts +13 -0
- package/lib/models/filters/filter-sections.model.d.ts +51 -0
- package/package.json +1 -1
package/esm2022/lib/components/filter-letter-and-terms/filter-letter-and-terms.component.mjs
CHANGED
|
@@ -18,6 +18,9 @@ export class FilterLetterAndTermsComponent {
|
|
|
18
18
|
return {
|
|
19
19
|
'--font-family': this.curaService.getFontFamily(''),
|
|
20
20
|
'--neutral-purewhite': this.curaService.getColor('neutral-purewhite'),
|
|
21
|
+
'--neutral-pale': this.curaService.getColor('neutral-pale'),
|
|
22
|
+
'--neutral-light': this.curaService.getColor('neutral-light'),
|
|
23
|
+
'--neutral-dark': this.curaService.getColor('neutral-dark'),
|
|
21
24
|
'--neutral-black': this.curaService.getColor('neutral-black'),
|
|
22
25
|
'--color-one-light': this.curaService.getColor('primary-light'),
|
|
23
26
|
'--color-one-base': this.curaService.getColor('primary-base'),
|
|
@@ -62,11 +65,11 @@ export class FilterLetterAndTermsComponent {
|
|
|
62
65
|
}
|
|
63
66
|
}
|
|
64
67
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterLetterAndTermsComponent, deps: [{ token: i1.CuraService }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
65
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FilterLetterAndTermsComponent, isStandalone: true, selector: "rdsite-filter-letter-and-terms", inputs: { options: "options", baseUrl: "baseUrl", baseUrlAll: "baseUrlAll", enableScroll: "enableScroll", selectedOption: "selectedOption" }, outputs: { optionSelected: "optionSelected" }, host: { properties: { "style": "this.style" } }, ngImport: i0, template: "<div class=\"filter-letter-and-terms\">\r\n <a\r\n id=\"todas\"\r\n rdsitelink\r\n class=\"filter-option\"\r\n [class.selected]=\"selectedOption === ''\"\r\n [href]=\"baseUrlAll ? baseUrlAll : baseUrl ? baseUrl : '#'\"\r\n (click)=\"selectOption('', $event)\"\r\n >\r\n TODAS\r\n </a>\r\n\r\n @for (option of options; track option) {\r\n <a\r\n [id]=\"option\"\r\n rdsitelink\r\n class=\"filter-option\"\r\n [class.selected]=\"selectedOption === option\"\r\n [href]=\"baseUrl ? baseUrl + option.toLowerCase() : '#'\"\r\n (click)=\"selectOption(option, $event)\"\r\n >\r\n {{ option }}\r\n </a>\r\n }\r\n</div>\r\n", styles: [".filter-letter-and-terms{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:12px;width:100vw;margin-inline:-5vw;padding-inline:5vw;padding-block:12px;overflow-x:scroll}@media only screen and (min-width: 992px){.filter-letter-and-terms{flex-wrap:wrap;width:100%;padding:12px 0;margin:0;overflow-x:auto}}.filter-letter-and-terms .filter-option{flex:0 0 28px;display:flex;justify-content:center;align-items:center;padding:6px;color:var(--neutral-
|
|
68
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FilterLetterAndTermsComponent, isStandalone: true, selector: "rdsite-filter-letter-and-terms", inputs: { options: "options", baseUrl: "baseUrl", baseUrlAll: "baseUrlAll", enableScroll: "enableScroll", selectedOption: "selectedOption" }, outputs: { optionSelected: "optionSelected" }, host: { properties: { "style": "this.style" } }, ngImport: i0, template: "<div class=\"filter-letter-and-terms\">\r\n <a\r\n id=\"todas\"\r\n rdsitelink\r\n class=\"filter-option\"\r\n [class.selected]=\"selectedOption === ''\"\r\n [href]=\"baseUrlAll ? baseUrlAll : baseUrl ? baseUrl : '#'\"\r\n (click)=\"selectOption('', $event)\"\r\n >\r\n TODAS\r\n </a>\r\n\r\n @for (option of options; track option) {\r\n <a\r\n [id]=\"option\"\r\n rdsitelink\r\n class=\"filter-option\"\r\n [class.selected]=\"selectedOption === option\"\r\n [href]=\"baseUrl ? baseUrl + option.toLowerCase() : '#'\"\r\n (click)=\"selectOption(option, $event)\"\r\n >\r\n {{ option }}\r\n </a>\r\n }\r\n</div>\r\n", styles: [".filter-letter-and-terms{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:12px;width:100vw;margin-inline:-5vw;padding-inline:5vw;padding-block:12px;overflow-x:scroll}@media only screen and (min-width: 992px){.filter-letter-and-terms{flex-wrap:wrap;width:100%;padding:12px 0;margin:0;overflow-x:auto}}.filter-letter-and-terms .filter-option{flex:0 0 28px;display:flex;justify-content:center;align-items:center;padding:6px;color:var(--neutral-dark);font-family:var(--font-family);font-size:12px;border-radius:4px;background-color:var(--neutral-pale);border:1px solid var(--neutral-light);transition:background-color .07s linear,box-shadow .07s linear,border-color .07s linear}.filter-letter-and-terms .filter-option:hover{background-color:var(--color-one-base)}.filter-letter-and-terms .filter-option:focus{outline:2px solid var(--color-one-light)}.filter-letter-and-terms .filter-option.selected{color:var(--neutral-purewhite);background-color:var(--color-one-base)}.filter-letter-and-terms .filter-option.selected:hover{background-color:var(--color-one-dark)}\n"] }); }
|
|
66
69
|
}
|
|
67
70
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterLetterAndTermsComponent, decorators: [{
|
|
68
71
|
type: Component,
|
|
69
|
-
args: [{ selector: 'rdsite-filter-letter-and-terms', standalone: true, imports: [], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"filter-letter-and-terms\">\r\n <a\r\n id=\"todas\"\r\n rdsitelink\r\n class=\"filter-option\"\r\n [class.selected]=\"selectedOption === ''\"\r\n [href]=\"baseUrlAll ? baseUrlAll : baseUrl ? baseUrl : '#'\"\r\n (click)=\"selectOption('', $event)\"\r\n >\r\n TODAS\r\n </a>\r\n\r\n @for (option of options; track option) {\r\n <a\r\n [id]=\"option\"\r\n rdsitelink\r\n class=\"filter-option\"\r\n [class.selected]=\"selectedOption === option\"\r\n [href]=\"baseUrl ? baseUrl + option.toLowerCase() : '#'\"\r\n (click)=\"selectOption(option, $event)\"\r\n >\r\n {{ option }}\r\n </a>\r\n }\r\n</div>\r\n", styles: [".filter-letter-and-terms{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:12px;width:100vw;margin-inline:-5vw;padding-inline:5vw;padding-block:12px;overflow-x:scroll}@media only screen and (min-width: 992px){.filter-letter-and-terms{flex-wrap:wrap;width:100%;padding:12px 0;margin:0;overflow-x:auto}}.filter-letter-and-terms .filter-option{flex:0 0 28px;display:flex;justify-content:center;align-items:center;padding:6px;color:var(--neutral-
|
|
72
|
+
args: [{ selector: 'rdsite-filter-letter-and-terms', standalone: true, imports: [], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"filter-letter-and-terms\">\r\n <a\r\n id=\"todas\"\r\n rdsitelink\r\n class=\"filter-option\"\r\n [class.selected]=\"selectedOption === ''\"\r\n [href]=\"baseUrlAll ? baseUrlAll : baseUrl ? baseUrl : '#'\"\r\n (click)=\"selectOption('', $event)\"\r\n >\r\n TODAS\r\n </a>\r\n\r\n @for (option of options; track option) {\r\n <a\r\n [id]=\"option\"\r\n rdsitelink\r\n class=\"filter-option\"\r\n [class.selected]=\"selectedOption === option\"\r\n [href]=\"baseUrl ? baseUrl + option.toLowerCase() : '#'\"\r\n (click)=\"selectOption(option, $event)\"\r\n >\r\n {{ option }}\r\n </a>\r\n }\r\n</div>\r\n", styles: [".filter-letter-and-terms{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:12px;width:100vw;margin-inline:-5vw;padding-inline:5vw;padding-block:12px;overflow-x:scroll}@media only screen and (min-width: 992px){.filter-letter-and-terms{flex-wrap:wrap;width:100%;padding:12px 0;margin:0;overflow-x:auto}}.filter-letter-and-terms .filter-option{flex:0 0 28px;display:flex;justify-content:center;align-items:center;padding:6px;color:var(--neutral-dark);font-family:var(--font-family);font-size:12px;border-radius:4px;background-color:var(--neutral-pale);border:1px solid var(--neutral-light);transition:background-color .07s linear,box-shadow .07s linear,border-color .07s linear}.filter-letter-and-terms .filter-option:hover{background-color:var(--color-one-base)}.filter-letter-and-terms .filter-option:focus{outline:2px solid var(--color-one-light)}.filter-letter-and-terms .filter-option.selected{color:var(--neutral-purewhite);background-color:var(--color-one-base)}.filter-letter-and-terms .filter-option.selected:hover{background-color:var(--color-one-dark)}\n"] }]
|
|
70
73
|
}], ctorParameters: () => [{ type: i1.CuraService }, { type: Document, decorators: [{
|
|
71
74
|
type: Inject,
|
|
72
75
|
args: [DOCUMENT]
|
|
@@ -89,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
89
92
|
type: HostBinding,
|
|
90
93
|
args: ['style']
|
|
91
94
|
}] } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWxldHRlci1hbmQtdGVybXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2l0ZS1mcm9udC1lbmQtbGliL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXItbGV0dGVyLWFuZC10ZXJtcy9maWx0ZXItbGV0dGVyLWFuZC10ZXJtcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaXRlLWZyb250LWVuZC1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci1sZXR0ZXItYW5kLXRlcm1zL2ZpbHRlci1sZXR0ZXItYW5kLXRlcm1zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhKLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBVTlELE1BQU0sT0FBTyw2QkFBNkI7SUFReEMsSUFDSSxjQUFjLENBQUMsS0FBYTtRQUM5QixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssS0FBSztZQUFFLE9BQU87UUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUlELElBQTBCLEtBQUs7UUFDN0IsT0FBTztZQUNMLGVBQWUsRUFBRSxJQUFJLENB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OzswQkE0QzlCLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsTUFBTTsyQkFBQyxXQUFXO3lDQXhDWixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFLRixjQUFjO3NCQURqQixLQUFLO2dCQWFJLGNBQWM7c0JBQXZCLE1BQU07Z0JBRW1CLEtBQUs7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDdXJhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmRzaXRlLWZpbHRlci1sZXR0ZXItYW5kLXRlcm1zJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWxldHRlci1hbmQtdGVybXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9maWx0ZXItbGV0dGVyLWFuZC10ZXJtcy5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJMZXR0ZXJBbmRUZXJtc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IHN0cmluZ1tdID0gW107XHJcbiAgQElucHV0KCkgYmFzZVVybDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgYmFzZVVybEFsbDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgZW5hYmxlU2Nyb2xsID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBpc0ZpcnN0U2Nyb2xsID0gdHJ1ZTtcclxuICBwcml2YXRlIF9zZWxlY3RlZE9wdGlvbjogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlbGVjdGVkT3B0aW9uKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLl9zZWxlY3RlZE9wdGlvbiA9PT0gdmFsdWUpIHJldHVybjtcclxuICAgIHRoaXMuX3NlbGVjdGVkT3B0aW9uID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5lbmFibGVTY3JvbGwgJiYgIXRoaXMuaXNGaXJzdFNjcm9sbCkge1xyXG4gICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWRPcHRpb24odmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNlbGVjdGVkT3B0aW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRPcHRpb247XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb3B0aW9uU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnc3R5bGUnKSBnZXQgc3R5bGUoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnLS1mb250LWZhbWlseSc6IHRoaXMuY3VyYVNlcnZpY2UuZ2V0Rm9udEZhbWlseSgnJyksXHJcbiAgICAgICctLW5ldXRyYWwtcHVyZXdoaXRlJzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1wdXJld2hpdGUnKSxcclxuICAgICAgJy0tbmV1dHJhbC1wYWxlJzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1wYWxlJyksXHJcbiAgICAgICctLW5ldXRyYWwtbGlnaHQnOiB0aGlzLmN1cmFTZXJ2aWNlLmdldENvbG9yKCduZXV0cmFsLWxpZ2h0JyksXHJcbiAgICAgICctLW5ldXRyYWwtZGFyayc6IHRoaXMuY3VyYVNlcnZpY2UuZ2V0Q29sb3IoJ25ldXRyYWwtZGFyaycpLFxyXG4gICAgICAnLS1uZXV0cmFsLWJsYWNrJzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1ibGFjaycpLFxyXG4gICAgICAnLS1jb2xvci1vbmUtbGlnaHQnOiB0aGlzLmN1cmFTZXJ2aWNlLmdldENvbG9yKCdwcmltYXJ5LWxpZ2h0JyksXHJcbiAgICAgICctLWNvbG9yLW9uZS1iYXNlJzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcigncHJpbWFyeS1iYXNlJyksXHJcbiAgICAgICctLWNvbG9yLW9uZS1kYXJrJzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcigncHJpbWFyeS1kYXJrJyksXHJcbiAgICAgICctLWNvbG9yLW9uZS1kYXJrZXInOiB0aGlzLmN1cmFTZXJ2aWNlLmdldENvbG9yKCdwcmltYXJ5LWRhcmtlcicpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdXJhU2VydmljZTogQ3VyYVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZDogb2JqZWN0LFxyXG4gICkge31cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb24pIHtcclxuICAgICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkT3B0aW9uKHRoaXMuc2VsZWN0ZWRPcHRpb24pO1xyXG4gICAgICB0aGlzLmlzRmlyc3RTY3JvbGwgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdE9wdGlvbihvcHRpb246IHN0cmluZywgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9wdGlvbjtcclxuICAgIHRoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdChvcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9TZWxlY3RlZE9wdGlvbih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICBjb25zdCBlbGVtZW50SWQgPSB2YWx1ZSB8fCAndG9kYXMnO1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSBlbGVtZW50SWQgPT09ICd0b2RhcycgPyB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2RhcycpIDogdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh2YWx1ZSk7XHJcbiAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnQpIHtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxyXG4gICAgICAgICAgaW5saW5lOiAnY2VudGVyJyxcclxuICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZpbHRlci1sZXR0ZXItYW5kLXRlcm1zXCI+XHJcbiAgPGFcclxuICAgIGlkPVwidG9kYXNcIlxyXG4gICAgcmRzaXRlbGlua1xyXG4gICAgY2xhc3M9XCJmaWx0ZXItb3B0aW9uXCJcclxuICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWxlY3RlZE9wdGlvbiA9PT0gJydcIlxyXG4gICAgW2hyZWZdPVwiYmFzZVVybEFsbCA/IGJhc2VVcmxBbGwgOiBiYXNlVXJsID8gYmFzZVVybCA6ICcjJ1wiXHJcbiAgICAoY2xpY2spPVwic2VsZWN0T3B0aW9uKCcnLCAkZXZlbnQpXCJcclxuICA+XHJcbiAgICBUT0RBU1xyXG4gIDwvYT5cclxuXHJcbiAgQGZvciAob3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrIG9wdGlvbikge1xyXG4gICAgPGFcclxuICAgICAgW2lkXT1cIm9wdGlvblwiXHJcbiAgICAgIHJkc2l0ZWxpbmtcclxuICAgICAgY2xhc3M9XCJmaWx0ZXItb3B0aW9uXCJcclxuICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNlbGVjdGVkT3B0aW9uID09PSBvcHRpb25cIlxyXG4gICAgICBbaHJlZl09XCJiYXNlVXJsID8gYmFzZVVybCArIG9wdGlvbi50b0xvd2VyQ2FzZSgpIDogJyMnXCJcclxuICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdGlvbihvcHRpb24sICRldmVudClcIlxyXG4gICAgPlxyXG4gICAgICB7eyBvcHRpb24gfX1cclxuICAgIDwvYT5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
|
2
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, HostBinding, Inject, Input, Output, PLATFORM_ID } from '@angular/core';
|
|
3
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { MediaQueries } from '../../../helpers/mediaQueries';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../../services";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
export class FilterGenericComponent {
|
|
9
|
+
constructor(curaService, cdr, platformId) {
|
|
10
|
+
this.curaService = curaService;
|
|
11
|
+
this.cdr = cdr;
|
|
12
|
+
this.platformId = platformId;
|
|
13
|
+
this.filterChange = new EventEmitter();
|
|
14
|
+
this.closeModal = new EventEmitter();
|
|
15
|
+
this.openMobileFilter = new EventEmitter();
|
|
16
|
+
this.withContainerStyle = true;
|
|
17
|
+
this.showClearButton = true;
|
|
18
|
+
this.showApplyButton = true;
|
|
19
|
+
this.showCloseButton = false;
|
|
20
|
+
this.disableButtonsWithoutSelection = false;
|
|
21
|
+
this.showBadge = true;
|
|
22
|
+
this.showToggleIcon = true;
|
|
23
|
+
this.isFilterOpen = true;
|
|
24
|
+
this.mobileBehavior = false;
|
|
25
|
+
this.forceCollapsed = false;
|
|
26
|
+
this.emitOnReset = false;
|
|
27
|
+
this.textTitle = 'Filtrar por';
|
|
28
|
+
this.sections = [];
|
|
29
|
+
this.selectedFiltersCount = 0;
|
|
30
|
+
this.windowWidth = 0;
|
|
31
|
+
this.styleBinding = {
|
|
32
|
+
'--neutral-darker': this.curaService.getColor('neutral-darker'),
|
|
33
|
+
'--neutral-light': this.curaService.getColor('neutral-light'),
|
|
34
|
+
'--neutral-lighter': this.curaService.getColor('neutral-lighter'),
|
|
35
|
+
'--neutral-purewhite': this.curaService.getColor('neutral-purewhite'),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
ngOnInit() {
|
|
39
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
40
|
+
this.windowWidth = window.innerWidth;
|
|
41
|
+
}
|
|
42
|
+
if (this.forceCollapsed && this.isMobile()) {
|
|
43
|
+
this.isFilterOpen = false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
handleInputChange(event, control) {
|
|
47
|
+
control.setValue(event.detail);
|
|
48
|
+
this.updateSelectedFiltersCount();
|
|
49
|
+
}
|
|
50
|
+
handleSelectChange(event, control) {
|
|
51
|
+
if (event?.detail !== undefined) {
|
|
52
|
+
control.setValue(event.detail);
|
|
53
|
+
this.updateSelectedFiltersCount();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
handleCheckboxChange(event, options) {
|
|
57
|
+
const changedOption = options.find((opt) => opt.value === event.detail.value);
|
|
58
|
+
if (changedOption)
|
|
59
|
+
changedOption.checked = event.detail.checked;
|
|
60
|
+
this.updateCheckboxGroup(options);
|
|
61
|
+
this.updateSelectedFiltersCount();
|
|
62
|
+
}
|
|
63
|
+
handleRadioChange(event, control) {
|
|
64
|
+
const selectedValue = event.detail.value;
|
|
65
|
+
control.setValue(control.value?.value === selectedValue ? null : { value: selectedValue });
|
|
66
|
+
}
|
|
67
|
+
filter() {
|
|
68
|
+
this.emitFilterChange('filter');
|
|
69
|
+
if (this.mobileBehavior || this.showCloseButton)
|
|
70
|
+
this.close();
|
|
71
|
+
}
|
|
72
|
+
reset() {
|
|
73
|
+
this.resetAllControls();
|
|
74
|
+
this.updateSelectedFiltersCount();
|
|
75
|
+
if (this.emitOnReset) {
|
|
76
|
+
this.emitFilterChange('reset');
|
|
77
|
+
this.close();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
close() {
|
|
81
|
+
this.closeModal.emit(true);
|
|
82
|
+
}
|
|
83
|
+
toggleFilter() {
|
|
84
|
+
if (this.mobileBehavior && this.isMobile()) {
|
|
85
|
+
this.openMobileFilter.emit();
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.isFilterOpen = !this.isFilterOpen;
|
|
89
|
+
}
|
|
90
|
+
this.cdr.detectChanges();
|
|
91
|
+
}
|
|
92
|
+
hasSelection() {
|
|
93
|
+
this.updateSelectedFiltersCount();
|
|
94
|
+
return this.selectedFiltersCount > 0;
|
|
95
|
+
}
|
|
96
|
+
isMobile() {
|
|
97
|
+
return this.windowWidth <= MediaQueries.smallBreakpoint;
|
|
98
|
+
}
|
|
99
|
+
getRadioGroupValue(control) {
|
|
100
|
+
const value = control?.value;
|
|
101
|
+
return value && typeof value === 'object' && 'value' in value ? value.value : null;
|
|
102
|
+
}
|
|
103
|
+
emitFilterChange(action) {
|
|
104
|
+
const filterData = this.buildFilterData();
|
|
105
|
+
const isEmpty = this.isFilterDataEmpty(filterData);
|
|
106
|
+
this.filterChange.emit({
|
|
107
|
+
data: this.emitOnReset || !isEmpty ? filterData : null,
|
|
108
|
+
action: action,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
updateSelectedFiltersCount() {
|
|
112
|
+
this.selectedFiltersCount = this.sections.reduce((count, section) => {
|
|
113
|
+
if (!section.config?.control)
|
|
114
|
+
return count;
|
|
115
|
+
const value = section.config.control.value;
|
|
116
|
+
switch (section.type) {
|
|
117
|
+
case 'checkbox-group':
|
|
118
|
+
return count + (Array.isArray(value) ? value.filter((item) => item?.checked).length : 0);
|
|
119
|
+
case 'radio-group':
|
|
120
|
+
return count + (value?.value ? 1 : 0);
|
|
121
|
+
default:
|
|
122
|
+
return count + (value ? 1 : 0);
|
|
123
|
+
}
|
|
124
|
+
}, 0);
|
|
125
|
+
}
|
|
126
|
+
resetAllControls() {
|
|
127
|
+
this.sections.forEach((section) => {
|
|
128
|
+
if (!section.config?.control)
|
|
129
|
+
return;
|
|
130
|
+
if (section.type === 'checkbox-group') {
|
|
131
|
+
const resetOptions = section.config.options.map((option) => ({ ...option, checked: false }));
|
|
132
|
+
section.config.options = resetOptions;
|
|
133
|
+
section.config.control.setValue(resetOptions, { emitEvent: false });
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
section.config.control.reset('', { emitEvent: false });
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
updateCheckboxGroup(options) {
|
|
141
|
+
this.sections
|
|
142
|
+
.filter((section) => section.type === 'checkbox-group')
|
|
143
|
+
.forEach((section) => {
|
|
144
|
+
section.config.options = [...options];
|
|
145
|
+
section.config.control.setValue([...options]);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
buildFilterData() {
|
|
149
|
+
const filterData = {
|
|
150
|
+
unidade: '',
|
|
151
|
+
estado: '',
|
|
152
|
+
cobertura: [],
|
|
153
|
+
};
|
|
154
|
+
this.sections.forEach((section) => {
|
|
155
|
+
if (!section.config?.control)
|
|
156
|
+
return;
|
|
157
|
+
const value = section.config.control.value;
|
|
158
|
+
switch (section.type) {
|
|
159
|
+
case 'input':
|
|
160
|
+
filterData.unidade = value || '';
|
|
161
|
+
break;
|
|
162
|
+
case 'select':
|
|
163
|
+
filterData.estado = value || '';
|
|
164
|
+
break;
|
|
165
|
+
case 'checkbox-group':
|
|
166
|
+
filterData.cobertura = Array.isArray(value) ? value.filter((item) => item.checked) : [];
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
return filterData;
|
|
171
|
+
}
|
|
172
|
+
isFilterDataEmpty(filterData) {
|
|
173
|
+
return Object.values(filterData).every((val) => val === null || val === '' || (Array.isArray(val) && val.length === 0));
|
|
174
|
+
}
|
|
175
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterGenericComponent, deps: [{ token: i1.CuraService }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
176
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FilterGenericComponent, isStandalone: true, selector: "rdsite-filter-generic", inputs: { withContainerStyle: "withContainerStyle", showClearButton: "showClearButton", showApplyButton: "showApplyButton", showCloseButton: "showCloseButton", disableButtonsWithoutSelection: "disableButtonsWithoutSelection", showBadge: "showBadge", showToggleIcon: "showToggleIcon", isFilterOpen: "isFilterOpen", mobileBehavior: "mobileBehavior", forceCollapsed: "forceCollapsed", emitOnReset: "emitOnReset", textTitle: "textTitle", sections: "sections" }, outputs: { filterChange: "filterChange", closeModal: "closeModal", openMobileFilter: "openMobileFilter" }, host: { properties: { "style": "this.styleBinding" } }, ngImport: i0, template: "<div class=\"filter-generic\" [ngClass]=\"{ 'container-style': withContainerStyle }\" aria-label=\"Filtros\">\r\n <div class=\"filter-header-container\" [ngClass]=\"{ 'no-padding': !isFilterOpen, hidden: !isFilterOpen }\">\r\n <div class=\"filter-title-wrapper\">\r\n <cura-heading size=\"small\" level=\"4\" color=\"neutral-black\" weight=\"bold\" margin-block=\"0\" line-height=\"16px\">\r\n {{ textTitle }}\r\n </cura-heading>\r\n\r\n @if (showBadge) {\r\n <cura-badge-counter\r\n [type]=\"'solid'\"\r\n [color]=\"hasSelection() ? 'primary' : 'neutral'\"\r\n [number]=\"selectedFiltersCount\"\r\n class=\"filter-badge\"\r\n ></cura-badge-counter>\r\n }\r\n </div>\r\n\r\n @if (showToggleIcon) {\r\n <cura-button-transparent size=\"small\" font-color=\"dark\" color=\"primary\" text-align=\"center\" (click)=\"toggleFilter()\" [attr.aria-expanded]=\"isFilterOpen\">\r\n <cura-icon [name]=\"isFilterOpen ? 'up' : 'down'\" size=\"16\" class=\"filter-icon\" color=\"primary-dark\"></cura-icon>\r\n </cura-button-transparent>\r\n }\r\n </div>\r\n\r\n <div class=\"filter-content\" [class.hidden]=\"!isFilterOpen || (forceCollapsed && isMobile())\">\r\n @for (section of sections; track section.type) {\r\n @if (section.visible !== false) {\r\n <div class=\"filter-section\">\r\n @switch (section.type) {\r\n @case ('input') {\r\n <cura-input-text\r\n [placeholder]=\"section.config.placeholder || ''\"\r\n [name]=\"section.config.name || ''\"\r\n [iconName]=\"section.config.iconName || ''\"\r\n [attr.value]=\"section.config.control.value\"\r\n (valueChange)=\"handleInputChange($event, section.config.control)\"\r\n ></cura-input-text>\r\n }\r\n @case ('select') {\r\n <cura-select\r\n [label]=\"section.config.label || ''\"\r\n [placeholder]=\"section.config.placeholder || ''\"\r\n [attr.value]=\"section.config.control.value\"\r\n (selected)=\"handleSelectChange($event, section.config.control)\"\r\n >\r\n @if (section.config.includeDefaultOption) {\r\n <cura-select-option [attr.value]=\"''\">{{ section.config.defaultOptionText || 'Fa\u00E7a a sua Sele\u00E7\u00E3o' }}</cura-select-option>\r\n }\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-select-option [attr.value]=\"option?.value\">{{ option?.label }}</cura-select-option>\r\n }\r\n </cura-select>\r\n }\r\n @case ('checkbox-group') {\r\n <div class=\"filter-header\">\r\n <cura-icon name=\"filter\" size=\"20\" color=\"info-dark\"></cura-icon>\r\n <cura-heading size=\"xsmall\" level=\"5\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\">\r\n {{ section.config.title || 'Filtre por' }}\r\n </cura-heading>\r\n </div>\r\n\r\n @if (section.config.subtitle) {\r\n <div class=\"filter-subtitle\">\r\n <cura-heading size=\"xsmall\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\">\r\n {{ section.config.subtitle }}\r\n </cura-heading>\r\n </div>\r\n }\r\n\r\n @if (section.config.description) {\r\n <div class=\"filter-description\">\r\n <cura-paragraph size=\"xsmall\" color=\"neutral-dark\" margin-block=\"0\">\r\n {{ section.config.description }}\r\n </cura-paragraph>\r\n </div>\r\n }\r\n\r\n <div class=\"filter-checkboxes\">\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-checkbox\r\n color=\"primary\"\r\n size=\"small\"\r\n icon-color=\"light\"\r\n [attr.name]=\"option?.label\"\r\n [attr.label]=\"option?.label\"\r\n [attr.value]=\"option?.value\"\r\n [attr.checked]=\"option?.checked\"\r\n (onchange)=\"handleCheckboxChange($event, section.config.options)\"\r\n ></cura-checkbox>\r\n }\r\n </div>\r\n }\r\n @case ('radio-group') {\r\n <div class=\"filter-radios\">\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-radio\r\n [name]=\"section.config.name || 'radio-group'\"\r\n [label]=\"option.label\"\r\n [value]=\"option.value\"\r\n [checked]=\"getRadioGroupValue(section.config.control) === option.value\"\r\n (onchange)=\"handleRadioChange($event, section.config.control)\"\r\n ></cura-radio>\r\n }\r\n </div>\r\n }\r\n @case ('custom') {\r\n <ng-container *ngTemplateOutlet=\"section.config.template\"></ng-container>\r\n }\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"filter-actions\" [class.hidden]=\"!isFilterOpen || (forceCollapsed && isMobile())\">\r\n <div class=\"main-actions\">\r\n @if (showClearButton) {\r\n <cura-button-transparent\r\n size=\"small\"\r\n font-color=\"dark\"\r\n color=\"primary\"\r\n text-align=\"center\"\r\n [disabled]=\"disableButtonsWithoutSelection && !hasSelection()\"\r\n (click)=\"reset()\"\r\n >\r\n <span>Limpar todos os filtros</span>\r\n </cura-button-transparent>\r\n }\r\n\r\n @if (showApplyButton) {\r\n <cura-button\r\n size=\"medium\"\r\n font-color=\"light\"\r\n color=\"primary\"\r\n text-align=\"center\"\r\n (click)=\"filter()\"\r\n [disabled]=\"disableButtonsWithoutSelection && !hasSelection()\"\r\n class=\"filter-button\"\r\n >\r\n Filtrar\r\n </cura-button>\r\n }\r\n </div>\r\n\r\n @if (showCloseButton) {\r\n <div class=\"divider-strong\"></div>\r\n <div class=\"close-action-wrapper\">\r\n <div class=\"close-action\" (click)=\"close()\">\r\n <cura-icon name=\"close\" color=\"error-dark\" size=\"small\"></cura-icon>\r\n <cura-button-transparent size=\"\" type=\"button\" color=\"error\" target=\"_self\"> Fechar </cura-button-transparent>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":host *{font-family:Gotham,Roboto,sans-serif}.filter-generic{display:flex;flex-direction:column;gap:18px}.filter-generic.container-style{width:100%;padding:20px;border-radius:12px;border:2px solid var(--neutral-lighter);background-color:var(--neutral-purewhite)}.filter-generic cura-loader-circle{display:flex;justify-content:center;align-items:center;width:100%;min-height:100px}.filter-header-container{display:flex;padding-bottom:12px;align-items:center}.filter-header-container.no-padding{padding-bottom:0}.filter-header-container .filter-title-wrapper{display:flex;align-items:center;justify-content:space-between;flex:1 0 0}.filter-header-container .filter-badge{display:flex;height:20px;min-width:20px;justify-content:center;align-items:center;gap:4px}.filter-header-container .filter-icon{display:block}.filter-content,.filter-actions{transition:all .3s ease}.filter-content.hidden,.filter-actions.hidden{display:none;height:0;overflow:hidden;opacity:0;margin:0;padding:0}.filter-section{display:flex;flex-direction:column;gap:24px}.filter-section .filter-header{display:flex;align-items:center;gap:14px}.filter-section .filter-subtitle{font-weight:500}.filter-section .filter-description{display:flex;flex-direction:column;gap:8px}.filter-section .filter-description:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:12px;grid-column:1/-1}.filter-section .filter-checkboxes{display:grid;grid-template-columns:repeat(2,1fr);gap:11px 0px}.filter-section .filter-checkboxes:after{content:\"\";display:block;width:100%;height:1px;margin-top:12px;background-color:var(--neutral-light);grid-column:1/-1}.filter-section .filter-radios{display:flex;flex-direction:column;gap:12px}.filter-section .filter-radios:after{content:\"\";display:block;width:100%;height:1px;background:linear-gradient(90deg,var(--neutral-light) 75%,transparent 15%);background-size:10px 1px;background-repeat:repeat-x;margin-top:6px;grid-column:1/-1}.filter-actions{display:flex;flex-direction:column;gap:0}.filter-actions .main-actions{display:flex;justify-content:space-between;gap:16px;align-items:center}.filter-actions .divider-strong{height:1px;width:100%;margin-top:20px;margin-bottom:16px;background:linear-gradient(90deg,#e2e2e2 70%,transparent 70%);background-size:4px 1px;background-repeat:repeat-x}.filter-actions .close-action-wrapper{display:flex;justify-content:center;width:100%}.filter-actions .close-action{display:inline-flex;align-items:center;gap:8px}.filter-actions .close-action cura-button-transparent{padding:0;margin:0;background:transparent;border:none;color:inherit}.filter-actions cura-button,.filter-actions cura-button-transparent{flex:1}@media screen and (max-width: 1024px){.filter-checkboxes:after{background-color:transparent}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
177
|
+
}
|
|
178
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterGenericComponent, decorators: [{
|
|
179
|
+
type: Component,
|
|
180
|
+
args: [{ selector: 'rdsite-filter-generic', standalone: true, imports: [CommonModule, ReactiveFormsModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"filter-generic\" [ngClass]=\"{ 'container-style': withContainerStyle }\" aria-label=\"Filtros\">\r\n <div class=\"filter-header-container\" [ngClass]=\"{ 'no-padding': !isFilterOpen, hidden: !isFilterOpen }\">\r\n <div class=\"filter-title-wrapper\">\r\n <cura-heading size=\"small\" level=\"4\" color=\"neutral-black\" weight=\"bold\" margin-block=\"0\" line-height=\"16px\">\r\n {{ textTitle }}\r\n </cura-heading>\r\n\r\n @if (showBadge) {\r\n <cura-badge-counter\r\n [type]=\"'solid'\"\r\n [color]=\"hasSelection() ? 'primary' : 'neutral'\"\r\n [number]=\"selectedFiltersCount\"\r\n class=\"filter-badge\"\r\n ></cura-badge-counter>\r\n }\r\n </div>\r\n\r\n @if (showToggleIcon) {\r\n <cura-button-transparent size=\"small\" font-color=\"dark\" color=\"primary\" text-align=\"center\" (click)=\"toggleFilter()\" [attr.aria-expanded]=\"isFilterOpen\">\r\n <cura-icon [name]=\"isFilterOpen ? 'up' : 'down'\" size=\"16\" class=\"filter-icon\" color=\"primary-dark\"></cura-icon>\r\n </cura-button-transparent>\r\n }\r\n </div>\r\n\r\n <div class=\"filter-content\" [class.hidden]=\"!isFilterOpen || (forceCollapsed && isMobile())\">\r\n @for (section of sections; track section.type) {\r\n @if (section.visible !== false) {\r\n <div class=\"filter-section\">\r\n @switch (section.type) {\r\n @case ('input') {\r\n <cura-input-text\r\n [placeholder]=\"section.config.placeholder || ''\"\r\n [name]=\"section.config.name || ''\"\r\n [iconName]=\"section.config.iconName || ''\"\r\n [attr.value]=\"section.config.control.value\"\r\n (valueChange)=\"handleInputChange($event, section.config.control)\"\r\n ></cura-input-text>\r\n }\r\n @case ('select') {\r\n <cura-select\r\n [label]=\"section.config.label || ''\"\r\n [placeholder]=\"section.config.placeholder || ''\"\r\n [attr.value]=\"section.config.control.value\"\r\n (selected)=\"handleSelectChange($event, section.config.control)\"\r\n >\r\n @if (section.config.includeDefaultOption) {\r\n <cura-select-option [attr.value]=\"''\">{{ section.config.defaultOptionText || 'Fa\u00E7a a sua Sele\u00E7\u00E3o' }}</cura-select-option>\r\n }\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-select-option [attr.value]=\"option?.value\">{{ option?.label }}</cura-select-option>\r\n }\r\n </cura-select>\r\n }\r\n @case ('checkbox-group') {\r\n <div class=\"filter-header\">\r\n <cura-icon name=\"filter\" size=\"20\" color=\"info-dark\"></cura-icon>\r\n <cura-heading size=\"xsmall\" level=\"5\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\">\r\n {{ section.config.title || 'Filtre por' }}\r\n </cura-heading>\r\n </div>\r\n\r\n @if (section.config.subtitle) {\r\n <div class=\"filter-subtitle\">\r\n <cura-heading size=\"xsmall\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\">\r\n {{ section.config.subtitle }}\r\n </cura-heading>\r\n </div>\r\n }\r\n\r\n @if (section.config.description) {\r\n <div class=\"filter-description\">\r\n <cura-paragraph size=\"xsmall\" color=\"neutral-dark\" margin-block=\"0\">\r\n {{ section.config.description }}\r\n </cura-paragraph>\r\n </div>\r\n }\r\n\r\n <div class=\"filter-checkboxes\">\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-checkbox\r\n color=\"primary\"\r\n size=\"small\"\r\n icon-color=\"light\"\r\n [attr.name]=\"option?.label\"\r\n [attr.label]=\"option?.label\"\r\n [attr.value]=\"option?.value\"\r\n [attr.checked]=\"option?.checked\"\r\n (onchange)=\"handleCheckboxChange($event, section.config.options)\"\r\n ></cura-checkbox>\r\n }\r\n </div>\r\n }\r\n @case ('radio-group') {\r\n <div class=\"filter-radios\">\r\n @for (option of section.config.options || []; track option?.value) {\r\n <cura-radio\r\n [name]=\"section.config.name || 'radio-group'\"\r\n [label]=\"option.label\"\r\n [value]=\"option.value\"\r\n [checked]=\"getRadioGroupValue(section.config.control) === option.value\"\r\n (onchange)=\"handleRadioChange($event, section.config.control)\"\r\n ></cura-radio>\r\n }\r\n </div>\r\n }\r\n @case ('custom') {\r\n <ng-container *ngTemplateOutlet=\"section.config.template\"></ng-container>\r\n }\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"filter-actions\" [class.hidden]=\"!isFilterOpen || (forceCollapsed && isMobile())\">\r\n <div class=\"main-actions\">\r\n @if (showClearButton) {\r\n <cura-button-transparent\r\n size=\"small\"\r\n font-color=\"dark\"\r\n color=\"primary\"\r\n text-align=\"center\"\r\n [disabled]=\"disableButtonsWithoutSelection && !hasSelection()\"\r\n (click)=\"reset()\"\r\n >\r\n <span>Limpar todos os filtros</span>\r\n </cura-button-transparent>\r\n }\r\n\r\n @if (showApplyButton) {\r\n <cura-button\r\n size=\"medium\"\r\n font-color=\"light\"\r\n color=\"primary\"\r\n text-align=\"center\"\r\n (click)=\"filter()\"\r\n [disabled]=\"disableButtonsWithoutSelection && !hasSelection()\"\r\n class=\"filter-button\"\r\n >\r\n Filtrar\r\n </cura-button>\r\n }\r\n </div>\r\n\r\n @if (showCloseButton) {\r\n <div class=\"divider-strong\"></div>\r\n <div class=\"close-action-wrapper\">\r\n <div class=\"close-action\" (click)=\"close()\">\r\n <cura-icon name=\"close\" color=\"error-dark\" size=\"small\"></cura-icon>\r\n <cura-button-transparent size=\"\" type=\"button\" color=\"error\" target=\"_self\"> Fechar </cura-button-transparent>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":host *{font-family:Gotham,Roboto,sans-serif}.filter-generic{display:flex;flex-direction:column;gap:18px}.filter-generic.container-style{width:100%;padding:20px;border-radius:12px;border:2px solid var(--neutral-lighter);background-color:var(--neutral-purewhite)}.filter-generic cura-loader-circle{display:flex;justify-content:center;align-items:center;width:100%;min-height:100px}.filter-header-container{display:flex;padding-bottom:12px;align-items:center}.filter-header-container.no-padding{padding-bottom:0}.filter-header-container .filter-title-wrapper{display:flex;align-items:center;justify-content:space-between;flex:1 0 0}.filter-header-container .filter-badge{display:flex;height:20px;min-width:20px;justify-content:center;align-items:center;gap:4px}.filter-header-container .filter-icon{display:block}.filter-content,.filter-actions{transition:all .3s ease}.filter-content.hidden,.filter-actions.hidden{display:none;height:0;overflow:hidden;opacity:0;margin:0;padding:0}.filter-section{display:flex;flex-direction:column;gap:24px}.filter-section .filter-header{display:flex;align-items:center;gap:14px}.filter-section .filter-subtitle{font-weight:500}.filter-section .filter-description{display:flex;flex-direction:column;gap:8px}.filter-section .filter-description:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:12px;grid-column:1/-1}.filter-section .filter-checkboxes{display:grid;grid-template-columns:repeat(2,1fr);gap:11px 0px}.filter-section .filter-checkboxes:after{content:\"\";display:block;width:100%;height:1px;margin-top:12px;background-color:var(--neutral-light);grid-column:1/-1}.filter-section .filter-radios{display:flex;flex-direction:column;gap:12px}.filter-section .filter-radios:after{content:\"\";display:block;width:100%;height:1px;background:linear-gradient(90deg,var(--neutral-light) 75%,transparent 15%);background-size:10px 1px;background-repeat:repeat-x;margin-top:6px;grid-column:1/-1}.filter-actions{display:flex;flex-direction:column;gap:0}.filter-actions .main-actions{display:flex;justify-content:space-between;gap:16px;align-items:center}.filter-actions .divider-strong{height:1px;width:100%;margin-top:20px;margin-bottom:16px;background:linear-gradient(90deg,#e2e2e2 70%,transparent 70%);background-size:4px 1px;background-repeat:repeat-x}.filter-actions .close-action-wrapper{display:flex;justify-content:center;width:100%}.filter-actions .close-action{display:inline-flex;align-items:center;gap:8px}.filter-actions .close-action cura-button-transparent{padding:0;margin:0;background:transparent;border:none;color:inherit}.filter-actions cura-button,.filter-actions cura-button-transparent{flex:1}@media screen and (max-width: 1024px){.filter-checkboxes:after{background-color:transparent}}\n"] }]
|
|
181
|
+
}], ctorParameters: () => [{ type: i1.CuraService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
182
|
+
type: Inject,
|
|
183
|
+
args: [PLATFORM_ID]
|
|
184
|
+
}] }], propDecorators: { filterChange: [{
|
|
185
|
+
type: Output
|
|
186
|
+
}], closeModal: [{
|
|
187
|
+
type: Output
|
|
188
|
+
}], openMobileFilter: [{
|
|
189
|
+
type: Output
|
|
190
|
+
}], withContainerStyle: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}], showClearButton: [{
|
|
193
|
+
type: Input
|
|
194
|
+
}], showApplyButton: [{
|
|
195
|
+
type: Input
|
|
196
|
+
}], showCloseButton: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}], disableButtonsWithoutSelection: [{
|
|
199
|
+
type: Input
|
|
200
|
+
}], showBadge: [{
|
|
201
|
+
type: Input
|
|
202
|
+
}], showToggleIcon: [{
|
|
203
|
+
type: Input
|
|
204
|
+
}], isFilterOpen: [{
|
|
205
|
+
type: Input
|
|
206
|
+
}], mobileBehavior: [{
|
|
207
|
+
type: Input
|
|
208
|
+
}], forceCollapsed: [{
|
|
209
|
+
type: Input
|
|
210
|
+
}], emitOnReset: [{
|
|
211
|
+
type: Input
|
|
212
|
+
}], textTitle: [{
|
|
213
|
+
type: Input
|
|
214
|
+
}], sections: [{
|
|
215
|
+
type: Input
|
|
216
|
+
}], styleBinding: [{
|
|
217
|
+
type: HostBinding,
|
|
218
|
+
args: ['style']
|
|
219
|
+
}] } });
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWdlbmVyaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2l0ZS1mcm9udC1lbmQtbGliL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlci1nZW5lcmljL2ZpbHRlci1nZW5lcmljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpdGUtZnJvbnQtZW5kLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVycy9maWx0ZXItZ2VuZXJpYy9maWx0ZXItZ2VuZXJpYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFxQixTQUFTLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUosT0FBTyxFQUFlLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBWTdELE1BQU0sT0FBTyxzQkFBc0I7SUE2QmpDLFlBQ21CLFdBQXdCLEVBQ3hCLEdBQXNCLEVBQ0QsVUFBa0I7UUFGdkMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDRCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBL0JoRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFDL0MsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDekMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU3Qyx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDMUIsb0JBQWUs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fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEN1cmFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBNZWRpYVF1ZXJpZXMgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL21lZGlhUXVlcmllcyc7XHJcbmltcG9ydCB7IEZpbHRlckFjdGlvbiwgRmlsdGVyQ29udHJvbFZhbHVlLCBGaWx0ZXJTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpbHRlcnMvZmlsdGVyLXNlY3Rpb24udHlwZSc7XHJcbmltcG9ydCB7IEZpbHRlckV2ZW50LCBGaWx0ZXJQbGFub3NDb252ZW5pb3NDaGFuZ2UgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZmlsdGVycy9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Jkc2l0ZS1maWx0ZXItZ2VuZXJpYycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1nZW5lcmljLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItZ2VuZXJpYy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyR2VuZXJpY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQE91dHB1dCgpIGZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlTW9kYWwgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIG9wZW5Nb2JpbGVGaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHdpdGhDb250YWluZXJTdHlsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0NsZWFyQnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93QXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dDbG9zZUJ1dHRvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVCdXR0b25zV2l0aG91dFNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dCYWRnZSA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1RvZ2dsZUljb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGlzRmlsdGVyT3BlbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbW9iaWxlQmVoYXZpb3IgPSBmYWxzZTtcclxuICBASW5wdXQoKSBmb3JjZUNvbGxhcHNlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVtaXRPblJlc2V0ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdGV4dFRpdGxlID0gJ0ZpbHRyYXIgcG9yJztcclxuICBASW5wdXQoKSBzZWN0aW9uczogRmlsdGVyU2VjdGlvbltdID0gW107XHJcblxyXG4gIHNlbGVjdGVkRmlsdGVyc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIHdpbmRvd1dpZHRoOiBudW1iZXIgPSAwO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlJykgc3R5bGVCaW5kaW5nID0ge1xyXG4gICAgJy0tbmV1dHJhbC1kYXJrZXInOiB0aGlzLmN1cmFTZXJ2aWNlLmdldENvbG9yKCduZXV0cmFsLWRhcmtlcicpLFxyXG4gICAgJy0tbmV1dHJhbC1saWdodCc6IHRoaXMuY3VyYVNlcnZpY2UuZ2V0Q29sb3IoJ25ldXRyYWwtbGlnaHQnKSxcclxuICAgICctLW5ldXRyYWwtbGlnaHRlcic6IHRoaXMuY3VyYVNlcnZpY2UuZ2V0Q29sb3IoJ25ldXRyYWwtbGlnaHRlcicpLFxyXG4gICAgJy0tbmV1dHJhbC1wdXJld2hpdGUnOiB0aGlzLmN1cmFTZXJ2aWNlLmdldENvbG9yKCduZXV0cmFsLXB1cmV3aGl0ZScpLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdXJhU2VydmljZTogQ3VyYVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IG9iamVjdCxcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgdGhpcy53aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZvcmNlQ29sbGFwc2VkICYmIHRoaXMuaXNNb2JpbGUoKSkge1xyXG4gICAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlSW5wdXRDaGFuZ2UoZXZlbnQ6IGFueSwgY29udHJvbDogRm9ybUNvbnRyb2wpOiB2b2lkIHtcclxuICAgIGNvbnRyb2wuc2V0VmFsdWUoZXZlbnQuZGV0YWlsKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRGaWx0ZXJzQ291bnQoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVNlbGVjdENoYW5nZShldmVudDogYW55LCBjb250cm9sOiBGb3JtQ29udHJvbCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50Py5kZXRhaWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb250cm9sLnNldFZhbHVlKGV2ZW50LmRldGFpbCk7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRGaWx0ZXJzQ291bnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUNoZWNrYm94Q2hhbmdlKGV2ZW50OiBhbnksIG9wdGlvbnM6IGFueVtdKTogdm9pZCB7XHJcbiAgICBjb25zdCBjaGFuZ2VkT3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHQpID0+IG9wdC52YWx1ZSA9PT0gZXZlbnQuZGV0YWlsLnZhbHVlKTtcclxuICAgIGlmIChjaGFuZ2VkT3B0aW9uKSBjaGFuZ2VkT3B0aW9uLmNoZWNrZWQgPSBldmVudC5kZXRhaWwuY2hlY2tlZDtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNoZWNrYm94R3JvdXAob3B0aW9ucyk7XHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkRmlsdGVyc0NvdW50KCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSYWRpb0NoYW5nZShldmVudDogYW55LCBjb250cm9sOiBGb3JtQ29udHJvbCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IGV2ZW50LmRldGFpbC52YWx1ZTtcclxuICAgIGNvbnRyb2wuc2V0VmFsdWUoY29udHJvbC52YWx1ZT8udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUgPyBudWxsIDogeyB2YWx1ZTogc2VsZWN0ZWRWYWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGZpbHRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZW1pdEZpbHRlckNoYW5nZSgnZmlsdGVyJyk7XHJcbiAgICBpZiAodGhpcy5tb2JpbGVCZWhhdmlvciB8fCB0aGlzLnNob3dDbG9zZUJ1dHRvbikgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc2V0QWxsQ29udHJvbHMoKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRGaWx0ZXJzQ291bnQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5lbWl0T25SZXNldCkge1xyXG4gICAgICB0aGlzLmVtaXRGaWx0ZXJDaGFuZ2UoJ3Jlc2V0Jyk7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGaWx0ZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tb2JpbGVCZWhhdmlvciAmJiB0aGlzLmlzTW9iaWxlKCkpIHtcclxuICAgICAgdGhpcy5vcGVuTW9iaWxlRmlsdGVyLmVtaXQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gIXRoaXMuaXNGaWx0ZXJPcGVuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgaGFzU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZEZpbHRlcnNDb3VudCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzQ291bnQgPiAwO1xyXG4gIH1cclxuXHJcbiAgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy53aW5kb3dXaWR0aCA8PSBNZWRpYVF1ZXJpZXMuc21hbGxCcmVha3BvaW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0UmFkaW9Hcm91cFZhbHVlKGNvbnRyb2w/OiBGb3JtQ29udHJvbDxGaWx0ZXJDb250cm9sVmFsdWU+KTogYW55IHtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbD8udmFsdWU7XHJcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAndmFsdWUnIGluIHZhbHVlID8gdmFsdWUudmFsdWUgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RmlsdGVyQ2hhbmdlKGFjdGlvbjogRmlsdGVyQWN0aW9uKTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWx0ZXJEYXRhID0gdGhpcy5idWlsZEZpbHRlckRhdGEoKTtcclxuICAgIGNvbnN0IGlzRW1wdHkgPSB0aGlzLmlzRmlsdGVyRGF0YUVtcHR5KGZpbHRlckRhdGEpO1xyXG5cclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoe1xyXG4gICAgICBkYXRhOiB0aGlzLmVtaXRPblJlc2V0IHx8ICFpc0VtcHR5ID8gZmlsdGVyRGF0YSA6IG51bGwsXHJcbiAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGVkRmlsdGVyc0NvdW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlcnNDb3VudCA9IHRoaXMuc2VjdGlvbnMucmVkdWNlKChjb3VudCwgc2VjdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIXNlY3Rpb24uY29uZmlnPy5jb250cm9sKSByZXR1cm4gY291bnQ7XHJcblxyXG4gICAgICBjb25zdCB2YWx1ZSA9IHNlY3Rpb24uY29uZmlnLmNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgICBzd2l0Y2ggKHNlY3Rpb24udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2NoZWNrYm94LWdyb3VwJzpcclxuICAgICAgICAgIHJldHVybiBjb3VudCArIChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmZpbHRlcigoaXRlbSkgPT4gaXRlbT8uY2hlY2tlZCkubGVuZ3RoIDogMCk7XHJcbiAgICAgICAgY2FzZSAncmFkaW8tZ3JvdXAnOlxyXG4gICAgICAgICAgcmV0dXJuIGNvdW50ICsgKHZhbHVlPy52YWx1ZSA/IDEgOiAwKTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIGNvdW50ICsgKHZhbHVlID8gMSA6IDApO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRBbGxDb250cm9scygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIXNlY3Rpb24uY29uZmlnPy5jb250cm9sKSByZXR1cm47XHJcblxyXG4gICAgICBpZiAoc2VjdGlvbi50eXBlID09PSAnY2hlY2tib3gtZ3JvdXAnKSB7XHJcbiAgICAgICAgY29uc3QgcmVzZXRPcHRpb25zID0gc2VjdGlvbi5jb25maWcub3B0aW9ucy5tYXAoKG9wdGlvbjogYW55KSA9PiAoeyAuLi5vcHRpb24sIGNoZWNrZWQ6IGZhbHNlIH0pKTtcclxuICAgICAgICBzZWN0aW9uLmNvbmZpZy5vcHRpb25zID0gcmVzZXRPcHRpb25zO1xyXG4gICAgICAgIHNlY3Rpb24uY29uZmlnLmNvbnRyb2wuc2V0VmFsdWUocmVzZXRPcHRpb25zLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2VjdGlvbi5jb25maWcuY29udHJvbC5yZXNldCgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ2hlY2tib3hHcm91cChvcHRpb25zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWN0aW9uc1xyXG4gICAgICAuZmlsdGVyKChzZWN0aW9uKSA9PiBzZWN0aW9uLnR5cGUgPT09ICdjaGVja2JveC1ncm91cCcpXHJcbiAgICAgIC5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgc2VjdGlvbi5jb25maWcub3B0aW9ucyA9IFsuLi5vcHRpb25zXTtcclxuICAgICAgICBzZWN0aW9uLmNvbmZpZy5jb250cm9sLnNldFZhbHVlKFsuLi5vcHRpb25zXSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEZpbHRlckRhdGEoKTogRmlsdGVyUGxhbm9zQ29udmVuaW9zQ2hhbmdlIHwgYW55IHtcclxuICAgIGNvbnN0IGZpbHRlckRhdGE6IEZpbHRlclBsYW5vc0NvbnZlbmlvc0NoYW5nZSA9IHtcclxuICAgICAgdW5pZGFkZTogJycsXHJcbiAgICAgIGVzdGFkbzogJycsXHJcbiAgICAgIGNvYmVydHVyYTogW10sXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIXNlY3Rpb24uY29uZmlnPy5jb250cm9sKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCB2YWx1ZSA9IHNlY3Rpb24uY29uZmlnLmNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgICBzd2l0Y2ggKHNlY3Rpb24udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2lucHV0JzpcclxuICAgICAgICAgIGZpbHRlckRhdGEudW5pZGFkZSA9IHZhbHVlIHx8ICcnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc2VsZWN0JzpcclxuICAgICAgICAgIGZpbHRlckRhdGEuZXN0YWRvID0gdmFsdWUgfHwgJyc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdjaGVja2JveC1ncm91cCc6XHJcbiAgICAgICAgICBmaWx0ZXJEYXRhLmNvYmVydHVyYSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmNoZWNrZWQpIDogW107XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGZpbHRlckRhdGE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRmlsdGVyRGF0YUVtcHR5KGZpbHRlckRhdGE6IEZpbHRlclBsYW5vc0NvbnZlbmlvc0NoYW5nZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZmlsdGVyRGF0YSkuZXZlcnkoKHZhbCkgPT4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gJycgfHwgKEFycmF5LmlzQXJyYXkodmFsKSAmJiB2YWwubGVuZ3RoID09PSAwKSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmaWx0ZXItZ2VuZXJpY1wiIFtuZ0NsYXNzXT1cInsgJ2NvbnRhaW5lci1zdHlsZSc6IHdpdGhDb250YWluZXJTdHlsZSB9XCIgYXJpYS1sYWJlbD1cIkZpbHRyb3NcIj5cclxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWhlYWRlci1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7ICduby1wYWRkaW5nJzogIWlzRmlsdGVyT3BlbiwgaGlkZGVuOiAhaXNGaWx0ZXJPcGVuIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdGl0bGUtd3JhcHBlclwiPlxyXG4gICAgICA8Y3VyYS1oZWFkaW5nIHNpemU9XCJzbWFsbFwiIGxldmVsPVwiNFwiIGNvbG9yPVwibmV1dHJhbC1ibGFja1wiIHdlaWdodD1cImJvbGRcIiBtYXJnaW4tYmxvY2s9XCIwXCIgbGluZS1oZWlnaHQ9XCIxNnB4XCI+XHJcbiAgICAgICAge3sgdGV4dFRpdGxlIH19XHJcbiAgICAgIDwvY3VyYS1oZWFkaW5nPlxyXG5cclxuICAgICAgQGlmIChzaG93QmFkZ2UpIHtcclxuICAgICAgICA8Y3VyYS1iYWRnZS1jb3VudGVyXHJcbiAgICAgICAgICBbdHlwZV09XCInc29saWQnXCJcclxuICAgICAgICAgIFtjb2xvcl09XCJoYXNTZWxlY3Rpb24oKSA/ICdwcmltYXJ5JyA6ICduZXV0cmFsJ1wiXHJcbiAgICAgICAgICBbbnVtYmVyXT1cInNlbGVjdGVkRmlsdGVyc0NvdW50XCJcclxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWJhZGdlXCJcclxuICAgICAgICA+PC9jdXJhLWJhZGdlLWNvdW50ZXI+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiAoc2hvd1RvZ2dsZUljb24pIHtcclxuICAgICAgPGN1cmEtYnV0dG9uLXRyYW5zcGFyZW50IHNpemU9XCJzbWFsbFwiIGZvbnQtY29sb3I9XCJkYXJrXCIgY29sb3I9XCJwcmltYXJ5XCIgdGV4dC1hbGlnbj1cImNlbnRlclwiIChjbGljayk9XCJ0b2dnbGVGaWx0ZXIoKVwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNGaWx0ZXJPcGVuXCI+XHJcbiAgICAgICAgPGN1cmEtaWNvbiBbbmFtZV09XCJpc0ZpbHRlck9wZW4gPyAndXAnIDogJ2Rvd24nXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJmaWx0ZXItaWNvblwiIGNvbG9yPVwicHJpbWFyeS1kYXJrXCI+PC9jdXJhLWljb24+XHJcbiAgICAgIDwvY3VyYS1idXR0b24tdHJhbnNwYXJlbnQ+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXItY29udGVudFwiIFtjbGFzcy5oaWRkZW5dPVwiIWlzRmlsdGVyT3BlbiB8fCAoZm9yY2VDb2xsYXBzZWQgJiYgaXNNb2JpbGUoKSlcIj5cclxuICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnM7IHRyYWNrIHNlY3Rpb24udHlwZSkge1xyXG4gICAgICBAaWYgKHNlY3Rpb24udmlzaWJsZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXNlY3Rpb25cIj5cclxuICAgICAgICAgIEBzd2l0Y2ggKHNlY3Rpb24udHlwZSkge1xyXG4gICAgICAgICAgICBAY2FzZSAoJ2lucHV0Jykge1xyXG4gICAgICAgICAgICAgIDxjdXJhLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWN0aW9uLmNvbmZpZy5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzZWN0aW9uLmNvbmZpZy5uYW1lIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJzZWN0aW9uLmNvbmZpZy5pY29uTmFtZSB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci52YWx1ZV09XCJzZWN0aW9uLmNvbmZpZy5jb250cm9sLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVJbnB1dENoYW5nZSgkZXZlbnQsIHNlY3Rpb24uY29uZmlnLmNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICA+PC9jdXJhLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGNhc2UgKCdzZWxlY3QnKSB7XHJcbiAgICAgICAgICAgICAgPGN1cmEtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2VjdGlvbi5jb25maWcubGFiZWwgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlY3Rpb24uY29uZmlnLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLnZhbHVlXT1cInNlY3Rpb24uY29uZmlnLmNvbnRyb2wudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cImhhbmRsZVNlbGVjdENoYW5nZSgkZXZlbnQsIHNlY3Rpb24uY29uZmlnLmNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNlY3Rpb24uY29uZmlnLmluY2x1ZGVEZWZhdWx0T3B0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxjdXJhLXNlbGVjdC1vcHRpb24gW2F0dHIudmFsdWVdPVwiJydcIj57eyBzZWN0aW9uLmNvbmZpZy5kZWZhdWx0T3B0aW9uVGV4dCB8fCAnRmHDp2EgYSBzdWEgU2VsZcOnw6NvJyB9fTwvY3VyYS1zZWxlY3Qtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIHNlY3Rpb24uY29uZmlnLm9wdGlvbnMgfHwgW107IHRyYWNrIG9wdGlvbj8udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgPGN1cmEtc2VsZWN0LW9wdGlvbiBbYXR0ci52YWx1ZV09XCJvcHRpb24/LnZhbHVlXCI+e3sgb3B0aW9uPy5sYWJlbCB9fTwvY3VyYS1zZWxlY3Qtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvY3VyYS1zZWxlY3Q+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGNhc2UgKCdjaGVja2JveC1ncm91cCcpIHtcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGN1cmEtaWNvbiBuYW1lPVwiZmlsdGVyXCIgc2l6ZT1cIjIwXCIgY29sb3I9XCJpbmZvLWRhcmtcIj48L2N1cmEtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxjdXJhLWhlYWRpbmcgc2l6ZT1cInhzbWFsbFwiIGxldmVsPVwiNVwiIHdlaWdodD1cImJvbGRcIiBjb2xvcj1cIm5ldXRyYWwtYmxhY2tcIiBtYXJnaW4tYmxvY2s9XCIwXCIgbGluZS1oZWlnaHQ9XCIxNnB4XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHNlY3Rpb24uY29uZmlnLnRpdGxlIHx8ICdGaWx0cmUgcG9yJyB9fVxyXG4gICAgICAgICAgICAgICAgPC9jdXJhLWhlYWRpbmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIEBpZiAoc2VjdGlvbi5jb25maWcuc3VidGl0bGUpIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItc3VidGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgPGN1cmEtaGVhZGluZyBzaXplPVwieHNtYWxsXCIgd2VpZ2h0PVwiYm9sZFwiIGNvbG9yPVwibmV1dHJhbC1ibGFja1wiIG1hcmdpbi1ibG9jaz1cIjBcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzZWN0aW9uLmNvbmZpZy5zdWJ0aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2N1cmEtaGVhZGluZz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgQGlmIChzZWN0aW9uLmNvbmZpZy5kZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y3VyYS1wYXJhZ3JhcGggc2l6ZT1cInhzbWFsbFwiIGNvbG9yPVwibmV1dHJhbC1kYXJrXCIgbWFyZ2luLWJsb2NrPVwiMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHNlY3Rpb24uY29uZmlnLmRlc2NyaXB0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvY3VyYS1wYXJhZ3JhcGg+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY2hlY2tib3hlc1wiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIHNlY3Rpb24uY29uZmlnLm9wdGlvbnMgfHwgW107IHRyYWNrIG9wdGlvbj8udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgPGN1cmEtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbi1jb2xvcj1cImxpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5uYW1lXT1cIm9wdGlvbj8ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmxhYmVsXT1cIm9wdGlvbj8ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnZhbHVlXT1cIm9wdGlvbj8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmNoZWNrZWRdPVwib3B0aW9uPy5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAob25jaGFuZ2UpPVwiaGFuZGxlQ2hlY2tib3hDaGFuZ2UoJGV2ZW50LCBzZWN0aW9uLmNvbmZpZy5vcHRpb25zKVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2N1cmEtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGNhc2UgKCdyYWRpby1ncm91cCcpIHtcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXJhZGlvc1wiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIHNlY3Rpb24uY29uZmlnLm9wdGlvbnMgfHwgW107IHRyYWNrIG9wdGlvbj8udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgPGN1cmEtcmFkaW9cclxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJzZWN0aW9uLmNvbmZpZy5uYW1lIHx8ICdyYWRpby1ncm91cCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJvcHRpb24ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldFJhZGlvR3JvdXBWYWx1ZShzZWN0aW9uLmNvbmZpZy5jb250cm9sKSA9PT0gb3B0aW9uLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAob25jaGFuZ2UpPVwiaGFuZGxlUmFkaW9DaGFuZ2UoJGV2ZW50LCBzZWN0aW9uLmNvbmZpZy5jb250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2N1cmEtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGNhc2UgKCdjdXN0b20nKSB7XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlY3Rpb24uY29uZmlnLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWFjdGlvbnNcIiBbY2xhc3MuaGlkZGVuXT1cIiFpc0ZpbHRlck9wZW4gfHwgKGZvcmNlQ29sbGFwc2VkICYmIGlzTW9iaWxlKCkpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWFpbi1hY3Rpb25zXCI+XHJcbiAgICAgIEBpZiAoc2hvd0NsZWFyQnV0dG9uKSB7XHJcbiAgICAgICAgPGN1cmEtYnV0dG9uLXRyYW5zcGFyZW50XHJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgZm9udC1jb2xvcj1cImRhcmtcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgIHRleHQtYWxpZ249XCJjZW50ZXJcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVCdXR0b25zV2l0aG91dFNlbGVjdGlvbiAmJiAhaGFzU2VsZWN0aW9uKClcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInJlc2V0KClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuPkxpbXBhciB0b2RvcyBvcyBmaWx0cm9zPC9zcGFuPlxyXG4gICAgICAgIDwvY3VyYS1idXR0b24tdHJhbnNwYXJlbnQ+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpZiAoc2hvd0FwcGx5QnV0dG9uKSB7XHJcbiAgICAgICAgPGN1cmEtYnV0dG9uXHJcbiAgICAgICAgICBzaXplPVwibWVkaXVtXCJcclxuICAgICAgICAgIGZvbnQtY29sb3I9XCJsaWdodFwiXHJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgdGV4dC1hbGlnbj1cImNlbnRlclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyKClcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVCdXR0b25zV2l0aG91dFNlbGVjdGlvbiAmJiAhaGFzU2VsZWN0aW9uKClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXItYnV0dG9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBGaWx0cmFyXHJcbiAgICAgICAgPC9jdXJhLWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgQGlmIChzaG93Q2xvc2VCdXR0b24pIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXItc3Ryb25nXCI+PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZS1hY3Rpb24td3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZS1hY3Rpb25cIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxyXG4gICAgICAgICAgPGN1cmEtaWNvbiBuYW1lPVwiY2xvc2VcIiBjb2xvcj1cImVycm9yLWRhcmtcIiBzaXplPVwic21hbGxcIj48L2N1cmEtaWNvbj5cclxuICAgICAgICAgIDxjdXJhLWJ1dHRvbi10cmFuc3BhcmVudCBzaXplPVwiXCIgdHlwZT1cImJ1dHRvblwiIGNvbG9yPVwiZXJyb3JcIiB0YXJnZXQ9XCJfc2VsZlwiPiBGZWNoYXIgPC9jdXJhLWJ1dHRvbi10cmFuc3BhcmVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
package/esm2022/lib/components/filters/filter-planos-convenios/filter-planos-convenios.component.mjs
CHANGED
|
@@ -95,11 +95,11 @@ export class FilterPlanosConveniosComponent {
|
|
|
95
95
|
this.coberturaControl.reset(this.coberturas);
|
|
96
96
|
}
|
|
97
97
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterPlanosConveniosComponent, deps: [{ token: i1.CuraService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FilterPlanosConveniosComponent, isStandalone: true, selector: "rdsite-filter-planos-convenios", inputs: { withContainerStyle: "withContainerStyle", isLoading: "isLoading", emitOnChange: "emitOnChange", initialEstado: "initialEstado", estados: "estados", coberturas: "coberturas", unidadeControl: "unidadeControl", estadoControl: "estadoControl" }, outputs: { filterChange: "filterChange", closeModal: "closeModal" }, host: { properties: { "style": "this.styleBinding" } }, ngImport: i0, template: "<div class=\"filter-planos-convenios\" [ngClass]=\"{ 'container-style': withContainerStyle }\">\
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FilterPlanosConveniosComponent, isStandalone: true, selector: "rdsite-filter-planos-convenios", inputs: { withContainerStyle: "withContainerStyle", isLoading: "isLoading", emitOnChange: "emitOnChange", initialEstado: "initialEstado", estados: "estados", coberturas: "coberturas", unidadeControl: "unidadeControl", estadoControl: "estadoControl" }, outputs: { filterChange: "filterChange", closeModal: "closeModal" }, host: { properties: { "style": "this.styleBinding" } }, ngImport: i0, template: "<div class=\"filter-planos-convenios\" [ngClass]=\"{ 'container-style': withContainerStyle }\">\n @if (!isLoading) {\n <cura-heading size=\"small\" level=\"4\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\"> Refine sua busca </cura-heading>\n\n <div class=\"filter-planos-convenios-unidade\">\n <cura-input-text\n placeholder=\"Nome da unidade\"\n name=\"unidade-input\"\n icon-name=\"search\"\n autocomplete=\"off\"\n [attr.value]=\"unidadeControl.value\"\n (valueChange)=\"inputTextChange($event)\"\n ></cura-input-text>\n </div>\n\n <div class=\"filter-planos-convenios-estado\">\n @if (estados) {\n <cura-select\n label=\"Selecione o estado\"\n placeholder=\"Fa\u00E7a a sua Sele\u00E7\u00E3o\"\n mode=\"default\"\n size=\"medium\"\n status=\"default\"\n [attr.value]=\"estadoControl.value\"\n (selected)=\"selectChange($event)\"\n >\n <cura-select-option [attr.value]=\"''\">Fa\u00E7a a sua Sele\u00E7\u00E3o</cura-select-option>\n\n @for (estado of estados || []; track estado?.value) {\n <cura-select-option [attr.value]=\"estado?.value\">{{ estado?.label }}</cura-select-option>\n }\n </cura-select>\n }\n </div>\n\n <div class=\"filter-planos-convenios-cobertura\">\n <cura-icon name=\"filter\" size=\"20\" color=\"info-dark\"></cura-icon>\n <cura-heading size=\"xsmall\" level=\"5\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\">\n Filtre pela cobertura do seu plano\n </cura-heading>\n </div>\n\n <div class=\"filter-planos-convenios-content\">\n <cura-heading size=\"xsmall\" level=\"5\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\"> Tipos de cobertura </cura-heading>\n <cura-paragraph size=\"xsmall\" color=\"neutral-dark\" margin-block=\"0\">\n Voc\u00EA pode selecionar uma ou mais portas de entrada, de acordo com a cobertura do seu plano.\n </cura-paragraph>\n </div>\n\n <div class=\"filter-planos-convenios-checkboxes\">\n @for (option of coberturas || []; track option?.value) {\n <cura-checkbox\n color=\"primary\"\n size=\"small\"\n icon-color=\"light\"\n [attr.name]=\"option?.label\"\n [attr.label]=\"option?.label\"\n [attr.value]=\"option?.value\"\n [attr.checked]=\"option?.checked\"\n (onchange)=\"checkboxChange($event)\"\n >\n </cura-checkbox>\n }\n </div>\n\n <div class=\"filter-planos-convenios-buttons\">\n <cura-button-transparent size=\"small\" color=\"primary\" font-color=\"dark\" text-align=\"center\" (click)=\"reset()\">\n <span> Limpar todos os filtros </span>\n </cura-button-transparent>\n\n <cura-button size=\"medium\" color=\"primary\" font-color=\"light\" background=\"light\" text-align=\"center\" (click)=\"filter()\"> Filtrar </cura-button>\n </div>\n } @else {\n <cura-loader-circle color=\"primary\" size=\"small\"> </cura-loader-circle>\n }\n</div>\n", styles: [".filter-planos-convenios{display:flex;flex-direction:column;gap:23px}.filter-planos-convenios.container-style{width:100%;padding:20px;border-radius:4px;border:1px solid var(--neutral-lighter, #e2e2e2);background-color:var(--neutral-purewhite, #ffffff)}.filter-planos-convenios-cobertura{color:var(--neutral-darker);display:flex;align-items:center;gap:14px}.filter-planos-convenios-content{display:flex;flex-direction:column;gap:10px}.filter-planos-convenios-content:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:13px}.filter-planos-convenios-checkboxes{display:grid;grid-template-columns:repeat(2,1fr);gap:11px 0px}.filter-planos-convenios-checkboxes:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:12px;grid-column:1/-1}.filter-planos-convenios-buttons{display:flex;gap:10px;justify-content:space-between}.filter-planos-convenios-buttons cura-button-transparent{display:flex;flex:1 0 0;max-width:170px}.filter-planos-convenios-buttons cura-button-transparent span{line-height:13px;letter-spacing:.72px;text-align:left}.filter-planos-convenios-buttons cura-button{display:flex;flex:0 0 100px}cura-loader-circle{display:flex;justify-content:center;align-items:center;width:100%;min-height:100px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
99
99
|
}
|
|
100
100
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterPlanosConveniosComponent, decorators: [{
|
|
101
101
|
type: Component,
|
|
102
|
-
args: [{ selector: 'rdsite-filter-planos-convenios', standalone: true, imports: [CommonModule, ReactiveFormsModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"filter-planos-convenios\" [ngClass]=\"{ 'container-style': withContainerStyle }\">\
|
|
102
|
+
args: [{ selector: 'rdsite-filter-planos-convenios', standalone: true, imports: [CommonModule, ReactiveFormsModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"filter-planos-convenios\" [ngClass]=\"{ 'container-style': withContainerStyle }\">\n @if (!isLoading) {\n <cura-heading size=\"small\" level=\"4\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\"> Refine sua busca </cura-heading>\n\n <div class=\"filter-planos-convenios-unidade\">\n <cura-input-text\n placeholder=\"Nome da unidade\"\n name=\"unidade-input\"\n icon-name=\"search\"\n autocomplete=\"off\"\n [attr.value]=\"unidadeControl.value\"\n (valueChange)=\"inputTextChange($event)\"\n ></cura-input-text>\n </div>\n\n <div class=\"filter-planos-convenios-estado\">\n @if (estados) {\n <cura-select\n label=\"Selecione o estado\"\n placeholder=\"Fa\u00E7a a sua Sele\u00E7\u00E3o\"\n mode=\"default\"\n size=\"medium\"\n status=\"default\"\n [attr.value]=\"estadoControl.value\"\n (selected)=\"selectChange($event)\"\n >\n <cura-select-option [attr.value]=\"''\">Fa\u00E7a a sua Sele\u00E7\u00E3o</cura-select-option>\n\n @for (estado of estados || []; track estado?.value) {\n <cura-select-option [attr.value]=\"estado?.value\">{{ estado?.label }}</cura-select-option>\n }\n </cura-select>\n }\n </div>\n\n <div class=\"filter-planos-convenios-cobertura\">\n <cura-icon name=\"filter\" size=\"20\" color=\"info-dark\"></cura-icon>\n <cura-heading size=\"xsmall\" level=\"5\" weight=\"bold\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\">\n Filtre pela cobertura do seu plano\n </cura-heading>\n </div>\n\n <div class=\"filter-planos-convenios-content\">\n <cura-heading size=\"xsmall\" level=\"5\" color=\"neutral-black\" margin-block=\"0\" line-height=\"16px\"> Tipos de cobertura </cura-heading>\n <cura-paragraph size=\"xsmall\" color=\"neutral-dark\" margin-block=\"0\">\n Voc\u00EA pode selecionar uma ou mais portas de entrada, de acordo com a cobertura do seu plano.\n </cura-paragraph>\n </div>\n\n <div class=\"filter-planos-convenios-checkboxes\">\n @for (option of coberturas || []; track option?.value) {\n <cura-checkbox\n color=\"primary\"\n size=\"small\"\n icon-color=\"light\"\n [attr.name]=\"option?.label\"\n [attr.label]=\"option?.label\"\n [attr.value]=\"option?.value\"\n [attr.checked]=\"option?.checked\"\n (onchange)=\"checkboxChange($event)\"\n >\n </cura-checkbox>\n }\n </div>\n\n <div class=\"filter-planos-convenios-buttons\">\n <cura-button-transparent size=\"small\" color=\"primary\" font-color=\"dark\" text-align=\"center\" (click)=\"reset()\">\n <span> Limpar todos os filtros </span>\n </cura-button-transparent>\n\n <cura-button size=\"medium\" color=\"primary\" font-color=\"light\" background=\"light\" text-align=\"center\" (click)=\"filter()\"> Filtrar </cura-button>\n </div>\n } @else {\n <cura-loader-circle color=\"primary\" size=\"small\"> </cura-loader-circle>\n }\n</div>\n", styles: [".filter-planos-convenios{display:flex;flex-direction:column;gap:23px}.filter-planos-convenios.container-style{width:100%;padding:20px;border-radius:4px;border:1px solid var(--neutral-lighter, #e2e2e2);background-color:var(--neutral-purewhite, #ffffff)}.filter-planos-convenios-cobertura{color:var(--neutral-darker);display:flex;align-items:center;gap:14px}.filter-planos-convenios-content{display:flex;flex-direction:column;gap:10px}.filter-planos-convenios-content:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:13px}.filter-planos-convenios-checkboxes{display:grid;grid-template-columns:repeat(2,1fr);gap:11px 0px}.filter-planos-convenios-checkboxes:after{content:\"\";display:block;width:100%;height:1px;background-color:var(--neutral-light);margin-top:12px;grid-column:1/-1}.filter-planos-convenios-buttons{display:flex;gap:10px;justify-content:space-between}.filter-planos-convenios-buttons cura-button-transparent{display:flex;flex:1 0 0;max-width:170px}.filter-planos-convenios-buttons cura-button-transparent span{line-height:13px;letter-spacing:.72px;text-align:left}.filter-planos-convenios-buttons cura-button{display:flex;flex:0 0 100px}cura-loader-circle{display:flex;justify-content:center;align-items:center;width:100%;min-height:100px}\n"] }]
|
|
103
103
|
}], ctorParameters: () => [{ type: i1.CuraService }], propDecorators: { filterChange: [{
|
|
104
104
|
type: Output
|
|
105
105
|
}], closeModal: [{
|
|
@@ -124,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
124
124
|
type: HostBinding,
|
|
125
125
|
args: ['style']
|
|
126
126
|
}] } });
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2l0ZS1mcm9udC1lbmQtbGliL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlci1wbGFub3MtY29udmVuaW9zL2ZpbHRlci1wbGFub3MtY29udmVuaW9zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpdGUtZnJvbnQtZW5kLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVycy9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFvQnpDLE1BQU0sT0FBTyw4QkFBOEI7SUFpQ3pDLFlBQTZCLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBaEMzQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBQy9ELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTFDLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTlCLGtCQUFhLEdBQXFDLElBQUksQ0FBQztRQUV2RCxZQUFPLEdBQTRCLE1B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T0FBTztzQkFBZixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdnQixZQUFZO3NCQUFqQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVzdGFkb3MgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEZpbHRlclBsYW5vc0NvbnZlbmlvcywgRmlsdGVyUGxhbm9zQ29udmVuaW9zQ2hhbmdlLCBGaWx0ZXJQbGFub3NDb252ZW5pb3NDb2JlcnR1cmEgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZmlsdGVycy9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy5tb2RlbCc7XHJcbmltcG9ydCB7IEN1cmFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXHJcbmltcG9ydCB0eXBlICogYXMgXyBmcm9tICdAcmVkZWRvci9jdXJhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy5qcyc7XHJcblxyXG5pbnRlcmZhY2UgQ3VyYUNoZWNrYm94T3B0aW9uPFQgPSBhbnk+IHtcclxuICB2YWx1ZTogVDtcclxuICBjaGVja2VkOiBib29sZWFuO1xyXG4gIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Jkc2l0ZS1maWx0ZXItcGxhbm9zLWNvbnZlbmlvcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1wbGFub3MtY29udmVuaW9zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyUGxhbm9zQ29udmVuaW9zQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQE91dHB1dCgpIGZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyUGxhbm9zQ29udmVuaW9zQ2hhbmdlPigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZU1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBASW5wdXQoKSB3aXRoQ29udGFpbmVyU3R5bGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBlbWl0T25DaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgaW5pdGlhbEVzdGFkbzogRXN0YWRvcyB8IHN0cmluZyB8IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSBlc3RhZG9zOiBGaWx0ZXJQbGFub3NDb252ZW5pb3NbXSA9IE9iamVjdC5lbnRyaWVzKEVzdGFkb3MpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xyXG4gICAgbGFiZWw6IHZhbHVlLFxyXG4gICAgdmFsdWU6IGtleSxcclxuICB9KSk7XHJcblxyXG4gIEBJbnB1dCgpIGNvYmVydHVyYXM6IEZpbHRlclBsYW5vc0NvbnZlbmlvc0NvYmVydHVyYVtdID0gW1xyXG4gICAgeyBsYWJlbDogJ0NvbnN1bHRhcycsIHZhbHVlOiAnRkxBR19BQ0VJVEFfQU1CVUxBVE9SSU8nLCBjaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgeyBsYWJlbDogJ0VtZXJnw6puY2lhJywgdmFsdWU6ICdGTEFHX0FDRUlUQV9QUycsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICB7IGxhYmVsOiAnRXhhbWVzJywgdmFsdWU6ICdGTEFHX0FDRUlUQV9FWEFNRScsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICB7IGxhYmVsOiAnSW50ZXJuYcOnw6NvJywgdmFsdWU6ICdGTEFHX0FDRUlUQV9JTlRFUk5BQ0FPJywgY2hlY2tlZDogZmFsc2UgfSxcclxuICBdO1xyXG5cclxuICBASW5wdXQoKSB1bmlkYWRlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudW1iZXIgfCBudWxsPignJyk7XHJcbiAgQElucHV0KCkgZXN0YWRvQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxFc3RhZG9zIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbD4oJycpO1xyXG4gIGNvYmVydHVyYUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8RmlsdGVyUGxhbm9zQ29udmVuaW9zQ29iZXJ0dXJhW10+KHRoaXMuY29iZXJ0dXJhcyB8fCBbXSk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnc3R5bGUnKSBzdHlsZUJpbmRpbmcgPSB7XHJcbiAgICAnLS1uZXV0cmFsLWRhcmtlcic6IHRoaXMuY3VyYVNlcnZpY2UuZ2V0Q29sb3IoJ25ldXRyYWwtZGFya2VyJyksXHJcbiAgICAnLS1uZXV0cmFsLWxpZ2h0JzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1saWdodCcpLFxyXG4gICAgJy0tbmV1dHJhbC1saWdodGVyJzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1saWdodGVyJyksXHJcbiAgICAnLS1uZXV0cmFsLXB1cmV3aGl0ZSc6IHRoaXMuY3VyYVNlcnZpY2UuZ2V0Q29sb3IoJ25ldXRyYWwtcHVyZXdoaXRlJyksXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjdXJhU2VydmljZTogQ3VyYVNlcnZpY2UpIHt9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmluaXRpYWxFc3RhZG8gJiYgQXJyYXkuaXNBcnJheSh0aGlzLmVzdGFkb3MpICYmIHRoaXMuZXN0YWRvcy5maW5kKChlc3RhZG8pID0+IGVzdGFkby52YWx1ZSA9PT0gdGhpcy5pbml0aWFsRXN0YWRvKSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmVzdGFkb0NvbnRyb2wuc2V0VmFsdWUodGhpcy5pbml0aWFsRXN0YWRvKTtcclxuICAgICAgICB0aGlzLmZpbHRlcigpO1xyXG4gICAgICB9LCA1MCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dFRleHRDaGFuZ2UoeyBkZXRhaWwgfTogQ3VzdG9tRXZlbnQ8bnVtYmVyIHwgc3RyaW5nPikge1xyXG4gICAgdGhpcy51bmlkYWRlQ29udHJvbC5zZXRWYWx1ZShkZXRhaWwpO1xyXG4gICAgaWYgKHRoaXMuZW1pdE9uQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgIHVuaWRhZGU6IGRldGFpbCxcclxuICAgICAgICBlc3RhZG86IHRoaXMuZXN0YWRvQ29udHJvbC52YWx1ZSxcclxuICAgICAgICBjb2JlcnR1cmE6IHRoaXMuY29iZXJ0dXJhQ29udHJvbC52YWx1ZSB8fCBbXSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RDaGFuZ2UoeyBkZXRhaWwgfTogQ3VzdG9tRXZlbnQ8bnVtYmVyIHwgc3RyaW5nPikge1xyXG4gICAgdGhpcy5lc3RhZG9Db250cm9sLnNldFZhbHVlKGRldGFpbCk7XHJcbiAgICBpZiAodGhpcy5lbWl0T25DaGFuZ2UpIHtcclxuICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgdW5pZGFkZTogdGhpcy51bmlkYWRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICBlc3RhZG86IGRldGFpbCxcclxuICAgICAgICBjb2JlcnR1cmE6IHRoaXMuY29iZXJ0dXJhQ29udHJvbC52YWx1ZSB8fCBbXSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja2JveENoYW5nZSh7IGRldGFpbCB9OiBDdXN0b21FdmVudDxDdXJhQ2hlY2tib3hPcHRpb248c3RyaW5nPj4pIHtcclxuICAgIGlmICghdGhpcy5jb2JlcnR1cmFzKSByZXR1cm47XHJcbiAgICBjb25zdCBjdXJyT3B0aW9uOiBGaWx0ZXJQbGFub3NDb252ZW5pb3NDb2JlcnR1cmEgfCB1bmRlZmluZWQgPSB0aGlzLmNvYmVydHVyYXMuZmluZChcclxuICAgICAgKG9wdGlvbjogRmlsdGVyUGxhbm9zQ29udmVuaW9zQ29iZXJ0dXJhKSA9PiBvcHRpb24udmFsdWUgPT0gZGV0YWlsLnZhbHVlLFxyXG4gICAgKTtcclxuICAgIGlmIChjdXJyT3B0aW9uKSB7XHJcbiAgICAgIGN1cnJPcHRpb24uY2hlY2tlZCA9IGRldGFpbC5jaGVja2VkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb2JlcnR1cmFDb250cm9sLnNldFZhbHVlKHRoaXMuY29iZXJ0dXJhcyk7XHJcbiAgICBpZiAodGhpcy5lbWl0T25DaGFuZ2UpIHtcclxuICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgdW5pZGFkZTogdGhpcy51bmlkYWRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICBlc3RhZG86IHRoaXMuZXN0YWRvQ29udHJvbC52YWx1ZSxcclxuICAgICAgICBjb2JlcnR1cmE6IHRoaXMuY29iZXJ0dXJhQ29udHJvbC52YWx1ZSB8fCBbXSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWx0ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHtcclxuICAgICAgdW5pZGFkZTogdGhpcy51bmlkYWRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgZXN0YWRvOiB0aGlzLmVzdGFkb0NvbnRyb2wudmFsdWUsXHJcbiAgICAgIGNvYmVydHVyYTogdGhpcy5jb2JlcnR1cmFDb250cm9sLnZhbHVlIHx8IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXNldCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGhhc0NvdmVyYWdlID0gdGhpcy5jb2JlcnR1cmFDb250cm9sLnZhbHVlIS5zb21lKChjb2IpID0+IGNvYi5jaGVja2VkKTtcclxuICAgIGNvbnN0IGhhc0ZpbHRlciA9IEJvb2xlYW4odGhpcy51bmlkYWRlQ29udHJvbC52YWx1ZSkgfHwgQm9vbGVhbih0aGlzLmVzdGFkb0NvbnRyb2wudmFsdWUpIHx8IEJvb2xlYW4oaGFzQ292ZXJhZ2UpO1xyXG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQoIWhhc0ZpbHRlcik7XHJcbiAgICB0aGlzLnVuaWRhZGVDb250cm9sLnJlc2V0KCcnKTtcclxuICAgIHRoaXMuZXN0YWRvQ29udHJvbC5yZXNldCgnJyk7XHJcbiAgICB0aGlzLmNvYmVydHVyYXMuZm9yRWFjaCgoY29iZXJ0dXJhKSA9PiAoY29iZXJ0dXJhLmNoZWNrZWQgPSBmYWxzZSkpO1xyXG4gICAgdGhpcy5jb2JlcnR1cmFDb250cm9sLnJlc2V0KHRoaXMuY29iZXJ0dXJhcyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmaWx0ZXItcGxhbm9zLWNvbnZlbmlvc1wiIFtuZ0NsYXNzXT1cInsgJ2NvbnRhaW5lci1zdHlsZSc6IHdpdGhDb250YWluZXJTdHlsZSB9XCI+XHJcbiAgQGlmICghaXNMb2FkaW5nKSB7XHJcbiAgICA8Y3VyYS1oZWFkaW5nIHNpemU9XCJzbWFsbFwiIGxldmVsPVwiNFwiIHdlaWdodD1cImJvbGRcIiBjb2xvcj1cIm5ldXRyYWwtYmxhY2tcIiBtYXJnaW4tYmxvY2s9XCIwXCIgbGluZS1oZWlnaHQ9XCIxNnB4XCI+IFJlZmluZSBzdWEgYnVzY2EgPC9jdXJhLWhlYWRpbmc+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1wbGFub3MtY29udmVuaW9zLXVuaWRhZGVcIj5cclxuICAgICAgPGN1cmEtaW5wdXQtdGV4dFxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiTm9tZSBkYSB1bmlkYWRlXCJcclxuICAgICAgICBuYW1lPVwidW5pZGFkZS1pbnB1dFwiXHJcbiAgICAgICAgaWNvbi1uYW1lPVwic2VhcmNoXCJcclxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgIFthdHRyLnZhbHVlXT1cInVuaWRhZGVDb250cm9sLnZhbHVlXCJcclxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaW5wdXRUZXh0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICA+PC9jdXJhLWlucHV0LXRleHQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MtZXN0YWRvXCI+XHJcbiAgICAgIEBpZiAoZXN0YWRvcykge1xyXG4gICAgICAgIDxjdXJhLXNlbGVjdFxyXG4gICAgICAgICAgbGFiZWw9XCJTZWxlY2lvbmUgbyBlc3RhZG9cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJGYcOnYSBhIHN1YSBTZWxlw6fDo29cIlxyXG4gICAgICAgICAgbW9kZT1cImRlZmF1bHRcIlxyXG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXHJcbiAgICAgICAgICBzdGF0dXM9XCJkZWZhdWx0XCJcclxuICAgICAgICAgIFthdHRyLnZhbHVlXT1cImVzdGFkb0NvbnRyb2wudmFsdWVcIlxyXG4gICAgICAgICAgKHNlbGVjdGVkKT1cInNlbGVjdENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y3VyYS1zZWxlY3Qtb3B0aW9uIFthdHRyLnZhbHVlXT1cIicnXCI+RmHDp2EgYSBzdWEgU2VsZcOnw6NvPC9jdXJhLXNlbGVjdC1vcHRpb24+XHJcblxyXG4gICAgICAgICAgQGZvciAoZXN0YWRvIG9mIGVzdGFkb3MgfHwgW107IHRyYWNrIGVzdGFkbz8udmFsdWUpIHtcclxuICAgICAgICAgICAgPGN1cmEtc2VsZWN0LW9wdGlvbiBbYXR0ci52YWx1ZV09XCJlc3RhZG8/LnZhbHVlXCI+e3sgZXN0YWRvPy5sYWJlbCB9fTwvY3VyYS1zZWxlY3Qtb3B0aW9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvY3VyYS1zZWxlY3Q+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcGxhbm9zLWNvbnZlbmlvcy1jb2JlcnR1cmFcIj5cclxuICAgICAgPGN1cmEtaWNvbiBuYW1lPVwiZmlsdGVyXCIgc2l6ZT1cIjIwXCIgY29sb3I9XCJpbmZvLWRhcmtcIj48L2N1cmEtaWNvbj5cclxuICAgICAgPGN1cmEtaGVhZGluZyBzaXplPVwieHNtYWxsXCIgbGV2ZWw9XCI1XCIgd2VpZ2h0PVwiYm9sZFwiIGNvbG9yPVwibmV1dHJhbC1ibGFja1wiIG1hcmdpbi1ibG9jaz1cIjBcIiBsaW5lLWhlaWdodD1cIjE2cHhcIj5cclxuICAgICAgICBGaWx0cmUgcGVsYSBjb2JlcnR1cmEgZG8gc2V1IHBsYW5vXHJcbiAgICAgIDwvY3VyYS1oZWFkaW5nPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1wbGFub3MtY29udmVuaW9zLWNvbnRlbnRcIj5cclxuICAgICAgPGN1cmEtaGVhZGluZyBzaXplPVwieHNtYWxsXCIgbGV2ZWw9XCI1XCIgY29sb3I9XCJuZXV0cmFsLWJsYWNrXCIgbWFyZ2luLWJsb2NrPVwiMFwiIGxpbmUtaGVpZ2h0PVwiMTZweFwiPiBUaXBvcyBkZSBjb2JlcnR1cmEgPC9jdXJhLWhlYWRpbmc+XHJcbiAgICAgIDxjdXJhLXBhcmFncmFwaCBzaXplPVwieHNtYWxsXCIgY29sb3I9XCJuZXV0cmFsLWRhcmtcIiBtYXJnaW4tYmxvY2s9XCIwXCI+XHJcbiAgICAgICAgVm9jw6ogcG9kZSBzZWxlY2lvbmFyIHVtYSBvdSBtYWlzIHBvcnRhcyBkZSBlbnRyYWRhLCBkZSBhY29yZG8gY29tIGEgY29iZXJ0dXJhIGRvIHNldSBwbGFuby5cclxuICAgICAgPC9jdXJhLXBhcmFncmFwaD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcGxhbm9zLWNvbnZlbmlvcy1jaGVja2JveGVzXCI+XHJcbiAgICAgIEBmb3IgKG9wdGlvbiBvZiBjb2JlcnR1cmFzIHx8IFtdOyB0cmFjayBvcHRpb24/LnZhbHVlKSB7XHJcbiAgICAgICAgPGN1cmEtY2hlY2tib3hcclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgaWNvbi1jb2xvcj1cImxpZ2h0XCJcclxuICAgICAgICAgIFthdHRyLm5hbWVdPVwib3B0aW9uPy5sYWJlbFwiXHJcbiAgICAgICAgICBbYXR0ci5sYWJlbF09XCJvcHRpb24/LmxhYmVsXCJcclxuICAgICAgICAgIFthdHRyLnZhbHVlXT1cIm9wdGlvbj8udmFsdWVcIlxyXG4gICAgICAgICAgW2F0dHIuY2hlY2tlZF09XCJvcHRpb24/LmNoZWNrZWRcIlxyXG4gICAgICAgICAgKG9uY2hhbmdlKT1cImNoZWNrYm94Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2N1cmEtY2hlY2tib3g+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcGxhbm9zLWNvbnZlbmlvcy1idXR0b25zXCI+XHJcbiAgICAgIDxjdXJhLWJ1dHRvbi10cmFuc3BhcmVudCBzaXplPVwic21hbGxcIiBjb2xvcj1cInByaW1hcnlcIiBmb250LWNvbG9yPVwiZGFya1wiIHRleHQtYWxpZ249XCJjZW50ZXJcIiAoY2xpY2spPVwicmVzZXQoKVwiPlxyXG4gICAgICAgIDxzcGFuPiBMaW1wYXIgdG9kb3Mgb3MgZmlsdHJvcyA8L3NwYW4+XHJcbiAgICAgIDwvY3VyYS1idXR0b24tdHJhbnNwYXJlbnQ+XHJcblxyXG4gICAgICA8Y3VyYS1idXR0b24gc2l6ZT1cIm1lZGl1bVwiIGNvbG9yPVwicHJpbWFyeVwiIGZvbnQtY29sb3I9XCJsaWdodFwiIGJhY2tncm91bmQ9XCJsaWdodFwiIHRleHQtYWxpZ249XCJjZW50ZXJcIiAoY2xpY2spPVwiZmlsdGVyKClcIj4gRmlsdHJhciA8L2N1cmEtYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA8Y3VyYS1sb2FkZXItY2lyY2xlIGNvbG9yPVwicHJpbWFyeVwiIHNpemU9XCJzbWFsbFwiPiA8L2N1cmEtbG9hZGVyLWNpcmNsZT5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2l0ZS1mcm9udC1lbmQtbGliL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlci1wbGFub3MtY29udmVuaW9zL2ZpbHRlci1wbGFub3MtY29udmVuaW9zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpdGUtZnJvbnQtZW5kLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVycy9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFvQnpDLE1BQU0sT0FBTyw4QkFBOEI7SUFpQ3pDLFlBQTZCLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBaEMzQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBQy9ELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTFDLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTlCLGtCQUFhLEdBQXFDLElBQUksQ0FBQztRQUV2RCxZQUFPLEdBQTRCLE1B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T0FBTztzQkFBZixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdnQixZQUFZO3NCQUFqQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVzdGFkb3MgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBGaWx0ZXJQbGFub3NDb252ZW5pb3MsIEZpbHRlclBsYW5vc0NvbnZlbmlvc0NoYW5nZSwgRmlsdGVyUGxhbm9zQ29udmVuaW9zQ29iZXJ0dXJhIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpbHRlcnMvZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MubW9kZWwnO1xuaW1wb3J0IHsgQ3VyYVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbXBvcnQgdHlwZSAqIGFzIF8gZnJvbSAnQHJlZGVkb3IvY3VyYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMuanMnO1xuXG5pbnRlcmZhY2UgQ3VyYUNoZWNrYm94T3B0aW9uPFQgPSBhbnk+IHtcbiAgdmFsdWU6IFQ7XG4gIGNoZWNrZWQ6IGJvb2xlYW47XG4gIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyZHNpdGUtZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItcGxhbm9zLWNvbnZlbmlvcy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQbGFub3NDb252ZW5pb3NDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQE91dHB1dCgpIGZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyUGxhbm9zQ29udmVuaW9zQ2hhbmdlPigpO1xuICBAT3V0cHV0KCkgY2xvc2VNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBASW5wdXQoKSB3aXRoQ29udGFpbmVyU3R5bGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVtaXRPbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGluaXRpYWxFc3RhZG86IEVzdGFkb3MgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKSBlc3RhZG9zOiBGaWx0ZXJQbGFub3NDb252ZW5pb3NbXSA9IE9iamVjdC5lbnRyaWVzKEVzdGFkb3MpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIGxhYmVsOiB2YWx1ZSxcbiAgICB2YWx1ZToga2V5LFxuICB9KSk7XG5cbiAgQElucHV0KCkgY29iZXJ0dXJhczogRmlsdGVyUGxhbm9zQ29udmVuaW9zQ29iZXJ0dXJhW10gPSBbXG4gICAgeyBsYWJlbDogJ0NvbnN1bHRhcycsIHZhbHVlOiAnRkxBR19BQ0VJVEFfQU1CVUxBVE9SSU8nLCBjaGVja2VkOiBmYWxzZSB9LFxuICAgIHsgbGFiZWw6ICdFbWVyZ8OqbmNpYScsIHZhbHVlOiAnRkxBR19BQ0VJVEFfUFMnLCBjaGVja2VkOiBmYWxzZSB9LFxuICAgIHsgbGFiZWw6ICdFeGFtZXMnLCB2YWx1ZTogJ0ZMQUdfQUNFSVRBX0VYQU1FJywgY2hlY2tlZDogZmFsc2UgfSxcbiAgICB7IGxhYmVsOiAnSW50ZXJuYcOnw6NvJywgdmFsdWU6ICdGTEFHX0FDRUlUQV9JTlRFUk5BQ0FPJywgY2hlY2tlZDogZmFsc2UgfSxcbiAgXTtcblxuICBASW5wdXQoKSB1bmlkYWRlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudW1iZXIgfCBudWxsPignJyk7XG4gIEBJbnB1dCgpIGVzdGFkb0NvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8RXN0YWRvcyB8IHN0cmluZyB8IG51bWJlciB8IG51bGw+KCcnKTtcbiAgY29iZXJ0dXJhQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxGaWx0ZXJQbGFub3NDb252ZW5pb3NDb2JlcnR1cmFbXT4odGhpcy5jb2JlcnR1cmFzIHx8IFtdKTtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlJykgc3R5bGVCaW5kaW5nID0ge1xuICAgICctLW5ldXRyYWwtZGFya2VyJzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1kYXJrZXInKSxcbiAgICAnLS1uZXV0cmFsLWxpZ2h0JzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1saWdodCcpLFxuICAgICctLW5ldXRyYWwtbGlnaHRlcic6IHRoaXMuY3VyYVNlcnZpY2UuZ2V0Q29sb3IoJ25ldXRyYWwtbGlnaHRlcicpLFxuICAgICctLW5ldXRyYWwtcHVyZXdoaXRlJzogdGhpcy5jdXJhU2VydmljZS5nZXRDb2xvcignbmV1dHJhbC1wdXJld2hpdGUnKSxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGN1cmFTZXJ2aWNlOiBDdXJhU2VydmljZSkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbEVzdGFkbyAmJiBBcnJheS5pc0FycmF5KHRoaXMuZXN0YWRvcykgJiYgdGhpcy5lc3RhZG9zLmZpbmQoKGVzdGFkbykgPT4gZXN0YWRvLnZhbHVlID09PSB0aGlzLmluaXRpYWxFc3RhZG8pKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5lc3RhZG9Db250cm9sLnNldFZhbHVlKHRoaXMuaW5pdGlhbEVzdGFkbyk7XG4gICAgICAgIHRoaXMuZmlsdGVyKCk7XG4gICAgICB9LCA1MCk7XG4gICAgfVxuICB9XG5cbiAgaW5wdXRUZXh0Q2hhbmdlKHsgZGV0YWlsIH06IEN1c3RvbUV2ZW50PG51bWJlciB8IHN0cmluZz4pIHtcbiAgICB0aGlzLnVuaWRhZGVDb250cm9sLnNldFZhbHVlKGRldGFpbCk7XG4gICAgaWYgKHRoaXMuZW1pdE9uQ2hhbmdlKSB7XG4gICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHtcbiAgICAgICAgdW5pZGFkZTogZGV0YWlsLFxuICAgICAgICBlc3RhZG86IHRoaXMuZXN0YWRvQ29udHJvbC52YWx1ZSxcbiAgICAgICAgY29iZXJ0dXJhOiB0aGlzLmNvYmVydHVyYUNvbnRyb2wudmFsdWUgfHwgW10sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDaGFuZ2UoeyBkZXRhaWwgfTogQ3VzdG9tRXZlbnQ8bnVtYmVyIHwgc3RyaW5nPikge1xuICAgIHRoaXMuZXN0YWRvQ29udHJvbC5zZXRWYWx1ZShkZXRhaWwpO1xuICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh7XG4gICAgICAgIHVuaWRhZGU6IHRoaXMudW5pZGFkZUNvbnRyb2wudmFsdWUsXG4gICAgICAgIGVzdGFkbzogZGV0YWlsLFxuICAgICAgICBjb2JlcnR1cmE6IHRoaXMuY29iZXJ0dXJhQ29udHJvbC52YWx1ZSB8fCBbXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrYm94Q2hhbmdlKHsgZGV0YWlsIH06IEN1c3RvbUV2ZW50PEN1cmFDaGVja2JveE9wdGlvbjxzdHJpbmc+Pikge1xuICAgIGlmICghdGhpcy5jb2JlcnR1cmFzKSByZXR1cm47XG4gICAgY29uc3QgY3Vyck9wdGlvbjogRmlsdGVyUGxhbm9zQ29udmVuaW9zQ29iZXJ0dXJhIHwgdW5kZWZpbmVkID0gdGhpcy5jb2JlcnR1cmFzLmZpbmQoXG4gICAgICAob3B0aW9uOiBGaWx0ZXJQbGFub3NDb252ZW5pb3NDb2JlcnR1cmEpID0+IG9wdGlvbi52YWx1ZSA9PSBkZXRhaWwudmFsdWUsXG4gICAgKTtcbiAgICBpZiAoY3Vyck9wdGlvbikge1xuICAgICAgY3Vyck9wdGlvbi5jaGVja2VkID0gZGV0YWlsLmNoZWNrZWQ7XG4gICAgfVxuICAgIHRoaXMuY29iZXJ0dXJhQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmNvYmVydHVyYXMpO1xuICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh7XG4gICAgICAgIHVuaWRhZGU6IHRoaXMudW5pZGFkZUNvbnRyb2wudmFsdWUsXG4gICAgICAgIGVzdGFkbzogdGhpcy5lc3RhZG9Db250cm9sLnZhbHVlLFxuICAgICAgICBjb2JlcnR1cmE6IHRoaXMuY29iZXJ0dXJhQ29udHJvbC52YWx1ZSB8fCBbXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHtcbiAgICAgIHVuaWRhZGU6IHRoaXMudW5pZGFkZUNvbnRyb2wudmFsdWUsXG4gICAgICBlc3RhZG86IHRoaXMuZXN0YWRvQ29udHJvbC52YWx1ZSxcbiAgICAgIGNvYmVydHVyYTogdGhpcy5jb2JlcnR1cmFDb250cm9sLnZhbHVlIHx8IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgY29uc3QgaGFzQ292ZXJhZ2UgPSB0aGlzLmNvYmVydHVyYUNvbnRyb2wudmFsdWUhLnNvbWUoKGNvYikgPT4gY29iLmNoZWNrZWQpO1xuICAgIGNvbnN0IGhhc0ZpbHRlciA9IEJvb2xlYW4odGhpcy51bmlkYWRlQ29udHJvbC52YWx1ZSkgfHwgQm9vbGVhbih0aGlzLmVzdGFkb0NvbnRyb2wudmFsdWUpIHx8IEJvb2xlYW4oaGFzQ292ZXJhZ2UpO1xuICAgIHRoaXMuY2xvc2VNb2RhbC5lbWl0KCFoYXNGaWx0ZXIpO1xuICAgIHRoaXMudW5pZGFkZUNvbnRyb2wucmVzZXQoJycpO1xuICAgIHRoaXMuZXN0YWRvQ29udHJvbC5yZXNldCgnJyk7XG4gICAgdGhpcy5jb2JlcnR1cmFzLmZvckVhY2goKGNvYmVydHVyYSkgPT4gKGNvYmVydHVyYS5jaGVja2VkID0gZmFsc2UpKTtcbiAgICB0aGlzLmNvYmVydHVyYUNvbnRyb2wucmVzZXQodGhpcy5jb2JlcnR1cmFzKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZpbHRlci1wbGFub3MtY29udmVuaW9zXCIgW25nQ2xhc3NdPVwieyAnY29udGFpbmVyLXN0eWxlJzogd2l0aENvbnRhaW5lclN0eWxlIH1cIj5cbiAgQGlmICghaXNMb2FkaW5nKSB7XG4gICAgPGN1cmEtaGVhZGluZyBzaXplPVwic21hbGxcIiBsZXZlbD1cIjRcIiB3ZWlnaHQ9XCJib2xkXCIgY29sb3I9XCJuZXV0cmFsLWJsYWNrXCIgbWFyZ2luLWJsb2NrPVwiMFwiIGxpbmUtaGVpZ2h0PVwiMTZweFwiPiBSZWZpbmUgc3VhIGJ1c2NhIDwvY3VyYS1oZWFkaW5nPlxuXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1wbGFub3MtY29udmVuaW9zLXVuaWRhZGVcIj5cbiAgICAgIDxjdXJhLWlucHV0LXRleHRcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJOb21lIGRhIHVuaWRhZGVcIlxuICAgICAgICBuYW1lPVwidW5pZGFkZS1pbnB1dFwiXG4gICAgICAgIGljb24tbmFtZT1cInNlYXJjaFwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIFthdHRyLnZhbHVlXT1cInVuaWRhZGVDb250cm9sLnZhbHVlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImlucHV0VGV4dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L2N1cmEtaW5wdXQtdGV4dD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcGxhbm9zLWNvbnZlbmlvcy1lc3RhZG9cIj5cbiAgICAgIEBpZiAoZXN0YWRvcykge1xuICAgICAgICA8Y3VyYS1zZWxlY3RcbiAgICAgICAgICBsYWJlbD1cIlNlbGVjaW9uZSBvIGVzdGFkb1wiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJGYcOnYSBhIHN1YSBTZWxlw6fDo29cIlxuICAgICAgICAgIG1vZGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICBzdGF0dXM9XCJkZWZhdWx0XCJcbiAgICAgICAgICBbYXR0ci52YWx1ZV09XCJlc3RhZG9Db250cm9sLnZhbHVlXCJcbiAgICAgICAgICAoc2VsZWN0ZWQpPVwic2VsZWN0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGN1cmEtc2VsZWN0LW9wdGlvbiBbYXR0ci52YWx1ZV09XCInJ1wiPkZhw6dhIGEgc3VhIFNlbGXDp8OjbzwvY3VyYS1zZWxlY3Qtb3B0aW9uPlxuXG4gICAgICAgICAgQGZvciAoZXN0YWRvIG9mIGVzdGFkb3MgfHwgW107IHRyYWNrIGVzdGFkbz8udmFsdWUpIHtcbiAgICAgICAgICAgIDxjdXJhLXNlbGVjdC1vcHRpb24gW2F0dHIudmFsdWVdPVwiZXN0YWRvPy52YWx1ZVwiPnt7IGVzdGFkbz8ubGFiZWwgfX08L2N1cmEtc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvY3VyYS1zZWxlY3Q+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MtY29iZXJ0dXJhXCI+XG4gICAgICA8Y3VyYS1pY29uIG5hbWU9XCJmaWx0ZXJcIiBzaXplPVwiMjBcIiBjb2xvcj1cImluZm8tZGFya1wiPjwvY3VyYS1pY29uPlxuICAgICAgPGN1cmEtaGVhZGluZyBzaXplPVwieHNtYWxsXCIgbGV2ZWw9XCI1XCIgd2VpZ2h0PVwiYm9sZFwiIGNvbG9yPVwibmV1dHJhbC1ibGFja1wiIG1hcmdpbi1ibG9jaz1cIjBcIiBsaW5lLWhlaWdodD1cIjE2cHhcIj5cbiAgICAgICAgRmlsdHJlIHBlbGEgY29iZXJ0dXJhIGRvIHNldSBwbGFub1xuICAgICAgPC9jdXJhLWhlYWRpbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MtY29udGVudFwiPlxuICAgICAgPGN1cmEtaGVhZGluZyBzaXplPVwieHNtYWxsXCIgbGV2ZWw9XCI1XCIgY29sb3I9XCJuZXV0cmFsLWJsYWNrXCIgbWFyZ2luLWJsb2NrPVwiMFwiIGxpbmUtaGVpZ2h0PVwiMTZweFwiPiBUaXBvcyBkZSBjb2JlcnR1cmEgPC9jdXJhLWhlYWRpbmc+XG4gICAgICA8Y3VyYS1wYXJhZ3JhcGggc2l6ZT1cInhzbWFsbFwiIGNvbG9yPVwibmV1dHJhbC1kYXJrXCIgbWFyZ2luLWJsb2NrPVwiMFwiPlxuICAgICAgICBWb2PDqiBwb2RlIHNlbGVjaW9uYXIgdW1hIG91IG1haXMgcG9ydGFzIGRlIGVudHJhZGEsIGRlIGFjb3JkbyBjb20gYSBjb2JlcnR1cmEgZG8gc2V1IHBsYW5vLlxuICAgICAgPC9jdXJhLXBhcmFncmFwaD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcGxhbm9zLWNvbnZlbmlvcy1jaGVja2JveGVzXCI+XG4gICAgICBAZm9yIChvcHRpb24gb2YgY29iZXJ0dXJhcyB8fCBbXTsgdHJhY2sgb3B0aW9uPy52YWx1ZSkge1xuICAgICAgICA8Y3VyYS1jaGVja2JveFxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBpY29uLWNvbG9yPVwibGlnaHRcIlxuICAgICAgICAgIFthdHRyLm5hbWVdPVwib3B0aW9uPy5sYWJlbFwiXG4gICAgICAgICAgW2F0dHIubGFiZWxdPVwib3B0aW9uPy5sYWJlbFwiXG4gICAgICAgICAgW2F0dHIudmFsdWVdPVwib3B0aW9uPy52YWx1ZVwiXG4gICAgICAgICAgW2F0dHIuY2hlY2tlZF09XCJvcHRpb24/LmNoZWNrZWRcIlxuICAgICAgICAgIChvbmNoYW5nZSk9XCJjaGVja2JveENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2N1cmEtY2hlY2tib3g+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXBsYW5vcy1jb252ZW5pb3MtYnV0dG9uc1wiPlxuICAgICAgPGN1cmEtYnV0dG9uLXRyYW5zcGFyZW50IHNpemU9XCJzbWFsbFwiIGNvbG9yPVwicHJpbWFyeVwiIGZvbnQtY29sb3I9XCJkYXJrXCIgdGV4dC1hbGlnbj1cImNlbnRlclwiIChjbGljayk9XCJyZXNldCgpXCI+XG4gICAgICAgIDxzcGFuPiBMaW1wYXIgdG9kb3Mgb3MgZmlsdHJvcyA8L3NwYW4+XG4gICAgICA8L2N1cmEtYnV0dG9uLXRyYW5zcGFyZW50PlxuXG4gICAgICA8Y3VyYS1idXR0b24gc2l6ZT1cIm1lZGl1bVwiIGNvbG9yPVwicHJpbWFyeVwiIGZvbnQtY29sb3I9XCJsaWdodFwiIGJhY2tncm91bmQ9XCJsaWdodFwiIHRleHQtYWxpZ249XCJjZW50ZXJcIiAoY2xpY2spPVwiZmlsdGVyKClcIj4gRmlsdHJhciA8L2N1cmEtYnV0dG9uPlxuICAgIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgICA8Y3VyYS1sb2FkZXItY2lyY2xlIGNvbG9yPVwicHJpbWFyeVwiIHNpemU9XCJzbWFsbFwiPiA8L2N1cmEtbG9hZGVyLWNpcmNsZT5cbiAgfVxuPC9kaXY+XG4iXX0=
|