@ksremp/ngx-ksremp-app-lib 1.0.19 → 1.0.20
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/bank-details/bank-details.component.mjs +17 -22
- package/fesm2022/ksremp-ngx-ksremp-app-lib.mjs +16 -21
- package/fesm2022/ksremp-ngx-ksremp-app-lib.mjs.map +1 -1
- package/lib/components/bank-details/bank-details.component.d.ts +1 -3
- package/lib/components/bank-details/bank-details.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -51,22 +51,17 @@ export class BankDetailsComponent {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
ngOnInit() {
|
|
54
|
-
console.log("inside onInit bankdetailscomponent");
|
|
55
54
|
this.bankDetailsForm = this.formBuilder.group({
|
|
56
55
|
'nameOnAccount': [null, Validators.compose([Validators.required, Validators.pattern(AppRegex.NAME_REGEX)])],
|
|
57
56
|
'accountType': [null, Validators.required],
|
|
58
|
-
'routingNumber': [null, [
|
|
59
|
-
Validators.required,
|
|
60
|
-
Validators.pattern(/^[0-4][0-9]{8}$/)
|
|
61
|
-
]],
|
|
57
|
+
'routingNumber': [null, Validators.compose([Validators.required])],
|
|
62
58
|
'bankName': [null],
|
|
63
|
-
'accountNumber': [null, Validators.compose([Validators.required, Validators.pattern(AppRegex.ACCOUNT_NUMBER_REGEX), Validators.maxLength(17), Validators.
|
|
64
|
-
'reEnterAccountNumber': [null, Validators.compose([Validators.required, Validators.pattern(AppRegex.ACCOUNT_NUMBER_REGEX), Validators.maxLength(17), Validators.
|
|
59
|
+
'accountNumber': [null, Validators.compose([Validators.required, Validators.pattern(AppRegex.ACCOUNT_NUMBER_REGEX), Validators.maxLength(17), Validators.min(8)])],
|
|
60
|
+
'reEnterAccountNumber': [null, Validators.compose([Validators.required, Validators.pattern(AppRegex.ACCOUNT_NUMBER_REGEX), Validators.maxLength(17), Validators.min(8)])]
|
|
65
61
|
});
|
|
66
62
|
this.setAccountNumberValidator();
|
|
67
63
|
}
|
|
68
64
|
submit() {
|
|
69
|
-
//console.log("this.bankDetailsFormDirective : "+this.bankDetailsFormDirective);
|
|
70
65
|
if (this.bankDetailsFormDirective) {
|
|
71
66
|
this.bankDetailsFormDirective.onSubmit(undefined);
|
|
72
67
|
}
|
|
@@ -100,7 +95,7 @@ export class BankDetailsComponent {
|
|
|
100
95
|
this.util.setValidation(this.routingNumber, this.routingNumberValidators);
|
|
101
96
|
const ROUTING_NUMBER = /^[0-4]{1}[0-9]{8}$/;
|
|
102
97
|
this.util.setValidation(this.routingNumber, validators1);
|
|
103
|
-
|
|
98
|
+
this.util.setValidation(this.routingNumber, AppValidators.isValidRoutingNumber);
|
|
104
99
|
this.util.setValidation(this.routingNumber, AppValidators.isValidLengthRoutingNumber);
|
|
105
100
|
this.reEnterAccountNumber.valueChanges.subscribe(val => {
|
|
106
101
|
if (this.accountNumber && (this.accountNumber.value != this.reEnterAccountNumber.value)) {
|
|
@@ -165,14 +160,13 @@ export class BankDetailsComponent {
|
|
|
165
160
|
}
|
|
166
161
|
writeValue(value) {
|
|
167
162
|
if (value) {
|
|
168
|
-
this.bankDetailsForm.
|
|
163
|
+
this.bankDetailsForm.setValue(value, { emitEvent: false });
|
|
169
164
|
}
|
|
170
165
|
}
|
|
171
166
|
validate(control) {
|
|
172
|
-
if (
|
|
167
|
+
if (this.bankDetailsForm.valid) {
|
|
173
168
|
return null;
|
|
174
169
|
}
|
|
175
|
-
return this.bankDetailsForm.valid ? null : { bankDetailsInvalid: true };
|
|
176
170
|
}
|
|
177
171
|
fetchBankName(event) {
|
|
178
172
|
if (this.routingNumber && this.routingNumber.value) {
|
|
@@ -203,16 +197,17 @@ export class BankDetailsComponent {
|
|
|
203
197
|
}
|
|
204
198
|
}
|
|
205
199
|
// PGLP-1750 in correct Routing NUmber
|
|
206
|
-
//
|
|
200
|
+
// if Entered RoutingNumber value is not validated with given RegExp then ,RoutingNumber value is set as a null
|
|
207
201
|
routingNumberValidation(event) {
|
|
208
|
-
const
|
|
209
|
-
const
|
|
210
|
-
if (!
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
if (
|
|
214
|
-
this.routingNumber
|
|
215
|
-
|
|
202
|
+
const ROUTING_NUMBER = /^[0-4]{1}[0-9]{8}$/;
|
|
203
|
+
const valid1 = ROUTING_NUMBER.test(this.routingNumber.value);
|
|
204
|
+
if (!valid1) {
|
|
205
|
+
this.routingNumber.setValue(null);
|
|
206
|
+
}
|
|
207
|
+
if (valid1) {
|
|
208
|
+
if (AppValidators.isValidRoutingNumber(this.routingNumber)) {
|
|
209
|
+
this.routingNumber.setValue(null);
|
|
210
|
+
}
|
|
216
211
|
}
|
|
217
212
|
}
|
|
218
213
|
get required() {
|
|
@@ -414,4 +409,4 @@ export class BankDetailsComponent {
|
|
|
414
409
|
args: ['bankDetailsFormDirective', { static: false }]
|
|
415
410
|
}] }); })();
|
|
416
411
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BankDetailsComponent, { className: "BankDetailsComponent", filePath: "lib\\components\\bank-details\\bank-details.component.ts", lineNumber: 26 }); })();
|
|
417
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9iYW5rLWRldGFpbHMvYmFuay1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9iYW5rLWRldGFpbHMvYmFuay1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQXVGLGFBQWEsRUFBRSxpQkFBaUIsRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0wsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCdEQsTUFBTSxPQUFPLG9CQUFvQjtJQW1CL0IsWUFBbUIsV0FBK0IsRUFBUSxJQUFrQixFQUNuRSxHQUFlLEVBQVMsZ0JBQW1DO1FBRGpELGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUFRLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbkUsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUFTLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFaN0QscUJBQWdCLEdBQW9CLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUlsRSw0QkFBdUIsR0FBbUI7WUFDeEMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFD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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBOZ0Zvcm0sIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQmFua0RldGFpbHNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9CYW5rRGV0YWlsc01vZGVsJztcclxuaW1wb3J0IHsgRG1zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rtcy1zZXJ2aWNlL2Rtcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcFZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi92YWxpZGF0aW9ucy9BcHBWYWxpZGF0b3JzJztcclxuaW1wb3J0IHsgQXBwUmVnZXggfSBmcm9tICcuLi8uLi92YWxpZGF0aW9ucy9BcHBSZWdleCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWJhbmstZGV0YWlscycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JhbmstZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYmFuay1kZXRhaWxzLmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBCYW5rRGV0YWlsc0NvbXBvbmVudCxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfSxcclxuICB7XHJcbiAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbiAgICB1c2VFeGlzdGluZzogQmFua0RldGFpbHNDb21wb25lbnRcclxuICB9XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhbmtEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBWYWxpZGF0b3Ige1xyXG5cclxuICBAVmlld0NoaWxkKCdiYW5rRGV0YWlsc0Zvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgYmFua0RldGFpbHNGb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XHJcblxyXG4gIHB1YmxpYyBiYW5rRGV0YWlsc0Zvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgYWNjb3VudFR5cGVPcHRpb25zOiBhbnlbXTtcclxuXHJcbiAgcHVibGljIGJhbmtEZXRhaWxzTW9kZWw6IEJhbmtEZXRhaWxzTW9kZWw9IG5ldyBCYW5rRGV0YWlsc01vZGVsKCk7XHJcbiAgcHVibGljIGJhbmtOYW1lOiBzdHJpbmc7XHJcbiAgXHJcbiAgXHJcbiAgcm91dGluZ051bWJlclZhbGlkYXRvcnMgOiBWYWxpZGF0b3JGbltdID0gW1xyXG4gICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoOSksIFxyXG4gICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoOSksIFxyXG4gICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgIEFwcFZhbGlkYXRvcnMuaXNWYWxpZExlbmd0aFJvdXRpbmdOdW1iZXJcclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixwdWJsaWMgdXRpbCA6IFV0aWxTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRtczogRG1zU2VydmljZSwgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2UgOiBUcmFuc2xhdGVTZXJ2aWNlKSB7IFxyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikpO1xyXG4gICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgdGhpcy5hY2NvdW50VHlwZU9wdGlvbnMgPSBbXHJcbiAgICAgICAgeyB0ZXh0OiAnY29ycmllbnRlJywgdmFsdWU6ICdDSEVDJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ2Fob3Jyb3MnLCB2YWx1ZTogJ1NBVkUnIH0sXHJcbiAgICAgIF07XHJcbiAgICB9ZWxzZSB7XHJcbiAgICAgIHRoaXMuYWNjb3VudFR5cGVPcHRpb25zID0gW1xyXG4gICAgICAgIHsgdGV4dDogJ2NoZWNraW5nJywgdmFsdWU6ICdDSEVDJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ3NhdmluZ3MnLCB2YWx1ZTogJ1NBVkUnIH0sXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgXHJcbiAgICBjb25zb2xlLmxvZyhcImluc2lkZSBvbkluaXQgYmFua2RldGFpbHNjb21wb25lbnRcIik7XHJcbiAgICB0aGlzLmJhbmtEZXRhaWxzRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAnbmFtZU9uQWNjb3VudCc6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5OQU1FX1JFR0VYKV0pXSxcclxuICAgICAgJ2FjY291bnRUeXBlJzogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAncm91dGluZ051bWJlcic6IFtudWxsLCBbXHJcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC00XVswLTldezh9JC8pXHJcbiAgICAgIF1dLFxyXG4gICAgICAnYmFua05hbWUnOiBbbnVsbF0sXHJcbiAgICAgICdhY2NvdW50TnVtYmVyJzogW251bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LkFDQ09VTlRfTlVNQkVSX1JFR0VYKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTcpLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg4KV0pXSxcclxuICAgICAgJ3JlRW50ZXJBY2NvdW50TnVtYmVyJzogW251bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4LkFDQ09VTlRfTlVNQkVSX1JFR0VYKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTcpLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg4KV0pXVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZXRBY2NvdW50TnVtYmVyVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKXtcclxuXHJcbiAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5iYW5rRGV0YWlsc0Zvcm1EaXJlY3RpdmUgOiBcIit0aGlzLmJhbmtEZXRhaWxzRm9ybURpcmVjdGl2ZSk7XHJcbiAgICBpZih0aGlzLmJhbmtEZXRhaWxzRm9ybURpcmVjdGl2ZSl7XHJcbiAgICAgIHRoaXMuYmFua0RldGFpbHNGb3JtRGlyZWN0aXZlLm9uU3VibWl0KHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAgLy8gTWV0aG9kIHRvIHJlbW92ZSBub24tZGlnaXQgY2hhcmFjdGVycyBkeW5hbWljYWxseVxyXG4gICAgLy8gUEdMUC0xNzUwICBpbiBjb3JyZWN0IFJvdXRpbmcgTlVtYmVyICBcclxuICAgc2FuaXRpemVJbnB1dChldmVudDphbnkpIHtcclxuICAgIGxldCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZSB8fCAnJztcclxuICAgIGxldCBmaWVsZE5hbWUgPSBldmVudC50YXJnZXQuaWQ7IC8vIEdldCBpbnB1dCBmaWVsZCBJRFxyXG4gICAgaWYoZmllbGROYW1lPT09J2JhbmtBY2NvdW50TnVtYmVyJyl7XHJcbiAgICAgIHRoaXMuYWNjb3VudE51bWJlci5zZXRWYWx1ZSh2YWx1ZS5yZXBsYWNlKC9cXEQrL2csICcnKSk7XHJcbiAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCAxNyk7IC8vIFRyaW0gZXhjZXNzIGNoYXJhY3RlcnNcclxuICAgICAgaWYodmFsdWUubGVuZ3RoPDgpe1xyXG4gICAgICAgIHRoaXMuYmFua0RldGFpbHNGb3JtLmNvbnRyb2xzWydhY2NvdW50TnVtYmVyJ10uc2V0RXJyb3JzKHsgbWlubGVuZ3RoOiB0cnVlIH0pOyAgICAgIFxyXG4gICAgICAgIHJldHVybiB7IG1pbmxlbmd0aDogdHJ1ZSB9OyAgIFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZihmaWVsZE5hbWU9PT0ncmVFbnRlckFjY291bnROdW1iZXInKXtcclxuICAgICAgdGhpcy5yZUVudGVyQWNjb3VudE51bWJlci5zZXRWYWx1ZSh2YWx1ZS5yZXBsYWNlKC9cXEQrL2csICcnKSk7XHJcbiAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCAxNyk7IC8vIFRyaW0gZXhjZXNzIGNoYXJhY3RlcnNcclxuICAgICAgaWYodmFsdWUubGVuZ3RoPDgpe1xyXG4gICAgICAgIHRoaXMuYmFua0RldGFpbHNGb3JtLmNvbnRyb2xzWydyZUVudGVyQWNjb3VudE51bWJlciddLnNldEVycm9ycyh7IG1pbmxlbmd0aDogdHJ1ZSB9KTsgICAgICBcclxuICAgICAgICByZXR1cm4geyBtaW5sZW5ndGg6IHRydWUgfTsgICBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgIFxyXG4gICAgXHJcblxyXG4gIH1cclxuXHJcbiAgc2V0QWNjb3VudE51bWJlclZhbGlkYXRvcigpIHtcclxuICAgIGxldCB2YWxpZGF0b3JzMTogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgbGV0IGlzUm91dGluZ051bWJlck5vdFZhbGlkOiBib29sZWFuO1xyXG4gICAgdGhpcy5yb3V0aW5nTnVtYmVyVmFsaWRhdG9ycy5mb3JFYWNoKHYgPT4gdmFsaWRhdG9yczEucHVzaCh2KSk7XHJcbiAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnJvdXRpbmdOdW1iZXIsIHRoaXMucm91dGluZ051bWJlclZhbGlkYXRvcnMpO1xyXG4gICAgY29uc3QgUk9VVElOR19OVU1CRVI6UmVnRXhwID0gL15bMC00XXsxfVswLTldezh9JC87XHJcbiAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnJvdXRpbmdOdW1iZXIsIHZhbGlkYXRvcnMxKTtcclxuICAgIFxyXG4gICAgLy90aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnJvdXRpbmdOdW1iZXIsIEFwcFZhbGlkYXRvcnMuaXNWYWxpZFJvdXRpbmdOdW1iZXIpO1xyXG4gICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5yb3V0aW5nTnVtYmVyLCBBcHBWYWxpZGF0b3JzLmlzVmFsaWRMZW5ndGhSb3V0aW5nTnVtYmVyKTtcclxuXHJcbiAgICB0aGlzLnJlRW50ZXJBY2NvdW50TnVtYmVyLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgaWYgKHRoaXMuYWNjb3VudE51bWJlciAmJiAodGhpcy5hY2NvdW50TnVtYmVyLnZhbHVlICE9IHRoaXMucmVFbnRlckFjY291bnROdW1iZXIudmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5iYW5rRGV0YWlsc0Zvcm0uY29udHJvbHNbJ3JlRW50ZXJBY2NvdW50TnVtYmVyJ10uc2V0RXJyb3JzKHsgYWNjb3VudE51bWJlQ29tcGFyaXNpb246IHRydWUgfSk7XHJcbiAgICAgICAgcmV0dXJuIHsgYWNjb3VudE51bWJlQ29tcGFyaXNpb246IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yb3V0aW5nTnVtYmVyLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgIGNvbnN0IHZhbGlkMSA9IFJPVVRJTkdfTlVNQkVSLnRlc3QodGhpcy5yb3V0aW5nTnVtYmVyLnZhbHVlKTtcclxuICAgICAgaWYgKCF2YWxpZDEpIHtcclxuICAgICAgICBpZihBcHBWYWxpZGF0b3JzLmlzVmFsaWRMZW5ndGhSb3V0aW5nTnVtYmVyKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuYmFua0RldGFpbHNGb3JtLmNvbnRyb2xzWydyb3V0aW5nTnVtYmVyJ10uc2V0RXJyb3JzKHtpbnZhbGlkTGVuZ3RoUm91dGluZzogdHJ1ZSB9KTtcclxuICAgICAgICAgIHRoaXMuYmFua0RldGFpbHNGb3JtLmludmFsaWQ7XHJcbiAgICAgICAgICByZXR1cm4geyBpbnZhbGlkTGVuZ3RoUm91dGluZzogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuYmFua0RldGFpbHNGb3JtLmNvbnRyb2xzWydyb3V0aW5nTnVtYmVyJ10uc2V0RXJyb3JzKHsgaGFzUm91dGluZzogdHJ1ZSB9KTtcclxuICAgICAgICB0aGlzLmJhbmtEZXRhaWxzRm9ybS5pbnZhbGlkO1xyXG4gICAgICAgIC8vdGhpcy5iYW5rRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2FkZHJlc3MnXS5zZXRFcnJvcnMoeyBiYW5rRGV0YWlsc1ZhbGlkYXRpb25GbGFnOiB0cnVlIH0pO1xyXG4gICAgICAgIHJldHVybiB7IGhhc1JvdXRpbmc6IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWVPbkFjY291bnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYW5rRGV0YWlsc0Zvcm0uY29udHJvbHNbJ25hbWVPbkFjY291bnQnXTtcclxuICB9XHJcbiAgZ2V0IGFjY291bnRUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFua0RldGFpbHNGb3JtLmNvbnRyb2xzWydhY2NvdW50VHlwZSddO1xyXG4gIH1cclxuICBnZXQgcm91dGluZ051bWJlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmJhbmtEZXRhaWxzRm9ybS5jb250cm9sc1sncm91dGluZ051bWJlciddO1xyXG4gIH1cclxuICBnZXQgYWNjb3VudE51bWJlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmJhbmtEZXRhaWxzRm9ybS5jb250cm9sc1snYWNjb3VudE51bWJlciddO1xyXG4gIH1cclxuICBnZXQgYmFua05hbWVDb250cm9sKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFua0RldGFpbHNGb3JtLmNvbnRyb2xzWydiYW5rTmFtZSddO1xyXG4gIH1cclxuICBnZXQgcmVFbnRlckFjY291bnROdW1iZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYW5rRGV0YWlsc0Zvcm0uY29udHJvbHNbJ3JlRW50ZXJBY2NvdW50TnVtYmVyJ107XHJcbiAgfVxyXG5cclxuICBvblRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xyXG5cclxuICBvbkNoYW5nZVN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgZm9yIChsZXQgc3ViIG9mIHRoaXMub25DaGFuZ2VTdWJzKSB7XHJcbiAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KSB7XHJcbiAgICBjb25zdCBzdWIgPSB0aGlzLmJhbmtEZXRhaWxzRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKG9uQ2hhbmdlKTtcclxuICAgIHRoaXMub25DaGFuZ2VTdWJzLnB1c2goc3ViKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogRnVuY3Rpb24pIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xyXG4gIH0gXHJcbiAgXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKGRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuYmFua0RldGFpbHNGb3JtLmRpc2FibGUoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmJhbmtEZXRhaWxzRm9ybS5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuYmFua0RldGFpbHNGb3JtLnBhdGNoVmFsdWUodmFsdWUgfHwge30sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuICAgIGlmICghdGhpcy5iYW5rRGV0YWlsc0Zvcm0pIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5iYW5rRGV0YWlsc0Zvcm0udmFsaWQgPyBudWxsIDogeyBiYW5rRGV0YWlsc0ludmFsaWQ6IHRydWUgfTtcclxuICB9XHJcblxyXG4gIGZldGNoQmFua05hbWUoZXZlbnQpe1xyXG4gICAgaWYodGhpcy5yb3V0aW5nTnVtYmVyICYmIHRoaXMucm91dGluZ051bWJlci52YWx1ZSl7ICAgXHJcbiAgICAgIHRoaXMuZG1zXHJcbiAgICAgICAgLmdldEJhbmtOYW1lKHRoaXMucm91dGluZ051bWJlci52YWx1ZSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5iYW5rRGV0YWlsc01vZGVsID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLmJhbmtOYW1lID0gcmVzLmJhbmtOYW1lO1xyXG4gICAgICAgICAgICB0aGlzLmJhbmtOYW1lQ29udHJvbC5zZXRWYWx1ZShyZXMuYmFua05hbWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYmFua05hbWUgPSBcIm5vIGRhdGEgZm91bmQuXCI7XHJcbiAgICAgICAgICAgIHRoaXMuYmFua05hbWVDb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuIC8vIFBHTFAtMTc1MCAgaW4gY29ycmVjdCBSb3V0aW5nIE5VbWJlciAgXHJcbiAgLy8gQ2xlYXJzIHRoZSByZUVudGVyQWNjb3VudE51bWJlciB2YWx1ZSB3aGVuIGFjY291bnQgbnVtYmVyIGFuZCByZUVudGVyQWNjb3VudE51bWJlciBpcyBub3Qgc2FtZS5cclxuICBhY2NvdW50TnVtYmVyQ29tcGFyaXNpb24oZXZlbnQgOmFueSkge1xyXG4gICAgaWYgKHRoaXMuYWNjb3VudE51bWJlciAmJiAodGhpcy5hY2NvdW50TnVtYmVyLnZhbHVlICE9IHRoaXMucmVFbnRlckFjY291bnROdW1iZXIudmFsdWUpKSB7XHJcbiAgICAgIHRoaXMucmVFbnRlckFjY291bnROdW1iZXIuc2V0VmFsdWUobnVsbCk7ICAgICAgIFxyXG4gIH1cclxufVxyXG4gLy8gUEdMUC0xNzUwICBpbiBjb3JyZWN0IFJvdXRpbmcgTlVtYmVyICBcclxuICAvLyBDbGVhcnMgdGhlIHJlRW50ZXJBY2NvdW50TnVtYmVyIHZhbHVlIHdoZW4gYWNjb3VudCBudW1iZXIgYW5kIHJlRW50ZXJBY2NvdW50TnVtYmVyIGlzIG5vdCBzYW1lLlxyXG4gIGFjY291bnROdW1iZXJtaW5sZW5naHR2YWxpZGF0aW9uKGV2ZW50IDphbnkpIHtcclxuICAgIGlmICh0aGlzLmFjY291bnROdW1iZXIudmFsdWUubGVuZ3RoPDgpIHsgIFxyXG4gICAgICB0aGlzLmFjY291bnROdW1iZXIuc2V0VmFsdWUobnVsbCk7IFxyXG5cclxuICB9XHJcbn1cclxuXHJcblxyXG4gIC8vIFBHTFAtMTc1MCAgaW4gY29ycmVjdCBSb3V0aW5nIE5VbWJlciAgXHJcbiAgLy8gIElmIEVudGVyZWQgUm91dGluZ051bWJlciB2YWx1ZSBpcyBub3QgdmFsaWRhdGVkIHdpdGggZ2l2ZW4gUmVnRXhwIHRoZW4gLFJvdXRpbmdOdW1iZXIgdmFsdWUgaXMgc2V0IGFzIGEgbnVsbFxyXG4gIHJvdXRpbmdOdW1iZXJWYWxpZGF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yb3V0aW5nTnVtYmVyLnZhbHVlO1xyXG4gICAgY29uc3QgUk9VVElOR19OVU1CRVI6IFJlZ0V4cCA9IC9eWzAtNF1bMC05XXs4fSQvO1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xyXG4gICAgY29uc3QgaXNWYWxpZCA9IFJPVVRJTkdfTlVNQkVSLnRlc3QodmFsdWUpO1xyXG4gICAgaWYgKCFpc1ZhbGlkKSB7XHJcbiAgICAgIHRoaXMucm91dGluZ051bWJlci5zZXRFcnJvcnMoeyBpbnZhbGlkUm91dGluZzogdHJ1ZSB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldCByZXF1aXJlZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdjb21tb24ucmVxdWlyZWQnKTtcclxuICB9XHJcblxyXG4gIGdldCBvbmx5TnVtYmVycygpeyBcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnY29tbW9uLm9ubHkubnVtYmVycycpO1xyXG4gIH1cclxuICBnZXQgb25seUxldHRlcnMoKXsgXHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2NvbW1vbi5vbmx5LmxldHRlcnMnKTtcclxuICB9XHJcblxyXG4gIGdldCBhY2NvdW50TWF0Y2goKXtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYmFuay5hY2NvdW50Lm1hdGNoJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgYWNjb3VudE1heCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLmFjY291bnQubWF4Jyk7XHJcbiAgfVxyXG4gIGdldCB2YWxpZE51bWJlcigpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLnZhbGlkLm51bWJlcicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJvdXRpbmdOdW1iZXJJbnZhbGlkKCl7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2Jhbmsucm91dGluZy5udW1iZXIuaW52YWxpZCcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbGlkUm91dGluZ051bWJlcigpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLnZhbGlkYXRpb24ucm91dGluZy5udW1iZXInKTtcclxuICB9XHJcblxyXG4gIGdldCBpbnZhbGlkUm91dGluZ051bWJlcigpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLnZhbGlkYXRpb24ucm91dGluZy5udW1iZXIuaW52YWxpZCcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjUGF0dGVybigpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLnZhbGlkYXRpb24uYWMucGF0dGVybicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjVmFsaWROdW1iZXIoKXtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYmFuay52YWxpZGF0aW9uLmFjLnZhbGlkLm51bWJlcicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjTWF4bGVuZ3RoKCl7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2JhbmsudmFsaWRhdGlvbi5hYy5tYXhsZW5ndGgnKTtcclxuICB9XHJcblxyXG4gIGdldCBhY01pbkxlbmd0aCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLnZhbGlkYXRpb24uYWMubWlubGVuZ3RoJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgYWNjb3VudE51bWJlckNvbXBhcmlzaW9uVmFsaWRhdGlvbigpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLnZhbGlkYXRpb24uYWMubnVtYmVyLmNvbXBhcmlzaW9uJyk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiYmFua0RldGFpbHNGb3JtXCIgI2JhbmtEZXRhaWxzRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiA2cHg7XCI+XHJcbiAgICA8aW9uLWdyaWQgc3R5bGU9XCJwYWRkaW5nOiAwcHg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtZm9ybWdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwibmFtZU9uQWNjb3VudFwiPnt7J2JhbmsuYWNjb3VudC5uYW1lJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIvPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwibmFtZU9uQWNjb3VudFwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwibmFtZU9uQWNjb3VudFwiIG1heGxlbmd0aD1cIjMwXCIvPiAgXHJcbiAgICAgICAgICAgICAgICA8YnIvPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J25hbWVPbkFjY291bnQnIFtmb3JtXT1cImJhbmtEZXRhaWxzRm9ybURpcmVjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogIHJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBvbmx5TGV0dGVyc1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPnt7J2JhbmsuYWNjb3VudC50eXBlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1mbGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJhY2NvdW50VHlwZU9wdGlvbnNcIiBbZm9ybUNvbnRyb2xdPVwiYWNjb3VudFR5cGVcIiBbbXVsdGlwbGVdPWZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cInRleHRcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCI+PC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2FjY291bnRUeXBlJyBbZm9ybV09XCJiYW5rRGV0YWlsc0Zvcm1EaXJlY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VyckRlZl09XCJ7cmVxdWlyZWQ6ICByZXF1aXJlZH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPnt7J2JhbmsubnVtYmVycycgfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktc3ViaGVhZGluZyBpb24tcGFkZGluZy10b3BcIj57eydiYW5rLmNoZWNraW5nLmFjY291bnQnIHwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5LWRlc2MgaW9uLXBhZGRpbmctdG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snYmFuay5maW5kLnJvdXRpbmcubnVtYmVyJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwiY2hlY2sgaW1hZ2VcIiBzcmM9XCJhc3NldHMvaWNvbi9jaGVjay5wbmdcIiBjbGFzcz1cImlvbi1wYWRkaW5nLXRvcFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5LXN1YmhlYWRpbmcgaW9uLXBhZGRpbmctdG9wXCI+e3snYmFuay5zYXZpbmcuYWNjb3VudCcgfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktZGVzYyBpb24tcGFkZGluZy10b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydiYW5rLmRpcmVjdC5kZXBvc2l0JyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJyb3V0aW5nTnVtYmVySW5wdXRcIj57eydiYW5rLnJvdXRpbmcubnVtYmVyJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJyb3V0aW5nTnVtYmVySW5wdXRcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJyb3V0aW5nTnVtYmVyXCIgbWlubGVuZ3RoPVwiOVwiIG1heGxlbmd0aD1cIjlcIiAgaW5wdXRtb2RlPVwibnVtZXJpY1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvXFxEKy9nLCAnJylcIiBzaXplPVwiOVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInJvdXRpbmdOdW1iZXJWYWxpZGF0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz4gXHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRDU1VYLTI1NCBjb21tZW50ZWQgdGhlIGNoZWNrIGZvciB2YWxpZCBiYW5rIGFjY291bnQgZm9yIHJvdXRpbmcgbnVtYmVyIGFzIEtET0wgZG9lc250IG5lZWQgaXQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCBpZD1cInJvdXRpbmdOdW1iZXJcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJyb3V0aW5nTnVtYmVyXCIgbWF4bGVuZ3RoPVwiOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiZmV0Y2hCYW5rTmFtZSgkZXZlbnQpXCIgLz48YnIvPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0ncm91dGluZ051bWJlcicgW2Zvcm1dPVwiYmFua0RldGFpbHNGb3JtRGlyZWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkTGVuZ3RoUm91dGluZzogdmFsaWRSb3V0aW5nTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1JvdXRpbmc6IG9ubHlOdW1iZXJzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUm91dGluZ051bWJlck5vdFZhbGlkOiBpbnZhbGlkUm91dGluZ051bWJlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbGJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJyb3V0aW5nTnVtYmVyXCI+Jm5ic3A7PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmctdG9wIGlvbi1wYWRkaW5nLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2JhbmtOYW1lIHwgcHJvcGVyQ2FzZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBhY2NvdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJiYW5rQWNjb3VudE51bWJlclwiPnt7J2JhbmsuYWNjb3VudC5udW1iZXInIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxici8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXBhc3N3b3JkIGlucHV0SWQ9XCJiYW5rQWNjb3VudE51bWJlclwiIFtmb3JtQ29udHJvbF09XCJhY2NvdW50TnVtYmVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIjE3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInNhbml0aXplSW5wdXQoJGV2ZW50KVwiICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPSBcImFjY291bnROdW1iZXJtaW5sZW5naHR2YWxpZGF0aW9uKCRldmVudClcIiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZlZWRiYWNrXT1cImZhbHNlXCIgW3RvZ2dsZU1hc2tdPVwidHJ1ZVwiID5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtcGFzc3dvcmQ+IDxici8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdhY2NvdW50TnVtYmVyJyBbZm9ybV09XCJiYW5rRGV0YWlsc0Zvcm1EaXJlY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogcmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IGFjUGF0dGVybixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTnVtYmVyOiBhY1ZhbGlkTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg6IGFjTWF4bGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg6IGFjTWluTGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGFjY291bnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInJlRW50ZXJBY2NvdW50TnVtYmVyXCI+e3snYmFuay5yZWVudGVyLmFjY291bnQnIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxici8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXBhc3N3b3JkIGlucHV0SWQ9XCJyZUVudGVyQWNjb3VudE51bWJlclwiIFtmb3JtQ29udHJvbF09XCJyZUVudGVyQWNjb3VudE51bWJlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIxN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJzYW5pdGl6ZUlucHV0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwiYWNjb3VudE51bWJlckNvbXBhcmlzaW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZlZWRiYWNrXT1cImZhbHNlXCIgW3RvZ2dsZU1hc2tdPVwidHJ1ZVwiIHNpemU9XCIxN1wiPjwvcC1wYXNzd29yZD48YnIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0ncmVFbnRlckFjY291bnROdW1iZXInIFtmb3JtXT1cImJhbmtEZXRhaWxzRm9ybURpcmVjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogcmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBhY1BhdHRlcm4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50TnVtYmVDb21wYXJpc2lvbjogYWNjb3VudE51bWJlckNvbXBhcmlzaW9uVmFsaWRhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aDogYWNNYXhsZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg6IGFjTWluTGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2lvbi1ncmlkPlxyXG48L2Zvcm0+Il19
|
|
412
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9iYW5rLWRldGFpbHMvYmFuay1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9iYW5rLWRldGFpbHMvYmFuay1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQXVGLGFBQWEsRUFBRSxpQkFBaUIsRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0wsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCdEQsTUFBTSxPQUFPLG9CQUFvQjtJQW1CL0IsWUFBbUIsV0FBK0IsRUFBUSxJQUFrQixFQUNuRSxHQUFlLEVBQVMsZ0JBQW1DO1FBRGpELGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUFRLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbkUsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUFTLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFaN0QscUJBQWdCLEdBQW9CLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUlsRSw0QkFBdUIsR0FBbUI7WUFDeEMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFD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QUd6QixlQUE4QjtZQUE5QixnREFBOEIsZ0NBQUEsbUJBQUE7WUFFbkMsZUFBb0I7WUFBcEIseUJBQW9CO1lBQUMsdUNBQXFCLGFBQUEscURBQUE7WUFLNUIsZUFBOEI7WUFBOUIsNERBQThCO1lBQ0gsZUFBdUM7WUFBdkMscUVBQXVDO1lBRW5GLGVBQ0o7WUFESSxtRkFDSjtZQUVnRCxlQUFxQztZQUFyQyxtRUFBcUM7WUFFakYsZUFDSjtZQURJLDhFQUNKO1lBUTRCLGVBQXFDO1lBQXJDLG1FQUFxQztZQUNkLGVBQTZCO1lBQTdCLCtDQUE2QjtZQVFqRSxlQUFvQjtZQUFwQix5QkFBb0I7WUFBQyx5Q0FBdUIsYUFBQSx3SEFBQTtZQWUvRCxlQUNKO1lBREkscUVBQ0o7WUFNbUMsZUFBcUM7WUFBckMsbUVBQXFDO1lBQzVCLGVBQTZCO1lBQTdCLCtDQUE2QixpQkFBQSxtQkFBQSxvQkFBQTtZQU0xRCxlQUFvQjtZQUFwQix5QkFBb0I7WUFBQyx5Q0FBdUIsYUFBQSx5SEFBQTtZQWFyQixlQUFzQztZQUF0QyxvRUFBc0M7WUFDN0IsZUFBb0M7WUFBcEMsc0RBQW9DLG1CQUFBLG9CQUFBO1lBS3BFLGVBQW9CO1lBQXBCLHlCQUFvQjtZQUFDLGdEQUE4QixhQUFBLDhJQUFBOzs7aUZEekV6RSxvQkFBb0I7Y0FmaEMsU0FBUzsyQkFDRSxrQkFBa0IsYUFHakIsQ0FBQzt3QkFDVixPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLHNCQUFzQjt3QkFDakMsS0FBSyxFQUFFLElBQUk7cUJBQ1o7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLEtBQUssRUFBRSxJQUFJO3dCQUNYLFdBQVcsc0JBQXNCO3FCQUNsQyxDQUFDO3FJQUtLLHdCQUF3QjtrQkFEOUIsU0FBUzttQkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O2tGQUY3QyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBOZ0Zvcm0sIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQmFua0RldGFpbHNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9CYW5rRGV0YWlsc01vZGVsJztcclxuaW1wb3J0IHsgRG1zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rtcy1zZXJ2aWNlL2Rtcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcFZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi92YWxpZGF0aW9ucy9BcHBWYWxpZGF0b3JzJztcclxuaW1wb3J0IHsgQXBwUmVnZXggfSBmcm9tICcuLi8uLi92YWxpZGF0aW9ucy9BcHBSZWdleCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWJhbmstZGV0YWlscycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JhbmstZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYmFuay1kZXRhaWxzLmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBCYW5rRGV0YWlsc0NvbXBvbmVudCxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfSxcclxuICB7XHJcbiAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbiAgICB1c2VFeGlzdGluZzogQmFua0RldGFpbHNDb21wb25lbnRcclxuICB9XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhbmtEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBWYWxpZGF0b3Ige1xyXG5cclxuICBAVmlld0NoaWxkKCdiYW5rRGV0YWlsc0Zvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgYmFua0RldGFpbHNGb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XHJcblxyXG4gIHB1YmxpYyBiYW5rRGV0YWlsc0Zvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgYWNjb3VudFR5cGVPcHRpb25zOiBhbnlbXTtcclxuXHJcbiAgcHVibGljIGJhbmtEZXRhaWxzTW9kZWw6IEJhbmtEZXRhaWxzTW9kZWw9IG5ldyBCYW5rRGV0YWlsc01vZGVsKCk7XHJcbiAgcHVibGljIGJhbmtOYW1lOiBzdHJpbmc7XHJcbiAgXHJcbiAgXHJcbiAgcm91dGluZ051bWJlclZhbGlkYXRvcnMgOiBWYWxpZGF0b3JGbltdID0gW1xyXG4gICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoOSksIFxyXG4gICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoOSksIFxyXG4gICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgIEFwcFZhbGlkYXRvcnMuaXNWYWxpZExlbmd0aFJvdXRpbmdOdW1iZXJcclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixwdWJsaWMgdXRpbCA6IFV0aWxTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRtczogRG1zU2VydmljZSwgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2UgOiBUcmFuc2xhdGVTZXJ2aWNlKSB7IFxyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikpO1xyXG4gICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgdGhpcy5hY2NvdW50VHlwZU9wdGlvbnMgPSBbXHJcbiAgICAgICAgeyB0ZXh0OiAnY29ycmllbnRlJywgdmFsdWU6ICdDSEVDJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ2Fob3Jyb3MnLCB2YWx1ZTogJ1NBVkUnIH0sXHJcbiAgICAgIF07XHJcbiAgICB9ZWxzZSB7XHJcbiAgICAgIHRoaXMuYWNjb3VudFR5cGVPcHRpb25zID0gW1xyXG4gICAgICAgIHsgdGV4dDogJ2NoZWNraW5nJywgdmFsdWU6ICdDSEVDJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ3NhdmluZ3MnLCB2YWx1ZTogJ1NBVkUnIH0sXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYmFua0RldGFpbHNGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICduYW1lT25BY2NvdW50JzogW251bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKEFwcFJlZ2V4Lk5BTUVfUkVHRVgpXSldLFxyXG4gICAgICAnYWNjb3VudFR5cGUnOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICdyb3V0aW5nTnVtYmVyJzogW251bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXSxcclxuICAgICAgJ2JhbmtOYW1lJzogW251bGxdLFxyXG4gICAgICAnYWNjb3VudE51bWJlcic6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5BQ0NPVU5UX05VTUJFUl9SRUdFWCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDE3KSwgVmFsaWRhdG9ycy5taW4oOCldKV0sXHJcbiAgICAgICdyZUVudGVyQWNjb3VudE51bWJlcic6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihBcHBSZWdleC5BQ0NPVU5UX05VTUJFUl9SRUdFWCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDE3KSwgVmFsaWRhdG9ycy5taW4oOCldKV1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2V0QWNjb3VudE51bWJlclZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0KCl7XHJcbiAgICBpZih0aGlzLmJhbmtEZXRhaWxzRm9ybURpcmVjdGl2ZSl7XHJcbiAgICAgIHRoaXMuYmFua0RldGFpbHNGb3JtRGlyZWN0aXZlLm9uU3VibWl0KHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAgLy8gTWV0aG9kIHRvIHJlbW92ZSBub24tZGlnaXQgY2hhcmFjdGVycyBkeW5hbWljYWxseVxyXG4gICAgLy8gUEdMUC0xNzUwICBpbiBjb3JyZWN0IFJvdXRpbmcgTlVtYmVyICBcclxuICAgc2FuaXRpemVJbnB1dChldmVudDphbnkpIHtcclxuICAgIGxldCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZSB8fCAnJztcclxuICAgIGxldCBmaWVsZE5hbWUgPSBldmVudC50YXJnZXQuaWQ7IC8vIEdldCBpbnB1dCBmaWVsZCBJRFxyXG4gICAgaWYoZmllbGROYW1lPT09J2JhbmtBY2NvdW50TnVtYmVyJyl7XHJcbiAgICAgIHRoaXMuYWNjb3VudE51bWJlci5zZXRWYWx1ZSh2YWx1ZS5yZXBsYWNlKC9cXEQrL2csICcnKSk7XHJcbiAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCAxNyk7IC8vIFRyaW0gZXhjZXNzIGNoYXJhY3RlcnNcclxuICAgICAgaWYodmFsdWUubGVuZ3RoPDgpe1xyXG4gICAgICAgIHRoaXMuYmFua0RldGFpbHNGb3JtLmNvbnRyb2xzWydhY2NvdW50TnVtYmVyJ10uc2V0RXJyb3JzKHsgbWlubGVuZ3RoOiB0cnVlIH0pOyAgICAgIFxyXG4gICAgICAgIHJldHVybiB7IG1pbmxlbmd0aDogdHJ1ZSB9OyAgIFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZihmaWVsZE5hbWU9PT0ncmVFbnRlckFjY291bnROdW1iZXInKXtcclxuICAgICAgdGhpcy5yZUVudGVyQWNjb3VudE51bWJlci5zZXRWYWx1ZSh2YWx1ZS5yZXBsYWNlKC9cXEQrL2csICcnKSk7XHJcbiAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCAxNyk7IC8vIFRyaW0gZXhjZXNzIGNoYXJhY3RlcnNcclxuICAgICAgaWYodmFsdWUubGVuZ3RoPDgpe1xyXG4gICAgICAgIHRoaXMuYmFua0RldGFpbHNGb3JtLmNvbnRyb2xzWydyZUVudGVyQWNjb3VudE51bWJlciddLnNldEVycm9ycyh7IG1pbmxlbmd0aDogdHJ1ZSB9KTsgICAgICBcclxuICAgICAgICByZXR1cm4geyBtaW5sZW5ndGg6IHRydWUgfTsgICBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgIFxyXG4gICAgXHJcblxyXG4gIH1cclxuXHJcbiAgc2V0QWNjb3VudE51bWJlclZhbGlkYXRvcigpIHtcclxuICAgIGxldCB2YWxpZGF0b3JzMTogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgbGV0IGlzUm91dGluZ051bWJlck5vdFZhbGlkOiBib29sZWFuO1xyXG4gICAgdGhpcy5yb3V0aW5nTnVtYmVyVmFsaWRhdG9ycy5mb3JFYWNoKHYgPT4gdmFsaWRhdG9yczEucHVzaCh2KSk7XHJcbiAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnJvdXRpbmdOdW1iZXIsIHRoaXMucm91dGluZ051bWJlclZhbGlkYXRvcnMpO1xyXG4gICAgY29uc3QgUk9VVElOR19OVU1CRVI6UmVnRXhwID0gL15bMC00XXsxfVswLTldezh9JC87XHJcbiAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnJvdXRpbmdOdW1iZXIsIHZhbGlkYXRvcnMxKTtcclxuICAgIFxyXG4gICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy5yb3V0aW5nTnVtYmVyLCBBcHBWYWxpZGF0b3JzLmlzVmFsaWRSb3V0aW5nTnVtYmVyKTtcclxuICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMucm91dGluZ051bWJlciwgQXBwVmFsaWRhdG9ycy5pc1ZhbGlkTGVuZ3RoUm91dGluZ051bWJlcik7XHJcblxyXG4gICAgdGhpcy5yZUVudGVyQWNjb3VudE51bWJlci52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmFjY291bnROdW1iZXIgJiYgKHRoaXMuYWNjb3VudE51bWJlci52YWx1ZSAhPSB0aGlzLnJlRW50ZXJBY2NvdW50TnVtYmVyLnZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuYmFua0RldGFpbHNGb3JtLmNvbnRyb2xzWydyZUVudGVyQWNjb3VudE51bWJlciddLnNldEVycm9ycyh7IGFjY291bnROdW1iZUNvbXBhcmlzaW9uOiB0cnVlIH0pO1xyXG4gICAgICAgIHJldHVybiB7IGFjY291bnROdW1iZUNvbXBhcmlzaW9uOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucm91dGluZ051bWJlci52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICBjb25zdCB2YWxpZDEgPSBST1VUSU5HX05VTUJFUi50ZXN0KHRoaXMucm91dGluZ051bWJlci52YWx1ZSk7XHJcbiAgICAgIGlmICghdmFsaWQxKSB7XHJcbiAgICAgICAgaWYoQXBwVmFsaWRhdG9ycy5pc1ZhbGlkTGVuZ3RoUm91dGluZ051bWJlcilcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLmJhbmtEZXRhaWxzRm9ybS5jb250cm9sc1sncm91dGluZ051bWJlciddLnNldEVycm9ycyh7aW52YWxpZExlbmd0aFJvdXRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgICB0aGlzLmJhbmtEZXRhaWxzRm9ybS5pbnZhbGlkO1xyXG4gICAgICAgICAgcmV0dXJuIHsgaW52YWxpZExlbmd0aFJvdXRpbmc6IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICB0aGlzLmJhbmtEZXRhaWxzRm9ybS5jb250cm9sc1sncm91dGluZ051bWJlciddLnNldEVycm9ycyh7IGhhc1JvdXRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgdGhpcy5iYW5rRGV0YWlsc0Zvcm0uaW52YWxpZDtcclxuICAgICAgICAvL3RoaXMuYmFua0RldGFpbHNGb3JtLmNvbnRyb2xzWydhZGRyZXNzJ10uc2V0RXJyb3JzKHsgYmFua0RldGFpbHNWYWxpZGF0aW9uRmxhZzogdHJ1ZSB9KTtcclxuICAgICAgICByZXR1cm4geyBoYXNSb3V0aW5nOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBuYW1lT25BY2NvdW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFua0RldGFpbHNGb3JtLmNvbnRyb2xzWyduYW1lT25BY2NvdW50J107XHJcbiAgfVxyXG4gIGdldCBhY2NvdW50VHlwZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmJhbmtEZXRhaWxzRm9ybS5jb250cm9sc1snYWNjb3VudFR5cGUnXTtcclxuICB9XHJcbiAgZ2V0IHJvdXRpbmdOdW1iZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYW5rRGV0YWlsc0Zvcm0uY29udHJvbHNbJ3JvdXRpbmdOdW1iZXInXTtcclxuICB9XHJcbiAgZ2V0IGFjY291bnROdW1iZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYW5rRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2FjY291bnROdW1iZXInXTtcclxuICB9XHJcbiAgZ2V0IGJhbmtOYW1lQ29udHJvbCgpIHtcclxuICAgIHJldHVybiB0aGlzLmJhbmtEZXRhaWxzRm9ybS5jb250cm9sc1snYmFua05hbWUnXTtcclxuICB9XHJcbiAgZ2V0IHJlRW50ZXJBY2NvdW50TnVtYmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFua0RldGFpbHNGb3JtLmNvbnRyb2xzWydyZUVudGVyQWNjb3VudE51bWJlciddO1xyXG4gIH1cclxuXHJcbiAgb25Ub3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcclxuXHJcbiAgb25DaGFuZ2VTdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGZvciAobGV0IHN1YiBvZiB0aGlzLm9uQ2hhbmdlU3Vicykge1xyXG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSkge1xyXG4gICAgY29uc3Qgc3ViID0gdGhpcy5iYW5rRGV0YWlsc0Zvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShvbkNoYW5nZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlU3Vicy5wdXNoKHN1Yik7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IEZ1bmN0aW9uKSB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcclxuICB9IFxyXG4gIFxyXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmJhbmtEZXRhaWxzRm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5iYW5rRGV0YWlsc0Zvcm0uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLmJhbmtEZXRhaWxzRm9ybS5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xyXG4gICAgaWYgKHRoaXMuYmFua0RldGFpbHNGb3JtLnZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmV0Y2hCYW5rTmFtZShldmVudCl7XHJcbiAgICBpZih0aGlzLnJvdXRpbmdOdW1iZXIgJiYgdGhpcy5yb3V0aW5nTnVtYmVyLnZhbHVlKXsgICBcclxuICAgICAgdGhpcy5kbXNcclxuICAgICAgICAuZ2V0QmFua05hbWUodGhpcy5yb3V0aW5nTnVtYmVyLnZhbHVlKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmJhbmtEZXRhaWxzTW9kZWwgPSByZXM7XHJcbiAgICAgICAgICAgIHRoaXMuYmFua05hbWUgPSByZXMuYmFua05hbWU7XHJcbiAgICAgICAgICAgIHRoaXMuYmFua05hbWVDb250cm9sLnNldFZhbHVlKHJlcy5iYW5rTmFtZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5iYW5rTmFtZSA9IFwibm8gZGF0YSBmb3VuZC5cIjtcclxuICAgICAgICAgICAgdGhpcy5iYW5rTmFtZUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gLy8gUEdMUC0xNzUwICBpbiBjb3JyZWN0IFJvdXRpbmcgTlVtYmVyICBcclxuICAvLyBDbGVhcnMgdGhlIHJlRW50ZXJBY2NvdW50TnVtYmVyIHZhbHVlIHdoZW4gYWNjb3VudCBudW1iZXIgYW5kIHJlRW50ZXJBY2NvdW50TnVtYmVyIGlzIG5vdCBzYW1lLlxyXG4gIGFjY291bnROdW1iZXJDb21wYXJpc2lvbihldmVudCA6YW55KSB7XHJcbiAgICBpZiAodGhpcy5hY2NvdW50TnVtYmVyICYmICh0aGlzLmFjY291bnROdW1iZXIudmFsdWUgIT0gdGhpcy5yZUVudGVyQWNjb3VudE51bWJlci52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5yZUVudGVyQWNjb3VudE51bWJlci5zZXRWYWx1ZShudWxsKTsgICAgICAgXHJcbiAgfVxyXG59XHJcbiAvLyBQR0xQLTE3NTAgIGluIGNvcnJlY3QgUm91dGluZyBOVW1iZXIgIFxyXG4gIC8vIENsZWFycyB0aGUgcmVFbnRlckFjY291bnROdW1iZXIgdmFsdWUgd2hlbiBhY2NvdW50IG51bWJlciBhbmQgcmVFbnRlckFjY291bnROdW1iZXIgaXMgbm90IHNhbWUuXHJcbiAgYWNjb3VudE51bWJlcm1pbmxlbmdodHZhbGlkYXRpb24oZXZlbnQgOmFueSkge1xyXG4gICAgaWYgKHRoaXMuYWNjb3VudE51bWJlci52YWx1ZS5sZW5ndGg8OCkgeyAgXHJcbiAgICAgIHRoaXMuYWNjb3VudE51bWJlci5zZXRWYWx1ZShudWxsKTsgXHJcblxyXG4gIH1cclxufVxyXG5cclxuXHJcbiAvLyBQR0xQLTE3NTAgIGluIGNvcnJlY3QgUm91dGluZyBOVW1iZXIgIFxyXG4gIC8vICBpZiBFbnRlcmVkIFJvdXRpbmdOdW1iZXIgdmFsdWUgaXMgbm90IHZhbGlkYXRlZCB3aXRoIGdpdmVuIFJlZ0V4cCB0aGVuICxSb3V0aW5nTnVtYmVyIHZhbHVlIGlzIHNldCBhcyBhIG51bGxcclxuICByb3V0aW5nTnVtYmVyVmFsaWRhdGlvbihldmVudCA6YW55KSB7XHJcbiAgICBjb25zdCBST1VUSU5HX05VTUJFUjpSZWdFeHAgPSAvXlswLTRdezF9WzAtOV17OH0kLzsgICBcclxuICAgICAgY29uc3QgdmFsaWQxID0gUk9VVElOR19OVU1CRVIudGVzdCh0aGlzLnJvdXRpbmdOdW1iZXIudmFsdWUpOyAgICAgXHJcbiAgICAgICAgaWYgKCF2YWxpZDEpIHtcclxuICAgICAgICAgIHRoaXMucm91dGluZ051bWJlci5zZXRWYWx1ZShudWxsKTsgIFxyXG4gICAgICAgIH1cclxuICAgICAgIGlmKHZhbGlkMSl7XHJcbiAgICAgICAgICBpZihBcHBWYWxpZGF0b3JzLmlzVmFsaWRSb3V0aW5nTnVtYmVyKHRoaXMucm91dGluZ051bWJlcikpe1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRpbmdOdW1iZXIuc2V0VmFsdWUobnVsbCk7ICBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbn1cclxuXHJcblxyXG4gIGdldCByZXF1aXJlZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdjb21tb24ucmVxdWlyZWQnKTtcclxuICB9XHJcblxyXG4gIGdldCBvbmx5TnVtYmVycygpeyBcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnY29tbW9uLm9ubHkubnVtYmVycycpO1xyXG4gIH1cclxuICBnZXQgb25seUxldHRlcnMoKXsgXHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2NvbW1vbi5vbmx5LmxldHRlcnMnKTtcclxuICB9XHJcblxyXG4gIGdldCBhY2NvdW50TWF0Y2goKXtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYmFuay5hY2NvdW50Lm1hdGNoJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgYWNjb3VudE1heCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLmFjY291bnQubWF4Jyk7XHJcbiAgfVxyXG4gIGdldCB2YWxpZE51bWJlcigpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLnZhbGlkLm51bWJlcicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJvdXRpbmdOdW1iZXJJbnZhbGlkKCl7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2Jhbmsucm91dGluZy5udW1iZXIuaW52YWxpZCcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbGlkUm91dGluZ051bWJlcigpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLnZhbGlkYXRpb24ucm91dGluZy5udW1iZXInKTtcclxuICB9XHJcblxyXG4gIGdldCBpbnZhbGlkUm91dGluZ051bWJlcigpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLnZhbGlkYXRpb24ucm91dGluZy5udW1iZXIuaW52YWxpZCcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjUGF0dGVybigpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLnZhbGlkYXRpb24uYWMucGF0dGVybicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjVmFsaWROdW1iZXIoKXtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnYmFuay52YWxpZGF0aW9uLmFjLnZhbGlkLm51bWJlcicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjTWF4bGVuZ3RoKCl7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2JhbmsudmFsaWRhdGlvbi5hYy5tYXhsZW5ndGgnKTtcclxuICB9XHJcblxyXG4gIGdldCBhY01pbkxlbmd0aCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLnZhbGlkYXRpb24uYWMubWlubGVuZ3RoJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgYWNjb3VudE51bWJlckNvbXBhcmlzaW9uVmFsaWRhdGlvbigpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdiYW5rLnZhbGlkYXRpb24uYWMubnVtYmVyLmNvbXBhcmlzaW9uJyk7XHJcbiAgfVxyXG59IiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJiYW5rRGV0YWlsc0Zvcm1cIiAjYmFua0RldGFpbHNGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDZweDtcIj5cclxuICAgIDxpb24tZ3JpZCBzdHlsZT1cInBhZGRpbmc6IDBweDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1mb3JtZ3JpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJuYW1lT25BY2NvdW50XCI+e3snYmFuay5hY2NvdW50Lm5hbWUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxici8+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJuYW1lT25BY2NvdW50XCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJuYW1lT25BY2NvdW50XCIgbWF4bGVuZ3RoPVwiMzBcIi8+ICBcclxuICAgICAgICAgICAgICAgIDxici8+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nbmFtZU9uQWNjb3VudCcgW2Zvcm1dPVwiYmFua0RldGFpbHNGb3JtRGlyZWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAgcmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IG9ubHlMZXR0ZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+e3snYmFuay5hY2NvdW50LnR5cGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxici8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWZsZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFtvcHRpb25zXT1cImFjY291bnRUeXBlT3B0aW9uc1wiIFtmb3JtQ29udHJvbF09XCJhY2NvdW50VHlwZVwiIFttdWx0aXBsZV09ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwidGV4dFwiIG9wdGlvblZhbHVlPVwidmFsdWVcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nYWNjb3VudFR5cGUnIFtmb3JtXT1cImJhbmtEZXRhaWxzRm9ybURpcmVjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyRGVmXT1cIntyZXF1aXJlZDogIHJlcXVpcmVkfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+e3snYmFuay5udW1iZXJzJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1zdWJoZWFkaW5nIGlvbi1wYWRkaW5nLXRvcFwiPnt7J2JhbmsuY2hlY2tpbmcuYWNjb3VudCcgfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktZGVzYyBpb24tcGFkZGluZy10b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydiYW5rLmZpbmQucm91dGluZy5udW1iZXInIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJjaGVjayBpbWFnZVwiIHNyYz1cImFzc2V0cy9pY29uL2NoZWNrLnBuZ1wiIGNsYXNzPVwiaW9uLXBhZGRpbmctdG9wXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktc3ViaGVhZGluZyBpb24tcGFkZGluZy10b3BcIj57eydiYW5rLnNhdmluZy5hY2NvdW50JyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1kZXNjIGlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J2JhbmsuZGlyZWN0LmRlcG9zaXQnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInJvdXRpbmdOdW1iZXJJbnB1dFwiPnt7J2Jhbmsucm91dGluZy5udW1iZXInIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxici8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInJvdXRpbmdOdW1iZXJJbnB1dFwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cInJvdXRpbmdOdW1iZXJcIiBtaW5sZW5ndGg9XCI5XCIgbWF4bGVuZ3RoPVwiOVwiICBpbnB1dG1vZGU9XCJudW1lcmljXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5yZXBsYWNlKC9cXEQrL2csICcnKVwiIHNpemU9XCI5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwicm91dGluZ051bWJlclZhbGlkYXRpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAvPiBcclxuICAgICAgICAgICAgICAgICAgICAgIDxici8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVENTVVgtMjU0IGNvbW1lbnRlZCB0aGUgY2hlY2sgZm9yIHZhbGlkIGJhbmsgYWNjb3VudCBmb3Igcm91dGluZyBudW1iZXIgYXMgS0RPTCBkb2VzbnQgbmVlZCBpdC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IGlkPVwicm91dGluZ051bWJlclwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cInJvdXRpbmdOdW1iZXJcIiBtYXhsZW5ndGg9XCI5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJmZXRjaEJhbmtOYW1lKCRldmVudClcIiAvPjxici8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdyb3V0aW5nTnVtYmVyJyBbZm9ybV09XCJiYW5rRGV0YWlsc0Zvcm1EaXJlY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRMZW5ndGhSb3V0aW5nOiB2YWxpZFJvdXRpbmdOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUm91dGluZzogb25seU51bWJlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSb3V0aW5nTnVtYmVyTm90VmFsaWQ6IGludmFsaWRSb3V0aW5nTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sYmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInJvdXRpbmdOdW1iZXJcIj4mbmJzcDs8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZy10b3AgaW9uLXBhZGRpbmctYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFua05hbWUgfCBwcm9wZXJDYXNlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGFjY291bnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImJhbmtBY2NvdW50TnVtYmVyXCI+e3snYmFuay5hY2NvdW50Lm51bWJlcicgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtcGFzc3dvcmQgaW5wdXRJZD1cImJhbmtBY2NvdW50TnVtYmVyXCIgW2Zvcm1Db250cm9sXT1cImFjY291bnROdW1iZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiMTdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwic2FuaXRpemVJbnB1dCgkZXZlbnQpXCIgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9IFwiYWNjb3VudE51bWJlcm1pbmxlbmdodHZhbGlkYXRpb24oJGV2ZW50KVwiICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmVlZGJhY2tdPVwiZmFsc2VcIiBbdG9nZ2xlTWFza109XCJ0cnVlXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1wYXNzd29yZD4gPGJyLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2FjY291bnROdW1iZXInIFtmb3JtXT1cImJhbmtEZXRhaWxzRm9ybURpcmVjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogYWNQYXR0ZXJuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNOdW1iZXI6IGFjVmFsaWROdW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aDogYWNNYXhsZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aDogYWNNaW5MZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgYWNjb3VudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicmVFbnRlckFjY291bnROdW1iZXJcIj57eydiYW5rLnJlZW50ZXIuYWNjb3VudCcgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtcGFzc3dvcmQgaW5wdXRJZD1cInJlRW50ZXJBY2NvdW50TnVtYmVyXCIgW2Zvcm1Db250cm9sXT1cInJlRW50ZXJBY2NvdW50TnVtYmVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjE3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInNhbml0aXplSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJhY2NvdW50TnVtYmVyQ29tcGFyaXNpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmVlZGJhY2tdPVwiZmFsc2VcIiBbdG9nZ2xlTWFza109XCJ0cnVlXCIgc2l6ZT1cIjE3XCI+PC9wLXBhc3N3b3JkPjxici8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdyZUVudGVyQWNjb3VudE51bWJlcicgW2Zvcm1dPVwiYmFua0RldGFpbHNGb3JtRGlyZWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IGFjUGF0dGVybixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnROdW1iZUNvbXBhcmlzaW9uOiBhY2NvdW50TnVtYmVyQ29tcGFyaXNpb25WYWxpZGF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiBhY01heGxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aDogYWNNaW5MZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvaW9uLWdyaWQ+XHJcbjwvZm9ybT4iXX0=
|
|
@@ -21840,22 +21840,17 @@ class BankDetailsComponent {
|
|
|
21840
21840
|
}
|
|
21841
21841
|
}
|
|
21842
21842
|
ngOnInit() {
|
|
21843
|
-
console.log("inside onInit bankdetailscomponent");
|
|
21844
21843
|
this.bankDetailsForm = this.formBuilder.group({
|
|
21845
21844
|
'nameOnAccount': [null, Validators.compose([Validators.required, Validators.pattern(AppRegex.NAME_REGEX)])],
|
|
21846
21845
|
'accountType': [null, Validators.required],
|
|
21847
|
-
'routingNumber': [null, [
|
|
21848
|
-
Validators.required,
|
|
21849
|
-
Validators.pattern(/^[0-4][0-9]{8}$/)
|
|
21850
|
-
]],
|
|
21846
|
+
'routingNumber': [null, Validators.compose([Validators.required])],
|
|
21851
21847
|
'bankName': [null],
|
|
21852
|
-
'accountNumber': [null, Validators.compose([Validators.required, Validators.pattern(AppRegex.ACCOUNT_NUMBER_REGEX), Validators.maxLength(17), Validators.
|
|
21853
|
-
'reEnterAccountNumber': [null, Validators.compose([Validators.required, Validators.pattern(AppRegex.ACCOUNT_NUMBER_REGEX), Validators.maxLength(17), Validators.
|
|
21848
|
+
'accountNumber': [null, Validators.compose([Validators.required, Validators.pattern(AppRegex.ACCOUNT_NUMBER_REGEX), Validators.maxLength(17), Validators.min(8)])],
|
|
21849
|
+
'reEnterAccountNumber': [null, Validators.compose([Validators.required, Validators.pattern(AppRegex.ACCOUNT_NUMBER_REGEX), Validators.maxLength(17), Validators.min(8)])]
|
|
21854
21850
|
});
|
|
21855
21851
|
this.setAccountNumberValidator();
|
|
21856
21852
|
}
|
|
21857
21853
|
submit() {
|
|
21858
|
-
//console.log("this.bankDetailsFormDirective : "+this.bankDetailsFormDirective);
|
|
21859
21854
|
if (this.bankDetailsFormDirective) {
|
|
21860
21855
|
this.bankDetailsFormDirective.onSubmit(undefined);
|
|
21861
21856
|
}
|
|
@@ -21889,7 +21884,7 @@ class BankDetailsComponent {
|
|
|
21889
21884
|
this.util.setValidation(this.routingNumber, this.routingNumberValidators);
|
|
21890
21885
|
const ROUTING_NUMBER = /^[0-4]{1}[0-9]{8}$/;
|
|
21891
21886
|
this.util.setValidation(this.routingNumber, validators1);
|
|
21892
|
-
|
|
21887
|
+
this.util.setValidation(this.routingNumber, AppValidators$1.isValidRoutingNumber);
|
|
21893
21888
|
this.util.setValidation(this.routingNumber, AppValidators$1.isValidLengthRoutingNumber);
|
|
21894
21889
|
this.reEnterAccountNumber.valueChanges.subscribe(val => {
|
|
21895
21890
|
if (this.accountNumber && (this.accountNumber.value != this.reEnterAccountNumber.value)) {
|
|
@@ -21954,14 +21949,13 @@ class BankDetailsComponent {
|
|
|
21954
21949
|
}
|
|
21955
21950
|
writeValue(value) {
|
|
21956
21951
|
if (value) {
|
|
21957
|
-
this.bankDetailsForm.
|
|
21952
|
+
this.bankDetailsForm.setValue(value, { emitEvent: false });
|
|
21958
21953
|
}
|
|
21959
21954
|
}
|
|
21960
21955
|
validate(control) {
|
|
21961
|
-
if (
|
|
21956
|
+
if (this.bankDetailsForm.valid) {
|
|
21962
21957
|
return null;
|
|
21963
21958
|
}
|
|
21964
|
-
return this.bankDetailsForm.valid ? null : { bankDetailsInvalid: true };
|
|
21965
21959
|
}
|
|
21966
21960
|
fetchBankName(event) {
|
|
21967
21961
|
if (this.routingNumber && this.routingNumber.value) {
|
|
@@ -21992,16 +21986,17 @@ class BankDetailsComponent {
|
|
|
21992
21986
|
}
|
|
21993
21987
|
}
|
|
21994
21988
|
// PGLP-1750 in correct Routing NUmber
|
|
21995
|
-
//
|
|
21989
|
+
// if Entered RoutingNumber value is not validated with given RegExp then ,RoutingNumber value is set as a null
|
|
21996
21990
|
routingNumberValidation(event) {
|
|
21997
|
-
const
|
|
21998
|
-
const
|
|
21999
|
-
if (!
|
|
22000
|
-
|
|
22001
|
-
|
|
22002
|
-
if (
|
|
22003
|
-
this.routingNumber
|
|
22004
|
-
|
|
21991
|
+
const ROUTING_NUMBER = /^[0-4]{1}[0-9]{8}$/;
|
|
21992
|
+
const valid1 = ROUTING_NUMBER.test(this.routingNumber.value);
|
|
21993
|
+
if (!valid1) {
|
|
21994
|
+
this.routingNumber.setValue(null);
|
|
21995
|
+
}
|
|
21996
|
+
if (valid1) {
|
|
21997
|
+
if (AppValidators$1.isValidRoutingNumber(this.routingNumber)) {
|
|
21998
|
+
this.routingNumber.setValue(null);
|
|
21999
|
+
}
|
|
22005
22000
|
}
|
|
22006
22001
|
}
|
|
22007
22002
|
get required() {
|