application-sidebar 1.0.32 → 1.0.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/application-sidebar.component.mjs +98 -8
- package/esm2022/lib/constants.mjs +3 -1
- package/esm2022/lib/services/application-sidebar.service.mjs +2 -2
- package/fesm2022/application-sidebar.mjs +99 -8
- package/fesm2022/application-sidebar.mjs.map +1 -1
- package/lib/application-sidebar.component.d.ts +37 -1
- package/lib/constants.d.ts +2 -0
- package/package.json +1 -1
|
@@ -4,6 +4,8 @@ export const constants = {
|
|
|
4
4
|
kBaseDspApiURL: 'https://dspapi.intentwise.com/',
|
|
5
5
|
kBaseDspTestApiURL: 'https://dspapi-test.intentwise.com/',
|
|
6
6
|
STAGING_MENU_BUCKET: 'https://s3.us-west-2.amazonaws.com/stagemenu.intentwise.com',
|
|
7
|
+
STAGING_THEME_BUCKET: 'https://s3.us-west-2.amazonaws.com/stageassets.intentwise.com',
|
|
8
|
+
PROD_THEME_BUCKET: 'https://s3.us-west-2.amazonaws.com/assets.intentwise.com',
|
|
7
9
|
PROD_MENU_BUCKET: 'https://s3.us-west-2.amazonaws.com/menu.intentwise.com',
|
|
8
10
|
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXBwbGljYXRpb24tc2lkZWJhci9zcmMvbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDckIsV0FBVyxFQUFDLDZCQUE2QjtJQUN6QyxjQUFjLEVBQUMsaUNBQWlDO0lBQ2hELGNBQWMsRUFBRSxnQ0FBZ0M7SUFDaEQsa0JBQWtCLEVBQUUscUNBQXFDO0lBQ3pELG1CQUFtQixFQUFDLDZEQUE2RDtJQUNqRixvQkFBb0IsRUFBQywrREFBK0Q7SUFDcEYsaUJBQWlCLEVBQUMsMERBQTBEO0lBQzVFLGdCQUFnQixFQUFDLHdEQUF3RDtDQUM1RSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGNvbnN0YW50cyA9IHtcbiAgICBiYXNlUHJvZFVSTDonaHR0cHM6Ly9hcGkuaW50ZW50d2lzZS5jb20vJyxcbiAgICBiYXNlU3RhZ2luZ1VSTDonaHR0cHM6Ly9hcGl0ZXN0LmludGVudHdpc2UuY29tLycsXG4gICAga0Jhc2VEc3BBcGlVUkw6ICdodHRwczovL2RzcGFwaS5pbnRlbnR3aXNlLmNvbS8nLFxuICAgIGtCYXNlRHNwVGVzdEFwaVVSTDogJ2h0dHBzOi8vZHNwYXBpLXRlc3QuaW50ZW50d2lzZS5jb20vJyxcbiAgICBTVEFHSU5HX01FTlVfQlVDS0VUOidodHRwczovL3MzLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tL3N0YWdlbWVudS5pbnRlbnR3aXNlLmNvbScsXG4gICAgU1RBR0lOR19USEVNRV9CVUNLRVQ6J2h0dHBzOi8vczMudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vc3RhZ2Vhc3NldHMuaW50ZW50d2lzZS5jb20nLFxuICAgIFBST0RfVEhFTUVfQlVDS0VUOidodHRwczovL3MzLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tL2Fzc2V0cy5pbnRlbnR3aXNlLmNvbScsXG4gICAgUFJPRF9NRU5VX0JVQ0tFVDonaHR0cHM6Ly9zMy51cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9tZW51LmludGVudHdpc2UuY29tJyxcbn0iXX0=
|
|
@@ -96,7 +96,7 @@ export class ApplicationSidebarService {
|
|
|
96
96
|
});
|
|
97
97
|
});
|
|
98
98
|
});
|
|
99
|
-
this.menulists = appendChildMenus.filter(list => list.id !== 'app_global_settings');
|
|
99
|
+
this.menulists = appendChildMenus.filter(list => list.id !== 'app_global_settings' && list.id !== 'app_intentwise_community');
|
|
100
100
|
let sortedMenulists = this.menulists.sort((a, b) => (a.order > b.order) ? 1 : -1);
|
|
101
101
|
this.applicationIds = sortedMenulists.map((appId) => appId.id);
|
|
102
102
|
this.appNames = this.applicationIds;
|
|
@@ -832,4 +832,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
832
832
|
providedIn: 'root'
|
|
833
833
|
}]
|
|
834
834
|
}], ctorParameters: function () { return [{ type: i1.RestApiService }, { type: i2.ActivatedRoute }, { type: i3.TranslationService }, { type: i4.UrlContextService }]; } });
|
|
835
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXBwbGljYXRpb24tc2lkZWJhci9zcmMvbGliL3NlcnZpY2VzL2FwcGxpY2F0aW9uLXNpZGViYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUszRCxNQUFNLE9BQU8seUJBQXlCO0lBNkM1QjtJQUNBO0lBQ0E7SUFDQTtJQTlDVCxVQUFVLEdBQU0sQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFDLGdCQUFnQixFQUFDLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSw2QkFBNkIsRUFBRSwyQkFBMkIsRUFBRSxnQkFBZ0IsRUFBRSw4QkFBOEIsRUFBRSxzQ0FBc0MsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUMsd0JBQXdCLEVBQUMsZ0JBQWdCLEVBQUMsdUJBQXVCLEVBQUMsa0JBQWtCLEVBQUMseUJBQXlCLEVBQUMsZUFBZSxDQUFDLENBQUM7SUFDN3FCLFFBQVEsR0FBTSxFQUFFLENBQUM7SUFFakIsY0FBYyxHQUFLLEVBQUUsQ0FBQztJQUN0QixtQkFBbUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRTdCLFVBQVUsQ0FBTTtJQUNoQixxQkFBcUIsQ0FBTTtJQUMzQixtQkFBbUIsQ0FBVTtJQUM3QixnQkFBZ0IsQ0FBUTtJQUN4QixRQUFRLENBQVc7SUFDWCxTQUFTLENBQU07SUFDdkIsZ0JBQWdCLEdBQUksQ0FBQyxpQkFBaUIsRUFBQyxtQkFBbUIsRUFBQyxTQUFTLEVBQUMsbUJBQW1CLEVBQUMsc0JBQXNCLEVBQUMsaUJBQWlCLEVBQUMsWUFBWSxFQUFDLG9CQUFvQixFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBQywwQkFBMEIsQ0FBQyxDQUFBO0lBQ2xPLFlBQVksR0FBSyxDQUFDLFVBQVUsRUFBQyxnQkFBZ0IsRUFBQyxRQUFRLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxlQUFlLEVBQUMsc0JBQXNCLEVBQUMsd0JBQXdCLEVBQUMsd0JBQXdCLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxLQUFLLEVBQUMsbUJBQW1CLEVBQUMsc0JBQXNCLEVBQUMsaUJBQWlCLEVBQUMsWUFBWSxFQUFDLG9CQUFvQixFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBQywwQkFBMEIsQ0FBQyxDQUFBO0lBQy9WLHdCQUF3QixHQUFHLENBQUMsaUJBQWlCLEVBQUMsbUJBQW1CLEVBQUMsc0JBQXNCLEVBQUMsaUJBQWlCLEVBQUMsWUFBWSxFQUFDLG9CQUFvQixFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBQywwQkFBMEIsQ0FBQyxDQUFBO0lBQzNNLHdCQUF3QixHQUFFLENBQUMsaUJBQWlCLEVBQUMsbUJBQW1CLEVBQUMsc0JBQXNCLEVBQUMsaUJBQWlCLEVBQUMsWUFBWSxFQUFDLG9CQUFvQixFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBQywwQkFBMEIsQ0FBQyxDQUFBO0lBRTFNLGlCQUFpQixHQUFHO1FBQ2Isd0JBQXdCLEVBQUcsSUFBSTtRQUMvQix5Q0FBeUMsRUFBRyxJQUFJO1FBQ2hELHVDQUF1QyxFQUFHLElBQUk7UUFDOUMsd0JBQXdCLEVBQUcsSUFBSTtRQUMvQixtQkFBbUIsRUFBRyxJQUFJO1FBQzFCLHFCQUFxQixFQUFHLEtBQUs7UUFDN0Isa0JBQWtCLEVBQUcsS0FBSztRQUMxQiw2QkFBNkIsRUFBRyxLQUFLO1FBQ3JDLHlCQUF5QixFQUFHLEtBQUs7UUFDakMsc0JBQXNCLEVBQUcsSUFBSTtRQUM3Qix1QkFBdUIsRUFBRyxJQUFJO1FBQzlCLHFCQUFxQixFQUFHLEtBQUs7UUFDN0IseUJBQXlCLEVBQUcsS0FBSztRQUNqQyxzQkFBc0IsRUFBRyxJQUFJO1FBQzdCLGlCQUFpQixFQUFHLElBQUk7UUFDeEIseUJBQXlCLEVBQUcsS0FBSztRQUNqQyw0QkFBNEIsRUFBRyxJQUFJO1FBQ25DLDRCQUE0QixFQUFHLElBQUk7UUFDbkMsb0JBQW9CLEVBQUcsSUFBSTtRQUMzQix5QkFBeUIsRUFBRSxJQUFJO0tBQ2xDLENBQUE7SUFJSixZQUNTLGNBQThCLEVBQzlCLGNBQTZCLEVBQzdCLFNBQTRCLEVBQzVCLGlCQUFvQztRQUhwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFHLENBQUM7SUFFakQsb0JBQW9CO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQy9CLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxTQUFTO1FBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDM0IsS0FBSyxJQUFJLElBQUksSUFBSSxTQUFTLEVBQUU7Z0JBQ3hCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7b0JBQ3hCLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRTt3QkFDakQsS0FBSyxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTs0QkFDaEQsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUU7Z0NBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQzs2QkFDekM7eUJBQ0o7cUJBQ0o7aUJBQ0o7cUJBQ0ksSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFO29CQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO2lCQUM3QzthQUNKO1NBQ0o7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUosV0FBVyxDQUFDLFVBQVUsRUFBRSxTQUFTO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksZ0JBQWdCLENBQUM7UUFDckIsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2xHLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMxRDthQUNJO1lBQ0QsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1NBQ2hDO1FBQ0QsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNqRCxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUQsU0FBUyxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN2RCxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUQsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLHFCQUFxQixDQUFDLENBQUM7UUFDcEYsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3BDLHNFQUFzRTtRQUN0RSx1RUFBdUU7UUFDdkUscUVBQXFFO1FBQ3JFLDZEQUE2RDtRQUM3RCxrSEFBa0g7UUFDbEgsVUFBVTtRQUNWLElBQUk7UUFDSixLQUFLLElBQUksT0FBTyxJQUFJLGVBQWUsRUFBRTtZQUNqQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUU7b0JBQ3BDLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRTt3QkFDaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs0QkFDM0MsS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dDQUM3QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxLQUFLLENBQUMsRUFBRSxJQUFJLGtCQUFrQixFQUFFO29DQUM1RCxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxlQUFlLENBQUMsQ0FBQztpQ0FDckY7NkJBQ0o7eUJBQ0o7d0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQzVCO3lCQUNJO3dCQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUM1QjtpQkFDSjthQUNKO2lCQUNJLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxZQUFZLEVBQUU7Z0JBQ25DLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxJQUFJLElBQUksU0FBUyxFQUFFO29CQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDNUI7YUFDSjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFSixzQkFBc0IsQ0FBQyxlQUFtQjtRQUN6QyxJQUFJLFFBQVEsR0FBRztZQUNkLFFBQVEsRUFBRyxFQUFFO1NBQ2IsQ0FBQztRQUVGLElBQUcsZUFBZSxDQUFDLElBQUksSUFBSSxZQUFZLEVBQUM7WUFDdkMsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMzQyxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO1lBQzNGLElBQUcsb0JBQW9CLEVBQUM7Z0JBQ3ZCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDdkYsSUFBRyxhQUFhLEVBQUM7b0JBQ2hCLFFBQVEsR0FBRyxlQUFlLENBQUM7aUJBQzNCO3FCQUNHO29CQUNILCtCQUErQjtvQkFDL0IsT0FBTztpQkFDUDthQUNEO2lCQUNHO2dCQUNILFFBQVEsR0FBRyxlQUFlLENBQUM7YUFDM0I7U0FDRDthQUNHO1lBQ0gsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMzQyxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO1lBQzNGLElBQUcsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFO2dCQUN6SCxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFO29CQUMzQyxJQUFJLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsRUFBRzt3QkFDN0MsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDckM7Z0JBQ0YsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsUUFBUSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUksSUFBSSxLQUFLLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBQztvQkFDekMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsRCxJQUFHLFFBQVEsSUFBSSxJQUFJLEVBQUM7d0JBQ25CLElBQUcsUUFBUSxDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUM7NEJBQ2pDLElBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO2dDQUMvQixRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs2QkFDakM7eUJBQ0Q7NkJBQ0c7NEJBQ0gsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7eUJBQ2pDO3FCQUNEO2lCQUNEO2FBQ0Q7aUJBQUk7Z0JBQ0osT0FBTzthQUNQO1NBQ0Q7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNqQixDQUFDO0lBRUQscUJBQXFCLENBQUMsVUFBZ0IsRUFBRSxTQUFTO1FBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxrQkFBa0IsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxxQkFBcUIsQ0FBQyxDQUFBO1FBQ2xGLElBQUksMEJBQTBCLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pHLEtBQUssSUFBSSxPQUFPLElBQUksMEJBQTBCLEVBQUU7WUFDL0MsSUFBRyxPQUFPLENBQUMsSUFBSSxJQUFJLFlBQVksRUFBQztnQkFDL0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRCxJQUFHLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztvQkFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDakM7YUFDRDtpQkFBSyxJQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksWUFBWSxFQUFDO2dCQUNyQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2hELElBQUcsSUFBSSxJQUFJLFNBQVMsRUFBQztvQkFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtpQkFDaEM7YUFDRDtTQUNEO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDOUIsQ0FBQztJQUVELGtCQUFrQixDQUFDLGVBQW9CLEVBQUUsVUFBVSxFQUFFLE9BQWlCO1FBQ3JFLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxlQUFlLENBQUMsRUFBRSxJQUFJLGNBQWM7WUFDMUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBQztZQUMxRCxPQUFPLElBQUksQ0FBQztTQUNaO2FBQ0ksSUFBRyxlQUFlLENBQUMsRUFBRSxLQUFLLHFCQUFxQixFQUFFO1lBQ3JELElBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLEVBQUM7Z0JBQzdGLE9BQU8sSUFBSSxDQUFDO2FBQ1o7aUJBQ0c7Z0JBQ0gsT0FBTyxLQUFLLENBQUM7YUFDYjtTQUNEO1FBQ0QsS0FBSSxJQUFJLElBQUksSUFBSSxVQUFVLEVBQUM7WUFDMUIsSUFBRyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxFQUFDO2dCQUNyQyxRQUFPLElBQUksRUFBQztvQkFDWCxLQUFLLGtCQUFrQixDQUFDLENBQUM7d0JBQ3hCLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUN6RCxNQUFNO3FCQUNMO29CQUNELEtBQUsseUJBQXlCLENBQUMsQ0FBQzt3QkFDL0IsV0FBVyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDeEUsTUFBTTtxQkFDTDtvQkFDRCxLQUFLLHNCQUFzQixDQUFDLENBQUE7d0JBQzNCLFdBQVcsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3JFLE1BQU07cUJBQ0w7b0JBQ0QsS0FBSyxrQkFBbUIsQ0FBQyxDQUFDO3dCQUN6QixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRTs0QkFDbkYsV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUMsZUFBZSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO3lCQUM3SDs2QkFBTSxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEVBQUU7NEJBQ3BHLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFDLGVBQWUsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDO3lCQUNsSTs2QkFBTTs0QkFDTixXQUFXLEdBQUcsS0FBSyxDQUFDO3lCQUNwQjt3QkFDRixNQUFNO3FCQUNMO29CQUNELEtBQUsseUJBQTBCLENBQUMsQ0FBQzt3QkFDaEMsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUU7NEJBQ25GLFdBQVcsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFDLGVBQWUsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQzt5QkFDbEk7NkJBQU0sSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFOzRCQUNwRyxXQUFXLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBQyxlQUFlLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQzt5QkFDdkk7NkJBQU07NEJBQ04sV0FBVyxHQUFHLEtBQUssQ0FBQzt5QkFDcEI7d0JBQ0QsTUFBTTtxQkFDTjtvQkFDRCxLQUFLLGVBQWUsQ0FBQyxDQUFBO3dCQUNwQixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEVBQUU7NEJBQzdGLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFDLGVBQWUsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDO3lCQUNySTs2QkFBTTs0QkFDTixXQUFXLEdBQUcsS0FBSyxDQUFDO3lCQUNwQjt3QkFDRCxNQUFNO3FCQUNOO29CQUNELEtBQUssYUFBYyxDQUFDLENBQUM7d0JBQ3BCLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFOzRCQUNqRixXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBQyxlQUFlLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7eUJBQzNIOzZCQUFNOzRCQUNOLFdBQVcsR0FBRyxLQUFLLENBQUM7eUJBQ3BCO3dCQUNGLE1BQU07cUJBQ0w7b0JBQ0QsS0FBSyxvQkFBcUIsQ0FBQyxDQUFDO3dCQUMzQixXQUFXLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBQyxlQUFlLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQ3ZJLE1BQU07cUJBQ047b0JBQ0QsS0FBSyxrQkFBbUIsQ0FBQyxDQUFDO3dCQUN6QixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFDOzRCQUNqQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3lCQUM3RDs2QkFBSzs0QkFDTCxXQUFXLEdBQUcsS0FBSyxDQUFDO3lCQUNwQjt3QkFDRCxNQUFNO3FCQUNOO29CQUNELEtBQUssY0FBZSxDQUFDLENBQUM7d0JBQ3JCLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFOzRCQUN6RSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQzt5QkFDcEQ7NkJBQU07NEJBQ04sV0FBVyxHQUFHLEtBQUssQ0FBQzt5QkFDcEI7d0JBQ0YsTUFBTTtxQkFDTDtvQkFDRCxLQUFLLHNCQUF1QixDQUFDLENBQUM7d0JBQzdCLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQy9ELE1BQU07cUJBQ0w7b0JBQUEsS0FBSyxpQkFBa0IsQ0FBQyxDQUFDO3dCQUN6QixXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNsRSxNQUFNO3FCQUNMO29CQUNELEtBQUssd0JBQXdCLENBQUMsQ0FBQzt3QkFDOUIsV0FBVyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDdEUsTUFBTTtxQkFDTjtvQkFDRCxLQUFLLDZCQUE4QixDQUFDLENBQUM7d0JBQ3BDLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ2xFLE1BQU07cUJBQ0w7b0JBQ0Qsd0VBQXdFO29CQUN4RSxLQUFLLDJCQUEyQixDQUFDLENBQUM7d0JBQ2pDLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQzdELE1BQU07cUJBQ0w7b0JBQ0QsS0FBSyxTQUFVLENBQUMsQ0FBQzt3QkFDaEIsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQzNELE1BQU07cUJBQ0w7b0JBQ0QsS0FBSyxZQUFhLENBQUMsQ0FBQzt3QkFDbkIsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDOUQsTUFBTTtxQkFDTDtvQkFDRCxLQUFLLG9CQUFxQixDQUFDLENBQUM7d0JBQzNCLElBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLFNBQVMsRUFBQzs0QkFDL0MsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUU7Z0NBQ2pGLFdBQVcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7NkJBQy9EO2lDQUFNO2dDQUNOLFdBQVcsR0FBRyxLQUFLLENBQUM7NkJBQ3BCO3lCQUNEOzZCQUFJOzRCQUNKLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFO2dDQUN6RSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQzs2QkFDcEQ7aUNBQU07Z0NBQ04sV0FBVyxHQUFHLEtBQUssQ0FBQzs2QkFDcEI7eUJBQ0Q7d0JBQ0YsTUFBTTtxQkFDTDtvQkFDRCxLQUFLLGdCQUFpQixDQUFDLENBQUM7d0JBQ3ZCLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBQzs0QkFDcEMsV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTt5QkFDOUQ7NkJBQ0c7NEJBQ0gsV0FBVyxHQUFHLElBQUksQ0FBQzt5QkFDbkI7d0JBQ0YsTUFBTTtxQkFDTDtvQkFDRCxLQUFLLGtCQUFrQixDQUFDLENBQUM7d0JBQ3hCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRTs0QkFDdEMsV0FBVyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTt5QkFDaEU7NkJBQ0k7NEJBQ0osV0FBVyxHQUFHLElBQUksQ0FBQzt5QkFDbkI7d0JBQ0QsTUFBTTtxQkFDTjtvQkFDRCxLQUFLLHlCQUF5QixDQUFDLENBQUM7d0JBQy9CLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRTs0QkFDdEMsV0FBVyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTt5QkFDbkU7NkJBQ0k7NEJBQ0osV0FBVyxHQUFHLElBQUksQ0FBQzt5QkFDbkI7d0JBQ0QsTUFBTTtxQkFDTjtvQkFDRCxLQUFLLDhCQUErQixDQUFDLENBQUM7d0JBQ3JDLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBQzs0QkFDcEMsV0FBVyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTt5QkFDbkU7NkJBQ0c7NEJBQ0gsV0FBVyxHQUFHLElBQUksQ0FBQzt5QkFDbkI7d0JBQ0QsTUFBTTtxQkFDTjtvQkFDRCxLQUFLLHNDQUF1QyxDQUFDLENBQUM7d0JBQzdDLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBQzs0QkFDM0MsV0FBVyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTt5QkFDMUU7NkJBQ0c7NEJBQ0gsV0FBVyxHQUFHLElBQUksQ0FBQzt5QkFDbkI7d0JBQ0QsTUFBTTtxQkFDTjtvQkFDRCxLQUFLLGFBQWMsQ0FBQyxDQUFDO3dCQUNwQixXQUFXLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO3dCQUNsRSxNQUFNO3FCQUNOO29CQUNELEtBQUssZUFBZ0IsQ0FBQyxDQUFDO3dCQUN0QixXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO3dCQUNoRSxNQUFNO3FCQUNOO29CQUNELEtBQUssZ0JBQWdCLENBQUMsQ0FBQzt3QkFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUU7NEJBQ3ZDLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7eUJBQzlEO3dCQUNELE1BQU07cUJBQ047b0JBQ0QsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDO3dCQUM3QixXQUFXLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNuRSxNQUFNO3FCQUNOO29CQUNELEtBQUssZ0JBQWdCLENBQUMsQ0FBQzt3QkFDdEIsV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDOUQsTUFBTTtxQkFDTjtvQkFDRCxLQUFLLHVCQUF1QixDQUFDLENBQUM7d0JBQzdCLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ2pFLE1BQU07cUJBQ047b0JBQ0QsY0FBYztvQkFDZCxpQkFBaUI7b0JBQ2pCLFVBQVU7b0JBQ1YsS0FBSztpQkFDTDtnQkFDRCxJQUFHLENBQUMsV0FBVyxFQUFDO29CQUNmLE9BQU8sS0FBSyxDQUFDO2lCQUNiO2FBQ0Q7aUJBQUk7Z0JBQ0osV0FBVyxHQUFHLElBQUksQ0FBQzthQUNuQjtTQUNEO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDcEIsQ0FBQztJQUVELGtCQUFrQixDQUFDLGNBQW1CO1FBQ3JDLElBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQztZQUNwRSxPQUFPLElBQUksQ0FBQztTQUNaO2FBQ0c7WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQztJQUVELG9CQUFvQixDQUFDLGNBQW1CO1FBQ3ZDLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQ2xILE9BQU8sSUFBSSxDQUFDO1NBQ1o7YUFDRztZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2I7SUFDRixDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsY0FBbUI7UUFDekMsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQ3ZILEtBQUssR0FBRyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUNELHlCQUF5QixDQUFDLGNBQW1CO1FBQzVDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBQztZQUN2SCxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFDRCx5QkFBeUIsQ0FBQyxjQUFtQjtRQUM1QyxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFDO1lBQzNILE9BQU8sSUFBSSxDQUFDO1NBQ1o7YUFDRztZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2I7SUFDRixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsY0FBbUI7UUFDbkQsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBQztZQUN6SSxPQUFPLElBQUksQ0FBQztTQUNaO2FBQ0c7WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQztJQUVELHdCQUF3QixDQUFDLGNBQW1CO1FBQzNDLE9BQU8sY0FBYyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELHFCQUFxQixDQUFDLGNBQW1CO1FBQ3hDLEtBQUksSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFDO1lBQy9ELElBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsRUFBQztnQkFDOUUsT0FBTyxJQUFJLENBQUM7YUFDWjtTQUNEO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsZUFBZSxDQUFDLGNBQW1CO1FBQ2xDLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUM7WUFDM0ksT0FBTyxJQUFJLENBQUM7U0FDWjthQUNHO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDYjtJQUNGLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxjQUFtQjtRQUNyQyxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDO1lBQzNJLE9BQU8sS0FBSyxDQUFDO1NBQ2I7YUFDRztZQUNILE9BQU8sSUFBSSxDQUFDO1NBQ1o7SUFDRixDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLGlCQUFpQixDQUFDLGNBQTZCO1FBQzlDLElBQUk7WUFDSCxNQUFNLElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3RELHNEQUFzRDtZQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMzSCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBRWxCLDRDQUE0QztnQkFFNUMsSUFBSSxVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUNwRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLE9BQVksSUFBSSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7Z0JBQzlHLENBQUMsQ0FBQyxDQUFDO2dCQUVILGdFQUFnRTtnQkFFaEUsSUFBSSxTQUFTLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUNwRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLE9BQVksSUFBSSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7Z0JBQzNJLENBQUMsQ0FBQyxDQUFDO2dCQUVILGdGQUFnRjtnQkFDaEYsSUFBSSxDQUFDLFVBQVUsSUFBSSxTQUFTLEVBQUU7b0JBQzdCLEtBQUssR0FBRyxJQUFJLENBQUM7aUJBQ2I7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7YUFDYjtpQkFBTTtnQkFDTixPQUFPLElBQUksQ0FBQzthQUNaO1NBQ0Q7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDcEI7SUFDRixDQUFDO0lBRUQsbUJBQW1CLENBQUMsY0FBbUI7UUFDdEMsSUFBRztZQUNGLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzFFLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBUyxVQUFVO29CQUMzRCxJQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxVQUFVLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxLQUFLLElBQUksUUFBUSxFQUFFO3dCQUN6RSxPQUFPLGNBQWMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUNuRDtvQkFBQSxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFBO2dCQUNGLE9BQU8sS0FBSyxDQUFDO2FBQ2I7aUJBQU07Z0JBQ04sT0FBTyxLQUFLLENBQUM7YUFDYjtTQUNEO1FBQUEsT0FBTSxLQUFLLEVBQUM7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ3BCO0lBQ0YsQ0FBQztJQUVELHNCQUFzQixDQUFDLGNBQW1CO1FBQ3pDLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUM7WUFDakMsS0FBSSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBQztnQkFDbEQsSUFBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLEVBQUM7b0JBQzVFLE9BQU8sSUFBSSxDQUFDO2lCQUNaO2FBQ0Q7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNiO2FBQUk7WUFDSixPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQztJQUNELDJCQUEyQixDQUFDLGNBQW1CO1FBQzlDLElBQUc7WUFDRixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNoRixLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7b0JBQzdELE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQzt3QkFDbEQsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7NEJBQzVDLGFBQWEsQ0FBQyxNQUFNLElBQUksYUFBYSxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFBO2dCQUNoRSxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEtBQUssQ0FBQzthQUNiO2lCQUFNO2dCQUNOLE9BQU8sS0FBSyxDQUFDO2FBQ2I7U0FDRDtRQUFBLE9BQU0sS0FBSyxFQUFDO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUNwQjtJQUNGLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxjQUFtQjtRQUN0QyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsWUFBWTtZQUNuRCxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDM0UsT0FBTyxJQUFJLENBQUM7U0FDWjthQUNJO1lBQ0osT0FBTyxLQUFLLENBQUM7U0FDYjtJQUNGLENBQUM7SUFDRCxzQkFBc0IsQ0FBQyxjQUFtQjtRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFlBQVk7WUFDekcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRTtZQUM3RSxPQUFPLElBQUksQ0FBQztTQUNaO2FBQ0k7WUFDSixPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQztJQUNELHNCQUFzQixDQUFDLGNBQW1CO1FBQ3pDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDeEUsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFTLFVBQVU7Z0JBQzNELE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztvQkFDbkQsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7d0JBQzVDLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUssSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFBO1lBRXZELENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDYjthQUFJO1lBQ0osT0FBTyxLQUFLLENBQUM7U0FDYjtJQUNGLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxjQUFtQjtRQUN2QyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBQztZQUNoQyxLQUFLLElBQUksSUFBSSxJQUFJLGNBQWMsRUFBRTtnQkFDaEMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QyxLQUFLLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDMUM7U0FDRDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELHdCQUF3QixDQUFDLGNBQW1CO1FBQzNDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFDO1lBQ2hDLEtBQUssSUFBSSxJQUFJLElBQUksY0FBYyxFQUFFO2dCQUNoQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM3QztTQUNEO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQWE7UUFDNUIsSUFBRyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQztZQUM3RSxPQUFPLElBQUksQ0FBQztTQUNaO2FBQ0c7WUFDSCxJQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFDO2dCQUNqQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFBO2FBQ2pFO2lCQUNHO2dCQUNILE9BQU8sS0FBSyxDQUFDO2FBQ2I7U0FDRDtJQUNGLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxjQUFtQixFQUFHLGVBQW1CLEVBQUcsRUFBUztRQUN6RSxJQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUM7WUFDdkIsS0FBSyxJQUFJLElBQUksSUFBSSxjQUFjLEVBQUU7Z0JBQ2hDLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7b0JBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFDLEVBQUU7d0JBQ2hDLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTs0QkFDaEIsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzt5QkFDakM7b0JBQ0YsQ0FBQyxDQUFDLENBQUE7b0JBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsR0FBQyxlQUFlLENBQUMsSUFBSSxHQUFDLHdCQUF3QixHQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDcEcsT0FBTyxJQUFJLENBQUM7aUJBQ1o7YUFDRDtZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ1o7YUFDSTtZQUNKLElBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUM7Z0JBQ2xDLE9BQU8sSUFBSSxDQUFDO2FBQ1o7aUJBQ0c7Z0JBQ0gsT0FBTyxLQUFLLENBQUM7YUFDYjtTQUNEO0lBQ0YsQ0FBQztJQUNELHVCQUF1QixDQUFDLGNBQW1CLEVBQUcsZUFBbUIsRUFBRyxFQUFTO1FBQzVFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoRCxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDbkIsS0FBSyxJQUFJLElBQUksSUFBSSxjQUFjLEVBQUU7Z0JBQ2hDLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUMxRCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JCO1lBQ0QsS0FBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBRWhEO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBQ0QseUJBQXlCLENBQUMsY0FBbUIsRUFBRyxlQUFtQixFQUFHLEVBQVM7UUFDOUUsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsZ0NBQWdDLENBQUMsY0FBbUIsRUFBRyxlQUFtQixFQUFHLEVBQVM7UUFDckYsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsYUFBYSxDQUFDLGNBQW1CO1FBQ2hDLElBQUcsY0FBYyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQzlDLElBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUM7Z0JBQzdELE9BQU8sSUFBSSxDQUFDO2FBQ1o7aUJBQ0c7Z0JBQ0gsT0FBTyxLQUFLLENBQUM7YUFDYjtTQUNEO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsNEJBQTRCLENBQUMsY0FBbUI7UUFDL0MsSUFBRyxjQUFjLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDOUMsSUFBRyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQztnQkFDN0QsT0FBTyxLQUFLLENBQUM7YUFDYjtpQkFBSTtnQkFDSixPQUFPLElBQUksQ0FBQzthQUNaO1NBQ0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxjQUFtQjtRQUN6QyxJQUFHLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUM5QyxJQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBQztnQkFDdEcsT0FBTyxLQUFLLENBQUM7YUFDYjtpQkFDRztnQkFDSCxPQUFPLElBQUksQ0FBQzthQUNaO1NBQ0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxjQUFtQjtRQUNuRCxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUM7WUFDOUgsT0FBTyxLQUFLLENBQUM7U0FDYjthQUNHO1lBQ0gsT0FBTyxJQUFJLENBQUM7U0FDWjtJQUNGLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxLQUFLLEVBQUcsYUFBYSxHQUFDLFNBQVM7UUFDOUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNsRCxJQUFJLGFBQWEsRUFBRTtvQkFDbEIsTUFBTSxHQUFHLEVBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxhQUFhLEVBQUMsQ0FBQztpQkFDdkM7Z0JBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUM7b0JBQzdELEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM1QixJQUFJLFNBQVMsR0FBRyxFQUFFLFFBQVEsRUFBRyxJQUFJLEVBQUMsQ0FBQTtvQkFDbEMsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUcsR0FBRyxTQUFTLEVBQUMsQ0FBQTtpQkFDcEM7Z0JBQ0QsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDcEYsYUFBYSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksYUFBYSxFQUFFLENBQUE7Z0JBQzVELDJEQUEyRDtnQkFDM0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBQyxhQUFhLENBQUMsQ0FBQztnQkFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7U0FDSDtJQUNDLENBQUM7SUFFRyxhQUFhLENBQUMsR0FBVztRQUMvQixJQUFHLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUU7WUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDN0M7YUFBTTtZQUNOLE9BQU8sSUFBSSxDQUFDO1NBQ1o7SUFFRixDQUFDO0lBRU0sa0JBQWtCLENBQUMsS0FBWTtRQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNoRSxDQUFDO0lBRU0scUJBQXFCLENBQUMsRUFBRSxFQUFDLElBQUksRUFBQyxJQUFJO1FBQ3RDLElBQUcsRUFBRSxLQUFLLHdCQUF3QixJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLEVBQUU7WUFDakcsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNLElBQUcsRUFBRSxLQUFLLGdCQUFnQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ3BGLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTSxJQUFHLENBQUMsRUFBRSxLQUFLLG9CQUFvQixDQUFDLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDOUYsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNLElBQUcsQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQUU7WUFDM0YsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFLLElBQUcsQ0FBQyxFQUFFLEtBQUssWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDeEYsT0FBTyxJQUFJLENBQUM7U0FDWjthQUFLLElBQUcsQ0FBQyxFQUFFLEtBQUssYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDdkYsT0FBTyxJQUFJLENBQUM7U0FDWjthQUFLLElBQUcsRUFBRSxLQUFLLG1CQUFtQixJQUFHLEVBQUUsS0FBSyxrQkFBa0IsSUFBSSxFQUFFLEtBQUssbUJBQW1CLEVBQUU7WUFDOUYsT0FBTyxJQUFJLENBQUM7U0FDWjthQUFLLElBQUcsRUFBRSxLQUFLLHdCQUF3QixJQUFJLEVBQUUsS0FBSyxrQkFBa0IsSUFBSSxFQUFFLEtBQUssa0JBQWtCLEVBQUU7WUFDL0YsS0FBSSxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUM7Z0JBQ3ZCLElBQUcsUUFBUSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLEVBQUM7b0JBQ3RELE9BQU8sSUFBSSxDQUFDO2lCQUNiO2FBQ0Y7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDYixDQUFDO0lBRUksdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPO1FBQ3BELElBQUcsT0FBTyxLQUFLLE9BQU8sRUFBQztZQUN2QixPQUFPLElBQUksQ0FBQztTQUNYO1FBQ0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDbEYsSUFBRyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoQyxPQUFPLEtBQUssQ0FBQztTQUNaO1FBQ0QsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtZQUNoRixPQUFPLElBQUksQ0FBQztTQUNaO2FBQU07WUFDTixPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQztJQUVNLGdCQUFnQjtRQUN0QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUQsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFakQsSUFBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFHO1lBQ25ELE9BQU8sc0NBQXNDLENBQUM7U0FDOUM7YUFBTSxJQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JELE9BQU8sbUNBQW1DLENBQUM7U0FDM0M7SUFDRixDQUFDOzJIQXZ6QlcseUJBQXlCOytIQUF6Qix5QkFBeUIsY0FGeEIsTUFBTTs7NEZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi9yZXN0LWFwaS5zZXJ2aWNlcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFVybENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi91cmwtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IEVOX0xBQkVMUyB9IGZyb20gJy4uL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbnMtZW4nO1xuaW1wb3J0IHsgSkFfTEFCRUxTIH0gZnJvbSAnLi4vdHJhbnNsYXRpb25zL3RyYW5zbGF0aW9ucy1qYSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblNpZGViYXJTZXJ2aWNlIHtcblxuXHRjb25kaXRpb25zIFx0XHRcdD0gWydvcmdfdXNlcl9jdHJsJywgJ3Zpc2liaWxpdHlfcm9sZXMnLCAndmlzaWJpbGl0eV9yb2xlc19ub3RfaW4nLCAnYWNjb3VudF9pZHMnLCAnY3VzdG9tZXJfdHlwZXNfbm90X2luJywnY3VzdG9tZXJfdHlwZXMnLCdvcmdhbml6YXRpb25faWRzJywgJ29yZ2FuaXphdGlvbl9pZHNfbm90X2luJywgJ2FjY291bnRfdHlwZScsICdhY2NvdW50X2lkc19ub3RfaW4nLCAnb3JnYW5pemF0aW9uX3NldHRpbmcnLCAnb3JnYW5pemF0aW9uX3NldHRpbmdfbm90X2luJywgJ2FwcF9zcGFjaWZpY19jb25maWdfY2hlY2snLCAnY2FtcGFpZ25fdHlwZXMnLCAnaW5jb250ZXh0X2NhbXBhaWduX3RhcmdldGluZycsICdpbmNvbnRleHRfY2FtcGFpZ25fdGFyZ2V0aW5nX3dhbG1hcnQnLCAnc3Vic2NyaXB0aW9uX3R5cGVzJywgJ3NpdGVJZHMnLCAnc2l0ZU5vdElkcycsICdub3RfYWNjb3VudF90eXBlJywgJ25vdF9hY2NvdW50X25hbWUnLCAnZGlzYWJsZV9yZWFkb25seV9vcmcnLCAndXNlcl9lbWFpbHMnLCAnaGlkZV9mb3JfdXNlcicsICdhcHBfb3JnX3NldHRpbmcnLCdhcHBfb3JnX3NldHRpbmdfbm90X2luJywnbmdfYXBwX3NldHRpbmcnLCduZ19hcHBfc2V0dGluZ19ub3RfaW4nLCd0YXJnZXR0aW5nX3R5cGVzJywndGFyZ2V0dGluZ190eXBlc19ub3RfaW4nLCdoaWRlX2Zvcl91c2VyJ107XG5cdE1lbnVMaXN0IFx0XHRcdD0gW107XG5cblx0YXBwbGljYXRpb25JZHMgXHRcdD0gW107XG5cdGVuYWJsZUFsbE1lbnVzQnlPcmcgPSBbMzA3ODBdXG5cdFxuXHRhcHBEZXRhaWxzOlx0YW55O1xuXHRpc1N0cnVjdHVyZUFwaVN1cHBvcnQ6XHRhbnk7XG5cdGlzTWFuYWdlZFNlcnZpY2VBY2M6IGJvb2xlYW47XG5cdFNldHRpbmdzTWVudUxpc3Q6IGFueVtdO1xuXHRhcHBOYW1lczogc3RyaW5nW107XG5cdHByaXZhdGUgbWVudWxpc3RzOiBhbnk7XG5cdGNvbnRlbnRBcHBSb3V0ZXNcdFx0XHQ9Wydjb250ZW50LWluc2lnaHQnLCdjb250ZW50LWFuYWx5dGljcycsJ2NvbnRlbnQnLCdwcm9kdWN0LW1ldGEtZGF0YScsJ2JyYW5kLXRlcm1zLXNldHRpbmdzJywnbGFiZWxzLXNldHRpbmdzJywnc3ViLWJyYW5kcycsJ3N1Yi1icmFuZHMtbWFwcGluZycsJ3Nvdi1zZXR0aW5ncycgLCdjb250ZW50LXNldHRpbmdzJywnc2VhcmNoLXF1ZXJ5LXBlcmZvcm1hbmNlJ11cblx0c292QXBwUm91dGVzXHRcdFx0XHQ9WydpbnNpZ2h0cycsJ3NoYXJlLW9mLXZvaWNlJywnYnJhbmRzJywna2V5d29yZHMnLCdwcm9kdWN0cycsJ2RhaWx5LXRyYWNrZXInLCdkYWlseS10cmFja2VyL2JyYW5kcycsJ2RhaWx5LXRyYWNrZXIva2V5d29yZHMnLCdkYWlseS10cmFja2VyL3Byb2R1Y3RzJywncmF3LWRhdGEnLCdvdmVydmlldycsJ3NvdicsJ3Byb2R1Y3QtbWV0YS1kYXRhJywnYnJhbmQtdGVybXMtc2V0dGluZ3MnLCdsYWJlbHMtc2V0dGluZ3MnLCdzdWItYnJhbmRzJywnc3ViLWJyYW5kcy1tYXBwaW5nJywnc292LXNldHRpbmdzJyAsJ2NvbnRlbnQtc2V0dGluZ3MnLCdzZWFyY2gtcXVlcnktcGVyZm9ybWFuY2UnXVxuXHRzZWxsZXJBbmFseXRpY3NBcHBSb3V0ZXMgXHQ9WydzZWxsZXIvaW5zaWdodHMnLCdwcm9kdWN0LW1ldGEtZGF0YScsJ2JyYW5kLXRlcm1zLXNldHRpbmdzJywnbGFiZWxzLXNldHRpbmdzJywnc3ViLWJyYW5kcycsJ3N1Yi1icmFuZHMtbWFwcGluZycsJ3Nvdi1zZXR0aW5ncycgLCdjb250ZW50LXNldHRpbmdzJywnc2VhcmNoLXF1ZXJ5LXBlcmZvcm1hbmNlJ11cblx0dmVuZG9yQW5hbHl0aWNzQXBwUm91dGVzXHQ9Wyd2ZW5kb3IvaW5zaWdodHMnLCdwcm9kdWN0LW1ldGEtZGF0YScsJ2JyYW5kLXRlcm1zLXNldHRpbmdzJywnbGFiZWxzLXNldHRpbmdzJywnc3ViLWJyYW5kcycsJ3N1Yi1icmFuZHMtbWFwcGluZycsJ3Nvdi1zZXR0aW5ncycgLCdjb250ZW50LXNldHRpbmdzJywnc2VhcmNoLXF1ZXJ5LXBlcmZvcm1hbmNlJ11cblx0XG5cdHR5cGVTdGF0dXNDb25maWdzID0ge1xuICAgICAgICAnU1BPTlNPUkVEX0tFWVdPUkRfQklEUycgOiB0cnVlLFxuICAgICAgICAnU1BPTlNPUkVEX1BST0RVQ1RfTUFOVUFMX1RBUkdFVElOR19CSURTJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfUFJPRFVDVF9BVVRPX1RBUkdFVElOR19CSURTJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfS0VZV09SRF9BVVRPJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfS0VZV09SRCcgOiB0cnVlLFxuICAgICAgICAnU1BfS0VZV09SRFNfQklEX0dBUCcgOiBmYWxzZSxcbiAgICAgICAgJ1NQX1BMQUNFTUVOVF9CSUQnIDogZmFsc2UsXG4gICAgICAgICdTUF9UQVJHRVRJTkdfVFlQRV9CUkVBS0RPV04nIDogZmFsc2UsXG4gICAgICAgICdTUF9NQVRDSF9UWVBFX0JSRUFLRE9XTicgOiBmYWxzZSxcbiAgICAgICAgJ1NQX1NCX0tFWVdPUkRfUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdIRUFETElORV9LRVlXT1JEX0JJRFMnIDogdHJ1ZSxcbiAgICAgICAgJ1NCX0tFWVdPUkRTX0JJRF9HQVAnIDogZmFsc2UsXG4gICAgICAgICdTQl9NQVRDSF9UWVBFX0JSRUFLRE9XTicgOiBmYWxzZSxcbiAgICAgICAgJ1NCX1NQX0tFWVdPUkRfUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdOT19LRVlXT1JEX0JJRFMnIDogdHJ1ZSxcbiAgICAgICAgJ0NBTVBBSUdOX1RZUEVfQlJFQUtET1dOJyA6IGZhbHNlLFxuICAgICAgICAnQVVUT19UT19NQU5VQUxfQVNJTl9QQVJJVFknIDogdHJ1ZSxcbiAgICAgICAgJ01BTlVBTF9UT19BVVRPX0FTSU5fUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdDT01QRVRJVE9SX1BST0RVQ1QnIDogdHJ1ZSxcbiAgICAgICAgJ1NQT05TT1JFRF9CUkFORF9LRVlXT1JEJzogdHJ1ZVxuICAgIH1cblxuXHRcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIFJlc3RBcGlTZXJ2aWNlOiBSZXN0QXBpU2VydmljZSxcblx0XHRwcml2YXRlIGFjdGl2YXRlZFJvdXRlOkFjdGl2YXRlZFJvdXRlLFxuXHRcdHByaXZhdGUgdHJhbnNsYXRlOlRyYW5zbGF0aW9uU2VydmljZSxcblx0XHRwcml2YXRlIHVybENvbnRleHRTZXJ2aWNlOiBVcmxDb250ZXh0U2VydmljZSkge31cblxuXHRnZXRUeXBlU3RhdHVzQ29uZmlncygpe1xuXHRcdHJldHVybiB0aGlzLnR5cGVTdGF0dXNDb25maWdzO1xuXHR9XG5cdGNvbnN0cnVjdENoaWxkTWVudXMobWVudUl0ZW1zKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcERldGFpbHMubGlzdE1lbnVzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIG1lbnVJdGVtcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFwcERldGFpbHMuYXBwU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkLmluY2x1ZGVzKHRoaXMuYXBwRGV0YWlscy5hcHBsaWNhdGlvbklkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbGlzdE1lbnVJdGVtIG9mIHRoaXMuYXBwRGV0YWlscy5saXN0TWVudXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PSBsaXN0TWVudUl0ZW0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IGxpc3RNZW51SXRlbS5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5pZCA9PSB0aGlzLmFwcERldGFpbHMuYXBwbGljYXRpb25JZCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gdGhpcy5hcHBEZXRhaWxzLmxpc3RNZW51cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtcztcbiAgICB9XG5cblx0Z2V0TWVudUxpc3QoYXBwRGV0YWlscywgbWVudWxpc3RzKSB7XG4gICAgICAgIHRoaXMuYXBwRGV0YWlscyA9IGFwcERldGFpbHM7XG4gICAgICAgIHRoaXMuTWVudUxpc3QgPSBbXTtcbiAgICAgICAgbGV0IGFwcGVuZENoaWxkTWVudXM7XG4gICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCdoZXJva3VhcHAnKSA+IC0xIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2xvY2FsaG9zdCcpID4gLTEpIHtcbiAgICAgICAgICAgIGFwcGVuZENoaWxkTWVudXMgPSB0aGlzLmNvbnN0cnVjdENoaWxkTWVudXMobWVudWxpc3RzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFwcGVuZENoaWxkTWVudXMgPSBtZW51bGlzdHM7XG4gICAgICAgIH1cbiAgICAgICAgYXBwZW5kQ2hpbGRNZW51cy5mb3JFYWNoKChtZW51KSA9PiB7XG4gICAgICAgICAgICBtZW51Lm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2xhdGVOYW1lKG1lbnUubmFtZSk7XG4gICAgICAgICAgICBtZW51LmNoaWxkcmVuICYmIG1lbnUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGRNZW51KSA9PiB7XG4gICAgICAgICAgICAgICAgY2hpbGRNZW51Lm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2xhdGVOYW1lKGNoaWxkTWVudS5uYW1lKTtcbiAgICAgICAgICAgICAgICBjaGlsZE1lbnUuY2hpbGRyZW4gJiYgY2hpbGRNZW51LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2xhdGVOYW1lKGNoaWxkLm5hbWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1lbnVsaXN0cyA9IGFwcGVuZENoaWxkTWVudXMuZmlsdGVyKGxpc3QgPT4gbGlzdC5pZCAhPT0gJ2FwcF9nbG9iYWxfc2V0dGluZ3MnKTtcbiAgICAgICAgbGV0IHNvcnRlZE1lbnVsaXN0cyA9IHRoaXMubWVudWxpc3RzLnNvcnQoKGEsIGIpID0+IChhLm9yZGVyID4gYi5vcmRlcikgPyAxIDogLTEpO1xuICAgICAgICB0aGlzLmFwcGxpY2F0aW9uSWRzID0gc29ydGVkTWVudWxpc3RzLm1hcCgoYXBwSWQpID0+IGFwcElkLmlkKTtcbiAgICAgICAgdGhpcy5hcHBOYW1lcyA9IHRoaXMuYXBwbGljYXRpb25JZHM7XG4gICAgICAgIC8vIGlmKCh0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCA9PT0gMTAzOTAgfHxcbiAgICAgICAgLy8gICAgIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkID09PSAxMDUzMCkgJiZcbiAgICAgICAgLy8gICAgIHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5lbWFpbCA9PSBcInNyZWVuYXRoQGludGVudHdpc2UuY29tXCIpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYXBwTmFtZXMgPSB0aGlzLmFwcGxpY2F0aW9uSWRzLmZpbHRlcigobmFtZSkgPT4ge1xuICAgICAgICAvLyAgICAgICAgIHJldHVybiAobmFtZSAhPSAnYWRzX2FtYXpvbl9jb250ZW50X3NoYXJlX29mX3ZvaWNlJyAmJiBuYW1lICE9ICdhZHNfYW1hem9uX2NvbnRlbnRfY29udGVudF9hbmFseXRpY3MnKTtcbiAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICAvLyB9XG4gICAgICAgIGZvciAobGV0IGFwcE5hbWUgb2Ygc29ydGVkTWVudWxpc3RzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBOYW1lcy5pbmRleE9mKGFwcE5hbWUuaWQpID49IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IHRoaXMuZ2V0QXBwbGljYXRpb25NZW51SXRlbShhcHBOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAobGlzdCAmJiBsaXN0LmNoaWxkcmVuICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwTmFtZS5pZCA9PSAnYWRzX2FtYXpvbl9kc3AnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdC5jaGlsZHJlbiAmJiBsaXN0LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBsaXN0LmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTWFuYWdlZFNlcnZpY2VBY2MgJiYgY2hpbGQuaWQgPT0gXCJhbXNfZHNwX3NldHRpbmdzXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLmNoaWxkcmVuID0gY2hpbGQuY2hpbGRyZW4uZmlsdGVyKHNfY2hpbGQgPT4gc19jaGlsZC5pZCAhPT0gJ2Ftc19kc3BfcnVsZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTWVudUxpc3QucHVzaChsaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTWVudUxpc3QucHVzaChsaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGFwcE5hbWUudHlwZSAhPSAnZXhwYW5kYWJsZScpIHtcbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IHRoaXMuZ2V0QXBwbGljYXRpb25NZW51SXRlbShhcHBOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAobGlzdCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5NZW51TGlzdC5wdXNoKGxpc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5NZW51TGlzdDtcbiAgICB9XG5cblx0Z2V0QXBwbGljYXRpb25NZW51SXRlbShjdXJyZW50TWVudUl0ZW06YW55KTogYW55IHtcblx0XHRsZXQgbWVudUl0ZW0gPSB7XG5cdFx0XHRjaGlsZHJlbiA6IFtdXG5cdFx0fTtcblxuXHRcdGlmKGN1cnJlbnRNZW51SXRlbS50eXBlICE9ICdleHBhbmRhYmxlJyl7XG5cdFx0XHRsZXQgYWxsS2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRNZW51SXRlbSk7XG5cdFx0XHRjb25zdCBoYXNDb25kaXRpb25zdG9DaGVjayA9IHRoaXMuY29uZGl0aW9ucy5zb21lKGNvbmRpdGlvbiA9PiBhbGxLZXlzLmluY2x1ZGVzKGNvbmRpdGlvbikpXG5cdFx0XHRpZihoYXNDb25kaXRpb25zdG9DaGVjayl7XG5cdFx0XHRcdGxldCBpc01lbnVBbGxvd2VkID0gdGhpcy5jaGVja0FsbENvbmRpdGlvbnMoY3VycmVudE1lbnVJdGVtLCB0aGlzLmNvbmRpdGlvbnMsIGFsbEtleXMpO1xuXHRcdFx0XHRpZihpc01lbnVBbGxvd2VkKXtcblx0XHRcdFx0XHRtZW51SXRlbSA9IGN1cnJlbnRNZW51SXRlbTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdyZXR1cm4gZW1wdHknKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGVsc2V7XG5cdFx0XHRcdG1lbnVJdGVtID0gY3VycmVudE1lbnVJdGVtO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0bGV0IGFsbEtleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50TWVudUl0ZW0pO1xuXHRcdFx0Y29uc3QgaGFzQ29uZGl0aW9uc3RvQ2hlY2sgPSB0aGlzLmNvbmRpdGlvbnMuc29tZShjb25kaXRpb24gPT4gYWxsS2V5cy5pbmNsdWRlcyhjb25kaXRpb24pKVxuXHRcdFx0aWYoIWhhc0NvbmRpdGlvbnN0b0NoZWNrIHx8IChoYXNDb25kaXRpb25zdG9DaGVjayAmJiB0aGlzLmNoZWNrQWxsQ29uZGl0aW9ucyhjdXJyZW50TWVudUl0ZW0sIHRoaXMuY29uZGl0aW9ucywgYWxsS2V5cykpKSB7XG5cdFx0XHRcdE9iamVjdC5rZXlzKGN1cnJlbnRNZW51SXRlbSkuZm9yRWFjaCgoa2V5KT0+eyBcblx0XHRcdFx0XHRpZiAodHlwZW9mIGN1cnJlbnRNZW51SXRlbVtrZXldICE9IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRcdFx0XHRtZW51SXRlbVtrZXldID0gY3VycmVudE1lbnVJdGVtW2tleV07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRtZW51SXRlbS5jaGlsZHJlbiA9IFtdO1xuXHRcdFx0XHRmb3IobGV0IGNoaWxkIG9mIGN1cnJlbnRNZW51SXRlbS5jaGlsZHJlbil7XG5cdFx0XHRcdFx0bGV0IG5hdl9tZW51ID0gdGhpcy5nZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGNoaWxkKTtcblx0XHRcdFx0XHRpZihuYXZfbWVudSAhPSBudWxsKXsgXG5cdFx0XHRcdFx0XHRpZihuYXZfbWVudS5jaGlsZHJlbiAhPSB1bmRlZmluZWQpe1xuXHRcdFx0XHRcdFx0XHRpZihuYXZfbWVudS5jaGlsZHJlbi5sZW5ndGggPiAwKXtcblx0XHRcdFx0XHRcdFx0XHRtZW51SXRlbS5jaGlsZHJlbi5wdXNoKG5hdl9tZW51KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0bWVudUl0ZW0uY2hpbGRyZW4ucHVzaChuYXZfbWVudSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVx0XHRcdFxuXHRcdH1cblx0XHRyZXR1cm4gbWVudUl0ZW07XG5cdH1cblxuXHRnZXRHbG9iYWxTZXR0aW5nc01lbnUoYXBwRGV0YWlscyA6IGFueSwgbWVudWxpc3RzKSB7XG5cdFx0dGhpcy5hcHBEZXRhaWxzID0gYXBwRGV0YWlscztcdFxuXHRcdHRoaXMuU2V0dGluZ3NNZW51TGlzdCA9IFtdO1xuXHRcdGxldCBnbG9iYWxTZXR0aW5nTWVudXMgPSBtZW51bGlzdHMuZmlsdGVyKGxpc3Q9PiBsaXN0LmlkID09ICdhcHBfZ2xvYmFsX3NldHRpbmdzJylcblx0XHRsZXQgR0xPQkFMX1NFVFRJTkdfTElTVF9TT1JURUQgPSBnbG9iYWxTZXR0aW5nTWVudXMuc29ydCgoYSwgYikgPT4gKGEub3JkZXIgPiBiLm9yZGVyKSA/IDEgOiAtMSk7XG5cdFx0Zm9yIChsZXQgYXBwTmFtZSBvZiBHTE9CQUxfU0VUVElOR19MSVNUX1NPUlRFRCkge1xuXHRcdFx0aWYoYXBwTmFtZS50eXBlID09ICdleHBhbmRhYmxlJyl7XG5cdFx0XHRcdGxldCBsaXN0ID0gdGhpcy5nZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGFwcE5hbWUpO1xuXHRcdFx0XHRpZihsaXN0ICYmIGxpc3QuY2hpbGRyZW4gJiYgbGlzdC5jaGlsZHJlbi5sZW5ndGggPiAwKXtcblx0XHRcdFx0XHR0aGlzLlNldHRpbmdzTWVudUxpc3QucHVzaChsaXN0KTtcblx0XHRcdFx0fVx0XHRcdFx0XG5cdFx0XHR9ZWxzZSBpZihhcHBOYW1lLnR5cGUgIT0gJ2V4cGFuZGFibGUnKXtcblx0XHRcdFx0bGV0IGxpc3QgPSB0aGlzLmdldEFwcGxpY2F0aW9uTWVudUl0ZW0oYXBwTmFtZSk7XG5cdFx0XHRcdGlmKGxpc3QgIT0gdW5kZWZpbmVkKXtcblx0XHRcdFx0XHR0aGlzLlNldHRpbmdzTWVudUxpc3QucHVzaChsaXN0KVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVx0XHRcblx0XHRyZXR1cm4gdGhpcy5TZXR0aW5nc01lbnVMaXN0O1xuXHR9XG5cblx0Y2hlY2tBbGxDb25kaXRpb25zKGN1cnJlbnRNZW51SXRlbTogYW55LCBjb25kaXRpb25zLCBhbGxLZXlzOiBzdHJpbmdbXSk6IGFueSB7XG5cdFx0bGV0IGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0aWYoKCF0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgY3VycmVudE1lbnVJdGVtLmlkID09IFwiYWRzX292ZXJ2aWV3XCIgJiYgXG5cdFx0XHQhdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb25bJ25vQWN0aXZlQWNjb3VudHMnXSkpe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2UgaWYoY3VycmVudE1lbnVJdGVtLmlkID09PSBcImFkc19zaWdudXBfb3ZlcnZpZXdcIikge1xuXHRcdFx0aWYoIXRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvblsnbm9BY3RpdmVBY2NvdW50cyddKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvcihsZXQgY29uZCBvZiBjb25kaXRpb25zKXtcblx0XHRcdGlmKGN1cnJlbnRNZW51SXRlbVtjb25kXSAhPSB1bmRlZmluZWQpe1xuXHRcdFx0XHRzd2l0Y2goY29uZCl7XG5cdFx0XHRcdFx0Y2FzZSAndmlzaWJpbGl0eV9yb2xlcyc6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JSb2xlcyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGNhc2UgJ3Zpc2liaWxpdHlfcm9sZXNfbm90X2luJzogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvcnZpc2liaWxpdHlSb2xlc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH0gXG5cdFx0XHRcdFx0Y2FzZSAnZGlzYWJsZV9yZWFkb25seV9vcmcnOntcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5kaXNhYmxlRm9yT3Jnd2l0aFJlYWRPbmx5KGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ29yZ2FuaXphdGlvbl9pZHMnIDoge1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5vcmdhbml6YXRpb25JZCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTcGVjaWZpZWRJZHMoY3VycmVudE1lbnVJdGVtW2NvbmRdLGN1cnJlbnRNZW51SXRlbSx0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQub3JnYW5pemF0aW9uSWQpO1x0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24gJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkSWRzKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1x0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdvcmdhbml6YXRpb25faWRzX25vdF9pbicgOiB7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNwZWNpZmllZElkc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZih0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbiAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTcGVjaWZpZWRJZHNOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0sY3VycmVudE1lbnVJdGVtLHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnb3JnX3VzZXJfY3RybCc6e1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24gJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnV2l0aFVzZXJSb2xlKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdhY2NvdW50X2lkcycgOiB7IFxuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5hbXNBY2NvdW50SWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkSWRzKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCk7XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdhY2NvdW50X2lkc19ub3RfaW4nIDoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkQWNjb3VudElkc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGNhc2UgJ25vdF9hY2NvdW50X25hbWUnIDoge1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50KXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yTm90QWNjTmFtZShjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0fWVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2FjY291bnRfdHlwZScgOiB7IFxuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckFjY1R5cGUoY3VycmVudE1lbnVJdGVtKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdvcmdhbml6YXRpb25fc2V0dGluZycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnU2V0dGluZ3MoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fWNhc2UgJ2FwcF9vcmdfc2V0dGluZycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnQXBwU2V0dGluZ3MoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2FwcF9vcmdfc2V0dGluZ19ub3RfaW4nOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JPcmdBcHBTZXR0aW5nc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnb3JnYW5pemF0aW9uX3NldHRpbmdfbm90X2luJyA6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JOb3RPcmdTZXR0aW5ncyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1x0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdC8vIFRPRE8gOiBUaGlzIGlzIHRlbXBvcmVyeSBzb2x1dGlvbiBmb3IgQW1jIHNwYWNpZmljIG9yZyBzZXR0aW5nIGNoZWNrLlxuXHRcdFx0XHRcdGNhc2UgJ2FwcF9zcGFjaWZpY19jb25maWdfY2hlY2snOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuYXBwU3BlY2lmaWNDb25maWcoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnc2l0ZUlkcycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU2l0ZUlkcyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGNhc2UgJ3NpdGVOb3RJZHMnIDogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNpdGVOb3RJZHMoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRjYXNlICdzdWJzY3JpcHRpb25fdHlwZXMnIDogeyBcblx0XHRcdFx0XHRcdGlmKGN1cnJlbnRNZW51SXRlbVsnYWNjb3VudF90eXBlJ10gPT0gdW5kZWZpbmVkKXtcblx0XHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5zdWJzY3JpcHRpb24pIHtcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTdWJzY3JpcHRpb25zKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yQWNjVHlwZShjdXJyZW50TWVudUl0ZW0pO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRjYXNlICdjYW1wYWlnbl90eXBlcycgOiB7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQpe1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JDYW1wYWlnblR5cGUoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICd0YXJnZXR0aW5nX3R5cGVzJzoge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JUYXJnZXR0aW5nVHlwZShjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ3RhcmdldHRpbmdfdHlwZXNfbm90X2luJzoge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JOb3RUYXJnZXR0aW5nVHlwZShjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2luY29udGV4dF9jYW1wYWlnbl90YXJnZXRpbmcnIDogeyBcblx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCl7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckNhbXBhaWduVGFyZ2V0aW5nKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnaW5jb250ZXh0X2NhbXBhaWduX3RhcmdldGluZ193YWxtYXJ0JyA6IHsgXG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHR3YWxtYXJ0KXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yQ2FtcGFpZ25UYXJnZXRpbmdXYWxtYXJ0KGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAndXNlcl9lbWFpbHMnIDogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5hdXRoZW50aWNhdGVVc2VyTWFpbE1lbnUoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdoaWRlX2Zvcl91c2VyJyA6IHtcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckhpZGRlblVzZXJSb2xlKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICduZ19hcHBfc2V0dGluZyc6IHtcblx0XHRcdFx0XHRcdGlmICghdGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0KSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0NvbnRleHRTZXR0aW5ncyhjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnbmdfYXBwX3NldHRpbmdfbm90X2luJzoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrQ29udGV4dFNldHRpbmdOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2N1c3RvbWVyX3R5cGVzJzoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrQ3VzdG9tZXJUeXBlSW4oY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdjdXN0b21lcl90eXBlc19ub3RfaW4nOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tDdXN0b21lclR5cGVOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGRlZmF1bHQ6IHsgXG5cdFx0XHRcdFx0Ly8gLy9zdGF0ZW1lbnRzOyBcblx0XHRcdFx0XHQvLyBicmVhazsgXG5cdFx0XHRcdFx0Ly8gfSBcblx0XHRcdFx0fVxuXHRcdFx0XHRpZighaW5jbHVkZU1lbnUpe1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVx0XHRcdFxuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gaW5jbHVkZU1lbnU7XG5cdH1cblxuXHRjaGVja0Zvck5vdEFjY05hbWUocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm5hbWUpID09IC0xKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yQ2FtcGFpZ25UeXBlKHBvc3NpYmxlVmFsdWVzOiBhbnkpOmJvb2xlYW57XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLmRhdGFUeXBlKSA+PSAwKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0ZvclRhcmdldHRpbmdUeXBlKHBvc3NpYmxlVmFsdWVzOiBhbnkpOmJvb2xlYW57XG5cdFx0dmFyIGFsbG93ID0gZmFsc2U7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLnRhcmdldGluZ1R5cGUpID49IDApe1xuXHRcdFx0YWxsb3cgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gYWxsb3c7XG5cdH1cblx0Y2hlY2tGb3JOb3RUYXJnZXR0aW5nVHlwZShwb3NzaWJsZVZhbHVlczogYW55KTpib29sZWFue1xuXHRcdHZhciBhbGxvdyA9IHRydWU7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLnRhcmdldGluZ1R5cGUpID49IDApe1xuXHRcdFx0YWxsb3cgPSBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cdGNoZWNrRm9yQ2FtcGFpZ25UYXJnZXRpbmcocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQgJiYgcG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHRbMF0uY2FtcGFpZ25UYXJnZXRpbmcpID49IDApe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tGb3JDYW1wYWlnblRhcmdldGluZ1dhbG1hcnQocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHR3YWxtYXJ0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0d2FsbWFydFswXS5jYW1wYWlnblRhcmdldGluZykgPj0gMCl7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRhdXRoZW50aWNhdGVVc2VyTWFpbE1lbnUocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMuaW5jbHVkZXModGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLmVtYWlsKTtcblx0fVxuXG5cdGNoZWNrRm9yU3Vic2NyaXB0aW9ucyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbntcblx0XHRmb3IobGV0IHNldHRpbmdzIG9mIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5zdWJzY3JpcHRpb24pe1xuXHRcdFx0aWYoKHBvc3NpYmxlVmFsdWVzLmluZGV4T2Yoc2V0dGluZ3MudHlwZSkgPj0gMCkgJiYgc2V0dGluZ3Muc3RhdHVzID09IFwiQUNUSVZFXCIpe1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y2hlY2tGb3JTaXRlSWRzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZih0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8gJiYgdGhpcy5hcHBEZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCAmJiBwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhOdW1iZXIodGhpcy5hcHBEZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCkpKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0ZvclNpdGVOb3RJZHMocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5zaWRlYmFySW5mbyAmJiB0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkICYmIHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKE51bWJlcih0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKSkpe1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9XG5cblx0Ly8gVE9ETyA6IFRoaXMgaXMgdGVtcG9yZXJ5IHNvbHV0aW9uIGZvciBBbWMgc3BhY2lmaWMgb3JnIHNldHRpbmcgY2hlY2suXG5cdGFwcFNwZWNpZmljQ29uZmlnKHBvc3NpYmxlVmFsdWVzOiBBcnJheTxTdHJpbmc+KTogYm9vbGVhbiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHJvbGUgPSBbJ1NVUEVSX0FETUlOJywgJ1NVUEVSX0FETUlOX1JFQURfT05MWSddO1xuXHRcdFx0Ly8gQ2hlY2sgcm9sZSBjb25kaXRpb24gYW5kIG9yZyBzZXR0aW5nIGlzIGF2YWlsYWJsaXR5XG5cdFx0XHRpZiAoIXJvbGUuaW5jbHVkZXModGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLnJvbGUpICYmIHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRsZXQgYWxsb3cgPSBmYWxzZTtcblxuXHRcdFx0XHQvLyBUbyB2ZXJpZnkgaWYgdGhlIG9yZyBzZXR0aW5nIGlzIGF2YWlsYWJsZVxuXHRcdFx0XHRcblx0XHRcdFx0bGV0IGtleW1hdGNoZWQgPSBwb3NzaWJsZVZhbHVlcy5zb21lKChrZXk6IFN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MuZmluZEluZGV4KGZ1bmN0aW9uIChzZXR0aW5nOiBhbnkpIHsgcmV0dXJuIGtleSA9PSBzZXR0aW5nLnNldHRpbmc7IH0pID4gLTFcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gVG8gdmVyaWZ5ICBpZiB0aGUgb3JnIHNldHRpbmcgaXMgYXZhaWxhYmxlIGFuZCBlbmFibGVkL0FjdGl2ZVxuXG5cdFx0XHRcdGxldCBBbGxBY3RpdmUgPSBwb3NzaWJsZVZhbHVlcy5ldmVyeSgoa2V5OiBTdHJpbmcpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzLmZpbmRJbmRleChmdW5jdGlvbiAoc2V0dGluZzogYW55KSB7IHJldHVybiBrZXkgPT0gc2V0dGluZy5zZXR0aW5nICYmIHNldHRpbmcudmFsdWUgPT0gXCJBQ1RJVkVcIjsgfSkgPiAtMVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQvLyBJZiBObyBvcmcgc2V0dGluZyBpcyBhdmFpbGFibGUgT1Igc2V0dGluZyBpcyBhdmFpbGFibGUgYnV0IHdpdGggYWN0aXZlIHN0YXR1c1xuXHRcdFx0XHRpZiAoIWtleW1hdGNoZWQgfHwgQWxsQWN0aXZlKSB7XG5cdFx0XHRcdFx0YWxsb3cgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhbGxvdztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yT3JnU2V0dGluZ3MocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdHRyeXtcblx0XHRcdHZhciBhbGxvdyA9IGZhbHNlO1xuXHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5zb21lKGZ1bmN0aW9uKG9yZ1NldHRpbmcpe1xuXHRcdFx0XHRcdGlmKCFvcmdTZXR0aW5nLnZhbHVlIHx8IG9yZ1NldHRpbmcudmFsdWUgJiYgb3JnU2V0dGluZy52YWx1ZSA9PSAnQUNUSVZFJykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKG9yZ1NldHRpbmcuc2V0dGluZyk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSlcblx0XHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdFx0fVxuXHRcdH1jYXRjaChlcnJvcil7XG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yT3JnQXBwU2V0dGluZ3MocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5vcmdBcHBTZXR0aW5ncyl7XG5cdFx0XHRmb3IobGV0IHNldHRpbmdzIG9mIHRoaXMuYXBwRGV0YWlscy5vcmdBcHBTZXR0aW5ncyl7XG5cdFx0XHRcdGlmKHBvc3NpYmxlVmFsdWVzLmluZGV4T2Yoc2V0dGluZ3MudHlwZSkgPj0gMCAmJiBzZXR0aW5ncy5zdGF0dXMgPT0gJ0FDVElWRScpe1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fWVsc2V7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdGNoZWNrRm9yT3JnQXBwU2V0dGluZ3NOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0dHJ5e1xuXHRcdFx0dmFyIGFsbG93ID0gdHJ1ZTtcblx0XHRcdGlmICh0aGlzLmFwcERldGFpbHMub3JnQXBwU2V0dGluZ3MgJiYgdGhpcy5hcHBEZXRhaWxzLm9yZ0FwcFNldHRpbmdzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0YWxsb3cgPSB0aGlzLmFwcERldGFpbHMub3JnQXBwU2V0dGluZ3Muc29tZSgob3JnQXBwU2V0dGluZykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAoIXBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKG9yZ0FwcFNldHRpbmcudHlwZSkgfHwgXG5cdFx0XHRcdFx0XHRcdChwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdBcHBTZXR0aW5nLnR5cGUpICYmIFxuXHRcdFx0XHRcdFx0XHRvcmdBcHBTZXR0aW5nLnN0YXR1cyAmJiBvcmdBcHBTZXR0aW5nLnN0YXR1cyA9PSAnSU5fQUNUSVZFJykpXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0XHR9XG5cdFx0fWNhdGNoKGVycm9yKXtcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpXG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tDdXN0b21lclR5cGVJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSAmJiBcblx0XHRcdHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0Y2hlY2tDdXN0b21lclR5cGVOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYgKCF0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5jdXN0b21lclR5cGUgfHwgKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSAmJiBcblx0XHRcdCFwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyh0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5jdXN0b21lclR5cGUpKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0Zvck5vdE9yZ1NldHRpbmdzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRsZXQgYWxsb3cgPSB0cnVlO1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCl7XG5cdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5zb21lKGZ1bmN0aW9uKG9yZ1NldHRpbmcpe1xuXHRcdFx0XHRyZXR1cm4gKCFwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdTZXR0aW5nLnNldHRpbmcpIHx8IFxuXHRcdFx0XHRcdChwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdTZXR0aW5nLnNldHRpbmcpICYmIFxuXHRcdFx0XHRcdG9yZ1NldHRpbmcudmFsdWUgJiYgb3JnU2V0dGluZy52YWx1ZSA9PSAnSU5fQUNUSVZFJykpXG5cdFx0XHRcdCAgIFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0fWVsc2V7XG5cdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0fVxuXHR9XG5cdFxuXHRjaGVja0NvbnRleHRTZXR0aW5ncyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0dmFyIGFsbG93ID0gZmFsc2U7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLm5nT3JnU2V0dGluZ3Mpe1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5uZ09yZ1NldHRpbmdzW2l0ZW1dO1xuXHRcdFx0XHRhbGxvdyA9IGFsbG93ID09IHVuZGVmaW5lZCA/IHRydWUgOiBhbGxvdztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cblx0Y2hlY2tDb250ZXh0U2V0dGluZ05vdEluKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHR2YXIgYWxsb3cgPSB0cnVlO1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5uZ09yZ1NldHRpbmdzKXtcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgcG9zc2libGVWYWx1ZXMpIHtcblx0XHRcdFx0YWxsb3cgPSAhdGhpcy5hcHBEZXRhaWxzLm5nT3JnU2V0dGluZ3NbaXRlbV07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBhbGxvdztcblx0fVxuXG5cdGNoZWNrRm9yQWNjVHlwZShtZW51SXRlbTogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYobWVudUl0ZW1bJ2FjY291bnRfdHlwZSddLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LnR5cGUpID49IDApe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRpZihtZW51SXRlbVsnc3Vic2NyaXB0aW9uX3R5cGVzJ10pe1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5jaGVja0ZvclN1YnNjcmlwdGlvbnMobWVudUl0ZW1bJ3N1YnNjcmlwdGlvbl90eXBlcyddKVxuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yU3BlY2lmaWVkSWRzKHBvc3NpYmxlVmFsdWVzOiBhbnkgLCBjdXJyZW50TWVudUl0ZW06YW55ICwgaWQ6bnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXNbMF0uaWQpe1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHRpZiggaXRlbS5pZCA9PT0gaWQgKXtcblx0XHRcdFx0XHRPYmplY3Qua2V5cyhpdGVtKS5mb3JFYWNoKChrZXkpPT57IFxuXHRcdFx0XHRcdFx0aWYgKGtleSAhPSAnaWQnKSB7XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRNZW51SXRlbVtrZXldID0gaXRlbVtrZXldO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0xpbmsgY2hhbmdlZCB0byAnK2N1cnJlbnRNZW51SXRlbS5saW5rKycgYW5kIHJvdXRlIGNoYW5nZWQgdG8gJytjdXJyZW50TWVudUl0ZW0ucm91dGUpO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKGlkKSA+PSAwKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGNoZWNrRm9yT3JnV2l0aFVzZXJSb2xlKHBvc3NpYmxlVmFsdWVzOiBhbnkgLCBjdXJyZW50TWVudUl0ZW06YW55ICwgaWQ6bnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0bGV0IGFsbG93ID0gdHJ1ZTtcblx0XHRpZiAocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0dmFyIGZsYWdBcnJheSA9IFtdO1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHR2YXIgYWxsS2V5cyA9IE9iamVjdC5rZXlzKGl0ZW0pO1xuXHRcdFx0XHR2YXIgZmxhZyA9IHRoaXMuY2hlY2tBbGxDb25kaXRpb25zKGl0ZW0sIGFsbEtleXMsIGFsbEtleXMpXG5cdFx0XHRcdGZsYWdBcnJheS5wdXNoKGZsYWcpO1xuXHRcdFx0fVxuXHRcdFx0YWxsb3cgPSBmbGFnQXJyYXkuaW5jbHVkZXModHJ1ZSkgPyB0cnVlIDogZmFsc2U7XG5cdFx0XHRcblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cdGNoZWNrRm9yU3BlY2lmaWVkSWRzTm90SW4ocG9zc2libGVWYWx1ZXM6IGFueSAsIGN1cnJlbnRNZW51SXRlbTphbnkgLCBpZDpudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMuaW5kZXhPZihpZCkgPCAwO1xuXHR9XG5cblx0Y2hlY2tGb3JTcGVjaWZpZWRBY2NvdW50SWRzTm90SW4ocG9zc2libGVWYWx1ZXM6IGFueSAsIGN1cnJlbnRNZW51SXRlbTphbnkgLCBpZDpudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMuaW5kZXhPZihpZCkgPCAwO1xuXHR9XG5cblx0Y2hlY2tGb3JSb2xlcyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCl7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5yb2xlKSA+PSAwKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y2hlY2tGb3J2aXNpYmlsaXR5Um9sZXNOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCl7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5yb2xlKSA+PSAwKXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGNoZWNrRm9ySGlkZGVuVXNlclJvbGUocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHBvc3NpYmxlVmFsdWVzICYmIHBvc3NpYmxlVmFsdWVzLmxlbmd0aCA+IDApe1xuXHRcdFx0aWYocG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMudXNlckluZm8ucm9sZSkgPj0gMCAmJiB0aGlzLmFwcERldGFpbHMudXNlckluZm8uaXNIaWRkZW5Vc2VyKXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cHVibGljIGRpc2FibGVGb3JPcmd3aXRoUmVhZE9ubHkocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW57XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLnJvbGUgPT09ICdSRUFEX09OTFknICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKSA+PSAwKXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUocm91dGUgLCBhcHBsaWNhdGlvbklkPXVuZGVmaW5lZCkge1xuXHRcdGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHJvdXRlKSA9PSAtMSkge1xuXHRcdFx0dGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcblx0XHRcdFx0aWYgKGFwcGxpY2F0aW9uSWQpIHtcblx0XHRcdFx0XHRwYXJhbXMgPSB7Li4ucGFyYW1zLCAuLi5hcHBsaWNhdGlvbklkfTtcdFxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHJvdXRlLmluZGV4T2YoJz8nKSA+IC0xICYmIHJvdXRlLmluZGV4T2YoJ3VzZXJtZ210JykgPiAtMSl7XG5cdFx0XHRcdFx0cm91dGUgPSByb3V0ZS5zcGxpdCgnPycpWzBdO1xuXHRcdFx0XHRcdGxldCBuZXdRUGFyYW0gPSB7IHVzZXJtZ210IDogdHJ1ZX1cblx0XHRcdFx0XHRwYXJhbXMgPSB7IC4uLnBhcmFtcyAsIC4uLm5ld1FQYXJhbX1cblx0XHRcdFx0fVxuXHRcdFx0XHRsZXQgdXJsVG9OYXZpZ2F0ZSA9IHRoaXMudXJsQ29udGV4dFNlcnZpY2UucHJlcGFyZVVybFdpdGhRdWVyeVBhcmFtcyhyb3V0ZSwgcGFyYW1zKTtcblx0XHRcdFx0dXJsVG9OYXZpZ2F0ZSA9IGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59LyR7dXJsVG9OYXZpZ2F0ZX1gXG5cdFx0XHRcdC8vIHVybFRvTmF2aWdhdGUgPSBgaHR0cDovL2xvY2FsaG9zdDozMDAwLyR7dXJsVG9OYXZpZ2F0ZX1gXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdOYXZpZ2F0aW5nIHRvIC0gJyx1cmxUb05hdmlnYXRlKTtcblx0XHRcdFx0d2luZG93Lm9wZW4odXJsVG9OYXZpZ2F0ZSwgJ19zZWxmJyk7XG5cdFx0XHR9KTtcblx0XHR9XG4gICAgfVxuXHRcblx0cHVibGljIGZldGNoS2V5VmFsdWUoa2V5OiBzdHJpbmcpIHtcblx0XHRpZih0aGlzLmFwcERldGFpbHMgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50KSB7XG5cdFx0XHRyZXR1cm4gKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudFtrZXldKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdFxuXHR9XG5cblx0cHVibGljIHNldEFjdGl2ZVJlY29Db3VudChjb3VudDpudW1iZXIpe1xuXHRcdHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudFsnYWN0aXZlUmVjb21tZW5kYXRpb24nXSA9IGNvdW50O1xuXHR9XG5cdFxuXHRwdWJsaWMgaXNIYXZpbmdBbnlBY3RpdmVTdWJzKGlkLHN1YnMsdHlwZSl7XG4gICAgaWYoaWQgPT09ICdhZHNfYW1hem9uX2F0dHJpYnV0aW9uJyAmJiB0aGlzLmNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIHR5cGUsICdBTVNfQVRUUklCVVRJT04nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmKGlkID09PSAnYWRzX2FtYXpvbl9kc3AnICYmIHRoaXMuY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgdHlwZSwgJ0RTUCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYoKGlkID09PSAnYWRzX2FtYXpvbl9jb250ZW50JykgJiYgdGhpcy5jaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCB0eXBlLCAnQ09OVEVOVCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYoKGlkID09PSAnYWRzX2luc3RhY2FydCcpICYmIHRoaXMuY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgdHlwZSwgJ0lOU1RBQ0FSVCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9ZWxzZSBpZigoaWQgPT09ICdhZHNfY3JpdGVvJykgJiYgdGhpcy5jaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCB0eXBlLCAnQ1JJVEVPJykpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fWVsc2UgaWYoKGlkID09PSAnYWRzX3dhbG1hcnQnKSAmJiB0aGlzLmNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIHR5cGUsICdXQUxNQVJUJykpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fWVsc2UgaWYoaWQgPT09ICdhZHNfZGF0YV9wbGF0Zm9ybSd8fCBpZCA9PT0gJ2FtYy1wbGF0Zm9ybS13ZWInIHx8IGlkID09PSAnYWRzX2FtYXpvbl9zZWxsZXInKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1lbHNlIGlmKGlkID09PSAnYWRzX2FtYXpvbl9hZHZlcnRpc2luZycgfHwgaWQgPT09ICdhZHNfdmVuZG9yX3NhbGVzJyB8fCBpZCA9PT0gJ2Fkc19zZWxsZXJfc2FsZXMnKSB7XG4gICAgICBmb3IobGV0IHNldHRpbmdzIG9mIHN1YnMpe1xuICAgICAgICBpZihzZXR0aW5ncy50eXBlICE9IHR5cGUgJiYgc2V0dGluZ3Muc3RhdHVzID09IFwiQUNUSVZFXCIpe1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICBcdH1cblxuXHRwdWJsaWMgY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgYWNjVHlwZSAsc3ViVHlwZSkge1xuXHRcdGlmKHN1YlR5cGUgPT09IGFjY1R5cGUpe1xuXHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRjb25zdCBjdXJyZW50VHlwZVN1YiA9IHN1YnMuZmlsdGVyKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udHlwZSA9PT0gc3ViVHlwZSk7XG5cdFx0aWYoY3VycmVudFR5cGVTdWIubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoY3VycmVudFR5cGVTdWJbMF0uc3RhdHVzID09PSAnQUNUSVZFJyB8fCBjdXJyZW50VHlwZVN1YlswXS50eXBlID09PSBhY2NUeXBlKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXRBcHBsaWNhdGlvbklEKCkge1xuXHRcdGxldCB1cmxBcnJheSA9IHRoaXMudXJsQ29udGV4dFNlcnZpY2Uucm91dGVyLnVybC5zcGxpdCgnLycpO1xuXHRcdGxldCBjdXJyZW50Um91dGUgPSB1cmxBcnJheVt1cmxBcnJheS5sZW5ndGggLSAxXTtcblx0XHRcblx0XHRpZih0aGlzLmNvbnRlbnRBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xICkge1xuXHRcdFx0cmV0dXJuIFwiYWRzX2FtYXpvbl9jb250ZW50X2NvbnRlbnRfYW5hbHl0aWNzXCI7XG5cdFx0fSBlbHNlIGlmKHRoaXMuc292QXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSkge1xuXHRcdFx0cmV0dXJuIFwiYWRzX2FtYXpvbl9jb250ZW50X3NoYXJlX29mX3ZvaWNlXCI7XG5cdFx0fVxuXHR9XG59Il19
|
|
835
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXBwbGljYXRpb24tc2lkZWJhci9zcmMvbGliL3NlcnZpY2VzL2FwcGxpY2F0aW9uLXNpZGViYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUszRCxNQUFNLE9BQU8seUJBQXlCO0lBNkM1QjtJQUNBO0lBQ0E7SUFDQTtJQTlDVCxVQUFVLEdBQU0sQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFDLGdCQUFnQixFQUFDLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSw2QkFBNkIsRUFBRSwyQkFBMkIsRUFBRSxnQkFBZ0IsRUFBRSw4QkFBOEIsRUFBRSxzQ0FBc0MsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUMsd0JBQXdCLEVBQUMsZ0JBQWdCLEVBQUMsdUJBQXVCLEVBQUMsa0JBQWtCLEVBQUMseUJBQXlCLEVBQUMsZUFBZSxDQUFDLENBQUM7SUFDN3FCLFFBQVEsR0FBTSxFQUFFLENBQUM7SUFFakIsY0FBYyxHQUFLLEVBQUUsQ0FBQztJ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TyxtQ0FBbUMsQ0FBQztTQUMzQztJQUNGLENBQUM7MkhBdnpCVyx5QkFBeUI7K0hBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzs0RkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzdEFwaVNlcnZpY2UgfSBmcm9tICcuL3Jlc3QtYXBpLnNlcnZpY2VzJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVXJsQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL3VybC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRU5fTEFCRUxTIH0gZnJvbSAnLi4vdHJhbnNsYXRpb25zL3RyYW5zbGF0aW9ucy1lbic7XG5pbXBvcnQgeyBKQV9MQUJFTFMgfSBmcm9tICcuLi90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLWphJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uU2lkZWJhclNlcnZpY2Uge1xuXG5cdGNvbmRpdGlvbnMgXHRcdFx0PSBbJ29yZ191c2VyX2N0cmwnLCAndmlzaWJpbGl0eV9yb2xlcycsICd2aXNpYmlsaXR5X3JvbGVzX25vdF9pbicsICdhY2NvdW50X2lkcycsICdjdXN0b21lcl90eXBlc19ub3RfaW4nLCdjdXN0b21lcl90eXBlcycsJ29yZ2FuaXphdGlvbl9pZHMnLCAnb3JnYW5pemF0aW9uX2lkc19ub3RfaW4nLCAnYWNjb3VudF90eXBlJywgJ2FjY291bnRfaWRzX25vdF9pbicsICdvcmdhbml6YXRpb25fc2V0dGluZycsICdvcmdhbml6YXRpb25fc2V0dGluZ19ub3RfaW4nLCAnYXBwX3NwYWNpZmljX2NvbmZpZ19jaGVjaycsICdjYW1wYWlnbl90eXBlcycsICdpbmNvbnRleHRfY2FtcGFpZ25fdGFyZ2V0aW5nJywgJ2luY29udGV4dF9jYW1wYWlnbl90YXJnZXRpbmdfd2FsbWFydCcsICdzdWJzY3JpcHRpb25fdHlwZXMnLCAnc2l0ZUlkcycsICdzaXRlTm90SWRzJywgJ25vdF9hY2NvdW50X3R5cGUnLCAnbm90X2FjY291bnRfbmFtZScsICdkaXNhYmxlX3JlYWRvbmx5X29yZycsICd1c2VyX2VtYWlscycsICdoaWRlX2Zvcl91c2VyJywgJ2FwcF9vcmdfc2V0dGluZycsJ2FwcF9vcmdfc2V0dGluZ19ub3RfaW4nLCduZ19hcHBfc2V0dGluZycsJ25nX2FwcF9zZXR0aW5nX25vdF9pbicsJ3RhcmdldHRpbmdfdHlwZXMnLCd0YXJnZXR0aW5nX3R5cGVzX25vdF9pbicsJ2hpZGVfZm9yX3VzZXInXTtcblx0TWVudUxpc3QgXHRcdFx0PSBbXTtcblxuXHRhcHBsaWNhdGlvbklkcyBcdFx0PSBbXTtcblx0ZW5hYmxlQWxsTWVudXNCeU9yZyA9IFszMDc4MF1cblx0XG5cdGFwcERldGFpbHM6XHRhbnk7XG5cdGlzU3RydWN0dXJlQXBpU3VwcG9ydDpcdGFueTtcblx0aXNNYW5hZ2VkU2VydmljZUFjYzogYm9vbGVhbjtcblx0U2V0dGluZ3NNZW51TGlzdDogYW55W107XG5cdGFwcE5hbWVzOiBzdHJpbmdbXTtcblx0cHJpdmF0ZSBtZW51bGlzdHM6IGFueTtcblx0Y29udGVudEFwcFJvdXRlc1x0XHRcdD1bJ2NvbnRlbnQtaW5zaWdodCcsJ2NvbnRlbnQtYW5hbHl0aWNzJywnY29udGVudCcsJ3Byb2R1Y3QtbWV0YS1kYXRhJywnYnJhbmQtdGVybXMtc2V0dGluZ3MnLCdsYWJlbHMtc2V0dGluZ3MnLCdzdWItYnJhbmRzJywnc3ViLWJyYW5kcy1tYXBwaW5nJywnc292LXNldHRpbmdzJyAsJ2NvbnRlbnQtc2V0dGluZ3MnLCdzZWFyY2gtcXVlcnktcGVyZm9ybWFuY2UnXVxuXHRzb3ZBcHBSb3V0ZXNcdFx0XHRcdD1bJ2luc2lnaHRzJywnc2hhcmUtb2Ytdm9pY2UnLCdicmFuZHMnLCdrZXl3b3JkcycsJ3Byb2R1Y3RzJywnZGFpbHktdHJhY2tlcicsJ2RhaWx5LXRyYWNrZXIvYnJhbmRzJywnZGFpbHktdHJhY2tlci9rZXl3b3JkcycsJ2RhaWx5LXRyYWNrZXIvcHJvZHVjdHMnLCdyYXctZGF0YScsJ292ZXJ2aWV3Jywnc292JywncHJvZHVjdC1tZXRhLWRhdGEnLCdicmFuZC10ZXJtcy1zZXR0aW5ncycsJ2xhYmVscy1zZXR0aW5ncycsJ3N1Yi1icmFuZHMnLCdzdWItYnJhbmRzLW1hcHBpbmcnLCdzb3Ytc2V0dGluZ3MnICwnY29udGVudC1zZXR0aW5ncycsJ3NlYXJjaC1xdWVyeS1wZXJmb3JtYW5jZSddXG5cdHNlbGxlckFuYWx5dGljc0FwcFJvdXRlcyBcdD1bJ3NlbGxlci9pbnNpZ2h0cycsJ3Byb2R1Y3QtbWV0YS1kYXRhJywnYnJhbmQtdGVybXMtc2V0dGluZ3MnLCdsYWJlbHMtc2V0dGluZ3MnLCdzdWItYnJhbmRzJywnc3ViLWJyYW5kcy1tYXBwaW5nJywnc292LXNldHRpbmdzJyAsJ2NvbnRlbnQtc2V0dGluZ3MnLCdzZWFyY2gtcXVlcnktcGVyZm9ybWFuY2UnXVxuXHR2ZW5kb3JBbmFseXRpY3NBcHBSb3V0ZXNcdD1bJ3ZlbmRvci9pbnNpZ2h0cycsJ3Byb2R1Y3QtbWV0YS1kYXRhJywnYnJhbmQtdGVybXMtc2V0dGluZ3MnLCdsYWJlbHMtc2V0dGluZ3MnLCdzdWItYnJhbmRzJywnc3ViLWJyYW5kcy1tYXBwaW5nJywnc292LXNldHRpbmdzJyAsJ2NvbnRlbnQtc2V0dGluZ3MnLCdzZWFyY2gtcXVlcnktcGVyZm9ybWFuY2UnXVxuXHRcblx0dHlwZVN0YXR1c0NvbmZpZ3MgPSB7XG4gICAgICAgICdTUE9OU09SRURfS0VZV09SRF9CSURTJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfUFJPRFVDVF9NQU5VQUxfVEFSR0VUSU5HX0JJRFMnIDogdHJ1ZSxcbiAgICAgICAgJ1NQT05TT1JFRF9QUk9EVUNUX0FVVE9fVEFSR0VUSU5HX0JJRFMnIDogdHJ1ZSxcbiAgICAgICAgJ1NQT05TT1JFRF9LRVlXT1JEX0FVVE8nIDogdHJ1ZSxcbiAgICAgICAgJ1NQT05TT1JFRF9LRVlXT1JEJyA6IHRydWUsXG4gICAgICAgICdTUF9LRVlXT1JEU19CSURfR0FQJyA6IGZhbHNlLFxuICAgICAgICAnU1BfUExBQ0VNRU5UX0JJRCcgOiBmYWxzZSxcbiAgICAgICAgJ1NQX1RBUkdFVElOR19UWVBFX0JSRUFLRE9XTicgOiBmYWxzZSxcbiAgICAgICAgJ1NQX01BVENIX1RZUEVfQlJFQUtET1dOJyA6IGZhbHNlLFxuICAgICAgICAnU1BfU0JfS0VZV09SRF9QQVJJVFknIDogdHJ1ZSxcbiAgICAgICAgJ0hFQURMSU5FX0tFWVdPUkRfQklEUycgOiB0cnVlLFxuICAgICAgICAnU0JfS0VZV09SRFNfQklEX0dBUCcgOiBmYWxzZSxcbiAgICAgICAgJ1NCX01BVENIX1RZUEVfQlJFQUtET1dOJyA6IGZhbHNlLFxuICAgICAgICAnU0JfU1BfS0VZV09SRF9QQVJJVFknIDogdHJ1ZSxcbiAgICAgICAgJ05PX0tFWVdPUkRfQklEUycgOiB0cnVlLFxuICAgICAgICAnQ0FNUEFJR05fVFlQRV9CUkVBS0RPV04nIDogZmFsc2UsXG4gICAgICAgICdBVVRPX1RPX01BTlVBTF9BU0lOX1BBUklUWScgOiB0cnVlLFxuICAgICAgICAnTUFOVUFMX1RPX0FVVE9fQVNJTl9QQVJJVFknIDogdHJ1ZSxcbiAgICAgICAgJ0NPTVBFVElUT1JfUFJPRFVDVCcgOiB0cnVlLFxuICAgICAgICAnU1BPTlNPUkVEX0JSQU5EX0tFWVdPUkQnOiB0cnVlXG4gICAgfVxuXG5cdFxuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgUmVzdEFwaVNlcnZpY2U6IFJlc3RBcGlTZXJ2aWNlLFxuXHRcdHByaXZhdGUgYWN0aXZhdGVkUm91dGU6QWN0aXZhdGVkUm91dGUsXG5cdFx0cHJpdmF0ZSB0cmFuc2xhdGU6VHJhbnNsYXRpb25TZXJ2aWNlLFxuXHRcdHByaXZhdGUgdXJsQ29udGV4dFNlcnZpY2U6IFVybENvbnRleHRTZXJ2aWNlKSB7fVxuXG5cdGdldFR5cGVTdGF0dXNDb25maWdzKCl7XG5cdFx0cmV0dXJuIHRoaXMudHlwZVN0YXR1c0NvbmZpZ3M7XG5cdH1cblx0Y29uc3RydWN0Q2hpbGRNZW51cyhtZW51SXRlbXMpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwRGV0YWlscy5saXN0TWVudXMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbWVudUl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXBwRGV0YWlscy5hcHBTZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQuaW5jbHVkZXModGhpcy5hcHBEZXRhaWxzLmFwcGxpY2F0aW9uSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBsaXN0TWVudUl0ZW0gb2YgdGhpcy5hcHBEZXRhaWxzLmxpc3RNZW51cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkID09IGxpc3RNZW51SXRlbS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gbGlzdE1lbnVJdGVtLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtLmlkID09IHRoaXMuYXBwRGV0YWlscy5hcHBsaWNhdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY2hpbGRyZW4gPSB0aGlzLmFwcERldGFpbHMubGlzdE1lbnVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVudUl0ZW1zO1xuICAgIH1cblxuXHRnZXRNZW51TGlzdChhcHBEZXRhaWxzLCBtZW51bGlzdHMpIHtcbiAgICAgICAgdGhpcy5hcHBEZXRhaWxzID0gYXBwRGV0YWlscztcbiAgICAgICAgdGhpcy5NZW51TGlzdCA9IFtdO1xuICAgICAgICBsZXQgYXBwZW5kQ2hpbGRNZW51cztcbiAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2hlcm9rdWFwcCcpID4gLTEgfHwgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignbG9jYWxob3N0JykgPiAtMSkge1xuICAgICAgICAgICAgYXBwZW5kQ2hpbGRNZW51cyA9IHRoaXMuY29uc3RydWN0Q2hpbGRNZW51cyhtZW51bGlzdHMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXBwZW5kQ2hpbGRNZW51cyA9IG1lbnVsaXN0cztcbiAgICAgICAgfVxuICAgICAgICBhcHBlbmRDaGlsZE1lbnVzLmZvckVhY2goKG1lbnUpID0+IHtcbiAgICAgICAgICAgIG1lbnUubmFtZSA9IHRoaXMudHJhbnNsYXRlLnRyYW5zbGF0ZU5hbWUobWVudS5uYW1lKTtcbiAgICAgICAgICAgIG1lbnUuY2hpbGRyZW4gJiYgbWVudS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZE1lbnUpID0+IHtcbiAgICAgICAgICAgICAgICBjaGlsZE1lbnUubmFtZSA9IHRoaXMudHJhbnNsYXRlLnRyYW5zbGF0ZU5hbWUoY2hpbGRNZW51Lm5hbWUpO1xuICAgICAgICAgICAgICAgIGNoaWxkTWVudS5jaGlsZHJlbiAmJiBjaGlsZE1lbnUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQubmFtZSA9IHRoaXMudHJhbnNsYXRlLnRyYW5zbGF0ZU5hbWUoY2hpbGQubmFtZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubWVudWxpc3RzID0gYXBwZW5kQ2hpbGRNZW51cy5maWx0ZXIobGlzdCA9PiBsaXN0LmlkICE9PSAnYXBwX2dsb2JhbF9zZXR0aW5ncycgJiYgbGlzdC5pZCAhPT0gJ2FwcF9pbnRlbnR3aXNlX2NvbW11bml0eScpO1xuICAgICAgICBsZXQgc29ydGVkTWVudWxpc3RzID0gdGhpcy5tZW51bGlzdHMuc29ydCgoYSwgYikgPT4gKGEub3JkZXIgPiBiLm9yZGVyKSA/IDEgOiAtMSk7XG4gICAgICAgIHRoaXMuYXBwbGljYXRpb25JZHMgPSBzb3J0ZWRNZW51bGlzdHMubWFwKChhcHBJZCkgPT4gYXBwSWQuaWQpO1xuICAgICAgICB0aGlzLmFwcE5hbWVzID0gdGhpcy5hcHBsaWNhdGlvbklkcztcbiAgICAgICAgLy8gaWYoKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkID09PSAxMDM5MCB8fFxuICAgICAgICAvLyAgICAgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQgPT09IDEwNTMwKSAmJlxuICAgICAgICAvLyAgICAgdGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLmVtYWlsID09IFwic3JlZW5hdGhAaW50ZW50d2lzZS5jb21cIikge1xuICAgICAgICAvLyAgICAgdGhpcy5hcHBOYW1lcyA9IHRoaXMuYXBwbGljYXRpb25JZHMuZmlsdGVyKChuYW1lKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuIChuYW1lICE9ICdhZHNfYW1hem9uX2NvbnRlbnRfc2hhcmVfb2Zfdm9pY2UnICYmIG5hbWUgIT0gJ2Fkc19hbWF6b25fY29udGVudF9jb250ZW50X2FuYWx5dGljcycpO1xuICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgZm9yIChsZXQgYXBwTmFtZSBvZiBzb3J0ZWRNZW51bGlzdHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcE5hbWVzLmluZGV4T2YoYXBwTmFtZS5pZCkgPj0gMCkge1xuICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gdGhpcy5nZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGFwcE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChsaXN0ICYmIGxpc3QuY2hpbGRyZW4gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcHBOYW1lLmlkID09ICdhZHNfYW1hem9uX2RzcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0LmNoaWxkcmVuICYmIGxpc3QuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIGxpc3QuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNNYW5hZ2VkU2VydmljZUFjYyAmJiBjaGlsZC5pZCA9PSBcImFtc19kc3Bfc2V0dGluZ3NcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuY2hpbGRyZW4gPSBjaGlsZC5jaGlsZHJlbi5maWx0ZXIoc19jaGlsZCA9PiBzX2NoaWxkLmlkICE9PSAnYW1zX2RzcF9ydWxlcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NZW51TGlzdC5wdXNoKGxpc3QpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NZW51TGlzdC5wdXNoKGxpc3QpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYXBwTmFtZS50eXBlICE9ICdleHBhbmRhYmxlJykge1xuICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gdGhpcy5nZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGFwcE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChsaXN0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLk1lbnVMaXN0LnB1c2gobGlzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLk1lbnVMaXN0O1xuICAgIH1cblxuXHRnZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGN1cnJlbnRNZW51SXRlbTphbnkpOiBhbnkge1xuXHRcdGxldCBtZW51SXRlbSA9IHtcblx0XHRcdGNoaWxkcmVuIDogW11cblx0XHR9O1xuXG5cdFx0aWYoY3VycmVudE1lbnVJdGVtLnR5cGUgIT0gJ2V4cGFuZGFibGUnKXtcblx0XHRcdGxldCBhbGxLZXlzID0gT2JqZWN0LmtleXMoY3VycmVudE1lbnVJdGVtKTtcblx0XHRcdGNvbnN0IGhhc0NvbmRpdGlvbnN0b0NoZWNrID0gdGhpcy5jb25kaXRpb25zLnNvbWUoY29uZGl0aW9uID0+IGFsbEtleXMuaW5jbHVkZXMoY29uZGl0aW9uKSlcblx0XHRcdGlmKGhhc0NvbmRpdGlvbnN0b0NoZWNrKXtcblx0XHRcdFx0bGV0IGlzTWVudUFsbG93ZWQgPSB0aGlzLmNoZWNrQWxsQ29uZGl0aW9ucyhjdXJyZW50TWVudUl0ZW0sIHRoaXMuY29uZGl0aW9ucywgYWxsS2V5cyk7XG5cdFx0XHRcdGlmKGlzTWVudUFsbG93ZWQpe1xuXHRcdFx0XHRcdG1lbnVJdGVtID0gY3VycmVudE1lbnVJdGVtO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3JldHVybiBlbXB0eScpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0bWVudUl0ZW0gPSBjdXJyZW50TWVudUl0ZW07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRsZXQgYWxsS2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRNZW51SXRlbSk7XG5cdFx0XHRjb25zdCBoYXNDb25kaXRpb25zdG9DaGVjayA9IHRoaXMuY29uZGl0aW9ucy5zb21lKGNvbmRpdGlvbiA9PiBhbGxLZXlzLmluY2x1ZGVzKGNvbmRpdGlvbikpXG5cdFx0XHRpZighaGFzQ29uZGl0aW9uc3RvQ2hlY2sgfHwgKGhhc0NvbmRpdGlvbnN0b0NoZWNrICYmIHRoaXMuY2hlY2tBbGxDb25kaXRpb25zKGN1cnJlbnRNZW51SXRlbSwgdGhpcy5jb25kaXRpb25zLCBhbGxLZXlzKSkpIHtcblx0XHRcdFx0T2JqZWN0LmtleXMoY3VycmVudE1lbnVJdGVtKS5mb3JFYWNoKChrZXkpPT57IFxuXHRcdFx0XHRcdGlmICh0eXBlb2YgY3VycmVudE1lbnVJdGVtW2tleV0gIT0gXCJvYmplY3RcIiApIHtcblx0XHRcdFx0XHRcdG1lbnVJdGVtW2tleV0gPSBjdXJyZW50TWVudUl0ZW1ba2V5XTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdG1lbnVJdGVtLmNoaWxkcmVuID0gW107XG5cdFx0XHRcdGZvcihsZXQgY2hpbGQgb2YgY3VycmVudE1lbnVJdGVtLmNoaWxkcmVuKXtcblx0XHRcdFx0XHRsZXQgbmF2X21lbnUgPSB0aGlzLmdldEFwcGxpY2F0aW9uTWVudUl0ZW0oY2hpbGQpO1xuXHRcdFx0XHRcdGlmKG5hdl9tZW51ICE9IG51bGwpeyBcblx0XHRcdFx0XHRcdGlmKG5hdl9tZW51LmNoaWxkcmVuICE9IHVuZGVmaW5lZCl7XG5cdFx0XHRcdFx0XHRcdGlmKG5hdl9tZW51LmNoaWxkcmVuLmxlbmd0aCA+IDApe1xuXHRcdFx0XHRcdFx0XHRcdG1lbnVJdGVtLmNoaWxkcmVuLnB1c2gobmF2X21lbnUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRtZW51SXRlbS5jaGlsZHJlbi5wdXNoKG5hdl9tZW51KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1lbHNle1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XHRcdFx0XG5cdFx0fVxuXHRcdHJldHVybiBtZW51SXRlbTtcblx0fVxuXG5cdGdldEdsb2JhbFNldHRpbmdzTWVudShhcHBEZXRhaWxzIDogYW55LCBtZW51bGlzdHMpIHtcblx0XHR0aGlzLmFwcERldGFpbHMgPSBhcHBEZXRhaWxzO1x0XG5cdFx0dGhpcy5TZXR0aW5nc01lbnVMaXN0ID0gW107XG5cdFx0bGV0IGdsb2JhbFNldHRpbmdNZW51cyA9IG1lbnVsaXN0cy5maWx0ZXIobGlzdD0+IGxpc3QuaWQgPT0gJ2FwcF9nbG9iYWxfc2V0dGluZ3MnKVxuXHRcdGxldCBHTE9CQUxfU0VUVElOR19MSVNUX1NPUlRFRCA9IGdsb2JhbFNldHRpbmdNZW51cy5zb3J0KChhLCBiKSA9PiAoYS5vcmRlciA+IGIub3JkZXIpID8gMSA6IC0xKTtcblx0XHRmb3IgKGxldCBhcHBOYW1lIG9mIEdMT0JBTF9TRVRUSU5HX0xJU1RfU09SVEVEKSB7XG5cdFx0XHRpZihhcHBOYW1lLnR5cGUgPT0gJ2V4cGFuZGFibGUnKXtcblx0XHRcdFx0bGV0IGxpc3QgPSB0aGlzLmdldEFwcGxpY2F0aW9uTWVudUl0ZW0oYXBwTmFtZSk7XG5cdFx0XHRcdGlmKGxpc3QgJiYgbGlzdC5jaGlsZHJlbiAmJiBsaXN0LmNoaWxkcmVuLmxlbmd0aCA+IDApe1xuXHRcdFx0XHRcdHRoaXMuU2V0dGluZ3NNZW51TGlzdC5wdXNoKGxpc3QpO1xuXHRcdFx0XHR9XHRcdFx0XHRcblx0XHRcdH1lbHNlIGlmKGFwcE5hbWUudHlwZSAhPSAnZXhwYW5kYWJsZScpe1xuXHRcdFx0XHRsZXQgbGlzdCA9IHRoaXMuZ2V0QXBwbGljYXRpb25NZW51SXRlbShhcHBOYW1lKTtcblx0XHRcdFx0aWYobGlzdCAhPSB1bmRlZmluZWQpe1xuXHRcdFx0XHRcdHRoaXMuU2V0dGluZ3NNZW51TGlzdC5wdXNoKGxpc3QpXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XHRcdFxuXHRcdHJldHVybiB0aGlzLlNldHRpbmdzTWVudUxpc3Q7XG5cdH1cblxuXHRjaGVja0FsbENvbmRpdGlvbnMoY3VycmVudE1lbnVJdGVtOiBhbnksIGNvbmRpdGlvbnMsIGFsbEtleXM6IHN0cmluZ1tdKTogYW55IHtcblx0XHRsZXQgaW5jbHVkZU1lbnUgPSBmYWxzZTtcblx0XHRpZigoIXRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiBjdXJyZW50TWVudUl0ZW0uaWQgPT0gXCJhZHNfb3ZlcnZpZXdcIiAmJiBcblx0XHRcdCF0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvblsnbm9BY3RpdmVBY2NvdW50cyddKSl7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZSBpZihjdXJyZW50TWVudUl0ZW0uaWQgPT09IFwiYWRzX3NpZ251cF9vdmVydmlld1wiKSB7XG5cdFx0XHRpZighdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uWydub0FjdGl2ZUFjY291bnRzJ10pe1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGVsc2V7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Zm9yKGxldCBjb25kIG9mIGNvbmRpdGlvbnMpe1xuXHRcdFx0aWYoY3VycmVudE1lbnVJdGVtW2NvbmRdICE9IHVuZGVmaW5lZCl7XG5cdFx0XHRcdHN3aXRjaChjb25kKXtcblx0XHRcdFx0XHRjYXNlICd2aXNpYmlsaXR5X3JvbGVzJzogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclJvbGVzKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH0gXG5cdFx0XHRcdFx0Y2FzZSAndmlzaWJpbGl0eV9yb2xlc19ub3RfaW4nOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9ydmlzaWJpbGl0eVJvbGVzTm90SW4oY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRjYXNlICdkaXNhYmxlX3JlYWRvbmx5X29yZyc6e1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmRpc2FibGVGb3JPcmd3aXRoUmVhZE9ubHkoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnb3JnYW5pemF0aW9uX2lkcycgOiB7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNwZWNpZmllZElkcyhjdXJyZW50TWVudUl0ZW1bY29uZF0sY3VycmVudE1lbnVJdGVtLHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5vcmdhbml6YXRpb25JZCk7XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH0gZWxzZSBpZih0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbiAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTcGVjaWZpZWRJZHMoY3VycmVudE1lbnVJdGVtW2NvbmRdLGN1cnJlbnRNZW51SXRlbSx0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCk7XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ29yZ2FuaXphdGlvbl9pZHNfbm90X2luJyA6IHtcblx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQub3JnYW5pemF0aW9uSWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkSWRzTm90SW4oY3VycmVudE1lbnVJdGVtW2NvbmRdLGN1cnJlbnRNZW51SXRlbSx0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQub3JnYW5pemF0aW9uSWQpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNwZWNpZmllZElkc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdvcmdfdXNlcl9jdHJsJzp7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbiAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JPcmdXaXRoVXNlclJvbGUoY3VycmVudE1lbnVJdGVtW2NvbmRdLGN1cnJlbnRNZW51SXRlbSx0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2FjY291bnRfaWRzJyA6IHsgXG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTcGVjaWZpZWRJZHMoY3VycmVudE1lbnVJdGVtW2NvbmRdLGN1cnJlbnRNZW51SXRlbSx0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQuYW1zQWNjb3VudElkKTtcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2FjY291bnRfaWRzX25vdF9pbicgOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTcGVjaWZpZWRBY2NvdW50SWRzTm90SW4oY3VycmVudE1lbnVJdGVtW2NvbmRdLGN1cnJlbnRNZW51SXRlbSx0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQuYW1zQWNjb3VudElkKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cdFx0XHRcdFx0XG5cdFx0XHRcdFx0Y2FzZSAnbm90X2FjY291bnRfbmFtZScgOiB7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQpe1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JOb3RBY2NOYW1lKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0XHR9ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnYWNjb3VudF90eXBlJyA6IHsgXG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yQWNjVHlwZShjdXJyZW50TWVudUl0ZW0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ29yZ2FuaXphdGlvbl9zZXR0aW5nJyA6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JPcmdTZXR0aW5ncyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1x0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9Y2FzZSAnYXBwX29yZ19zZXR0aW5nJyA6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JPcmdBcHBTZXR0aW5ncyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1x0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnYXBwX29yZ19zZXR0aW5nX25vdF9pbic6IHtcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0Zvck9yZ0FwcFNldHRpbmdzTm90SW4oY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdvcmdhbml6YXRpb25fc2V0dGluZ19ub3RfaW4nIDogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0Zvck5vdE9yZ1NldHRpbmdzKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH0gXG5cdFx0XHRcdFx0Ly8gVE9ETyA6IFRoaXMgaXMgdGVtcG9yZXJ5IHNvbHV0aW9uIGZvciBBbWMgc3BhY2lmaWMgb3JnIHNldHRpbmcgY2hlY2suXG5cdFx0XHRcdFx0Y2FzZSAnYXBwX3NwYWNpZmljX2NvbmZpZ19jaGVjayc6IHtcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5hcHBTcGVjaWZpY0NvbmZpZyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdzaXRlSWRzJyA6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTaXRlSWRzKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH0gXG5cdFx0XHRcdFx0Y2FzZSAnc2l0ZU5vdElkcycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU2l0ZU5vdElkcyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGNhc2UgJ3N1YnNjcmlwdGlvbl90eXBlcycgOiB7IFxuXHRcdFx0XHRcdFx0aWYoY3VycmVudE1lbnVJdGVtWydhY2NvdW50X3R5cGUnXSA9PSB1bmRlZmluZWQpe1xuXHRcdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LnN1YnNjcmlwdGlvbikge1xuXHRcdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclN1YnNjcmlwdGlvbnMoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JBY2NUeXBlKGN1cnJlbnRNZW51SXRlbSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGNhc2UgJ2NhbXBhaWduX3R5cGVzJyA6IHtcblx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCl7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckNhbXBhaWduVHlwZShjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ3RhcmdldHRpbmdfdHlwZXMnOiB7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0KSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclRhcmdldHRpbmdUeXBlKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAndGFyZ2V0dGluZ190eXBlc19ub3RfaW4nOiB7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0KSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0Zvck5vdFRhcmdldHRpbmdUeXBlKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnaW5jb250ZXh0X2NhbXBhaWduX3RhcmdldGluZycgOiB7IFxuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0KXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yQ2FtcGFpZ25UYXJnZXRpbmcoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdpbmNvbnRleHRfY2FtcGFpZ25fdGFyZ2V0aW5nX3dhbG1hcnQnIDogeyBcblx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dHdhbG1hcnQpe1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JDYW1wYWlnblRhcmdldGluZ1dhbG1hcnQoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICd1c2VyX2VtYWlscycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmF1dGhlbnRpY2F0ZVVzZXJNYWlsTWVudShjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2hpZGVfZm9yX3VzZXInIDoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9ySGlkZGVuVXNlclJvbGUoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ25nX2FwcF9zZXR0aW5nJzoge1xuXHRcdFx0XHRcdFx0aWYgKCF0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrQ29udGV4dFNldHRpbmdzKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICduZ19hcHBfc2V0dGluZ19ub3RfaW4nOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tDb250ZXh0U2V0dGluZ05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnY3VzdG9tZXJfdHlwZXMnOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tDdXN0b21lclR5cGVJbihjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2N1c3RvbWVyX3R5cGVzX25vdF9pbic6IHtcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0N1c3RvbWVyVHlwZU5vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gZGVmYXVsdDogeyBcblx0XHRcdFx0XHQvLyAvL3N0YXRlbWVudHM7IFxuXHRcdFx0XHRcdC8vIGJyZWFrOyBcblx0XHRcdFx0XHQvLyB9IFxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKCFpbmNsdWRlTWVudSl7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XHRcdFx0XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBpbmNsdWRlTWVudTtcblx0fVxuXG5cdGNoZWNrRm9yTm90QWNjTmFtZShwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQubmFtZSkgPT0gLTEpe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tGb3JDYW1wYWlnblR5cGUocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQgJiYgcG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHRbMF0uZGF0YVR5cGUpID49IDApe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdGNoZWNrRm9yVGFyZ2V0dGluZ1R5cGUocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHR2YXIgYWxsb3cgPSBmYWxzZTtcblx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQgJiYgcG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHRbMF0udGFyZ2V0aW5nVHlwZSkgPj0gMCl7XG5cdFx0XHRhbGxvdyA9IHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBhbGxvdztcblx0fVxuXHRjaGVja0Zvck5vdFRhcmdldHRpbmdUeXBlKHBvc3NpYmxlVmFsdWVzOiBhbnkpOmJvb2xlYW57XG5cdFx0dmFyIGFsbG93ID0gdHJ1ZTtcblx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQgJiYgcG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHRbMF0udGFyZ2V0aW5nVHlwZSkgPj0gMCl7XG5cdFx0XHRhbGxvdyA9IGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gYWxsb3c7XG5cdH1cblx0Y2hlY2tGb3JDYW1wYWlnblRhcmdldGluZyhwb3NzaWJsZVZhbHVlczogYW55KTpib29sZWFue1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCAmJiBwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dFswXS5jYW1wYWlnblRhcmdldGluZykgPj0gMCl7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRjaGVja0ZvckNhbXBhaWduVGFyZ2V0aW5nV2FsbWFydChwb3NzaWJsZVZhbHVlczogYW55KTpib29sZWFue1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dHdhbG1hcnQgJiYgcG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHR3YWxtYXJ0WzBdLmNhbXBhaWduVGFyZ2V0aW5nKSA+PSAwKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdGF1dGhlbnRpY2F0ZVVzZXJNYWlsTWVudShwb3NzaWJsZVZhbHVlczogYW55KTpib29sZWFue1xuXHRcdHJldHVybiBwb3NzaWJsZVZhbHVlcyAmJiBwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyh0aGlzLmFwcERldGFpbHMudXNlckluZm8uZW1haWwpO1xuXHR9XG5cblx0Y2hlY2tGb3JTdWJzY3JpcHRpb25zKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFue1xuXHRcdGZvcihsZXQgc2V0dGluZ3Mgb2YgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LnN1YnNjcmlwdGlvbil7XG5cdFx0XHRpZigocG9zc2libGVWYWx1ZXMuaW5kZXhPZihzZXR0aW5ncy50eXBlKSA+PSAwKSAmJiBzZXR0aW5ncy5zdGF0dXMgPT0gXCJBQ1RJVkVcIil7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRjaGVja0ZvclNpdGVJZHMocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5zaWRlYmFySW5mbyAmJiB0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkICYmIHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKE51bWJlcih0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKSkpe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdGNoZWNrRm9yU2l0ZU5vdElkcyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLnNpZGViYXJJbmZvICYmIHRoaXMuYXBwRGV0YWlscy5zaWRlYmFySW5mby5zaXRlSWQgJiYgcG9zc2libGVWYWx1ZXMuaW5jbHVkZXMoTnVtYmVyKHRoaXMuYXBwRGV0YWlscy5zaWRlYmFySW5mby5zaXRlSWQpKSl7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cblxuXHQvLyBUT0RPIDogVGhpcyBpcyB0ZW1wb3Jlcnkgc29sdXRpb24gZm9yIEFtYyBzcGFjaWZpYyBvcmcgc2V0dGluZyBjaGVjay5cblx0YXBwU3BlY2lmaWNDb25maWcocG9zc2libGVWYWx1ZXM6IEFycmF5PFN0cmluZz4pOiBib29sZWFuIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3Qgcm9sZSA9IFsnU1VQRVJfQURNSU4nLCAnU1VQRVJfQURNSU5fUkVBRF9PTkxZJ107XG5cdFx0XHQvLyBDaGVjayByb2xlIGNvbmRpdGlvbiBhbmQgb3JnIHNldHRpbmcgaXMgYXZhaWxhYmxpdHlcblx0XHRcdGlmICghcm9sZS5pbmNsdWRlcyh0aGlzLmFwcERldGFpbHMudXNlckluZm8ucm9sZSkgJiYgdGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzICYmIHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGxldCBhbGxvdyA9IGZhbHNlO1xuXG5cdFx0XHRcdC8vIFRvIHZlcmlmeSBpZiB0aGUgb3JnIHNldHRpbmcgaXMgYXZhaWxhYmxlXG5cdFx0XHRcdFxuXHRcdFx0XHRsZXQga2V5bWF0Y2hlZCA9IHBvc3NpYmxlVmFsdWVzLnNvbWUoKGtleTogU3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5maW5kSW5kZXgoZnVuY3Rpb24gKHNldHRpbmc6IGFueSkgeyByZXR1cm4ga2V5ID09IHNldHRpbmcuc2V0dGluZzsgfSkgPiAtMVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQvLyBUbyB2ZXJpZnkgIGlmIHRoZSBvcmcgc2V0dGluZyBpcyBhdmFpbGFibGUgYW5kIGVuYWJsZWQvQWN0aXZlXG5cblx0XHRcdFx0bGV0IEFsbEFjdGl2ZSA9IHBvc3NpYmxlVmFsdWVzLmV2ZXJ5KChrZXk6IFN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MuZmluZEluZGV4KGZ1bmN0aW9uIChzZXR0aW5nOiBhbnkpIHsgcmV0dXJuIGtleSA9PSBzZXR0aW5nLnNldHRpbmcgJiYgc2V0dGluZy52YWx1ZSA9PSBcIkFDVElWRVwiOyB9KSA+IC0xXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdC8vIElmIE5vIG9yZyBzZXR0aW5nIGlzIGF2YWlsYWJsZSBPUiBzZXR0aW5nIGlzIGF2YWlsYWJsZSBidXQgd2l0aCBhY3RpdmUgc3RhdHVzXG5cdFx0XHRcdGlmICgha2V5bWF0Y2hlZCB8fCBBbGxBY3RpdmUpIHtcblx0XHRcdFx0XHRhbGxvdyA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpXG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tGb3JPcmdTZXR0aW5ncyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0dHJ5e1xuXHRcdFx0dmFyIGFsbG93ID0gZmFsc2U7XG5cdFx0XHRpZiAodGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzICYmIHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGFsbG93ID0gdGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzLnNvbWUoZnVuY3Rpb24ob3JnU2V0dGluZyl7XG5cdFx0XHRcdFx0aWYoIW9yZ1NldHRpbmcudmFsdWUgfHwgb3JnU2V0dGluZy52YWx1ZSAmJiBvcmdTZXR0aW5nLnZhbHVlID09ICdBQ1RJVkUnKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMuaW5jbHVkZXMob3JnU2V0dGluZy5zZXR0aW5nKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KVxuXHRcdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0XHR9XG5cdFx0fWNhdGNoKGVycm9yKXtcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpXG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tGb3JPcmdBcHBTZXR0aW5ncyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLm9yZ0FwcFNldHRpbmdzKXtcblx0XHRcdGZvcihsZXQgc2V0dGluZ3Mgb2YgdGhpcy5hcHBEZXRhaWxzLm9yZ0FwcFNldHRpbmdzKXtcblx0XHRcdFx0aWYocG9zc2libGVWYWx1ZXMuaW5kZXhPZihzZXR0aW5ncy50eXBlKSA+PSAwICYmIHNldHRpbmdzLnN0YXR1cyA9PSAnQUNUSVZFJyl7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9ZWxzZXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0Y2hlY2tGb3JPcmdBcHBTZXR0aW5nc05vdEluKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHR0cnl7XG5cdFx0XHR2YXIgYWxsb3cgPSB0cnVlO1xuXHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5vcmdBcHBTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnQXBwU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5vcmdBcHBTZXR0aW5ncy5zb21lKChvcmdBcHBTZXR0aW5nKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuICghcG9zc2libGVWYWx1ZXMuaW5jbHVkZXMob3JnQXBwU2V0dGluZy50eXBlKSB8fCBcblx0XHRcdFx0XHRcdFx0KHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKG9yZ0FwcFNldHRpbmcudHlwZSkgJiYgXG5cdFx0XHRcdFx0XHRcdG9yZ0FwcFNldHRpbmcuc3RhdHVzICYmIG9yZ0FwcFNldHRpbmcuc3RhdHVzID09ICdJTl9BQ1RJVkUnKSlcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiBhbGxvdztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBhbGxvdztcblx0XHRcdH1cblx0XHR9Y2F0Y2goZXJyb3Ipe1xuXHRcdFx0Y29uc29sZS5lcnJvcihlcnJvcilcblx0XHR9XG5cdH1cblxuXHRjaGVja0N1c3RvbWVyVHlwZUluKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24uY3VzdG9tZXJUeXBlICYmIFxuXHRcdFx0cG9zc2libGVWYWx1ZXMuaW5jbHVkZXModGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24uY3VzdG9tZXJUeXBlKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0N1c3RvbWVyVHlwZU5vdEluKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZiAoIXRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSB8fCAodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24uY3VzdG9tZXJUeXBlICYmIFxuXHRcdFx0IXBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSkpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdGNoZWNrRm9yTm90T3JnU2V0dGluZ3MocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGxldCBhbGxvdyA9IHRydWU7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzICYmIHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5sZW5ndGggPiAwKXtcblx0XHRcdGFsbG93ID0gdGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzLnNvbWUoZnVuY3Rpb24ob3JnU2V0dGluZyl7XG5cdFx0XHRcdHJldHVybiAoIXBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKG9yZ1NldHRpbmcuc2V0dGluZykgfHwgXG5cdFx0XHRcdFx0KHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKG9yZ1NldHRpbmcuc2V0dGluZykgJiYgXG5cdFx0XHRcdFx0b3JnU2V0dGluZy52YWx1ZSAmJiBvcmdTZXR0aW5nLnZhbHVlID09ICdJTl9BQ1RJVkUnKSlcblx0XHRcdFx0ICAgXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBhbGxvdztcblx0XHR9ZWxzZXtcblx0XHRcdHJldHVybiBhbGxvdztcblx0XHR9XG5cdH1cblx0XG5cdGNoZWNrQ29udGV4dFNldHRpbmdzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHR2YXIgYWxsb3cgPSBmYWxzZTtcblx0XHRpZih0aGlzLmFwcERldGFpbHMubmdPcmdTZXR0aW5ncyl7XG5cdFx0XHRmb3IgKGxldCBpdGVtIG9mIHBvc3NpYmxlVmFsdWVzKSB7XG5cdFx0XHRcdGFsbG93ID0gdGhpcy5hcHBEZXRhaWxzLm5nT3JnU2V0dGluZ3NbaXRlbV07XG5cdFx0XHRcdGFsbG93ID0gYWxsb3cgPT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGFsbG93O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gYWxsb3c7XG5cdH1cblxuXHRjaGVja0NvbnRleHRTZXR0aW5nTm90SW4ocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdHZhciBhbGxvdyA9IHRydWU7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLm5nT3JnU2V0dGluZ3Mpe1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHRhbGxvdyA9ICF0aGlzLmFwcERldGFpbHMubmdPcmdTZXR0aW5nc1tpdGVtXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cblx0Y2hlY2tGb3JBY2NUeXBlKG1lbnVJdGVtOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZihtZW51SXRlbVsnYWNjb3VudF90eXBlJ10uaW5kZXhPZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQudHlwZSkgPj0gMCl7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdGlmKG1lbnVJdGVtWydzdWJzY3JpcHRpb25fdHlwZXMnXSl7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNoZWNrRm9yU3Vic2NyaXB0aW9ucyhtZW51SXRlbVsnc3Vic2NyaXB0aW9uX3R5cGVzJ10pXG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tGb3JTcGVjaWZpZWRJZHMocG9zc2libGVWYWx1ZXM6IGFueSAsIGN1cnJlbnRNZW51SXRlbTphbnkgLCBpZDpudW1iZXIpOiBib29sZWFuIHtcblx0XHRpZihwb3NzaWJsZVZhbHVlc1swXS5pZCl7XG5cdFx0XHRmb3IgKGxldCBpdGVtIG9mIHBvc3NpYmxlVmFsdWVzKSB7XG5cdFx0XHRcdGlmKCBpdGVtLmlkID09PSBpZCApe1xuXHRcdFx0XHRcdE9iamVjdC5rZXlzKGl0ZW0pLmZvckVhY2goKGtleSk9PnsgXG5cdFx0XHRcdFx0XHRpZiAoa2V5ICE9ICdpZCcpIHtcblx0XHRcdFx0XHRcdFx0Y3VycmVudE1lbnVJdGVtW2tleV0gPSBpdGVtW2tleV07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnTGluayBjaGFuZ2VkIHRvICcrY3VycmVudE1lbnVJdGVtLmxpbmsrJyBhbmQgcm91dGUgY2hhbmdlZCB0byAnK2N1cnJlbnRNZW51SXRlbS5yb3V0ZSk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdGlmKHBvc3NpYmxlVmFsdWVzLmluZGV4T2YoaWQpID49IDApe1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGVsc2V7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0Y2hlY2tGb3JPcmdXaXRoVXNlclJvbGUocG9zc2libGVWYWx1ZXM6IGFueSAsIGN1cnJlbnRNZW51SXRlbTphbnkgLCBpZDpudW1iZXIpOiBib29sZWFuIHtcblx0XHRsZXQgYWxsb3cgPSB0cnVlO1xuXHRcdGlmIChwb3NzaWJsZVZhbHVlcyAmJiBwb3NzaWJsZVZhbHVlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHR2YXIgZmxhZ0FycmF5ID0gW107XG5cdFx0XHRmb3IgKGxldCBpdGVtIG9mIHBvc3NpYmxlVmFsdWVzKSB7XG5cdFx0XHRcdHZhciBhbGxLZXlzID0gT2JqZWN0LmtleXMoaXRlbSk7XG5cdFx0XHRcdHZhciBmbGFnID0gdGhpcy5jaGVja0FsbENvbmRpdGlvbnMoaXRlbSwgYWxsS2V5cywgYWxsS2V5cylcblx0XHRcdFx0ZmxhZ0FycmF5LnB1c2goZmxhZyk7XG5cdFx0XHR9XG5cdFx0XHRhbGxvdyA9IGZsYWdBcnJheS5pbmNsdWRlcyh0cnVlKSA/IHRydWUgOiBmYWxzZTtcblx0XHRcdFxuXHRcdH1cblx0XHRyZXR1cm4gYWxsb3c7XG5cdH1cblx0Y2hlY2tGb3JTcGVjaWZpZWRJZHNOb3RJbihwb3NzaWJsZVZhbHVlczogYW55ICwgY3VycmVudE1lbnVJdGVtOmFueSAsIGlkOm51bWJlcik6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBwb3NzaWJsZVZhbHVlcy5pbmRleE9mKGlkKSA8IDA7XG5cdH1cblxuXHRjaGVja0ZvclNwZWNpZmllZEFjY291bnRJZHNOb3RJbihwb3NzaWJsZVZhbHVlczogYW55ICwgY3VycmVudE1lbnVJdGVtOmFueSAsIGlkOm51bWJlcik6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBwb3NzaWJsZVZhbHVlcy5pbmRleE9mKGlkKSA8IDA7XG5cdH1cblxuXHRjaGVja0ZvclJvbGVzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZihwb3NzaWJsZVZhbHVlcyAmJiBwb3NzaWJsZVZhbHVlcy5sZW5ndGggPiAwKXtcblx0XHRcdGlmKHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLnJvbGUpID49IDApe1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGVsc2V7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRjaGVja0ZvcnZpc2liaWxpdHlSb2xlc05vdEluKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZihwb3NzaWJsZVZhbHVlcyAmJiBwb3NzaWJsZVZhbHVlcy5sZW5ndGggPiAwKXtcblx0XHRcdGlmKHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLnJvbGUpID49IDApe1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y2hlY2tGb3JIaWRkZW5Vc2VyUm9sZShwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCl7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5yb2xlKSA+PSAwICYmIHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5pc0hpZGRlblVzZXIpe1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRwdWJsaWMgZGlzYWJsZUZvck9yZ3dpdGhSZWFkT25seShwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbntcblx0XHRpZih0aGlzLmFwcERldGFpbHMudXNlckluZm8ucm9sZSA9PT0gJ1JFQURfT05MWScgJiYgcG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQub3JnYW5pemF0aW9uSWQpID49IDApe1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZShyb3V0ZSAsIGFwcGxpY2F0aW9uSWQ9dW5kZWZpbmVkKSB7XG5cdFx0aWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2Yocm91dGUpID09IC0xKSB7XG5cdFx0XHR0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuXHRcdFx0XHRpZiAoYXBwbGljYXRpb25JZCkge1xuXHRcdFx0XHRcdHBhcmFtcyA9IHsuLi5wYXJhbXMsIC4uLmFwcGxpY2F0aW9uSWR9O1x0XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAocm91dGUuaW5kZXhPZignPycpID4gLTEgJiYgcm91dGUuaW5kZXhPZigndXNlcm1nbXQnKSA+IC0xKXtcblx0XHRcdFx0XHRyb3V0ZSA9IHJvdXRlLnNwbGl0KCc/JylbMF07XG5cdFx0XHRcdFx0bGV0IG5ld1FQYXJhbSA9IHsgdXNlcm1nbXQgOiB0cnVlfVxuXHRcdFx0XHRcdHBhcmFtcyA9IHsgLi4ucGFyYW1zICwgLi4ubmV3UVBhcmFtfVxuXHRcdFx0XHR9XG5cdFx0XHRcdGxldCB1cmxUb05hdmlnYXRlID0gdGhpcy51cmxDb250ZXh0U2VydmljZS5wcmVwYXJlVXJsV2l0aFF1ZXJ5UGFyYW1zKHJvdXRlLCBwYXJhbXMpO1xuXHRcdFx0XHR1cmxUb05hdmlnYXRlID0gYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vJHt1cmxUb05hdmlnYXRlfWBcblx0XHRcdFx0Ly8gdXJsVG9OYXZpZ2F0ZSA9IGBodHRwOi8vbG9jYWxob3N0OjMwMDAvJHt1cmxUb05hdmlnYXRlfWBcblx0XHRcdFx0Y29uc29sZS5sb2coJ05hdmlnYXRpbmcgdG8gLSAnLHVybFRvTmF2aWdhdGUpO1xuXHRcdFx0XHR3aW5kb3cub3Blbih1cmxUb05hdmlnYXRlLCAnX3NlbGYnKTtcblx0XHRcdH0pO1xuXHRcdH1cbiAgICB9XG5cdFxuXHRwdWJsaWMgZmV0Y2hLZXlWYWx1ZShrZXk6IHN0cmluZykge1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscyAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQpIHtcblx0XHRcdHJldHVybiAodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50W2tleV0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0XG5cdH1cblxuXHRwdWJsaWMgc2V0QWN0aXZlUmVjb0NvdW50KGNvdW50Om51bWJlcil7XG5cdFx0dGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50WydhY3RpdmVSZWNvbW1lbmRhdGlvbiddID0gY291bnQ7XG5cdH1cblx0XG5cdHB1YmxpYyBpc0hhdmluZ0FueUFjdGl2ZVN1YnMoaWQsc3Vicyx0eXBlKXtcbiAgICBpZihpZCA9PT0gJ2Fkc19hbWF6b25fYXR0cmlidXRpb24nICYmIHRoaXMuY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgdHlwZSwgJ0FNU19BVFRSSUJVVElPTicpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYoaWQgPT09ICdhZHNfYW1hem9uX2RzcCcgJiYgdGhpcy5jaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCB0eXBlLCAnRFNQJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZigoaWQgPT09ICdhZHNfYW1hem9uX2NvbnRlbnQnKSAmJiB0aGlzLmNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIHR5cGUsICdDT05URU5UJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZigoaWQgPT09ICdhZHNfaW5zdGFjYXJ0JykgJiYgdGhpcy5jaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCB0eXBlLCAnSU5TVEFDQVJUJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1lbHNlIGlmKChpZCA9PT0gJ2Fkc19jcml0ZW8nKSAmJiB0aGlzLmNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIHR5cGUsICdDUklURU8nKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9ZWxzZSBpZigoaWQgPT09ICdhZHNfd2FsbWFydCcpICYmIHRoaXMuY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgdHlwZSwgJ1dBTE1BUlQnKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9ZWxzZSBpZihpZCA9PT0gJ2Fkc19kYXRhX3BsYXRmb3JtJ3x8IGlkID09PSAnYW1jLXBsYXRmb3JtLXdlYicgfHwgaWQgPT09ICdhZHNfYW1hem9uX3NlbGxlcicpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fWVsc2UgaWYoaWQgPT09ICdhZHNfYW1hem9uX2FkdmVydGlzaW5nJyB8fCBpZCA9PT0gJ2Fkc192ZW5kb3Jfc2FsZXMnIHx8IGlkID09PSAnYWRzX3NlbGxlcl9zYWxlcycpIHtcbiAgICAgIGZvcihsZXQgc2V0dGluZ3Mgb2Ygc3Vicyl7XG4gICAgICAgIGlmKHNldHRpbmdzLnR5cGUgIT0gdHlwZSAmJiBzZXR0aW5ncy5zdGF0dXMgPT0gXCJBQ1RJVkVcIil7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIFx0fVxuXG5cdHB1YmxpYyBjaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCBhY2NUeXBlICxzdWJUeXBlKSB7XG5cdFx0aWYoc3ViVHlwZSA9PT0gYWNjVHlwZSl7XG5cdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGNvbnN0IGN1cnJlbnRUeXBlU3ViID0gc3Vicy5maWx0ZXIoc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi50eXBlID09PSBzdWJUeXBlKTtcblx0XHRpZihjdXJyZW50VHlwZVN1Yi5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGlmIChjdXJyZW50VHlwZVN1YlswXS5zdGF0dXMgPT09ICdBQ1RJVkUnIHx8IGN1cnJlbnRUeXBlU3ViWzBdLnR5cGUgPT09IGFjY1R5cGUpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGdldEFwcGxpY2F0aW9uSUQoKSB7XG5cdFx0bGV0IHVybEFycmF5ID0gdGhpcy51cmxDb250ZXh0U2VydmljZS5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG5cdFx0bGV0IGN1cnJlbnRSb3V0ZSA9IHVybEFycmF5W3VybEFycmF5Lmxlbmd0aCAtIDFdO1xuXHRcdFxuXHRcdGlmKHRoaXMuY29udGVudEFwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEgKSB7XG5cdFx0XHRyZXR1cm4gXCJhZHNfYW1hem9uX2NvbnRlbnRfY29udGVudF9hbmFseXRpY3NcIjtcblx0XHR9IGVsc2UgaWYodGhpcy5zb3ZBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xKSB7XG5cdFx0XHRyZXR1cm4gXCJhZHNfYW1hem9uX2NvbnRlbnRfc2hhcmVfb2Zfdm9pY2VcIjtcblx0XHR9XG5cdH1cbn0iXX0=
|