iptdevs-design-system 3.2.15 → 3.2.16
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/esm2020/lib/components/forms/update-user-form/update-user-form.component.mjs +1 -3
- package/fesm2015/iptdevs-design-system.mjs +0 -2
- package/fesm2015/iptdevs-design-system.mjs.map +1 -1
- package/fesm2020/iptdevs-design-system.mjs +0 -2
- package/fesm2020/iptdevs-design-system.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -409,8 +409,6 @@ export class updateUserFormComponent {
|
|
|
409
409
|
validationUserRole() {
|
|
410
410
|
const userRole = this.baseService.getUserRole();
|
|
411
411
|
const isStudentEdit = this.DataStudent?.role === 13;
|
|
412
|
-
// Log para depuración
|
|
413
|
-
console.log('validationUserRole - userRole:', userRole, 'isStudentEdit:', isStudentEdit, 'DataStudent:', this.DataStudent);
|
|
414
412
|
if (userRole === 40 || userRole === 41 || userRole === 42) {
|
|
415
413
|
this.userRoleCommercial = isStudentEdit;
|
|
416
414
|
}
|
|
@@ -874,4 +872,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
|
|
|
874
872
|
}], userUpdatedEvent: [{
|
|
875
873
|
type: Output
|
|
876
874
|
}] } });
|
|
877
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXVzZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy91cGRhdGUtdXNlci1mb3JtL3VwZGF0ZS11c2VyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvdXBkYXRlLXVzZXItZm9ybS91cGRhdGUtdXNlci1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBb0MsTUFBTSxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQTJDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3JGLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBUy9CLE1BQU0sT0FBTyx1QkFBdUI7SUE4Q2xDLFlBQ1UsRUFBZSxFQUNmLEdBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixXQUF3QjtRQUp4QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWpEekIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzNDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHdEQsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQiwyQkFBc0IsR0FBVSxFQUFFLENBQUM7UUFDbkMsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDakIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5Qix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBRWxDLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFDcEIsYUFBUSxHQUFVLEVBQUUsQ0FBQztRQUNyQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMsdUJBQWtCLEdBQVUsS0FBSyxDQUFDO1FBQ2xDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLFVBQUssR0FBVSxFQUFFLENBQUM7UUFDbEIsK0JBQTBCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUUzQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUVyQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBRTNCLFlBQU8sR0FBRztZQUNSLEVBQUUsSUFBSSxFQUFFLDJDQUEyQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDOUQsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUNoRCxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQzlDLEVBQUUsSUFBSSxFQUFFLCtCQUErQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDbEQsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUN6QyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ3pDLEVBQUUsSUFBSSxFQUFFLHFDQUFxQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDeEQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7U0FDMUIsQ0FBQztRQVNBLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksRUFBRTtZQUNuRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDeEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDekI7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUNPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUMvQixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNuQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNwRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixpQ0FBaUM7WUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRztnQkFDcEIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQzNCLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ3BDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO2FBQzlCLENBQUM7WUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNsRTthQUFNO1lBQ0wsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUc7Z0JBQ3BCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUMzQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTthQUM5QixDQUFDO1lBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRU8sUUFBUTtRQUNkLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEQsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUc7Z0JBQ1gsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ2hDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3JDLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQzNDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3ZDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNoQyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN4QyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNyQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUMzQyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN4QyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUMxQyxFQUFFLElBQUksRUFBRSw0QkFBNEIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNoRCxFQUFFLElBQUksRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUM3QyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNyQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUMzQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN0QyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDbkMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDekMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDcEMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7YUFDaEMsQ0FBQztTQUNIO2FBQUssSUFBSSxRQUFRLEtBQUssRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUc7Z0JBQ1gsb0NBQW9DO2dCQUNwQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNyQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUMzQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN2QyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDaEMsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDeEMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDckMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDM0MsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDeEMsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDMUMsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDaEQsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDN0MsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDckMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDM0MsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDdEMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ25DLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3pDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3BDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2FBQ2hDLENBQUM7U0FDSDthQUFJO1lBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3hELElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDM0IsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDaEMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDO1FBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO1FBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQztRQUN2QyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDbkQscURBQXFEO1lBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsWUFBWTthQUMxQixDQUFDLENBQUMsQ0FBQztTQUNMO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQztRQUNoRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsS0FBSyxDQUFDLElBQUksUUFBUSxLQUFLLEVBQUUsQ0FBQztRQUVyRCxNQUFNLFFBQVEsR0FBRztZQUNmLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEYsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6RixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN2RixnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdGLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFDLENBQUM7WUFDakQsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNsQixXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLGNBQWMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN2QixNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNqQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxSCxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3hKLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDdEIsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDNUYsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNqRyxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEQsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDOUYsdUJBQXVCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BELG1CQUFtQixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDcEcsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDeEUscUJBQXFCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDN0UsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDbEUsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBRTNGLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNyRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1RCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRWpFLElBQUksT0FBTyxFQUFFO2dCQUNYLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pHLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM1RztpQkFBTTtnQkFDTCxlQUFlLEVBQUUsZUFBZSxFQUFFLENBQUM7Z0JBQ25DLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxDQUFDO2dCQUNyQyxlQUFlLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QixpQkFBaUIsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDakM7WUFFRCxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztZQUMxQyxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDL0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQWU7UUFDcEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLFFBQVEsR0FBRyxRQUFRLElBQUksVUFBVSxJQUFJLFFBQVEsS0FBSyxVQUFVLENBQUM7UUFDbkUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUMsQ0FBQztJQUVELHFCQUFxQixDQUFDLE9BQXdCO1FBQzVDLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQ3RELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUMsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDN0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUNqQztZQUNELElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxZQUFZLEVBQUU7Z0JBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDaEM7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFTO1FBQ3JCLE1BQU0sT0FBTyxHQUE4QjtZQUN6QyxDQUFDLEVBQUUsYUFBYTtZQUNoQixFQUFFLEVBQUUsaUJBQWlCO1lBQ3JCLEVBQUUsRUFBRSx1QkFBdUI7WUFDM0IsRUFBRSxFQUFFLG1CQUFtQjtZQUN2QixFQUFFLEVBQUUsWUFBWTtZQUNoQixFQUFFLEVBQUUsb0JBQW9CO1lBQ3hCLEVBQUUsRUFBRSxpQkFBaUI7WUFDckIsRUFBRSxFQUFFLHVCQUF1QjtZQUMzQixFQUFFLEVBQUUsb0JBQW9CO1lBQ3hCLEVBQUUsRUFBRSxzQkFBc0I7WUFDMUIsRUFBRSxFQUFFLDRCQUE0QjtZQUNoQyxFQUFFLEVBQUUseUJBQXlCO1lBQzdCLEVBQUUsRUFBRSxpQkFBaUI7WUFDckIsRUFBRSxFQUFFLHVCQUF1QjtZQUMzQixFQUFFLEVBQUUsa0JBQWtCO1lBQ3RCLEVBQUUsRUFBRSxlQUFlO1lBQ25CLEVBQUUsRUFBRSxxQkFBcUI7WUFDekIsRUFBRSxFQUFFLGdCQUFnQjtZQUNwQixFQUFFLEVBQUUsV0FBVztTQUNoQixDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpELE1BQU0sU0FBUyxHQUFRO2dCQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDakMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLEVBQUU7Z0JBQzNDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNuQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSTtnQkFDdkMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLEVBQUU7Z0JBQ2pELE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sSUFBSSxFQUFFO2dCQUN2QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixJQUFJLEVBQUU7Z0JBQ3pELFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxFQUFFO2dCQUNqRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTztnQkFDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUs7Z0JBQ25DLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJO2dCQUNqQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNoRyxjQUFjLEVBQUUsS0FBSztnQkFDckIsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxJQUFJLEVBQUU7YUFDM0MsQ0FBQztZQUVGLCtCQUErQjtZQUMvQixJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRTtnQkFDbkMsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO2FBQzdEO2lCQUFNO2dCQUNMLFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO2FBQzdEO1lBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO29CQUN2QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFO29CQUN0RCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxJQUFJLEVBQUU7b0JBQ2hFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLElBQUksRUFBRTtvQkFDdEUsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLElBQUksRUFBRTtvQkFDNUQsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixJQUFJLEVBQUU7b0JBQzlFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLElBQUksRUFBRTtvQkFDdEUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsSUFBSSxFQUFFO29CQUNsRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxJQUFJLEVBQUU7b0JBQzFFLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUU7aUJBQ3pELENBQUMsQ0FBQzthQUNKO1lBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekQsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO2dCQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ3BEO1lBQ0QsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO2dCQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ2hEO1lBQ0QsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFO2dCQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzlDO1lBQ0QsSUFBSSxTQUFTLENBQUMsWUFBWSxFQUFFO2dCQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsc0JBQXNCLENBQUM7Z0JBQzFELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDakU7WUFDRCxJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzthQUM5RTtZQUNELElBQUksU0FBUyxDQUFDLHVCQUF1QixFQUFFO2dCQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7YUFDbkc7WUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRTtvQkFDbkQscURBQXFEO29CQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDN0QsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO3dCQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLFlBQVk7cUJBQzFCLENBQUMsQ0FBQyxDQUFDO2lCQUNMO3FCQUFNO29CQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2lCQUNuQjtnQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDNUM7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBRTFCO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNwRCxzQkFBc0I7UUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFM0gsSUFBSSxRQUFRLEtBQUssRUFBRSxJQUFJLFFBQVEsS0FBSyxFQUFFLElBQUksUUFBUSxLQUFLLEVBQUUsRUFBRTtZQUN6RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsYUFBYSxDQUFDO1NBQ3pDO2FBQU07WUFDTCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsVUFBZTtRQUU1QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFFM0IsSUFBSSxVQUFVLElBQUksQ0FBQyxJQUFJLFVBQVUsSUFBSSxDQUFDLEVBQUU7WUFDdEMsYUFBYSxDQUFDLGFBQWEsQ0FBQztnQkFDMUIsVUFBVSxDQUFDLFFBQVE7Z0JBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzthQUNyQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsYUFBYSxDQUFDLGFBQWEsQ0FBQztnQkFDMUIsVUFBVSxDQUFDLFFBQVE7Z0JBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7YUFDL0IsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxhQUFhLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLFVBQWU7UUFDN0MsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN0RDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBVztRQUNyQyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xEO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFZO1FBQ3hCLE1BQU0sYUFBYSxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3BGLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtZQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEUsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFO2dCQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO29CQUM1RCxNQUFNLEtBQUssR0FBRyxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssUUFBUTt3QkFDOUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQzt3QkFDOUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7b0JBQ25CLE9BQU8sS0FBSyxLQUFLLGFBQWEsQ0FBQztnQkFDakMsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQzthQUNsQjtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDbEI7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzVFLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDNUI7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDNUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRTtZQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUMzRCxNQUFNLFNBQVMsR0FBRyxPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDL0YsT0FBTyxTQUFTLEtBQUssV0FBVyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLE1BQU0sVUFBVSxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hFLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsTUFBVztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBUztRQUNsQixJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hELE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1lBQzNFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV4QyxtRUFBbUU7WUFDbkUsSUFBSSxrQ0FBa0MsS0FBSyxJQUFJLENBQUMsMEJBQTBCLEVBQUU7Z0JBQzFFLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUVuRSxJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRTtvQkFDbkMsdURBQXVEO29CQUN2RCxJQUFJLENBQUMsZUFBZSxFQUFFO3dCQUNwQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7d0JBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDako7eUJBQU07d0JBQ0wsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDbEcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztxQkFDNUQ7b0JBQ0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFO3dCQUN2QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjt3QkFDMUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDakw7eUJBQU07d0JBQ0wsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQy9ILGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDeEc7aUJBQ0Y7cUJBQU07b0JBQ0wsSUFBSSxlQUFlLEVBQUU7d0JBQ25CLGVBQWUsQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDbEMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDOUI7b0JBQ0QsSUFBSSxrQkFBa0IsRUFBRTt3QkFDdEIsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7d0JBQ3JDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDaEM7aUJBQ0Y7Z0JBRUQsZUFBZSxFQUFFLHNCQUFzQixFQUFFLENBQUM7Z0JBQzFDLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLENBQUM7YUFDOUM7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQywwQkFBMEIsR0FBRyxLQUFLLENBQUM7WUFDeEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNuRSxJQUFJLGVBQWUsRUFBRTtnQkFDbkIsZUFBZSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNsQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QixlQUFlLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzthQUMxQztZQUNELElBQUksa0JBQWtCLEVBQUU7Z0JBQ3RCLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLGtCQUFrQixDQUFDLHNCQUFzQixFQUFFLENBQUM7YUFDN0M7U0FDRjtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMvQyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV2RCxJQUFJLFlBQVksQ0FBQyxjQUFjLEVBQUU7WUFDL0IsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUN2QyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQzVDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFakUsSUFDRSxlQUFlLEVBQUUsS0FBSztnQkFDdEIsaUJBQWlCLEVBQUUsS0FBSztnQkFDeEIsUUFBUSxLQUFLLFVBQVU7Z0JBQ3ZCLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQ3ZCO2dCQUNBLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE1BQU0sZUFBZSxHQUEwQjtZQUM3QyxNQUFNO1lBQ04sV0FBVztZQUNYLE9BQU87WUFDUCxRQUFRO1lBQ1IsY0FBYztZQUNkLFNBQVM7WUFDVCxrQkFBa0I7WUFDbEIsY0FBYztZQUNkLFNBQVM7WUFDVCxPQUFPO1lBQ1AsTUFBTTtZQUNOLE1BQU07WUFDTixRQUFRO1NBQ1QsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ25DLGVBQWUsQ0FBQyxJQUFJLENBQ2xCLFdBQVcsRUFDWCxjQUFjLENBQ2YsQ0FBQztTQUNIO1FBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsZUFBZSxDQUFDLElBQUksQ0FDbEIsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixjQUFjLENBQ2YsQ0FBQztTQUNIO1FBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxlQUFlLEVBQUU7WUFDbkMsSUFBSSxhQUFrQixDQUFDO1lBQ3ZCLElBQUksaUJBQWlCLEdBQVEsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWpELFFBQVEsS0FBSyxFQUFFO2dCQUNiLEtBQUssTUFBTTtvQkFDVCxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUM1QyxNQUFNO2dCQUNSLEtBQUssV0FBVztvQkFDZCxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO29CQUNqRCxNQUFNO2dCQUNSLEtBQUssT0FBTztvQkFDVixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO29CQUM3QyxNQUFNO2dCQUNSLEtBQUssV0FBVztvQkFDZCxhQUFhLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzFGLE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7b0JBQ2hELE1BQU07Z0JBQ1IsS0FBSyxjQUFjO29CQUNqQixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO29CQUNwRCxNQUFNO2dCQUNSLEtBQUssU0FBUztvQkFDWixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO29CQUMvQyxNQUFNO2dCQUNSLEtBQUssa0JBQWtCO29CQUNyQixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7b0JBQ3hELE1BQU07Z0JBQ1IsS0FBSyxjQUFjO29CQUNqQixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO29CQUNwRCxNQUFNO2dCQUNSLEtBQUssU0FBUztvQkFDWixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztvQkFDckQsTUFBTTtnQkFDUixLQUFLLE9BQU87b0JBQ1YsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ25ELE1BQU07Z0JBQ1IsS0FBSyxNQUFNO29CQUNULGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNsRCxNQUFNO2dCQUNSLEtBQUssTUFBTTtvQkFDVCxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzNHLE1BQU07Z0JBQ1IsS0FBSyxjQUFjO29CQUNqQixhQUFhLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNGLE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7b0JBQ25ELE1BQU07Z0JBQ1IsS0FBSyxhQUFhO29CQUNoQixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQzFELE1BQU07Z0JBQ1IsS0FBSyxrQkFBa0I7b0JBQ3JCLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQztvQkFDL0QsTUFBTTtnQkFDUixLQUFLLHFCQUFxQjtvQkFDeEIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUM7b0JBQzVELE1BQU07Z0JBQ1IsS0FBSyxnQkFBZ0I7b0JBQ25CLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztvQkFDN0QsTUFBTTtnQkFDUixLQUFLLHlCQUF5QjtvQkFDNUIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7b0JBQ3RFLE1BQU07Z0JBQ1IsS0FBSyxxQkFBcUI7b0JBQ3hCLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQztvQkFDbEUsTUFBTTtnQkFDUixLQUFLLG1CQUFtQjtvQkFDdEIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO29CQUNoRSxNQUFNO2dCQUNSLEtBQUssdUJBQXVCO29CQUMxQixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGNBQWMsSUFBSSxFQUFFLENBQUM7b0JBQ3BFLE1BQU07Z0JBQ1IsS0FBSyxjQUFjO29CQUNqQixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzNELE1BQU07Z0JBQ1I7b0JBQ0UsYUFBYSxHQUFHLEVBQUUsQ0FBQzthQUN0QjtZQUVELE1BQU0saUJBQWlCLEdBQUcsaUJBQWlCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVGLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFckYsSUFBSSxpQkFBaUIsS0FBSyxrQkFBa0IsRUFBRTtnQkFDNUMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLElBQ0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPO1lBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUN4QyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFDdEI7WUFDQSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFdkMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUU1QyxNQUFNLE9BQU8sR0FBUTtZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUU7WUFDdEMsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7Z0JBQzNCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtnQkFDcEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO2dCQUM5QixZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVk7Z0JBQ3BDLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTztnQkFDMUIsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLGdCQUFnQjtnQkFDNUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZO2dCQUNwQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7Z0JBQ3RCLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtnQkFDeEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO2dCQUNwQixZQUFZLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO2dCQUMvRCxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07Z0JBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM5RSxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUM1RjtZQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCO2dCQUM1QixDQUFDLENBQUM7b0JBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSTtvQkFDakQsSUFBSSxFQUFFLFNBQVMsQ0FBQyxXQUFXLElBQUksSUFBSTtvQkFDbkMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJO29CQUM3QyxZQUFZLEVBQUUsU0FBUyxDQUFDLG1CQUFtQixJQUFJLElBQUk7b0JBQ25ELE9BQU8sRUFBRSxTQUFTLENBQUMsY0FBYyxJQUFJLElBQUk7b0JBQ3pDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyx1QkFBdUIsSUFBSSxJQUFJO29CQUMzRCxZQUFZLEVBQUUsU0FBUyxDQUFDLG1CQUFtQixJQUFJLElBQUk7b0JBQ25ELFVBQVUsRUFBRSxTQUFTLENBQUMsaUJBQWlCLElBQUksSUFBSTtvQkFDL0MsY0FBYyxFQUFFLFNBQVMsQ0FBQyxxQkFBcUIsSUFBSSxJQUFJO29CQUN2RCxLQUFLLEVBQUUsU0FBUyxDQUFDLFlBQVksSUFBSSxJQUFJO2lCQUN0QztnQkFDSCxDQUFDLENBQUMsSUFBSTtZQUNSLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTTtZQUMzQixXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7U0FDdEMsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ25ELElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQzt3QkFDUixRQUFRLEVBQUUsUUFBUTt3QkFDbEIsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsS0FBSyxFQUFFLHdDQUF3Qzt3QkFDL0MsaUJBQWlCLEVBQUUsS0FBSzt3QkFDeEIsS0FBSyxFQUFFLElBQUk7cUJBQ1osQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2lCQUNuQjtxQkFBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtvQkFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQzt3QkFDUixRQUFRLEVBQUUsUUFBUTt3QkFDbEIsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTzt3QkFDNUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTTt3QkFDMUIsaUJBQWlCLEVBQUUsS0FBSzt3QkFDeEIsS0FBSyxFQUFFLElBQUk7cUJBQ1osQ0FBQyxDQUFDO2lCQUNKO2dCQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNSLFFBQVEsRUFBRSxRQUFRO29CQUNsQixJQUFJLEVBQUUsT0FBTztvQkFDYixLQUFLLEVBQUUsaUNBQWlDO29CQUN4QyxpQkFBaUIsRUFBRSxLQUFLO29CQUN4QixLQUFLLEVBQUUsSUFBSTtpQkFDWixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDdEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFDRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU87WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ3hDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUN0QjtZQUNBLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUV2QyxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNwQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLDRCQUE0QixDQUFDLElBQVM7UUFDcEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFeEUsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEQsSUFBSSxDQUFDLDBCQUEwQixHQUFHLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7O29IQXY1QlUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsc01BRnZCLEVBQUUsK0NDYmYsODNrQkFtV087MkZEcFZNLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxzQkFBc0IsYUFHckIsRUFBRTtxTkFHSixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7ICBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvdXNlci1zZXJ2aWNlL3VzZXItc2VydmljZSc7XG5pbXBvcnQgeyAgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL2Jhc2Utc2VydmljZS9iYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgIFBhcmFtZXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3BhcmFtZXRlcnMtc2VydmljZS9wYXJhbWV0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgIElGb3JtRGF0YVJxIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvdXNlci91c2VyLXJxLm1vZGVsJztcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpcHQtdXBkYXRlLXVzZXItZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGRhdGUtdXNlci1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXBkYXRlLXVzZXItZm9ybS5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgdXBkYXRlVXNlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgRGF0YVN0dWRlbnQ6IGFueTtcbiAgQElucHV0KCkgdmlzaWJsZU1vZGFsOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBjbG9zZU1vZGFsSVMgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSB1c2VyVXBkYXRlZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICB1cGRhdGVVc2VyRm9ybSE6IEZvcm1Hcm91cDtcbiAgY29uZmlybUZvcm0hOiBGb3JtR3JvdXA7XG4gIHBob3RvOiBzdHJpbmcgPSAnJztcbiAgcGhvbmVOdW1iZXJJbmRpY2F0aXZlczogYW55W10gPSBbXTtcbiAgaWRUeXBlczogYW55W10gPSBbXTtcbiAgbG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHN0YXRlczogYW55ID0gW107XG4gIGNpdGllczogYW55ID0gW107XG4gIGNvdW50cmllczogYW55ID0gW107XG4gIHNob3dQYXJlbnRTZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dFbWFpbElwdDogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93Q29uZmlybVNlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGFyYW1ldGVyc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwYXJhbWV0ZXJzQWxsPzogYW55O1xuICBpbmRpY2F0aXZlczogYW55W10gPSBbXTtcbiAgY2l2aWxTdGF0dXM6IGFueVtdID0gW107XG4gIGdlbmRlcnM6IGFueVtdID0gW107XG4gIHN0cmF0dW1zOiBhbnlbXSA9IFtdO1xuICBzaG93Q29uZmlybURpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICB1c2VyUm9sZUNvbW1lcmNpYWw6Ym9vbGVhbiA9ZmFsc2U7XG4gIGNhbkVkaXRSb2xlOiBib29sZWFuID0gZmFsc2U7XG4gIHJvbGVzOiBhbnlbXSA9IFtdO1xuICBzaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGluaXRpYWxGb3JtVmFsdWU6IGFueSA9IFtdO1xuICBwcml2YXRlIGlkVHlwZVN1YnNjcmlwdGlvbj86ICBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcGVuZGluZ0luaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIGlzU3R1ZGVudDogYm9vbGVhbiA9IGZhbHNlO1xuICBqdXN0aWZ5T3B0aW9uczogYW55W10gPSBbXTtcbiAgXG4gIHJlYXNvbnMgPSBbXG4gICAgeyBuYW1lOiAnQ29ycmVjY2nDs24gZGUgZXJyb3JlcyBlbiBkYXRvcyBwZXJzb25hbGVzJywgY29kZTogMSB9LFxuICAgIHsgbmFtZTogJ0NvcnJlY2Npb24gZGUgZG9jdW1lbnRhY2lvbicsIGNvZGU6IDIgfSxcbiAgICB7IG5hbWU6ICdBY3R1YWxpemFjacOzbiBkZSBjb250YWN0bycsIGNvZGU6IDMgfSxcbiAgICB7IG5hbWU6ICdjb3JyZWNjaW9uIGRhdG9zIGRlIEFjdWRpZW50ZScsIGNvZGU6IDQgfSxcbiAgICB7IG5hbWU6ICdDYW1iaW8gZGUgY29udHJhc2XDsWEnLCBjb2RlOiA1IH0sXG4gICAgeyBuYW1lOiAnQ2FtYmlvIGRlIHJlc2lkZW5jaWEnLCBjb2RlOiA2IH0sXG4gICAgeyBuYW1lOiAnU3VzcGVuc2nDs24gbyByZWFjdGl2YWNpw7NuIGRlIGN1ZW50YScsIGNvZGU6IDcgfSxcbiAgICB7IG5hbWU6ICdPdHJvJywgY29kZTogOCB9XG4gIF07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcGFyYW1ldGVyU2VydmljZTogUGFyYW1ldGVyU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2VTZXJ2aWNlOiBCYXNlU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5zZXRSb2xlcygpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLmluaXRDb25maXJtRm9ybSgpO1xuICAgIHRoaXMudmFsaWRhdGlvblVzZXJSb2xlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdldFBhcmFtZXRlcnMoKTtcbiAgICB0aGlzLnRyYWNrSWRUeXBlQ2hhbmdlcygpO1xuICAgIHRoaXMuc2V0SnVzdGlmeU9wdGlvbnMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sndmlzaWJsZU1vZGFsJ10gJiYgY2hhbmdlc1sndmlzaWJsZU1vZGFsJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzTG9hZGVkKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XG4gICAgICB0aGlzLnNldEp1c3RpZnlPcHRpb25zKCk7XG4gICAgICB0aGlzLnRyYWNrSWRUeXBlQ2hhbmdlcygpO1xuICAgICAgdGhpcy52YWxpZGF0aW9uVXNlclJvbGUoKTtcbiAgICAgIHRoaXMuc2V0Um9sZXMoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1lbHNlICB7XG4gICAgICAgIHRoaXMucGVuZGluZ0luaXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlkVHlwZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5pZFR5cGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBpbml0Q29uZmlybUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgcmVhc29uOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBvYnNlcnZhdGlvbjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjUwKV1dXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldEp1c3RpZnlPcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTdHVkZW50ID0gdGhpcy5EYXRhU3R1ZGVudD8ucm9sZSA9PT0gMTM7XG5cbiAgICBpZiAodGhpcy5pc1N0dWRlbnQpIHtcbiAgICAgIC8vIExpc3RhIGNvbXBsZXRhIHBhcmEgZXN0dWRpYW50ZVxuICAgICAgdGhpcy5qdXN0aWZ5T3B0aW9ucyA9IFtcbiAgICAgICAgeyBuYW1lOiAnQWN0aXZvJywgY29kZTogMSB9LFxuICAgICAgICB7IG5hbWU6ICdTdXNwZW5kaWRvIHAvcGFnbycsIGNvZGU6IDIgfSxcbiAgICAgICAgeyBuYW1lOiAnUGF1c2FkbyBwcm9jZXNvJywgY29kZTogMyB9LFxuICAgICAgICB7IG5hbWU6ICdSZW1vdmlkbycsIGNvZGU6IDQgfVxuICAgICAgXTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdzdGF0dXMnKT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpc3RhIHJlZHVjaWRhIHBhcmEgb3Ryb3Mgcm9sZXNcbiAgICAgIHRoaXMuanVzdGlmeU9wdGlvbnMgPSBbXG4gICAgICAgIHsgbmFtZTogJ0FjdGl2bycsIGNvZGU6IDEgfSxcbiAgICAgICAgeyBuYW1lOiAnUmVtb3ZpZG8nLCBjb2RlOiA0IH1cbiAgICAgIF07XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnc3RhdHVzJyk/LmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRSb2xlcygpOiB2b2lkIHtcbiAgICBjb25zdCB1c2VyUm9sZSA9IHRoaXMuYmFzZVNlcnZpY2UuZ2V0VXNlclJvbGUoKTtcbiAgICBpZiAodXNlclJvbGUgPT09IDEpIHtcbiAgICAgIHRoaXMucm9sZXMgPSBbXG4gICAgICAgIHsgbmFtZTogJ1N1cGVyIEFkbWluJywgY29kZTogMSB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBBY2FkZW1pY28nLCBjb2RlOiAxMCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBBY2FkZW1pY28nLCBjb2RlOiAxMSB9LFxuICAgICAgICB7IG5hbWU6ICdUZWFjaGVyIEFjYWRlbWljbycsIGNvZGU6IDEyIH0sXG4gICAgICAgIHsgbmFtZTogJ0VzdHVkaWFudGUnLCBjb2RlOiAxMyB9LFxuICAgICAgICB7IG5hbWU6ICdQb3NpYmxlIEVzdHVkaWFudGUnLCBjb2RlOiAxNSB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBNYXJrZXRpbmcnLCBjb2RlOiAyMCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBNYXJrZXRpbmcnLCBjb2RlOiAyMSB9LFxuICAgICAgICB7IG5hbWU6ICdBdXhpbGlhciBNYXJrZXRpbmcnLCBjb2RlOiAyMiB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBBZG1pbmlzdHJhdGl2bycsIGNvZGU6IDMwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIEFkbWluaXN0cmF0aXZvJywgY29kZTogMzEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXV4aWxpYXIgQWRtaW5pc3RyYXRpdm8nLCBjb2RlOiAzMiB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBDb21lcmNpYWwnLCBjb2RlOiA0MCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBDb21lcmNpYWwnLCBjb2RlOiA0MSB9LFxuICAgICAgICB7IG5hbWU6ICdBc2Vzb3IgQ29tZXJjaWFsJywgY29kZTogNDIgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQ2FydGVyYScsIGNvZGU6IDUwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIENhcnRlcmEnLCBjb2RlOiA1MSB9LFxuICAgICAgICB7IG5hbWU6ICdBc2Vzb3IgQ2FydGVyYScsIGNvZGU6IDUyIH0sXG4gICAgICAgIHsgbmFtZTogJ1Byb3ZlZWRvcicsIGNvZGU6IDYwIH1cbiAgICAgIF07ICAgICAgXG4gICAgfWVsc2UgaWYgKHVzZXJSb2xlID09PSAzMCkge1xuICAgICAgdGhpcy5yb2xlcyA9IFtcbiAgICAgICAgLy8geyBuYW1lOiAnU3VwZXIgQWRtaW4nLCBjb2RlOiAxIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIEFjYWRlbWljbycsIGNvZGU6IDEwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIEFjYWRlbWljbycsIGNvZGU6IDExIH0sXG4gICAgICAgIHsgbmFtZTogJ1RlYWNoZXIgQWNhZGVtaWNvJywgY29kZTogMTIgfSxcbiAgICAgICAgeyBuYW1lOiAnRXN0dWRpYW50ZScsIGNvZGU6IDEzIH0sXG4gICAgICAgIHsgbmFtZTogJ1Bvc2libGUgRXN0dWRpYW50ZScsIGNvZGU6IDE1IH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIE1hcmtldGluZycsIGNvZGU6IDIwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIE1hcmtldGluZycsIGNvZGU6IDIxIH0sXG4gICAgICAgIHsgbmFtZTogJ0F1eGlsaWFyIE1hcmtldGluZycsIGNvZGU6IDIyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIEFkbWluaXN0cmF0aXZvJywgY29kZTogMzAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQWRtaW5pc3RyYXRpdm8nLCBjb2RlOiAzMSB9LFxuICAgICAgICB7IG5hbWU6ICdBdXhpbGlhciBBZG1pbmlzdHJhdGl2bycsIGNvZGU6IDMyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIENvbWVyY2lhbCcsIGNvZGU6IDQwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIENvbWVyY2lhbCcsIGNvZGU6IDQxIH0sXG4gICAgICAgIHsgbmFtZTogJ0FzZXNvciBDb21lcmNpYWwnLCBjb2RlOiA0MiB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBDYXJ0ZXJhJywgY29kZTogNTAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQ2FydGVyYScsIGNvZGU6IDUxIH0sXG4gICAgICAgIHsgbmFtZTogJ0FzZXNvciBDYXJ0ZXJhJywgY29kZTogNTIgfSxcbiAgICAgICAgeyBuYW1lOiAnUHJvdmVlZG9yJywgY29kZTogNjAgfVxuICAgICAgXTsgXG4gICAgfWVsc2V7XG4gICAgICB0aGlzLnJvbGVzID0gW107XG4gICAgfVxuICB9XG5cbiAgZ2V0UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYXJhbWV0ZXJzTG9hZGVkKSB7XG4gICAgICB0aGlzLnNldFBhcmFtZXRlcnMoKTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldEFsbFBhcmFtZXRlcnNDb2RGb3JtKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnNBbGwgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnNMb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldFBhcmFtZXRlcnMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xuICAgICAgICB0aGlzLnRyYWNrSWRUeXBlQ2hhbmdlcygpO1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25Vc2VyUm9sZSgpO1xuICAgICAgICB0aGlzLnNldFJvbGVzKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nSW5pdCA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHBhcmFtZXRlcnM6JywgZXJyKTtcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzTG9hZGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuaWRUeXBlcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uVHlwZUlkQ2FyZEJ5Q291bnRyeUNvbDtcbiAgICB0aGlzLmluZGljYXRpdmVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5pbmRpY2F0aXZlcztcbiAgICB0aGlzLmNvdW50cmllcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uY291bnRyeTtcbiAgICB0aGlzLmNpdmlsU3RhdHVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5jaXZpbFN0YXR1cztcbiAgICB0aGlzLnN0YXRlcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uU3RhdGU7XG4gICAgdGhpcy5jaXRpZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmNpdHk7XG4gICAgaWYgKHRoaXMucGFyYW1ldGVyc0FsbCAmJiB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyKSB7XG4gICAgICAvLyBUcmFuc2Zvcm1hciBnZW5kZXIgZW4gdW4gYXJyZWdsbyBkZSB7IGNvZGUsIG5hbWUgfVxuICAgICAgdGhpcy5nZW5kZXJzID0gdGhpcy5wYXJhbWV0ZXJzQWxsLmdlbmRlci5tYXAoKGdlbmRlcjogYW55KSA9PiAoe1xuICAgICAgICBjb2RlOiBnZW5kZXIuY29kZSxcbiAgICAgICAgbmFtZTogZ2VuZGVyLm5hbWVfc3BhbmlzaFxuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdlbmRlcnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1BhcmVudFNlY3Rpb24gPSAhIXRoaXMuRGF0YVN0dWRlbnQ/LmNvZHM/LnBhcmVudD8uY29kZTtcbiAgICB0aGlzLmNoZWNrUm9sZUZvckFkZGl0aW9uYWxGaWVsZHModGhpcy5EYXRhU3R1ZGVudC5yb2xlKTtcbiAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgdGhpcy5wb3B1bGF0ZUZvcm0oKTtcbiAgfVxuXG4gIGluaXRGb3JtKCk6IHZvaWQge1xuICAgIGNvbnN0IHVzZXJSb2xlID0gdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyUm9sZSgpO1xuICAgIHRoaXMuY2FuRWRpdFJvbGUgPSB1c2VyUm9sZSA9PT0gMSB8fCB1c2VyUm9sZSA9PT0gMzA7XG5cbiAgICBjb25zdCBiYXNlRm9ybSA9IHtcbiAgICAgIG5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzMildXSxcbiAgICAgIGxhc3RfbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKV1dLFxuICAgICAgZW1haWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1MCldXSxcbiAgICAgIGdlbmRlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgaWRfY2FyZF90eXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBpZF9jYXJkOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjApXV0sXG4gICAgICBwaG9uZV9pbmRpY2F0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBwaG9uZV9udW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTUpXV0sXG4gICAgICBjb3VudHJ5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBzdGF0ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgY2l0eTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgcm9sZTogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogIXRoaXMuY2FuRWRpdFJvbGV9XSxcbiAgICAgIHBhc3N3b3JkOiBbJycsIFtdXSxcbiAgICAgIHJlX3Bhc3N3b3JkOiBbJycsIFtdXSxcbiAgICAgIGNoYW5nZVBhc3N3b3JkOiBbZmFsc2VdLFxuICAgICAgc3RhdHVzOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZW1haWxfaXB0OiBbJycsIHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjUwKV0gOiBbXV0sXG4gICAgICBzZXJ2aWNlX2hvdXI6IFsnJywgdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XSskLyksIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCg0NCldIDogW11dXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnNob3dQYXJlbnRTZWN0aW9uKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGJhc2VGb3JtLCB7XG4gICAgICAgIHBhcmVudF9uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTUwKV1dLFxuICAgICAgICBwYXJlbnRfbGFzdF9uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTUwKV1dLFxuICAgICAgICBwYXJlbnRfaWRfY2FyZF90eXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgIHBhcmVudF9pZF9jYXJkOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzApXV0sXG4gICAgICAgIHBhcmVudF9waG9uZV9pbmRpY2F0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgIHBhcmVudF9waG9uZV9udW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjApXV0sXG4gICAgICAgIHBhcmVudF9vY2N1cGF0aW9uOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldXSxcbiAgICAgICAgcGFyZW50X29mZmljZV9hZHJyZXNzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNTApXV0sXG4gICAgICAgIHBhcmVudF9lbWFpbDogWycnLCBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU1KV1dXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtID0gdGhpcy5mYi5ncm91cChiYXNlRm9ybSwgeyB2YWxpZGF0b3JzOiB0aGlzLnBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnY2hhbmdlUGFzc3dvcmQnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgICAgY29uc3QgcGFzc3dvcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3Bhc3N3b3JkJyk7XG4gICAgICBjb25zdCByZVBhc3N3b3JkQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyZV9wYXNzd29yZCcpO1xuXG4gICAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgICBwYXNzd29yZENvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzMildKTtcbiAgICAgICAgcmVQYXNzd29yZENvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzMildKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhc3N3b3JkQ29udHJvbD8uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHJlUGFzc3dvcmRDb250cm9sPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgcGFzc3dvcmRDb250cm9sPy5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIHJlUGFzc3dvcmRDb250cm9sPy5zZXRWYWx1ZSgnJyk7XG4gICAgICB9XG5cbiAgICAgIHBhc3N3b3JkQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgcmVQYXNzd29yZENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9KTtcblxuICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdwYXNzd29yZCcpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyZV9wYXNzd29yZCcpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcGFzc3dvcmRNYXRjaFZhbGlkYXRvcihmb3JtOiBGb3JtR3JvdXApOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwge1xuICAgIGNvbnN0IGNoYW5nZVBhc3N3b3JkID0gZm9ybS5nZXQoJ2NoYW5nZVBhc3N3b3JkJyk/LnZhbHVlO1xuICAgIGNvbnN0IHBhc3N3b3JkID0gZm9ybS5nZXQoJ3Bhc3N3b3JkJyk/LnZhbHVlO1xuICAgIGNvbnN0IHJlUGFzc3dvcmQgPSBmb3JtLmdldCgncmVfcGFzc3dvcmQnKT8udmFsdWU7XG4gICAgaWYgKCFjaGFuZ2VQYXNzd29yZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IG1pc21hdGNoID0gcGFzc3dvcmQgJiYgcmVQYXNzd29yZCAmJiBwYXNzd29yZCAhPT0gcmVQYXNzd29yZDtcbiAgICByZXR1cm4gbWlzbWF0Y2ggPyB7IG1pc21hdGNoOiB0cnVlIH0gOiBudWxsO1xuICB9XG5cbiAgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgdHlwZW9mIGNvbnRyb2wudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB0cmltbWVkVmFsdWUgPSBjb250cm9sLnZhbHVlLnRyaW0oKTtcbiAgICAgIGlmICh0cmltbWVkVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7IG9ubHlXaGl0ZXNwYWNlOiB0cnVlIH07XG4gICAgICB9XG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gdHJpbW1lZFZhbHVlKSB7XG4gICAgICAgIHJldHVybiB7IGhhc1doaXRlc3BhY2U6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cmFuc2Zvcm1Sb2xlKHJvbGU6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm9sZU1hcDogeyBba2V5OiBudW1iZXJdOiBzdHJpbmcgfSA9IHtcbiAgICAgIDE6ICdTdXBlciBBZG1pbicsXG4gICAgICAxMDogJ0xpZGVyIEFjYWRlbWljbycsXG4gICAgICAxMTogJ0Nvb3JkaW5hZG9yIEFjYWRlbWljbycsXG4gICAgICAxMjogJ1RlYWNoZXIgQWNhZGVtaWNvJyxcbiAgICAgIDEzOiAnRXN0dWRpYW50ZScsXG4gICAgICAxNTogJ1Bvc2libGUgRXN0dWRpYW50ZScsXG4gICAgICAyMDogJ0xpZGVyIE1hcmtldGluZycsXG4gICAgICAyMTogJ0Nvb3JkaW5hZG9yIE1hcmtldGluZycsXG4gICAgICAyMjogJ0F1eGlsaWFyIE1hcmtldGluZycsXG4gICAgICAzMDogJ0xpZGVyIEFkbWluaXN0cmF0aXZvJyxcbiAgICAgIDMxOiAnQ29vcmRpbmFkb3IgQWRtaW5pc3RyYXRpdm8nLFxuICAgICAgMzI6ICdBdXhpbGlhciBBZG1pbmlzdHJhdGl2bycsXG4gICAgICA0MDogJ0xpZGVyIENvbWVyY2lhbCcsXG4gICAgICA0MTogJ0Nvb3JkaW5hZG9yIENvbWVyY2lhbCcsXG4gICAgICA0MjogJ0FzZXNvciBDb21lcmNpYWwnLFxuICAgICAgNTA6ICdMaWRlciBDYXJ0ZXJhJyxcbiAgICAgIDUxOiAnQ29vcmRpbmFkb3IgQ2FydGVyYScsXG4gICAgICA1MjogJ0FzZXNvciBDYXJ0ZXJhJyxcbiAgICAgIDYwOiAnUHJvdmVlZG9yJ1xuICAgIH07XG4gICAgcmV0dXJuIHJvbGVNYXBbTnVtYmVyKHJvbGUpXSB8fCAnJztcbiAgfVxuXG4gIHBvcHVsYXRlRm9ybSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5EYXRhU3R1ZGVudCkge1xuICAgICAgdGhpcy5jaGVja1JvbGVGb3JBZGRpdGlvbmFsRmllbGRzKHRoaXMuRGF0YVN0dWRlbnQucm9sZSk7XG5cbiAgICAgIGNvbnN0IGZvcm1WYWx1ZTogYW55ID0ge1xuICAgICAgICBuYW1lOiB0aGlzLkRhdGFTdHVkZW50Lm5hbWUgfHwgJycsXG4gICAgICAgIGxhc3RfbmFtZTogdGhpcy5EYXRhU3R1ZGVudC5sYXN0X25hbWUgfHwgJycsXG4gICAgICAgIGVtYWlsOiB0aGlzLkRhdGFTdHVkZW50LmVtYWlsIHx8ICcnLFxuICAgICAgICBnZW5kZXI6IHRoaXMuRGF0YVN0dWRlbnQuZ2VuZGVyIHx8IG51bGwsXG4gICAgICAgIGlkX2NhcmRfdHlwZTogdGhpcy5EYXRhU3R1ZGVudC5pZF9jYXJkX3R5cGUgfHwgJycsXG4gICAgICAgIGlkX2NhcmQ6IHRoaXMuRGF0YVN0dWRlbnQuaWRfY2FyZCB8fCAnJyxcbiAgICAgICAgcGhvbmVfaW5kaWNhdGl2ZTogdGhpcy5EYXRhU3R1ZGVudC5waG9uZV9pbmRpY2F0aXZlIHx8ICcnLFxuICAgICAgICBwaG9uZV9udW1iZXI6IHRoaXMuRGF0YVN0dWRlbnQucGhvbmVfbnVtYmVyIHx8ICcnLFxuICAgICAgICBjb3VudHJ5OiB0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvdW50cnksXG4gICAgICAgIHN0YXRlOiB0aGlzLkRhdGFTdHVkZW50LmNpdHk/LnN0YXRlLFxuICAgICAgICBjaXR5OiB0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvZGUsXG4gICAgICAgIHJvbGU6IHRoaXMuY2FuRWRpdFJvbGUgPyB0aGlzLkRhdGFTdHVkZW50LnJvbGUgOiB0aGlzLnRyYW5zZm9ybVJvbGUodGhpcy5EYXRhU3R1ZGVudC5yb2xlKSB8fCAnJywgLy8gVXNlIGNvZGUgZm9yIHNlbGVjdCwgXG4gICAgICAgIGNoYW5nZVBhc3N3b3JkOiBmYWxzZSxcbiAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICByZV9wYXNzd29yZDogJycsXG4gICAgICAgIHN0YXR1czogdGhpcy5EYXRhU3R1ZGVudC51c2VyX3N0YXR1cyB8fCAnJ1xuICAgICAgfTtcblxuICAgICAgLy8gQWdyZWdhciBjYW1wb3MgY29uZGljaW9uYWxlc1xuICAgICAgaWYgKHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIpIHtcbiAgICAgICAgZm9ybVZhbHVlLmVtYWlsX2lwdCA9IHRoaXMuRGF0YVN0dWRlbnQuZW1haWxfaXB0IHx8ICcnO1xuICAgICAgICBmb3JtVmFsdWUuc2VydmljZV9ob3VyID0gdGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgfHwgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1WYWx1ZS5zZXJ2aWNlX2hvdXIgPSB0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciB8fCAwO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zaG93UGFyZW50U2VjdGlvbikge1xuICAgICAgICBPYmplY3QuYXNzaWduKGZvcm1WYWx1ZSwge1xuICAgICAgICAgIHBhcmVudF9uYW1lOiB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBwYXJlbnRfbGFzdF9uYW1lOiB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ubGFzdF9uYW1lIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9pZF9jYXJkX3R5cGU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5pZF9jYXJkX3R5cGUgfHwgJycsXG4gICAgICAgICAgcGFyZW50X2lkX2NhcmQ6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5pZF9jYXJkIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9waG9uZV9pbmRpY2F0aXZlOiB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ucGhvbmVfaW5kaWNhdGl2ZSB8fCAnJyxcbiAgICAgICAgICBwYXJlbnRfcGhvbmVfbnVtYmVyOiB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ucGhvbmVfbnVtYmVyIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9vY2N1cGF0aW9uOiB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ub2NjdXBhdGlvbiB8fCAnJyxcbiAgICAgICAgICBwYXJlbnRfb2ZmaWNlX2FkcnJlc3M6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5vZmZpY2VfYWRycmVzcyB8fCAnJyxcbiAgICAgICAgICBwYXJlbnRfZW1haWw6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5lbWFpbCB8fCAnJ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlSWRDYXJkVmFsaWRhdG9ycyh0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmRfdHlwZSk7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLnJlc2V0KCk7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLnBhdGNoVmFsdWUoZm9ybVZhbHVlKTtcbiAgICAgIHRoaXMuaW5pdGlhbEZvcm1WYWx1ZSA9IHsgLi4udGhpcy51cGRhdGVVc2VyRm9ybS52YWx1ZSB9O1xuICAgICAgaWYgKGZvcm1WYWx1ZS5jb3VudHJ5KSB7XG4gICAgICAgIHRoaXMuY291bnRyaWVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5jb3VudHJ5O1xuICAgICAgICB0aGlzLnNlbGVjdENvdW50cnkodGhpcy5EYXRhU3R1ZGVudC5jaXR5Py5jb3VudHJ5KTtcbiAgICAgIH1cbiAgICAgIGlmIChmb3JtVmFsdWUuc3RhdGUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RTdGF0ZSh0aGlzLkRhdGFTdHVkZW50LmNpdHk/LnN0YXRlKTtcbiAgICAgIH1cbiAgICAgIGlmIChmb3JtVmFsdWUuY2l0eSkge1xuICAgICAgICB0aGlzLnNlbGVjdENpdHkodGhpcy5EYXRhU3R1ZGVudC5jaXR5Py5jb2RlKTtcbiAgICAgIH1cbiAgICAgIGlmIChmb3JtVmFsdWUuaWRfY2FyZF90eXBlKSB7XG4gICAgICAgIHRoaXMuaWRUeXBlcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uVHlwZUlkQ2FyZEJ5Q291bnRyeUNvbDtcbiAgICAgICAgdGhpcy5zZWxlY3RJZFR5cGUoJ2lkX2NhcmRfdHlwZScsdGhpcy5EYXRhU3R1ZGVudC5pZF9jYXJkX3R5cGUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5waG9uZV9pbmRpY2F0aXZlKSB7XG4gICAgICAgIHRoaXMuaW5kaWNhdGl2ZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmluZGljYXRpdmVzO1xuICAgICAgICB0aGlzLnNlbGVjdEluZGljYXRpdmUoJ3Bob25lX2luZGljYXRpdmUnLCB0aGlzLkRhdGFTdHVkZW50LnBob25lX2luZGljYXRpdmUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5wYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZSkge1xuICAgICAgICB0aGlzLmluZGljYXRpdmVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5pbmRpY2F0aXZlcztcbiAgICAgICAgdGhpcy5zZWxlY3RJbmRpY2F0aXZlKCdwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZScsIHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9pbmRpY2F0aXZlKTtcbiAgICAgIH1cbiAgICAgIGlmIChmb3JtVmFsdWUuZ2VuZGVyKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnNBbGwgJiYgdGhpcy5wYXJhbWV0ZXJzQWxsLmdlbmRlcikge1xuICAgICAgICAgIC8vIFRyYW5zZm9ybWFyIGdlbmRlciBlbiB1biBhcnJlZ2xvIGRlIHsgY29kZSwgbmFtZSB9XG4gICAgICAgICAgdGhpcy5nZW5kZXJzID0gdGhpcy5wYXJhbWV0ZXJzQWxsLmdlbmRlci5tYXAoKGdlbmRlcjogYW55KSA9PiAoe1xuICAgICAgICAgICAgY29kZTogZ2VuZGVyLmNvZGUsXG4gICAgICAgICAgICBuYW1lOiBnZW5kZXIubmFtZV9zcGFuaXNoXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ2VuZGVycyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0R2VuZGVyKHRoaXMuRGF0YVN0dWRlbnQuZ2VuZGVyKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRpb25Vc2VyUm9sZSgpe1xuICAgIGNvbnN0IHVzZXJSb2xlID0gdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyUm9sZSgpO1xuICAgIGNvbnN0IGlzU3R1ZGVudEVkaXQgPSB0aGlzLkRhdGFTdHVkZW50Py5yb2xlID09PSAxMztcbiAgICAvLyBMb2cgcGFyYSBkZXB1cmFjacOzblxuICAgIGNvbnNvbGUubG9nKCd2YWxpZGF0aW9uVXNlclJvbGUgLSB1c2VyUm9sZTonLCB1c2VyUm9sZSwgJ2lzU3R1ZGVudEVkaXQ6JywgaXNTdHVkZW50RWRpdCwgJ0RhdGFTdHVkZW50OicsIHRoaXMuRGF0YVN0dWRlbnQpO1xuXG4gICAgaWYgKHVzZXJSb2xlID09PSA0MCB8fCB1c2VyUm9sZSA9PT0gNDEgfHwgdXNlclJvbGUgPT09IDQyKSB7XG4gICAgICB0aGlzLnVzZXJSb2xlQ29tbWVyY2lhbCA9IGlzU3R1ZGVudEVkaXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXNlclJvbGVDb21tZXJjaWFsID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2FuRWRpdFJvbGUgPSB1c2VyUm9sZSA9PT0gMSB8fCB1c2VyUm9sZSA9PT0gMzA7XG4gIH1cbiAgXG4gIGNsb3NlVGFibGUoKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlTW9kYWwgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dDb25maXJtRGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy5jb25maXJtRm9ybS5yZXNldCgpO1xuICAgIHRoaXMudXBkYXRlVXNlckZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLmlkVHlwZXMgPSBbXTtcbiAgICB0aGlzLmNvdW50cmllcyA9IFtdO1xuICAgIHRoaXMuZ2VuZGVycyA9IFtdO1xuICAgIHRoaXMudXBkYXRlSWRDYXJkVmFsaWRhdG9ycyhudWxsKTtcbiAgICB0aGlzLmNsb3NlTW9kYWxJUy5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhY2tJZFR5cGVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlkVHlwZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5pZFR5cGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTsgXG4gICAgfVxuICAgIHRoaXMuaWRUeXBlU3Vic2NyaXB0aW9uID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2lkX2NhcmRfdHlwZScpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMudXBkYXRlSWRDYXJkVmFsaWRhdG9ycyh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUlkQ2FyZFZhbGlkYXRvcnMoaWRDYXJkVHlwZTogYW55KTogdm9pZCB7XG5cbiAgICBjb25zdCBpZENhcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2lkX2NhcmQnKTtcbiAgICBpZiAoIWlkQ2FyZENvbnRyb2wpIHJldHVybjtcblxuICAgIGlmIChpZENhcmRUeXBlID09IDcgfHwgaWRDYXJkVHlwZSA9PSA1KSB7XG4gICAgICBpZENhcmRDb250cm9sLnNldFZhbGlkYXRvcnMoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSxcbiAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjApLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL15bYS16QS1aMC05XSokLylcbiAgICAgIF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZENhcmRDb250cm9sLnNldFZhbGlkYXRvcnMoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSxcbiAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjApLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XSokLylcbiAgICAgIF0pO1xuICAgIH1cbiAgICBpZENhcmRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIHNlbGVjdEluZGljYXRpdmUoZmllbGQ6IHN0cmluZywgaW5kaWNhdGl2ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKGluZGljYXRpdmUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KGZpZWxkKT8uc2V0VmFsdWUoaW5kaWNhdGl2ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KGZpZWxkKT8uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0SWRUeXBlKGZpZWxkOiBzdHJpbmcsIGlkVHlwZTogYW55KTogdm9pZCB7XG4gICAgaWYgKGlkVHlwZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoZmllbGQpPy5zZXRWYWx1ZShpZFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldChmaWVsZCk/LnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEdlbmRlcihnZW5kZXI6IGFueSk6IHZvaWQge1xuICAgIGlmIChnZW5kZXIgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdnZW5kZXInKT8uc2V0VmFsdWUoZ2VuZGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2dlbmRlcicpPy5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDb3VudHJ5KGNvdW50cnk6IGFueSkge1xuICAgIGNvbnN0IGNvdW50cnlOdW1iZXIgPSB0eXBlb2YgY291bnRyeSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChjb3VudHJ5LCAxMCkgOiBjb3VudHJ5O1xuICAgIGlmIChjb3VudHJ5ICE9IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZShjb3VudHJ5TnVtYmVyKTtcbiAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnNBbGwgJiYgdGhpcy5wYXJhbWV0ZXJzQWxsPy5TdGF0ZSkge1xuICAgICAgICB0aGlzLnN0YXRlcyA9IHRoaXMucGFyYW1ldGVyc0FsbC5TdGF0ZS5maWx0ZXIoKGNvdXJzZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhdGUgPSB0eXBlb2YgY291cnNlLmNvdW50cnkgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IHBhcnNlSW50KGNvdXJzZS5jb3VudHJ5LCAxMClcbiAgICAgICAgICAgIDogY291cnNlLmNvdW50cnk7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlID09PSBjb3VudHJ5TnVtYmVyO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGVzID0gW107XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jaXRpZXMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5zdGF0ZXMgPSBbXTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0U3RhdGUoc3RhdGU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlTnVtYmVyID0gdHlwZW9mIHN0YXRlID09PSAnc3RyaW5nJyA/IHBhcnNlSW50KHN0YXRlLCAxMCkgOiBzdGF0ZTtcbiAgICBpZiAoc3RhdGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3N0YXRlJ10uc2V0VmFsdWUoc3RhdGVOdW1iZXIpO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jaXRpZXMgPSBbXTtcbiAgICAgIHRoaXMuZ2V0U3RhdGUoc3RhdGVOdW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jaXRpZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0ZShzdGF0ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5nZXRDaXR5KHN0YXRlKTtcbiAgfVxuXG4gIGdldENpdHkoc3RhdGU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlTnVtYmVyID0gdHlwZW9mIHN0YXRlID09PSAnc3RyaW5nJyA/IHBhcnNlSW50KHN0YXRlLCAxMCkgOiBzdGF0ZTtcbiAgICBpZiAodGhpcy5wYXJhbWV0ZXJzQWxsPy5jaXR5KSB7XG4gICAgICB0aGlzLmNpdGllcyA9IHRoaXMucGFyYW1ldGVyc0FsbC5jaXR5LmZpbHRlcigoY291cnNlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgY2l0eVN0YXRlID0gdHlwZW9mIGNvdXJzZS5zdGF0ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChjb3Vyc2Uuc3RhdGUsIDEwKSA6IGNvdXJzZS5zdGF0ZTtcbiAgICAgICAgcmV0dXJuIGNpdHlTdGF0ZSA9PT0gc3RhdGVOdW1iZXI7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaXRpZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDaXR5KGNpdHk6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGNpdHlOdW1iZXIgPSB0eXBlb2YgY2l0eSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChjaXR5LCAxMCkgOiBjaXR5O1xuICAgIGlmIChjaXR5ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUoY2l0eU51bWJlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RSZWFzb24ocmVhc29uOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLmNvbnRyb2xzWydyZWFzb24nXS5zZXRWYWx1ZShyZWFzb24gPyByZWFzb24gOiBudWxsKTtcbiAgfVxuXG4gIHNlbGVjdFJvbGUocm9sZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHJvbGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyb2xlJyk/LnNldFZhbHVlKHJvbGUpO1xuICAgICAgY29uc3QgcHJldmlvdXNTaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA9IHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXI7XG4gICAgICB0aGlzLmNoZWNrUm9sZUZvckFkZGl0aW9uYWxGaWVsZHMocm9sZSk7XG5cbiAgICAgIC8vIFNpIHNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyIGNhbWJpw7MsIGFjdHVhbGl6YXIgbG9zIHZhbGlkYWRvcmVzXG4gICAgICBpZiAocHJldmlvdXNTaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciAhPT0gdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cikge1xuICAgICAgICBjb25zdCBlbWFpbElwdENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnZW1haWxfaXB0Jyk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2VIb3VyQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdzZXJ2aWNlX2hvdXInKTtcblxuICAgICAgICBpZiAodGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cikge1xuICAgICAgICAgIC8vIEFncmVnYXIgY2FtcG9zIHkgdmFsaWRhZG9yZXMgc2kgbm8gZXN0YWJhbiBwcmVzZW50ZXNcbiAgICAgICAgICBpZiAoIWVtYWlsSXB0Q29udHJvbCkge1xuICAgICAgICAgICAgY29uc3QgZW1haWxJcHRWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuZW1haWxfaXB0IHx8ICcnO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5hZGRDb250cm9sKCdlbWFpbF9pcHQnLCB0aGlzLmZiLmNvbnRyb2woZW1haWxJcHRWYWx1ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1MCldKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVtYWlsSXB0Q29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXSk7XG4gICAgICAgICAgICBlbWFpbElwdENvbnRyb2wuc2V0VmFsdWUodGhpcy5EYXRhU3R1ZGVudC5lbWFpbF9pcHQgfHwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXNlcnZpY2VIb3VyQ29udHJvbCkge1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZUhvdXJWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuc2VydmljZV9ob3VyICE9IG51bGwgPyB0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciA6IDA7IC8vIFVzYSAwIGNvbW8gZmFsbGJhY2tcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uYWRkQ29udHJvbCgnc2VydmljZV9ob3VyJywgdGhpcy5mYi5jb250cm9sKHNlcnZpY2VIb3VyVmFsdWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XSskLyksIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCg0NCldKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XSskLyksIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCg0NCldKTtcbiAgICAgICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5zZXRWYWx1ZSh0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciAhPSBudWxsID8gdGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgOiAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGVtYWlsSXB0Q29udHJvbCkge1xuICAgICAgICAgICAgZW1haWxJcHRDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgZW1haWxJcHRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNlcnZpY2VIb3VyQ29udHJvbCkge1xuICAgICAgICAgICAgc2VydmljZUhvdXJDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgc2VydmljZUhvdXJDb250cm9sLnNldFZhbHVlKDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVtYWlsSXB0Q29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3JvbGUnKT8uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID0gZmFsc2U7XG4gICAgICBjb25zdCBlbWFpbElwdENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnZW1haWxfaXB0Jyk7XG4gICAgICBjb25zdCBzZXJ2aWNlSG91ckNvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnc2VydmljZV9ob3VyJyk7XG4gICAgICBpZiAoZW1haWxJcHRDb250cm9sKSB7XG4gICAgICAgIGVtYWlsSXB0Q29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgZW1haWxJcHRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgZW1haWxJcHRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZXJ2aWNlSG91ckNvbnRyb2wpIHtcbiAgICAgICAgc2VydmljZUhvdXJDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2wuc2V0VmFsdWUoMCk7XG4gICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBcbiAgaGFzRm9ybUNoYW5nZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmluaXRpYWxGb3JtVmFsdWUgfHwgIXRoaXMuRGF0YVN0dWRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldFJhd1ZhbHVlKCk7XG5cbiAgICBpZiAoY3VycmVudFZhbHVlLmNoYW5nZVBhc3N3b3JkKSB7XG4gICAgICBjb25zdCBwYXNzd29yZCA9IGN1cnJlbnRWYWx1ZS5wYXNzd29yZDtcbiAgICAgIGNvbnN0IHJlUGFzc3dvcmQgPSBjdXJyZW50VmFsdWUucmVfcGFzc3dvcmQ7XG4gICAgICBjb25zdCBwYXNzd29yZENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgncGFzc3dvcmQnKTtcbiAgICAgIGNvbnN0IHJlUGFzc3dvcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3JlX3Bhc3N3b3JkJyk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgcGFzc3dvcmRDb250cm9sPy52YWxpZCAmJlxuICAgICAgICByZVBhc3N3b3JkQ29udHJvbD8udmFsaWQgJiZcbiAgICAgICAgcGFzc3dvcmQgPT09IHJlUGFzc3dvcmQgJiZcbiAgICAgICAgcGFzc3dvcmQ/LnRyaW0oKSAhPT0gJydcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZHNUb0NvbXBhcmU6IChrZXlvZiBJRm9ybURhdGFScSlbXSA9IFtcbiAgICAgICduYW1lJyxcbiAgICAgICdsYXN0X25hbWUnLFxuICAgICAgJ2VtYWlsJyxcbiAgICAgICdnZW5kZXInLFxuICAgICAgJ2lkX2NhcmRfdHlwZScsXG4gICAgICAnaWRfY2FyZCcsXG4gICAgICAncGhvbmVfaW5kaWNhdGl2ZScsXG4gICAgICAncGhvbmVfbnVtYmVyJyxcbiAgICAgICdjb3VudHJ5JyxcbiAgICAgICdzdGF0ZScsXG4gICAgICAnY2l0eScsXG4gICAgICAncm9sZScsXG4gICAgICAnc3RhdHVzJ1xuICAgIF07XG5cbiAgICBpZiAodGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cikge1xuICAgICAgZmllbGRzVG9Db21wYXJlLnB1c2goXG4gICAgICAgICdlbWFpbF9pcHQnLFxuICAgICAgICAnc2VydmljZV9ob3VyJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG93UGFyZW50U2VjdGlvbikge1xuICAgICAgZmllbGRzVG9Db21wYXJlLnB1c2goXG4gICAgICAgICdwYXJlbnRfbmFtZScsXG4gICAgICAgICdwYXJlbnRfbGFzdF9uYW1lJyxcbiAgICAgICAgJ3BhcmVudF9pZF9jYXJkX3R5cGUnLFxuICAgICAgICAncGFyZW50X2lkX2NhcmQnLFxuICAgICAgICAncGFyZW50X3Bob25lX2luZGljYXRpdmUnLFxuICAgICAgICAncGFyZW50X3Bob25lX251bWJlcicsXG4gICAgICAgICdwYXJlbnRfb2NjdXBhdGlvbicsXG4gICAgICAgICdwYXJlbnRfb2ZmaWNlX2FkcnJlc3MnLFxuICAgICAgICAncGFyZW50X2VtYWlsJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkc1RvQ29tcGFyZSkge1xuICAgICAgbGV0IG9yaWdpbmFsVmFsdWU6IGFueTtcbiAgICAgIGxldCBjdXJyZW50RmllbGRWYWx1ZTogYW55ID0gY3VycmVudFZhbHVlW2ZpZWxkXTtcblxuICAgICAgc3dpdGNoIChmaWVsZCkge1xuICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5uYW1lIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsYXN0X25hbWUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50Lmxhc3RfbmFtZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmVtYWlsIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdlbWFpbF9pcHQnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID8gKHRoaXMuRGF0YVN0dWRlbnQuZW1haWxfaXB0IHx8ICcnKSA6ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdnZW5kZXInOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmdlbmRlciB8fCBudWxsO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpZF9jYXJkX3R5cGUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmRfdHlwZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaWRfY2FyZCc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuaWRfY2FyZCB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGhvbmVfaW5kaWNhdGl2ZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQucGhvbmVfaW5kaWNhdGl2ZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGhvbmVfbnVtYmVyJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5waG9uZV9udW1iZXIgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NvdW50cnknOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvdW50cnkgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0YXRlJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jaXR5Py5zdGF0ZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY2l0eSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uY29kZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncm9sZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuY2FuRWRpdFJvbGUgPyB0aGlzLkRhdGFTdHVkZW50LnJvbGUgOiB0aGlzLnRyYW5zZm9ybVJvbGUodGhpcy5EYXRhU3R1ZGVudC5yb2xlKSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc2VydmljZV9ob3VyJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/ICh0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciB8fCAwKSA6IDA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0YXR1cyc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQudXNlcl9zdGF0dXMgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9uYW1lJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm5hbWUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9sYXN0X25hbWUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ubGFzdF9uYW1lIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfaWRfY2FyZF90eXBlJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmRfdHlwZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X2lkX2NhcmQnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8uaWRfY2FyZCB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X3Bob25lX2luZGljYXRpdmUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ucGhvbmVfaW5kaWNhdGl2ZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X3Bob25lX251bWJlcic6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9udW1iZXIgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9vY2N1cGF0aW9uJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm9jY3VwYXRpb24gfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9vZmZpY2VfYWRycmVzcyc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5vZmZpY2VfYWRycmVzcyB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X2VtYWlsJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmVtYWlsIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSAnJztcbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm9ybWFsaXplZEN1cnJlbnQgPSBjdXJyZW50RmllbGRWYWx1ZSAhPSBudWxsID8gU3RyaW5nKGN1cnJlbnRGaWVsZFZhbHVlKS50cmltKCkgOiAnJztcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRPcmlnaW5hbCA9IG9yaWdpbmFsVmFsdWUgIT0gbnVsbCA/IFN0cmluZyhvcmlnaW5hbFZhbHVlKS50cmltKCkgOiAnJztcblxuICAgICAgaWYgKG5vcm1hbGl6ZWRDdXJyZW50ICE9PSBub3JtYWxpemVkT3JpZ2luYWwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc2hvd0NvbmZpcm1TZWN0aW9uSGFuZGxlcigpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmludmFsaWQgfHxcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uaGFzRXJyb3IoJ21pc21hdGNoJykgfHxcbiAgICAgICF0aGlzLmhhc0Zvcm1DaGFuZ2VkKClcbiAgICApIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2hvd0NvbmZpcm1TZWN0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIHNlbmRVcGRhdGVSZXF1ZXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpcm1Gb3JtLmludmFsaWQpIHtcbiAgICAgIHRoaXMuY29uZmlybUZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgY29uc3QgY29uZmlybVZhbHVlID0gdGhpcy5jb25maXJtRm9ybS52YWx1ZTtcblxuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIHRva2VuOiB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJUb2tlbigpLFxuICAgICAgdXNlcjoge1xuICAgICAgICBjb2RlOiB0aGlzLkRhdGFTdHVkZW50LmNvZGUsXG4gICAgICAgIG5hbWU6IGZvcm1WYWx1ZS5uYW1lLFxuICAgICAgICBsYXN0X25hbWU6IGZvcm1WYWx1ZS5sYXN0X25hbWUsXG4gICAgICAgIGlkX2NhcmRfdHlwZTogZm9ybVZhbHVlLmlkX2NhcmRfdHlwZSxcbiAgICAgICAgaWRfY2FyZDogZm9ybVZhbHVlLmlkX2NhcmQsXG4gICAgICAgIHBob25lX2luZGljYXRpdmU6IGZvcm1WYWx1ZS5waG9uZV9pbmRpY2F0aXZlLFxuICAgICAgICBwaG9uZV9udW1iZXI6IGZvcm1WYWx1ZS5waG9uZV9udW1iZXIsXG4gICAgICAgIGVtYWlsOiBmb3JtVmFsdWUuZW1haWwsXG4gICAgICAgIGdlbmRlcjogZm9ybVZhbHVlLmdlbmRlcixcbiAgICAgICAgY2l0eTogZm9ybVZhbHVlLmNpdHksXG4gICAgICAgIHNlcnZpY2VfaG91cjogdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/IGZvcm1WYWx1ZS5zZXJ2aWNlX2hvdXIgOiAwLFxuICAgICAgICByb2xlOiB0aGlzLmNhbkVkaXRSb2xlID8gZm9ybVZhbHVlLnJvbGUgOiB0aGlzLkRhdGFTdHVkZW50LnJvbGUsXG4gICAgICAgIHN0YXR1czogZm9ybVZhbHVlLnN0YXR1cyxcbiAgICAgICAgLi4uKHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPyB7IGVtYWlsX2lwdDogZm9ybVZhbHVlLmVtYWlsX2lwdCB9IDoge30pLFxuICAgICAgICAuLi4oZm9ybVZhbHVlLmNoYW5nZVBhc3N3b3JkICYmIGZvcm1WYWx1ZS5wYXNzd29yZCA/IHsgcGFzc3dvcmQ6IGZvcm1WYWx1ZS5wYXNzd29yZCB9IDoge30pXG4gICAgICB9LFxuICAgICAgcGFyZW50OiB0aGlzLnNob3dQYXJlbnRTZWN0aW9uXG4gICAgICAgID8ge1xuICAgICAgICAgICAgY29kZTogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmNvZGUgfHwgbnVsbCxcbiAgICAgICAgICAgIG5hbWU6IGZvcm1WYWx1ZS5wYXJlbnRfbmFtZSB8fCBudWxsLFxuICAgICAgICAgICAgbGFzdF9uYW1lOiBmb3JtVmFsdWUucGFyZW50X2xhc3RfbmFtZSB8fCBudWxsLFxuICAgICAgICAgICAgaWRfY2FyZF90eXBlOiBmb3JtVmFsdWUucGFyZW50X2lkX2NhcmRfdHlwZSB8fCBudWxsLFxuICAgICAgICAgICAgaWRfY2FyZDogZm9ybVZhbHVlLnBhcmVudF9pZF9jYXJkIHx8IG51bGwsXG4gICAgICAgICAgICBwaG9uZV9pbmRpY2F0aXZlOiBmb3JtVmFsdWUucGFyZW50X3Bob25lX2luZGljYXRpdmUgfHwgbnVsbCxcbiAgICAgICAgICAgIHBob25lX251bWJlcjogZm9ybVZhbHVlLnBhcmVudF9waG9uZV9udW1iZXIgfHwgbnVsbCxcbiAgICAgICAgICAgIG9jY3VwYXRpb246IGZvcm1WYWx1ZS5wYXJlbnRfb2NjdXBhdGlvbiB8fCBudWxsLFxuICAgICAgICAgICAgb2ZmaWNlX2FkcnJlc3M6IGZvcm1WYWx1ZS5wYXJlbnRfb2ZmaWNlX2FkcnJlc3MgfHwgbnVsbCxcbiAgICAgICAgICAgIGVtYWlsOiBmb3JtVmFsdWUucGFyZW50X2VtYWlsIHx8IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbCxcbiAgICAgIHJlYXNvbjogY29uZmlybVZhbHVlLnJlYXNvbixcbiAgICAgIG9ic2VydmF0aW9uOiBjb25maXJtVmFsdWUub2JzZXJ2YXRpb24sXG4gICAgfTtcblxuICAgIHRoaXMudXNlclNlcnZpY2UudXBkYXRlVXNlckJ5Q29kZShyZXF1ZXN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlLmNvZGUgPT09IDEpIHtcbiAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgcG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgICAgICAgaWNvbjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgdGl0bGU6ICdVc3VhcmlvIGFjdHVhbGl6YWRvIHNhdGlzZmFjdG9yaWFtZW50ZScsXG4gICAgICAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXG4gICAgICAgICAgICB0aW1lcjogMjUwMCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnVzZXJVcGRhdGVkRXZlbnQuZW1pdCgpO1xuICAgICAgICAgIHRoaXMuY2xvc2VUYWJsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLm1lc3NhZ2UuY29kZSA9PT0gMykge1xuICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICAgICAgICBpY29uOiAnd2FybmluZycsXG4gICAgICAgICAgICB0aXRsZTogcmVzcG9uc2UuZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgdGV4dDogcmVzcG9uc2UuZGF0YS5lcnJvcnMsXG4gICAgICAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXG4gICAgICAgICAgICB0aW1lcjogMjUwMCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHVwZGF0aW5nIHVzZXI6JywgZXJyKTtcbiAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICAgICAgaWNvbjogJ2Vycm9yJyxcbiAgICAgICAgICB0aXRsZTogJ0hhIG9jdXJyaWRvIHVuIGVycm9yIGluZXNwZXJhZG8nLFxuICAgICAgICAgIHNob3dDb25maXJtQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgICB0aW1lcjogMjUwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzaG93Q29uZmlybURpYWxvZ3MoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5pbnZhbGlkIHx8XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmhhc0Vycm9yKCdtaXNtYXRjaCcpIHx8XG4gICAgICAhdGhpcy5oYXNGb3JtQ2hhbmdlZCgpXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY29uZmlybUZvcm0ucmVzZXQoKTsgXG4gICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyA9IHRydWU7IFxuICB9XG5cbiAgYWNjZXB0Q29uZmlybURpYWxvZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maXJtRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmNvbmZpcm1Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZW5kVXBkYXRlUmVxdWVzdCgpO1xuICB9XG5cbiAgcmVqZWN0Q29uZmlybURpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLnJlc2V0KCk7XG4gIH1cblxuICBjbG9zZUNvbmZpcm1EaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlybUZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLmdldCgncmVhc29uJyk/LnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLmdldCgnb2JzZXJ2YXRpb24nKT8uc2V0VmFsdWUoJycpO1xuICB9XG5cbiAgLy8gQWdyZWdhciBlc3RlIG3DqXRvZG8gcGFyYSB2ZXJpZmljYXIgZWwgcm9sIHkgbW9zdHJhci9vY3VsdGFyIGNhbXBvc1xuICBjaGVja1JvbGVGb3JBZGRpdGlvbmFsRmllbGRzKHJvbGU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHJvbGVOdW1iZXIgPSB0eXBlb2Ygcm9sZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChyb2xlLCAxMCkgOiByb2xlO1xuICAgIFxuICAgIGNvbnN0IHJvbGVzV2l0aG91dEFkZGl0aW9uYWxGaWVsZHMgPSBbMTMsIDE1LCA2MF07XG4gICAgXG4gICAgdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA9ICFyb2xlc1dpdGhvdXRBZGRpdGlvbmFsRmllbGRzLmluY2x1ZGVzKHJvbGVOdW1iZXIpO1xuICB9XG5cblxufSIsIjxtYWluICpuZ0lmPVwidmlzaWJsZU1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbF9jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX21vZGFsIHllbGxvdy0zMDBcIj5cbiAgICAgIDxoMT5BY3R1YWxpemFyIHVzdWFyaW88L2gxPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2VUYWJsZSgpXCI+eDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJncmlkX2NvbnRhaW5lclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGZvcm0gKm5nSWY9XCJ1cGRhdGVVc2VyRm9ybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwidXBkYXRlVXNlckZvcm1cIj5cbiAgICAgICAgICA8IS0tIFVzZXIgSW5mb3JtYXRpb24gU2VjdGlvbiAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMj5JbmZvcm1hY2nDs24gZGVsIHVzdWFyaW88L2gyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWRcIj5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ05vbWJyZXMnXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIGVsIG5vbWJyZScgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWyduYW1lJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpID8gJ03DrW5pbW8gMyBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXS5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnTcOheGltbyAzMiBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXS5oYXNFcnJvcigncGF0dGVybicpID8gJ1NvbG8gbGV0cmFzLCBlc3BhY2lvcyB5IGd1aW9uZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdoYXNXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gZXNwYWNpb3MgYWwgaW5pY2lvIG8gZmluYWwnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdvbmx5V2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIHNvbG8gZXNwYWNpb3MnIDpcbiAgICAgICAgICAgICAgICAnRGViZSBpbmdyZXNhciBlbCBub21icmUnXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0FwZWxsaWRvcydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIGxvcyBhcGVsbGlkb3MnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpID8gJ03DrW5pbW8gMyBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2xhc3RfbmFtZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDMyIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ3BhdHRlcm4nKSA/ICdTb2xvIGxldHJhcywgZXNwYWNpb3MgeSBndWlvbmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2xhc3RfbmFtZSddLmhhc0Vycm9yKCdoYXNXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gZXNwYWNpb3MgYWwgaW5pY2lvIG8gZmluYWwnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ29ubHlXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gc29sbyBlc3BhY2lvcycgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIGxvcyBhcGVsbGlkb3MnXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInZW1haWwnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidFbWFpbCdcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnRGViZSBpbmdyZXNhciB1biBjb3JyZW8gdsOhbGlkbycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbCddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDMwMCBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ3BhdHRlcm4nKSA/ICdUaWVuZSBxdWUgc2VyIHVuIGVtYWlsIGNvcnJlY3RvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ2hhc1doaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBlc3BhY2lvcyBhbCBpbmljaW8gbyBmaW5hbCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbCddLmhhc0Vycm9yKCdvbmx5V2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIHNvbG8gZXNwYWNpb3MnIDpcbiAgICAgICAgICAgICAgICAnRGViZSBpbmdyZXNhciB1biBjb3JyZW8gdsOhbGlkbydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyXCJcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VtYWlsIElQVCdcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWxfaXB0J11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIHVuIGNvcnJlbyBJUFQgdsOhbGlkbycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXS5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnTcOheGltbyAyNTUgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXS5oYXNFcnJvcigncGF0dGVybicpID8gJ1RpZW5lIHF1ZSBzZXIgdW4gZW1haWwgY29ycmVjdG8nIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWxfaXB0J10uaGFzRXJyb3IoJ2hhc1doaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBlc3BhY2lvcyBhbCBpbmljaW8gbyBmaW5hbCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXS5oYXNFcnJvcignb25seVdoaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBzb2xvIGVzcGFjaW9zJyA6XG4gICAgICAgICAgICAgICAgJ0RlYmUgaW5ncmVzYXIgdW4gY29ycmVvIElQVCB2w6FsaWRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXJcIlxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidIb3JhcyBkZSBzZXJ2aWNpbydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc2VydmljZV9ob3VyJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzZXJ2aWNlX2hvdXInXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIGxhcyBob3JhcyBkZSBzZXJ2aWNpbycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzZXJ2aWNlX2hvdXInXS5oYXNFcnJvcigncGF0dGVybicpID8gJ1NvbG8gbsO6bWVyb3MgcGVybWl0aWRvcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzZXJ2aWNlX2hvdXInXS5oYXNFcnJvcignbWluJykgPyAnRWwgdmFsb3IgZGViZSBzZXIgbWF5b3IgbyBpZ3VhbCBhIDAnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc2VydmljZV9ob3VyJ10uaGFzRXJyb3IoJ21heCcpID8gJ0VsIHZhbG9yIGRlYmUgc2VyIG1lbm9yIG8gaWd1YWwgYSA0NCcgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIGxhcyBob3JhcyBkZSBzZXJ2aWNpbydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FuRWRpdFJvbGU7IGVsc2UgcmVhZE9ubHlSb2xlXCI+XG4gICAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncm9sZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncm9sZSddXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncm9sZSddLnZhbHVlID09PSBudWxsID8gJ1NlbGVjY2lvbmUgcm9sJyA6IHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ10udmFsdWVcIlxuICAgICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtkYXRhXT1cInJvbGVzXCJcbiAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwiY29kZVwiXG4gICAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdFJvbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidTZWxlY2Npb25lIHJvbCdcIlxuICAgICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3JlYWRPbmx5Um9sZT5cbiAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1JvbCdcIlxuICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ11cIlxuICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ1JvbCByZXF1ZXJpZG8nXCJcbiAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2dlbmRlciddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2dlbmRlciddXCJcbiAgICAgICAgICAgICAgW3NlbGVjdENvZGVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2dlbmRlciddLnZhbHVlID09PSBudWxsID8gJ1NlbGVjY2lvbmUgZ8OpbmVybycgOiAodXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2dlbmRlciddLnZhbHVlIHwgZ2VuZGVyRGlzcGxheSlcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJnZW5kZXJzXCJcbiAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdEdlbmRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidTZWxlY2Npb25lIGfDqW5lcm8nXCJcbiAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwaG9uZV9pbmRpY2F0aXZlJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGhvbmVfaW5kaWNhdGl2ZSddXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwiaW5kaWNhdGl2ZXNcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SW5kaWNhdGl2ZSgncGhvbmVfaW5kaWNhdGl2ZScsICRldmVudClcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0luZGljYXRpdm8nXCJcbiAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1RlbMOpZm9ubydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGhvbmVfbnVtYmVyJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidEZWJlIGluZ3Jlc2FyIHVuIG7Dum1lcm8gZGUgdGVsw6lmb25vIHbDoWxpZG8nXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddXCJcbiAgICAgICAgICAgICAgW3NlbGVjdENvZGVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddLnZhbHVlID09PSBudWxsID8gJ1RpcG8gZGUgZG9jdW1lbnRvJyA6IHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkX3R5cGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJpZFR5cGVzXCJcbiAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdElkVHlwZSgnaWRfY2FyZF90eXBlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInVGlwbyBkZSBkb2N1bWVudG8nXCJcbiAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidEb2N1bWVudG8nXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmQnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmQnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIGVsIG7Dum1lcm8gZGUgZG9jdW1lbnRvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmQnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyA1IGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDIwIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAodXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddLnZhbHVlID09PSA3IHx8IHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkX3R5cGUnXS52YWx1ZSA9PT0gNSA/ICdTb2xvIGxldHJhcyB5IG7Dum1lcm9zIHBlcm1pdGlkb3MnIDogJ1NvbG8gbsO6bWVyb3MgcGVybWl0aWRvcycpIDpcbiAgICAgICAgICAgICAgICAnRGViZSBpbmdyZXNhciBlbCBuw7ptZXJvIGRlIGRvY3VtZW50bydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdENvZGVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZSA9PT0gbnVsbCA/ICdQYcOtcyBkZSByZXNpZGVuY2lhJyA6IHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjb3VudHJ5J10udmFsdWVcIlxuICAgICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RDb3VudHJ5KCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtkYXRhXT1cImNvdW50cmllc1wiXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidQYcOtcyBkZSByZXNpZGVuY2lhJ1wiXG4gICAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3N0YXRlJ11cIlxuICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdEZXBhcnRhbWVudG8gbyBlc3RhZG8nIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3N0YXRlJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdFN0YXRlKCRldmVudClcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJzdGF0ZXNcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0RlcGFydGFtZW50byBvIGVzdGFkbydcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J11cIlxuICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnZhbHVlID09PSBudWxsID8gJ0NpdWRhZCBkZSByZXNpZGVuY2lhJyA6IHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J10udmFsdWVcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0Q2l0eSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwiY2l0aWVzXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidDaXVkYWQgZGUgcmVzaWRlbmNpYSdcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXN0YXR1c1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwYW4tc3RhdHVzXCI+RXN0YWRvPC9zcGFuPlxuICAgICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwianVzdGlmeU9wdGlvbnNcIiBcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGF0dXNcIiBcbiAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cIm5hbWVcIiBcbiAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cImNvZGVcIj5cbiAgICAgICAgICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiF1c2VyUm9sZUNvbW1lcmNpYWxcIiBjbGFzcz1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxwLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2hhbmdlUGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ2FtYmlvIGRlIGNvbnRyYXNlw7FhXCJcbiAgICAgICAgICAgICAgICBbYmluYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+PC9wLWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiICpuZ0lmPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NoYW5nZVBhc3N3b3JkJ10udmFsdWVcIj5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIncGFzc3dvcmQnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidDb250cmFzZcOxYSdcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnTGEgY29udHJhc2XDsWEgZXMgcmVxdWVyaWRhJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpID8gJ03DrW5pbW8gNSBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMzIgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgICdJbmdyZXNlIHVuYSBjb250cmFzZcOxYSB2w6FsaWRhJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIncGFzc3dvcmQnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidSZXBldGlyIGNvbnRyYXNlw7FhJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyZV9wYXNzd29yZCddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncmVfcGFzc3dvcmQnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIHJlcGV0aXIgbGEgY29udHJhc2XDsWEnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncmVfcGFzc3dvcmQnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyA1IGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncmVfcGFzc3dvcmQnXS5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnTcOheGltbyAzMiBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uaGFzRXJyb3IoJ21pc21hdGNoJykgPyAnTGFzIGNvbnRyYXNlw7FhcyBubyBjb2luY2lkZW4nIDpcbiAgICAgICAgICAgICAgICAnUmVwaXRhIGxhIGNvbnRyYXNlw7FhJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIE1lbnNhamUgYWRpY2lvbmFsIHBhcmEgZWwgZXJyb3IgZGUgbWlzbWF0Y2ggKG9wY2lvbmFsLCBzaSBxdWllcmVzIG1vc3RyYXJsbyBwb3Igc2VwYXJhZG8pIC0tPlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInVwZGF0ZVVzZXJGb3JtLmhhc0Vycm9yKCdtaXNtYXRjaCcpICYmIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaGFuZ2VQYXNzd29yZCddLnZhbHVlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICA8c21hbGwgPkxhcyBjb250cmFzZcOxYXMgbm8gY29pbmNpZGVuPC9zbWFsbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIFBhcmVudCBJbmZvcm1hdGlvbiBTZWN0aW9uIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiICpuZ0lmPVwiRGF0YVN0dWRlbnQ/LmNvZHNcIj5cbiAgICAgICAgICAgIDxoMj5JbmZvcm1hY2nDs24gZGVsIGFjdWRpZW50ZTwvaDI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIkRhdGFTdHVkZW50Py5jb2RzXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1BhcmVudFNlY3Rpb247IGVsc2Ugbm9QYXJlbnRNZXNzYWdlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWRcIj5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ05vbWJyZXMnXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfbmFtZSddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgZWwgbm9tYnJlJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInQXBlbGxpZG9zJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2xhc3RfbmFtZSddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgbG9zIGFwZWxsaWRvcydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ09jdXBhY2nDs24nXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfb2NjdXBhdGlvbiddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgbGEgb2N1cGFjacOzbidcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidlbWFpbCdcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidFbWFpbCdcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9lbWFpbCddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgdW4gY29ycmVvIHbDoWxpZG8nXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9pZF9jYXJkX3R5cGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2lkX2NhcmRfdHlwZSddXCJcbiAgICAgICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfaWRfY2FyZF90eXBlJ10udmFsdWUgPT09IG51bGwgPyAnVGlwbyBkZSBkb2N1bWVudG8nIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9pZF9jYXJkX3R5cGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImlkVHlwZXNcIlxuICAgICAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdElkVHlwZSgncGFyZW50X2lkX2NhcmRfdHlwZScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidUaXBvIGRlIGRvY3VtZW50bydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0RvY3VtZW50bydcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9pZF9jYXJkJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBlbCBuw7ptZXJvIGRlIGRvY3VtZW50bydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X3Bob25lX2luZGljYXRpdmUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X3Bob25lX2luZGljYXRpdmUnXVwiXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJpbmRpY2F0aXZlc1wiXG4gICAgICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SW5kaWNhdGl2ZSgncGFyZW50X3Bob25lX2luZGljYXRpdmUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInSW5kaWNhdGl2bydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1RlbMOpZm9ubydcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9waG9uZV9udW1iZXInXVwiXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidEZWJlIGluZ3Jlc2FyIHVuIG7Dum1lcm8gZGUgdGVsw6lmb25vIHbDoWxpZG8nXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0RpcmVjY2nDs24gZGUgb2ZpY2luYSdcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9vZmZpY2VfYWRycmVzcyddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgbGEgZGlyZWNjacOzbidcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9QYXJlbnRNZXNzYWdlPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tcGFyZW50LW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICA8cD5TaW4gYWN1ZGllbnRlPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXItaW5uZXJcIj5cbiAgICAgICAgICAgICAgPGlwdC1idXR0b25cbiAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIididXR0b24nXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ2VycmFyJ1wiXG4gICAgICAgICAgICAgICAgICBbcHJpbWFyeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbaXNFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY2xvc2VUYWJsZSgpXCJcbiAgICAgICAgICAgICAgPjwvaXB0LWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8aXB0LWJ1dHRvblxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWN0dWFsaXphcidcIlxuICAgICAgICAgICAgICAgIFtpc0VuYWJsZWRdPVwiIWxvYWRlciAmJiB1cGRhdGVVc2VyRm9ybS52YWxpZCAmJiAhdXBkYXRlVXNlckZvcm0uaGFzRXJyb3IoJ21pc21hdGNoJykgJiYgaGFzRm9ybUNoYW5nZWQoKVwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic2hvd0NvbmZpcm1EaWFsb2dzKClcIlxuICAgICAgICAgICAgICAgIFtwcmltYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L2lwdC1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ29uZmlybSBEaWFsb2cgcGFyYSByYXrDs24geSBvYnNlcnZhY2nDs24gLS0+XG48cC1kaWFsb2dcbiAgICBoZWFkZXI9XCJDb25maXJtYXIgQWp1c3RlIGRlIFVzdWFyaW9cIlxuICAgIFsodmlzaWJsZSldPVwic2hvd0NvbmZpcm1EaWFsb2dcIlxuICAgIFttb2RhbF09XCJ0cnVlXCJcbiAgICAob25IaWRlKT1cImNsb3NlQ29uZmlybURpYWxvZygpXCJcbiAgPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNvbmZpcm1Gb3JtXCIgY2xhc3M9XCJjb25maXJtLWZvcm1cIj5cbiAgICA8ZGl2IGNsYXNzPVwicC1maWVsZFwiPlxuICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgW2NvbnRyb2xdPVwiY29uZmlybUZvcm0uY29udHJvbHNbJ3JlYXNvbiddXCJcbiAgICAgICAgW2RhdGFdPVwicmVhc29uc1wiXG4gICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiXG4gICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RSZWFzb24oJGV2ZW50KVwiXG4gICAgICAgIFtkZWZhdWx0VGV4dF09XCInU2VsZWNjaW9uZSBsYSByYXrDs24nXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8c21hbGwgKm5nSWY9XCJjb25maXJtRm9ybS5jb250cm9sc1sncmVhc29uJ10uaW52YWxpZCAmJiBjb25maXJtRm9ybS5jb250cm9sc1sncmVhc29uJ10udG91Y2hlZFwiIGNsYXNzPVwicC1lcnJvclwiPlxuICAgICAgICBMYSByYXrDs24gZXMgcmVxdWVyaWRhXG4gICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwLWZpZWxkXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJjb250YWluZXItb2JzZXJ2YXRpb25cIj5PYnNlcnZhY2nDs248L2xhYmVsPlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIGlkPVwib2JzZXJ2YXRpb25cIlxuICAgICAgICBwSW5wdXRUZXh0YXJlYVxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvYnNlcnZhdGlvblwiXG4gICAgICAgIHJvd3M9XCIzXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJEZXNjcmliZSBkZXRhbGxlcyBhZGljaW9uYWxlcyBkZWwgYWp1c3RlXCJcbiAgICAgID48L3RleHRhcmVhPlxuICAgICAgPHNtYWxsICpuZ0lmPVwiY29uZmlybUZvcm0uY29udHJvbHNbJ29ic2VydmF0aW9uJ10uaW52YWxpZCAmJiBjb25maXJtRm9ybS5jb250cm9sc1snb2JzZXJ2YXRpb24nXS50b3VjaGVkXCIgY2xhc3M9XCJwLWVycm9yXCI+XG4gICAgICAgIExhIG9ic2VydmFjacOzbiBlcyByZXF1ZXJpZGFcbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbiAgPHAtZm9vdGVyPlxuICAgIDxpcHQtYnV0dG9uXG4gICAgICBjbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeVwiXG4gICAgICBbYnV0dG9uVHlwZV09XCInYnV0dG9uJ1wiXG4gICAgICBbbGFiZWxdPVwiJ0NhbmNlbGFyJ1wiXG4gICAgICBbcHJpbWFyeV09XCJmYWxzZVwiXG4gICAgICBbaXNFbmFibGVkXT1cInRydWVcIlxuICAgICAgKG9uQ2xpY2spPVwiY2xvc2VDb25maXJtRGlhbG9nKClcIlxuICAgID48L2lwdC1idXR0b24+XG4gICAgPGlwdC1idXR0b25cbiAgICAgIGNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCJcbiAgICAgIFtidXR0b25UeXBlXT1cIididXR0b24nXCJcbiAgICAgIFtsYWJlbF09XCInQ29uZmlybWFyJ1wiXG4gICAgICBbcHJpbWFyeV09XCJ0cnVlXCJcbiAgICAgIFtpc0VuYWJsZWRdPVwiIWxvYWRlciAmJiBjb25maXJtRm9ybS52YWxpZFwiXG4gICAgICAob25DbGljayk9XCJhY2NlcHRDb25maXJtRGlhbG9nKClcIlxuICAgID48L2lwdC1idXR0b24+XG4gIDwvcC1mb290ZXI+XG48L3AtZGlhbG9nPlxuXG48L21haW4+Il19
|
|
875
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXVzZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy91cGRhdGUtdXNlci1mb3JtL3VwZGF0ZS11c2VyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvdXBkYXRlLXVzZXItZm9ybS91cGRhdGUtdXNlci1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBb0MsTUFBTSxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQTJDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3JGLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBUy9CLE1BQU0sT0FBTyx1QkFBdUI7SUE4Q2xDLFlBQ1UsRUFBZSxFQUNmLEdBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixXQUF3QjtRQUp4QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWpEekIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzNDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHdEQsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQiwyQkFBc0IsR0FBVSxFQUFFLENBQUM7UUFDbkMsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixX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QWtCO1FBQ2hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxxRUFBcUU7SUFDckUsNEJBQTRCLENBQUMsSUFBUztRQUNwQyxNQUFNLFVBQVUsR0FBRyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV4RSxNQUFNLDRCQUE0QixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkYsQ0FBQzs7b0hBcjVCVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixzTUFGdkIsRUFBRSwrQ0NiZiw4M2tCQW1XTzsyRkRwVk0sdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHNCQUFzQixhQUdyQixFQUFFO3FOQUdKLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE91dHB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgIFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy91c2VyLXNlcnZpY2UvdXNlci1zZXJ2aWNlJztcbmltcG9ydCB7ICBCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvYmFzZS1zZXJ2aWNlL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyAgUGFyYW1ldGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvcGFyYW1ldGVycy1zZXJ2aWNlL3BhcmFtZXRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyAgSUZvcm1EYXRhUnEgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy91c2VyL3VzZXItcnEubW9kZWwnO1xuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lwdC11cGRhdGUtdXNlci1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VwZGF0ZS11c2VyLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91cGRhdGUtdXNlci1mb3JtLmNvbXBvbmVudC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyB1cGRhdGVVc2VyRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBEYXRhU3R1ZGVudDogYW55O1xuICBASW5wdXQoKSB2aXNpYmxlTW9kYWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIGNsb3NlTW9kYWxJUyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHVzZXJVcGRhdGVkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIHVwZGF0ZVVzZXJGb3JtITogRm9ybUdyb3VwO1xuICBjb25maXJtRm9ybSE6IEZvcm1Hcm91cDtcbiAgcGhvdG86IHN0cmluZyA9ICcnO1xuICBwaG9uZU51bWJlckluZGljYXRpdmVzOiBhbnlbXSA9IFtdO1xuICBpZFR5cGVzOiBhbnlbXSA9IFtdO1xuICBsb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc3RhdGVzOiBhbnkgPSBbXTtcbiAgY2l0aWVzOiBhbnkgPSBbXTtcbiAgY291bnRyaWVzOiBhbnkgPSBbXTtcbiAgc2hvd1BhcmVudFNlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0VtYWlsSXB0OiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dDb25maXJtU2VjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwYXJhbWV0ZXJzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHBhcmFtZXRlcnNBbGw/OiBhbnk7XG4gIGluZGljYXRpdmVzOiBhbnlbXSA9IFtdO1xuICBjaXZpbFN0YXR1czogYW55W10gPSBbXTtcbiAgZ2VuZGVyczogYW55W10gPSBbXTtcbiAgc3RyYXR1bXM6IGFueVtdID0gW107XG4gIHNob3dDb25maXJtRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHVzZXJSb2xlQ29tbWVyY2lhbDpib29sZWFuID1mYWxzZTtcbiAgY2FuRWRpdFJvbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcm9sZXM6IGFueVtdID0gW107XG4gIHNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaW5pdGlhbEZvcm1WYWx1ZTogYW55ID0gW107XG4gIHByaXZhdGUgaWRUeXBlU3Vic2NyaXB0aW9uPzogIFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBwZW5kaW5nSW5pdDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgaXNTdHVkZW50OiBib29sZWFuID0gZmFsc2U7XG4gIGp1c3RpZnlPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBcbiAgcmVhc29ucyA9IFtcbiAgICB7IG5hbWU6ICdDb3JyZWNjacOzbiBkZSBlcnJvcmVzIGVuIGRhdG9zIHBlcnNvbmFsZXMnLCBjb2RlOiAxIH0sXG4gICAgeyBuYW1lOiAnQ29ycmVjY2lvbiBkZSBkb2N1bWVudGFjaW9uJywgY29kZTogMiB9LFxuICAgIHsgbmFtZTogJ0FjdHVhbGl6YWNpw7NuIGRlIGNvbnRhY3RvJywgY29kZTogMyB9LFxuICAgIHsgbmFtZTogJ2NvcnJlY2Npb24gZGF0b3MgZGUgQWN1ZGllbnRlJywgY29kZTogNCB9LFxuICAgIHsgbmFtZTogJ0NhbWJpbyBkZSBjb250cmFzZcOxYScsIGNvZGU6IDUgfSxcbiAgICB7IG5hbWU6ICdDYW1iaW8gZGUgcmVzaWRlbmNpYScsIGNvZGU6IDYgfSxcbiAgICB7IG5hbWU6ICdTdXNwZW5zacOzbiBvIHJlYWN0aXZhY2nDs24gZGUgY3VlbnRhJywgY29kZTogNyB9LFxuICAgIHsgbmFtZTogJ090cm8nLCBjb2RlOiA4IH1cbiAgXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBwYXJhbWV0ZXJTZXJ2aWNlOiBQYXJhbWV0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFzZVNlcnZpY2U6IEJhc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLnNldFJvbGVzKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgIHRoaXMuaW5pdENvbmZpcm1Gb3JtKCk7XG4gICAgdGhpcy52YWxpZGF0aW9uVXNlclJvbGUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0UGFyYW1ldGVycygpO1xuICAgIHRoaXMudHJhY2tJZFR5cGVDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZXRKdXN0aWZ5T3B0aW9ucygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd2aXNpYmxlTW9kYWwnXSAmJiBjaGFuZ2VzWyd2aXNpYmxlTW9kYWwnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnNMb2FkZWQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICAgIHRoaXMuc2V0SnVzdGlmeU9wdGlvbnMoKTtcbiAgICAgIHRoaXMudHJhY2tJZFR5cGVDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnZhbGlkYXRpb25Vc2VyUm9sZSgpO1xuICAgICAgdGhpcy5zZXRSb2xlcygpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfWVsc2UgIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nSW5pdCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaWRUeXBlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmlkVHlwZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGluaXRDb25maXJtRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICByZWFzb246IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIG9ic2VydmF0aW9uOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXV1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SnVzdGlmeU9wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pc1N0dWRlbnQgPSB0aGlzLkRhdGFTdHVkZW50Py5yb2xlID09PSAxMztcblxuICAgIGlmICh0aGlzLmlzU3R1ZGVudCkge1xuICAgICAgLy8gTGlzdGEgY29tcGxldGEgcGFyYSBlc3R1ZGlhbnRlXG4gICAgICB0aGlzLmp1c3RpZnlPcHRpb25zID0gW1xuICAgICAgICB7IG5hbWU6ICdBY3Rpdm8nLCBjb2RlOiAxIH0sXG4gICAgICAgIHsgbmFtZTogJ1N1c3BlbmRpZG8gcC9wYWdvJywgY29kZTogMiB9LFxuICAgICAgICB7IG5hbWU6ICdQYXVzYWRvIHByb2Nlc28nLCBjb2RlOiAzIH0sXG4gICAgICAgIHsgbmFtZTogJ1JlbW92aWRvJywgY29kZTogNCB9XG4gICAgICBdO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3N0YXR1cycpPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGlzdGEgcmVkdWNpZGEgcGFyYSBvdHJvcyByb2xlc1xuICAgICAgdGhpcy5qdXN0aWZ5T3B0aW9ucyA9IFtcbiAgICAgICAgeyBuYW1lOiAnQWN0aXZvJywgY29kZTogMSB9LFxuICAgICAgICB7IG5hbWU6ICdSZW1vdmlkbycsIGNvZGU6IDQgfVxuICAgICAgXTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdzdGF0dXMnKT8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFJvbGVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHVzZXJSb2xlID0gdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyUm9sZSgpO1xuICAgIGlmICh1c2VyUm9sZSA9PT0gMSkge1xuICAgICAgdGhpcy5yb2xlcyA9IFtcbiAgICAgICAgeyBuYW1lOiAnU3VwZXIgQWRtaW4nLCBjb2RlOiAxIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIEFjYWRlbWljbycsIGNvZGU6IDEwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIEFjYWRlbWljbycsIGNvZGU6IDExIH0sXG4gICAgICAgIHsgbmFtZTogJ1RlYWNoZXIgQWNhZGVtaWNvJywgY29kZTogMTIgfSxcbiAgICAgICAgeyBuYW1lOiAnRXN0dWRpYW50ZScsIGNvZGU6IDEzIH0sXG4gICAgICAgIHsgbmFtZTogJ1Bvc2libGUgRXN0dWRpYW50ZScsIGNvZGU6IDE1IH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIE1hcmtldGluZycsIGNvZGU6IDIwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIE1hcmtldGluZycsIGNvZGU6IDIxIH0sXG4gICAgICAgIHsgbmFtZTogJ0F1eGlsaWFyIE1hcmtldGluZycsIGNvZGU6IDIyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIEFkbWluaXN0cmF0aXZvJywgY29kZTogMzAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQWRtaW5pc3RyYXRpdm8nLCBjb2RlOiAzMSB9LFxuICAgICAgICB7IG5hbWU6ICdBdXhpbGlhciBBZG1pbmlzdHJhdGl2bycsIGNvZGU6IDMyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIENvbWVyY2lhbCcsIGNvZGU6IDQwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIENvbWVyY2lhbCcsIGNvZGU6IDQxIH0sXG4gICAgICAgIHsgbmFtZTogJ0FzZXNvciBDb21lcmNpYWwnLCBjb2RlOiA0MiB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBDYXJ0ZXJhJywgY29kZTogNTAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQ2FydGVyYScsIGNvZGU6IDUxIH0sXG4gICAgICAgIHsgbmFtZTogJ0FzZXNvciBDYXJ0ZXJhJywgY29kZTogNTIgfSxcbiAgICAgICAgeyBuYW1lOiAnUHJvdmVlZG9yJywgY29kZTogNjAgfVxuICAgICAgXTsgICAgICBcbiAgICB9ZWxzZSBpZiAodXNlclJvbGUgPT09IDMwKSB7XG4gICAgICB0aGlzLnJvbGVzID0gW1xuICAgICAgICAvLyB7IG5hbWU6ICdTdXBlciBBZG1pbicsIGNvZGU6IDEgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQWNhZGVtaWNvJywgY29kZTogMTAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQWNhZGVtaWNvJywgY29kZTogMTEgfSxcbiAgICAgICAgeyBuYW1lOiAnVGVhY2hlciBBY2FkZW1pY28nLCBjb2RlOiAxMiB9LFxuICAgICAgICB7IG5hbWU6ICdFc3R1ZGlhbnRlJywgY29kZTogMTMgfSxcbiAgICAgICAgeyBuYW1lOiAnUG9zaWJsZSBFc3R1ZGlhbnRlJywgY29kZTogMTUgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgTWFya2V0aW5nJywgY29kZTogMjAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgTWFya2V0aW5nJywgY29kZTogMjEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXV4aWxpYXIgTWFya2V0aW5nJywgY29kZTogMjIgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQWRtaW5pc3RyYXRpdm8nLCBjb2RlOiAzMCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBBZG1pbmlzdHJhdGl2bycsIGNvZGU6IDMxIH0sXG4gICAgICAgIHsgbmFtZTogJ0F1eGlsaWFyIEFkbWluaXN0cmF0aXZvJywgY29kZTogMzIgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQ29tZXJjaWFsJywgY29kZTogNDAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQ29tZXJjaWFsJywgY29kZTogNDEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXNlc29yIENvbWVyY2lhbCcsIGNvZGU6IDQyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIENhcnRlcmEnLCBjb2RlOiA1MCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBDYXJ0ZXJhJywgY29kZTogNTEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXNlc29yIENhcnRlcmEnLCBjb2RlOiA1MiB9LFxuICAgICAgICB7IG5hbWU6ICdQcm92ZWVkb3InLCBjb2RlOiA2MCB9XG4gICAgICBdOyBcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMucm9sZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBnZXRQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhcmFtZXRlcnNMb2FkZWQpIHtcbiAgICAgIHRoaXMuc2V0UGFyYW1ldGVycygpO1xuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0QWxsUGFyYW1ldGVyc0NvZEZvcm0oKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMucGFyYW1ldGVyc0FsbCA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIHRoaXMucGFyYW1ldGVyc0xvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0UGFyYW1ldGVycygpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XG4gICAgICAgIHRoaXMudHJhY2tJZFR5cGVDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvblVzZXJSb2xlKCk7XG4gICAgICAgIHRoaXMuc2V0Um9sZXMoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLnBlbmRpbmdJbml0ID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcGFyYW1ldGVyczonLCBlcnIpO1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnNMb2FkZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldFBhcmFtZXRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5pZFR5cGVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5UeXBlSWRDYXJkQnlDb3VudHJ5Q29sO1xuICAgIHRoaXMuaW5kaWNhdGl2ZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmluZGljYXRpdmVzO1xuICAgIHRoaXMuY291bnRyaWVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5jb3VudHJ5O1xuICAgIHRoaXMuY2l2aWxTdGF0dXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmNpdmlsU3RhdHVzO1xuICAgIHRoaXMuc3RhdGVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5TdGF0ZTtcbiAgICB0aGlzLmNpdGllcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uY2l0eTtcbiAgICBpZiAodGhpcy5wYXJhbWV0ZXJzQWxsICYmIHRoaXMucGFyYW1ldGVyc0FsbC5nZW5kZXIpIHtcbiAgICAgIC8vIFRyYW5zZm9ybWFyIGdlbmRlciBlbiB1biBhcnJlZ2xvIGRlIHsgY29kZSwgbmFtZSB9XG4gICAgICB0aGlzLmdlbmRlcnMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyLm1hcCgoZ2VuZGVyOiBhbnkpID0+ICh7XG4gICAgICAgIGNvZGU6IGdlbmRlci5jb2RlLFxuICAgICAgICBuYW1lOiBnZW5kZXIubmFtZV9zcGFuaXNoXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2VuZGVycyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5zaG93UGFyZW50U2VjdGlvbiA9ICEhdGhpcy5EYXRhU3R1ZGVudD8uY29kcz8ucGFyZW50Py5jb2RlO1xuICAgIHRoaXMuY2hlY2tSb2xlRm9yQWRkaXRpb25hbEZpZWxkcyh0aGlzLkRhdGFTdHVkZW50LnJvbGUpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLnBvcHVsYXRlRm9ybSgpO1xuICB9XG5cbiAgaW5pdEZvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgdXNlclJvbGUgPSB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJSb2xlKCk7XG4gICAgdGhpcy5jYW5FZGl0Um9sZSA9IHVzZXJSb2xlID09PSAxIHx8IHVzZXJSb2xlID09PSAzMDtcblxuICAgIGNvbnN0IGJhc2VGb3JtID0ge1xuICAgICAgbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKV1dLFxuICAgICAgbGFzdF9uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIpXV0sXG4gICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjUwKV1dLFxuICAgICAgZ2VuZGVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBpZF9jYXJkX3R5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGlkX2NhcmQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMCldXSxcbiAgICAgIHBob25lX2luZGljYXRpdmU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHBob25lX251bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNSldXSxcbiAgICAgIGNvdW50cnk6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHN0YXRlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBjaXR5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICByb2xlOiBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiAhdGhpcy5jYW5FZGl0Um9sZX1dLFxuICAgICAgcGFzc3dvcmQ6IFsnJywgW11dLFxuICAgICAgcmVfcGFzc3dvcmQ6IFsnJywgW11dLFxuICAgICAgY2hhbmdlUGFzc3dvcmQ6IFtmYWxzZV0sXG4gICAgICBzdGF0dXM6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBlbWFpbF9pcHQ6IFsnJywgdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXSA6IFtdXSxcbiAgICAgIHNlcnZpY2VfaG91cjogWycnLCB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID8gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybigvXlswLTldKyQvKSwgVmFsaWRhdG9ycy5taW4oMCksIFZhbGlkYXRvcnMubWF4KDQ0KV0gOiBbXV1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuc2hvd1BhcmVudFNlY3Rpb24pIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oYmFzZUZvcm0sIHtcbiAgICAgICAgcGFyZW50X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNTApXV0sXG4gICAgICAgIHBhcmVudF9sYXN0X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNTApXV0sXG4gICAgICAgIHBhcmVudF9pZF9jYXJkX3R5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgcGFyZW50X2lkX2NhcmQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzMCldXSxcbiAgICAgICAgcGFyZW50X3Bob25lX2luZGljYXRpdmU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgcGFyZW50X3Bob25lX251bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMCldXSxcbiAgICAgICAgcGFyZW50X29jY3VwYXRpb246IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxuICAgICAgICBwYXJlbnRfb2ZmaWNlX2FkcnJlc3M6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDE1MCldXSxcbiAgICAgICAgcGFyZW50X2VtYWlsOiBbJycsIFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTUpXV1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVXNlckZvcm0gPSB0aGlzLmZiLmdyb3VwKGJhc2VGb3JtLCB7IHZhbGlkYXRvcnM6IHRoaXMucGFzc3dvcmRNYXRjaFZhbGlkYXRvciB9KTtcblxuICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdjaGFuZ2VQYXNzd29yZCcpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgICBjb25zdCBwYXNzd29yZENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgncGFzc3dvcmQnKTtcbiAgICAgIGNvbnN0IHJlUGFzc3dvcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3JlX3Bhc3N3b3JkJyk7XG5cbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIHBhc3N3b3JkQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKV0pO1xuICAgICAgICByZVBhc3N3b3JkQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFzc3dvcmRDb250cm9sPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgcmVQYXNzd29yZENvbnRyb2w/LmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICBwYXNzd29yZENvbnRyb2w/LnNldFZhbHVlKCcnKTtcbiAgICAgICAgcmVQYXNzd29yZENvbnRyb2w/LnNldFZhbHVlKCcnKTtcbiAgICAgIH1cblxuICAgICAgcGFzc3dvcmRDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICByZVBhc3N3b3JkQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3JlX3Bhc3N3b3JkJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSk7XG4gIH1cblxuICBwYXNzd29yZE1hdGNoVmFsaWRhdG9yKGZvcm06IEZvcm1Hcm91cCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCB7XG4gICAgY29uc3QgY2hhbmdlUGFzc3dvcmQgPSBmb3JtLmdldCgnY2hhbmdlUGFzc3dvcmQnKT8udmFsdWU7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBmb3JtLmdldCgncGFzc3dvcmQnKT8udmFsdWU7XG4gICAgY29uc3QgcmVQYXNzd29yZCA9IGZvcm0uZ2V0KCdyZV9wYXNzd29yZCcpPy52YWx1ZTtcbiAgICBpZiAoIWNoYW5nZVBhc3N3b3JkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbWlzbWF0Y2ggPSBwYXNzd29yZCAmJiByZVBhc3N3b3JkICYmIHBhc3N3b3JkICE9PSByZVBhc3N3b3JkO1xuICAgIHJldHVybiBtaXNtYXRjaCA/IHsgbWlzbWF0Y2g6IHRydWUgfSA6IG51bGw7XG4gIH1cblxuICBub1doaXRlc3BhY2VWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsIHtcbiAgICBpZiAoY29udHJvbC52YWx1ZSAmJiB0eXBlb2YgY29udHJvbC52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWRWYWx1ZSA9IGNvbnRyb2wudmFsdWUudHJpbSgpO1xuICAgICAgaWYgKHRyaW1tZWRWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHsgb25seVdoaXRlc3BhY2U6IHRydWUgfTtcbiAgICAgIH1cbiAgICAgIGlmIChjb250cm9sLnZhbHVlICE9PSB0cmltbWVkVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHsgaGFzV2hpdGVzcGFjZTogdHJ1ZSB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyYW5zZm9ybVJvbGUocm9sZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCByb2xlTWFwOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge1xuICAgICAgMTogJ1N1cGVyIEFkbWluJyxcbiAgICAgIDEwOiAnTGlkZXIgQWNhZGVtaWNvJyxcbiAgICAgIDExOiAnQ29vcmRpbmFkb3IgQWNhZGVtaWNvJyxcbiAgICAgIDEyOiAnVGVhY2hlciBBY2FkZW1pY28nLFxuICAgICAgMTM6ICdFc3R1ZGlhbnRlJyxcbiAgICAgIDE1OiAnUG9zaWJsZSBFc3R1ZGlhbnRlJyxcbiAgICAgIDIwOiAnTGlkZXIgTWFya2V0aW5nJyxcbiAgICAgIDIxOiAnQ29vcmRpbmFkb3IgTWFya2V0aW5nJyxcbiAgICAgIDIyOiAnQXV4aWxpYXIgTWFya2V0aW5nJyxcbiAgICAgIDMwOiAnTGlkZXIgQWRtaW5pc3RyYXRpdm8nLFxuICAgICAgMzE6ICdDb29yZGluYWRvciBBZG1pbmlzdHJhdGl2bycsXG4gICAgICAzMjogJ0F1eGlsaWFyIEFkbWluaXN0cmF0aXZvJyxcbiAgICAgIDQwOiAnTGlkZXIgQ29tZXJjaWFsJyxcbiAgICAgIDQxOiAnQ29vcmRpbmFkb3IgQ29tZXJjaWFsJyxcbiAgICAgIDQyOiAnQXNlc29yIENvbWVyY2lhbCcsXG4gICAgICA1MDogJ0xpZGVyIENhcnRlcmEnLFxuICAgICAgNTE6ICdDb29yZGluYWRvciBDYXJ0ZXJhJyxcbiAgICAgIDUyOiAnQXNlc29yIENhcnRlcmEnLFxuICAgICAgNjA6ICdQcm92ZWVkb3InXG4gICAgfTtcbiAgICByZXR1cm4gcm9sZU1hcFtOdW1iZXIocm9sZSldIHx8ICcnO1xuICB9XG5cbiAgcG9wdWxhdGVGb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLkRhdGFTdHVkZW50KSB7XG4gICAgICB0aGlzLmNoZWNrUm9sZUZvckFkZGl0aW9uYWxGaWVsZHModGhpcy5EYXRhU3R1ZGVudC5yb2xlKTtcblxuICAgICAgY29uc3QgZm9ybVZhbHVlOiBhbnkgPSB7XG4gICAgICAgIG5hbWU6IHRoaXMuRGF0YVN0dWRlbnQubmFtZSB8fCAnJyxcbiAgICAgICAgbGFzdF9uYW1lOiB0aGlzLkRhdGFTdHVkZW50Lmxhc3RfbmFtZSB8fCAnJyxcbiAgICAgICAgZW1haWw6IHRoaXMuRGF0YVN0dWRlbnQuZW1haWwgfHwgJycsXG4gICAgICAgIGdlbmRlcjogdGhpcy5EYXRhU3R1ZGVudC5nZW5kZXIgfHwgbnVsbCxcbiAgICAgICAgaWRfY2FyZF90eXBlOiB0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmRfdHlwZSB8fCAnJyxcbiAgICAgICAgaWRfY2FyZDogdGhpcy5EYXRhU3R1ZGVudC5pZF9jYXJkIHx8ICcnLFxuICAgICAgICBwaG9uZV9pbmRpY2F0aXZlOiB0aGlzLkRhdGFTdHVkZW50LnBob25lX2luZGljYXRpdmUgfHwgJycsXG4gICAgICAgIHBob25lX251bWJlcjogdGhpcy5EYXRhU3R1ZGVudC5waG9uZV9udW1iZXIgfHwgJycsXG4gICAgICAgIGNvdW50cnk6IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uY291bnRyeSxcbiAgICAgICAgc3RhdGU6IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uc3RhdGUsXG4gICAgICAgIGNpdHk6IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uY29kZSxcbiAgICAgICAgcm9sZTogdGhpcy5jYW5FZGl0Um9sZSA/IHRoaXMuRGF0YVN0dWRlbnQucm9sZSA6IHRoaXMudHJhbnNmb3JtUm9sZSh0aGlzLkRhdGFTdHVkZW50LnJvbGUpIHx8ICcnLCAvLyBVc2UgY29kZSBmb3Igc2VsZWN0LCBcbiAgICAgICAgY2hhbmdlUGFzc3dvcmQ6IGZhbHNlLFxuICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgIHJlX3Bhc3N3b3JkOiAnJyxcbiAgICAgICAgc3RhdHVzOiB0aGlzLkRhdGFTdHVkZW50LnVzZXJfc3RhdHVzIHx8ICcnXG4gICAgICB9O1xuXG4gICAgICAvLyBBZ3JlZ2FyIGNhbXBvcyBjb25kaWNpb25hbGVzXG4gICAgICBpZiAodGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cikge1xuICAgICAgICBmb3JtVmFsdWUuZW1haWxfaXB0ID0gdGhpcy5EYXRhU3R1ZGVudC5lbWFpbF9pcHQgfHwgJyc7XG4gICAgICAgIGZvcm1WYWx1ZS5zZXJ2aWNlX2hvdXIgPSB0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciB8fCAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybVZhbHVlLnNlcnZpY2VfaG91ciA9IHRoaXMuRGF0YVN0dWRlbnQuc2VydmljZV9ob3VyIHx8IDA7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNob3dQYXJlbnRTZWN0aW9uKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZm9ybVZhbHVlLCB7XG4gICAgICAgICAgcGFyZW50X25hbWU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9sYXN0X25hbWU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5sYXN0X25hbWUgfHwgJycsXG4gICAgICAgICAgcGFyZW50X2lkX2NhcmRfdHlwZTogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmRfdHlwZSB8fCAnJyxcbiAgICAgICAgICBwYXJlbnRfaWRfY2FyZDogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmQgfHwgJycsXG4gICAgICAgICAgcGFyZW50X3Bob25lX2luZGljYXRpdmU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9pbmRpY2F0aXZlIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9waG9uZV9udW1iZXI6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9udW1iZXIgfHwgJycsXG4gICAgICAgICAgcGFyZW50X29jY3VwYXRpb246IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5vY2N1cGF0aW9uIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9vZmZpY2VfYWRycmVzczogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm9mZmljZV9hZHJyZXNzIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9lbWFpbDogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmVtYWlsIHx8ICcnXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVJZENhcmRWYWxpZGF0b3JzKHRoaXMuRGF0YVN0dWRlbnQuaWRfY2FyZF90eXBlKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0ucmVzZXQoKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0ucGF0Y2hWYWx1ZShmb3JtVmFsdWUpO1xuICAgICAgdGhpcy5pbml0aWFsRm9ybVZhbHVlID0geyAuLi50aGlzLnVwZGF0ZVVzZXJGb3JtLnZhbHVlIH07XG4gICAgICBpZiAoZm9ybVZhbHVlLmNvdW50cnkpIHtcbiAgICAgICAgdGhpcy5jb3VudHJpZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmNvdW50cnk7XG4gICAgICAgIHRoaXMuc2VsZWN0Q291bnRyeSh0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvdW50cnkpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5zdGF0ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdFN0YXRlKHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uc3RhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5jaXR5KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Q2l0eSh0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvZGUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5pZF9jYXJkX3R5cGUpIHtcbiAgICAgICAgdGhpcy5pZFR5cGVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5UeXBlSWRDYXJkQnlDb3VudHJ5Q29sO1xuICAgICAgICB0aGlzLnNlbGVjdElkVHlwZSgnaWRfY2FyZF90eXBlJyx0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmRfdHlwZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybVZhbHVlLnBob25lX2luZGljYXRpdmUpIHtcbiAgICAgICAgdGhpcy5pbmRpY2F0aXZlcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uaW5kaWNhdGl2ZXM7XG4gICAgICAgIHRoaXMuc2VsZWN0SW5kaWNhdGl2ZSgncGhvbmVfaW5kaWNhdGl2ZScsIHRoaXMuRGF0YVN0dWRlbnQucGhvbmVfaW5kaWNhdGl2ZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybVZhbHVlLnBhcmVudF9waG9uZV9pbmRpY2F0aXZlKSB7XG4gICAgICAgIHRoaXMuaW5kaWNhdGl2ZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmluZGljYXRpdmVzO1xuICAgICAgICB0aGlzLnNlbGVjdEluZGljYXRpdmUoJ3BhcmVudF9waG9uZV9pbmRpY2F0aXZlJywgdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LnBob25lX2luZGljYXRpdmUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5nZW5kZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVyc0FsbCAmJiB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyKSB7XG4gICAgICAgICAgLy8gVHJhbnNmb3JtYXIgZ2VuZGVyIGVuIHVuIGFycmVnbG8gZGUgeyBjb2RlLCBuYW1lIH1cbiAgICAgICAgICB0aGlzLmdlbmRlcnMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyLm1hcCgoZ2VuZGVyOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBjb2RlOiBnZW5kZXIuY29kZSxcbiAgICAgICAgICAgIG5hbWU6IGdlbmRlci5uYW1lX3NwYW5pc2hcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5nZW5kZXJzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RHZW5kZXIodGhpcy5EYXRhU3R1ZGVudC5nZW5kZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGlvblVzZXJSb2xlKCl7XG4gICAgY29uc3QgdXNlclJvbGUgPSB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJSb2xlKCk7XG4gICAgY29uc3QgaXNTdHVkZW50RWRpdCA9IHRoaXMuRGF0YVN0dWRlbnQ/LnJvbGUgPT09IDEzO1xuXG4gICAgaWYgKHVzZXJSb2xlID09PSA0MCB8fCB1c2VyUm9sZSA9PT0gNDEgfHwgdXNlclJvbGUgPT09IDQyKSB7XG4gICAgICB0aGlzLnVzZXJSb2xlQ29tbWVyY2lhbCA9IGlzU3R1ZGVudEVkaXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXNlclJvbGVDb21tZXJjaWFsID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2FuRWRpdFJvbGUgPSB1c2VyUm9sZSA9PT0gMSB8fCB1c2VyUm9sZSA9PT0gMzA7XG4gIH1cbiAgXG4gIGNsb3NlVGFibGUoKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlTW9kYWwgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dDb25maXJtRGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy5jb25maXJtRm9ybS5yZXNldCgpO1xuICAgIHRoaXMudXBkYXRlVXNlckZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLmlkVHlwZXMgPSBbXTtcbiAgICB0aGlzLmNvdW50cmllcyA9IFtdO1xuICAgIHRoaXMuZ2VuZGVycyA9IFtdO1xuICAgIHRoaXMudXBkYXRlSWRDYXJkVmFsaWRhdG9ycyhudWxsKTtcbiAgICB0aGlzLmNsb3NlTW9kYWxJUy5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhY2tJZFR5cGVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlkVHlwZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5pZFR5cGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTsgXG4gICAgfVxuICAgIHRoaXMuaWRUeXBlU3Vic2NyaXB0aW9uID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2lkX2NhcmRfdHlwZScpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMudXBkYXRlSWRDYXJkVmFsaWRhdG9ycyh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUlkQ2FyZFZhbGlkYXRvcnMoaWRDYXJkVHlwZTogYW55KTogdm9pZCB7XG5cbiAgICBjb25zdCBpZENhcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2lkX2NhcmQnKTtcbiAgICBpZiAoIWlkQ2FyZENvbnRyb2wpIHJldHVybjtcblxuICAgIGlmIChpZENhcmRUeXBlID09IDcgfHwgaWRDYXJkVHlwZSA9PSA1KSB7XG4gICAgICBpZENhcmRDb250cm9sLnNldFZhbGlkYXRvcnMoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSxcbiAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjApLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL15bYS16QS1aMC05XSokLylcbiAgICAgIF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZENhcmRDb250cm9sLnNldFZhbGlkYXRvcnMoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSxcbiAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjApLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XSokLylcbiAgICAgIF0pO1xuICAgIH1cbiAgICBpZENhcmRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIHNlbGVjdEluZGljYXRpdmUoZmllbGQ6IHN0cmluZywgaW5kaWNhdGl2ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKGluZGljYXRpdmUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KGZpZWxkKT8uc2V0VmFsdWUoaW5kaWNhdGl2ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KGZpZWxkKT8uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0SWRUeXBlKGZpZWxkOiBzdHJpbmcsIGlkVHlwZTogYW55KTogdm9pZCB7XG4gICAgaWYgKGlkVHlwZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoZmllbGQpPy5zZXRWYWx1ZShpZFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldChmaWVsZCk/LnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEdlbmRlcihnZW5kZXI6IGFueSk6IHZvaWQge1xuICAgIGlmIChnZW5kZXIgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdnZW5kZXInKT8uc2V0VmFsdWUoZ2VuZGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2dlbmRlcicpPy5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDb3VudHJ5KGNvdW50cnk6IGFueSkge1xuICAgIGNvbnN0IGNvdW50cnlOdW1iZXIgPSB0eXBlb2YgY291bnRyeSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChjb3VudHJ5LCAxMCkgOiBjb3VudHJ5O1xuICAgIGlmIChjb3VudHJ5ICE9IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZShjb3VudHJ5TnVtYmVyKTtcbiAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnNBbGwgJiYgdGhpcy5wYXJhbWV0ZXJzQWxsPy5TdGF0ZSkge1xuICAgICAgICB0aGlzLnN0YXRlcyA9IHRoaXMucGFyYW1ldGVyc0FsbC5TdGF0ZS5maWx0ZXIoKGNvdXJzZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhdGUgPSB0eXBlb2YgY291cnNlLmNvdW50cnkgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IHBhcnNlSW50KGNvdXJzZS5jb3VudHJ5LCAxMClcbiAgICAgICAgICAgIDogY291cnNlLmNvdW50cnk7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlID09PSBjb3VudHJ5TnVtYmVyO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGVzID0gW107XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jaXRpZXMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5zdGF0ZXMgPSBbXTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0U3RhdGUoc3RhdGU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlTnVtYmVyID0gdHlwZW9mIHN0YXRlID09PSAnc3RyaW5nJyA/IHBhcnNlSW50KHN0YXRlLCAxMCkgOiBzdGF0ZTtcbiAgICBpZiAoc3RhdGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3N0YXRlJ10uc2V0VmFsdWUoc3RhdGVOdW1iZXIpO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jaXRpZXMgPSBbXTtcbiAgICAgIHRoaXMuZ2V0U3RhdGUoc3RhdGVOdW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jaXRpZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0ZShzdGF0ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5nZXRDaXR5KHN0YXRlKTtcbiAgfVxuXG4gIGdldENpdHkoc3RhdGU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlTnVtYmVyID0gdHlwZW9mIHN0YXRlID09PSAnc3RyaW5nJyA/IHBhcnNlSW50KHN0YXRlLCAxMCkgOiBzdGF0ZTtcbiAgICBpZiAodGhpcy5wYXJhbWV0ZXJzQWxsPy5jaXR5KSB7XG4gICAgICB0aGlzLmNpdGllcyA9IHRoaXMucGFyYW1ldGVyc0FsbC5jaXR5LmZpbHRlcigoY291cnNlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgY2l0eVN0YXRlID0gdHlwZW9mIGNvdXJzZS5zdGF0ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChjb3Vyc2Uuc3RhdGUsIDEwKSA6IGNvdXJzZS5zdGF0ZTtcbiAgICAgICAgcmV0dXJuIGNpdHlTdGF0ZSA9PT0gc3RhdGVOdW1iZXI7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaXRpZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDaXR5KGNpdHk6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGNpdHlOdW1iZXIgPSB0eXBlb2YgY2l0eSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChjaXR5LCAxMCkgOiBjaXR5O1xuICAgIGlmIChjaXR5ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUoY2l0eU51bWJlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RSZWFzb24ocmVhc29uOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLmNvbnRyb2xzWydyZWFzb24nXS5zZXRWYWx1ZShyZWFzb24gPyByZWFzb24gOiBudWxsKTtcbiAgfVxuXG4gIHNlbGVjdFJvbGUocm9sZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHJvbGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyb2xlJyk/LnNldFZhbHVlKHJvbGUpO1xuICAgICAgY29uc3QgcHJldmlvdXNTaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA9IHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXI7XG4gICAgICB0aGlzLmNoZWNrUm9sZUZvckFkZGl0aW9uYWxGaWVsZHMocm9sZSk7XG5cbiAgICAgIC8vIFNpIHNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyIGNhbWJpw7MsIGFjdHVhbGl6YXIgbG9zIHZhbGlkYWRvcmVzXG4gICAgICBpZiAocHJldmlvdXNTaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciAhPT0gdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cikge1xuICAgICAgICBjb25zdCBlbWFpbElwdENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnZW1haWxfaXB0Jyk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2VIb3VyQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdzZXJ2aWNlX2hvdXInKTtcblxuICAgICAgICBpZiAodGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cikge1xuICAgICAgICAgIC8vIEFncmVnYXIgY2FtcG9zIHkgdmFsaWRhZG9yZXMgc2kgbm8gZXN0YWJhbiBwcmVzZW50ZXNcbiAgICAgICAgICBpZiAoIWVtYWlsSXB0Q29udHJvbCkge1xuICAgICAgICAgICAgY29uc3QgZW1haWxJcHRWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuZW1haWxfaXB0IHx8ICcnO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5hZGRDb250cm9sKCdlbWFpbF9pcHQnLCB0aGlzLmZiLmNvbnRyb2woZW1haWxJcHRWYWx1ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1MCldKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVtYWlsSXB0Q29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXSk7XG4gICAgICAgICAgICBlbWFpbElwdENvbnRyb2wuc2V0VmFsdWUodGhpcy5EYXRhU3R1ZGVudC5lbWFpbF9pcHQgfHwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXNlcnZpY2VIb3VyQ29udHJvbCkge1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZUhvdXJWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuc2VydmljZV9ob3VyICE9IG51bGwgPyB0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciA6IDA7IC8vIFVzYSAwIGNvbW8gZmFsbGJhY2tcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uYWRkQ29udHJvbCgnc2VydmljZV9ob3VyJywgdGhpcy5mYi5jb250cm9sKHNlcnZpY2VIb3VyVmFsdWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XSskLyksIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCg0NCldKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XSskLyksIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCg0NCldKTtcbiAgICAgICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5zZXRWYWx1ZSh0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciAhPSBudWxsID8gdGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgOiAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGVtYWlsSXB0Q29udHJvbCkge1xuICAgICAgICAgICAgZW1haWxJcHRDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgZW1haWxJcHRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNlcnZpY2VIb3VyQ29udHJvbCkge1xuICAgICAgICAgICAgc2VydmljZUhvdXJDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgc2VydmljZUhvdXJDb250cm9sLnNldFZhbHVlKDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVtYWlsSXB0Q29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3JvbGUnKT8uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID0gZmFsc2U7XG4gICAgICBjb25zdCBlbWFpbElwdENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnZW1haWxfaXB0Jyk7XG4gICAgICBjb25zdCBzZXJ2aWNlSG91ckNvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnc2VydmljZV9ob3VyJyk7XG4gICAgICBpZiAoZW1haWxJcHRDb250cm9sKSB7XG4gICAgICAgIGVtYWlsSXB0Q29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgZW1haWxJcHRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgZW1haWxJcHRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZXJ2aWNlSG91ckNvbnRyb2wpIHtcbiAgICAgICAgc2VydmljZUhvdXJDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2wuc2V0VmFsdWUoMCk7XG4gICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBcbiAgaGFzRm9ybUNoYW5nZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmluaXRpYWxGb3JtVmFsdWUgfHwgIXRoaXMuRGF0YVN0dWRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldFJhd1ZhbHVlKCk7XG5cbiAgICBpZiAoY3VycmVudFZhbHVlLmNoYW5nZVBhc3N3b3JkKSB7XG4gICAgICBjb25zdCBwYXNzd29yZCA9IGN1cnJlbnRWYWx1ZS5wYXNzd29yZDtcbiAgICAgIGNvbnN0IHJlUGFzc3dvcmQgPSBjdXJyZW50VmFsdWUucmVfcGFzc3dvcmQ7XG4gICAgICBjb25zdCBwYXNzd29yZENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgncGFzc3dvcmQnKTtcbiAgICAgIGNvbnN0IHJlUGFzc3dvcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3JlX3Bhc3N3b3JkJyk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgcGFzc3dvcmRDb250cm9sPy52YWxpZCAmJlxuICAgICAgICByZVBhc3N3b3JkQ29udHJvbD8udmFsaWQgJiZcbiAgICAgICAgcGFzc3dvcmQgPT09IHJlUGFzc3dvcmQgJiZcbiAgICAgICAgcGFzc3dvcmQ/LnRyaW0oKSAhPT0gJydcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZHNUb0NvbXBhcmU6IChrZXlvZiBJRm9ybURhdGFScSlbXSA9IFtcbiAgICAgICduYW1lJyxcbiAgICAgICdsYXN0X25hbWUnLFxuICAgICAgJ2VtYWlsJyxcbiAgICAgICdnZW5kZXInLFxuICAgICAgJ2lkX2NhcmRfdHlwZScsXG4gICAgICAnaWRfY2FyZCcsXG4gICAgICAncGhvbmVfaW5kaWNhdGl2ZScsXG4gICAgICAncGhvbmVfbnVtYmVyJyxcbiAgICAgICdjb3VudHJ5JyxcbiAgICAgICdzdGF0ZScsXG4gICAgICAnY2l0eScsXG4gICAgICAncm9sZScsXG4gICAgICAnc3RhdHVzJ1xuICAgIF07XG5cbiAgICBpZiAodGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cikge1xuICAgICAgZmllbGRzVG9Db21wYXJlLnB1c2goXG4gICAgICAgICdlbWFpbF9pcHQnLFxuICAgICAgICAnc2VydmljZV9ob3VyJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG93UGFyZW50U2VjdGlvbikge1xuICAgICAgZmllbGRzVG9Db21wYXJlLnB1c2goXG4gICAgICAgICdwYXJlbnRfbmFtZScsXG4gICAgICAgICdwYXJlbnRfbGFzdF9uYW1lJyxcbiAgICAgICAgJ3BhcmVudF9pZF9jYXJkX3R5cGUnLFxuICAgICAgICAncGFyZW50X2lkX2NhcmQnLFxuICAgICAgICAncGFyZW50X3Bob25lX2luZGljYXRpdmUnLFxuICAgICAgICAncGFyZW50X3Bob25lX251bWJlcicsXG4gICAgICAgICdwYXJlbnRfb2NjdXBhdGlvbicsXG4gICAgICAgICdwYXJlbnRfb2ZmaWNlX2FkcnJlc3MnLFxuICAgICAgICAncGFyZW50X2VtYWlsJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkc1RvQ29tcGFyZSkge1xuICAgICAgbGV0IG9yaWdpbmFsVmFsdWU6IGFueTtcbiAgICAgIGxldCBjdXJyZW50RmllbGRWYWx1ZTogYW55ID0gY3VycmVudFZhbHVlW2ZpZWxkXTtcblxuICAgICAgc3dpdGNoIChmaWVsZCkge1xuICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5uYW1lIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsYXN0X25hbWUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50Lmxhc3RfbmFtZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmVtYWlsIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdlbWFpbF9pcHQnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID8gKHRoaXMuRGF0YVN0dWRlbnQuZW1haWxfaXB0IHx8ICcnKSA6ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdnZW5kZXInOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmdlbmRlciB8fCBudWxsO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpZF9jYXJkX3R5cGUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmRfdHlwZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaWRfY2FyZCc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuaWRfY2FyZCB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGhvbmVfaW5kaWNhdGl2ZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQucGhvbmVfaW5kaWNhdGl2ZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGhvbmVfbnVtYmVyJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5waG9uZV9udW1iZXIgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NvdW50cnknOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvdW50cnkgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0YXRlJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jaXR5Py5zdGF0ZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY2l0eSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uY29kZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncm9sZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuY2FuRWRpdFJvbGUgPyB0aGlzLkRhdGFTdHVkZW50LnJvbGUgOiB0aGlzLnRyYW5zZm9ybVJvbGUodGhpcy5EYXRhU3R1ZGVudC5yb2xlKSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc2VydmljZV9ob3VyJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/ICh0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciB8fCAwKSA6IDA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0YXR1cyc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQudXNlcl9zdGF0dXMgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9uYW1lJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm5hbWUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9sYXN0X25hbWUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ubGFzdF9uYW1lIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfaWRfY2FyZF90eXBlJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmRfdHlwZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X2lkX2NhcmQnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8uaWRfY2FyZCB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X3Bob25lX2luZGljYXRpdmUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ucGhvbmVfaW5kaWNhdGl2ZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X3Bob25lX251bWJlcic6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9udW1iZXIgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9vY2N1cGF0aW9uJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm9jY3VwYXRpb24gfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9vZmZpY2VfYWRycmVzcyc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5vZmZpY2VfYWRycmVzcyB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X2VtYWlsJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmVtYWlsIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSAnJztcbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm9ybWFsaXplZEN1cnJlbnQgPSBjdXJyZW50RmllbGRWYWx1ZSAhPSBudWxsID8gU3RyaW5nKGN1cnJlbnRGaWVsZFZhbHVlKS50cmltKCkgOiAnJztcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRPcmlnaW5hbCA9IG9yaWdpbmFsVmFsdWUgIT0gbnVsbCA/IFN0cmluZyhvcmlnaW5hbFZhbHVlKS50cmltKCkgOiAnJztcblxuICAgICAgaWYgKG5vcm1hbGl6ZWRDdXJyZW50ICE9PSBub3JtYWxpemVkT3JpZ2luYWwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc2hvd0NvbmZpcm1TZWN0aW9uSGFuZGxlcigpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmludmFsaWQgfHxcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uaGFzRXJyb3IoJ21pc21hdGNoJykgfHxcbiAgICAgICF0aGlzLmhhc0Zvcm1DaGFuZ2VkKClcbiAgICApIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2hvd0NvbmZpcm1TZWN0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIHNlbmRVcGRhdGVSZXF1ZXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpcm1Gb3JtLmludmFsaWQpIHtcbiAgICAgIHRoaXMuY29uZmlybUZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgY29uc3QgY29uZmlybVZhbHVlID0gdGhpcy5jb25maXJtRm9ybS52YWx1ZTtcblxuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIHRva2VuOiB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJUb2tlbigpLFxuICAgICAgdXNlcjoge1xuICAgICAgICBjb2RlOiB0aGlzLkRhdGFTdHVkZW50LmNvZGUsXG4gICAgICAgIG5hbWU6IGZvcm1WYWx1ZS5uYW1lLFxuICAgICAgICBsYXN0X25hbWU6IGZvcm1WYWx1ZS5sYXN0X25hbWUsXG4gICAgICAgIGlkX2NhcmRfdHlwZTogZm9ybVZhbHVlLmlkX2NhcmRfdHlwZSxcbiAgICAgICAgaWRfY2FyZDogZm9ybVZhbHVlLmlkX2NhcmQsXG4gICAgICAgIHBob25lX2luZGljYXRpdmU6IGZvcm1WYWx1ZS5waG9uZV9pbmRpY2F0aXZlLFxuICAgICAgICBwaG9uZV9udW1iZXI6IGZvcm1WYWx1ZS5waG9uZV9udW1iZXIsXG4gICAgICAgIGVtYWlsOiBmb3JtVmFsdWUuZW1haWwsXG4gICAgICAgIGdlbmRlcjogZm9ybVZhbHVlLmdlbmRlcixcbiAgICAgICAgY2l0eTogZm9ybVZhbHVlLmNpdHksXG4gICAgICAgIHNlcnZpY2VfaG91cjogdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/IGZvcm1WYWx1ZS5zZXJ2aWNlX2hvdXIgOiAwLFxuICAgICAgICByb2xlOiB0aGlzLmNhbkVkaXRSb2xlID8gZm9ybVZhbHVlLnJvbGUgOiB0aGlzLkRhdGFTdHVkZW50LnJvbGUsXG4gICAgICAgIHN0YXR1czogZm9ybVZhbHVlLnN0YXR1cyxcbiAgICAgICAgLi4uKHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPyB7IGVtYWlsX2lwdDogZm9ybVZhbHVlLmVtYWlsX2lwdCB9IDoge30pLFxuICAgICAgICAuLi4oZm9ybVZhbHVlLmNoYW5nZVBhc3N3b3JkICYmIGZvcm1WYWx1ZS5wYXNzd29yZCA/IHsgcGFzc3dvcmQ6IGZvcm1WYWx1ZS5wYXNzd29yZCB9IDoge30pXG4gICAgICB9LFxuICAgICAgcGFyZW50OiB0aGlzLnNob3dQYXJlbnRTZWN0aW9uXG4gICAgICAgID8ge1xuICAgICAgICAgICAgY29kZTogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmNvZGUgfHwgbnVsbCxcbiAgICAgICAgICAgIG5hbWU6IGZvcm1WYWx1ZS5wYXJlbnRfbmFtZSB8fCBudWxsLFxuICAgICAgICAgICAgbGFzdF9uYW1lOiBmb3JtVmFsdWUucGFyZW50X2xhc3RfbmFtZSB8fCBudWxsLFxuICAgICAgICAgICAgaWRfY2FyZF90eXBlOiBmb3JtVmFsdWUucGFyZW50X2lkX2NhcmRfdHlwZSB8fCBudWxsLFxuICAgICAgICAgICAgaWRfY2FyZDogZm9ybVZhbHVlLnBhcmVudF9pZF9jYXJkIHx8IG51bGwsXG4gICAgICAgICAgICBwaG9uZV9pbmRpY2F0aXZlOiBmb3JtVmFsdWUucGFyZW50X3Bob25lX2luZGljYXRpdmUgfHwgbnVsbCxcbiAgICAgICAgICAgIHBob25lX251bWJlcjogZm9ybVZhbHVlLnBhcmVudF9waG9uZV9udW1iZXIgfHwgbnVsbCxcbiAgICAgICAgICAgIG9jY3VwYXRpb246IGZvcm1WYWx1ZS5wYXJlbnRfb2NjdXBhdGlvbiB8fCBudWxsLFxuICAgICAgICAgICAgb2ZmaWNlX2FkcnJlc3M6IGZvcm1WYWx1ZS5wYXJlbnRfb2ZmaWNlX2FkcnJlc3MgfHwgbnVsbCxcbiAgICAgICAgICAgIGVtYWlsOiBmb3JtVmFsdWUucGFyZW50X2VtYWlsIHx8IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbCxcbiAgICAgIHJlYXNvbjogY29uZmlybVZhbHVlLnJlYXNvbixcbiAgICAgIG9ic2VydmF0aW9uOiBjb25maXJtVmFsdWUub2JzZXJ2YXRpb24sXG4gICAgfTtcblxuICAgIHRoaXMudXNlclNlcnZpY2UudXBkYXRlVXNlckJ5Q29kZShyZXF1ZXN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlLmNvZGUgPT09IDEpIHtcbiAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgcG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgICAgICAgaWNvbjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgdGl0bGU6ICdVc3VhcmlvIGFjdHVhbGl6YWRvIHNhdGlzZmFjdG9yaWFtZW50ZScsXG4gICAgICAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXG4gICAgICAgICAgICB0aW1lcjogMjUwMCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnVzZXJVcGRhdGVkRXZlbnQuZW1pdCgpO1xuICAgICAgICAgIHRoaXMuY2xvc2VUYWJsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLm1lc3NhZ2UuY29kZSA9PT0gMykge1xuICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICAgICAgICBpY29uOiAnd2FybmluZycsXG4gICAgICAgICAgICB0aXRsZTogcmVzcG9uc2UuZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgdGV4dDogcmVzcG9uc2UuZGF0YS5lcnJvcnMsXG4gICAgICAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXG4gICAgICAgICAgICB0aW1lcjogMjUwMCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHVwZGF0aW5nIHVzZXI6JywgZXJyKTtcbiAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICAgICAgaWNvbjogJ2Vycm9yJyxcbiAgICAgICAgICB0aXRsZTogJ0hhIG9jdXJyaWRvIHVuIGVycm9yIGluZXNwZXJhZG8nLFxuICAgICAgICAgIHNob3dDb25maXJtQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgICB0aW1lcjogMjUwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzaG93Q29uZmlybURpYWxvZ3MoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5pbnZhbGlkIHx8XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmhhc0Vycm9yKCdtaXNtYXRjaCcpIHx8XG4gICAgICAhdGhpcy5oYXNGb3JtQ2hhbmdlZCgpXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY29uZmlybUZvcm0ucmVzZXQoKTsgXG4gICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyA9IHRydWU7IFxuICB9XG5cbiAgYWNjZXB0Q29uZmlybURpYWxvZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maXJtRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmNvbmZpcm1Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZW5kVXBkYXRlUmVxdWVzdCgpO1xuICB9XG5cbiAgcmVqZWN0Q29uZmlybURpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLnJlc2V0KCk7XG4gIH1cblxuICBjbG9zZUNvbmZpcm1EaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlybUZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLmdldCgncmVhc29uJyk/LnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLmdldCgnb2JzZXJ2YXRpb24nKT8uc2V0VmFsdWUoJycpO1xuICB9XG5cbiAgLy8gQWdyZWdhciBlc3RlIG3DqXRvZG8gcGFyYSB2ZXJpZmljYXIgZWwgcm9sIHkgbW9zdHJhci9vY3VsdGFyIGNhbXBvc1xuICBjaGVja1JvbGVGb3JBZGRpdGlvbmFsRmllbGRzKHJvbGU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHJvbGVOdW1iZXIgPSB0eXBlb2Ygcm9sZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChyb2xlLCAxMCkgOiByb2xlO1xuICAgIFxuICAgIGNvbnN0IHJvbGVzV2l0aG91dEFkZGl0aW9uYWxGaWVsZHMgPSBbMTMsIDE1LCA2MF07XG4gICAgXG4gICAgdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA9ICFyb2xlc1dpdGhvdXRBZGRpdGlvbmFsRmllbGRzLmluY2x1ZGVzKHJvbGVOdW1iZXIpO1xuICB9XG5cblxufSIsIjxtYWluICpuZ0lmPVwidmlzaWJsZU1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbF9jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX21vZGFsIHllbGxvdy0zMDBcIj5cbiAgICAgIDxoMT5BY3R1YWxpemFyIHVzdWFyaW88L2gxPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2VUYWJsZSgpXCI+eDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJncmlkX2NvbnRhaW5lclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGZvcm0gKm5nSWY9XCJ1cGRhdGVVc2VyRm9ybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwidXBkYXRlVXNlckZvcm1cIj5cbiAgICAgICAgICA8IS0tIFVzZXIgSW5mb3JtYXRpb24gU2VjdGlvbiAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMj5JbmZvcm1hY2nDs24gZGVsIHVzdWFyaW88L2gyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWRcIj5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ05vbWJyZXMnXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIGVsIG5vbWJyZScgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWyduYW1lJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpID8gJ03DrW5pbW8gMyBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXS5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnTcOheGltbyAzMiBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXS5oYXNFcnJvcigncGF0dGVybicpID8gJ1NvbG8gbGV0cmFzLCBlc3BhY2lvcyB5IGd1aW9uZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdoYXNXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gZXNwYWNpb3MgYWwgaW5pY2lvIG8gZmluYWwnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdvbmx5V2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIHNvbG8gZXNwYWNpb3MnIDpcbiAgICAgICAgICAgICAgICAnRGViZSBpbmdyZXNhciBlbCBub21icmUnXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0FwZWxsaWRvcydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIGxvcyBhcGVsbGlkb3MnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpID8gJ03DrW5pbW8gMyBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2xhc3RfbmFtZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDMyIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ3BhdHRlcm4nKSA/ICdTb2xvIGxldHJhcywgZXNwYWNpb3MgeSBndWlvbmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2xhc3RfbmFtZSddLmhhc0Vycm9yKCdoYXNXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gZXNwYWNpb3MgYWwgaW5pY2lvIG8gZmluYWwnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ29ubHlXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gc29sbyBlc3BhY2lvcycgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIGxvcyBhcGVsbGlkb3MnXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInZW1haWwnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidFbWFpbCdcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnRGViZSBpbmdyZXNhciB1biBjb3JyZW8gdsOhbGlkbycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbCddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDMwMCBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ3BhdHRlcm4nKSA/ICdUaWVuZSBxdWUgc2VyIHVuIGVtYWlsIGNvcnJlY3RvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ2hhc1doaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBlc3BhY2lvcyBhbCBpbmljaW8gbyBmaW5hbCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbCddLmhhc0Vycm9yKCdvbmx5V2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIHNvbG8gZXNwYWNpb3MnIDpcbiAgICAgICAgICAgICAgICAnRGViZSBpbmdyZXNhciB1biBjb3JyZW8gdsOhbGlkbydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyXCJcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VtYWlsIElQVCdcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWxfaXB0J11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIHVuIGNvcnJlbyBJUFQgdsOhbGlkbycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXS5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnTcOheGltbyAyNTUgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXS5oYXNFcnJvcigncGF0dGVybicpID8gJ1RpZW5lIHF1ZSBzZXIgdW4gZW1haWwgY29ycmVjdG8nIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWxfaXB0J10uaGFzRXJyb3IoJ2hhc1doaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBlc3BhY2lvcyBhbCBpbmljaW8gbyBmaW5hbCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXS5oYXNFcnJvcignb25seVdoaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBzb2xvIGVzcGFjaW9zJyA6XG4gICAgICAgICAgICAgICAgJ0RlYmUgaW5ncmVzYXIgdW4gY29ycmVvIElQVCB2w6FsaWRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXJcIlxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidIb3JhcyBkZSBzZXJ2aWNpbydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc2VydmljZV9ob3VyJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzZXJ2aWNlX2hvdXInXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIGxhcyBob3JhcyBkZSBzZXJ2aWNpbycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzZXJ2aWNlX2hvdXInXS5oYXNFcnJvcigncGF0dGVybicpID8gJ1NvbG8gbsO6bWVyb3MgcGVybWl0aWRvcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzZXJ2aWNlX2hvdXInXS5oYXNFcnJvcignbWluJykgPyAnRWwgdmFsb3IgZGViZSBzZXIgbWF5b3IgbyBpZ3VhbCBhIDAnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc2VydmljZV9ob3VyJ10uaGFzRXJyb3IoJ21heCcpID8gJ0VsIHZhbG9yIGRlYmUgc2VyIG1lbm9yIG8gaWd1YWwgYSA0NCcgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIGxhcyBob3JhcyBkZSBzZXJ2aWNpbydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FuRWRpdFJvbGU7IGVsc2UgcmVhZE9ubHlSb2xlXCI+XG4gICAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncm9sZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncm9sZSddXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncm9sZSddLnZhbHVlID09PSBudWxsID8gJ1NlbGVjY2lvbmUgcm9sJyA6IHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ10udmFsdWVcIlxuICAgICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtkYXRhXT1cInJvbGVzXCJcbiAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwiY29kZVwiXG4gICAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdFJvbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidTZWxlY2Npb25lIHJvbCdcIlxuICAgICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3JlYWRPbmx5Um9sZT5cbiAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1JvbCdcIlxuICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ11cIlxuICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ1JvbCByZXF1ZXJpZG8nXCJcbiAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2dlbmRlciddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2dlbmRlciddXCJcbiAgICAgICAgICAgICAgW3NlbGVjdENvZGVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2dlbmRlciddLnZhbHVlID09PSBudWxsID8gJ1NlbGVjY2lvbmUgZ8OpbmVybycgOiAodXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2dlbmRlciddLnZhbHVlIHwgZ2VuZGVyRGlzcGxheSlcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJnZW5kZXJzXCJcbiAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdEdlbmRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidTZWxlY2Npb25lIGfDqW5lcm8nXCJcbiAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwaG9uZV9pbmRpY2F0aXZlJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGhvbmVfaW5kaWNhdGl2ZSddXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwiaW5kaWNhdGl2ZXNcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SW5kaWNhdGl2ZSgncGhvbmVfaW5kaWNhdGl2ZScsICRldmVudClcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0luZGljYXRpdm8nXCJcbiAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1RlbMOpZm9ubydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGhvbmVfbnVtYmVyJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidEZWJlIGluZ3Jlc2FyIHVuIG7Dum1lcm8gZGUgdGVsw6lmb25vIHbDoWxpZG8nXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddXCJcbiAgICAgICAgICAgICAgW3NlbGVjdENvZGVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddLnZhbHVlID09PSBudWxsID8gJ1RpcG8gZGUgZG9jdW1lbnRvJyA6IHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkX3R5cGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJpZFR5cGVzXCJcbiAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdElkVHlwZSgnaWRfY2FyZF90eXBlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInVGlwbyBkZSBkb2N1bWVudG8nXCJcbiAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidEb2N1bWVudG8nXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmQnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmQnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIGVsIG7Dum1lcm8gZGUgZG9jdW1lbnRvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmQnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyA1IGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDIwIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAodXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddLnZhbHVlID09PSA3IHx8IHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkX3R5cGUnXS52YWx1ZSA9PT0gNSA/ICdTb2xvIGxldHJhcyB5IG7Dum1lcm9zIHBlcm1pdGlkb3MnIDogJ1NvbG8gbsO6bWVyb3MgcGVybWl0aWRvcycpIDpcbiAgICAgICAgICAgICAgICAnRGViZSBpbmdyZXNhciBlbCBuw7ptZXJvIGRlIGRvY3VtZW50bydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdENvZGVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZSA9PT0gbnVsbCA/ICdQYcOtcyBkZSByZXNpZGVuY2lhJyA6IHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjb3VudHJ5J10udmFsdWVcIlxuICAgICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RDb3VudHJ5KCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtkYXRhXT1cImNvdW50cmllc1wiXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidQYcOtcyBkZSByZXNpZGVuY2lhJ1wiXG4gICAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3N0YXRlJ11cIlxuICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdEZXBhcnRhbWVudG8gbyBlc3RhZG8nIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3N0YXRlJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdFN0YXRlKCRldmVudClcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJzdGF0ZXNcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0RlcGFydGFtZW50byBvIGVzdGFkbydcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J11cIlxuICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnZhbHVlID09PSBudWxsID8gJ0NpdWRhZCBkZSByZXNpZGVuY2lhJyA6IHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J10udmFsdWVcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0Q2l0eSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwiY2l0aWVzXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidDaXVkYWQgZGUgcmVzaWRlbmNpYSdcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXN0YXR1c1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwYW4tc3RhdHVzXCI+RXN0YWRvPC9zcGFuPlxuICAgICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwianVzdGlmeU9wdGlvbnNcIiBcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGF0dXNcIiBcbiAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cIm5hbWVcIiBcbiAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cImNvZGVcIj5cbiAgICAgICAgICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiF1c2VyUm9sZUNvbW1lcmNpYWxcIiBjbGFzcz1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxwLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2hhbmdlUGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ2FtYmlvIGRlIGNvbnRyYXNlw7FhXCJcbiAgICAgICAgICAgICAgICBbYmluYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+PC9wLWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiICpuZ0lmPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NoYW5nZVBhc3N3b3JkJ10udmFsdWVcIj5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIncGFzc3dvcmQnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidDb250cmFzZcOxYSdcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnTGEgY29udHJhc2XDsWEgZXMgcmVxdWVyaWRhJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpID8gJ03DrW5pbW8gNSBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMzIgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgICdJbmdyZXNlIHVuYSBjb250cmFzZcOxYSB2w6FsaWRhJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIncGFzc3dvcmQnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidSZXBldGlyIGNvbnRyYXNlw7FhJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyZV9wYXNzd29yZCddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncmVfcGFzc3dvcmQnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIHJlcGV0aXIgbGEgY29udHJhc2XDsWEnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncmVfcGFzc3dvcmQnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyA1IGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncmVfcGFzc3dvcmQnXS5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnTcOheGltbyAzMiBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uaGFzRXJyb3IoJ21pc21hdGNoJykgPyAnTGFzIGNvbnRyYXNlw7FhcyBubyBjb2luY2lkZW4nIDpcbiAgICAgICAgICAgICAgICAnUmVwaXRhIGxhIGNvbnRyYXNlw7FhJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIE1lbnNhamUgYWRpY2lvbmFsIHBhcmEgZWwgZXJyb3IgZGUgbWlzbWF0Y2ggKG9wY2lvbmFsLCBzaSBxdWllcmVzIG1vc3RyYXJsbyBwb3Igc2VwYXJhZG8pIC0tPlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInVwZGF0ZVVzZXJGb3JtLmhhc0Vycm9yKCdtaXNtYXRjaCcpICYmIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaGFuZ2VQYXNzd29yZCddLnZhbHVlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICA8c21hbGwgPkxhcyBjb250cmFzZcOxYXMgbm8gY29pbmNpZGVuPC9zbWFsbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIFBhcmVudCBJbmZvcm1hdGlvbiBTZWN0aW9uIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiICpuZ0lmPVwiRGF0YVN0dWRlbnQ/LmNvZHNcIj5cbiAgICAgICAgICAgIDxoMj5JbmZvcm1hY2nDs24gZGVsIGFjdWRpZW50ZTwvaDI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIkRhdGFTdHVkZW50Py5jb2RzXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1BhcmVudFNlY3Rpb247IGVsc2Ugbm9QYXJlbnRNZXNzYWdlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWRcIj5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ05vbWJyZXMnXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfbmFtZSddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgZWwgbm9tYnJlJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInQXBlbGxpZG9zJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2xhc3RfbmFtZSddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgbG9zIGFwZWxsaWRvcydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ09jdXBhY2nDs24nXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfb2NjdXBhdGlvbiddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgbGEgb2N1cGFjacOzbidcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidlbWFpbCdcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidFbWFpbCdcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9lbWFpbCddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgdW4gY29ycmVvIHbDoWxpZG8nXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9pZF9jYXJkX3R5cGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2lkX2NhcmRfdHlwZSddXCJcbiAgICAgICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfaWRfY2FyZF90eXBlJ10udmFsdWUgPT09IG51bGwgPyAnVGlwbyBkZSBkb2N1bWVudG8nIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9pZF9jYXJkX3R5cGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImlkVHlwZXNcIlxuICAgICAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdElkVHlwZSgncGFyZW50X2lkX2NhcmRfdHlwZScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidUaXBvIGRlIGRvY3VtZW50bydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0RvY3VtZW50bydcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9pZF9jYXJkJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBlbCBuw7ptZXJvIGRlIGRvY3VtZW50bydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X3Bob25lX2luZGljYXRpdmUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X3Bob25lX2luZGljYXRpdmUnXVwiXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJpbmRpY2F0aXZlc1wiXG4gICAgICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SW5kaWNhdGl2ZSgncGFyZW50X3Bob25lX2luZGljYXRpdmUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInSW5kaWNhdGl2bydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1RlbMOpZm9ubydcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9waG9uZV9udW1iZXInXVwiXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidEZWJlIGluZ3Jlc2FyIHVuIG7Dum1lcm8gZGUgdGVsw6lmb25vIHbDoWxpZG8nXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0RpcmVjY2nDs24gZGUgb2ZpY2luYSdcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9vZmZpY2VfYWRycmVzcyddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgbGEgZGlyZWNjacOzbidcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9QYXJlbnRNZXNzYWdlPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tcGFyZW50LW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICA8cD5TaW4gYWN1ZGllbnRlPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXItaW5uZXJcIj5cbiAgICAgICAgICAgICAgPGlwdC1idXR0b25cbiAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIididXR0b24nXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ2VycmFyJ1wiXG4gICAgICAgICAgICAgICAgICBbcHJpbWFyeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbaXNFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY2xvc2VUYWJsZSgpXCJcbiAgICAgICAgICAgICAgPjwvaXB0LWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8aXB0LWJ1dHRvblxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWN0dWFsaXphcidcIlxuICAgICAgICAgICAgICAgIFtpc0VuYWJsZWRdPVwiIWxvYWRlciAmJiB1cGRhdGVVc2VyRm9ybS52YWxpZCAmJiAhdXBkYXRlVXNlckZvcm0uaGFzRXJyb3IoJ21pc21hdGNoJykgJiYgaGFzRm9ybUNoYW5nZWQoKVwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic2hvd0NvbmZpcm1EaWFsb2dzKClcIlxuICAgICAgICAgICAgICAgIFtwcmltYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L2lwdC1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ29uZmlybSBEaWFsb2cgcGFyYSByYXrDs24geSBvYnNlcnZhY2nDs24gLS0+XG48cC1kaWFsb2dcbiAgICBoZWFkZXI9XCJDb25maXJtYXIgQWp1c3RlIGRlIFVzdWFyaW9cIlxuICAgIFsodmlzaWJsZSldPVwic2hvd0NvbmZpcm1EaWFsb2dcIlxuICAgIFttb2RhbF09XCJ0cnVlXCJcbiAgICAob25IaWRlKT1cImNsb3NlQ29uZmlybURpYWxvZygpXCJcbiAgPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNvbmZpcm1Gb3JtXCIgY2xhc3M9XCJjb25maXJtLWZvcm1cIj5cbiAgICA8ZGl2IGNsYXNzPVwicC1maWVsZFwiPlxuICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgW2NvbnRyb2xdPVwiY29uZmlybUZvcm0uY29udHJvbHNbJ3JlYXNvbiddXCJcbiAgICAgICAgW2RhdGFdPVwicmVhc29uc1wiXG4gICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiXG4gICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RSZWFzb24oJGV2ZW50KVwiXG4gICAgICAgIFtkZWZhdWx0VGV4dF09XCInU2VsZWNjaW9uZSBsYSByYXrDs24nXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8c21hbGwgKm5nSWY9XCJjb25maXJtRm9ybS5jb250cm9sc1sncmVhc29uJ10uaW52YWxpZCAmJiBjb25maXJtRm9ybS5jb250cm9sc1sncmVhc29uJ10udG91Y2hlZFwiIGNsYXNzPVwicC1lcnJvclwiPlxuICAgICAgICBMYSByYXrDs24gZXMgcmVxdWVyaWRhXG4gICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwLWZpZWxkXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJjb250YWluZXItb2JzZXJ2YXRpb25cIj5PYnNlcnZhY2nDs248L2xhYmVsPlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIGlkPVwib2JzZXJ2YXRpb25cIlxuICAgICAgICBwSW5wdXRUZXh0YXJlYVxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvYnNlcnZhdGlvblwiXG4gICAgICAgIHJvd3M9XCIzXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJEZXNjcmliZSBkZXRhbGxlcyBhZGljaW9uYWxlcyBkZWwgYWp1c3RlXCJcbiAgICAgID48L3RleHRhcmVhPlxuICAgICAgPHNtYWxsICpuZ0lmPVwiY29uZmlybUZvcm0uY29udHJvbHNbJ29ic2VydmF0aW9uJ10uaW52YWxpZCAmJiBjb25maXJtRm9ybS5jb250cm9sc1snb2JzZXJ2YXRpb24nXS50b3VjaGVkXCIgY2xhc3M9XCJwLWVycm9yXCI+XG4gICAgICAgIExhIG9ic2VydmFjacOzbiBlcyByZXF1ZXJpZGFcbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbiAgPHAtZm9vdGVyPlxuICAgIDxpcHQtYnV0dG9uXG4gICAgICBjbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeVwiXG4gICAgICBbYnV0dG9uVHlwZV09XCInYnV0dG9uJ1wiXG4gICAgICBbbGFiZWxdPVwiJ0NhbmNlbGFyJ1wiXG4gICAgICBbcHJpbWFyeV09XCJmYWxzZVwiXG4gICAgICBbaXNFbmFibGVkXT1cInRydWVcIlxuICAgICAgKG9uQ2xpY2spPVwiY2xvc2VDb25maXJtRGlhbG9nKClcIlxuICAgID48L2lwdC1idXR0b24+XG4gICAgPGlwdC1idXR0b25cbiAgICAgIGNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCJcbiAgICAgIFtidXR0b25UeXBlXT1cIididXR0b24nXCJcbiAgICAgIFtsYWJlbF09XCInQ29uZmlybWFyJ1wiXG4gICAgICBbcHJpbWFyeV09XCJ0cnVlXCJcbiAgICAgIFtpc0VuYWJsZWRdPVwiIWxvYWRlciAmJiBjb25maXJtRm9ybS52YWxpZFwiXG4gICAgICAob25DbGljayk9XCJhY2NlcHRDb25maXJtRGlhbG9nKClcIlxuICAgID48L2lwdC1idXR0b24+XG4gIDwvcC1mb290ZXI+XG48L3AtZGlhbG9nPlxuXG48L21haW4+Il19
|
|
@@ -2262,8 +2262,6 @@ class updateUserFormComponent {
|
|
|
2262
2262
|
var _a;
|
|
2263
2263
|
const userRole = this.baseService.getUserRole();
|
|
2264
2264
|
const isStudentEdit = ((_a = this.DataStudent) === null || _a === void 0 ? void 0 : _a.role) === 13;
|
|
2265
|
-
// Log para depuración
|
|
2266
|
-
console.log('validationUserRole - userRole:', userRole, 'isStudentEdit:', isStudentEdit, 'DataStudent:', this.DataStudent);
|
|
2267
2265
|
if (userRole === 40 || userRole === 41 || userRole === 42) {
|
|
2268
2266
|
this.userRoleCommercial = isStudentEdit;
|
|
2269
2267
|
}
|