ng-prime-tools 1.0.19 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/esm2022/lib/models/table-column.model.mjs +1 -1
- package/esm2022/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.mjs +3 -3
- package/esm2022/lib/pt-login-page/pt-login-card/pt-login-card.component.mjs +6 -3
- package/esm2022/lib/pt-login-page/pt-login-page.component.mjs +6 -3
- package/fesm2022/ng-prime-tools.mjs +12 -6
- package/fesm2022/ng-prime-tools.mjs.map +1 -1
- package/lib/models/table-column.model.d.ts +1 -0
- package/lib/models/table-column.model.d.ts.map +1 -1
- package/lib/pt-login-page/pt-login-card/pt-login-card.component.d.ts +2 -1
- package/lib/pt-login-page/pt-login-card/pt-login-card.component.d.ts.map +1 -1
- package/lib/pt-login-page/pt-login-page.component.d.ts +2 -1
- package/lib/pt-login-page/pt-login-page.component.d.ts.map +1 -1
- package/package.json +1 -1
@@ -14,6 +14,7 @@ import * as i5 from "../../pt-text-input/pt-text-input.component";
|
|
14
14
|
export class PTLoginCardComponent {
|
15
15
|
constructor(fb) {
|
16
16
|
this.fb = fb;
|
17
|
+
this.loginErrorMessage = null;
|
17
18
|
this.loginSubmit = new EventEmitter();
|
18
19
|
this.formGroup = this.fb.group({});
|
19
20
|
}
|
@@ -127,7 +128,7 @@ export class PTLoginCardComponent {
|
|
127
128
|
this.formGroup.addControl(this.loginPageConfig.passwordField.name, this.fb.control(this.loginPageConfig.login?.password, passwordValidators));
|
128
129
|
}
|
129
130
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTLoginCardComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
130
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTLoginCardComponent, isStandalone: true, selector: "pt-login-card", inputs: { loginPageConfig: "loginPageConfig" }, outputs: { loginSubmit: "loginSubmit" }, ngImport: i0, template: "<pt-card [config]=\"loginPageConfig.loginCardConfig!\">\n <!-- Logo -->\n <div class=\"logo-container\" *ngIf=\"loginPageConfig.logoUrl?.imageUrl\">\n <img\n [src]=\"loginPageConfig.logoUrl?.imageUrl\"\n [alt]=\"loginPageConfig.logoUrl?.altText || 'Logo'\"\n [style.width]=\"loginPageConfig.logoUrl?.width || '100px'\"\n [style.height]=\"loginPageConfig.logoUrl?.height || 'auto'\"\n />\n </div>\n\n <!-- Title -->\n <div class=\"title-container\">\n <h1\n [ngStyle]=\"{\n color: loginPageConfig.title?.color || '#333',\n 'font-size': loginPageConfig.title?.fontSize || '24px'\n }\"\n >\n {{ loginPageConfig.title?.text || \"Default Title\" }}\n </h1>\n </div>\n\n <!-- Form -->\n <form class=\"form-container\" [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div *ngIf=\"loginPageConfig.login?.errorMessage\" class=\"error-message\">\n {{ loginPageConfig.login?.errorMessage }}\n </div>\n\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.usernameField!\"\n ></pt-text-input>\n </div>\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.passwordField!\"\n ></pt-text-input>\n </div>\n\n <div class=\"submit-btn\">\n <pt-button [buttonConfig]=\"loginPageConfig.buttonConfig!\"></pt-button>\n </div>\n </form>\n <div class=\"login-footer\">\n {{ loginPageConfig.footer?.version }}\n <span>{{ loginPageConfig.footer?.copyright }}</span>\n </div>\n</pt-card>\n", styles: [".logo-container{display:flex;justify-content:center;align-items:center;margin-bottom:20px}.title-container{text-align:center;margin-bottom:20px}.form-container{width:100%}.field{display:flex;flex-direction:column;margin-bottom:20px;width:100%}.error-message{color:red;background-color:#ffe6e6;border:1px solid red;padding:10px;margin-bottom:10px;border-radius:5px;width:100%;text-align:center}.submit-btn{display:flex;justify-content:center;width:100%}::ng-deep pt-button{width:100%}::ng-deep .submit-btn p-button button{width:100%}.login-footer{margin-top:20px;text-align:center;font-size:.9em;color:#555}@media (max-width: 768px){pt-card{max-width:300px}.submit-btn{min-width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: PTCardModule }, { kind: "component", type: i3.PTCardComponent, selector: "pt-card", inputs: ["config"] }, { kind: "ngmodule", type: PTButtonModule }, { kind: "component", type: i4.PTButtonComponent, selector: "pt-button", inputs: ["buttonConfig"] }, { kind: "ngmodule", type: PTTextInputModule }, { kind: "component", type: i5.PTTextInputComponent, selector: "pt-text-input", inputs: ["formGroup", "formField"] }] }); }
|
131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTLoginCardComponent, isStandalone: true, selector: "pt-login-card", inputs: { loginPageConfig: "loginPageConfig", loginErrorMessage: "loginErrorMessage" }, outputs: { loginSubmit: "loginSubmit" }, ngImport: i0, template: "<pt-card [config]=\"loginPageConfig.loginCardConfig!\">\n <!-- Logo -->\n <div class=\"logo-container\" *ngIf=\"loginPageConfig.logoUrl?.imageUrl\">\n <img\n [src]=\"loginPageConfig.logoUrl?.imageUrl\"\n [alt]=\"loginPageConfig.logoUrl?.altText || 'Logo'\"\n [style.width]=\"loginPageConfig.logoUrl?.width || '100px'\"\n [style.height]=\"loginPageConfig.logoUrl?.height || 'auto'\"\n />\n </div>\n\n <!-- Title -->\n <div class=\"title-container\">\n <h1\n [ngStyle]=\"{\n color: loginPageConfig.title?.color || '#333',\n 'font-size': loginPageConfig.title?.fontSize || '24px'\n }\"\n >\n {{ loginPageConfig.title?.text || \"Default Title\" }}\n </h1>\n </div>\n <!-- Error Message -->\n <div *ngIf=\"loginErrorMessage\" class=\"error-message\">\n {{ loginErrorMessage }}\n </div>\n <!-- Form -->\n <form class=\"form-container\" [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div *ngIf=\"loginPageConfig.login?.errorMessage\" class=\"error-message\">\n {{ loginPageConfig.login?.errorMessage }}\n </div>\n\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.usernameField!\"\n ></pt-text-input>\n </div>\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.passwordField!\"\n ></pt-text-input>\n </div>\n\n <div class=\"submit-btn\">\n <pt-button [buttonConfig]=\"loginPageConfig.buttonConfig!\"></pt-button>\n </div>\n </form>\n <div class=\"login-footer\">\n {{ loginPageConfig.footer?.version }}\n <span>{{ loginPageConfig.footer?.copyright }}</span>\n </div>\n</pt-card>\n", styles: [".logo-container{display:flex;justify-content:center;align-items:center;margin-bottom:20px}.title-container{text-align:center;margin-bottom:20px}.form-container{width:100%}.field{display:flex;flex-direction:column;margin-bottom:20px;width:100%}.error-message{color:red;background-color:#ffe6e6;border:1px solid red;padding:10px;margin-bottom:10px;border-radius:5px;width:100%;text-align:center}.submit-btn{display:flex;justify-content:center;width:100%}::ng-deep pt-button{width:100%}::ng-deep .submit-btn p-button button{width:100%}.login-footer{margin-top:20px;text-align:center;font-size:.9em;color:#555}@media (max-width: 768px){pt-card{max-width:300px}.submit-btn{min-width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: PTCardModule }, { kind: "component", type: i3.PTCardComponent, selector: "pt-card", inputs: ["config"] }, { kind: "ngmodule", type: PTButtonModule }, { kind: "component", type: i4.PTButtonComponent, selector: "pt-button", inputs: ["buttonConfig"] }, { kind: "ngmodule", type: PTTextInputModule }, { kind: "component", type: i5.PTTextInputComponent, selector: "pt-text-input", inputs: ["formGroup", "formField"] }] }); }
|
131
132
|
}
|
132
133
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTLoginCardComponent, decorators: [{
|
133
134
|
type: Component,
|
@@ -138,10 +139,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
138
139
|
PTCardModule,
|
139
140
|
PTButtonModule,
|
140
141
|
PTTextInputModule,
|
141
|
-
], template: "<pt-card [config]=\"loginPageConfig.loginCardConfig!\">\n <!-- Logo -->\n <div class=\"logo-container\" *ngIf=\"loginPageConfig.logoUrl?.imageUrl\">\n <img\n [src]=\"loginPageConfig.logoUrl?.imageUrl\"\n [alt]=\"loginPageConfig.logoUrl?.altText || 'Logo'\"\n [style.width]=\"loginPageConfig.logoUrl?.width || '100px'\"\n [style.height]=\"loginPageConfig.logoUrl?.height || 'auto'\"\n />\n </div>\n\n <!-- Title -->\n <div class=\"title-container\">\n <h1\n [ngStyle]=\"{\n color: loginPageConfig.title?.color || '#333',\n 'font-size': loginPageConfig.title?.fontSize || '24px'\n }\"\n >\n {{ loginPageConfig.title?.text || \"Default Title\" }}\n </h1>\n </div>\n\n <!-- Form -->\n <form class=\"form-container\" [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div *ngIf=\"loginPageConfig.login?.errorMessage\" class=\"error-message\">\n {{ loginPageConfig.login?.errorMessage }}\n </div>\n\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.usernameField!\"\n ></pt-text-input>\n </div>\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.passwordField!\"\n ></pt-text-input>\n </div>\n\n <div class=\"submit-btn\">\n <pt-button [buttonConfig]=\"loginPageConfig.buttonConfig!\"></pt-button>\n </div>\n </form>\n <div class=\"login-footer\">\n {{ loginPageConfig.footer?.version }}\n <span>{{ loginPageConfig.footer?.copyright }}</span>\n </div>\n</pt-card>\n", styles: [".logo-container{display:flex;justify-content:center;align-items:center;margin-bottom:20px}.title-container{text-align:center;margin-bottom:20px}.form-container{width:100%}.field{display:flex;flex-direction:column;margin-bottom:20px;width:100%}.error-message{color:red;background-color:#ffe6e6;border:1px solid red;padding:10px;margin-bottom:10px;border-radius:5px;width:100%;text-align:center}.submit-btn{display:flex;justify-content:center;width:100%}::ng-deep pt-button{width:100%}::ng-deep .submit-btn p-button button{width:100%}.login-footer{margin-top:20px;text-align:center;font-size:.9em;color:#555}@media (max-width: 768px){pt-card{max-width:300px}.submit-btn{min-width:100%}}\n"] }]
|
142
|
+
], template: "<pt-card [config]=\"loginPageConfig.loginCardConfig!\">\n <!-- Logo -->\n <div class=\"logo-container\" *ngIf=\"loginPageConfig.logoUrl?.imageUrl\">\n <img\n [src]=\"loginPageConfig.logoUrl?.imageUrl\"\n [alt]=\"loginPageConfig.logoUrl?.altText || 'Logo'\"\n [style.width]=\"loginPageConfig.logoUrl?.width || '100px'\"\n [style.height]=\"loginPageConfig.logoUrl?.height || 'auto'\"\n />\n </div>\n\n <!-- Title -->\n <div class=\"title-container\">\n <h1\n [ngStyle]=\"{\n color: loginPageConfig.title?.color || '#333',\n 'font-size': loginPageConfig.title?.fontSize || '24px'\n }\"\n >\n {{ loginPageConfig.title?.text || \"Default Title\" }}\n </h1>\n </div>\n <!-- Error Message -->\n <div *ngIf=\"loginErrorMessage\" class=\"error-message\">\n {{ loginErrorMessage }}\n </div>\n <!-- Form -->\n <form class=\"form-container\" [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div *ngIf=\"loginPageConfig.login?.errorMessage\" class=\"error-message\">\n {{ loginPageConfig.login?.errorMessage }}\n </div>\n\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.usernameField!\"\n ></pt-text-input>\n </div>\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.passwordField!\"\n ></pt-text-input>\n </div>\n\n <div class=\"submit-btn\">\n <pt-button [buttonConfig]=\"loginPageConfig.buttonConfig!\"></pt-button>\n </div>\n </form>\n <div class=\"login-footer\">\n {{ loginPageConfig.footer?.version }}\n <span>{{ loginPageConfig.footer?.copyright }}</span>\n </div>\n</pt-card>\n", styles: [".logo-container{display:flex;justify-content:center;align-items:center;margin-bottom:20px}.title-container{text-align:center;margin-bottom:20px}.form-container{width:100%}.field{display:flex;flex-direction:column;margin-bottom:20px;width:100%}.error-message{color:red;background-color:#ffe6e6;border:1px solid red;padding:10px;margin-bottom:10px;border-radius:5px;width:100%;text-align:center}.submit-btn{display:flex;justify-content:center;width:100%}::ng-deep pt-button{width:100%}::ng-deep .submit-btn p-button button{width:100%}.login-footer{margin-top:20px;text-align:center;font-size:.9em;color:#555}@media (max-width: 768px){pt-card{max-width:300px}.submit-btn{min-width:100%}}\n"] }]
|
142
143
|
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { loginPageConfig: [{
|
143
144
|
type: Input
|
145
|
+
}], loginErrorMessage: [{
|
146
|
+
type: Input
|
144
147
|
}], loginSubmit: [{
|
145
148
|
type: Output
|
146
149
|
}] } });
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbG9naW4tY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWxvZ2luLXBhZ2UvcHQtbG9naW4tY2FyZC9wdC1sb2dpbi1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvcHQtbG9naW4tcGFnZS9wdC1sb2dpbi1jYXJkL3B0LWxvZ2luLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBR0wsVUFBVSxFQUNWLFdBQVcsRUFDWCxtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBZ0J4RCxNQUFNLE9BQU8sb0JBQW9CO0lBTy9CLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBTHpCLGdCQUFXLEdBQ25CLElBQUksWUFBWSxFQUFjLENBQUM7UUFLL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFD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WUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGlCQUFpQjtxQkFDbEI7Z0ZBS1EsZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9ycyxcbiAgRm9ybXNNb2R1bGUsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvZ2luTW9kZWwsIExvZ2luUGFnZUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBGb3JtSW5wdXRUeXBlRW51bSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQVENhcmRNb2R1bGUgfSBmcm9tICcuLi8uLi9wdC1jYXJkJztcbmltcG9ydCB7IFBUQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vLi4vcHQtYnV0dG9uJztcbmltcG9ydCB7IFBUVGV4dElucHV0TW9kdWxlIH0gZnJvbSAnLi4vLi4vcHQtdGV4dC1pbnB1dCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3B0LWxvZ2luLWNhcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgUFRDYXJkTW9kdWxlLFxuICAgIFBUQnV0dG9uTW9kdWxlLFxuICAgIFBUVGV4dElucHV0TW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtbG9naW4tY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LWxvZ2luLWNhcmQuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQVExvZ2luQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGxvZ2luUGFnZUNvbmZpZyE6IExvZ2luUGFnZUNvbmZpZztcbiAgQE91dHB1dCgpIGxvZ2luU3VibWl0OiBFdmVudEVtaXR0ZXI8TG9naW5Nb2RlbD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8TG9naW5Nb2RlbD4oKTtcblxuICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVEZWZhdWx0cygpO1xuICAgIHRoaXMuc2V0dXBGb3JtRmllbGRzKCk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHtcbiAgICAgIHVzZXJuYW1lOiB0aGlzLmxvZ2luUGFnZUNvbmZpZz8ubG9naW4/LnVzZXJuYW1lIHx8ICcnLFxuICAgICAgcGFzc3dvcmQ6IHRoaXMubG9naW5QYWdlQ29uZmlnPy5sb2dpbj8ucGFzc3dvcmQgfHwgJycsXG4gICAgfSk7XG4gICAgLy8gRW5hYmxlL0Rpc2FibGUgdGhlIGJ1dHRvbiBiYXNlZCBvbiBmb3JtIHZhbGlkaXR5XG4gICAgdGhpcy5mb3JtR3JvdXAuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKHN0YXR1cykgPT4ge1xuICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcuYnV0dG9uQ29uZmlnIS5kaXNhYmxlZCA9IHN0YXR1cyAhPT0gJ1ZBTElEJztcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEluaXRpYWxpemUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCBmaWVsZHMgaW4gbG9naW5QYWdlQ29uZmlnIGlmIG5vdCBzZXRcbiAgaW5pdGlhbGl6ZURlZmF1bHRzKCkge1xuICAgIC8vIEluaXRpYWxpemUgYmFja2dyb3VuZEltYWdlXG4gICAgdGhpcy5sb2dpblBhZ2VDb25maWcuYmFja2dyb3VuZEltYWdlID0ge1xuICAgICAgaW1hZ2VVcmw6IHRoaXMubG9naW5QYWdlQ29uZmlnLmJhY2tncm91bmRJbWFnZT8uaW1hZ2VVcmwgfHwgJycsXG4gICAgICB0cmFuc3BhcmVuY3lQZXJjZW50YWdlOlxuICAgICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5iYWNrZ3JvdW5kSW1hZ2U/LnRyYW5zcGFyZW5jeVBlcmNlbnRhZ2UgfHwgJzEwMCcsXG4gICAgICAuLi50aGlzLmxvZ2luUGFnZUNvbmZpZy5iYWNrZ3JvdW5kSW1hZ2UsXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgdGl0bGVcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy50aXRsZSA9IHtcbiAgICAgIHRleHQ6IHRoaXMubG9naW5QYWdlQ29uZmlnLnRpdGxlPy50ZXh0IHx8ICdMb2dpbicsXG4gICAgICBwb3NpdGlvbjogdGhpcy5sb2dpblBhZ2VDb25maWcudGl0bGU/LnBvc2l0aW9uIHx8ICdjZW50ZXInLFxuICAgICAgY29sb3I6IHRoaXMubG9naW5QYWdlQ29uZmlnLnRpdGxlPy5jb2xvciB8fCAnIzMzMycsXG4gICAgICBmb250U2l6ZTogdGhpcy5sb2dpblBhZ2VDb25maWcudGl0bGU/LmZvbnRTaXplIHx8ICcyNHB4JyxcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLnRpdGxlLFxuICAgIH07XG5cbiAgICAvLyBJbml0aWFsaXplIGxvZ29VcmxcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dvVXJsID0ge1xuICAgICAgYWx0VGV4dDogdGhpcy5sb2dpblBhZ2VDb25maWcubG9nb1VybD8uYWx0VGV4dCB8fCAnTG9nbycsXG4gICAgICBpbWFnZVVybDogdGhpcy5sb2dpblBhZ2VDb25maWcubG9nb1VybD8uaW1hZ2VVcmwgfHwgJycsXG4gICAgICB3aWR0aDogdGhpcy5sb2dpblBhZ2VDb25maWcubG9nb1VybD8ud2lkdGggfHwgJzEwMHB4JyxcbiAgICAgIGhlaWdodDogdGhpcy5sb2dpblBhZ2VDb25maWcubG9nb1VybD8uaGVpZ2h0IHx8ICdhdXRvJyxcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ29VcmwsXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgZm9vdGVyXG4gICAgdGhpcy5sb2dpblBhZ2VDb25maWcuZm9vdGVyID0ge1xuICAgICAgdmVyc2lvbjogdGhpcy5sb2dpblBhZ2VDb25maWcuZm9vdGVyPy52ZXJzaW9uIHx8ICdWMS4wJyxcbiAgICAgIGNvcHlyaWdodDpcbiAgICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcuZm9vdGVyPy5jb3B5cmlnaHQgfHwgJ1lvdXIgQ29tcGFueSDCqSAyMDI0JyxcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLmZvb3RlcixcbiAgICB9O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBsb2dpblxuICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luID0ge1xuICAgICAgdXNlcm5hbWU6IHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luPy51c2VybmFtZSB8fCAnJyxcbiAgICAgIHBhc3N3b3JkOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbj8ucGFzc3dvcmQgfHwgJycsXG4gICAgICBlcnJvck1lc3NhZ2U6IHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luPy5lcnJvck1lc3NhZ2UgfHwgJycsXG4gICAgICBlbXB0eUZpZWxkc0Vycm9yTWVzc2FnZTpcbiAgICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcubG9naW4/LmVtcHR5RmllbGRzRXJyb3JNZXNzYWdlIHx8XG4gICAgICAgIFwiVmV1aWxsZXogc2Fpc2lyIHZvdHJlIG5vbSBkJ3V0aWxpc2F0ZXVyIGV0IHZvdHJlIG1vdCBkZSBwYXNzZSAhXCIsXG4gICAgICAuLi50aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbixcbiAgICB9O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBjYXJkQ29uZmlnXG4gICAgdGhpcy5sb2dpblBhZ2VDb25maWcubG9naW5DYXJkQ29uZmlnID0ge1xuICAgICAgbm9Cb3JkZXI6IHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luQ2FyZENvbmZpZz8ubm9Cb3JkZXIgPz8gdHJ1ZSxcbiAgICAgIHdpZHRoOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbkNhcmRDb25maWc/LndpZHRoID8/ICc0MDBweCcsXG4gICAgICBwYWRkaW5nOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbkNhcmRDb25maWc/LnBhZGRpbmcgPz8gJzQwcHgnLFxuICAgICAgLi4udGhpcy5sb2dpblBhZ2VDb25maWcubG9naW5DYXJkQ29uZmlnLFxuICAgIH07XG5cbiAgICAvLyBJbml0aWFsaXplIHVzZXJuYW1lRmllbGRcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy51c2VybmFtZUZpZWxkID0ge1xuICAgICAgbmFtZTogdGhpcy5sb2dpblBhZ2VDb25maWcudXNlcm5hbWVGaWVsZD8ubmFtZSB8fCAndXNlcm5hbWUnLFxuICAgICAgbGFiZWw6IHRoaXMubG9naW5QYWdlQ29uZmlnLnVzZXJuYW1lRmllbGQ/LmxhYmVsIHx8IFwiTm9tIGQndXRpbGlzYXRldXJcIixcbiAgICAgIHJlcXVpcmVkOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy51c2VybmFtZUZpZWxkPy5yZXF1aXJlZCA/PyB0cnVlLFxuICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLnVzZXJuYW1lRmllbGQ/LnBsYWNlaG9sZGVyIHx8XG4gICAgICAgIFwiRW50cmVyIHZvdHJlIG5vbSBkJ3V0aWxpc2F0ZXVyXCIsXG4gICAgICAuLi50aGlzLmxvZ2luUGFnZUNvbmZpZy51c2VybmFtZUZpZWxkLFxuICAgIH07XG5cbiAgICAvLyBJbml0aWFsaXplIHBhc3N3b3JkRmllbGRcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5wYXNzd29yZEZpZWxkID0ge1xuICAgICAgbmFtZTogdGhpcy5sb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZD8ubmFtZSB8fCAncGFzc3dvcmQnLFxuICAgICAgbGFiZWw6IHRoaXMubG9naW5QYWdlQ29uZmlnLnBhc3N3b3JkRmllbGQ/LmxhYmVsIHx8ICdNb3QgZGUgcGFzc2UnLFxuICAgICAgcmVxdWlyZWQ6IHRoaXMubG9naW5QYWdlQ29uZmlnLnBhc3N3b3JkRmllbGQ/LnJlcXVpcmVkID8/IHRydWUsXG4gICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZD8ucGxhY2Vob2xkZXIgfHxcbiAgICAgICAgJ0VudHJlciB2b3RyZSBtb3QgZGUgcGFzc2UnLFxuICAgICAgdHlwZTpcbiAgICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZD8udHlwZSB8fCBGb3JtSW5wdXRUeXBlRW51bS5QQVNTV09SRCxcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLnBhc3N3b3JkRmllbGQsXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgYnV0dG9uQ29uZmlnXG4gICAgdGhpcy5sb2dpblBhZ2VDb25maWcuYnV0dG9uQ29uZmlnID0ge1xuICAgICAgbGFiZWw6IHRoaXMubG9naW5QYWdlQ29uZmlnLmJ1dHRvbkNvbmZpZz8ubGFiZWwgfHwgJ0xvZ2luJyxcbiAgICAgIHR5cGU6IHRoaXMubG9naW5QYWdlQ29uZmlnLmJ1dHRvbkNvbmZpZz8udHlwZSB8fCAnc3VibWl0JyxcbiAgICAgIGljb246IHRoaXMubG9naW5QYWdlQ29uZmlnLmJ1dHRvbkNvbmZpZz8uaWNvbiB8fCAncGkgcGktc2lnbi1pbicsXG4gICAgICBpY29uUG9zOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5idXR0b25Db25maWc/Lmljb25Qb3MgfHwgJ2xlZnQnLFxuICAgICAgc3R5bGVDbGFzczpcbiAgICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcuYnV0dG9uQ29uZmlnPy5zdHlsZUNsYXNzIHx8ICdwLWJ1dHRvbi1zdWNjZXNzJyxcbiAgICAgIGRpc2FibGVkOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5idXR0b25Db25maWc/LmRpc2FibGVkID8/IHRydWUsXG4gICAgICB3aWR0aDogdGhpcy5sb2dpblBhZ2VDb25maWcuYnV0dG9uQ29uZmlnPy53aWR0aCA/PyAnMTAwJScsXG4gICAgICAuLi50aGlzLmxvZ2luUGFnZUNvbmZpZy5idXR0b25Db25maWcsXG4gICAgfTtcbiAgfVxuXG4gIG9uU3VibWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgdGhpcy5sb2dpblN1Ym1pdC5lbWl0KHRoaXMuZm9ybUdyb3VwLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcubG9naW4hLmVycm9yTWVzc2FnZSA9XG4gICAgICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luPy5lbXB0eUZpZWxkc0Vycm9yTWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXR1cCBmb3JtIGZpZWxkcyB1c2luZyB0aGUgdXNlcm5hbWVGaWVsZCBhbmQgcGFzc3dvcmRGaWVsZCBmcm9tIExvZ2luUGFnZUNvbmZpZ1xuICBzZXR1cEZvcm1GaWVsZHMoKSB7XG4gICAgY29uc3QgdXNlcm5hbWVWYWxpZGF0b3JzID0gdGhpcy5sb2dpblBhZ2VDb25maWcudXNlcm5hbWVGaWVsZD8ucmVxdWlyZWRcbiAgICAgID8gW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICA6IFtdO1xuICAgIGNvbnN0IHBhc3N3b3JkVmFsaWRhdG9ycyA9IHRoaXMubG9naW5QYWdlQ29uZmlnLnBhc3N3b3JkRmllbGQ/LnJlcXVpcmVkXG4gICAgICA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgOiBbXTtcblxuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy51c2VybmFtZUZpZWxkIS5uYW1lLFxuICAgICAgdGhpcy5mYi5jb250cm9sKHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luPy51c2VybmFtZSwgdXNlcm5hbWVWYWxpZGF0b3JzKVxuICAgICk7XG4gICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLnBhc3N3b3JkRmllbGQhLm5hbWUsXG4gICAgICB0aGlzLmZiLmNvbnRyb2wodGhpcy5sb2dpblBhZ2VDb25maWcubG9naW4/LnBhc3N3b3JkLCBwYXNzd29yZFZhbGlkYXRvcnMpXG4gICAgKTtcbiAgfVxufVxuIiwiPHB0LWNhcmQgW2NvbmZpZ109XCJsb2dpblBhZ2VDb25maWcubG9naW5DYXJkQ29uZmlnIVwiPlxuICA8IS0tIExvZ28gLS0+XG4gIDxkaXYgY2xhc3M9XCJsb2dvLWNvbnRhaW5lclwiICpuZ0lmPVwibG9naW5QYWdlQ29uZmlnLmxvZ29Vcmw/LmltYWdlVXJsXCI+XG4gICAgPGltZ1xuICAgICAgW3NyY109XCJsb2dpblBhZ2VDb25maWcubG9nb1VybD8uaW1hZ2VVcmxcIlxuICAgICAgW2FsdF09XCJsb2dpblBhZ2VDb25maWcubG9nb1VybD8uYWx0VGV4dCB8fCAnTG9nbydcIlxuICAgICAgW3N0eWxlLndpZHRoXT1cImxvZ2luUGFnZUNvbmZpZy5sb2dvVXJsPy53aWR0aCB8fCAnMTAwcHgnXCJcbiAgICAgIFtzdHlsZS5oZWlnaHRdPVwibG9naW5QYWdlQ29uZmlnLmxvZ29Vcmw/LmhlaWdodCB8fCAnYXV0bydcIlxuICAgIC8+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVGl0bGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJ0aXRsZS1jb250YWluZXJcIj5cbiAgICA8aDFcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgY29sb3I6IGxvZ2luUGFnZUNvbmZpZy50aXRsZT8uY29sb3IgfHwgJyMzMzMnLFxuICAgICAgICAnZm9udC1zaXplJzogbG9naW5QYWdlQ29uZmlnLnRpdGxlPy5mb250U2l6ZSB8fCAnMjRweCdcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIHt7IGxvZ2luUGFnZUNvbmZpZy50aXRsZT8udGV4dCB8fCBcIkRlZmF1bHQgVGl0bGVcIiB9fVxuICAgIDwvaDE+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRm9ybSAtLT5cbiAgPGZvcm0gY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgICA8ZGl2ICpuZ0lmPVwibG9naW5QYWdlQ29uZmlnLmxvZ2luPy5lcnJvck1lc3NhZ2VcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgIHt7IGxvZ2luUGFnZUNvbmZpZy5sb2dpbj8uZXJyb3JNZXNzYWdlIH19XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgIDxwdC10ZXh0LWlucHV0XG4gICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgICAgW2Zvcm1GaWVsZF09XCJsb2dpblBhZ2VDb25maWcudXNlcm5hbWVGaWVsZCFcIlxuICAgICAgPjwvcHQtdGV4dC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgIDxwdC10ZXh0LWlucHV0XG4gICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgICAgW2Zvcm1GaWVsZF09XCJsb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZCFcIlxuICAgICAgPjwvcHQtdGV4dC1pbnB1dD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJzdWJtaXQtYnRuXCI+XG4gICAgICA8cHQtYnV0dG9uIFtidXR0b25Db25maWddPVwibG9naW5QYWdlQ29uZmlnLmJ1dHRvbkNvbmZpZyFcIj48L3B0LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuICA8ZGl2IGNsYXNzPVwibG9naW4tZm9vdGVyXCI+XG4gICAge3sgbG9naW5QYWdlQ29uZmlnLmZvb3Rlcj8udmVyc2lvbiB9fVxuICAgIDxzcGFuPnt7IGxvZ2luUGFnZUNvbmZpZy5mb290ZXI/LmNvcHlyaWdodCB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L3B0LWNhcmQ+XG4iXX0=
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbG9naW4tY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWxvZ2luLXBhZ2UvcHQtbG9naW4tY2FyZC9wdC1sb2dpbi1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvcHQtbG9naW4tcGFnZS9wdC1sb2dpbi1jYXJkL3B0LWxvZ2luLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBR0wsVUFBVSxFQUNWLFdBQVcsRUFDWCxtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBZ0J4RCxNQUFNLE9BQU8sb0JBQW9CO0lBUS9CLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBTjFCLHNCQUFpQixHQUFrQixJQUFJLENBQUM7UUFDdkMsZ0JBQVcsR0FDbkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUsvQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxRQUFRO1FB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Q0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsaUJBQWlCO3FCQUNsQjtnRkFLUSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9ycyxcbiAgRm9ybXNNb2R1bGUsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvZ2luTW9kZWwsIExvZ2luUGFnZUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBGb3JtSW5wdXRUeXBlRW51bSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQVENhcmRNb2R1bGUgfSBmcm9tICcuLi8uLi9wdC1jYXJkJztcbmltcG9ydCB7IFBUQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vLi4vcHQtYnV0dG9uJztcbmltcG9ydCB7IFBUVGV4dElucHV0TW9kdWxlIH0gZnJvbSAnLi4vLi4vcHQtdGV4dC1pbnB1dCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3B0LWxvZ2luLWNhcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgUFRDYXJkTW9kdWxlLFxuICAgIFBUQnV0dG9uTW9kdWxlLFxuICAgIFBUVGV4dElucHV0TW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtbG9naW4tY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LWxvZ2luLWNhcmQuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQVExvZ2luQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGxvZ2luUGFnZUNvbmZpZyE6IExvZ2luUGFnZUNvbmZpZztcbiAgQElucHV0KCkgbG9naW5FcnJvck1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBAT3V0cHV0KCkgbG9naW5TdWJtaXQ6IEV2ZW50RW1pdHRlcjxMb2dpbk1vZGVsPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxMb2dpbk1vZGVsPigpO1xuXG4gIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZURlZmF1bHRzKCk7XG4gICAgdGhpcy5zZXR1cEZvcm1GaWVsZHMoKTtcblxuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAgdXNlcm5hbWU6IHRoaXMubG9naW5QYWdlQ29uZmlnPy5sb2dpbj8udXNlcm5hbWUgfHwgJycsXG4gICAgICBwYXNzd29yZDogdGhpcy5sb2dpblBhZ2VDb25maWc/LmxvZ2luPy5wYXNzd29yZCB8fCAnJyxcbiAgICB9KTtcbiAgICAvLyBFbmFibGUvRGlzYWJsZSB0aGUgYnV0dG9uIGJhc2VkIG9uIGZvcm0gdmFsaWRpdHlcbiAgICB0aGlzLmZvcm1Hcm91cC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5idXR0b25Db25maWchLmRpc2FibGVkID0gc3RhdHVzICE9PSAnVkFMSUQnO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gSW5pdGlhbGl6ZSBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIGZpZWxkcyBpbiBsb2dpblBhZ2VDb25maWcgaWYgbm90IHNldFxuICBpbml0aWFsaXplRGVmYXVsdHMoKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBiYWNrZ3JvdW5kSW1hZ2VcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5iYWNrZ3JvdW5kSW1hZ2UgPSB7XG4gICAgICBpbWFnZVVybDogdGhpcy5sb2dpblBhZ2VDb25maWcuYmFja2dyb3VuZEltYWdlPy5pbWFnZVVybCB8fCAnJyxcbiAgICAgIHRyYW5zcGFyZW5jeVBlcmNlbnRhZ2U6XG4gICAgICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLmJhY2tncm91bmRJbWFnZT8udHJhbnNwYXJlbmN5UGVyY2VudGFnZSB8fCAnMTAwJyxcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLmJhY2tncm91bmRJbWFnZSxcbiAgICB9O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aXRsZVxuICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLnRpdGxlID0ge1xuICAgICAgdGV4dDogdGhpcy5sb2dpblBhZ2VDb25maWcudGl0bGU/LnRleHQgfHwgJ0xvZ2luJyxcbiAgICAgIHBvc2l0aW9uOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy50aXRsZT8ucG9zaXRpb24gfHwgJ2NlbnRlcicsXG4gICAgICBjb2xvcjogdGhpcy5sb2dpblBhZ2VDb25maWcudGl0bGU/LmNvbG9yIHx8ICcjMzMzJyxcbiAgICAgIGZvbnRTaXplOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy50aXRsZT8uZm9udFNpemUgfHwgJzI0cHgnLFxuICAgICAgLi4udGhpcy5sb2dpblBhZ2VDb25maWcudGl0bGUsXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgbG9nb1VybFxuICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ29VcmwgPSB7XG4gICAgICBhbHRUZXh0OiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dvVXJsPy5hbHRUZXh0IHx8ICdMb2dvJyxcbiAgICAgIGltYWdlVXJsOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dvVXJsPy5pbWFnZVVybCB8fCAnJyxcbiAgICAgIHdpZHRoOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dvVXJsPy53aWR0aCB8fCAnMTAwcHgnLFxuICAgICAgaGVpZ2h0OiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dvVXJsPy5oZWlnaHQgfHwgJ2F1dG8nLFxuICAgICAgLi4udGhpcy5sb2dpblBhZ2VDb25maWcubG9nb1VybCxcbiAgICB9O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBmb290ZXJcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5mb290ZXIgPSB7XG4gICAgICB2ZXJzaW9uOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5mb290ZXI/LnZlcnNpb24gfHwgJ1YxLjAnLFxuICAgICAgY29weXJpZ2h0OlxuICAgICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5mb290ZXI/LmNvcHlyaWdodCB8fCAnWW91ciBDb21wYW55IMKpIDIwMjQnLFxuICAgICAgLi4udGhpcy5sb2dpblBhZ2VDb25maWcuZm9vdGVyLFxuICAgIH07XG5cbiAgICAvLyBJbml0aWFsaXplIGxvZ2luXG4gICAgdGhpcy5sb2dpblBhZ2VDb25maWcubG9naW4gPSB7XG4gICAgICB1c2VybmFtZTogdGhpcy5sb2dpblBhZ2VDb25maWcubG9naW4/LnVzZXJuYW1lIHx8ICcnLFxuICAgICAgcGFzc3dvcmQ6IHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luPy5wYXNzd29yZCB8fCAnJyxcbiAgICAgIGVycm9yTWVzc2FnZTogdGhpcy5sb2dpblBhZ2VDb25maWcubG9naW4/LmVycm9yTWVzc2FnZSB8fCAnJyxcbiAgICAgIGVtcHR5RmllbGRzRXJyb3JNZXNzYWdlOlxuICAgICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbj8uZW1wdHlGaWVsZHNFcnJvck1lc3NhZ2UgfHxcbiAgICAgICAgXCJWZXVpbGxleiBzYWlzaXIgdm90cmUgbm9tIGQndXRpbGlzYXRldXIgZXQgdm90cmUgbW90IGRlIHBhc3NlICFcIixcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luLFxuICAgIH07XG5cbiAgICAvLyBJbml0aWFsaXplIGNhcmRDb25maWdcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbkNhcmRDb25maWcgPSB7XG4gICAgICBub0JvcmRlcjogdGhpcy5sb2dpblBhZ2VDb25maWcubG9naW5DYXJkQ29uZmlnPy5ub0JvcmRlciA/PyB0cnVlLFxuICAgICAgd2lkdGg6IHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luQ2FyZENvbmZpZz8ud2lkdGggPz8gJzQwMHB4JyxcbiAgICAgIHBhZGRpbmc6IHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luQ2FyZENvbmZpZz8ucGFkZGluZyA/PyAnNDBweCcsXG4gICAgICAuLi50aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbkNhcmRDb25maWcsXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgdXNlcm5hbWVGaWVsZFxuICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLnVzZXJuYW1lRmllbGQgPSB7XG4gICAgICBuYW1lOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy51c2VybmFtZUZpZWxkPy5uYW1lIHx8ICd1c2VybmFtZScsXG4gICAgICBsYWJlbDogdGhpcy5sb2dpblBhZ2VDb25maWcudXNlcm5hbWVGaWVsZD8ubGFiZWwgfHwgXCJOb20gZCd1dGlsaXNhdGV1clwiLFxuICAgICAgcmVxdWlyZWQ6IHRoaXMubG9naW5QYWdlQ29uZmlnLnVzZXJuYW1lRmllbGQ/LnJlcXVpcmVkID8/IHRydWUsXG4gICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcudXNlcm5hbWVGaWVsZD8ucGxhY2Vob2xkZXIgfHxcbiAgICAgICAgXCJFbnRyZXIgdm90cmUgbm9tIGQndXRpbGlzYXRldXJcIixcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLnVzZXJuYW1lRmllbGQsXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgcGFzc3dvcmRGaWVsZFxuICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLnBhc3N3b3JkRmllbGQgPSB7XG4gICAgICBuYW1lOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5wYXNzd29yZEZpZWxkPy5uYW1lIHx8ICdwYXNzd29yZCcsXG4gICAgICBsYWJlbDogdGhpcy5sb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZD8ubGFiZWwgfHwgJ01vdCBkZSBwYXNzZScsXG4gICAgICByZXF1aXJlZDogdGhpcy5sb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZD8ucmVxdWlyZWQgPz8gdHJ1ZSxcbiAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5wYXNzd29yZEZpZWxkPy5wbGFjZWhvbGRlciB8fFxuICAgICAgICAnRW50cmVyIHZvdHJlIG1vdCBkZSBwYXNzZScsXG4gICAgICB0eXBlOlxuICAgICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5wYXNzd29yZEZpZWxkPy50eXBlIHx8IEZvcm1JbnB1dFR5cGVFbnVtLlBBU1NXT1JELFxuICAgICAgLi4udGhpcy5sb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZCxcbiAgICB9O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBidXR0b25Db25maWdcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5idXR0b25Db25maWcgPSB7XG4gICAgICBsYWJlbDogdGhpcy5sb2dpblBhZ2VDb25maWcuYnV0dG9uQ29uZmlnPy5sYWJlbCB8fCAnTG9naW4nLFxuICAgICAgdHlwZTogdGhpcy5sb2dpblBhZ2VDb25maWcuYnV0dG9uQ29uZmlnPy50eXBlIHx8ICdzdWJtaXQnLFxuICAgICAgaWNvbjogdGhpcy5sb2dpblBhZ2VDb25maWcuYnV0dG9uQ29uZmlnPy5pY29uIHx8ICdwaSBwaS1zaWduLWluJyxcbiAgICAgIGljb25Qb3M6IHRoaXMubG9naW5QYWdlQ29uZmlnLmJ1dHRvbkNvbmZpZz8uaWNvblBvcyB8fCAnbGVmdCcsXG4gICAgICBzdHlsZUNsYXNzOlxuICAgICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5idXR0b25Db25maWc/LnN0eWxlQ2xhc3MgfHwgJ3AtYnV0dG9uLXN1Y2Nlc3MnLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMubG9naW5QYWdlQ29uZmlnLmJ1dHRvbkNvbmZpZz8uZGlzYWJsZWQgPz8gdHJ1ZSxcbiAgICAgIHdpZHRoOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5idXR0b25Db25maWc/LndpZHRoID8/ICcxMDAlJyxcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLmJ1dHRvbkNvbmZpZyxcbiAgICB9O1xuICB9XG5cbiAgb25TdWJtaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLnZhbGlkKSB7XG4gICAgICB0aGlzLmxvZ2luU3VibWl0LmVtaXQodGhpcy5mb3JtR3JvdXAudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbiEuZXJyb3JNZXNzYWdlID1cbiAgICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcubG9naW4/LmVtcHR5RmllbGRzRXJyb3JNZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldHVwIGZvcm0gZmllbGRzIHVzaW5nIHRoZSB1c2VybmFtZUZpZWxkIGFuZCBwYXNzd29yZEZpZWxkIGZyb20gTG9naW5QYWdlQ29uZmlnXG4gIHNldHVwRm9ybUZpZWxkcygpIHtcbiAgICBjb25zdCB1c2VybmFtZVZhbGlkYXRvcnMgPSB0aGlzLmxvZ2luUGFnZUNvbmZpZy51c2VybmFtZUZpZWxkPy5yZXF1aXJlZFxuICAgICAgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIDogW107XG4gICAgY29uc3QgcGFzc3dvcmRWYWxpZGF0b3JzID0gdGhpcy5sb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZD8ucmVxdWlyZWRcbiAgICAgID8gW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICA6IFtdO1xuXG4gICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLnVzZXJuYW1lRmllbGQhLm5hbWUsXG4gICAgICB0aGlzLmZiLmNvbnRyb2wodGhpcy5sb2dpblBhZ2VDb25maWcubG9naW4/LnVzZXJuYW1lLCB1c2VybmFtZVZhbGlkYXRvcnMpXG4gICAgKTtcbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZCEubmFtZSxcbiAgICAgIHRoaXMuZmIuY29udHJvbCh0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbj8ucGFzc3dvcmQsIHBhc3N3b3JkVmFsaWRhdG9ycylcbiAgICApO1xuICB9XG59XG4iLCI8cHQtY2FyZCBbY29uZmlnXT1cImxvZ2luUGFnZUNvbmZpZy5sb2dpbkNhcmRDb25maWchXCI+XG4gIDwhLS0gTG9nbyAtLT5cbiAgPGRpdiBjbGFzcz1cImxvZ28tY29udGFpbmVyXCIgKm5nSWY9XCJsb2dpblBhZ2VDb25maWcubG9nb1VybD8uaW1hZ2VVcmxcIj5cbiAgICA8aW1nXG4gICAgICBbc3JjXT1cImxvZ2luUGFnZUNvbmZpZy5sb2dvVXJsPy5pbWFnZVVybFwiXG4gICAgICBbYWx0XT1cImxvZ2luUGFnZUNvbmZpZy5sb2dvVXJsPy5hbHRUZXh0IHx8ICdMb2dvJ1wiXG4gICAgICBbc3R5bGUud2lkdGhdPVwibG9naW5QYWdlQ29uZmlnLmxvZ29Vcmw/LndpZHRoIHx8ICcxMDBweCdcIlxuICAgICAgW3N0eWxlLmhlaWdodF09XCJsb2dpblBhZ2VDb25maWcubG9nb1VybD8uaGVpZ2h0IHx8ICdhdXRvJ1wiXG4gICAgLz5cbiAgPC9kaXY+XG5cbiAgPCEtLSBUaXRsZSAtLT5cbiAgPGRpdiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiPlxuICAgIDxoMVxuICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICBjb2xvcjogbG9naW5QYWdlQ29uZmlnLnRpdGxlPy5jb2xvciB8fCAnIzMzMycsXG4gICAgICAgICdmb250LXNpemUnOiBsb2dpblBhZ2VDb25maWcudGl0bGU/LmZvbnRTaXplIHx8ICcyNHB4J1xuICAgICAgfVwiXG4gICAgPlxuICAgICAge3sgbG9naW5QYWdlQ29uZmlnLnRpdGxlPy50ZXh0IHx8IFwiRGVmYXVsdCBUaXRsZVwiIH19XG4gICAgPC9oMT5cbiAgPC9kaXY+XG4gIDwhLS0gRXJyb3IgTWVzc2FnZSAtLT5cbiAgPGRpdiAqbmdJZj1cImxvZ2luRXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAge3sgbG9naW5FcnJvck1lc3NhZ2UgfX1cbiAgPC9kaXY+XG4gIDwhLS0gRm9ybSAtLT5cbiAgPGZvcm0gY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgICA8ZGl2ICpuZ0lmPVwibG9naW5QYWdlQ29uZmlnLmxvZ2luPy5lcnJvck1lc3NhZ2VcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgIHt7IGxvZ2luUGFnZUNvbmZpZy5sb2dpbj8uZXJyb3JNZXNzYWdlIH19XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgIDxwdC10ZXh0LWlucHV0XG4gICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgICAgW2Zvcm1GaWVsZF09XCJsb2dpblBhZ2VDb25maWcudXNlcm5hbWVGaWVsZCFcIlxuICAgICAgPjwvcHQtdGV4dC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgIDxwdC10ZXh0LWlucHV0XG4gICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgICAgW2Zvcm1GaWVsZF09XCJsb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZCFcIlxuICAgICAgPjwvcHQtdGV4dC1pbnB1dD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJzdWJtaXQtYnRuXCI+XG4gICAgICA8cHQtYnV0dG9uIFtidXR0b25Db25maWddPVwibG9naW5QYWdlQ29uZmlnLmJ1dHRvbkNvbmZpZyFcIj48L3B0LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuICA8ZGl2IGNsYXNzPVwibG9naW4tZm9vdGVyXCI+XG4gICAge3sgbG9naW5QYWdlQ29uZmlnLmZvb3Rlcj8udmVyc2lvbiB9fVxuICAgIDxzcGFuPnt7IGxvZ2luUGFnZUNvbmZpZy5mb290ZXI/LmNvcHlyaWdodCB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L3B0LWNhcmQ+XG4iXX0=
|
@@ -5,6 +5,7 @@ import * as i2 from "../pt-card/pt-card.component";
|
|
5
5
|
import * as i3 from "./pt-login-card/pt-login-card.component";
|
6
6
|
export class PTLoginPageComponent {
|
7
7
|
constructor() {
|
8
|
+
this.loginErrorMessage = null;
|
8
9
|
this.loginSubmit = new EventEmitter();
|
9
10
|
this.defaultCardConfig = {
|
10
11
|
borderRadius: '0',
|
@@ -38,14 +39,16 @@ export class PTLoginPageComponent {
|
|
38
39
|
this.loginSubmit.emit(loginModel);
|
39
40
|
}
|
40
41
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTLoginPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
41
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTLoginPageComponent, selector: "pt-login-page", inputs: { loginPageConfig: "loginPageConfig" }, outputs: { loginSubmit: "loginSubmit" }, ngImport: i0, template: "<!-- Center Position -->\n<ng-container>\n <div *ngIf=\"loginPageConfig.position === 'center'\" class=\"center-container\">\n <pt-card\n *ngIf=\"loginPageConfig.centerCardConfig\"\n [config]=\"loginPageConfig.centerCardConfig\"\n >\n <pt-login-card\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n <!-- Left and Right Positions -->\n <div\n *ngIf=\"\n loginPageConfig.position === 'left' ||\n loginPageConfig.position === 'right'\n \"\n class=\"left-right-container\"\n >\n <!-- Left Card -->\n <pt-card\n *ngIf=\"loginPageConfig.leftCardConfig\"\n [config]=\"loginPageConfig.leftCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'left'\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n\n <!-- Right Card -->\n <pt-card\n *ngIf=\"loginPageConfig.rightCardConfig\"\n [config]=\"loginPageConfig.rightCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'right'\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n</ng-container>\n", styles: [".left-right-container{display:flex;height:100vh;width:100%}.left-right-container pt-card{flex:1;max-width:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.center-container{display:flex;justify-content:center;align-items:center;height:100vh;width:100vw;margin:0;padding:0;box-sizing:border-box;overflow:hidden}.center-container pt-card{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;box-sizing:border-box}.center-container pt-card pt-login-card{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;padding:16px;box-sizing:border-box;margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PTCardComponent, selector: "pt-card", inputs: ["config"] }, { kind: "component", type: i3.PTLoginCardComponent, selector: "pt-login-card", inputs: ["loginPageConfig"], outputs: ["loginSubmit"] }] }); }
|
42
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTLoginPageComponent, selector: "pt-login-page", inputs: { loginPageConfig: "loginPageConfig", loginErrorMessage: "loginErrorMessage" }, outputs: { loginSubmit: "loginSubmit" }, ngImport: i0, template: "<!-- Center Position -->\n<ng-container>\n <div *ngIf=\"loginPageConfig.position === 'center'\" class=\"center-container\">\n <pt-card\n *ngIf=\"loginPageConfig.centerCardConfig\"\n [config]=\"loginPageConfig.centerCardConfig\"\n >\n <pt-login-card\n [loginErrorMessage]=\"loginErrorMessage\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n <!-- Left and Right Positions -->\n <div\n *ngIf=\"\n loginPageConfig.position === 'left' ||\n loginPageConfig.position === 'right'\n \"\n class=\"left-right-container\"\n >\n <!-- Left Card -->\n <pt-card\n *ngIf=\"loginPageConfig.leftCardConfig\"\n [config]=\"loginPageConfig.leftCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'left'\"\n [loginErrorMessage]=\"loginErrorMessage\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n\n <!-- Right Card -->\n <pt-card\n *ngIf=\"loginPageConfig.rightCardConfig\"\n [config]=\"loginPageConfig.rightCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'right'\"\n [loginErrorMessage]=\"loginErrorMessage\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n</ng-container>\n", styles: [".left-right-container{display:flex;height:100vh;width:100%}.left-right-container pt-card{flex:1;max-width:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.center-container{display:flex;justify-content:center;align-items:center;height:100vh;width:100vw;margin:0;padding:0;box-sizing:border-box;overflow:hidden}.center-container pt-card{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;box-sizing:border-box}.center-container pt-card pt-login-card{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;padding:16px;box-sizing:border-box;margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PTCardComponent, selector: "pt-card", inputs: ["config"] }, { kind: "component", type: i3.PTLoginCardComponent, selector: "pt-login-card", inputs: ["loginPageConfig", "loginErrorMessage"], outputs: ["loginSubmit"] }] }); }
|
42
43
|
}
|
43
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTLoginPageComponent, decorators: [{
|
44
45
|
type: Component,
|
45
|
-
args: [{ selector: 'pt-login-page', template: "<!-- Center Position -->\n<ng-container>\n <div *ngIf=\"loginPageConfig.position === 'center'\" class=\"center-container\">\n <pt-card\n *ngIf=\"loginPageConfig.centerCardConfig\"\n [config]=\"loginPageConfig.centerCardConfig\"\n >\n <pt-login-card\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n <!-- Left and Right Positions -->\n <div\n *ngIf=\"\n loginPageConfig.position === 'left' ||\n loginPageConfig.position === 'right'\n \"\n class=\"left-right-container\"\n >\n <!-- Left Card -->\n <pt-card\n *ngIf=\"loginPageConfig.leftCardConfig\"\n [config]=\"loginPageConfig.leftCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'left'\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n\n <!-- Right Card -->\n <pt-card\n *ngIf=\"loginPageConfig.rightCardConfig\"\n [config]=\"loginPageConfig.rightCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'right'\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n</ng-container>\n", styles: [".left-right-container{display:flex;height:100vh;width:100%}.left-right-container pt-card{flex:1;max-width:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.center-container{display:flex;justify-content:center;align-items:center;height:100vh;width:100vw;margin:0;padding:0;box-sizing:border-box;overflow:hidden}.center-container pt-card{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;box-sizing:border-box}.center-container pt-card pt-login-card{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;padding:16px;box-sizing:border-box;margin:0}\n"] }]
|
46
|
+
args: [{ selector: 'pt-login-page', template: "<!-- Center Position -->\n<ng-container>\n <div *ngIf=\"loginPageConfig.position === 'center'\" class=\"center-container\">\n <pt-card\n *ngIf=\"loginPageConfig.centerCardConfig\"\n [config]=\"loginPageConfig.centerCardConfig\"\n >\n <pt-login-card\n [loginErrorMessage]=\"loginErrorMessage\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n <!-- Left and Right Positions -->\n <div\n *ngIf=\"\n loginPageConfig.position === 'left' ||\n loginPageConfig.position === 'right'\n \"\n class=\"left-right-container\"\n >\n <!-- Left Card -->\n <pt-card\n *ngIf=\"loginPageConfig.leftCardConfig\"\n [config]=\"loginPageConfig.leftCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'left'\"\n [loginErrorMessage]=\"loginErrorMessage\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n\n <!-- Right Card -->\n <pt-card\n *ngIf=\"loginPageConfig.rightCardConfig\"\n [config]=\"loginPageConfig.rightCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'right'\"\n [loginErrorMessage]=\"loginErrorMessage\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n</ng-container>\n", styles: [".left-right-container{display:flex;height:100vh;width:100%}.left-right-container pt-card{flex:1;max-width:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.center-container{display:flex;justify-content:center;align-items:center;height:100vh;width:100vw;margin:0;padding:0;box-sizing:border-box;overflow:hidden}.center-container pt-card{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;box-sizing:border-box}.center-container pt-card pt-login-card{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;padding:16px;box-sizing:border-box;margin:0}\n"] }]
|
46
47
|
}], propDecorators: { loginPageConfig: [{
|
47
48
|
type: Input
|
49
|
+
}], loginErrorMessage: [{
|
50
|
+
type: Input
|
48
51
|
}], loginSubmit: [{
|
49
52
|
type: Output
|
50
53
|
}] } });
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbG9naW4tcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWxvZ2luLXBhZ2UvcHQtbG9naW4tcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWxvZ2luLXBhZ2UvcHQtbG9naW4tcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVEvRSxNQUFNLE9BQU8sb0JBQW9CO0lBTGpDO1FBT1csc0JBQWlCLEdBQWtCLElBQUksQ0FBQztRQUN2QyxnQkFBVyxHQUNuQixJQUFJLFlBQVksRUFBYyxDQUFDO1FBRXpCLHNCQUFpQixHQUFlO1lBQ3RDLFlBQVksRUFBRSxHQUFHO1lBQ2pCLE1BQU0sRUFBRSxHQUFHO1lBQ1gsS0FBSyxFQUFFLE1BQU07WUFDYixNQUFNLEVBQUUsTUFBTTtZQUNkLFFBQVEsRUFBRSxJQUFJO1lBQ2QsWUFBWSxFQUFFLFFBQVE7WUFDdEIsZ0JBQWdCLEVBQUUsUUFBUTtTQUMzQixDQUFDO0tBa0NIO0lBaENDLFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLHFDQUFxQztRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQ3RDLENBQUM7UUFFRixtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQ3BDLENBQUM7UUFFRixvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQ3JDLENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQW1CO1FBQ3ZDLE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQyxpQkFBaUI7WUFDekIsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsVUFBc0I7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDOytHQS9DVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixzTENSakMsaS9DQWlEQTs7NEZEekNhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxlQUFlOzhCQUtoQixlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9naW5Nb2RlbCwgTG9naW5QYWdlQ29uZmlnLCBDYXJkQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtbG9naW4tcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wdC1sb2dpbi1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHQtbG9naW4tcGFnZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBUTG9naW5QYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbG9naW5QYWdlQ29uZmlnITogTG9naW5QYWdlQ29uZmlnO1xuICBASW5wdXQoKSBsb2dpbkVycm9yTWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBPdXRwdXQoKSBsb2dpblN1Ym1pdDogRXZlbnRFbWl0dGVyPExvZ2luTW9kZWw+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPExvZ2luTW9kZWw+KCk7XG5cbiAgcHJpdmF0ZSBkZWZhdWx0Q2FyZENvbmZpZzogQ2FyZENvbmZpZyA9IHtcbiAgICBib3JkZXJSYWRpdXM6ICcwJyxcbiAgICBtYXJnaW46ICcwJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICAgIG5vQm9yZGVyOiB0cnVlLFxuICAgIGFsaWduQ29udGVudDogJ2NlbnRlcicsXG4gICAgYWxpZ25Cb2R5Q29udGVudDogJ2NlbnRlcicsXG4gIH07XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseURlZmF1bHRDb25maWdzKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdENvbmZpZ3MoKTogdm9pZCB7XG4gICAgLy8gQXBwbHkgZGVmYXVsdHMgdG8gY2VudGVyQ2FyZENvbmZpZ1xuICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLmNlbnRlckNhcmRDb25maWcgPSB0aGlzLmFwcGx5RGVmYXVsdHMoXG4gICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5jZW50ZXJDYXJkQ29uZmlnXG4gICAgKTtcblxuICAgIC8vIEFwcGx5IGRlZmF1bHRzIHRvIGxlZnRDYXJkQ29uZmlnXG4gICAgdGhpcy5sb2dpblBhZ2VDb25maWcubGVmdENhcmRDb25maWcgPSB0aGlzLmFwcGx5RGVmYXVsdHMoXG4gICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sZWZ0Q2FyZENvbmZpZ1xuICAgICk7XG5cbiAgICAvLyBBcHBseSBkZWZhdWx0cyB0byByaWdodENhcmRDb25maWdcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5yaWdodENhcmRDb25maWcgPSB0aGlzLmFwcGx5RGVmYXVsdHMoXG4gICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5yaWdodENhcmRDb25maWdcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURlZmF1bHRzKGNvbmZpZz86IENhcmRDb25maWcpOiBDYXJkQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5kZWZhdWx0Q2FyZENvbmZpZyxcbiAgICAgIC4uLihjb25maWcgfHwge30pLFxuICAgIH07XG4gIH1cblxuICBvbkxvZ2luU3VibWl0KGxvZ2luTW9kZWw6IExvZ2luTW9kZWwpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnTG9naW4gU3VibWl0dGVkOicsIGxvZ2luTW9kZWwpO1xuICAgIHRoaXMubG9naW5TdWJtaXQuZW1pdChsb2dpbk1vZGVsKTtcbiAgfVxufVxuIiwiPCEtLSBDZW50ZXIgUG9zaXRpb24gLS0+XG48bmctY29udGFpbmVyPlxuICA8ZGl2ICpuZ0lmPVwibG9naW5QYWdlQ29uZmlnLnBvc2l0aW9uID09PSAnY2VudGVyJ1wiIGNsYXNzPVwiY2VudGVyLWNvbnRhaW5lclwiPlxuICAgIDxwdC1jYXJkXG4gICAgICAqbmdJZj1cImxvZ2luUGFnZUNvbmZpZy5jZW50ZXJDYXJkQ29uZmlnXCJcbiAgICAgIFtjb25maWddPVwibG9naW5QYWdlQ29uZmlnLmNlbnRlckNhcmRDb25maWdcIlxuICAgID5cbiAgICAgIDxwdC1sb2dpbi1jYXJkXG4gICAgICAgIFtsb2dpbkVycm9yTWVzc2FnZV09XCJsb2dpbkVycm9yTWVzc2FnZVwiXG4gICAgICAgIFtsb2dpblBhZ2VDb25maWddPVwibG9naW5QYWdlQ29uZmlnXCJcbiAgICAgICAgKGxvZ2luU3VibWl0KT1cIm9uTG9naW5TdWJtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9wdC1sb2dpbi1jYXJkPlxuICAgIDwvcHQtY2FyZD5cbiAgPC9kaXY+XG4gIDwhLS0gTGVmdCBhbmQgUmlnaHQgUG9zaXRpb25zIC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJcbiAgICAgIGxvZ2luUGFnZUNvbmZpZy5wb3NpdGlvbiA9PT0gJ2xlZnQnIHx8XG4gICAgICBsb2dpblBhZ2VDb25maWcucG9zaXRpb24gPT09ICdyaWdodCdcbiAgICBcIlxuICAgIGNsYXNzPVwibGVmdC1yaWdodC1jb250YWluZXJcIlxuICA+XG4gICAgPCEtLSBMZWZ0IENhcmQgLS0+XG4gICAgPHB0LWNhcmRcbiAgICAgICpuZ0lmPVwibG9naW5QYWdlQ29uZmlnLmxlZnRDYXJkQ29uZmlnXCJcbiAgICAgIFtjb25maWddPVwibG9naW5QYWdlQ29uZmlnLmxlZnRDYXJkQ29uZmlnXCJcbiAgICA+XG4gICAgICA8cHQtbG9naW4tY2FyZFxuICAgICAgICAqbmdJZj1cImxvZ2luUGFnZUNvbmZpZy5wb3NpdGlvbiA9PT0gJ2xlZnQnXCJcbiAgICAgICAgW2xvZ2luRXJyb3JNZXNzYWdlXT1cImxvZ2luRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgW2xvZ2luUGFnZUNvbmZpZ109XCJsb2dpblBhZ2VDb25maWdcIlxuICAgICAgICAobG9naW5TdWJtaXQpPVwib25Mb2dpblN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgID48L3B0LWxvZ2luLWNhcmQ+XG4gICAgPC9wdC1jYXJkPlxuXG4gICAgPCEtLSBSaWdodCBDYXJkIC0tPlxuICAgIDxwdC1jYXJkXG4gICAgICAqbmdJZj1cImxvZ2luUGFnZUNvbmZpZy5yaWdodENhcmRDb25maWdcIlxuICAgICAgW2NvbmZpZ109XCJsb2dpblBhZ2VDb25maWcucmlnaHRDYXJkQ29uZmlnXCJcbiAgICA+XG4gICAgICA8cHQtbG9naW4tY2FyZFxuICAgICAgICAqbmdJZj1cImxvZ2luUGFnZUNvbmZpZy5wb3NpdGlvbiA9PT0gJ3JpZ2h0J1wiXG4gICAgICAgIFtsb2dpbkVycm9yTWVzc2FnZV09XCJsb2dpbkVycm9yTWVzc2FnZVwiXG4gICAgICAgIFtsb2dpblBhZ2VDb25maWddPVwibG9naW5QYWdlQ29uZmlnXCJcbiAgICAgICAgKGxvZ2luU3VibWl0KT1cIm9uTG9naW5TdWJtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9wdC1sb2dpbi1jYXJkPlxuICAgIDwvcHQtY2FyZD5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|