@universis/ngx-tables 0.7.26 → 0.7.28
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/bundles/universis-ngx-tables.umd.js +18 -3
- package/bundles/universis-ngx-tables.umd.js.map +1 -1
- package/bundles/universis-ngx-tables.umd.min.js +1 -1
- package/bundles/universis-ngx-tables.umd.min.js.map +1 -1
- package/esm2015/lib/components/advanced-search-form/advanced-search-form.component.js +9 -4
- package/esm2015/lib/components/advanced-table/advanced-table.component.js +6 -1
- package/esm2015/lib/components/advanced-table/advanced-table.formatters.js +6 -1
- package/esm5/lib/components/advanced-search-form/advanced-search-form.component.js +9 -4
- package/esm5/lib/components/advanced-table/advanced-table.component.js +6 -1
- package/esm5/lib/components/advanced-table/advanced-table.formatters.js +6 -1
- package/fesm2015/universis-ngx-tables.js +18 -3
- package/fesm2015/universis-ngx-tables.js.map +1 -1
- package/fesm5/universis-ngx-tables.js +19 -4
- package/fesm5/universis-ngx-tables.js.map +1 -1
- package/lib/components/advanced-search-form/advanced-search-form.component.d.ts +4 -1
- package/lib/components/advanced-table/advanced-table.component.d.ts +3 -0
- package/package.json +1 -1
- package/universis-ngx-tables.metadata.json +1 -1
|
@@ -67,7 +67,12 @@ export class AdvancedColumnFormatter {
|
|
|
67
67
|
if (options.navigationExtras && typeof options.navigationExtras.skipLocationChange !== 'undefined') {
|
|
68
68
|
skipLocationChange = options.navigationExtras.skipLocationChange;
|
|
69
69
|
}
|
|
70
|
+
let fragment;
|
|
71
|
+
if (options.navigationExtras && typeof options.navigationExtras.fragment !== 'undefined') {
|
|
72
|
+
fragment = options.navigationExtras.fragment;
|
|
73
|
+
}
|
|
70
74
|
return router.createUrlTree(commands, {
|
|
75
|
+
fragment,
|
|
71
76
|
relativeTo: activatedRoute,
|
|
72
77
|
queryParams,
|
|
73
78
|
replaceUrl,
|
|
@@ -419,4 +424,4 @@ export class LanguageFormatter extends AdvancedColumnFormatter {
|
|
|
419
424
|
}
|
|
420
425
|
}
|
|
421
426
|
|
|
422
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUuZm9ybWF0dGVycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLmZvcm1hdHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxPQUFPLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBb0IsTUFBTSxFQUFXLE1BQU0saUJBQWlCLENBQUM7QUFFcEYsTUFBTTtJQWtCRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVk7UUFDakMsSUFBSSxNQUFNLEdBQUcsdUJBQXVCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRTtZQUNoQyxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBQ0QsTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4Qix1QkFBdUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4RCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBSVMsYUFBYSxDQUFDLElBQVMsRUFBRSxPQUFpRTtRQUNsRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25DLE1BQU0sY0FBYyxHQUFtQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6RSxNQUFNLE1BQU0sR0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNoRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtvQkFDL0IsT0FBTyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3hEO2dCQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtvQkFDbkIsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO29CQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3QkFDM0MsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRTs0QkFDOUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDcEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dDQUN6QixNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7b0NBQ3pDLFVBQVUsRUFBRSxJQUFJO29DQUNoQixZQUFZLEVBQUUsSUFBSTtvQ0FDbEIsUUFBUSxFQUFFLElBQUk7b0NBQ2QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3Q0FDdEIsT0FBTyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7b0NBQ25ELENBQUMsQ0FBQztpQ0FDSCxDQUFDLENBQUM7NkJBQ0o7aUNBQU07Z0NBQ0wsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO29DQUN6QyxVQUFVLEVBQUUsSUFBSTtvQ0FDaEIsWUFBWSxFQUFFLElBQUk7b0NBQ2xCLFFBQVEsRUFBRSxJQUFJO29DQUNkLEtBQUssRUFBRSxNQUFNO2lDQUNkLENBQUMsQ0FBQzs2QkFDSjt5QkFDRjtvQkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDSCxPQUFPO3dCQUNMLE9BQU8sRUFBRSxjQUFjO3FCQUN4QixDQUFDO2lCQUNIO2dCQUNELE9BQU8sT0FBTyxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFO2dCQUNwRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDNUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDdkQsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEUsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUNELElBQUksT0FBTyxDQUFDLGdCQUFnQixJQUFJLE9BQU8sT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsS0FBSyxXQUFXLEVBQUU7Z0JBQzFGLFVBQVUsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDO2FBQ2xEO1lBQ0QsSUFBSSxrQkFBa0IsR0FBRyxLQUFLLENBQUM7WUFDL0IsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLElBQUksT0FBTyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEtBQUssV0FBVyxFQUFFO2dCQUNsRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUM7YUFDbEU7WUFFRCxPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUNsQztnQkFDRSxVQUFVLEVBQUUsY0FBYztnQkFDMUIsV0FBVztnQkFDWCxVQUFVO2dCQUNWLGtCQUFrQjthQUNuQixDQUNGLENBQUM7U0FDSDtJQUNILENBQUM7O0FBM0ZhLHFDQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7QUFrR3pFLE1BQU0sOEJBQStCLFNBQVEsdUJBQXVCO0lBQzNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJO1FBQ2pDLGFBQWE7UUFDYixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtZQUN6QixPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDakQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztDQUNGO0FBRUQsTUFBTSxzQkFBdUIsU0FBUSx1QkFBdUI7SUFDbkQsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUk7UUFDakMsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxhQUFhO1FBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELHFCQUFxQjtRQUNyQixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ2xDLFdBQVcsRUFBRSxpQkFBaUI7U0FDL0IsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkIsbUJBQW1CO1FBQ25CLElBQUksVUFBa0IsQ0FBQztRQUN2QixJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFFO1lBQzVCLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDcEY7YUFBTTtZQUNMLFVBQVUsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxhQUFhLENBQUMsV0FBVyxFQUFFO1lBQzdCLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdEY7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM5QyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0QsT0FBTyxhQUFhLGFBQWEsQ0FBQyxXQUFXLFlBQVksV0FBVyxZQUFZLFVBQVUsS0FBSyxVQUFVLE1BQU0sQ0FBQztTQUNqSDtRQUNELG9CQUFvQjtRQUNwQixNQUFNLElBQUksR0FBRyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sYUFBYSxhQUFhLENBQUMsV0FBVyxZQUFZLFdBQVcsV0FBVyxJQUFJLEtBQUssVUFBVSxNQUFNLENBQUM7SUFDM0csQ0FBQztJQUNEO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0NBQ0Y7QUFFRCxNQUFNLG9CQUFxQixTQUFRLHVCQUF1QjtJQUNqRCxNQUFNLENBQUMsSUFBUyxFQUFFLElBQVksRUFBRSxHQUFRLEVBQUUsSUFBUztRQUN4RCxhQUFhO1FBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDekIsT0FBTyxZQUFZLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDO1NBQzlGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7Q0FDRjtBQUVELE1BQU0sMEJBQTJCLFNBQVEsdUJBQXVCO0lBRXZELE1BQU0sQ0FBQyxJQUFTLEVBQUUsSUFBWSxFQUFFLEdBQVEsRUFBRSxJQUFTO1FBQ3hELGFBQWE7UUFDYixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtZQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7b0JBQ3BCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLFNBQVMsS0FBSyxFQUFFO2lCQUN0QyxDQUFDLENBQUM7Z0JBQ0gsS0FBSyxJQUFJLENBQUMsQ0FBQzthQUNaO1lBQ0QsdUNBQXVDO1lBQ3ZDLE9BQU8sa0RBQWtELElBQUk7Z0RBQ25CLElBQUk7Ozs7cUZBSWlDLElBQUk7dUJBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDakMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtvQkFDeEIsT0FBTyxzQ0FBc0MsQ0FBQztpQkFDL0M7Z0JBQ0QsSUFBSSxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFO29CQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3pELE9BQU8saUJBQWlCLENBQUMsQ0FBQyxJQUFJLGlDQUFpQyxPQUFPLENBQUMsUUFBUSxFQUFFOzhCQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDOytCQUNuRCxDQUFDO2lCQUN2QjtnQkFDRCxPQUFPLGlCQUFpQixDQUFDLENBQUMsSUFBSSxpQ0FBaUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUM7NEJBQ3hGLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7NkJBQ25ELENBQUM7WUFDeEIsQ0FBQyxDQUFDO2lCQUNHLElBQUksQ0FBQyxFQUFFLENBQUM7O3VCQUVJLENBQUM7U0FDbkI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUNNLFdBQVcsQ0FBQyxJQUFTLEVBQUUsUUFBYSxFQUFFLE9BQVksRUFBRSxRQUFnQixFQUFFLFFBQWdCO1FBQzNGLGdDQUFnQztJQUNsQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLDRCQUE2QixTQUFRLHVCQUF1QjtJQUV6RCxNQUFNLENBQUMsSUFBUyxFQUFFLElBQVksRUFBRSxHQUFRLEVBQUUsSUFBUztRQUN4RCxhQUFhO1FBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDbkMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO29CQUNwQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxTQUFTLEtBQUssRUFBRTtpQkFDdEMsQ0FBQyxDQUFDO2dCQUNILEtBQUssSUFBSSxDQUFDLENBQUM7YUFDWjtZQUNELElBQUksVUFBa0IsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3ZELHlDQUF5QztnQkFDekMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2hELGVBQWU7b0JBQ2YsVUFBVSxHQUFHLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNuRjtxQkFBTTtvQkFDTCx5QkFBeUI7b0JBQ3pCLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUN6RjthQUNGO1lBQ0QsSUFBSSxXQUFtQixDQUFDO1lBQ3hCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRTtnQkFDeEQsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUNyRztZQUNELE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGVBQWUsQ0FBQztZQUM5Rix1Q0FBdUM7WUFDdkMsT0FBTyxrREFBa0QsSUFBSTtnQ0FDbkMsV0FBVyxtREFBbUQsV0FBVzsrQ0FDMUQsSUFBSTt3QkFDM0IsVUFBVTs7cUZBRW1ELElBQUk7dUJBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDakMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtvQkFDeEIsT0FBTyxzQ0FBc0MsQ0FBQztpQkFDL0M7Z0JBQ0QsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO29CQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMzQyxPQUFPLGtDQUFrQyxPQUFPLENBQUMsUUFBUSxFQUFFOzhCQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDOytCQUNuRCxDQUFDO2lCQUN2QjtnQkFDRCxPQUFPLGtDQUFrQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQzs0QkFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzs2QkFDbkQsQ0FBQztZQUN4QixDQUFDLENBQUM7aUJBQ0csSUFBSSxDQUFDLEVBQUUsQ0FBQzs7dUJBRUksQ0FBQztTQUNuQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBQ00sV0FBVyxDQUFDLElBQVMsRUFBRSxRQUFhLEVBQUUsT0FBWSxFQUFFLFFBQWdCLEVBQUUsUUFBZ0I7UUFDM0YsZ0NBQWdDO0lBQ2xDLENBQUM7Q0FDRjtBQUVELE1BQU0saUNBQWtDLFNBQVEsdUJBQXVCO0lBRTlELE1BQU0sQ0FBQyxJQUFTLEVBQUUsSUFBWSxFQUFFLEdBQVEsRUFBRSxJQUFTO1FBQ3hELGFBQWE7UUFDYixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtZQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7b0JBQ3BCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLFNBQVMsS0FBSyxFQUFFO2lCQUN0QyxDQUFDLENBQUM7Z0JBQ0gsS0FBSyxJQUFJLENBQUMsQ0FBQzthQUNaO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDeEIsT0FBTzthQUNSO1lBQ0QsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksZUFBZSxDQUFDO1lBQzlGLHVDQUF1QztZQUN2QyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsSUFBSSxpQkFBeUIsQ0FBQztZQUM5QixJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFO2dCQUMzQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN2RTtpQkFBTTtnQkFDTCxpQkFBaUIsR0FBRyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQy9FO1lBQ0QsT0FBTzs4Q0FDaUMsV0FBVyxXQUFXLGlCQUFpQjt3QkFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQzs7bURBRXJDLFdBQVc7OzhDQUVoQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQzs7cUZBRXZCLElBQUk7dUJBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDakMsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEdBQUcsRUFBRTtvQkFDbkIsT0FBTyxzQ0FBc0MsQ0FBQztpQkFDL0M7Z0JBQ0QsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO29CQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMzQyxPQUFPLGtDQUFrQyxPQUFPLENBQUMsUUFBUSxFQUFFOzhCQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDOytCQUNuRCxDQUFDO2lCQUN2QjtnQkFDRCxPQUFPLGtDQUFrQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQzs0QkFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzs2QkFDbkQsQ0FBQztZQUN4QixDQUFDLENBQUM7aUJBQ0csSUFBSSxDQUFDLEVBQUUsQ0FBQzs7dUJBRUksQ0FBQztTQUNuQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBQ00sV0FBVyxDQUFDLElBQVMsRUFBRSxRQUFhLEVBQUUsT0FBWSxFQUFFLFFBQWdCLEVBQUUsUUFBZ0I7UUFDM0YsZ0NBQWdDO0lBQ2xDLENBQUM7Q0FDRjtBQUVELE1BQU0seUJBQTBCLFNBQVEsdUJBQXVCO0lBQ3RELE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJO1FBQ2pDLGFBQWE7UUFDYixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtZQUN6QixNQUFNLElBQUksR0FBRztTQUNWLElBQUksQ0FBQyxHQUFHLHFCQUFxQixJQUFJLENBQUMsR0FBRyxrQkFBa0IsQ0FBQztZQUMzRCxPQUFPLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0NBQ0Y7QUFFRCxNQUFNLHdCQUF5QixTQUFRLHVCQUF1QjtJQUNyRCxNQUFNLENBQUMsSUFBUyxFQUFFLElBQVksRUFBRSxHQUFRLEVBQUUsSUFBUztRQUN4RCxhQUFhO1FBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDekIsT0FBTyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7Q0FDRjtBQUVELE1BQU0seUJBQTBCLFNBQVEsdUJBQXVCO0lBRXRELE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7Q0FDRjtBQU1ELE1BQU0sMkJBQTRCLFNBQVEsdUJBQXVCO0lBQ3hELE1BQU0sQ0FBQyxJQUFTLEVBQUUsSUFBWSxFQUFFLEdBQVEsRUFBRSxJQUFTO1FBQ3hELGFBQWE7UUFDYixNQUFNLE1BQU0sR0FBaUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9FLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FDaEQsdUJBQXVCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbEQsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUMsQ0FBQztTQUNQO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7Q0FDRjtBQUVELE1BQU0sd0JBQXlCLFNBQVEsdUJBQXVCO0lBQ3JELE1BQU0sQ0FBQyxJQUFTLEVBQUUsSUFBWSxFQUFFLEdBQVEsRUFBRSxJQUFTO1FBQ3hELGFBQWE7UUFDYixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtZQUN6QixNQUFNLFFBQVEsR0FBYSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pGLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLDhDQUE4QyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekYsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDdEU7WUFDRCxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0NBQ0Y7QUFFRCxNQUFNLHVCQUF3QixTQUFRLHVCQUF1QjtJQUNwRCxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSTtRQUNqQyxhQUFhO1FBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDekIsb0JBQW9CO1lBQ3BCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7Z0JBQzNDLCtCQUErQjtnQkFDL0IsTUFBTSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7Z0JBQ3hELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDdEMsTUFBTSxNQUFNLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNuRSxNQUFNLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBQzdDLHNDQUFzQztvQkFDdEMsSUFBSSxFQUFFLEVBQUUsS0FBSyxJQUFJLEVBQUU7d0JBQ2pCLE9BQU8sZ0JBQWdCLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztxQkFDOUM7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztDQUNGO0FBQ0QsTUFBTSx3QkFBeUIsU0FBUSx1QkFBdUI7SUFDckQsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUk7UUFDakMsSUFBSSxJQUFJLEVBQUU7WUFDUixPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdGVtcGxhdGUsIGF0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vYWR2YW5jZWQtdGFibGUuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0ICogYXMgSVNPNjM5MSBmcm9tICdpc28tNjM5LTEvYnVpbGQnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlciwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5kZWNsYXJlIHZhciBqUXVlcnk6IGFueTtcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlciBpbXBsZW1lbnRzIFRhYmxlQ29sdW1uQ29uZmlndXJhdGlvbiB7XG5cbiAgcHVibGljIHN0YXRpYyB0ZW1wbGF0ZUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIChkYXRhOiBhbnkpID0+IHN0cmluZz4oKTtcblxuICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yO1xuICBwdWJsaWMgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBkZWZhdWx0Q29udGVudDogc3RyaW5nO1xuICBwdWJsaWMgZm9ybWF0U3RyaW5nOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtYXR0ZXI6IHN0cmluZztcbiAgcHVibGljIGhpZGRlbjogYm9vbGVhbjtcbiAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgcHVibGljIG9yZGVyOiBzdHJpbmc7XG4gIHB1YmxpYyBwcm9wZXJ0eTogc3RyaW5nO1xuICBwdWJsaWMgc29ydGFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBwdWJsaWMgZm9ybWF0T3B0aW9ucz86IGFueTtcbiAgcHVibGljIGFjdGlvbnM/OiBBcnJheTxhbnk+O1xuXG4gIHB1YmxpYyBzdGF0aWMgdGVtcGxhdGUoZXhwcjogc3RyaW5nKTogKGRhdGE6IGFueSkgPT4gc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0ID0gQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGVDYWNoZS5nZXQoZXhwcik7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJlc3VsdCA9IHRlbXBsYXRlKGV4cHIpO1xuICAgIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlQ2FjaGUuc2V0KGV4cHIsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCByZW5kZXIoZGF0YTogYW55LCB0eXBlOiBzdHJpbmcsIHJvdzogYW55LCBtZXRhOiBhbnkpOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVVybFRyZWUoZGF0YTogYW55LCBvcHRpb25zOiB7IGNvbW1hbmRzOiBhbnlbXSwgbmF2aWdhdGlvbkV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMgfSk6IFVybFRyZWUge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMuY29tbWFuZHMpKSB7XG4gICAgICBjb25zdCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUgPSB0aGlzLmluamVjdG9yLmdldChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICBjb25zdCByb3V0ZXI6IFJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgICBjb25zdCBjb21tYW5kcyA9IG9wdGlvbnMuY29tbWFuZHMubWFwKChjb21tYW5kKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29tbWFuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUoY29tbWFuZCkoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbW1hbmQub3V0bGV0cykge1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmRPdXRsZXRzID0ge307XG4gICAgICAgICAgT2JqZWN0LmtleXMoY29tbWFuZC5vdXRsZXRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY29tbWFuZC5vdXRsZXRzLCBrZXkpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG91dGxldCA9IGNvbW1hbmQub3V0bGV0c1trZXldO1xuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvdXRsZXQpKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbW1hbmRPdXRsZXRzLCBrZXksIHtcbiAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBvdXRsZXQubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZSh4KShkYXRhKTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb21tYW5kT3V0bGV0cywga2V5LCB7XG4gICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogb3V0bGV0LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG91dGxldHM6IGNvbW1hbmRPdXRsZXRzLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbW1hbmQ7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge307XG4gICAgICBsZXQgcmVwbGFjZVVybCA9IHRydWU7XG4gICAgICBpZiAob3B0aW9ucy5uYXZpZ2F0aW9uRXh0cmFzICYmIG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcy5xdWVyeVBhcmFtcykge1xuICAgICAgICBPYmplY3Qua2V5cyhvcHRpb25zLm5hdmlnYXRpb25FeHRyYXMucXVlcnlQYXJhbXMpLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcy5xdWVyeVBhcmFtc1trZXldO1xuICAgICAgICAgIHF1ZXJ5UGFyYW1zW2tleV0gPSBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZSh0ZXh0KShkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5uYXZpZ2F0aW9uRXh0cmFzICYmIHR5cGVvZiBvcHRpb25zLm5hdmlnYXRpb25FeHRyYXMucmVwbGFjZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmVwbGFjZVVybCA9IG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcy5yZXBsYWNlVXJsO1xuICAgICAgfVxuICAgICAgbGV0IHNraXBMb2NhdGlvbkNoYW5nZSA9IGZhbHNlO1xuICAgICAgaWYgKG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcyAmJiB0eXBlb2Ygb3B0aW9ucy5uYXZpZ2F0aW9uRXh0cmFzLnNraXBMb2NhdGlvbkNoYW5nZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgc2tpcExvY2F0aW9uQ2hhbmdlID0gb3B0aW9ucy5uYXZpZ2F0aW9uRXh0cmFzLnNraXBMb2NhdGlvbkNoYW5nZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKGNvbW1hbmRzLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsYXRpdmVUbzogYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICAgICAgcmVwbGFjZVVybCxcbiAgICAgICAgICBza2lwTG9jYXRpb25DaGFuZ2UsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25BZHZhbmNlZENvbHVtbkFmdGVyUmVuZGVyIHtcbiAgYWZ0ZXJSZW5kZXIoY2VsbDogYW55LCBjZWxsRGF0YTogYW55LCByb3dEYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgTmVzdGVkUHJvcGVydHlGb3JtYXR0ZXIgZXh0ZW5kcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlciB7XG4gIHB1YmxpYyByZW5kZXIoZGF0YSwgdHlwZSwgcm93LCBtZXRhKSB7XG4gICAgLy8gZ2V0IGNvbHVtblxuICAgIGNvbnN0IGNvbHVtbiA9IG1ldGEuc2V0dGluZ3MuYW9Db2x1bW5zW21ldGEuY29sXTtcbiAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5kYXRhKSB7XG4gICAgICByZXR1cm4gYXQocm93LCBjb2x1bW4uZGF0YS5yZXBsYWNlKC9cXC8vZywgJy4nKSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1dHRvbkZvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyIHtcbiAgcHVibGljIHJlbmRlcihkYXRhLCB0eXBlLCByb3csIG1ldGEpIHtcbiAgICBpZiAoZGF0YSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIC8vIGdldCBjb2x1bW5cbiAgICBjb25zdCBjb2x1bW4gPSBtZXRhLnNldHRpbmdzLmFvQ29sdW1uc1ttZXRhLmNvbF07XG4gICAgLy8gZ2V0IGZvcm1hdCBvcHRpb25zXG4gICAgY29uc3QgZm9ybWF0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgYnV0dG9uQ2xhc3M6ICdidG4gYnRuLWRlZmF1bHQnLFxuICAgIH0sIHRoaXMuZm9ybWF0T3B0aW9ucyk7XG4gICAgLy8gZ2V0IHRleHQgY29udGVudFxuICAgIGxldCBidXR0b25UZXh0OiBzdHJpbmc7XG4gICAgbGV0IGJ1dHRvblRpdGxlID0gJyc7XG4gICAgaWYgKGZvcm1hdE9wdGlvbnMuYnV0dG9uVGV4dCkge1xuICAgICAgYnV0dG9uVGV4dCA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoZm9ybWF0T3B0aW9ucy5idXR0b25UZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnV0dG9uVGV4dCA9IGZvcm1hdE9wdGlvbnMuYnV0dG9uQ29udGVudDtcbiAgICB9XG4gICAgaWYgKGZvcm1hdE9wdGlvbnMuYnV0dG9uVGl0bGUpIHtcbiAgICAgIGJ1dHRvblRpdGxlID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudChmb3JtYXRPcHRpb25zLmJ1dHRvblRpdGxlKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5mb3JtYXRPcHRpb25zLmNvbW1hbmRzKSkge1xuICAgICAgbGV0IHJvdXRlckxpbmsgPSB0aGlzLmNyZWF0ZVVybFRyZWUocm93LCB0aGlzLmZvcm1hdE9wdGlvbnMpO1xuICAgICAgcmV0dXJuIGA8YSBjbGFzcz1cIiR7Zm9ybWF0T3B0aW9ucy5idXR0b25DbGFzc31cIiB0aXRsZT1cIiR7YnV0dG9uVGl0bGV9XCIgaHJlZj1cIiMke3JvdXRlckxpbmt9XCI+JHtidXR0b25UZXh0fTwvYT5gO1xuICAgIH1cbiAgICAvLyBhbmQgcmV0dXJuIGJ1dHRvblxuICAgIGNvbnN0IGhyZWYgPSBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZSh0aGlzLmZvcm1hdFN0cmluZykocm93KTtcbiAgICByZXR1cm4gYDxhIGNsYXNzPVwiJHtmb3JtYXRPcHRpb25zLmJ1dHRvbkNsYXNzfVwiIHRpdGxlPVwiJHtidXR0b25UaXRsZX1cIiBocmVmPVwiJHtocmVmfVwiPiR7YnV0dG9uVGV4dH08L2E+YDtcbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5rRm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nLCByb3c6IGFueSwgbWV0YTogYW55KTogYW55IHtcbiAgICAvLyBnZXQgY29sdW1uXG4gICAgY29uc3QgY29sdW1uID0gbWV0YS5zZXR0aW5ncy5hb0NvbHVtbnNbbWV0YS5jb2xdO1xuICAgIGlmIChjb2x1bW4gJiYgY29sdW1uLmRhdGEpIHtcbiAgICAgIHJldHVybiBgPGEgaHJlZj1cIiR7KEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKHRoaXMuZm9ybWF0U3RyaW5nKShyb3cpKX1cIj4ke2RhdGF9PC9hPmA7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkxpbmtGb3JtYXR0ZXIgZXh0ZW5kcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlclxuICBpbXBsZW1lbnRzIE9uQWR2YW5jZWRDb2x1bW5BZnRlclJlbmRlciB7XG4gIHB1YmxpYyByZW5kZXIoZGF0YTogYW55LCB0eXBlOiBzdHJpbmcsIHJvdzogYW55LCBtZXRhOiBhbnkpOiBhbnkge1xuICAgIC8vIGdldCBjb2x1bW5cbiAgICBjb25zdCBjb2x1bW4gPSBtZXRhLnNldHRpbmdzLmFvQ29sdW1uc1ttZXRhLmNvbF07XG5cbiAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5kYXRhKSB7XG4gICAgICBjb25zdCBhY3Rpb25zID0gdGhpcy5hY3Rpb25zIHx8IFtdO1xuICAgICAgbGV0IGluZGV4ID0gMTtcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpb24sIHtcbiAgICAgICAgICBuYW1lOiBhY3Rpb24ubmFtZSB8fCBgYWN0aW9uJHtpbmRleH1gLFxuICAgICAgICB9KTtcbiAgICAgICAgaW5kZXggKz0gMTtcbiAgICAgIH1cbiAgICAgIC8vIHJldHVybiB0aGUgZHJvcGRvd24gbWVudSB3aXRoIDMgZG90c1xuICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSdkcm9wZG93biBkZXRhaWxzLWNvbnRyb2wnIGRhdGEtaWQ9JyR7ZGF0YX0nIGRhdGEtdHlwZT0nc3R1ZGVudCcgPlxuICAgICAgICAgICAgICAgICAgICA8YSBpZD1cImRyb3Bkb3duTWVudUJ1dHRvbi0ke2RhdGF9XCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhLTJ4IHRleHQtZG90c1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duTWVudUJ1dHRvbi0ke2RhdGF9XCI+XG4gICAgICAgICAgICAgICAgICAgICAke2FjdGlvbnMubWFwKCh4KSA9PiB7XG4gICAgICAgIGlmICh4LnR5cGUgPT09ICdkaXZpZGVyJykge1xuICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5gO1xuICAgICAgICB9XG4gICAgICAgIGlmICh4LmZvcm1hdE9wdGlvbnMgJiYgeC5mb3JtYXRPcHRpb25zLmNvbW1hbmRzKSB7XG4gICAgICAgICAgY29uc3QgdXJsVHJlZSA9IHRoaXMuY3JlYXRlVXJsVHJlZShyb3csIHguZm9ybWF0T3B0aW9ucyk7XG4gICAgICAgICAgcmV0dXJuIGA8YSBkYXRhLW5hbWU9JyR7eC5uYW1lfScgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiR7dXJsVHJlZS50b1N0cmluZygpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudCh4LnRpdGxlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPmA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGA8YSBkYXRhLW5hbWU9JyR7eC5uYW1lfScgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiR7QWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUoeC5ocmVmKShyb3cpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoeC50aXRsZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+YDtcbiAgICAgIH0pXG4gICAgICAgICAgLmpvaW4oJycpfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgcHVibGljIGFmdGVyUmVuZGVyKGNlbGw6IGFueSwgY2VsbERhdGE6IGFueSwgcm93RGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gYXNzaWduIGJvb3RzdHJhcCBkcm9wZG93biAoPylcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uQnV0dG9uRm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXJcbiAgaW1wbGVtZW50cyBPbkFkdmFuY2VkQ29sdW1uQWZ0ZXJSZW5kZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nLCByb3c6IGFueSwgbWV0YTogYW55KTogYW55IHtcbiAgICAvLyBnZXQgY29sdW1uXG4gICAgY29uc3QgY29sdW1uID0gbWV0YS5zZXR0aW5ncy5hb0NvbHVtbnNbbWV0YS5jb2xdO1xuXG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4uZGF0YSkge1xuICAgICAgY29uc3QgYWN0aW9ucyA9IHRoaXMuYWN0aW9ucyB8fCBbXTtcbiAgICAgIGxldCBpbmRleCA9IDE7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oYWN0aW9uLCB7XG4gICAgICAgICAgbmFtZTogYWN0aW9uLm5hbWUgfHwgYGFjdGlvbiR7aW5kZXh9YCxcbiAgICAgICAgfSk7XG4gICAgICAgIGluZGV4ICs9IDE7XG4gICAgICB9XG4gICAgICBsZXQgYnV0dG9uVGV4dDogc3RyaW5nO1xuICAgICAgaWYgKHRoaXMuZm9ybWF0T3B0aW9ucyAmJiB0aGlzLmZvcm1hdE9wdGlvbnMuYnV0dG9uVGV4dCkge1xuICAgICAgICAvLyBpZiBidXR0b24gdGV4dCBpcyBhIGxpdGVyYWwgZXhwcmVzc2lvblxuICAgICAgICBpZiAodGhpcy5mb3JtYXRPcHRpb25zLmJ1dHRvblRleHQuaW5jbHVkZXMoJyR7JykpIHtcbiAgICAgICAgICAvLyB1c2UgdGVtcGxhdGVcbiAgICAgICAgICBidXR0b25UZXh0ID0gQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUodGhpcy5mb3JtYXRPcHRpb25zLmJ1dHRvblRleHQpKHJvdyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gb3RoZXJ3aXNlIHRyYW5zbGF0ZSBpdFxuICAgICAgICAgIGJ1dHRvblRleHQgPSB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KHRoaXMuZm9ybWF0T3B0aW9ucy5idXR0b25UZXh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IGJ1dHRvblRpdGxlOiBzdHJpbmc7XG4gICAgICBpZiAodGhpcy5mb3JtYXRPcHRpb25zICYmIHRoaXMuZm9ybWF0T3B0aW9ucy5idXR0b25UaXRsZSkge1xuICAgICAgICBidXR0b25UaXRsZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQodGhpcy5mb3JtYXRPcHRpb25zLmJ1dHRvblRidXR0b25UaXRsZWV4dCk7XG4gICAgICB9XG4gICAgICBjb25zdCBidXR0b25DbGFzcyA9ICh0aGlzLmZvcm1hdE9wdGlvbnMgJiYgdGhpcy5mb3JtYXRPcHRpb25zLmJ1dHRvbkNsYXNzKSB8fCAnYnRuIGJ0bi1saWdodCc7XG4gICAgICAvLyByZXR1cm4gdGhlIGRyb3Bkb3duIG1lbnUgd2l0aCAzIGRvdHNcbiAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0nZHJvcGRvd24gZGV0YWlscy1jb250cm9sJyBkYXRhLWlkPScke2RhdGF9Jz5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCIke2J1dHRvbkNsYXNzfSBkcm9wZG93bi10b2dnbGVcIiBocmVmPVwiI1wiIHJvbGU9XCJidXR0b25cIiB0aXRsZT1cIiR7YnV0dG9uVGl0bGV9XCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImRyb3Bkb3duTWVudUJ1dHRvbi0ke2RhdGF9XCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgJHtidXR0b25UZXh0fVxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25NZW51QnV0dG9uLSR7ZGF0YX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICR7YWN0aW9ucy5tYXAoKHgpID0+IHtcbiAgICAgICAgaWYgKHgudHlwZSA9PT0gJ2RpdmlkZXInKSB7XG4gICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PmA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHguY29tbWFuZHMpIHtcbiAgICAgICAgICBjb25zdCB1cmxUcmVlID0gdGhpcy5jcmVhdGVVcmxUcmVlKHJvdywgeCk7XG4gICAgICAgICAgcmV0dXJuIGA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiJHt1cmxUcmVlLnRvU3RyaW5nKCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KHgudGl0bGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIke0FkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKHguaHJlZikocm93KX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KHgudGl0bGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPmA7XG4gICAgICB9KVxuICAgICAgICAgIC5qb2luKCcnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG4gIHB1YmxpYyBhZnRlclJlbmRlcihjZWxsOiBhbnksIGNlbGxEYXRhOiBhbnksIHJvd0RhdGE6IGFueSwgcm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIC8vIGFzc2lnbiBib290c3RyYXAgZHJvcGRvd24gKD8pXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvblNwbGl0QnV0dG9uRm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXJcbiAgaW1wbGVtZW50cyBPbkFkdmFuY2VkQ29sdW1uQWZ0ZXJSZW5kZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nLCByb3c6IGFueSwgbWV0YTogYW55KTogYW55IHtcbiAgICAvLyBnZXQgY29sdW1uXG4gICAgY29uc3QgY29sdW1uID0gbWV0YS5zZXR0aW5ncy5hb0NvbHVtbnNbbWV0YS5jb2xdO1xuXG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4uZGF0YSkge1xuICAgICAgY29uc3QgYWN0aW9ucyA9IHRoaXMuYWN0aW9ucyB8fCBbXTtcbiAgICAgIGxldCBpbmRleCA9IDE7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oYWN0aW9uLCB7XG4gICAgICAgICAgbmFtZTogYWN0aW9uLm5hbWUgfHwgYGFjdGlvbiR7aW5kZXh9YCxcbiAgICAgICAgfSk7XG4gICAgICAgIGluZGV4ICs9IDE7XG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgYnV0dG9uQ2xhc3MgPSAodGhpcy5mb3JtYXRPcHRpb25zICYmIHRoaXMuZm9ybWF0T3B0aW9ucy5idXR0b25DbGFzcykgfHwgJ2J0biBidG4tbGlnaHQnO1xuICAgICAgLy8gcmV0dXJuIHRoZSBkcm9wZG93biBtZW51IHdpdGggMyBkb3RzXG4gICAgICBjb25zdCBkZWZhdWx0QWN0aW9uID0gYWN0aW9uc1swXTtcbiAgICAgIGxldCBkZWZhdWx0QWN0aW9uSHJlZjogc3RyaW5nO1xuICAgICAgaWYgKGRlZmF1bHRBY3Rpb24gJiYgZGVmYXVsdEFjdGlvbi5jb21tYW5kcykge1xuICAgICAgICBkZWZhdWx0QWN0aW9uSHJlZiA9IHRoaXMuY3JlYXRlVXJsVHJlZShyb3csIGRlZmF1bHRBY3Rpb24pLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZhdWx0QWN0aW9uSHJlZiA9IEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKGRlZmF1bHRBY3Rpb24uaHJlZikocm93KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8YSB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCIke2J1dHRvbkNsYXNzfVwiIGhyZWY9XCIke2RlZmF1bHRBY3Rpb25IcmVmfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudChkZWZhdWx0QWN0aW9uLnRpdGxlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIiR7YnV0dG9uQ2xhc3N9IGRyb3Bkb3duLXRvZ2dsZSBkcm9wZG93bi10b2dnbGUtc3BsaXRcIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPiR7dGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudCgnVG9nZ2xlIERyb3Bkb3duJyl9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVCdXR0b24tJHtkYXRhfVwiPlxuICAgICAgICAgICAgICAgICAgICAgJHthY3Rpb25zLm1hcCgoeCkgPT4ge1xuICAgICAgICBpZiAoeC50aXRsZSA9PT0gJy0nKSB7XG4gICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PmA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHguY29tbWFuZHMpIHtcbiAgICAgICAgICBjb25zdCB1cmxUcmVlID0gdGhpcy5jcmVhdGVVcmxUcmVlKHJvdywgeCk7XG4gICAgICAgICAgcmV0dXJuIGA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiJHt1cmxUcmVlLnRvU3RyaW5nKCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KHgudGl0bGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIke0FkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKHguaHJlZikocm93KX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KHgudGl0bGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPmA7XG4gICAgICB9KVxuICAgICAgICAgIC5qb2luKCcnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG4gIHB1YmxpYyBhZnRlclJlbmRlcihjZWxsOiBhbnksIGNlbGxEYXRhOiBhbnksIHJvd0RhdGE6IGFueSwgcm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIC8vIGFzc2lnbiBib290c3RyYXAgZHJvcGRvd24gKD8pXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlbGVjdFJvd0Zvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyIHtcbiAgcHVibGljIHJlbmRlcihkYXRhLCB0eXBlLCByb3csIG1ldGEpIHtcbiAgICAvLyBnZXQgY29sdW1uXG4gICAgY29uc3QgY29sdW1uID0gbWV0YS5zZXR0aW5ncy5hb0NvbHVtbnNbbWV0YS5jb2xdO1xuICAgIGlmIChjb2x1bW4gJiYgY29sdW1uLmRhdGEpIHtcbiAgICAgIGNvbnN0IF90cGwgPSBgPGlucHV0IGNsYXNzPVwiY2hlY2tib3ggY2hlY2tib3gtdGhlbWVcIiB0eXBlPVwiY2hlY2tib3hcIlxuIGlkPVwicy0ke21ldGEucm93fVwiIC8+PGxhYmVsIGZvcj1cInMtJHttZXRhLnJvd31cIj4mbmJzcDs8L2xhYmVsPmA7XG4gICAgICByZXR1cm4gQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUoX3RwbCkocm93KTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVGb3JtYXR0ZXIgZXh0ZW5kcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlciB7XG4gIHB1YmxpYyByZW5kZXIoZGF0YTogYW55LCB0eXBlOiBzdHJpbmcsIHJvdzogYW55LCBtZXRhOiBhbnkpOiBhbnkge1xuICAgIC8vIGdldCBjb2x1bW5cbiAgICBjb25zdCBjb2x1bW4gPSBtZXRhLnNldHRpbmdzLmFvQ29sdW1uc1ttZXRhLmNvbF07XG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4uZGF0YSkge1xuICAgICAgcmV0dXJuIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKHRoaXMuZm9ybWF0U3RyaW5nKShyb3cpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcnVlRmFsc2VGb3JtYXR0ZXIgZXh0ZW5kcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlciB7XG5cbiAgcHVibGljIHJlbmRlcihkYXRhLCB0eXBlLCByb3csIG1ldGEpIHtcbiAgICByZXR1cm4gZGF0YSA/IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoJ1RydWVGYWxzZS5sb25nLlllcycpIDpcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoJ1RydWVGYWxzZS5sb25nLk5vJyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG5cbmRlY2xhcmUgaW50ZXJmYWNlIFRyYW5zbGF0aW9uRm9ybWF0dGVyVGVtcGxhdGUge1xuICB0cmFuc2xhdGVUZW1wbGF0ZT86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0aW9uRm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nLCByb3c6IGFueSwgbWV0YTogYW55KTogYW55IHtcbiAgICAvLyBnZXQgY29sdW1uXG4gICAgY29uc3QgY29sdW1uOiBUcmFuc2xhdGlvbkZvcm1hdHRlclRlbXBsYXRlID0gbWV0YS5zZXR0aW5ncy5hb0NvbHVtbnNbbWV0YS5jb2xdO1xuICAgIGlmIChjb2x1bW4gJiYgZGF0YSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudChcbiAgICAgICAgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUodGhpcy5mb3JtYXRTdHJpbmcpKHtcbiAgICAgICAgICB2YWx1ZTogZGF0YSxcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudCgnVW5rbm93bicpO1xuICB9XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGVUaW1lRm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nLCByb3c6IGFueSwgbWV0YTogYW55KTogYW55IHtcbiAgICAvLyBnZXQgY29sdW1uXG4gICAgY29uc3QgY29sdW1uID0gbWV0YS5zZXR0aW5ncy5hb0NvbHVtbnNbbWV0YS5jb2xdO1xuICAgIGlmIChjb2x1bW4gJiYgY29sdW1uLmRhdGEpIHtcbiAgICAgIGNvbnN0IGRhdGVQaXBlOiBEYXRlUGlwZSA9IG5ldyBEYXRlUGlwZSh0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5jdXJyZW50TGFuZyk7XG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnICYmIC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn1cXCtcXGR7Mn0kLy50ZXN0KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBkYXRlUGlwZS50cmFuc2Zvcm0obmV3IERhdGUoZGF0YSArICc6MDAnKSwgdGhpcy5mb3JtYXRTdHJpbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGVQaXBlLnRyYW5zZm9ybShkYXRhLCB0aGlzLmZvcm1hdFN0cmluZyk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5nQ2xhc3NGb3JtYXR0ZXIgZXh0ZW5kcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlciB7XG4gIHB1YmxpYyByZW5kZXIoZGF0YSwgdHlwZSwgcm93LCBtZXRhKSB7XG4gICAgLy8gZ2V0IGNvbHVtblxuICAgIGNvbnN0IGNvbHVtbiA9IG1ldGEuc2V0dGluZ3MuYW9Db2x1bW5zW21ldGEuY29sXTtcbiAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5kYXRhKSB7XG4gICAgICAvLyBnZXQgZm9ybWF0T3B0aW9uc1xuICAgICAgaWYgKHRoaXMuZm9ybWF0T3B0aW9ucykge1xuICAgICAgICBjb25zdCBuZ0NsYXNzID0gdGhpcy5mb3JtYXRPcHRpb25zLm5nQ2xhc3M7XG4gICAgICAgIC8vIGNoZWNrIGNvbmRpdGlvbiBmb3IgZWFjaCBrZXlcbiAgICAgICAgY29sdW1uLm5nQ2xhc3NUZW1wbGF0ZXMgPSBjb2x1bW4ubmdDbGFzc1RlbXBsYXRlcyB8fCB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobmdDbGFzcykpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZShuZ0NsYXNzW2tleV0pKHJvdyk7XG4gICAgICAgICAgY29uc3QgZm4gPSBuZXcgRnVuY3Rpb24oYHJldHVybiAke3Jlc3VsdH07YCk7XG4gICAgICAgICAgLy8gaWYgY29uZGl0aW9uIHJldHVybnMgdHJ1ZSBhZGQgY2xhc3NcbiAgICAgICAgICBpZiAoZm4oKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cIiR7a2V5fVwiPiR7ZGF0YX08L3NwYW4+YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VGb3JtYXR0ZXIgZXh0ZW5kcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlciB7XG4gIHB1YmxpYyByZW5kZXIoZGF0YSwgdHlwZSwgcm93LCBtZXRhKSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHJldHVybiBJU082MzkxLmdldE5hdGl2ZU5hbWUoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
427
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUuZm9ybWF0dGVycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLmZvcm1hdHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxPQUFPLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBb0IsTUFBTSxFQUFXLE1BQU0saUJBQWlCLENBQUM7QUFFcEYsTUFBTTtJQWtCRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVk7UUFDakMsSUFBSSxNQUFNLEdBQUcsdUJBQXVCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRTtZQUNoQyxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBQ0QsTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4Qix1QkFBdUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4RCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBSVMsYUFBYSxDQUFDLElBQVMsRUFBRSxPQUFpRTtRQUNsRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25DLE1BQU0sY0FBYyxHQUFtQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6RSxNQUFNLE1BQU0sR0FB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c2gnO1xuaW1wb3J0IHsgVGFibGVDb2x1bW5Db25maWd1cmF0aW9uIH0gZnJvbSAnLi9hZHZhbmNlZC10YWJsZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBJU082MzkxIGZyb20gJ2lzby02MzktMS9idWlsZCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmRlY2xhcmUgdmFyIGpRdWVyeTogYW55O1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyIGltcGxlbWVudHMgVGFibGVDb2x1bW5Db25maWd1cmF0aW9uIHtcblxuICBwdWJsaWMgc3RhdGljIHRlbXBsYXRlQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgKGRhdGE6IGFueSkgPT4gc3RyaW5nPigpO1xuXG4gIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3I7XG4gIHB1YmxpYyBjbGFzc05hbWU6IHN0cmluZztcbiAgcHVibGljIGRlZmF1bHRDb250ZW50OiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtYXRTdHJpbmc6IHN0cmluZztcbiAgcHVibGljIGZvcm1hdHRlcjogc3RyaW5nO1xuICBwdWJsaWMgaGlkZGVuOiBib29sZWFuO1xuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgb3JkZXI6IHN0cmluZztcbiAgcHVibGljIHByb3BlcnR5OiBzdHJpbmc7XG4gIHB1YmxpYyBzb3J0YWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtYXRPcHRpb25zPzogYW55O1xuICBwdWJsaWMgYWN0aW9ucz86IEFycmF5PGFueT47XG5cbiAgcHVibGljIHN0YXRpYyB0ZW1wbGF0ZShleHByOiBzdHJpbmcpOiAoZGF0YTogYW55KSA9PiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQgPSBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZUNhY2hlLmdldChleHByKTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmVzdWx0ID0gdGVtcGxhdGUoZXhwcik7XG4gICAgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGVDYWNoZS5zZXQoZXhwciwgcmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGFic3RyYWN0IHJlbmRlcihkYXRhOiBhbnksIHR5cGU6IHN0cmluZywgcm93OiBhbnksIG1ldGE6IGFueSk6IGFueTtcblxuICBwcm90ZWN0ZWQgY3JlYXRlVXJsVHJlZShkYXRhOiBhbnksIG9wdGlvbnM6IHsgY29tbWFuZHM6IGFueVtdLCBuYXZpZ2F0aW9uRXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyB9KTogVXJsVHJlZSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy5jb21tYW5kcykpIHtcbiAgICAgIGNvbnN0IGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICAgIGNvbnN0IHJvdXRlcjogUm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKTtcbiAgICAgIGNvbnN0IGNvbW1hbmRzID0gb3B0aW9ucy5jb21tYW5kcy5tYXAoKGNvbW1hbmQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb21tYW5kID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZShjb21tYW5kKShkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tbWFuZC5vdXRsZXRzKSB7XG4gICAgICAgICAgY29uc3QgY29tbWFuZE91dGxldHMgPSB7fTtcbiAgICAgICAgICBPYmplY3Qua2V5cyhjb21tYW5kLm91dGxldHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjb21tYW5kLm91dGxldHMsIGtleSkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3V0bGV0ID0gY29tbWFuZC5vdXRsZXRzW2tleV07XG4gICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG91dGxldCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29tbWFuZE91dGxldHMsIGtleSwge1xuICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IG91dGxldC5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKHgpKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbW1hbmRPdXRsZXRzLCBrZXksIHtcbiAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBvdXRsZXQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgb3V0bGV0czogY29tbWFuZE91dGxldHMsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tbWFuZDtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICAgIGxldCByZXBsYWNlVXJsID0gdHJ1ZTtcbiAgICAgIGlmIChvcHRpb25zLm5hdmlnYXRpb25FeHRyYXMgJiYgb3B0aW9ucy5uYXZpZ2F0aW9uRXh0cmFzLnF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcy5xdWVyeVBhcmFtcykubWFwKChrZXkpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gb3B0aW9ucy5uYXZpZ2F0aW9uRXh0cmFzLnF1ZXJ5UGFyYW1zW2tleV07XG4gICAgICAgICAgcXVlcnlQYXJhbXNba2V5XSA9IEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKHRleHQpKGRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLm5hdmlnYXRpb25FeHRyYXMgJiYgdHlwZW9mIG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcy5yZXBsYWNlVXJsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXBsYWNlVXJsID0gb3B0aW9ucy5uYXZpZ2F0aW9uRXh0cmFzLnJlcGxhY2VVcmw7XG4gICAgICB9XG4gICAgICBsZXQgc2tpcExvY2F0aW9uQ2hhbmdlID0gZmFsc2U7XG4gICAgICBpZiAob3B0aW9ucy5uYXZpZ2F0aW9uRXh0cmFzICYmIHR5cGVvZiBvcHRpb25zLm5hdmlnYXRpb25FeHRyYXMuc2tpcExvY2F0aW9uQ2hhbmdlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBza2lwTG9jYXRpb25DaGFuZ2UgPSBvcHRpb25zLm5hdmlnYXRpb25FeHRyYXMuc2tpcExvY2F0aW9uQ2hhbmdlO1xuICAgICAgfVxuXG4gICAgICBsZXQgZnJhZ21lbnQ6IHN0cmluZztcbiAgICAgIGlmIChvcHRpb25zLm5hdmlnYXRpb25FeHRyYXMgJiYgdHlwZW9mIG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcy5mcmFnbWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgZnJhZ21lbnQgPSBvcHRpb25zLm5hdmlnYXRpb25FeHRyYXMuZnJhZ21lbnQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShjb21tYW5kcyxcbiAgICAgICAge1xuICAgICAgICAgIGZyYWdtZW50LFxuICAgICAgICAgIHJlbGF0aXZlVG86IGFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgICAgIHJlcGxhY2VVcmwsXG4gICAgICAgICAgc2tpcExvY2F0aW9uQ2hhbmdlLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uQWR2YW5jZWRDb2x1bW5BZnRlclJlbmRlciB7XG4gIGFmdGVyUmVuZGVyKGNlbGw6IGFueSwgY2VsbERhdGE6IGFueSwgcm93RGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIE5lc3RlZFByb3BlcnR5Rm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGEsIHR5cGUsIHJvdywgbWV0YSkge1xuICAgIC8vIGdldCBjb2x1bW5cbiAgICBjb25zdCBjb2x1bW4gPSBtZXRhLnNldHRpbmdzLmFvQ29sdW1uc1ttZXRhLmNvbF07XG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4uZGF0YSkge1xuICAgICAgcmV0dXJuIGF0KHJvdywgY29sdW1uLmRhdGEucmVwbGFjZSgvXFwvL2csICcuJykpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCdXR0b25Gb3JtYXR0ZXIgZXh0ZW5kcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlciB7XG4gIHB1YmxpYyByZW5kZXIoZGF0YSwgdHlwZSwgcm93LCBtZXRhKSB7XG4gICAgaWYgKGRhdGEgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICAvLyBnZXQgY29sdW1uXG4gICAgY29uc3QgY29sdW1uID0gbWV0YS5zZXR0aW5ncy5hb0NvbHVtbnNbbWV0YS5jb2xdO1xuICAgIC8vIGdldCBmb3JtYXQgb3B0aW9uc1xuICAgIGNvbnN0IGZvcm1hdE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIGJ1dHRvbkNsYXNzOiAnYnRuIGJ0bi1kZWZhdWx0JyxcbiAgICB9LCB0aGlzLmZvcm1hdE9wdGlvbnMpO1xuICAgIC8vIGdldCB0ZXh0IGNvbnRlbnRcbiAgICBsZXQgYnV0dG9uVGV4dDogc3RyaW5nO1xuICAgIGxldCBidXR0b25UaXRsZSA9ICcnO1xuICAgIGlmIChmb3JtYXRPcHRpb25zLmJ1dHRvblRleHQpIHtcbiAgICAgIGJ1dHRvblRleHQgPSB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KGZvcm1hdE9wdGlvbnMuYnV0dG9uVGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1dHRvblRleHQgPSBmb3JtYXRPcHRpb25zLmJ1dHRvbkNvbnRlbnQ7XG4gICAgfVxuICAgIGlmIChmb3JtYXRPcHRpb25zLmJ1dHRvblRpdGxlKSB7XG4gICAgICBidXR0b25UaXRsZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoZm9ybWF0T3B0aW9ucy5idXR0b25UaXRsZSk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZm9ybWF0T3B0aW9ucy5jb21tYW5kcykpIHtcbiAgICAgIGxldCByb3V0ZXJMaW5rID0gdGhpcy5jcmVhdGVVcmxUcmVlKHJvdywgdGhpcy5mb3JtYXRPcHRpb25zKTtcbiAgICAgIHJldHVybiBgPGEgY2xhc3M9XCIke2Zvcm1hdE9wdGlvbnMuYnV0dG9uQ2xhc3N9XCIgdGl0bGU9XCIke2J1dHRvblRpdGxlfVwiIGhyZWY9XCIjJHtyb3V0ZXJMaW5rfVwiPiR7YnV0dG9uVGV4dH08L2E+YDtcbiAgICB9XG4gICAgLy8gYW5kIHJldHVybiBidXR0b25cbiAgICBjb25zdCBocmVmID0gQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUodGhpcy5mb3JtYXRTdHJpbmcpKHJvdyk7XG4gICAgcmV0dXJuIGA8YSBjbGFzcz1cIiR7Zm9ybWF0T3B0aW9ucy5idXR0b25DbGFzc31cIiB0aXRsZT1cIiR7YnV0dG9uVGl0bGV9XCIgaHJlZj1cIiR7aHJlZn1cIj4ke2J1dHRvblRleHR9PC9hPmA7XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlua0Zvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyIHtcbiAgcHVibGljIHJlbmRlcihkYXRhOiBhbnksIHR5cGU6IHN0cmluZywgcm93OiBhbnksIG1ldGE6IGFueSk6IGFueSB7XG4gICAgLy8gZ2V0IGNvbHVtblxuICAgIGNvbnN0IGNvbHVtbiA9IG1ldGEuc2V0dGluZ3MuYW9Db2x1bW5zW21ldGEuY29sXTtcbiAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5kYXRhKSB7XG4gICAgICByZXR1cm4gYDxhIGhyZWY9XCIkeyhBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZSh0aGlzLmZvcm1hdFN0cmluZykocm93KSl9XCI+JHtkYXRhfTwvYT5gO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25MaW5rRm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXJcbiAgaW1wbGVtZW50cyBPbkFkdmFuY2VkQ29sdW1uQWZ0ZXJSZW5kZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nLCByb3c6IGFueSwgbWV0YTogYW55KTogYW55IHtcbiAgICAvLyBnZXQgY29sdW1uXG4gICAgY29uc3QgY29sdW1uID0gbWV0YS5zZXR0aW5ncy5hb0NvbHVtbnNbbWV0YS5jb2xdO1xuXG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4uZGF0YSkge1xuICAgICAgY29uc3QgYWN0aW9ucyA9IHRoaXMuYWN0aW9ucyB8fCBbXTtcbiAgICAgIGxldCBpbmRleCA9IDE7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oYWN0aW9uLCB7XG4gICAgICAgICAgbmFtZTogYWN0aW9uLm5hbWUgfHwgYGFjdGlvbiR7aW5kZXh9YCxcbiAgICAgICAgfSk7XG4gICAgICAgIGluZGV4ICs9IDE7XG4gICAgICB9XG4gICAgICAvLyByZXR1cm4gdGhlIGRyb3Bkb3duIG1lbnUgd2l0aCAzIGRvdHNcbiAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0nZHJvcGRvd24gZGV0YWlscy1jb250cm9sJyBkYXRhLWlkPScke2RhdGF9JyBkYXRhLXR5cGU9J3N0dWRlbnQnID5cbiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9XCJkcm9wZG93bk1lbnVCdXR0b24tJHtkYXRhfVwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYS0yeCB0ZXh0LWRvdHNcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVCdXR0b24tJHtkYXRhfVwiPlxuICAgICAgICAgICAgICAgICAgICAgJHthY3Rpb25zLm1hcCgoeCkgPT4ge1xuICAgICAgICBpZiAoeC50eXBlID09PSAnZGl2aWRlcicpIHtcbiAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+PC9kaXY+YDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoeC5mb3JtYXRPcHRpb25zICYmIHguZm9ybWF0T3B0aW9ucy5jb21tYW5kcykge1xuICAgICAgICAgIGNvbnN0IHVybFRyZWUgPSB0aGlzLmNyZWF0ZVVybFRyZWUocm93LCB4LmZvcm1hdE9wdGlvbnMpO1xuICAgICAgICAgIHJldHVybiBgPGEgZGF0YS1uYW1lPScke3gubmFtZX0nIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIke3VybFRyZWUudG9TdHJpbmcoKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoeC50aXRsZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgPGEgZGF0YS1uYW1lPScke3gubmFtZX0nIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIke0FkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKHguaHJlZikocm93KX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KHgudGl0bGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPmA7XG4gICAgICB9KVxuICAgICAgICAgIC5qb2luKCcnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG4gIHB1YmxpYyBhZnRlclJlbmRlcihjZWxsOiBhbnksIGNlbGxEYXRhOiBhbnksIHJvd0RhdGE6IGFueSwgcm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIC8vIGFzc2lnbiBib290c3RyYXAgZHJvcGRvd24gKD8pXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkJ1dHRvbkZvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyXG4gIGltcGxlbWVudHMgT25BZHZhbmNlZENvbHVtbkFmdGVyUmVuZGVyIHtcbiAgcHVibGljIHJlbmRlcihkYXRhOiBhbnksIHR5cGU6IHN0cmluZywgcm93OiBhbnksIG1ldGE6IGFueSk6IGFueSB7XG4gICAgLy8gZ2V0IGNvbHVtblxuICAgIGNvbnN0IGNvbHVtbiA9IG1ldGEuc2V0dGluZ3MuYW9Db2x1bW5zW21ldGEuY29sXTtcblxuICAgIGlmIChjb2x1bW4gJiYgY29sdW1uLmRhdGEpIHtcbiAgICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLmFjdGlvbnMgfHwgW107XG4gICAgICBsZXQgaW5kZXggPSAxO1xuICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICBPYmplY3QuYXNzaWduKGFjdGlvbiwge1xuICAgICAgICAgIG5hbWU6IGFjdGlvbi5uYW1lIHx8IGBhY3Rpb24ke2luZGV4fWAsXG4gICAgICAgIH0pO1xuICAgICAgICBpbmRleCArPSAxO1xuICAgICAgfVxuICAgICAgbGV0IGJ1dHRvblRleHQ6IHN0cmluZztcbiAgICAgIGlmICh0aGlzLmZvcm1hdE9wdGlvbnMgJiYgdGhpcy5mb3JtYXRPcHRpb25zLmJ1dHRvblRleHQpIHtcbiAgICAgICAgLy8gaWYgYnV0dG9uIHRleHQgaXMgYSBsaXRlcmFsIGV4cHJlc3Npb25cbiAgICAgICAgaWYgKHRoaXMuZm9ybWF0T3B0aW9ucy5idXR0b25UZXh0LmluY2x1ZGVzKCckeycpKSB7XG4gICAgICAgICAgLy8gdXNlIHRlbXBsYXRlXG4gICAgICAgICAgYnV0dG9uVGV4dCA9IEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKHRoaXMuZm9ybWF0T3B0aW9ucy5idXR0b25UZXh0KShyb3cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIG90aGVyd2lzZSB0cmFuc2xhdGUgaXRcbiAgICAgICAgICBidXR0b25UZXh0ID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudCh0aGlzLmZvcm1hdE9wdGlvbnMuYnV0dG9uVGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxldCBidXR0b25UaXRsZTogc3RyaW5nO1xuICAgICAgaWYgKHRoaXMuZm9ybWF0T3B0aW9ucyAmJiB0aGlzLmZvcm1hdE9wdGlvbnMuYnV0dG9uVGl0bGUpIHtcbiAgICAgICAgYnV0dG9uVGl0bGUgPSB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KHRoaXMuZm9ybWF0T3B0aW9ucy5idXR0b25UYnV0dG9uVGl0bGVleHQpO1xuICAgICAgfVxuICAgICAgY29uc3QgYnV0dG9uQ2xhc3MgPSAodGhpcy5mb3JtYXRPcHRpb25zICYmIHRoaXMuZm9ybWF0T3B0aW9ucy5idXR0b25DbGFzcykgfHwgJ2J0biBidG4tbGlnaHQnO1xuICAgICAgLy8gcmV0dXJuIHRoZSBkcm9wZG93biBtZW51IHdpdGggMyBkb3RzXG4gICAgICByZXR1cm4gYDxkaXYgY2xhc3M9J2Ryb3Bkb3duIGRldGFpbHMtY29udHJvbCcgZGF0YS1pZD0nJHtkYXRhfSc+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiJHtidXR0b25DbGFzc30gZHJvcGRvd24tdG9nZ2xlXCIgaHJlZj1cIiNcIiByb2xlPVwiYnV0dG9uXCIgdGl0bGU9XCIke2J1dHRvblRpdGxlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkcm9wZG93bk1lbnVCdXR0b24tJHtkYXRhfVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICR7YnV0dG9uVGV4dH1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duTWVudUJ1dHRvbi0ke2RhdGF9XCI+XG4gICAgICAgICAgICAgICAgICAgICAke2FjdGlvbnMubWFwKCh4KSA9PiB7XG4gICAgICAgIGlmICh4LnR5cGUgPT09ICdkaXZpZGVyJykge1xuICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5gO1xuICAgICAgICB9XG4gICAgICAgIGlmICh4LmNvbW1hbmRzKSB7XG4gICAgICAgICAgY29uc3QgdXJsVHJlZSA9IHRoaXMuY3JlYXRlVXJsVHJlZShyb3csIHgpO1xuICAgICAgICAgIHJldHVybiBgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiR7dXJsVHJlZS50b1N0cmluZygpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudCh4LnRpdGxlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPmA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiJHtBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZSh4LmhyZWYpKHJvdyl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudCh4LnRpdGxlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5gO1xuICAgICAgfSlcbiAgICAgICAgICAuam9pbignJyl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuICBwdWJsaWMgYWZ0ZXJSZW5kZXIoY2VsbDogYW55LCBjZWxsRGF0YTogYW55LCByb3dEYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBhc3NpZ24gYm9vdHN0cmFwIGRyb3Bkb3duICg/KVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25TcGxpdEJ1dHRvbkZvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyXG4gIGltcGxlbWVudHMgT25BZHZhbmNlZENvbHVtbkFmdGVyUmVuZGVyIHtcbiAgcHVibGljIHJlbmRlcihkYXRhOiBhbnksIHR5cGU6IHN0cmluZywgcm93OiBhbnksIG1ldGE6IGFueSk6IGFueSB7XG4gICAgLy8gZ2V0IGNvbHVtblxuICAgIGNvbnN0IGNvbHVtbiA9IG1ldGEuc2V0dGluZ3MuYW9Db2x1bW5zW21ldGEuY29sXTtcblxuICAgIGlmIChjb2x1bW4gJiYgY29sdW1uLmRhdGEpIHtcbiAgICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLmFjdGlvbnMgfHwgW107XG4gICAgICBsZXQgaW5kZXggPSAxO1xuICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICBPYmplY3QuYXNzaWduKGFjdGlvbiwge1xuICAgICAgICAgIG5hbWU6IGFjdGlvbi5uYW1lIHx8IGBhY3Rpb24ke2luZGV4fWAsXG4gICAgICAgIH0pO1xuICAgICAgICBpbmRleCArPSAxO1xuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJ1dHRvbkNsYXNzID0gKHRoaXMuZm9ybWF0T3B0aW9ucyAmJiB0aGlzLmZvcm1hdE9wdGlvbnMuYnV0dG9uQ2xhc3MpIHx8ICdidG4gYnRuLWxpZ2h0JztcbiAgICAgIC8vIHJldHVybiB0aGUgZHJvcGRvd24gbWVudSB3aXRoIDMgZG90c1xuICAgICAgY29uc3QgZGVmYXVsdEFjdGlvbiA9IGFjdGlvbnNbMF07XG4gICAgICBsZXQgZGVmYXVsdEFjdGlvbkhyZWY6IHN0cmluZztcbiAgICAgIGlmIChkZWZhdWx0QWN0aW9uICYmIGRlZmF1bHRBY3Rpb24uY29tbWFuZHMpIHtcbiAgICAgICAgZGVmYXVsdEFjdGlvbkhyZWYgPSB0aGlzLmNyZWF0ZVVybFRyZWUocm93LCBkZWZhdWx0QWN0aW9uKS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmYXVsdEFjdGlvbkhyZWYgPSBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZShkZWZhdWx0QWN0aW9uLmhyZWYpKHJvdyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiJHtidXR0b25DbGFzc31cIiBocmVmPVwiJHtkZWZhdWx0QWN0aW9uSHJlZn1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoZGVmYXVsdEFjdGlvbi50aXRsZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCIke2J1dHRvbkNsYXNzfSBkcm9wZG93bi10b2dnbGUgZHJvcGRvd24tdG9nZ2xlLXNwbGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj4ke3RoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoJ1RvZ2dsZSBEcm9wZG93bicpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25NZW51QnV0dG9uLSR7ZGF0YX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICR7YWN0aW9ucy5tYXAoKHgpID0+IHtcbiAgICAgICAgaWYgKHgudGl0bGUgPT09ICctJykge1xuICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5gO1xuICAgICAgICB9XG4gICAgICAgIGlmICh4LmNvbW1hbmRzKSB7XG4gICAgICAgICAgY29uc3QgdXJsVHJlZSA9IHRoaXMuY3JlYXRlVXJsVHJlZShyb3csIHgpO1xuICAgICAgICAgIHJldHVybiBgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiR7dXJsVHJlZS50b1N0cmluZygpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudCh4LnRpdGxlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPmA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiJHtBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZSh4LmhyZWYpKHJvdyl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudCh4LnRpdGxlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5gO1xuICAgICAgfSlcbiAgICAgICAgICAuam9pbignJyl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuICBwdWJsaWMgYWZ0ZXJSZW5kZXIoY2VsbDogYW55LCBjZWxsRGF0YTogYW55LCByb3dEYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBhc3NpZ24gYm9vdHN0cmFwIGRyb3Bkb3duICg/KVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3RSb3dGb3JtYXR0ZXIgZXh0ZW5kcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlciB7XG4gIHB1YmxpYyByZW5kZXIoZGF0YSwgdHlwZSwgcm93LCBtZXRhKSB7XG4gICAgLy8gZ2V0IGNvbHVtblxuICAgIGNvbnN0IGNvbHVtbiA9IG1ldGEuc2V0dGluZ3MuYW9Db2x1bW5zW21ldGEuY29sXTtcbiAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5kYXRhKSB7XG4gICAgICBjb25zdCBfdHBsID0gYDxpbnB1dCBjbGFzcz1cImNoZWNrYm94IGNoZWNrYm94LXRoZW1lXCIgdHlwZT1cImNoZWNrYm94XCJcbiBpZD1cInMtJHttZXRhLnJvd31cIiAvPjxsYWJlbCBmb3I9XCJzLSR7bWV0YS5yb3d9XCI+Jm5ic3A7PC9sYWJlbD5gO1xuICAgICAgcmV0dXJuIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKF90cGwpKHJvdyk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlRm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nLCByb3c6IGFueSwgbWV0YTogYW55KTogYW55IHtcbiAgICAvLyBnZXQgY29sdW1uXG4gICAgY29uc3QgY29sdW1uID0gbWV0YS5zZXR0aW5ncy5hb0NvbHVtbnNbbWV0YS5jb2xdO1xuICAgIGlmIChjb2x1bW4gJiYgY29sdW1uLmRhdGEpIHtcbiAgICAgIHJldHVybiBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZSh0aGlzLmZvcm1hdFN0cmluZykocm93KTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJ1ZUZhbHNlRm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIge1xuXG4gIHB1YmxpYyByZW5kZXIoZGF0YSwgdHlwZSwgcm93LCBtZXRhKSB7XG4gICAgcmV0dXJuIGRhdGEgPyB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KCdUcnVlRmFsc2UubG9uZy5ZZXMnKSA6XG4gICAgICB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KCdUcnVlRmFsc2UubG9uZy5ObycpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxufVxuXG5kZWNsYXJlIGludGVyZmFjZSBUcmFuc2xhdGlvbkZvcm1hdHRlclRlbXBsYXRlIHtcbiAgdHJhbnNsYXRlVGVtcGxhdGU/OiAoZGF0YTogYW55KSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvbkZvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyIHtcbiAgcHVibGljIHJlbmRlcihkYXRhOiBhbnksIHR5cGU6IHN0cmluZywgcm93OiBhbnksIG1ldGE6IGFueSk6IGFueSB7XG4gICAgLy8gZ2V0IGNvbHVtblxuICAgIGNvbnN0IGNvbHVtbjogVHJhbnNsYXRpb25Gb3JtYXR0ZXJUZW1wbGF0ZSA9IG1ldGEuc2V0dGluZ3MuYW9Db2x1bW5zW21ldGEuY29sXTtcbiAgICBpZiAoY29sdW1uICYmIGRhdGEgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoXG4gICAgICAgIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKHRoaXMuZm9ybWF0U3RyaW5nKSh7XG4gICAgICAgICAgdmFsdWU6IGRhdGEsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoJ1Vua25vd24nKTtcbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRlVGltZUZvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyIHtcbiAgcHVibGljIHJlbmRlcihkYXRhOiBhbnksIHR5cGU6IHN0cmluZywgcm93OiBhbnksIG1ldGE6IGFueSk6IGFueSB7XG4gICAgLy8gZ2V0IGNvbHVtblxuICAgIGNvbnN0IGNvbHVtbiA9IG1ldGEuc2V0dGluZ3MuYW9Db2x1bW5zW21ldGEuY29sXTtcbiAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5kYXRhKSB7XG4gICAgICBjb25zdCBkYXRlUGlwZTogRGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUodGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuY3VycmVudExhbmcpO1xuICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJyAmJiAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9VFxcZHsyfTpcXGR7Mn06XFxkezJ9XFwrXFxkezJ9JC8udGVzdChkYXRhKSkge1xuICAgICAgICByZXR1cm4gZGF0ZVBpcGUudHJhbnNmb3JtKG5ldyBEYXRlKGRhdGEgKyAnOjAwJyksIHRoaXMuZm9ybWF0U3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRlUGlwZS50cmFuc2Zvcm0oZGF0YSwgdGhpcy5mb3JtYXRTdHJpbmcpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOZ0NsYXNzRm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGEsIHR5cGUsIHJvdywgbWV0YSkge1xuICAgIC8vIGdldCBjb2x1bW5cbiAgICBjb25zdCBjb2x1bW4gPSBtZXRhLnNldHRpbmdzLmFvQ29sdW1uc1ttZXRhLmNvbF07XG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4uZGF0YSkge1xuICAgICAgLy8gZ2V0IGZvcm1hdE9wdGlvbnNcbiAgICAgIGlmICh0aGlzLmZvcm1hdE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgbmdDbGFzcyA9IHRoaXMuZm9ybWF0T3B0aW9ucy5uZ0NsYXNzO1xuICAgICAgICAvLyBjaGVjayBjb25kaXRpb24gZm9yIGVhY2gga2V5XG4gICAgICAgIGNvbHVtbi5uZ0NsYXNzVGVtcGxhdGVzID0gY29sdW1uLm5nQ2xhc3NUZW1wbGF0ZXMgfHwge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG5nQ2xhc3MpKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUobmdDbGFzc1trZXldKShyb3cpO1xuICAgICAgICAgIGNvbnN0IGZuID0gbmV3IEZ1bmN0aW9uKGByZXR1cm4gJHtyZXN1bHR9O2ApO1xuICAgICAgICAgIC8vIGlmIGNvbmRpdGlvbiByZXR1cm5zIHRydWUgYWRkIGNsYXNzXG4gICAgICAgICAgaWYgKGZuKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCIke2tleX1cIj4ke2RhdGF9PC9zcGFuPmA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxufVxuZXhwb3J0IGNsYXNzIExhbmd1YWdlRm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGEsIHR5cGUsIHJvdywgbWV0YSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICByZXR1cm4gSVNPNjM5MS5nZXROYXRpdmVOYW1lKGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG4iXX0=
|
|
@@ -17,8 +17,9 @@ var AdvancedSearchFormComponent = /** @class */ (function (_super) {
|
|
|
17
17
|
_this._http = _http;
|
|
18
18
|
_this.form = {};
|
|
19
19
|
_this.refreshForm = new EventEmitter();
|
|
20
|
+
_this.loading = new EventEmitter();
|
|
20
21
|
_this.submission = { data: {} };
|
|
21
|
-
_this.
|
|
22
|
+
_this.componentLoading = true;
|
|
22
23
|
return _this;
|
|
23
24
|
}
|
|
24
25
|
AdvancedSearchFormComponent.prototype.ngOnChanges = function (changes) {
|
|
@@ -64,10 +65,13 @@ var AdvancedSearchFormComponent = /** @class */ (function (_super) {
|
|
|
64
65
|
this.submission = {
|
|
65
66
|
data: this.filter
|
|
66
67
|
};
|
|
68
|
+
this.loading.emit({
|
|
69
|
+
target: this
|
|
70
|
+
});
|
|
67
71
|
this.refreshForm.emit({
|
|
68
72
|
form: this.form
|
|
69
73
|
});
|
|
70
|
-
this.
|
|
74
|
+
this.componentLoading = false;
|
|
71
75
|
this.filterSubscription = this.filterChange.subscribe(function (filter) {
|
|
72
76
|
_this.submission.data = filter;
|
|
73
77
|
_this.refreshForm.emit({
|
|
@@ -131,10 +135,11 @@ var AdvancedSearchFormComponent = /** @class */ (function (_super) {
|
|
|
131
135
|
formComponent: [{ type: ViewChild, args: ['formioComponent',] }],
|
|
132
136
|
form: [{ type: Input }],
|
|
133
137
|
formSrc: [{ type: Input }],
|
|
134
|
-
refreshForm: [{ type: Output }]
|
|
138
|
+
refreshForm: [{ type: Output }],
|
|
139
|
+
loading: [{ type: Output }]
|
|
135
140
|
};
|
|
136
141
|
return AdvancedSearchFormComponent;
|
|
137
142
|
}(AdvancedTableSearchBaseComponent));
|
|
138
143
|
export { AdvancedSearchFormComponent };
|
|
139
144
|
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VhcmNoLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVuaXZlcnNpcy9uZ3gtdGFibGVzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYWR2YW5jZWQtc2VhcmNoLWZvcm0vYWR2YW5jZWQtc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUMvSixPQUFPLEVBQUMsZUFBZSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzlGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBR3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRDtJQVdpRCx1REFBZ0M7SUFXL0UscUNBQW9CLFFBQTRCLEVBQzVCLGlCQUFtQyxFQUNuQyxlQUErQixFQUMvQixLQUFpQjtRQUhyQyxZQUtFLGlCQUFPLFNBQ1I7UUFObUIsY0FBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDNUIsdUJBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxxQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsV0FBSyxHQUFMLEtBQUssQ0FBWTtRQVY1QixVQUFJLEdBQVEsRUFBRSxDQUFDO1FBRWQsaUJBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2hELGdCQUFVLEdBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFeEIsYUFBTyxHQUFHLElBQUksQ0FBQzs7SUFRdEIsQ0FBQztJQUVELGlEQUFXLEdBQVgsVUFBWSxPQUFzQjtRQUFsQyxpQkFpQ0M7UUFoQ0MsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ3pELElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7Z0JBQ3hCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZO29CQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDekQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNqQjthQUNGO1NBQ0Y7UUFDRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDNUQsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTtnQkFDM0IsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVk7b0JBQzlCLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO29CQUMvRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFDLElBQUk7d0JBQ2pFLFdBQVc7d0JBQ1gsS0FBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7d0JBQ2pCLFdBQVc7d0JBQ1gsS0FBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNsQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBQyxHQUFHO3dCQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQzt3QkFDdEUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDckIsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtTQUNGO1FBQ0QsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQzNELElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztnQkFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtpQkFDNUIsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7SUFFRCw4Q0FBUSxHQUFSO1FBQUEsaUJBa0JDO1FBakJDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0QsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxVQUFVLEdBQUc7Z0JBQ2hCLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTTthQUNsQixDQUFDO1lBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTthQUNoQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUUsVUFBQSxNQUFNO2dCQUMzRCxLQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7Z0JBQzlCLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUNwQixVQUFVLEVBQUUsS0FBSSxDQUFDLFVBQVU7aUJBQzVCLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsOENBQVEsR0FBUixVQUFTLEtBQWE7UUFBdEIsaUJBb0JDO1FBbkJDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUEsR0FBRztZQUN6RCxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pGLElBQU0sS0FBSyxHQUFHLEtBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEQsb0RBQW9EO2dCQUNwRCxJQUFNLGFBQWEsR0FBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7Z0JBQ3ZFLHlDQUF5QztnQkFDekMsSUFBTSxhQUFhLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztnQkFDbkYsMENBQTBDO2dCQUMxQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUNwQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO3dCQUN0QyxZQUFZLEVBQUcsSUFBSTt3QkFDbkIsVUFBVSxFQUFFLElBQUk7d0JBQ2hCLEtBQUssRUFBRyxLQUFLO3FCQUNkLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxPQUFPLEtBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3pCO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnREFBVSxHQUFWLFVBQVcsSUFBZ0I7UUFDekIsSUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztRQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDN0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztJQUNuRCxDQUFDO0lBRUQscURBQWUsR0FBZjtRQUNFLEVBQUU7SUFDSixDQUFDO0lBRUQsaURBQVcsR0FBWDtRQUNFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QztJQUNILENBQUM7O2dCQXpIRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsUUFBUSxFQUFFLG1TQUtUO29CQUVELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOztpQkFDdEM7Ozs7Z0JBbkJPLGtCQUFrQjtnQkFJbEIsZ0JBQWdCO2dCQUhoQixjQUFjO2dCQU1iLFVBQVU7OztnQ0FnQmhCLFNBQVMsU0FBQyxpQkFBaUI7dUJBQzNCLEtBQUs7MEJBQ0wsS0FBSzs4QkFDTCxNQUFNOztJQXlHVCxrQ0FBQztDQUFBLEFBMUhELENBV2lELGdDQUFnQyxHQStHaEY7U0EvR1ksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1pb0NvbXBvbmVudCwgRm9ybWlvRm9ybX0gZnJvbSAnYW5ndWxhci1mb3JtaW8nO1xuaW1wb3J0IHtBbmd1bGFyRGF0YUNvbnRleHR9IGZyb20gJ0B0aGVtb3N0L2FuZ3VsYXInO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7U2VydmljZVVybFByZVByb2Nlc3NvciwgVHJhbnNsYXRlUHJlUHJvY2Vzc29yfSBmcm9tICdAdW5pdmVyc2lzL2Zvcm1zJztcbmltcG9ydCB7QWR2YW5jZWRUYWJsZVNlYXJjaEJhc2VDb21wb25lbnR9IGZyb20gJy4uL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLXNlYXJjaC1iYXNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FkdmFuY2VkVGFibGVDb21wb25lbnR9IGZyb20gJy4uL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWR2YW5jZWQtc2VhcmNoLWZvcm0nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJwLTRcIj5cbiAgICAgIDxmb3JtaW8gI2Zvcm1pb0NvbXBvbmVudCBjbGFzcz1cImZvcm1pby1zZWFyY2hcIiAoa2V5ZG93bik9XCJvbktleUVudGVyKCRldmVudClcIiAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiAoZm9ybUxvYWQpPVwib25Gb3JtTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaEZvcm1cIiBbc3VibWlzc2lvbl09XCJzdWJtaXNzaW9uXCIgW2Zvcm1dPVwiZm9ybVwiPjwvZm9ybWlvPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9hZHZhbmNlZC1zZWFyY2gtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkU2VhcmNoRm9ybUNvbXBvbmVudCBleHRlbmRzIEFkdmFuY2VkVGFibGVTZWFyY2hCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG5cblxuICBAVmlld0NoaWxkKCdmb3JtaW9Db21wb25lbnQnKSBmb3JtQ29tcG9uZW50OiBGb3JtaW9Db21wb25lbnQ7XG4gIEBJbnB1dCgpIGZvcm06IGFueSA9IHt9O1xuICBASW5wdXQoKSBmb3JtU3JjOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSByZWZyZXNoRm9ybSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBzdWJtaXNzaW9uOiBhbnkgPSB7IGRhdGE6IHt9IH07XG4gIHByaXZhdGUgZmlsdGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBsb2FkaW5nID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb250ZXh0OiBBbmd1bGFyRGF0YUNvbnRleHQsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2hhbmdlcywgJ2Zvcm0nKSkge1xuICAgICAgaWYgKGNoYW5nZXMuZm9ybSAhPSBudWxsKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmZvcm0uY3VycmVudFZhbHVlICYmXG4gICAgICAgICAgY2hhbmdlcy5mb3JtLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLmZvcm0ucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgIHRoaXMubmdPbkluaXQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNoYW5nZXMsICdmb3JtU3JjJykpIHtcbiAgICAgIGlmIChjaGFuZ2VzLmZvcm1TcmMgIT0gbnVsbCkge1xuICAgICAgICBpZiAoY2hhbmdlcy5mb3JtU3JjLmN1cnJlbnRWYWx1ZSAmJlxuICAgICAgICAgIGNoYW5nZXMuZm9ybVNyYy5jdXJyZW50VmFsdWUgIT0gY2hhbmdlcy5mb3JtU3JjLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICB0aGlzLl9odHRwLmdldChjaGFuZ2VzLmZvcm1TcmMuY3VycmVudFZhbHVlKS50b1Byb21pc2UoKS50aGVuKChmb3JtKSA9PiB7XG4gICAgICAgICAgICAvLyBzZXQgZm9ybVxuICAgICAgICAgICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICAgICAgICAgIC8vIGFuZCBpbml0XG4gICAgICAgICAgICB0aGlzLm5nT25Jbml0KCk7XG4gICAgICAgICAgfSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgbG9hZGluZyBzZWFyY2ggY29uZmlndXJhdGlvbicpO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2hhbmdlcywgJ2ZpbHRlcicpKSB7XG4gICAgICBpZiAoY2hhbmdlcy5maWx0ZXIgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnN1Ym1pc3Npb24uZGF0YSA9IGNoYW5nZXMuZmlsdGVyLmN1cnJlbnRWYWx1ZSB8fCB7fTtcbiAgICAgICAgdGhpcy5yZWZyZXNoRm9ybS5lbWl0KHtcbiAgICAgICAgICBzdWJtaXNzaW9uOiB0aGlzLnN1Ym1pc3Npb25cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybSkge1xuICAgICAgbmV3IFNlcnZpY2VVcmxQcmVQcm9jZXNzb3IodGhpcy5fY29udGV4dCkucGFyc2UodGhpcy5mb3JtKTtcbiAgICAgIG5ldyBUcmFuc2xhdGVQcmVQcm9jZXNzb3IodGhpcy5fdHJhbnNsYXRlU2VydmljZSkucGFyc2UodGhpcy5mb3JtKTtcbiAgICAgIHRoaXMuc3VibWlzc2lvbiA9IHtcbiAgICAgICAgZGF0YTogdGhpcy5maWx0ZXJcbiAgICAgIH07XG4gICAgICB0aGlzLnJlZnJlc2hGb3JtLmVtaXQoe1xuICAgICAgICBmb3JtOiB0aGlzLmZvcm1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuZmlsdGVyQ2hhbmdlLnN1YnNjcmliZSggZmlsdGVyID0+IHtcbiAgICAgICAgdGhpcy5zdWJtaXNzaW9uLmRhdGEgPSBmaWx0ZXI7XG4gICAgICAgIHRoaXMucmVmcmVzaEZvcm0uZW1pdCh7XG4gICAgICAgICAgc3VibWlzc2lvbjogdGhpcy5zdWJtaXNzaW9uXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2UoZXZlbnQ6IG9iamVjdCkge1xuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybUNvbXBvbmVudC5zdWJtaXNzaW9uLmRhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5mb3JtQ29tcG9uZW50LnN1Ym1pc3Npb24uZGF0YSwga2V5KSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybUNvbXBvbmVudC5zdWJtaXNzaW9uLmRhdGFba2V5XTtcbiAgICAgICAgLy8gdGhlIGZpbHRlciB3aXRoIHR5cGUgaXMgYSBzdHJpbmcgYW5kIGlzIG5vdCBlbXB0eVxuICAgICAgICBjb25zdCBpc0VtcHR5U3RyaW5nID0gIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID09PSAwO1xuICAgICAgICAvLyBkbyBub3QgaW5jbHVkZSBlbXB0eSBvYmplY3RzIGluIGZpbHRlclxuICAgICAgICBjb25zdCBpc0VtcHR5T2JqZWN0ID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwO1xuICAgICAgICAvLyBtYWtlIGlzRW1wdHlTdHJpbmcsIGlzRW1wdHlPYmplY3QgbXV0ZXhcbiAgICAgICAgaWYgKCFpc0VtcHR5U3RyaW5nICYmICFpc0VtcHR5T2JqZWN0KSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuZmlsdGVyLCBrZXksIHtcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZSA6IHRydWUsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWUgOiB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmZpbHRlcltrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkZvcm1Mb2FkKGZvcm06IEZvcm1pb0Zvcm0pIHtcbiAgICBjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmc7XG4gICAgdGhpcy5mb3JtQ29tcG9uZW50LmZvcm1pby5pMThuZXh0Lm9wdGlvbnMucmVzb3VyY2VzW2N1cnJlbnRMYW5nXSA9IHsgdHJhbnNsYXRpb24gOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYEZvcm1zYCkgfTtcbiAgICB0aGlzLmZvcm1Db21wb25lbnQuZm9ybWlvLmxhbmd1YWdlID0gY3VycmVudExhbmc7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy9cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbHRlclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5maWx0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VhcmNoLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVuaXZlcnNpcy9uZ3gtdGFibGVzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYWR2YW5jZWQtc2VhcmNoLWZvcm0vYWR2YW5jZWQtc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUMvSixPQUFPLEVBQUMsZUFBZSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzlGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBR3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRDtJQVdpRCx1REFBZ0M7SUFZL0UscUNBQW9CLFFBQTRCLEVBQzVCLGlCQUFtQyxFQUNuQyxlQUErQixFQUMvQixLQUFpQjtRQUhyQyxZQUtFLGlCQUFPLFNBQ1I7UUFObUIsY0FBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDNUIsdUJBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxxQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsV0FBSyxHQUFMLEtBQUssQ0FBWTtRQVg1QixVQUFJLEdBQVEsRUFBRSxDQUFDO1FBRWQsaUJBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RD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dCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtaW9Db21wb25lbnQsIEZvcm1pb0Zvcm19IGZyb20gJ2FuZ3VsYXItZm9ybWlvJztcbmltcG9ydCB7QW5ndWxhckRhdGFDb250ZXh0fSBmcm9tICdAdGhlbW9zdC9hbmd1bGFyJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1NlcnZpY2VVcmxQcmVQcm9jZXNzb3IsIFRyYW5zbGF0ZVByZVByb2Nlc3Nvcn0gZnJvbSAnQHVuaXZlcnNpcy9mb3Jtcyc7XG5pbXBvcnQge0FkdmFuY2VkVGFibGVTZWFyY2hCYXNlQ29tcG9uZW50fSBmcm9tICcuLi9hZHZhbmNlZC10YWJsZS9hZHZhbmNlZC10YWJsZS1zZWFyY2gtYmFzZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBZHZhbmNlZFRhYmxlQ29tcG9uZW50fSBmcm9tICcuLi9hZHZhbmNlZC10YWJsZS9hZHZhbmNlZC10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFkdmFuY2VkLXNlYXJjaC1mb3JtJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicC00XCI+XG4gICAgICA8Zm9ybWlvICNmb3JtaW9Db21wb25lbnQgY2xhc3M9XCJmb3JtaW8tc2VhcmNoXCIgKGtleWRvd24pPVwib25LZXlFbnRlcigkZXZlbnQpXCIgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCIgKGZvcm1Mb2FkKT1cIm9uRm9ybUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hGb3JtXCIgW3N1Ym1pc3Npb25dPVwic3VibWlzc2lvblwiIFtmb3JtXT1cImZvcm1cIj48L2Zvcm1pbz5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vYWR2YW5jZWQtc2VhcmNoLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBBZHZhbmNlZFNlYXJjaEZvcm1Db21wb25lbnQgZXh0ZW5kcyBBZHZhbmNlZFRhYmxlU2VhcmNoQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuXG5cbiAgQFZpZXdDaGlsZCgnZm9ybWlvQ29tcG9uZW50JykgZm9ybUNvbXBvbmVudDogRm9ybWlvQ29tcG9uZW50O1xuICBASW5wdXQoKSBmb3JtOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgZm9ybVNyYzogc3RyaW5nO1xuICBAT3V0cHV0KCkgcmVmcmVzaEZvcm0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGxvYWRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdGFyZ2V0OiBBZHZhbmNlZFNlYXJjaEZvcm1Db21wb25lbnR9PigpO1xuICBzdWJtaXNzaW9uOiBhbnkgPSB7IGRhdGE6IHt9IH07XG4gIHByaXZhdGUgZmlsdGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjb21wb25lbnRMb2FkaW5nID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb250ZXh0OiBBbmd1bGFyRGF0YUNvbnRleHQsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2hhbmdlcywgJ2Zvcm0nKSkge1xuICAgICAgaWYgKGNoYW5nZXMuZm9ybSAhPSBudWxsKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmZvcm0uY3VycmVudFZhbHVlICYmXG4gICAgICAgICAgY2hhbmdlcy5mb3JtLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLmZvcm0ucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgIHRoaXMubmdPbkluaXQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNoYW5nZXMsICdmb3JtU3JjJykpIHtcbiAgICAgIGlmIChjaGFuZ2VzLmZvcm1TcmMgIT0gbnVsbCkge1xuICAgICAgICBpZiAoY2hhbmdlcy5mb3JtU3JjLmN1cnJlbnRWYWx1ZSAmJlxuICAgICAgICAgIGNoYW5nZXMuZm9ybVNyYy5jdXJyZW50VmFsdWUgIT0gY2hhbmdlcy5mb3JtU3JjLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICB0aGlzLl9odHRwLmdldChjaGFuZ2VzLmZvcm1TcmMuY3VycmVudFZhbHVlKS50b1Byb21pc2UoKS50aGVuKChmb3JtKSA9PiB7XG4gICAgICAgICAgICAvLyBzZXQgZm9ybVxuICAgICAgICAgICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICAgICAgICAgIC8vIGFuZCBpbml0XG4gICAgICAgICAgICB0aGlzLm5nT25Jbml0KCk7XG4gICAgICAgICAgfSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgbG9hZGluZyBzZWFyY2ggY29uZmlndXJhdGlvbicpO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2hhbmdlcywgJ2ZpbHRlcicpKSB7XG4gICAgICBpZiAoY2hhbmdlcy5maWx0ZXIgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnN1Ym1pc3Npb24uZGF0YSA9IGNoYW5nZXMuZmlsdGVyLmN1cnJlbnRWYWx1ZSB8fCB7fTtcbiAgICAgICAgdGhpcy5yZWZyZXNoRm9ybS5lbWl0KHtcbiAgICAgICAgICBzdWJtaXNzaW9uOiB0aGlzLnN1Ym1pc3Npb25cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybSkge1xuICAgICAgbmV3IFNlcnZpY2VVcmxQcmVQcm9jZXNzb3IodGhpcy5fY29udGV4dCkucGFyc2UodGhpcy5mb3JtKTtcbiAgICAgIG5ldyBUcmFuc2xhdGVQcmVQcm9jZXNzb3IodGhpcy5fdHJhbnNsYXRlU2VydmljZSkucGFyc2UodGhpcy5mb3JtKTtcbiAgICAgIHRoaXMuc3VibWlzc2lvbiA9IHtcbiAgICAgICAgZGF0YTogdGhpcy5maWx0ZXJcbiAgICAgIH07XG4gICAgICB0aGlzLmxvYWRpbmcuZW1pdCh7XG4gICAgICAgIHRhcmdldDogdGhpc1xuICAgICAgfSk7XG4gICAgICB0aGlzLnJlZnJlc2hGb3JtLmVtaXQoe1xuICAgICAgICBmb3JtOiB0aGlzLmZvcm1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb21wb25lbnRMb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuZmlsdGVyQ2hhbmdlLnN1YnNjcmliZSggZmlsdGVyID0+IHtcbiAgICAgICAgdGhpcy5zdWJtaXNzaW9uLmRhdGEgPSBmaWx0ZXI7XG4gICAgICAgIHRoaXMucmVmcmVzaEZvcm0uZW1pdCh7XG4gICAgICAgICAgc3VibWlzc2lvbjogdGhpcy5zdWJtaXNzaW9uXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2UoZXZlbnQ6IG9iamVjdCkge1xuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybUNvbXBvbmVudC5zdWJtaXNzaW9uLmRhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5mb3JtQ29tcG9uZW50LnN1Ym1pc3Npb24uZGF0YSwga2V5KSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybUNvbXBvbmVudC5zdWJtaXNzaW9uLmRhdGFba2V5XTtcbiAgICAgICAgLy8gdGhlIGZpbHRlciB3aXRoIHR5cGUgaXMgYSBzdHJpbmcgYW5kIGlzIG5vdCBlbXB0eVxuICAgICAgICBjb25zdCBpc0VtcHR5U3RyaW5nID0gIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID09PSAwO1xuICAgICAgICAvLyBkbyBub3QgaW5jbHVkZSBlbXB0eSBvYmplY3RzIGluIGZpbHRlclxuICAgICAgICBjb25zdCBpc0VtcHR5T2JqZWN0ID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwO1xuICAgICAgICAvLyBtYWtlIGlzRW1wdHlTdHJpbmcsIGlzRW1wdHlPYmplY3QgbXV0ZXhcbiAgICAgICAgaWYgKCFpc0VtcHR5U3RyaW5nICYmICFpc0VtcHR5T2JqZWN0KSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuZmlsdGVyLCBrZXksIHtcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZSA6IHRydWUsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWUgOiB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmZpbHRlcltrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkZvcm1Mb2FkKGZvcm06IEZvcm1pb0Zvcm0pIHtcbiAgICBjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmc7XG4gICAgdGhpcy5mb3JtQ29tcG9uZW50LmZvcm1pby5pMThuZXh0Lm9wdGlvbnMucmVzb3VyY2VzW2N1cnJlbnRMYW5nXSA9IHsgdHJhbnNsYXRpb24gOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYEZvcm1zYCkgfTtcbiAgICB0aGlzLmZvcm1Db21wb25lbnQuZm9ybWlvLmxhbmd1YWdlID0gY3VycmVudExhbmc7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy9cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbHRlclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5maWx0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|