@alfresco/aca-shared 7.0.0-14994853738 → 7.0.0-15045182917

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.
Files changed (29) hide show
  1. package/esm2022/lib/directives/pagination.directive.mjs +1 -1
  2. package/esm2022/lib/services/app.extension.service.mjs +13 -4
  3. package/esm2022/lib/services/content-api.service.mjs +1 -1
  4. package/esm2022/lib/services/navigation-history.service.mjs +8 -6
  5. package/esm2022/lib/services/router.extension.service.mjs +1 -1
  6. package/esm2022/rules/app.rules.mjs +30 -150
  7. package/esm2022/rules/navigation.rules.mjs +1 -68
  8. package/esm2022/store/actions/contextmenu.actions.mjs +1 -1
  9. package/esm2022/store/actions/library.actions.mjs +1 -1
  10. package/esm2022/store/actions/node.actions.mjs +1 -1
  11. package/esm2022/store/actions/search-ai.actions.mjs +1 -1
  12. package/esm2022/store/actions/search.actions.mjs +1 -1
  13. package/esm2022/store/actions/snackbar.actions.mjs +1 -1
  14. package/esm2022/store/actions/upload.actions.mjs +1 -1
  15. package/esm2022/store/actions/viewer.actions.mjs +1 -1
  16. package/fesm2022/alfresco-aca-shared-rules.mjs +30 -217
  17. package/fesm2022/alfresco-aca-shared-rules.mjs.map +1 -1
  18. package/fesm2022/alfresco-aca-shared-store.mjs.map +1 -1
  19. package/fesm2022/alfresco-aca-shared.mjs +20 -9
  20. package/fesm2022/alfresco-aca-shared.mjs.map +1 -1
  21. package/lib/directives/pagination.directive.d.ts +3 -3
  22. package/lib/services/app.extension.service.d.ts +1 -1
  23. package/lib/services/content-api.service.d.ts +2 -2
  24. package/lib/services/navigation-history.service.d.ts +1 -1
  25. package/lib/services/router.extension.service.d.ts +2 -2
  26. package/package.json +1 -1
  27. package/rules/app.rules.d.ts +1 -93
  28. package/rules/navigation.rules.d.ts +0 -55
  29. package/store/actions/contextmenu.actions.d.ts +2 -2
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
52
52
  selector: '[acaPagination]'
53
53
  }]
54
54
  }], ctorParameters: () => [{ type: i1.PaginationComponent }, { type: i1.UserPreferencesService }, { type: i1.AppConfigService }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Etc2hhcmVkL3NyYy9saWIvZGlyZWN0aXZlcy9wYWdpbmF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQW1CLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQU1oRSxNQUFNLE9BQU8sbUJBQW1CO0lBR1Y7SUFBeUM7SUFBNkM7SUFGekYsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVqRCxZQUFvQixVQUErQixFQUFVLFdBQW1DLEVBQVUsTUFBd0I7UUFBOUcsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBd0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFrQjtJQUFHLENBQUM7SUFFdEksUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBc0IsRUFBRSxFQUFFO1lBQzVHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQVZVLG1CQUFtQjsyRkFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsaUJBQWlCO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlLCBQYWdpbmF0aW9uQ29tcG9uZW50LCBQYWdpbmF0aW9uTW9kZWwsIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbYWNhUGFnaW5hdGlvbl0nXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uQ29tcG9uZW50LCBwcml2YXRlIHByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLCBwcml2YXRlIGNvbmZpZzogQXBwQ29uZmlnU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhZ2luYXRpb24uc3VwcG9ydGVkUGFnZVNpemVzID0gdGhpcy5jb25maWcuZ2V0KCdwYWdpbmF0aW9uLnN1cHBvcnRlZFBhZ2VTaXplcycpO1xuICAgIHRoaXMucGFnaW5hdGlvbi5jaGFuZ2VQYWdlU2l6ZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGV2ZW50OiBQYWdpbmF0aW9uTW9kZWwpID0+IHtcbiAgICAgIHRoaXMucHJlZmVyZW5jZXMucGFnaW5hdGlvblNpemUgPSBldmVudC5tYXhJdGVtcztcbiAgICB9KTtcbiAgfVxufVxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Etc2hhcmVkL3NyYy9saWIvZGlyZWN0aXZlcy9wYWdpbmF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQW1CLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQU1oRSxNQUFNLE9BQU8sbUJBQW1CO0lBSVg7SUFDQTtJQUNBO0lBTEYsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVqRCxZQUNtQixVQUErQixFQUMvQixXQUFtQyxFQUNuQyxNQUF3QjtRQUZ4QixlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBd0I7UUFDbkMsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7SUFDeEMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQXNCLEVBQUUsRUFBRTtZQUM1RyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0FkVSxtQkFBbUI7MkZBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSwgUGFnaW5hdGlvbkNvbXBvbmVudCwgUGFnaW5hdGlvbk1vZGVsLCBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW2FjYVBhZ2luYXRpb25dJ1xufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnaW5hdGlvbjogUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBBcHBDb25maWdTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhZ2luYXRpb24uc3VwcG9ydGVkUGFnZVNpemVzID0gdGhpcy5jb25maWcuZ2V0KCdwYWdpbmF0aW9uLnN1cHBvcnRlZFBhZ2VTaXplcycpO1xuICAgIHRoaXMucGFnaW5hdGlvbi5jaGFuZ2VQYWdlU2l6ZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGV2ZW50OiBQYWdpbmF0aW9uTW9kZWwpID0+IHtcbiAgICAgIHRoaXMucHJlZmVyZW5jZXMucGFnaW5hdGlvblNpemUgPSBldmVudC5tYXhJdGVtcztcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -436,9 +436,18 @@ export class AppExtensionService {
436
436
  }
437
437
  // todo: move to ADF/RuleService
438
438
  evaluateRule(ruleId, ...args) {
439
- const evaluator = this.getEvaluator(ruleId);
440
- if (evaluator) {
441
- return evaluator(this, ...args);
439
+ let evaluatorList = [];
440
+ if (Array.isArray(ruleId)) {
441
+ evaluatorList = ruleId.filter((rule) => !!this.getEvaluator(rule)).map((rule) => this.getEvaluator(rule));
442
+ }
443
+ else {
444
+ const evaluator = this.getEvaluator(ruleId);
445
+ if (evaluator) {
446
+ evaluatorList.push(evaluator);
447
+ }
448
+ }
449
+ if (evaluatorList?.length > 0) {
450
+ return evaluatorList.every((evaluator) => evaluator(this, ...args));
442
451
  }
443
452
  return false;
444
453
  }
@@ -477,4 +486,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
477
486
  providedIn: 'root'
478
487
  }]
479
488
  }], ctorParameters: () => [{ type: i1.AuthenticationService }, { type: i2.Store }, { type: i3.ExtensionLoaderService }, { type: i3.ExtensionService }, { type: i4.NodePermissionService }, { type: i1.AppConfigService }, { type: i5.MatIconRegistry }, { type: i6.DomSanitizer }, { type: i1.LogService }] });
480
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmV4dGVuc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2FwcC5leHRlbnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBWSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBRUwsaUJBQWlCLEVBR2pCLHNCQUFzQixFQUV0QixnQkFBZ0IsRUFFaEIsV0FBVyxFQUNYLFlBQVksRUFJWixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBS2hCLFdBQVcsRUFDWixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUk1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBTXJDLE1BQU0sT0FBTyxtQkFBbUI7SUF1RHJCO0lBQ0c7SUFDQTtJQUNBO0lBQ0g7SUFDQTtJQUNHO0lBQ0E7SUFDQTtJQTlESixXQUFXLEdBQUcsSUFBSSxlQUFlLENBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQzlELG1CQUFtQixHQUFHLElB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wqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFwcFN0b3JlLCBnZXRSdWxlQ29udGV4dCB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7XG4gIENvbnRlbnRBY3Rpb25SZWYsXG4gIENvbnRlbnRBY3Rpb25UeXBlLFxuICBEb2N1bWVudExpc3RQcmVzZXRSZWYsXG4gIEV4dGVuc2lvbkNvbmZpZyxcbiAgRXh0ZW5zaW9uTG9hZGVyU2VydmljZSxcbiAgRXh0ZW5zaW9uUmVmLFxuICBFeHRlbnNpb25TZXJ2aWNlLFxuICBJY29uUmVmLFxuICBtZXJnZUFycmF5cyxcbiAgbWVyZ2VPYmplY3RzLFxuICBOYXZCYXJHcm91cFJlZixcbiAgTmF2aWdhdGlvblN0YXRlLFxuICBQcm9maWxlU3RhdGUsXG4gIHJlZHVjZUVtcHR5TWVudXMsXG4gIHJlZHVjZVNlcGFyYXRvcnMsXG4gIFJ1bGVDb250ZXh0LFxuICBSdWxlRXZhbHVhdG9yLFxuICBTZWxlY3Rpb25TdGF0ZSxcbiAgU2lkZWJhclRhYlJlZixcbiAgc29ydEJ5T3JkZXJcbn0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UsIEF1dGhlbnRpY2F0aW9uU2VydmljZSwgTG9nU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vZGVFbnRyeSwgUmVwb3NpdG9yeUluZm8gfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IFZpZXdlclJ1bGVzIH0gZnJvbSAnLi4vbW9kZWxzL3ZpZXdlci5ydWxlcyc7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gJy4uL21vZGVscy90eXBlcyc7XG5pbXBvcnQgeyBOb2RlUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ub2RlLXBlcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTZWFyY2hDYXRlZ29yeSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFwcEV4dGVuc2lvblNlcnZpY2UgaW1wbGVtZW50cyBSdWxlQ29udGV4dCB7XG4gIHByaXZhdGUgX3JlZmVyZW5jZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEV4dGVuc2lvblJlZltdPihbXSk7XG4gIGJ1bGtBY3Rpb25FeGVjdXRlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIG5hdmJhcjogQXJyYXk8TmF2QmFyR3JvdXBSZWY+ID0gW107XG4gIHNpZGViYXJUYWJzOiBBcnJheTxTaWRlYmFyVGFiUmVmPiA9IFtdO1xuICBjb250ZW50TWV0YWRhdGE6IGFueTtcbiAgc2VhcmNoOiBhbnk7XG4gIHZpZXdlclJ1bGVzOiBWaWV3ZXJSdWxlcyA9IHt9O1xuXG4gIHByaXZhdGUgX2hlYWRlckFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PihbXSk7XG4gIHByaXZhdGUgX3Rvb2xiYXJBY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4oW10pO1xuICBwcml2YXRlIF92aWV3ZXJUb29sYmFyQWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfc2hhcmVkTGlua1ZpZXdlclRvb2xiYXJBY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4oW10pO1xuICBwcml2YXRlIF9jb250ZXh0TWVudUFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PihbXSk7XG4gIHByaXZhdGUgX29wZW5XaXRoQWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfY3JlYXRlQWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfc2lkZWJhckFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PihbXSk7XG4gIHByaXZhdGUgX2JhZGdlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8QmFkZ2U+PihbXSk7XG4gIHByaXZhdGUgX2ZpbGVzRG9jdW1lbnRMaXN0UHJlc2V0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxEb2N1bWVudExpc3RQcmVzZXRSZWY+PihbXSk7XG4gIHByaXZhdGUgX2N1c3RvbU1ldGFkYXRhUGFuZWxzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4oW10pO1xuICBwcml2YXRlIF9idWxrQWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcblxuICBkb2N1bWVudExpc3RQcmVzZXRzOiB7XG4gICAgbGlicmFyaWVzOiBBcnJheTxEb2N1bWVudExpc3RQcmVzZXRSZWY+O1xuICAgIGZhdm9yaXRlTGlicmFyaWVzOiBBcnJheTxEb2N1bWVudExpc3RQcmVzZXRSZWY+O1xuICAgIHNoYXJlZDogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgICByZWNlbnQ6IEFycmF5PERvY3VtZW50TGlzdFByZXNldFJlZj47XG4gICAgZmF2b3JpdGVzOiBBcnJheTxEb2N1bWVudExpc3RQcmVzZXRSZWY+O1xuICAgIHRyYXNoY2FuOiBBcnJheTxEb2N1bWVudExpc3RQcmVzZXRSZWY+O1xuICAgIHNlYXJjaExpYnJhcmllczogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgICBzZWFyY2hSZXN1bHRzOiBBcnJheTxEb2N1bWVudExpc3RQcmVzZXRSZWY+O1xuICB9ID0ge1xuICAgIGxpYnJhcmllczogW10sXG4gICAgZmF2b3JpdGVMaWJyYXJpZXM6IFtdLFxuICAgIHNoYXJlZDogW10sXG4gICAgcmVjZW50OiBbXSxcbiAgICBmYXZvcml0ZXM6IFtdLFxuICAgIHRyYXNoY2FuOiBbXSxcbiAgICBzZWFyY2hMaWJyYXJpZXM6IFtdLFxuICAgIHNlYXJjaFJlc3VsdHM6IFtdXG4gIH07XG5cbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb25TdGF0ZTtcbiAgbmF2aWdhdGlvbjogTmF2aWdhdGlvblN0YXRlO1xuICBwcm9maWxlOiBQcm9maWxlU3RhdGU7XG4gIHJlcG9zaXRvcnk6IFJlcG9zaXRvcnlJbmZvO1xuICB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW47XG5cbiAgcmVmZXJlbmNlcyQ6IE9ic2VydmFibGU8RXh0ZW5zaW9uUmVmW10+O1xuICBmaWxlc0RvY3VtZW50TGlzdFByZXNldCQ6IE9ic2VydmFibGU8RG9jdW1lbnRMaXN0UHJlc2V0UmVmW10+ID0gdGhpcy5fZmlsZXNEb2N1bWVudExpc3RQcmVzZXQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uZmlnOiBFeHRlbnNpb25Db25maWc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGF1dGg6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPEFwcFN0b3JlPixcbiAgICBwcm90ZWN0ZWQgbG9hZGVyOiBFeHRlbnNpb25Mb2FkZXJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBleHRlbnNpb25zOiBFeHRlbnNpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBwZXJtaXNzaW9uczogTm9kZVBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1hdEljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LFxuICAgIHByb3RlY3RlZCBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcm90ZWN0ZWQgbG9nZ2VyOiBMb2dTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMucmVmZXJlbmNlcyQgPSB0aGlzLl9yZWZlcmVuY2VzLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgdGhpcy5zdG9yZS5zZWxlY3QoZ2V0UnVsZUNvbnRleHQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGlvbiA9IHJlc3VsdC5zZWxlY3Rpb247XG4gICAgICB0aGlzLm5hdmlnYXRpb24gPSByZXN1bHQubmF2aWdhdGlvbjtcbiAgICAgIHRoaXMucHJvZmlsZSA9IHJlc3VsdC5wcm9maWxlO1xuICAgICAgdGhpcy5yZXBvc2l0b3J5ID0gcmVzdWx0LnJlcG9zaXRvcnk7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgICB0aGlzLnNldHVwKHRoaXMuY29uZmlnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5jb25maWcgPSBhd2FpdCB0aGlzLmV4dGVuc2lvbnMubG9hZCgpO1xuICAgIHRoaXMuc2V0dXAodGhpcy5jb25maWcpO1xuICB9XG5cbiAgc2V0dXAoY29uZmlnOiBFeHRlbnNpb25Db25maWcpIHtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0V4dGVuc2lvbiBjb25maWd1cmF0aW9uIG5vdCBmb3VuZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2hlYWRlckFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRDb250ZW50QWN0aW9ucyhjb25maWcsICdmZWF0dXJlcy5oZWFkZXInKSk7XG4gICAgdGhpcy5fc2lkZWJhckFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRDb250ZW50QWN0aW9ucyhjb25maWcsICdmZWF0dXJlcy5zaWRlYmFyLnRvb2xiYXInKSk7XG4gICAgdGhpcy5fdG9vbGJhckFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRDb250ZW50QWN0aW9ucyhjb25maWcsICdmZWF0dXJlcy50b29sYmFyJykpO1xuICAgIHRoaXMuX3ZpZXdlclRvb2xiYXJBY3Rpb25zLm5leHQodGhpcy5sb2FkZXIuZ2V0Q29udGVudEFjdGlvbnMoY29uZmlnLCAnZmVhdHVyZXMudmlld2VyLnRvb2xiYXJBY3Rpb25zJykpO1xuICAgIHRoaXMuX3NoYXJlZExpbmtWaWV3ZXJUb29sYmFyQWN0aW9ucy5uZXh0KHRoaXMubG9hZGVyLmdldENvbnRlbnRBY3Rpb25zKGNvbmZpZywgJ2ZlYXR1cmVzLnZpZXdlci5zaGFyZWQudG9vbGJhckFjdGlvbnMnKSk7XG4gICAgdGhpcy5fY29udGV4dE1lbnVBY3Rpb25zLm5leHQodGhpcy5sb2FkZXIuZ2V0Q29udGVudEFjdGlvbnMoY29uZmlnLCAnZmVhdHVyZXMuY29udGV4dE1lbnUnKSk7XG4gICAgdGhpcy5fb3BlbldpdGhBY3Rpb25zLm5leHQodGhpcy5sb2FkZXIuZ2V0Q29udGVudEFjdGlvbnMoY29uZmlnLCAnZmVhdHVyZXMudmlld2VyLm9wZW5XaXRoJykpO1xuICAgIHRoaXMuX2NyZWF0ZUFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRFbGVtZW50czxDb250ZW50QWN0aW9uUmVmPihjb25maWcsICdmZWF0dXJlcy5jcmVhdGUnKSk7XG4gICAgdGhpcy5fYmFkZ2VzLm5leHQodGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8QmFkZ2U+KGNvbmZpZywgJ2ZlYXR1cmVzLmJhZGdlcycpKTtcbiAgICB0aGlzLl9maWxlc0RvY3VtZW50TGlzdFByZXNldC5uZXh0KHRoaXMuZ2V0RG9jdW1lbnRMaXN0UHJlc2V0KGNvbmZpZywgJ2ZpbGVzJykpO1xuICAgIHRoaXMuX2N1c3RvbU1ldGFkYXRhUGFuZWxzLm5leHQodGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8Q29udGVudEFjdGlvblJlZj4oY29uZmlnLCAnZmVhdHVyZXMuY3VzdG9tTWV0YWRhdGFQYW5lbHMnKSk7XG4gICAgdGhpcy5fYnVsa0FjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRFbGVtZW50czxDb250ZW50QWN0aW9uUmVmPihjb25maWcsICdmZWF0dXJlcy5idWxrLWFjdGlvbnMnKSk7XG5cbiAgICB0aGlzLm5hdmJhciA9IHRoaXMubG9hZE5hdkJhcihjb25maWcpO1xuICAgIHRoaXMuc2lkZWJhclRhYnMgPSB0aGlzLmxvYWRlci5nZXRFbGVtZW50czxTaWRlYmFyVGFiUmVmPihjb25maWcsICdmZWF0dXJlcy5zaWRlYmFyLnRhYnMnKTtcbiAgICB0aGlzLmNvbnRlbnRNZXRhZGF0YSA9IHRoaXMubG9hZENvbnRlbnRNZXRhZGF0YShjb25maWcpO1xuICAgIHRoaXMuc2VhcmNoID0gdGhpcy5sb2FkU2VhcmNoRm9ybXMoY29uZmlnKTtcbiAgICB0aGlzLnNlYXJjaD8uZm9yRWFjaCgoc2VhcmNoU2V0KSA9PiB7XG4gICAgICBzZWFyY2hTZXQuY2F0ZWdvcmllcyA9IHNlYXJjaFNldC5jYXRlZ29yaWVzPy5maWx0ZXIoKGNhdGVnb3J5KSA9PiB0aGlzLmZpbHRlclZpc2libGUoY2F0ZWdvcnkpKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZG9jdW1lbnRMaXN0UHJlc2V0cyA9IHtcbiAgICAgIGxpYnJhcmllczogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAnbGlicmFyaWVzJyksXG4gICAgICBmYXZvcml0ZUxpYnJhcmllczogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAnZmF2b3JpdGVMaWJyYXJpZXMnKSxcbiAgICAgIHNoYXJlZDogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAnc2hhcmVkJyksXG4gICAgICByZWNlbnQ6IHRoaXMuZ2V0RG9jdW1lbnRMaXN0UHJlc2V0KGNvbmZpZywgJ3JlY2VudCcpLFxuICAgICAgZmF2b3JpdGVzOiB0aGlzLmdldERvY3VtZW50TGlzdFByZXNldChjb25maWcsICdmYXZvcml0ZXMnKSxcbiAgICAgIHRyYXNoY2FuOiB0aGlzLmdldERvY3VtZW50TGlzdFByZXNldChjb25maWcsICd0cmFzaGNhbicpLFxuICAgICAgc2VhcmNoTGlicmFyaWVzOiB0aGlzLmdldERvY3VtZW50TGlzdFByZXNldChjb25maWcsICdzZWFyY2gtbGlicmFyaWVzJyksXG4gICAgICBzZWFyY2hSZXN1bHRzOiB0aGlzLmdldERvY3VtZW50TGlzdFByZXNldChjb25maWcsICdzZWFyY2gtcmVzdWx0cycpXG4gICAgfTtcblxuICAgIHRoaXMud2l0aENyZWRlbnRpYWxzID0gdGhpcy5hcHBDb25maWcuZ2V0PGJvb2xlYW4+KCdhdXRoLndpdGhDcmVkZW50aWFscycsIGZhbHNlKTtcblxuICAgIGlmIChjb25maWcuZmVhdHVyZXM/LnZpZXdlcikge1xuICAgICAgdGhpcy52aWV3ZXJSdWxlcyA9IChjb25maWcuZmVhdHVyZXMudmlld2VyWydydWxlcyddIGFzIFZpZXdlclJ1bGVzKSB8fCB7fTtcbiAgICB9XG5cbiAgICB0aGlzLnJlZ2lzdGVySWNvbnMoY29uZmlnKTtcblxuICAgIGNvbnN0IHJlZmVyZW5jZXMgPSAoY29uZmlnLiRyZWZlcmVuY2VzIHx8IFtdKS5maWx0ZXIoKGVudHJ5KSA9PiB0eXBlb2YgZW50cnkgPT09ICdvYmplY3QnKS5tYXAoKGVudHJ5KSA9PiBlbnRyeSBhcyBFeHRlbnNpb25SZWYpO1xuICAgIHRoaXMuX3JlZmVyZW5jZXMubmV4dChyZWZlcmVuY2VzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3Rlckljb25zKGNvbmZpZzogRXh0ZW5zaW9uQ29uZmlnKSB7XG4gICAgY29uc3QgaWNvbnM6IEFycmF5PEljb25SZWY+ID0gdGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8SWNvblJlZj4oY29uZmlnLCAnZmVhdHVyZXMuaWNvbnMnKS5maWx0ZXIoKGVudHJ5KSA9PiAhZW50cnkuZGlzYWJsZWQpO1xuXG4gICAgZm9yIChjb25zdCBpY29uIG9mIGljb25zKSB7XG4gICAgICBjb25zdCBbbnMsIGlkXSA9IGljb24uaWQuc3BsaXQoJzonKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gaWNvbi52YWx1ZTtcblxuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBNaXNzaW5nIGljb24gdmFsdWUgZm9yIFwiJHtpY29uLmlkfVwiLmApO1xuICAgICAgfSBlbHNlIGlmICghbnMgfHwgIWlkKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYEluY29ycmVjdCBpY29uIGlkIGZvcm1hdC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWF0SWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25Jbk5hbWVzcGFjZShucywgaWQsIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh2YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBsb2FkTmF2QmFyKGNvbmZpZzogRXh0ZW5zaW9uQ29uZmlnKTogQXJyYXk8TmF2QmFyR3JvdXBSZWY+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8TmF2QmFyR3JvdXBSZWY+KGNvbmZpZywgJ2ZlYXR1cmVzLm5hdmJhcicpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERvY3VtZW50TGlzdFByZXNldChjb25maWc6IEV4dGVuc2lvbkNvbmZpZywga2V5OiBzdHJpbmcpOiBEb2N1bWVudExpc3RQcmVzZXRSZWZbXSB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGVyXG4gICAgICAuZ2V0RWxlbWVudHM8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPihjb25maWcsIGBmZWF0dXJlcy5kb2N1bWVudExpc3QuJHtrZXl9YClcbiAgICAgIC5maWx0ZXIoKGdyb3VwKSA9PiB0aGlzLmZpbHRlclZpc2libGUoZ3JvdXApKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+ICFlbnRyeS5kaXNhYmxlZClcbiAgICAgIC5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgIGVudHJ5LnJlc2l6YWJsZSA9IGVudHJ5LnJlc2l6YWJsZSA/PyB0cnVlO1xuICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICB9KVxuICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpO1xuICB9XG5cbiAgZ2V0QXBwbGljYXRpb25OYXZpZ2F0aW9uKGVsZW1lbnRzKTogQXJyYXk8TmF2QmFyR3JvdXBSZWY+IHtcbiAgICByZXR1cm4gZWxlbWVudHNcbiAgICAgIC5maWx0ZXIoKGdyb3VwKSA9PiB0aGlzLmZpbHRlclZpc2libGUoZ3JvdXApKVxuICAgICAgLm1hcCgoZ3JvdXApID0+ICh7XG4gICAgICAgIC4uLmdyb3VwLFxuICAgICAgICBpdGVtczogKGdyb3VwLml0ZW1zIHx8IFtdKVxuICAgICAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiAhZW50cnkuZGlzYWJsZWQpXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGl0ZW0pKVxuICAgICAgICAgIC5zb3J0KHNvcnRCeU9yZGVyKVxuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gaXRlbS5jaGlsZHJlblxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiAhZW50cnkuZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoY2hpbGQpID0+IHRoaXMuZmlsdGVyVmlzaWJsZShjaGlsZCkpXG4gICAgICAgICAgICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpXG4gICAgICAgICAgICAgICAgLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC5jb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkLmNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkUm91dGVSZWYgPSB0aGlzLmV4dGVuc2lvbnMuZ2V0Um91dGVCeUlkKGNoaWxkLnJvdXRlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRVcmwgPSBgLyR7Y2hpbGRSb3V0ZVJlZiA/IGNoaWxkUm91dGVSZWYucGF0aCA6IGNoaWxkLnJvdXRlfWA7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgdXJsOiBjaGlsZFVybFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBjaGlsZC5jbGlja1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLml0ZW1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGl0ZW0uY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0gfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpdGVtLmNsaWNrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJvdXRlUmVmID0gdGhpcy5leHRlbnNpb25zLmdldFJvdXRlQnlJZChpdGVtLnJvdXRlKTtcbiAgICAgICAgICAgICAgY29uc3QgdXJsID0gYC8ke3JvdXRlUmVmID8gcm91dGVSZWYucGF0aCA6IGl0ZW0ucm91dGV9YDtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgIHVybFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICBhY3Rpb246IGl0ZW0uY2xpY2tcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSlcbiAgICAgICAgICAucmVkdWNlKHJlZHVjZUVtcHR5TWVudXMsIFtdKVxuICAgICAgfSkpO1xuICB9XG5cbiAgbG9hZENvbnRlbnRNZXRhZGF0YShjb25maWc6IEV4dGVuc2lvbkNvbmZpZyk6IGFueSB7XG4gICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmxvYWRlci5nZXRFbGVtZW50czxhbnk+KGNvbmZpZywgJ2ZlYXR1cmVzLmNvbnRlbnQtbWV0YWRhdGEtcHJlc2V0cycpO1xuICAgIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgcHJlc2V0cyA9IHt9O1xuICAgIHByZXNldHMgPSB0aGlzLmZpbHRlckRpc2FibGVkKG1lcmdlT2JqZWN0cyhwcmVzZXRzLCAuLi5lbGVtZW50cykpO1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmFwcENvbmZpZy5jb25maWdbJ2NvbnRlbnQtbWV0YWRhdGEnXSB8fCB7fTtcbiAgICBtZXRhZGF0YS5wcmVzZXRzID0gcHJlc2V0cztcblxuICAgIHRoaXMuYXBwQ29uZmlnLmNvbmZpZ1snY29udGVudC1tZXRhZGF0YSddID0gbWV0YWRhdGE7XG4gICAgcmV0dXJuIHsgcHJlc2V0cyB9O1xuICB9XG5cbiAgbG9hZFNlYXJjaEZvcm1zKGNvbmZpZzogRXh0ZW5zaW9uQ29uZmlnKTogYW55IHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMubG9hZGVyLmdldEVsZW1lbnRzPGFueT4oY29uZmlnLCAnZmVhdHVyZXMuc2VhcmNoJyk7XG4gICAgaWYgKCFlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaCA9IG1lcmdlQXJyYXlzKFtdLCBlbGVtZW50cylcbiAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiAhZW50cnkuZGlzYWJsZWQpXG4gICAgICAuZmlsdGVyKChlbnRyeSkgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGVudHJ5KSlcbiAgICAgIC5zb3J0KHNvcnRCeU9yZGVyKTtcblxuICAgIHRoaXMuYXBwQ29uZmlnLmNvbmZpZ1snc2VhcmNoJ10gPSBzZWFyY2g7XG4gICAgcmV0dXJuIHNlYXJjaDtcbiAgfVxuXG4gIGZpbHRlckRpc2FibGVkKG9iamVjdDogQXJyYXk8eyBkaXNhYmxlZDogYm9vbGVhbiB9PiB8IHsgZGlzYWJsZWQ6IGJvb2xlYW4gfSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcbiAgICAgIHJldHVybiBvYmplY3QuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5kaXNhYmxlZCkubWFwKChpdGVtKSA9PiB0aGlzLmZpbHRlckRpc2FibGVkKGl0ZW0pKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoIW9iamVjdC5kaXNhYmxlZCkge1xuICAgICAgICBPYmplY3Qua2V5cyhvYmplY3QpLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSB0aGlzLmZpbHRlckRpc2FibGVkKG9iamVjdFtwcm9wXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbiAgfVxuXG4gIGdldFNpZGViYXJUYWJzKCk6IEFycmF5PFNpZGViYXJUYWJSZWY+IHtcbiAgICByZXR1cm4gdGhpcy5zaWRlYmFyVGFicy5maWx0ZXIoKGFjdGlvbikgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGFjdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3Rpb25EaXNhYmxlZEZyb21SdWxlKGFjdGlvbjogQ29udGVudEFjdGlvblJlZikge1xuICAgIGxldCBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgaWYgKGFjdGlvbj8ucnVsZXM/LmVuYWJsZWQpIHtcbiAgICAgIGRpc2FibGVkID0gIXRoaXMuZXh0ZW5zaW9ucy5ldmFsdWF0ZVJ1bGUoYWN0aW9uLnJ1bGVzLmVuYWJsZWQsIHRoaXMpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY3Rpb24sXG4gICAgICBkaXNhYmxlZFxuICAgIH07XG4gIH1cblxuICB1cGRhdGVTaWRlYmFyQWN0aW9ucygpIHtcbiAgICB0aGlzLl9zaWRlYmFyQWN0aW9ucy5uZXh0KHRoaXMubG9hZGVyLmdldENvbnRlbnRBY3Rpb25zKHRoaXMuY29uZmlnLCAnZmVhdHVyZXMuc2lkZWJhci50b29sYmFyJykpO1xuICB9XG5cbiAgZ2V0Q3JlYXRlQWN0aW9ucygpOiBPYnNlcnZhYmxlPEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUFjdGlvbnMucGlwZShcbiAgICAgIG1hcCgoY3JlYXRlQWN0aW9ucykgPT5cbiAgICAgICAgY3JlYXRlQWN0aW9uc1xuICAgICAgICAgIC5maWx0ZXIoKGFjdGlvbikgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGFjdGlvbikpXG4gICAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiB0aGlzLmNvcHlBY3Rpb24oYWN0aW9uKSlcbiAgICAgICAgICAubWFwKChhY3Rpb24pID0+IHRoaXMuYnVpbGRNZW51KGFjdGlvbikpXG4gICAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiB0aGlzLnNldEFjdGlvbkRpc2FibGVkRnJvbVJ1bGUoYWN0aW9uKSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgZ2V0QmFkZ2VzKG5vZGU6IE5vZGVFbnRyeSk6IE9ic2VydmFibGU8QXJyYXk8QmFkZ2U+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2JhZGdlcy5waXBlKG1hcCgoYmFkZ2VzKSA9PiBiYWRnZXMuZmlsdGVyKChiYWRnZSkgPT4gdGhpcy5ldmFsdWF0ZVJ1bGUoYmFkZ2UucnVsZXMudmlzaWJsZSwgbm9kZSkpKSk7XG4gIH1cblxuICBnZXRDdXN0b21NZXRhZGF0YVBhbmVscyhub2RlOiBOb2RlRW50cnkpOiBPYnNlcnZhYmxlPEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2N1c3RvbU1ldGFkYXRhUGFuZWxzLnBpcGUobWFwKChwYW5lbHMpID0+IHBhbmVscy5maWx0ZXIoKHBhbmVsKSA9PiB0aGlzLmV2YWx1YXRlUnVsZShwYW5lbC5ydWxlcy52aXNpYmxlLCBub2RlKSkpKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRNZW51KGFjdGlvblJlZjogQ29udGVudEFjdGlvblJlZik6IENvbnRlbnRBY3Rpb25SZWYge1xuICAgIGlmIChhY3Rpb25SZWYudHlwZSA9PT0gQ29udGVudEFjdGlvblR5cGUubWVudSAmJiBhY3Rpb25SZWYuY2hpbGRyZW4gJiYgYWN0aW9uUmVmLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gYWN0aW9uUmVmLmNoaWxkcmVuLmZpbHRlcigoYWN0aW9uKSA9PiB0aGlzLmZpbHRlclZpc2libGUoYWN0aW9uKSkubWFwKChhY3Rpb24pID0+IHRoaXMuYnVpbGRNZW51KGFjdGlvbikpO1xuXG4gICAgICBhY3Rpb25SZWYuY2hpbGRyZW4gPSBjaGlsZHJlblxuICAgICAgICAubWFwKChhY3Rpb24pID0+IHRoaXMuc2V0QWN0aW9uRGlzYWJsZWRGcm9tUnVsZShhY3Rpb24pKVxuICAgICAgICAuc29ydChzb3J0QnlPcmRlcilcbiAgICAgICAgLnJlZHVjZShyZWR1Y2VFbXB0eU1lbnVzLCBbXSlcbiAgICAgICAgLnJlZHVjZShyZWR1Y2VTZXBhcmF0b3JzLCBbXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGlvblJlZjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxsb3dlZEFjdGlvbnMoYWN0aW9uczogQ29udGVudEFjdGlvblJlZltdKTogQ29udGVudEFjdGlvblJlZltdIHtcbiAgICByZXR1cm4gKGFjdGlvbnMgfHwgW10pXG4gICAgICAuZmlsdGVyKChhY3Rpb24pID0+IHRoaXMuZmlsdGVyVmlzaWJsZShhY3Rpb24pKVxuICAgICAgLm1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gQ29udGVudEFjdGlvblR5cGUubWVudSkge1xuICAgICAgICAgIGNvbnN0IGNvcHkgPSB0aGlzLmNvcHlBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICBpZiAoY29weS5jaGlsZHJlbiAmJiBjb3B5LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvcHkuY2hpbGRyZW4gPSBjb3B5LmNoaWxkcmVuXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiAhZW50cnkuZGlzYWJsZWQpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGNoaWxkQWN0aW9uKSA9PiB0aGlzLmZpbHRlclZpc2libGUoY2hpbGRBY3Rpb24pKVxuICAgICAgICAgICAgICAuc29ydChzb3J0QnlPcmRlcilcbiAgICAgICAgICAgICAgLnJlZHVjZShyZWR1Y2VTZXBhcmF0b3JzLCBbXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY3Rpb247XG4gICAgICB9KVxuICAgICAgLm1hcCgoYWN0aW9uKSA9PiB0aGlzLnNldEFjdGlvbkRpc2FibGVkRnJvbVJ1bGUoYWN0aW9uKSlcbiAgICAgIC5yZWR1Y2UocmVkdWNlRW1wdHlNZW51cywgW10pXG4gICAgICAucmVkdWNlKHJlZHVjZVNlcGFyYXRvcnMsIFtdKTtcbiAgfVxuXG4gIGdldEFsbG93ZWRTaWRlYmFyQWN0aW9ucygpOiBPYnNlcnZhYmxlPEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX3NpZGViYXJBY3Rpb25zLnBpcGUobWFwKChzaWRlYmFyQWN0aW9ucykgPT4gdGhpcy5nZXRBbGxvd2VkQWN0aW9ucyhzaWRlYmFyQWN0aW9ucykpKTtcbiAgfVxuXG4gIGdldEFsbG93ZWRUb29sYmFyQWN0aW9ucygpOiBPYnNlcnZhYmxlPEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rvb2xiYXJBY3Rpb25zLnBpcGUobWFwKCh0b29sYmFyQWN0aW9ucykgPT4gdGhpcy5nZXRBbGxvd2VkQWN0aW9ucyh0b29sYmFyQWN0aW9ucykpKTtcbiAgfVxuXG4gIGdldFZpZXdlclRvb2xiYXJBY3Rpb25zKCk6IE9ic2VydmFibGU8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+IHtcbiAgICByZXR1cm4gdGhpcy5fdmlld2VyVG9vbGJhckFjdGlvbnMucGlwZShtYXAoKHZpZXdlclRvb2xiYXJBY3Rpb25zKSA9PiB0aGlzLmdldEFsbG93ZWRBY3Rpb25zKHZpZXdlclRvb2xiYXJBY3Rpb25zKSkpO1xuICB9XG5cbiAgZ2V0QnVsa0FjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9idWxrQWN0aW9ucy5waXBlKG1hcCgoYnVsa0FjdGlvbnMpID0+IHRoaXMuZ2V0QWxsb3dlZEFjdGlvbnMoYnVsa0FjdGlvbnMpKSk7XG4gIH1cblxuICBnZXRPcGVuV2l0aEFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9vcGVuV2l0aEFjdGlvbnMucGlwZShtYXAoKG9wZW5XaXRoQWN0aW9ucykgPT4gdGhpcy5nZXRBbGxvd2VkQWN0aW9ucyhvcGVuV2l0aEFjdGlvbnMpKSk7XG4gIH1cblxuICBnZXRTaGFyZWRMaW5rVmlld2VyVG9vbGJhckFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9zaGFyZWRMaW5rVmlld2VyVG9vbGJhckFjdGlvbnMucGlwZShcbiAgICAgIG1hcCgoc2hhcmVkTGlua1ZpZXdlclRvb2xiYXJBY3Rpb25zKSA9PiAoIXRoaXMuc2VsZWN0aW9uLmlzRW1wdHkgPyB0aGlzLmdldEFsbG93ZWRBY3Rpb25zKHNoYXJlZExpbmtWaWV3ZXJUb29sYmFyQWN0aW9ucykgOiBbXSkpXG4gICAgKTtcbiAgfVxuXG4gIGdldEhlYWRlckFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9oZWFkZXJBY3Rpb25zLnBpcGUoXG4gICAgICBtYXAoKGhlYWRlckFjdGlvbnMpID0+XG4gICAgICAgIGhlYWRlckFjdGlvbnNcbiAgICAgICAgICAuZmlsdGVyKChhY3Rpb24pID0+IHRoaXMuZmlsdGVyVmlzaWJsZShhY3Rpb24pKVxuICAgICAgICAgIC5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBDb250ZW50QWN0aW9uVHlwZS5tZW51KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvcHkgPSB0aGlzLmNvcHlBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgICAgaWYgKGNvcHkuY2hpbGRyZW4gJiYgY29weS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29weS5jaGlsZHJlbiA9IGNvcHkuY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGNoaWxkQWN0aW9uKSA9PiB0aGlzLmZpbHRlclZpc2libGUoY2hpbGRBY3Rpb24pKVxuICAgICAgICAgICAgICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpXG4gICAgICAgICAgICAgICAgICAucmVkdWNlKHJlZHVjZUVtcHR5TWVudXMsIFtdKVxuICAgICAgICAgICAgICAgICAgLnJlZHVjZShyZWR1Y2VTZXBhcmF0b3JzLCBbXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBhY3Rpb247XG4gICAgICAgICAgfSlcbiAgICAgICAgICAubWFwKChhY3Rpb24pID0+IHRoaXMuc2V0QWN0aW9uRGlzYWJsZWRGcm9tUnVsZShhY3Rpb24pKVxuICAgICAgICAgIC5zb3J0KHNvcnRCeU9yZGVyKVxuICAgICAgICAgIC5yZWR1Y2UocmVkdWNlRW1wdHlNZW51cywgW10pXG4gICAgICAgICAgLnJlZHVjZShyZWR1Y2VTZXBhcmF0b3JzLCBbXSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgZ2V0QWxsb3dlZENvbnRleHRNZW51QWN0aW9ucygpOiBPYnNlcnZhYmxlPEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRleHRNZW51QWN0aW9ucy5waXBlKG1hcCgoY29udGV4dE1lbnVBY3Rpb25zKSA9PiAoIXRoaXMuc2VsZWN0aW9uLmlzRW1wdHkgPyB0aGlzLmdldEFsbG93ZWRBY3Rpb25zKGNvbnRleHRNZW51QWN0aW9ucykgOiBbXSkpKTtcbiAgfVxuXG4gIGNvcHlBY3Rpb24oYWN0aW9uOiBDb250ZW50QWN0aW9uUmVmKTogQ29udGVudEFjdGlvblJlZiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjdGlvbixcbiAgICAgIGNoaWxkcmVuOiAoYWN0aW9uLmNoaWxkcmVuIHx8IFtdKS5tYXAoKGNoaWxkKSA9PiB0aGlzLmNvcHlBY3Rpb24oY2hpbGQpKVxuICAgIH07XG4gIH1cblxuICBmaWx0ZXJWaXNpYmxlKGFjdGlvbjogQ29udGVudEFjdGlvblJlZiB8IFNpZGViYXJUYWJSZWYgfCBEb2N1bWVudExpc3RQcmVzZXRSZWYgfCBTZWFyY2hDYXRlZ29yeSk6IGJvb2xlYW4ge1xuICAgIGlmIChhY3Rpb24/LnJ1bGVzPy52aXNpYmxlKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhY3Rpb24ucnVsZXMudmlzaWJsZSkpIHtcbiAgICAgICAgcmV0dXJuIGFjdGlvbi5ydWxlcy52aXNpYmxlLmV2ZXJ5KChydWxlKSA9PiB0aGlzLmV4dGVuc2lvbnMuZXZhbHVhdGVSdWxlKHJ1bGUsIHRoaXMpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbnMuZXZhbHVhdGVSdWxlKGFjdGlvbi5ydWxlcy52aXNpYmxlLCB0aGlzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpc1ZpZXdlckV4dGVuc2lvbkRpc2FibGVkKGV4dGVuc2lvbjogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKGV4dGVuc2lvbikge1xuICAgICAgaWYgKGV4dGVuc2lvbi5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV4dGVuc2lvbi5ydWxlcz8uZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5ldmFsdWF0ZVJ1bGUoZXh0ZW5zaW9uLnJ1bGVzLmRpc2FibGVkLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBydW5BY3Rpb25CeUlkKGlkOiBzdHJpbmcsIGFkZGl0aW9uYWxQYXlsb2FkPzogYW55KSB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5leHRlbnNpb25zLmdldEFjdGlvbkJ5SWQoaWQpO1xuICAgIGlmIChhY3Rpb24pIHtcbiAgICAgIGNvbnN0IHsgdHlwZSwgcGF5bG9hZCB9ID0gYWN0aW9uO1xuICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgc2VsZWN0aW9uOiB0aGlzLnNlbGVjdGlvblxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSB0aGlzLmV4dGVuc2lvbnMucnVuRXhwcmVzc2lvbihwYXlsb2FkLCBjb250ZXh0KTtcblxuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHBheWxvYWQ6IGV4cHJlc3Npb24sXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IGFkZGl0aW9uYWxQYXlsb2FkXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IGlkLFxuICAgICAgICBjb25maWd1cmF0aW9uOiBhZGRpdGlvbmFsUGF5bG9hZFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gdG9kbzogbW92ZSB0byBBREYvUnVsZVNlcnZpY2VcbiAgaXNSdWxlRGVmaW5lZChydWxlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShydWxlSWQgJiYgdGhpcy5nZXRFdmFsdWF0b3IocnVsZUlkKSk7XG4gIH1cblxuICAvLyB0b2RvOiBtb3ZlIHRvIEFERi9SdWxlU2VydmljZVxuICBldmFsdWF0ZVJ1bGUocnVsZUlkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXZhbHVhdG9yID0gdGhpcy5nZXRFdmFsdWF0b3IocnVsZUlkKTtcblxuICAgIGlmIChldmFsdWF0b3IpIHtcbiAgICAgIHJldHVybiBldmFsdWF0b3IodGhpcywgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0RXZhbHVhdG9yKGtleTogc3RyaW5nKTogUnVsZUV2YWx1YXRvciB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5nZXRFdmFsdWF0b3Ioa2V5KTtcbiAgfVxuXG4gIGNhblByZXZpZXdOb2RlKG5vZGU6IE5vZGVFbnRyeSkge1xuICAgIGNvbnN0IHJ1bGVzID0gdGhpcy52aWV3ZXJSdWxlcztcblxuICAgIGlmICh0aGlzLmlzUnVsZURlZmluZWQocnVsZXMuY2FuUHJldmlldykpIHtcbiAgICAgIGNvbnN0IGNhblByZXZpZXcgPSB0aGlzLmV2YWx1YXRlUnVsZShydWxlcy5jYW5QcmV2aWV3LCBub2RlKTtcblxuICAgICAgaWYgKCFjYW5QcmV2aWV3KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNhblNob3dWaWV3ZXJOYXZpZ2F0aW9uKG5vZGU6IE5vZGVFbnRyeSkge1xuICAgIGNvbnN0IHJ1bGVzID0gdGhpcy52aWV3ZXJSdWxlcztcblxuICAgIGlmICh0aGlzLmlzUnVsZURlZmluZWQocnVsZXMuc2hvd05hdmlnYXRpb24pKSB7XG4gICAgICBjb25zdCBzaG93TmF2aWdhdGlvbiA9IHRoaXMuZXZhbHVhdGVSdWxlKHJ1bGVzLnNob3dOYXZpZ2F0aW9uLCBub2RlKTtcbiAgICAgIGlmICghc2hvd05hdmlnYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYnVsa0FjdGlvbkV4ZWN1dGVkKCk6IHZvaWQge1xuICAgIHRoaXMuYnVsa0FjdGlvbkV4ZWN1dGVkJC5uZXh0KCk7XG4gIH1cbn1cbiJdfQ==
489
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmV4dGVuc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2FwcC5leHRlbnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBWSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBRUwsaUJBQWlCLEVBR2pCLHNCQUFzQixFQUV0QixnQkFBZ0IsRUFFaEIsV0FBVyxFQUNYLFlBQVksRUFJWixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBS2hCLFdBQVcsRUFDWixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUk1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBTXJDLE1BQU0sT0FBTyxtQkFBbUI7SUF1RHJCO0lBQ0c7SUFDQTtJQUNBO0lBQ0g7SUFDQTtJQUNHO0lBQ0E7SUFDQTtJQTlESixXQUFXLEdBQUcsSUFBSSxlQUFlLENBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQzlELG1CQUFtQixHQUFHLElB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QUFDO1FBRS9CLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNwQixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO3VHQXpnQlUsbUJBQW1COzJHQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBcHBTdG9yZSwgZ2V0UnVsZUNvbnRleHQgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQge1xuICBDb250ZW50QWN0aW9uUmVmLFxuICBDb250ZW50QWN0aW9uVHlwZSxcbiAgRG9jdW1lbnRMaXN0UHJlc2V0UmVmLFxuICBFeHRlbnNpb25Db25maWcsXG4gIEV4dGVuc2lvbkxvYWRlclNlcnZpY2UsXG4gIEV4dGVuc2lvblJlZixcbiAgRXh0ZW5zaW9uU2VydmljZSxcbiAgSWNvblJlZixcbiAgbWVyZ2VBcnJheXMsXG4gIG1lcmdlT2JqZWN0cyxcbiAgTmF2QmFyR3JvdXBSZWYsXG4gIE5hdmlnYXRpb25TdGF0ZSxcbiAgUHJvZmlsZVN0YXRlLFxuICByZWR1Y2VFbXB0eU1lbnVzLFxuICByZWR1Y2VTZXBhcmF0b3JzLFxuICBSdWxlQ29udGV4dCxcbiAgUnVsZUV2YWx1YXRvcixcbiAgU2VsZWN0aW9uU3RhdGUsXG4gIFNpZGViYXJUYWJSZWYsXG4gIHNvcnRCeU9yZGVyXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlLCBBdXRoZW50aWNhdGlvblNlcnZpY2UsIExvZ1NlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb2RlRW50cnksIFJlcG9zaXRvcnlJbmZvIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBWaWV3ZXJSdWxlcyB9IGZyb20gJy4uL21vZGVscy92aWV3ZXIucnVsZXMnO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tICcuLi9tb2RlbHMvdHlwZXMnO1xuaW1wb3J0IHsgTm9kZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbm9kZS1wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2VhcmNoQ2F0ZWdvcnkgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcHBFeHRlbnNpb25TZXJ2aWNlIGltcGxlbWVudHMgUnVsZUNvbnRleHQge1xuICBwcml2YXRlIF9yZWZlcmVuY2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFeHRlbnNpb25SZWZbXT4oW10pO1xuICBidWxrQWN0aW9uRXhlY3V0ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBuYXZiYXI6IEFycmF5PE5hdkJhckdyb3VwUmVmPiA9IFtdO1xuICBzaWRlYmFyVGFiczogQXJyYXk8U2lkZWJhclRhYlJlZj4gPSBbXTtcbiAgY29udGVudE1ldGFkYXRhOiBhbnk7XG4gIHNlYXJjaDogYW55O1xuICB2aWV3ZXJSdWxlczogVmlld2VyUnVsZXMgPSB7fTtcblxuICBwcml2YXRlIF9oZWFkZXJBY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4oW10pO1xuICBwcml2YXRlIF90b29sYmFyQWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfdmlld2VyVG9vbGJhckFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PihbXSk7XG4gIHByaXZhdGUgX3NoYXJlZExpbmtWaWV3ZXJUb29sYmFyQWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfY29udGV4dE1lbnVBY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4oW10pO1xuICBwcml2YXRlIF9vcGVuV2l0aEFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PihbXSk7XG4gIHByaXZhdGUgX2NyZWF0ZUFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PihbXSk7XG4gIHByaXZhdGUgX3NpZGViYXJBY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4oW10pO1xuICBwcml2YXRlIF9iYWRnZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PEJhZGdlPj4oW10pO1xuICBwcml2YXRlIF9maWxlc0RvY3VtZW50TGlzdFByZXNldCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPj4oW10pO1xuICBwcml2YXRlIF9jdXN0b21NZXRhZGF0YVBhbmVscyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfYnVsa0FjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PihbXSk7XG5cbiAgZG9jdW1lbnRMaXN0UHJlc2V0czoge1xuICAgIGxpYnJhcmllczogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgICBmYXZvcml0ZUxpYnJhcmllczogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgICBzaGFyZWQ6IEFycmF5PERvY3VtZW50TGlzdFByZXNldFJlZj47XG4gICAgcmVjZW50OiBBcnJheTxEb2N1bWVudExpc3RQcmVzZXRSZWY+O1xuICAgIGZhdm9yaXRlczogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgICB0cmFzaGNhbjogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgICBzZWFyY2hMaWJyYXJpZXM6IEFycmF5PERvY3VtZW50TGlzdFByZXNldFJlZj47XG4gICAgc2VhcmNoUmVzdWx0czogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgfSA9IHtcbiAgICBsaWJyYXJpZXM6IFtdLFxuICAgIGZhdm9yaXRlTGlicmFyaWVzOiBbXSxcbiAgICBzaGFyZWQ6IFtdLFxuICAgIHJlY2VudDogW10sXG4gICAgZmF2b3JpdGVzOiBbXSxcbiAgICB0cmFzaGNhbjogW10sXG4gICAgc2VhcmNoTGlicmFyaWVzOiBbXSxcbiAgICBzZWFyY2hSZXN1bHRzOiBbXVxuICB9O1xuXG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uU3RhdGU7XG4gIG5hdmlnYXRpb246IE5hdmlnYXRpb25TdGF0ZTtcbiAgcHJvZmlsZTogUHJvZmlsZVN0YXRlO1xuICByZXBvc2l0b3J5OiBSZXBvc2l0b3J5SW5mbztcbiAgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuO1xuXG4gIHJlZmVyZW5jZXMkOiBPYnNlcnZhYmxlPEV4dGVuc2lvblJlZltdPjtcbiAgZmlsZXNEb2N1bWVudExpc3RQcmVzZXQkOiBPYnNlcnZhYmxlPERvY3VtZW50TGlzdFByZXNldFJlZltdPiA9IHRoaXMuX2ZpbGVzRG9jdW1lbnRMaXN0UHJlc2V0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbmZpZzogRXh0ZW5zaW9uQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhdXRoOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZTxBcHBTdG9yZT4sXG4gICAgcHJvdGVjdGVkIGxvYWRlcjogRXh0ZW5zaW9uTG9hZGVyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZXh0ZW5zaW9uczogRXh0ZW5zaW9uU2VydmljZSxcbiAgICBwdWJsaWMgcGVybWlzc2lvbnM6IE5vZGVQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwdWJsaWMgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBtYXRJY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcbiAgICBwcm90ZWN0ZWQgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJvdGVjdGVkIGxvZ2dlcjogTG9nU2VydmljZVxuICApIHtcbiAgICB0aGlzLnJlZmVyZW5jZXMkID0gdGhpcy5fcmVmZXJlbmNlcy5hc09ic2VydmFibGUoKTtcblxuICAgIHRoaXMuc3RvcmUuc2VsZWN0KGdldFJ1bGVDb250ZXh0KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3Rpb24gPSByZXN1bHQuc2VsZWN0aW9uO1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uID0gcmVzdWx0Lm5hdmlnYXRpb247XG4gICAgICB0aGlzLnByb2ZpbGUgPSByZXN1bHQucHJvZmlsZTtcbiAgICAgIHRoaXMucmVwb3NpdG9yeSA9IHJlc3VsdC5yZXBvc2l0b3J5O1xuXG4gICAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgICAgdGhpcy5zZXR1cCh0aGlzLmNvbmZpZyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMuY29uZmlnID0gYXdhaXQgdGhpcy5leHRlbnNpb25zLmxvYWQoKTtcbiAgICB0aGlzLnNldHVwKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHNldHVwKGNvbmZpZzogRXh0ZW5zaW9uQ29uZmlnKSB7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdFeHRlbnNpb24gY29uZmlndXJhdGlvbiBub3QgZm91bmQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9oZWFkZXJBY3Rpb25zLm5leHQodGhpcy5sb2FkZXIuZ2V0Q29udGVudEFjdGlvbnMoY29uZmlnLCAnZmVhdHVyZXMuaGVhZGVyJykpO1xuICAgIHRoaXMuX3NpZGViYXJBY3Rpb25zLm5leHQodGhpcy5sb2FkZXIuZ2V0Q29udGVudEFjdGlvbnMoY29uZmlnLCAnZmVhdHVyZXMuc2lkZWJhci50b29sYmFyJykpO1xuICAgIHRoaXMuX3Rvb2xiYXJBY3Rpb25zLm5leHQodGhpcy5sb2FkZXIuZ2V0Q29udGVudEFjdGlvbnMoY29uZmlnLCAnZmVhdHVyZXMudG9vbGJhcicpKTtcbiAgICB0aGlzLl92aWV3ZXJUb29sYmFyQWN0aW9ucy5uZXh0KHRoaXMubG9hZGVyLmdldENvbnRlbnRBY3Rpb25zKGNvbmZpZywgJ2ZlYXR1cmVzLnZpZXdlci50b29sYmFyQWN0aW9ucycpKTtcbiAgICB0aGlzLl9zaGFyZWRMaW5rVmlld2VyVG9vbGJhckFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRDb250ZW50QWN0aW9ucyhjb25maWcsICdmZWF0dXJlcy52aWV3ZXIuc2hhcmVkLnRvb2xiYXJBY3Rpb25zJykpO1xuICAgIHRoaXMuX2NvbnRleHRNZW51QWN0aW9ucy5uZXh0KHRoaXMubG9hZGVyLmdldENvbnRlbnRBY3Rpb25zKGNvbmZpZywgJ2ZlYXR1cmVzLmNvbnRleHRNZW51JykpO1xuICAgIHRoaXMuX29wZW5XaXRoQWN0aW9ucy5uZXh0KHRoaXMubG9hZGVyLmdldENvbnRlbnRBY3Rpb25zKGNvbmZpZywgJ2ZlYXR1cmVzLnZpZXdlci5vcGVuV2l0aCcpKTtcbiAgICB0aGlzLl9jcmVhdGVBY3Rpb25zLm5leHQodGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8Q29udGVudEFjdGlvblJlZj4oY29uZmlnLCAnZmVhdHVyZXMuY3JlYXRlJykpO1xuICAgIHRoaXMuX2JhZGdlcy5uZXh0KHRoaXMubG9hZGVyLmdldEVsZW1lbnRzPEJhZGdlPihjb25maWcsICdmZWF0dXJlcy5iYWRnZXMnKSk7XG4gICAgdGhpcy5fZmlsZXNEb2N1bWVudExpc3RQcmVzZXQubmV4dCh0aGlzLmdldERvY3VtZW50TGlzdFByZXNldChjb25maWcsICdmaWxlcycpKTtcbiAgICB0aGlzLl9jdXN0b21NZXRhZGF0YVBhbmVscy5uZXh0KHRoaXMubG9hZGVyLmdldEVsZW1lbnRzPENvbnRlbnRBY3Rpb25SZWY+KGNvbmZpZywgJ2ZlYXR1cmVzLmN1c3RvbU1ldGFkYXRhUGFuZWxzJykpO1xuICAgIHRoaXMuX2J1bGtBY3Rpb25zLm5leHQodGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8Q29udGVudEFjdGlvblJlZj4oY29uZmlnLCAnZmVhdHVyZXMuYnVsay1hY3Rpb25zJykpO1xuXG4gICAgdGhpcy5uYXZiYXIgPSB0aGlzLmxvYWROYXZCYXIoY29uZmlnKTtcbiAgICB0aGlzLnNpZGViYXJUYWJzID0gdGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8U2lkZWJhclRhYlJlZj4oY29uZmlnLCAnZmVhdHVyZXMuc2lkZWJhci50YWJzJyk7XG4gICAgdGhpcy5jb250ZW50TWV0YWRhdGEgPSB0aGlzLmxvYWRDb250ZW50TWV0YWRhdGEoY29uZmlnKTtcbiAgICB0aGlzLnNlYXJjaCA9IHRoaXMubG9hZFNlYXJjaEZvcm1zKGNvbmZpZyk7XG4gICAgdGhpcy5zZWFyY2g/LmZvckVhY2goKHNlYXJjaFNldCkgPT4ge1xuICAgICAgc2VhcmNoU2V0LmNhdGVnb3JpZXMgPSBzZWFyY2hTZXQuY2F0ZWdvcmllcz8uZmlsdGVyKChjYXRlZ29yeSkgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGNhdGVnb3J5KSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRvY3VtZW50TGlzdFByZXNldHMgPSB7XG4gICAgICBsaWJyYXJpZXM6IHRoaXMuZ2V0RG9jdW1lbnRMaXN0UHJlc2V0KGNvbmZpZywgJ2xpYnJhcmllcycpLFxuICAgICAgZmF2b3JpdGVMaWJyYXJpZXM6IHRoaXMuZ2V0RG9jdW1lbnRMaXN0UHJlc2V0KGNvbmZpZywgJ2Zhdm9yaXRlTGlicmFyaWVzJyksXG4gICAgICBzaGFyZWQ6IHRoaXMuZ2V0RG9jdW1lbnRMaXN0UHJlc2V0KGNvbmZpZywgJ3NoYXJlZCcpLFxuICAgICAgcmVjZW50OiB0aGlzLmdldERvY3VtZW50TGlzdFByZXNldChjb25maWcsICdyZWNlbnQnKSxcbiAgICAgIGZhdm9yaXRlczogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAnZmF2b3JpdGVzJyksXG4gICAgICB0cmFzaGNhbjogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAndHJhc2hjYW4nKSxcbiAgICAgIHNlYXJjaExpYnJhcmllczogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAnc2VhcmNoLWxpYnJhcmllcycpLFxuICAgICAgc2VhcmNoUmVzdWx0czogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAnc2VhcmNoLXJlc3VsdHMnKVxuICAgIH07XG5cbiAgICB0aGlzLndpdGhDcmVkZW50aWFscyA9IHRoaXMuYXBwQ29uZmlnLmdldDxib29sZWFuPignYXV0aC53aXRoQ3JlZGVudGlhbHMnLCBmYWxzZSk7XG5cbiAgICBpZiAoY29uZmlnLmZlYXR1cmVzPy52aWV3ZXIpIHtcbiAgICAgIHRoaXMudmlld2VyUnVsZXMgPSAoY29uZmlnLmZlYXR1cmVzLnZpZXdlclsncnVsZXMnXSBhcyBWaWV3ZXJSdWxlcykgfHwge307XG4gICAgfVxuXG4gICAgdGhpcy5yZWdpc3Rlckljb25zKGNvbmZpZyk7XG5cbiAgICBjb25zdCByZWZlcmVuY2VzID0gKGNvbmZpZy4kcmVmZXJlbmNlcyB8fCBbXSkuZmlsdGVyKChlbnRyeSkgPT4gdHlwZW9mIGVudHJ5ID09PSAnb2JqZWN0JykubWFwKChlbnRyeSkgPT4gZW50cnkgYXMgRXh0ZW5zaW9uUmVmKTtcbiAgICB0aGlzLl9yZWZlcmVuY2VzLm5leHQocmVmZXJlbmNlcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVnaXN0ZXJJY29ucyhjb25maWc6IEV4dGVuc2lvbkNvbmZpZykge1xuICAgIGNvbnN0IGljb25zOiBBcnJheTxJY29uUmVmPiA9IHRoaXMubG9hZGVyLmdldEVsZW1lbnRzPEljb25SZWY+KGNvbmZpZywgJ2ZlYXR1cmVzLmljb25zJykuZmlsdGVyKChlbnRyeSkgPT4gIWVudHJ5LmRpc2FibGVkKTtcblxuICAgIGZvciAoY29uc3QgaWNvbiBvZiBpY29ucykge1xuICAgICAgY29uc3QgW25zLCBpZF0gPSBpY29uLmlkLnNwbGl0KCc6Jyk7XG4gICAgICBjb25zdCB2YWx1ZSA9IGljb24udmFsdWU7XG5cbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybihgTWlzc2luZyBpY29uIHZhbHVlIGZvciBcIiR7aWNvbi5pZH1cIi5gKTtcbiAgICAgIH0gZWxzZSBpZiAoIW5zIHx8ICFpZCkge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBJbmNvcnJlY3QgaWNvbiBpZCBmb3JtYXQuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1hdEljb25SZWdpc3RyeS5hZGRTdmdJY29uSW5OYW1lc3BhY2UobnMsIGlkLCB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbG9hZE5hdkJhcihjb25maWc6IEV4dGVuc2lvbkNvbmZpZyk6IEFycmF5PE5hdkJhckdyb3VwUmVmPiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEVsZW1lbnRzPE5hdkJhckdyb3VwUmVmPihjb25maWcsICdmZWF0dXJlcy5uYXZiYXInKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnOiBFeHRlbnNpb25Db25maWcsIGtleTogc3RyaW5nKTogRG9jdW1lbnRMaXN0UHJlc2V0UmVmW10ge1xuICAgIHJldHVybiB0aGlzLmxvYWRlclxuICAgICAgLmdldEVsZW1lbnRzPERvY3VtZW50TGlzdFByZXNldFJlZj4oY29uZmlnLCBgZmVhdHVyZXMuZG9jdW1lbnRMaXN0LiR7a2V5fWApXG4gICAgICAuZmlsdGVyKChncm91cCkgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGdyb3VwKSlcbiAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiAhZW50cnkuZGlzYWJsZWQpXG4gICAgICAubWFwKChlbnRyeSkgPT4ge1xuICAgICAgICBlbnRyeS5yZXNpemFibGUgPSBlbnRyeS5yZXNpemFibGUgPz8gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgICAgfSlcbiAgICAgIC5zb3J0KHNvcnRCeU9yZGVyKTtcbiAgfVxuXG4gIGdldEFwcGxpY2F0aW9uTmF2aWdhdGlvbihlbGVtZW50cyk6IEFycmF5PE5hdkJhckdyb3VwUmVmPiB7XG4gICAgcmV0dXJuIGVsZW1lbnRzXG4gICAgICAuZmlsdGVyKChncm91cCkgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGdyb3VwKSlcbiAgICAgIC5tYXAoKGdyb3VwKSA9PiAoe1xuICAgICAgICAuLi5ncm91cCxcbiAgICAgICAgaXRlbXM6IChncm91cC5pdGVtcyB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChlbnRyeSkgPT4gIWVudHJ5LmRpc2FibGVkKVxuICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IHRoaXMuZmlsdGVyVmlzaWJsZShpdGVtKSlcbiAgICAgICAgICAuc29ydChzb3J0QnlPcmRlcilcbiAgICAgICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IGl0ZW0uY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAuZmlsdGVyKChlbnRyeSkgPT4gIWVudHJ5LmRpc2FibGVkKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGNoaWxkKSA9PiB0aGlzLmZpbHRlclZpc2libGUoY2hpbGQpKVxuICAgICAgICAgICAgICAgIC5zb3J0KHNvcnRCeU9yZGVyKVxuICAgICAgICAgICAgICAgIC5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZC5jbGljaykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFJvdXRlUmVmID0gdGhpcy5leHRlbnNpb25zLmdldFJvdXRlQnlJZChjaGlsZC5yb3V0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkVXJsID0gYC8ke2NoaWxkUm91dGVSZWYgPyBjaGlsZFJvdXRlUmVmLnBhdGggOiBjaGlsZC5yb3V0ZX1gO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgIHVybDogY2hpbGRVcmxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogY2hpbGQuY2xpY2tcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5pdGVtXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpdGVtLmNvbXBvbmVudCkge1xuICAgICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXRlbS5jbGljaykge1xuICAgICAgICAgICAgICBjb25zdCByb3V0ZVJlZiA9IHRoaXMuZXh0ZW5zaW9ucy5nZXRSb3V0ZUJ5SWQoaXRlbS5yb3V0ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IHVybCA9IGAvJHtyb3V0ZVJlZiA/IHJvdXRlUmVmLnBhdGggOiBpdGVtLnJvdXRlfWA7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICB1cmxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgYWN0aW9uOiBpdGVtLmNsaWNrXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnJlZHVjZShyZWR1Y2VFbXB0eU1lbnVzLCBbXSlcbiAgICAgIH0pKTtcbiAgfVxuXG4gIGxvYWRDb250ZW50TWV0YWRhdGEoY29uZmlnOiBFeHRlbnNpb25Db25maWcpOiBhbnkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8YW55Pihjb25maWcsICdmZWF0dXJlcy5jb250ZW50LW1ldGFkYXRhLXByZXNldHMnKTtcbiAgICBpZiAoIWVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHByZXNldHMgPSB7fTtcbiAgICBwcmVzZXRzID0gdGhpcy5maWx0ZXJEaXNhYmxlZChtZXJnZU9iamVjdHMocHJlc2V0cywgLi4uZWxlbWVudHMpKTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5hcHBDb25maWcuY29uZmlnWydjb250ZW50LW1ldGFkYXRhJ10gfHwge307XG4gICAgbWV0YWRhdGEucHJlc2V0cyA9IHByZXNldHM7XG5cbiAgICB0aGlzLmFwcENvbmZpZy5jb25maWdbJ2NvbnRlbnQtbWV0YWRhdGEnXSA9IG1ldGFkYXRhO1xuICAgIHJldHVybiB7IHByZXNldHMgfTtcbiAgfVxuXG4gIGxvYWRTZWFyY2hGb3Jtcyhjb25maWc6IEV4dGVuc2lvbkNvbmZpZyk6IGFueSB7XG4gICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmxvYWRlci5nZXRFbGVtZW50czxhbnk+KGNvbmZpZywgJ2ZlYXR1cmVzLnNlYXJjaCcpO1xuICAgIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2ggPSBtZXJnZUFycmF5cyhbXSwgZWxlbWVudHMpXG4gICAgICAuZmlsdGVyKChlbnRyeSkgPT4gIWVudHJ5LmRpc2FibGVkKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+IHRoaXMuZmlsdGVyVmlzaWJsZShlbnRyeSkpXG4gICAgICAuc29ydChzb3J0QnlPcmRlcik7XG5cbiAgICB0aGlzLmFwcENvbmZpZy5jb25maWdbJ3NlYXJjaCddID0gc2VhcmNoO1xuICAgIHJldHVybiBzZWFyY2g7XG4gIH1cblxuICBmaWx0ZXJEaXNhYmxlZChvYmplY3Q6IEFycmF5PHsgZGlzYWJsZWQ6IGJvb2xlYW4gfT4gfCB7IGRpc2FibGVkOiBib29sZWFuIH0pIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAgICByZXR1cm4gb2JqZWN0LmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uZGlzYWJsZWQpLm1hcCgoaXRlbSkgPT4gdGhpcy5maWx0ZXJEaXNhYmxlZChpdGVtKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKCFvYmplY3QuZGlzYWJsZWQpIHtcbiAgICAgICAgT2JqZWN0LmtleXMob2JqZWN0KS5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gdGhpcy5maWx0ZXJEaXNhYmxlZChvYmplY3RbcHJvcF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG4gIH1cblxuICBnZXRTaWRlYmFyVGFicygpOiBBcnJheTxTaWRlYmFyVGFiUmVmPiB7XG4gICAgcmV0dXJuIHRoaXMuc2lkZWJhclRhYnMuZmlsdGVyKChhY3Rpb24pID0+IHRoaXMuZmlsdGVyVmlzaWJsZShhY3Rpb24pKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aW9uRGlzYWJsZWRGcm9tUnVsZShhY3Rpb246IENvbnRlbnRBY3Rpb25SZWYpIHtcbiAgICBsZXQgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIGlmIChhY3Rpb24/LnJ1bGVzPy5lbmFibGVkKSB7XG4gICAgICBkaXNhYmxlZCA9ICF0aGlzLmV4dGVuc2lvbnMuZXZhbHVhdGVSdWxlKGFjdGlvbi5ydWxlcy5lbmFibGVkLCB0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYWN0aW9uLFxuICAgICAgZGlzYWJsZWRcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlU2lkZWJhckFjdGlvbnMoKSB7XG4gICAgdGhpcy5fc2lkZWJhckFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRDb250ZW50QWN0aW9ucyh0aGlzLmNvbmZpZywgJ2ZlYXR1cmVzLnNpZGViYXIudG9vbGJhcicpKTtcbiAgfVxuXG4gIGdldENyZWF0ZUFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVBY3Rpb25zLnBpcGUoXG4gICAgICBtYXAoKGNyZWF0ZUFjdGlvbnMpID0+XG4gICAgICAgIGNyZWF0ZUFjdGlvbnNcbiAgICAgICAgICAuZmlsdGVyKChhY3Rpb24pID0+IHRoaXMuZmlsdGVyVmlzaWJsZShhY3Rpb24pKVxuICAgICAgICAgIC5tYXAoKGFjdGlvbikgPT4gdGhpcy5jb3B5QWN0aW9uKGFjdGlvbikpXG4gICAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiB0aGlzLmJ1aWxkTWVudShhY3Rpb24pKVxuICAgICAgICAgIC5tYXAoKGFjdGlvbikgPT4gdGhpcy5zZXRBY3Rpb25EaXNhYmxlZEZyb21SdWxlKGFjdGlvbikpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGdldEJhZGdlcyhub2RlOiBOb2RlRW50cnkpOiBPYnNlcnZhYmxlPEFycmF5PEJhZGdlPj4ge1xuICAgIHJldHVybiB0aGlzLl9iYWRnZXMucGlwZShtYXAoKGJhZGdlcykgPT4gYmFkZ2VzLmZpbHRlcigoYmFkZ2UpID0+IHRoaXMuZXZhbHVhdGVSdWxlKGJhZGdlLnJ1bGVzLnZpc2libGUsIG5vZGUpKSkpO1xuICB9XG5cbiAgZ2V0Q3VzdG9tTWV0YWRhdGFQYW5lbHMobm9kZTogTm9kZUVudHJ5KTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9jdXN0b21NZXRhZGF0YVBhbmVscy5waXBlKG1hcCgocGFuZWxzKSA9PiBwYW5lbHMuZmlsdGVyKChwYW5lbCkgPT4gdGhpcy5ldmFsdWF0ZVJ1bGUocGFuZWwucnVsZXMudmlzaWJsZSwgbm9kZSkpKSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTWVudShhY3Rpb25SZWY6IENvbnRlbnRBY3Rpb25SZWYpOiBDb250ZW50QWN0aW9uUmVmIHtcbiAgICBpZiAoYWN0aW9uUmVmLnR5cGUgPT09IENvbnRlbnRBY3Rpb25UeXBlLm1lbnUgJiYgYWN0aW9uUmVmLmNoaWxkcmVuICYmIGFjdGlvblJlZi5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGFjdGlvblJlZi5jaGlsZHJlbi5maWx0ZXIoKGFjdGlvbikgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGFjdGlvbikpLm1hcCgoYWN0aW9uKSA9PiB0aGlzLmJ1aWxkTWVudShhY3Rpb24pKTtcblxuICAgICAgYWN0aW9uUmVmLmNoaWxkcmVuID0gY2hpbGRyZW5cbiAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiB0aGlzLnNldEFjdGlvbkRpc2FibGVkRnJvbVJ1bGUoYWN0aW9uKSlcbiAgICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpXG4gICAgICAgIC5yZWR1Y2UocmVkdWNlRW1wdHlNZW51cywgW10pXG4gICAgICAgIC5yZWR1Y2UocmVkdWNlU2VwYXJhdG9ycywgW10pO1xuICAgIH1cblxuICAgIHJldHVybiBhY3Rpb25SZWY7XG4gIH1cblxuICBwcml2YXRlIGdldEFsbG93ZWRBY3Rpb25zKGFjdGlvbnM6IENvbnRlbnRBY3Rpb25SZWZbXSk6IENvbnRlbnRBY3Rpb25SZWZbXSB7XG4gICAgcmV0dXJuIChhY3Rpb25zIHx8IFtdKVxuICAgICAgLmZpbHRlcigoYWN0aW9uKSA9PiB0aGlzLmZpbHRlclZpc2libGUoYWN0aW9uKSlcbiAgICAgIC5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICBpZiAoYWN0aW9uLnR5cGUgPT09IENvbnRlbnRBY3Rpb25UeXBlLm1lbnUpIHtcbiAgICAgICAgICBjb25zdCBjb3B5ID0gdGhpcy5jb3B5QWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgaWYgKGNvcHkuY2hpbGRyZW4gJiYgY29weS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb3B5LmNoaWxkcmVuID0gY29weS5jaGlsZHJlblxuICAgICAgICAgICAgICAuZmlsdGVyKChlbnRyeSkgPT4gIWVudHJ5LmRpc2FibGVkKVxuICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZEFjdGlvbikgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGNoaWxkQWN0aW9uKSlcbiAgICAgICAgICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpXG4gICAgICAgICAgICAgIC5yZWR1Y2UocmVkdWNlU2VwYXJhdG9ycywgW10pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWN0aW9uO1xuICAgICAgfSlcbiAgICAgIC5tYXAoKGFjdGlvbikgPT4gdGhpcy5zZXRBY3Rpb25EaXNhYmxlZEZyb21SdWxlKGFjdGlvbikpXG4gICAgICAucmVkdWNlKHJlZHVjZUVtcHR5TWVudXMsIFtdKVxuICAgICAgLnJlZHVjZShyZWR1Y2VTZXBhcmF0b3JzLCBbXSk7XG4gIH1cblxuICBnZXRBbGxvd2VkU2lkZWJhckFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9zaWRlYmFyQWN0aW9ucy5waXBlKG1hcCgoc2lkZWJhckFjdGlvbnMpID0+IHRoaXMuZ2V0QWxsb3dlZEFjdGlvbnMoc2lkZWJhckFjdGlvbnMpKSk7XG4gIH1cblxuICBnZXRBbGxvd2VkVG9vbGJhckFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl90b29sYmFyQWN0aW9ucy5waXBlKG1hcCgodG9vbGJhckFjdGlvbnMpID0+IHRoaXMuZ2V0QWxsb3dlZEFjdGlvbnModG9vbGJhckFjdGlvbnMpKSk7XG4gIH1cblxuICBnZXRWaWV3ZXJUb29sYmFyQWN0aW9ucygpOiBPYnNlcnZhYmxlPEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdlclRvb2xiYXJBY3Rpb25zLnBpcGUobWFwKCh2aWV3ZXJUb29sYmFyQWN0aW9ucykgPT4gdGhpcy5nZXRBbGxvd2VkQWN0aW9ucyh2aWV3ZXJUb29sYmFyQWN0aW9ucykpKTtcbiAgfVxuXG4gIGdldEJ1bGtBY3Rpb25zKCk6IE9ic2VydmFibGU8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+IHtcbiAgICByZXR1cm4gdGhpcy5fYnVsa0FjdGlvbnMucGlwZShtYXAoKGJ1bGtBY3Rpb25zKSA9PiB0aGlzLmdldEFsbG93ZWRBY3Rpb25zKGJ1bGtBY3Rpb25zKSkpO1xuICB9XG5cbiAgZ2V0T3BlbldpdGhBY3Rpb25zKCk6IE9ic2VydmFibGU8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+IHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbldpdGhBY3Rpb25zLnBpcGUobWFwKChvcGVuV2l0aEFjdGlvbnMpID0+IHRoaXMuZ2V0QWxsb3dlZEFjdGlvbnMob3BlbldpdGhBY3Rpb25zKSkpO1xuICB9XG5cbiAgZ2V0U2hhcmVkTGlua1ZpZXdlclRvb2xiYXJBY3Rpb25zKCk6IE9ic2VydmFibGU8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+IHtcbiAgICByZXR1cm4gdGhpcy5fc2hhcmVkTGlua1ZpZXdlclRvb2xiYXJBY3Rpb25zLnBpcGUoXG4gICAgICBtYXAoKHNoYXJlZExpbmtWaWV3ZXJUb29sYmFyQWN0aW9ucykgPT4gKCF0aGlzLnNlbGVjdGlvbi5pc0VtcHR5ID8gdGhpcy5nZXRBbGxvd2VkQWN0aW9ucyhzaGFyZWRMaW5rVmlld2VyVG9vbGJhckFjdGlvbnMpIDogW10pKVxuICAgICk7XG4gIH1cblxuICBnZXRIZWFkZXJBY3Rpb25zKCk6IE9ic2VydmFibGU8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+IHtcbiAgICByZXR1cm4gdGhpcy5faGVhZGVyQWN0aW9ucy5waXBlKFxuICAgICAgbWFwKChoZWFkZXJBY3Rpb25zKSA9PlxuICAgICAgICBoZWFkZXJBY3Rpb25zXG4gICAgICAgICAgLmZpbHRlcigoYWN0aW9uKSA9PiB0aGlzLmZpbHRlclZpc2libGUoYWN0aW9uKSlcbiAgICAgICAgICAubWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gQ29udGVudEFjdGlvblR5cGUubWVudSkge1xuICAgICAgICAgICAgICBjb25zdCBjb3B5ID0gdGhpcy5jb3B5QWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICAgIGlmIChjb3B5LmNoaWxkcmVuICYmIGNvcHkuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvcHkuY2hpbGRyZW4gPSBjb3B5LmNoaWxkcmVuXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZEFjdGlvbikgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGNoaWxkQWN0aW9uKSlcbiAgICAgICAgICAgICAgICAgIC5zb3J0KHNvcnRCeU9yZGVyKVxuICAgICAgICAgICAgICAgICAgLnJlZHVjZShyZWR1Y2VFbXB0eU1lbnVzLCBbXSlcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UocmVkdWNlU2VwYXJhdG9ycywgW10pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiB0aGlzLnNldEFjdGlvbkRpc2FibGVkRnJvbVJ1bGUoYWN0aW9uKSlcbiAgICAgICAgICAuc29ydChzb3J0QnlPcmRlcilcbiAgICAgICAgICAucmVkdWNlKHJlZHVjZUVtcHR5TWVudXMsIFtdKVxuICAgICAgICAgIC5yZWR1Y2UocmVkdWNlU2VwYXJhdG9ycywgW10pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGdldEFsbG93ZWRDb250ZXh0TWVudUFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZXh0TWVudUFjdGlvbnMucGlwZShtYXAoKGNvbnRleHRNZW51QWN0aW9ucykgPT4gKCF0aGlzLnNlbGVjdGlvbi5pc0VtcHR5ID8gdGhpcy5nZXRBbGxvd2VkQWN0aW9ucyhjb250ZXh0TWVudUFjdGlvbnMpIDogW10pKSk7XG4gIH1cblxuICBjb3B5QWN0aW9uKGFjdGlvbjogQ29udGVudEFjdGlvblJlZik6IENvbnRlbnRBY3Rpb25SZWYge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5hY3Rpb24sXG4gICAgICBjaGlsZHJlbjogKGFjdGlvbi5jaGlsZHJlbiB8fCBbXSkubWFwKChjaGlsZCkgPT4gdGhpcy5jb3B5QWN0aW9uKGNoaWxkKSlcbiAgICB9O1xuICB9XG5cbiAgZmlsdGVyVmlzaWJsZShhY3Rpb246IENvbnRlbnRBY3Rpb25SZWYgfCBTaWRlYmFyVGFiUmVmIHwgRG9jdW1lbnRMaXN0UHJlc2V0UmVmIHwgU2VhcmNoQ2F0ZWdvcnkpOiBib29sZWFuIHtcbiAgICBpZiAoYWN0aW9uPy5ydWxlcz8udmlzaWJsZSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWN0aW9uLnJ1bGVzLnZpc2libGUpKSB7XG4gICAgICAgIHJldHVybiBhY3Rpb24ucnVsZXMudmlzaWJsZS5ldmVyeSgocnVsZSkgPT4gdGhpcy5leHRlbnNpb25zLmV2YWx1YXRlUnVsZShydWxlLCB0aGlzKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5leHRlbnNpb25zLmV2YWx1YXRlUnVsZShhY3Rpb24ucnVsZXMudmlzaWJsZSwgdGhpcyk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaXNWaWV3ZXJFeHRlbnNpb25EaXNhYmxlZChleHRlbnNpb246IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChleHRlbnNpb24pIHtcbiAgICAgIGlmIChleHRlbnNpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChleHRlbnNpb24ucnVsZXM/LmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbnMuZXZhbHVhdGVSdWxlKGV4dGVuc2lvbi5ydWxlcy5kaXNhYmxlZCwgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcnVuQWN0aW9uQnlJZChpZDogc3RyaW5nLCBhZGRpdGlvbmFsUGF5bG9hZD86IGFueSkge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZXh0ZW5zaW9ucy5nZXRBY3Rpb25CeUlkKGlkKTtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBjb25zdCB7IHR5cGUsIHBheWxvYWQgfSA9IGFjdGlvbjtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgIHNlbGVjdGlvbjogdGhpcy5zZWxlY3Rpb25cbiAgICAgIH07XG4gICAgICBjb25zdCBleHByZXNzaW9uID0gdGhpcy5leHRlbnNpb25zLnJ1bkV4cHJlc3Npb24ocGF5bG9hZCwgY29udGV4dCk7XG5cbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goe1xuICAgICAgICB0eXBlLFxuICAgICAgICBwYXlsb2FkOiBleHByZXNzaW9uLFxuICAgICAgICBjb25maWd1cmF0aW9uOiBhZGRpdGlvbmFsUGF5bG9hZFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiBpZCxcbiAgICAgICAgY29uZmlndXJhdGlvbjogYWRkaXRpb25hbFBheWxvYWRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRvZG86IG1vdmUgdG8gQURGL1J1bGVTZXJ2aWNlXG4gIGlzUnVsZURlZmluZWQocnVsZUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEocnVsZUlkICYmIHRoaXMuZ2V0RXZhbHVhdG9yKHJ1bGVJZCkpO1xuICB9XG5cbiAgLy8gdG9kbzogbW92ZSB0byBBREYvUnVsZVNlcnZpY2VcbiAgZXZhbHVhdGVSdWxlKHJ1bGVJZDogc3RyaW5nIHwgc3RyaW5nW10sIC4uLmFyZ3M6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgbGV0IGV2YWx1YXRvckxpc3Q6IFJ1bGVFdmFsdWF0b3JbXSA9IFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJ1bGVJZCkpIHtcbiAgICAgIGV2YWx1YXRvckxpc3QgPSBydWxlSWQuZmlsdGVyKChydWxlKSA9PiAhIXRoaXMuZ2V0RXZhbHVhdG9yKHJ1bGUpKS5tYXAoKHJ1bGUpID0+IHRoaXMuZ2V0RXZhbHVhdG9yKHJ1bGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXZhbHVhdG9yID0gdGhpcy5nZXRFdmFsdWF0b3IocnVsZUlkKTtcbiAgICAgIGlmIChldmFsdWF0b3IpIHtcbiAgICAgICAgZXZhbHVhdG9yTGlzdC5wdXNoKGV2YWx1YXRvcik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChldmFsdWF0b3JMaXN0Py5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gZXZhbHVhdG9yTGlzdC5ldmVyeSgoZXZhbHVhdG9yKSA9PiBldmFsdWF0b3IodGhpcywgLi4uYXJncykpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldEV2YWx1YXRvcihrZXk6IHN0cmluZyk6IFJ1bGVFdmFsdWF0b3Ige1xuICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbnMuZ2V0RXZhbHVhdG9yKGtleSk7XG4gIH1cblxuICBjYW5QcmV2aWV3Tm9kZShub2RlOiBOb2RlRW50cnkpIHtcbiAgICBjb25zdCBydWxlcyA9IHRoaXMudmlld2VyUnVsZXM7XG5cbiAgICBpZiAodGhpcy5pc1J1bGVEZWZpbmVkKHJ1bGVzLmNhblByZXZpZXcpKSB7XG4gICAgICBjb25zdCBjYW5QcmV2aWV3ID0gdGhpcy5ldmFsdWF0ZVJ1bGUocnVsZXMuY2FuUHJldmlldywgbm9kZSk7XG5cbiAgICAgIGlmICghY2FuUHJldmlldykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjYW5TaG93Vmlld2VyTmF2aWdhdGlvbihub2RlOiBOb2RlRW50cnkpIHtcbiAgICBjb25zdCBydWxlcyA9IHRoaXMudmlld2VyUnVsZXM7XG5cbiAgICBpZiAodGhpcy5pc1J1bGVEZWZpbmVkKHJ1bGVzLnNob3dOYXZpZ2F0aW9uKSkge1xuICAgICAgY29uc3Qgc2hvd05hdmlnYXRpb24gPSB0aGlzLmV2YWx1YXRlUnVsZShydWxlcy5zaG93TmF2aWdhdGlvbiwgbm9kZSk7XG4gICAgICBpZiAoIXNob3dOYXZpZ2F0aW9uKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGJ1bGtBY3Rpb25FeGVjdXRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmJ1bGtBY3Rpb25FeGVjdXRlZCQubmV4dCgpO1xuICB9XG59XG4iXX0=
@@ -277,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
277
277
  providedIn: 'root'
278
278
  }]
279
279
  }], ctorParameters: () => [{ type: i1.AlfrescoApiService }, { type: i2.UserPreferencesService }] });
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9jb250ZW50LWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFlTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLGNBQWMsRUFDZCxZQUFZLEVBQ1osWUFBWSxFQUNaLFVBQVUsRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxXQUFXLEVBR1osTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFLckMsTUFBTSxPQUFPLGlCQUFpQjtJQTREUjtJQUFpQztJQTNEN0MsU0FBUyxDQUFXO0lBQzVCLElBQUksUUFBUTtRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxZQUFZLENBQWM7SUFDbEMsSUFBSSxXQUFXO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztR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LENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUN0QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWMsRUFBRSxJQUFVO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYyxFQUFFLElBQVU7UUFDeEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsMEJBQTBCLENBQUMsTUFBYztRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELDZCQUE2QixDQUFDLE1BQWMsRUFBRSxTQUFpQjtRQUM3RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7dUdBOVNVLGlCQUFpQjsyR0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBBbGZyZXNjb0FwaVNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgTm9kZVBhZ2luZyxcbiAgTm9kZSxcbiAgRGVsZXRlZE5vZGVzUGFnaW5nLFxuICBQZXJzb25FbnRyeSxcbiAgTm9kZUVudHJ5LFxuICBEaXNjb3ZlcnlFbnRyeSxcbiAgRmF2b3JpdGVQYWdpbmcsXG4gIFNoYXJlZExpbmtQYWdpbmcsXG4gIFNlYXJjaFJlcXVlc3QsXG4gIFJlc3VsdFNldFBhZ2luZyxcbiAgU2l0ZUJvZHlDcmVhdGUsXG4gIFNpdGVFbnRyeSxcbiAgRmF2b3JpdGVCb2R5Q3JlYXRlLFxuICBGYXZvcml0ZUVudHJ5LFxuICBOb2Rlc0FwaSxcbiAgVHJhc2hjYW5BcGksXG4gIFNoYXJlZGxpbmtzQXBpLFxuICBEaXNjb3ZlcnlBcGksXG4gIEZhdm9yaXRlc0FwaSxcbiAgQ29udGVudEFwaSxcbiAgU2l0ZXNBcGksXG4gIFNlYXJjaEFwaSxcbiAgUGVvcGxlQXBpLFxuICBWZXJzaW9uc0FwaSxcbiAgRGlyZWN0QWNjZXNzVXJsRW50cnksXG4gIFZlcnNpb25QYWdpbmdcbn0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbm9kZXNBcGk6IE5vZGVzQXBpO1xuICBnZXQgbm9kZXNBcGkoKTogTm9kZXNBcGkge1xuICAgIHRoaXMuX25vZGVzQXBpID0gdGhpcy5fbm9kZXNBcGkgPz8gbmV3IE5vZGVzQXBpKHRoaXMuYXBpLmdldEluc3RhbmNlKCkpO1xuICAgIHJldHVybiB0aGlzLl9ub2Rlc0FwaTtcbiAgfVxuXG4gIHByaXZhdGUgX3RyYXNoY2FuQXBpOiBUcmFzaGNhbkFwaTtcbiAgZ2V0IHRyYXNoY2FuQXBpKCk6IFRyYXNoY2FuQXBpIHtcbiAgICB0aGlzLl90cmFzaGNhbkFwaSA9IHRoaXMuX3RyYXNoY2FuQXBpID8/IG5ldyBUcmFzaGNhbkFwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fdHJhc2hjYW5BcGk7XG4gIH1cblxuICBwcml2YXRlIF9zaGFyZWRMaW5rc0FwaTogU2hhcmVkbGlua3NBcGk7XG4gIGdldCBzaGFyZWRMaW5rc0FwaSgpOiBTaGFyZWRsaW5rc0FwaSB7XG4gICAgdGhpcy5fc2hhcmVkTGlua3NBcGkgPSB0aGlzLl9zaGFyZWRMaW5rc0FwaSA/PyBuZXcgU2hhcmVkbGlua3NBcGkodGhpcy5hcGkuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX3NoYXJlZExpbmtzQXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzY292ZXJ5QXBpOiBEaXNjb3ZlcnlBcGk7XG4gIGdldCBkaXNjb3ZlcnlBcGkoKTogRGlzY292ZXJ5QXBpIHtcbiAgICB0aGlzLl9kaXNjb3ZlcnlBcGkgPSB0aGlzLl9kaXNjb3ZlcnlBcGkgPz8gbmV3IERpc2NvdmVyeUFwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fZGlzY292ZXJ5QXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmF2b3JpdGVzQXBpOiBGYXZvcml0ZXNBcGk7XG4gIGdldCBmYXZvcml0ZXNBcGkoKTogRmF2b3JpdGVzQXBpIHtcbiAgICB0aGlzLl9mYXZvcml0ZXNBcGkgPSB0aGlzLl9mYXZvcml0ZXNBcGkgPz8gbmV3IEZhdm9yaXRlc0FwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fZmF2b3JpdGVzQXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29udGVudEFwaTogQ29udGVudEFwaTtcbiAgZ2V0IGNvbnRlbnRBcGkoKTogQ29udGVudEFwaSB7XG4gICAgdGhpcy5fY29udGVudEFwaSA9IHRoaXMuX2NvbnRlbnRBcGkgPz8gbmV3IENvbnRlbnRBcGkodGhpcy5hcGkuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRBcGk7XG4gIH1cblxuICBwcml2YXRlIF9zaXRlc0FwaTogU2l0ZXNBcGk7XG4gIGdldCBzaXRlc0FwaSgpOiBTaXRlc0FwaSB7XG4gICAgdGhpcy5fc2l0ZXNBcGkgPSB0aGlzLl9zaXRlc0FwaSA/PyBuZXcgU2l0ZXNBcGkodGhpcy5hcGkuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX3NpdGVzQXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VhcmNoQXBpOiBTZWFyY2hBcGk7XG4gIGdldCBzZWFyY2hBcGkoKTogU2VhcmNoQXBpIHtcbiAgICB0aGlzLl9zZWFyY2hBcGkgPSB0aGlzLl9zZWFyY2hBcGkgPz8gbmV3IFNlYXJjaEFwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoQXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGVvcGxlQXBpOiBQZW9wbGVBcGk7XG4gIGdldCBwZW9wbGVBcGkoKTogUGVvcGxlQXBpIHtcbiAgICB0aGlzLl9wZW9wbGVBcGkgPSB0aGlzLl9wZW9wbGVBcGkgPz8gbmV3IFBlb3BsZUFwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fcGVvcGxlQXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmVyc2lvbnNBcGk6IFZlcnNpb25zQXBpO1xuICBnZXQgdmVyc2lvbnNBcGkoKTogVmVyc2lvbnNBcGkge1xuICAgIHRoaXMuX3ZlcnNpb25zQXBpID0gdGhpcy5fdmVyc2lvbnNBcGkgPz8gbmV3IFZlcnNpb25zQXBpKHRoaXMuYXBpLmdldEluc3RhbmNlKCkpO1xuICAgIHJldHVybiB0aGlzLl92ZXJzaW9uc0FwaTtcbiAgfVxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaTogQWxmcmVzY29BcGlTZXJ2aWNlLCBwcml2YXRlIHByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBNb3ZlcyBhIG5vZGUgdG8gdGhlIHRyYXNoY2FuLlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUlkIElEIG9mIHRoZSB0YXJnZXQgbm9kZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSBKUy1BUElcbiAgICogQHJldHVybnMgRW1wdHkgcmVzdWx0IHRoYXQgbm90aWZpZXMgd2hlbiB0aGUgZGVsZXRpb24gaXMgY29tcGxldGVcbiAgICovXG4gIGRlbGV0ZU5vZGUobm9kZUlkOiBzdHJpbmcsIG9wdGlvbnM6IHsgcGVybWFuZW50PzogYm9vbGVhbiB9ID0ge30pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLm5vZGVzQXBpLmRlbGV0ZU5vZGUobm9kZUlkLCBvcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3RvcmVkIGluZm9ybWF0aW9uIGFib3V0IGEgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIG5vZGVJZCBJRCBvZiB0aGUgdGFyZ2V0IG5vZGVcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgcGFyYW1ldGVycyBzdXBwb3J0ZWQgYnkgSlMtQVBJXG4gICAqIEByZXR1cm5zIE5vZGUgaW5mb3JtYXRpb25cbiAgICovXG4gIGdldE5vZGUobm9kZUlkOiBzdHJpbmcsIG9wdGlvbnM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxOb2RlRW50cnk+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGluY2x1ZGU6IFsncGF0aCcsICdwcm9wZXJ0aWVzJywgJ2FsbG93YWJsZU9wZXJhdGlvbnMnLCAncGVybWlzc2lvbnMnLCAnZGVmaW5pdGlvbiddXG4gICAgfTtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRzLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBmcm9tKHRoaXMubm9kZXNBcGkuZ2V0Tm9kZShub2RlSWQsIHF1ZXJ5T3B0aW9ucykpO1xuICB9XG5cbiAgZ2V0Tm9kZUluZm8obm9kZUlkOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiBPYnNlcnZhYmxlPE5vZGU+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGluY2x1ZGU6IFsnaXNGYXZvcml0ZScsICdhbGxvd2FibGVPcGVyYXRpb25zJywgJ3BhdGgnLCAnZGVmaW5pdGlvbiddXG4gICAgfTtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRzLCBvcHRpb25zIHx8IHt9KTtcblxuICAgIHJldHVybiBmcm9tKFxuICAgICAgbmV3IFByb21pc2U8Tm9kZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0aGlzLm5vZGVzQXBpLmdldE5vZGUobm9kZUlkLCBxdWVyeU9wdGlvbnMpLnRoZW4oXG4gICAgICAgICAgKG5vZGVFbnRyeTogTm9kZUVudHJ5KSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKG5vZGVFbnRyeS5lbnRyeSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGl0ZW1zIGNvbnRhaW5lZCBpbiBhIGZvbGRlciBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUlkIElEIG9mIHRoZSB0YXJnZXQgbm9kZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSBKUy1BUElcbiAgICogQHJldHVybnMgTGlzdCBvZiBjaGlsZCBpdGVtcyBmcm9tIHRoZSBmb2xkZXJcbiAgICovXG4gIGdldE5vZGVDaGlsZHJlbihub2RlSWQ6IHN0cmluZywgb3B0aW9uczogYW55ID0ge30pOiBPYnNlcnZhYmxlPE5vZGVQYWdpbmc+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG1heEl0ZW1zOiB0aGlzLnByZWZlcmVuY2VzLnBhZ2luYXRpb25TaXplLFxuICAgICAgc2tpcENvdW50OiAwLFxuICAgICAgaW5jbHVkZTogWydpc0xvY2tlZCcsICdwYXRoJywgJ3Byb3BlcnRpZXMnLCAnYWxsb3dhYmxlT3BlcmF0aW9ucycsICdwZXJtaXNzaW9ucyddXG4gICAgfTtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRzLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBmcm9tKHRoaXMubm9kZXNBcGkubGlzdE5vZGVDaGlsZHJlbihub2RlSWQsIHF1ZXJ5T3B0aW9ucykpO1xuICB9XG5cbiAgZGVsZXRlU2hhcmVkTGluayhsaW5rSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5zaGFyZWRMaW5rc0FwaS5kZWxldGVTaGFyZWRMaW5rKGxpbmtJZCkpO1xuICB9XG5cbiAgZ2V0RGVsZXRlZE5vZGVzKG9wdGlvbnM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxEZWxldGVkTm9kZXNQYWdpbmc+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGluY2x1ZGU6IFsncGF0aCddXG4gICAgfTtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRzLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBmcm9tKHRoaXMudHJhc2hjYW5BcGkubGlzdERlbGV0ZWROb2RlcyhxdWVyeU9wdGlvbnMpKTtcbiAgfVxuXG4gIHJlc3RvcmVOb2RlKG5vZGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxOb2RlRW50cnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnRyYXNoY2FuQXBpLnJlc3RvcmVEZWxldGVkTm9kZShub2RlSWQpKTtcbiAgfVxuXG4gIHB1cmdlRGVsZXRlZE5vZGUobm9kZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMudHJhc2hjYW5BcGkuZGVsZXRlRGVsZXRlZE5vZGUobm9kZUlkKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBpbmZvcm1hdGlvbiBhYm91dCBhIHVzZXIgaWRlbnRpZmllZCBieSB0aGVpciB1c2VybmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHBlcnNvbklkIElEIG9mIHRoZSB0YXJnZXQgdXNlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBBcGkgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBVc2VyIGluZm9ybWF0aW9uXG4gICAqL1xuICBnZXRQZXJzb24ocGVyc29uSWQ6IHN0cmluZywgb3B0aW9ucz86IHsgZmllbGRzPzogQXJyYXk8c3RyaW5nPiB9KTogT2JzZXJ2YWJsZTxQZXJzb25FbnRyeT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMucGVvcGxlQXBpLmdldFBlcnNvbihwZXJzb25JZCwgb3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcHkgYSBub2RlIHRvIGRlc3RpbmF0aW9uIG5vZGVcbiAgICpcbiAgICogQHBhcmFtIG5vZGVJZCBUaGUgaWQgb2YgdGhlIG5vZGUgdG8gYmUgY29waWVkXG4gICAqIEBwYXJhbSB0YXJnZXRQYXJlbnRJZCBUaGUgaWQgb2YgdGhlIGZvbGRlci1ub2RlIHdoZXJlIHRoZSBub2RlIGhhdmUgdG8gYmUgY29waWVkIHRvXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuZXcgbmFtZSBmb3IgdGhlIGNvcHkgdGhhdCB3b3VsZCBiZSBhZGRlZCBvbiB0aGUgZGVzdGluYXRpb24gZm9sZGVyXG4gICAqIEBwYXJhbSBvcHRzIEFwaSBvcHRpb25zXG4gICAqL1xuICBjb3B5Tm9kZShub2RlSWQ6IHN0cmluZywgdGFyZ2V0UGFyZW50SWQ6IHN0cmluZywgbmFtZT86IHN0cmluZywgb3B0cz86IHsgaW5jbHVkZT86IEFycmF5PHN0cmluZz47IGZpZWxkcz86IEFycmF5PHN0cmluZz4gfSk6IE9ic2VydmFibGU8Tm9kZUVudHJ5PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5ub2Rlc0FwaS5jb3B5Tm9kZShub2RlSWQsIHsgdGFyZ2V0UGFyZW50SWQsIG5hbWUgfSwgb3B0cykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgcHJvZHVjdCBpbmZvcm1hdGlvbiBmb3IgQ29udGVudCBTZXJ2aWNlcy5cbiAgICpcbiAgICogQHJldHVybnMgUHJvZHVjdFZlcnNpb25Nb2RlbCBjb250YWluaW5nIHByb2R1Y3QgZGV0YWlsc1xuICAgKi9cbiAgZ2V0UmVwb3NpdG9yeUluZm9ybWF0aW9uKCk6IE9ic2VydmFibGU8RGlzY292ZXJ5RW50cnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmRpc2NvdmVyeUFwaS5nZXRSZXBvc2l0b3J5SW5mb3JtYXRpb24oKSk7XG4gIH1cblxuICBnZXRGYXZvcml0ZXMoXG4gICAgcGVyc29uSWQ6IHN0cmluZyxcbiAgICBvcHRzPzoge1xuICAgICAgc2tpcENvdW50PzogbnVtYmVyO1xuICAgICAgbWF4SXRlbXM/OiBudW1iZXI7XG4gICAgICB3aGVyZT86IHN0cmluZztcbiAgICAgIGZpZWxkcz86IEFycmF5PHN0cmluZz47XG4gICAgfVxuICApOiBPYnNlcnZhYmxlPEZhdm9yaXRlUGFnaW5nPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5mYXZvcml0ZXNBcGkubGlzdEZhdm9yaXRlcyhwZXJzb25JZCwgb3B0cykpO1xuICB9XG5cbiAgZ2V0RmF2b3JpdGVMaWJyYXJpZXMocGVyc29uSWQ6IHN0cmluZyA9ICctbWUtJywgb3B0cz86IGFueSk6IE9ic2VydmFibGU8RmF2b3JpdGVQYWdpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRGYXZvcml0ZXMocGVyc29uSWQsIHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICB3aGVyZTogJyhFWElTVFModGFyZ2V0L3NpdGUpKSdcbiAgICB9KS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogRmF2b3JpdGVQYWdpbmcpID0+ICh7XG4gICAgICAgIGxpc3Q6IHtcbiAgICAgICAgICBlbnRyaWVzOiByZXNwb25zZS5saXN0LmVudHJpZXMubWFwKCh7IGVudHJ5IH06IGFueSkgPT4ge1xuICAgICAgICAgICAgZW50cnkudGFyZ2V0LnNpdGUuY3JlYXRlZEF0ID0gZW50cnkuY3JlYXRlZEF0O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZW50cnk6IGVudHJ5LnRhcmdldC5zaXRlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHBhZ2luYXRpb246IHJlc3BvbnNlLmxpc3QucGFnaW5hdGlvblxuICAgICAgICB9XG4gICAgICB9KSlcbiAgICApO1xuICB9XG5cbiAgZmluZFNoYXJlZExpbmtzKG9wdHM/OiBhbnkpOiBPYnNlcnZhYmxlPFNoYXJlZExpbmtQYWdpbmc+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnNoYXJlZExpbmtzQXBpLmxpc3RTaGFyZWRMaW5rcyhvcHRzKSk7XG4gIH1cblxuICBnZXRTaGFyZWRMaW5rQ29udGVudChzaGFyZWRJZDogc3RyaW5nLCBhdHRhY2htZW50PzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudEFwaS5nZXRTaGFyZWRMaW5rQ29udGVudFVybChzaGFyZWRJZCwgYXR0YWNobWVudCk7XG4gIH1cblxuICBzZWFyY2gocmVxdWVzdDogU2VhcmNoUmVxdWVzdCk6IE9ic2VydmFibGU8UmVzdWx0U2V0UGFnaW5nPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5zZWFyY2hBcGkuc2VhcmNoKHJlcXVlc3QpKTtcbiAgfVxuXG4gIGdldENvbnRlbnRVcmwobm9kZUlkOiBzdHJpbmcsIGF0dGFjaG1lbnQ/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50QXBpLmdldENvbnRlbnRVcmwobm9kZUlkLCBhdHRhY2htZW50KTtcbiAgfVxuXG4gIGdldFZlcnNpb25Db250ZW50VXJsKG5vZGVJZDogc3RyaW5nLCB2ZXJzaW9uSWQ6IHN0cmluZywgYXR0YWNobWVudD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRBcGkuZ2V0VmVyc2lvbkNvbnRlbnRVcmwobm9kZUlkLCB2ZXJzaW9uSWQsIGF0dGFjaG1lbnQpO1xuICB9XG5cbiAgZGVsZXRlU2l0ZShzaXRlSWQ/OiBzdHJpbmcsIG9wdHM/OiB7IHBlcm1hbmVudD86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5zaXRlc0FwaS5kZWxldGVTaXRlKHNpdGVJZCwgb3B0cykpO1xuICB9XG5cbiAgbGVhdmVTaXRlKHNpdGVJZD86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5zaXRlc0FwaS5kZWxldGVTaXRlTWVtYmVyc2hpcChzaXRlSWQsICctbWUtJykpO1xuICB9XG5cbiAgY3JlYXRlU2l0ZShcbiAgICBzaXRlQm9keTogU2l0ZUJvZHlDcmVhdGUsXG4gICAgb3B0cz86IHtcbiAgICAgIGZpZWxkcz86IEFycmF5PHN0cmluZz47XG4gICAgICBza2lwQ29uZmlndXJhdGlvbj86IGJvb2xlYW47XG4gICAgICBza2lwQWRkVG9GYXZvcml0ZXM/OiBib29sZWFuO1xuICAgIH1cbiAgKTogT2JzZXJ2YWJsZTxTaXRlRW50cnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnNpdGVzQXBpLmNyZWF0ZVNpdGUoc2l0ZUJvZHksIG9wdHMpKTtcbiAgfVxuXG4gIGdldFNpdGUoc2l0ZUlkPzogc3RyaW5nLCBvcHRzPzogeyByZWxhdGlvbnM/OiBBcnJheTxzdHJpbmc+OyBmaWVsZHM/OiBBcnJheTxzdHJpbmc+IH0pOiBPYnNlcnZhYmxlPFNpdGVFbnRyeT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuc2l0ZXNBcGkuZ2V0U2l0ZShzaXRlSWQsIG9wdHMpKTtcbiAgfVxuXG4gIHVwZGF0ZUxpYnJhcnkoc2l0ZUlkOiBzdHJpbmcsIHNpdGVCb2R5OiBTaXRlQm9keUNyZWF0ZSk6IE9ic2VydmFibGU8U2l0ZUVudHJ5PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5zaXRlc0FwaS51cGRhdGVTaXRlKHNpdGVJZCwgc2l0ZUJvZHkpKTtcbiAgfVxuXG4gIGFkZEZhdm9yaXRlKG5vZGVzOiBBcnJheTxOb2RlRW50cnk+KTogT2JzZXJ2YWJsZTxGYXZvcml0ZUVudHJ5PiB7XG4gICAgY29uc3QgcGF5bG9hZDogRmF2b3JpdGVCb2R5Q3JlYXRlW10gPSBub2Rlcy5tYXAoKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHsgaXNGb2xkZXIsIG5vZGVJZCwgaWQgfSA9IG5vZGUuZW50cnkgYXMgYW55O1xuICAgICAgY29uc3Qgc2l0ZUlkID0gbm9kZS5lbnRyeVsnZ3VpZCddO1xuICAgICAgY29uc3QgdHlwZSA9IHNpdGVJZCA/ICdzaXRlJyA6IGlzRm9sZGVyID8gJ2ZvbGRlcicgOiAnZmlsZSc7XG4gICAgICBjb25zdCBndWlkID0gc2l0ZUlkIHx8IG5vZGVJZCB8fCBpZDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgW3R5cGVdOiB7XG4gICAgICAgICAgICBndWlkXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZyb20odGhpcy5mYXZvcml0ZXNBcGkuY3JlYXRlRmF2b3JpdGUoJy1tZS0nLCBwYXlsb2FkIGFzIGFueSkpO1xuICB9XG5cbiAgcmVtb3ZlRmF2b3JpdGUobm9kZXM6IEFycmF5PE5vZGVFbnRyeT4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgUHJvbWlzZS5hbGwoXG4gICAgICAgIG5vZGVzLm1hcCgobm9kZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBub2RlLmVudHJ5Lm5vZGVJZCB8fCBub2RlLmVudHJ5LmlkO1xuICAgICAgICAgIHJldHVybiB0aGlzLmZhdm9yaXRlc0FwaS5kZWxldGVGYXZvcml0ZSgnLW1lLScsIGlkKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgdW5sb2NrTm9kZShub2RlSWQ6IHN0cmluZywgb3B0cz86IGFueSk6IFByb21pc2U8Tm9kZUVudHJ5PiB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXNBcGkudW5sb2NrTm9kZShub2RlSWQsIG9wdHMpO1xuICB9XG5cbiAgZ2V0Tm9kZVZlcnNpb25zKG5vZGVJZDogc3RyaW5nLCBvcHRzPzogYW55KTogT2JzZXJ2YWJsZTxWZXJzaW9uUGFnaW5nPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy52ZXJzaW9uc0FwaS5saXN0VmVyc2lvbkhpc3Rvcnkobm9kZUlkLCBvcHRzKSk7XG4gIH1cblxuICByZXF1ZXN0Tm9kZURpcmVjdEFjY2Vzc1VybChub2RlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RGlyZWN0QWNjZXNzVXJsRW50cnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLm5vZGVzQXBpLnJlcXVlc3REaXJlY3RBY2Nlc3NVcmwobm9kZUlkKSk7XG4gIH1cblxuICByZXF1ZXN0VmVyc2lvbkRpcmVjdEFjY2Vzc1VybChub2RlSWQ6IHN0cmluZywgdmVyc2lvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERpcmVjdEFjY2Vzc1VybEVudHJ5PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy52ZXJzaW9uc0FwaS5yZXF1ZXN0RGlyZWN0QWNjZXNzVXJsKG5vZGVJZCwgdmVyc2lvbklkKSk7XG4gIH1cbn1cbiJdfQ==
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9jb250ZW50LWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFlTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLGNBQWMsRUFDZCxZQUFZLEVBQ1osWUFBWSxFQUNaLFVBQVUsRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxXQUFXLEVBR1osTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFLckMsTUFBTSxPQUFPLGlCQUFpQjtJQTZEVDtJQUNBO0lBN0RYLFNBQVMsQ0FBVztJQUM1QixJQUFJLFFBQVE7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRU8sWUFBWSxDQUFjO0lBQ2xDLElBQUksV0FBVztRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFTyxlQUFlLENBQWlCO0lBQ3hDLElBQUksY0FBYztRQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRU8sYUFBYSxDQUFlO0lBQ3BDLElBQUksWUFBWTtRQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDcEYsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTyxhQUFhLENBQWU7SUFDcEMsSUFBSSxZQUFZO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNwRixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVPLFdBQVcsQ0FBYTtJQUNoQyxJQUFJLFVBQVU7UUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU8sU0FBUyxDQUFXO0lBQzVCLElBQUksUUFBUTtRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxVQUFVLENBQVk7SUFDOUIsSUFBSSxTQUFTO1FBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMzRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVPLFVBQVUsQ0FBWTtJQUM5QixJQUFJLFNBQVM7UUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRU8sWUFBWSxDQUFjO0lBQ2xDLElBQUksV0FBVztRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxZQUNtQixHQUF1QixFQUN2QixXQUFtQztRQURuQyxRQUFHLEdBQUgsR0FBRyxDQUFvQjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBd0I7SUFDbkQsQ0FBQztJQUVKOzs7Ozs7T0FNRztJQUNILFVBQVUsQ0FBQyxNQUFjLEVBQUUsVUFBbUMsRUFBRTtRQUM5RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBTyxDQUFDLE1BQWMsRUFBRSxVQUFlLEVBQUU7UUFDdkMsTUFBTSxRQUFRLEdBQUc7WUFDZixPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUM7U0FDcEYsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXRELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLE9BQWE7UUFDdkMsTUFBTSxRQUFRLEdBQUc7WUFDZixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQztTQUNyRSxDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTVELE9BQU8sSUFBSSxDQUNULElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQzlDLENBQUMsU0FBb0IsRUFBRSxFQUFFO2dCQUN2QixPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNSLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUFDLE1BQWMsRUFBRSxVQUFlLEVBQUU7UUFDL0MsTUFBTSxRQUFRLEdBQUc7WUFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjO1lBQ3pDLFNBQVMsRUFBRSxDQUFDO1lBQ1osT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxDQUFDO1NBQ2xGLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV0RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsZUFBZSxDQUFDLFVBQWUsRUFBRTtRQUMvQixNQUFNLFFBQVEsR0FBRztZQUNmLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztTQUNsQixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYztRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWM7UUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxTQUFTLENBQUMsUUFBZ0IsRUFBRSxPQUFvQztRQUM5RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFFBQVEsQ0FBQyxNQUFjLEVBQUUsY0FBc0IsRUFBRSxJQUFhLEVBQUUsSUFBMEQ7UUFDeEgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELFlBQVksQ0FDVixRQUFnQixFQUNoQixJQUtDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELG9CQUFvQixDQUFDLFdBQW1CLE1BQU0sRUFBRSxJQUFVO1FBQ3hELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUU7WUFDakMsR0FBRyxJQUFJO1lBQ1AsS0FBSyxFQUFFLHVCQUF1QjtTQUMvQixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLFFBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDakMsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBTyxFQUFFLEVBQUU7b0JBQ3BELEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO29CQUM5QyxPQUFPO3dCQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUk7cUJBQ3pCLENBQUM7Z0JBQ0osQ0FBQyxDQUFDO2dCQUNGLFVBQVUsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVU7YUFDckM7U0FDRixDQUFDLENBQUMsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFVO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsVUFBb0I7UUFDekQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQXNCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjLEVBQUUsVUFBb0I7UUFDaEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWMsRUFBRSxTQUFpQixFQUFFLFVBQW9CO1FBQzFFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBZSxFQUFFLElBQThCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxTQUFTLENBQUMsTUFBZTtRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxVQUFVLENBQ1IsUUFBd0IsRUFDeEIsSUFJQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxPQUFPLENBQUMsTUFBZSxFQUFFLElBQTREO1FBQ25GLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYyxFQUFFLFFBQXdCO1FBQ3BELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBdUI7UUFDakMsTUFBTSxPQUFPLEdBQXlCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2RCxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBWSxDQUFDO1lBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDNUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFFcEMsT0FBTztnQkFDTCxNQUFNLEVBQUU7b0JBQ04sQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDTixJQUFJO3FCQUNMO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLE9BQWMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUF1QjtRQUNwQyxPQUFPLElBQUksQ0FDVCxPQUFPLENBQUMsR0FBRyxDQUNULEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUN0QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWMsRUFBRSxJQUFVO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYyxFQUFFLElBQVU7UUFDeEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsMEJBQTBCLENBQUMsTUFBYztRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELDZCQUE2QixDQUFDLE1BQWMsRUFBRSxTQUFpQjtRQUM3RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7dUdBalRVLGlCQUFpQjsyR0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBBbGZyZXNjb0FwaVNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgTm9kZVBhZ2luZyxcbiAgTm9kZSxcbiAgRGVsZXRlZE5vZGVzUGFnaW5nLFxuICBQZXJzb25FbnRyeSxcbiAgTm9kZUVudHJ5LFxuICBEaXNjb3ZlcnlFbnRyeSxcbiAgRmF2b3JpdGVQYWdpbmcsXG4gIFNoYXJlZExpbmtQYWdpbmcsXG4gIFNlYXJjaFJlcXVlc3QsXG4gIFJlc3VsdFNldFBhZ2luZyxcbiAgU2l0ZUJvZHlDcmVhdGUsXG4gIFNpdGVFbnRyeSxcbiAgRmF2b3JpdGVCb2R5Q3JlYXRlLFxuICBGYXZvcml0ZUVudHJ5LFxuICBOb2Rlc0FwaSxcbiAgVHJhc2hjYW5BcGksXG4gIFNoYXJlZGxpbmtzQXBpLFxuICBEaXNjb3ZlcnlBcGksXG4gIEZhdm9yaXRlc0FwaSxcbiAgQ29udGVudEFwaSxcbiAgU2l0ZXNBcGksXG4gIFNlYXJjaEFwaSxcbiAgUGVvcGxlQXBpLFxuICBWZXJzaW9uc0FwaSxcbiAgRGlyZWN0QWNjZXNzVXJsRW50cnksXG4gIFZlcnNpb25QYWdpbmdcbn0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbm9kZXNBcGk6IE5vZGVzQXBpO1xuICBnZXQgbm9kZXNBcGkoKTogTm9kZXNBcGkge1xuICAgIHRoaXMuX25vZGVzQXBpID0gdGhpcy5fbm9kZXNBcGkgPz8gbmV3IE5vZGVzQXBpKHRoaXMuYXBpLmdldEluc3RhbmNlKCkpO1xuICAgIHJldHVybiB0aGlzLl9ub2Rlc0FwaTtcbiAgfVxuXG4gIHByaXZhdGUgX3RyYXNoY2FuQXBpOiBUcmFzaGNhbkFwaTtcbiAgZ2V0IHRyYXNoY2FuQXBpKCk6IFRyYXNoY2FuQXBpIHtcbiAgICB0aGlzLl90cmFzaGNhbkFwaSA9IHRoaXMuX3RyYXNoY2FuQXBpID8/IG5ldyBUcmFzaGNhbkFwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fdHJhc2hjYW5BcGk7XG4gIH1cblxuICBwcml2YXRlIF9zaGFyZWRMaW5rc0FwaTogU2hhcmVkbGlua3NBcGk7XG4gIGdldCBzaGFyZWRMaW5rc0FwaSgpOiBTaGFyZWRsaW5rc0FwaSB7XG4gICAgdGhpcy5fc2hhcmVkTGlua3NBcGkgPSB0aGlzLl9zaGFyZWRMaW5rc0FwaSA/PyBuZXcgU2hhcmVkbGlua3NBcGkodGhpcy5hcGkuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX3NoYXJlZExpbmtzQXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzY292ZXJ5QXBpOiBEaXNjb3ZlcnlBcGk7XG4gIGdldCBkaXNjb3ZlcnlBcGkoKTogRGlzY292ZXJ5QXBpIHtcbiAgICB0aGlzLl9kaXNjb3ZlcnlBcGkgPSB0aGlzLl9kaXNjb3ZlcnlBcGkgPz8gbmV3IERpc2NvdmVyeUFwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fZGlzY292ZXJ5QXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmF2b3JpdGVzQXBpOiBGYXZvcml0ZXNBcGk7XG4gIGdldCBmYXZvcml0ZXNBcGkoKTogRmF2b3JpdGVzQXBpIHtcbiAgICB0aGlzLl9mYXZvcml0ZXNBcGkgPSB0aGlzLl9mYXZvcml0ZXNBcGkgPz8gbmV3IEZhdm9yaXRlc0FwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fZmF2b3JpdGVzQXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29udGVudEFwaTogQ29udGVudEFwaTtcbiAgZ2V0IGNvbnRlbnRBcGkoKTogQ29udGVudEFwaSB7XG4gICAgdGhpcy5fY29udGVudEFwaSA9IHRoaXMuX2NvbnRlbnRBcGkgPz8gbmV3IENvbnRlbnRBcGkodGhpcy5hcGkuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRBcGk7XG4gIH1cblxuICBwcml2YXRlIF9zaXRlc0FwaTogU2l0ZXNBcGk7XG4gIGdldCBzaXRlc0FwaSgpOiBTaXRlc0FwaSB7XG4gICAgdGhpcy5fc2l0ZXNBcGkgPSB0aGlzLl9zaXRlc0FwaSA/PyBuZXcgU2l0ZXNBcGkodGhpcy5hcGkuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX3NpdGVzQXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VhcmNoQXBpOiBTZWFyY2hBcGk7XG4gIGdldCBzZWFyY2hBcGkoKTogU2VhcmNoQXBpIHtcbiAgICB0aGlzLl9zZWFyY2hBcGkgPSB0aGlzLl9zZWFyY2hBcGkgPz8gbmV3IFNlYXJjaEFwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoQXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGVvcGxlQXBpOiBQZW9wbGVBcGk7XG4gIGdldCBwZW9wbGVBcGkoKTogUGVvcGxlQXBpIHtcbiAgICB0aGlzLl9wZW9wbGVBcGkgPSB0aGlzLl9wZW9wbGVBcGkgPz8gbmV3IFBlb3BsZUFwaSh0aGlzLmFwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fcGVvcGxlQXBpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmVyc2lvbnNBcGk6IFZlcnNpb25zQXBpO1xuICBnZXQgdmVyc2lvbnNBcGkoKTogVmVyc2lvbnNBcGkge1xuICAgIHRoaXMuX3ZlcnNpb25zQXBpID0gdGhpcy5fdmVyc2lvbnNBcGkgPz8gbmV3IFZlcnNpb25zQXBpKHRoaXMuYXBpLmdldEluc3RhbmNlKCkpO1xuICAgIHJldHVybiB0aGlzLl92ZXJzaW9uc0FwaTtcbiAgfVxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwaTogQWxmcmVzY29BcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJlZmVyZW5jZXM6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBNb3ZlcyBhIG5vZGUgdG8gdGhlIHRyYXNoY2FuLlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUlkIElEIG9mIHRoZSB0YXJnZXQgbm9kZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSBKUy1BUElcbiAgICogQHJldHVybnMgRW1wdHkgcmVzdWx0IHRoYXQgbm90aWZpZXMgd2hlbiB0aGUgZGVsZXRpb24gaXMgY29tcGxldGVcbiAgICovXG4gIGRlbGV0ZU5vZGUobm9kZUlkOiBzdHJpbmcsIG9wdGlvbnM6IHsgcGVybWFuZW50PzogYm9vbGVhbiB9ID0ge30pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLm5vZGVzQXBpLmRlbGV0ZU5vZGUobm9kZUlkLCBvcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3RvcmVkIGluZm9ybWF0aW9uIGFib3V0IGEgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIG5vZGVJZCBJRCBvZiB0aGUgdGFyZ2V0IG5vZGVcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgcGFyYW1ldGVycyBzdXBwb3J0ZWQgYnkgSlMtQVBJXG4gICAqIEByZXR1cm5zIE5vZGUgaW5mb3JtYXRpb25cbiAgICovXG4gIGdldE5vZGUobm9kZUlkOiBzdHJpbmcsIG9wdGlvbnM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxOb2RlRW50cnk+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGluY2x1ZGU6IFsncGF0aCcsICdwcm9wZXJ0aWVzJywgJ2FsbG93YWJsZU9wZXJhdGlvbnMnLCAncGVybWlzc2lvbnMnLCAnZGVmaW5pdGlvbiddXG4gICAgfTtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRzLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBmcm9tKHRoaXMubm9kZXNBcGkuZ2V0Tm9kZShub2RlSWQsIHF1ZXJ5T3B0aW9ucykpO1xuICB9XG5cbiAgZ2V0Tm9kZUluZm8obm9kZUlkOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiBPYnNlcnZhYmxlPE5vZGU+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGluY2x1ZGU6IFsnaXNGYXZvcml0ZScsICdhbGxvd2FibGVPcGVyYXRpb25zJywgJ3BhdGgnLCAnZGVmaW5pdGlvbiddXG4gICAgfTtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRzLCBvcHRpb25zIHx8IHt9KTtcblxuICAgIHJldHVybiBmcm9tKFxuICAgICAgbmV3IFByb21pc2U8Tm9kZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0aGlzLm5vZGVzQXBpLmdldE5vZGUobm9kZUlkLCBxdWVyeU9wdGlvbnMpLnRoZW4oXG4gICAgICAgICAgKG5vZGVFbnRyeTogTm9kZUVudHJ5KSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKG5vZGVFbnRyeS5lbnRyeSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGl0ZW1zIGNvbnRhaW5lZCBpbiBhIGZvbGRlciBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUlkIElEIG9mIHRoZSB0YXJnZXQgbm9kZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSBKUy1BUElcbiAgICogQHJldHVybnMgTGlzdCBvZiBjaGlsZCBpdGVtcyBmcm9tIHRoZSBmb2xkZXJcbiAgICovXG4gIGdldE5vZGVDaGlsZHJlbihub2RlSWQ6IHN0cmluZywgb3B0aW9uczogYW55ID0ge30pOiBPYnNlcnZhYmxlPE5vZGVQYWdpbmc+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG1heEl0ZW1zOiB0aGlzLnByZWZlcmVuY2VzLnBhZ2luYXRpb25TaXplLFxuICAgICAgc2tpcENvdW50OiAwLFxuICAgICAgaW5jbHVkZTogWydpc0xvY2tlZCcsICdwYXRoJywgJ3Byb3BlcnRpZXMnLCAnYWxsb3dhYmxlT3BlcmF0aW9ucycsICdwZXJtaXNzaW9ucyddXG4gICAgfTtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRzLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBmcm9tKHRoaXMubm9kZXNBcGkubGlzdE5vZGVDaGlsZHJlbihub2RlSWQsIHF1ZXJ5T3B0aW9ucykpO1xuICB9XG5cbiAgZGVsZXRlU2hhcmVkTGluayhsaW5rSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5zaGFyZWRMaW5rc0FwaS5kZWxldGVTaGFyZWRMaW5rKGxpbmtJZCkpO1xuICB9XG5cbiAgZ2V0RGVsZXRlZE5vZGVzKG9wdGlvbnM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxEZWxldGVkTm9kZXNQYWdpbmc+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGluY2x1ZGU6IFsncGF0aCddXG4gICAgfTtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRzLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBmcm9tKHRoaXMudHJhc2hjYW5BcGkubGlzdERlbGV0ZWROb2RlcyhxdWVyeU9wdGlvbnMpKTtcbiAgfVxuXG4gIHJlc3RvcmVOb2RlKG5vZGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxOb2RlRW50cnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnRyYXNoY2FuQXBpLnJlc3RvcmVEZWxldGVkTm9kZShub2RlSWQpKTtcbiAgfVxuXG4gIHB1cmdlRGVsZXRlZE5vZGUobm9kZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMudHJhc2hjYW5BcGkuZGVsZXRlRGVsZXRlZE5vZGUobm9kZUlkKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBpbmZvcm1hdGlvbiBhYm91dCBhIHVzZXIgaWRlbnRpZmllZCBieSB0aGVpciB1c2VybmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHBlcnNvbklkIElEIG9mIHRoZSB0YXJnZXQgdXNlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBBcGkgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBVc2VyIGluZm9ybWF0aW9uXG4gICAqL1xuICBnZXRQZXJzb24ocGVyc29uSWQ6IHN0cmluZywgb3B0aW9ucz86IHsgZmllbGRzPzogQXJyYXk8c3RyaW5nPiB9KTogT2JzZXJ2YWJsZTxQZXJzb25FbnRyeT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMucGVvcGxlQXBpLmdldFBlcnNvbihwZXJzb25JZCwgb3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcHkgYSBub2RlIHRvIGRlc3RpbmF0aW9uIG5vZGVcbiAgICpcbiAgICogQHBhcmFtIG5vZGVJZCBUaGUgaWQgb2YgdGhlIG5vZGUgdG8gYmUgY29waWVkXG4gICAqIEBwYXJhbSB0YXJnZXRQYXJlbnRJZCBUaGUgaWQgb2YgdGhlIGZvbGRlci1ub2RlIHdoZXJlIHRoZSBub2RlIGhhdmUgdG8gYmUgY29waWVkIHRvXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuZXcgbmFtZSBmb3IgdGhlIGNvcHkgdGhhdCB3b3VsZCBiZSBhZGRlZCBvbiB0aGUgZGVzdGluYXRpb24gZm9sZGVyXG4gICAqIEBwYXJhbSBvcHRzIEFwaSBvcHRpb25zXG4gICAqL1xuICBjb3B5Tm9kZShub2RlSWQ6IHN0cmluZywgdGFyZ2V0UGFyZW50SWQ6IHN0cmluZywgbmFtZT86IHN0cmluZywgb3B0cz86IHsgaW5jbHVkZT86IEFycmF5PHN0cmluZz47IGZpZWxkcz86IEFycmF5PHN0cmluZz4gfSk6IE9ic2VydmFibGU8Tm9kZUVudHJ5PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5ub2Rlc0FwaS5jb3B5Tm9kZShub2RlSWQsIHsgdGFyZ2V0UGFyZW50SWQsIG5hbWUgfSwgb3B0cykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgcHJvZHVjdCBpbmZvcm1hdGlvbiBmb3IgQ29udGVudCBTZXJ2aWNlcy5cbiAgICpcbiAgICogQHJldHVybnMgUHJvZHVjdFZlcnNpb25Nb2RlbCBjb250YWluaW5nIHByb2R1Y3QgZGV0YWlsc1xuICAgKi9cbiAgZ2V0UmVwb3NpdG9yeUluZm9ybWF0aW9uKCk6IE9ic2VydmFibGU8RGlzY292ZXJ5RW50cnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmRpc2NvdmVyeUFwaS5nZXRSZXBvc2l0b3J5SW5mb3JtYXRpb24oKSk7XG4gIH1cblxuICBnZXRGYXZvcml0ZXMoXG4gICAgcGVyc29uSWQ6IHN0cmluZyxcbiAgICBvcHRzPzoge1xuICAgICAgc2tpcENvdW50PzogbnVtYmVyO1xuICAgICAgbWF4SXRlbXM/OiBudW1iZXI7XG4gICAgICB3aGVyZT86IHN0cmluZztcbiAgICAgIGZpZWxkcz86IEFycmF5PHN0cmluZz47XG4gICAgfVxuICApOiBPYnNlcnZhYmxlPEZhdm9yaXRlUGFnaW5nPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5mYXZvcml0ZXNBcGkubGlzdEZhdm9yaXRlcyhwZXJzb25JZCwgb3B0cykpO1xuICB9XG5cbiAgZ2V0RmF2b3JpdGVMaWJyYXJpZXMocGVyc29uSWQ6IHN0cmluZyA9ICctbWUtJywgb3B0cz86IGFueSk6IE9ic2VydmFibGU8RmF2b3JpdGVQYWdpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRGYXZvcml0ZXMocGVyc29uSWQsIHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICB3aGVyZTogJyhFWElTVFModGFyZ2V0L3NpdGUpKSdcbiAgICB9KS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogRmF2b3JpdGVQYWdpbmcpID0+ICh7XG4gICAgICAgIGxpc3Q6IHtcbiAgICAgICAgICBlbnRyaWVzOiByZXNwb25zZS5saXN0LmVudHJpZXMubWFwKCh7IGVudHJ5IH06IGFueSkgPT4ge1xuICAgICAgICAgICAgZW50cnkudGFyZ2V0LnNpdGUuY3JlYXRlZEF0ID0gZW50cnkuY3JlYXRlZEF0O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZW50cnk6IGVudHJ5LnRhcmdldC5zaXRlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHBhZ2luYXRpb246IHJlc3BvbnNlLmxpc3QucGFnaW5hdGlvblxuICAgICAgICB9XG4gICAgICB9KSlcbiAgICApO1xuICB9XG5cbiAgZmluZFNoYXJlZExpbmtzKG9wdHM/OiBhbnkpOiBPYnNlcnZhYmxlPFNoYXJlZExpbmtQYWdpbmc+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnNoYXJlZExpbmtzQXBpLmxpc3RTaGFyZWRMaW5rcyhvcHRzKSk7XG4gIH1cblxuICBnZXRTaGFyZWRMaW5rQ29udGVudChzaGFyZWRJZDogc3RyaW5nLCBhdHRhY2htZW50PzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudEFwaS5nZXRTaGFyZWRMaW5rQ29udGVudFVybChzaGFyZWRJZCwgYXR0YWNobWVudCk7XG4gIH1cblxuICBzZWFyY2gocmVxdWVzdDogU2VhcmNoUmVxdWVzdCk6IE9ic2VydmFibGU8UmVzdWx0U2V0UGFnaW5nPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5zZWFyY2hBcGkuc2VhcmNoKHJlcXVlc3QpKTtcbiAgfVxuXG4gIGdldENvbnRlbnRVcmwobm9kZUlkOiBzdHJpbmcsIGF0dGFjaG1lbnQ/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50QXBpLmdldENvbnRlbnRVcmwobm9kZUlkLCBhdHRhY2htZW50KTtcbiAgfVxuXG4gIGdldFZlcnNpb25Db250ZW50VXJsKG5vZGVJZDogc3RyaW5nLCB2ZXJzaW9uSWQ6IHN0cmluZywgYXR0YWNobWVudD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRBcGkuZ2V0VmVyc2lvbkNvbnRlbnRVcmwobm9kZUlkLCB2ZXJzaW9uSWQsIGF0dGFjaG1lbnQpO1xuICB9XG5cbiAgZGVsZXRlU2l0ZShzaXRlSWQ/OiBzdHJpbmcsIG9wdHM/OiB7IHBlcm1hbmVudD86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5zaXRlc0FwaS5kZWxldGVTaXRlKHNpdGVJZCwgb3B0cykpO1xuICB9XG5cbiAgbGVhdmVTaXRlKHNpdGVJZD86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5zaXRlc0FwaS5kZWxldGVTaXRlTWVtYmVyc2hpcChzaXRlSWQsICctbWUtJykpO1xuICB9XG5cbiAgY3JlYXRlU2l0ZShcbiAgICBzaXRlQm9keTogU2l0ZUJvZHlDcmVhdGUsXG4gICAgb3B0cz86IHtcbiAgICAgIGZpZWxkcz86IEFycmF5PHN0cmluZz47XG4gICAgICBza2lwQ29uZmlndXJhdGlvbj86IGJvb2xlYW47XG4gICAgICBza2lwQWRkVG9GYXZvcml0ZXM/OiBib29sZWFuO1xuICAgIH1cbiAgKTogT2JzZXJ2YWJsZTxTaXRlRW50cnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLnNpdGVzQXBpLmNyZWF0ZVNpdGUoc2l0ZUJvZHksIG9wdHMpKTtcbiAgfVxuXG4gIGdldFNpdGUoc2l0ZUlkPzogc3RyaW5nLCBvcHRzPzogeyByZWxhdGlvbnM/OiBBcnJheTxzdHJpbmc+OyBmaWVsZHM/OiBBcnJheTxzdHJpbmc+IH0pOiBPYnNlcnZhYmxlPFNpdGVFbnRyeT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuc2l0ZXNBcGkuZ2V0U2l0ZShzaXRlSWQsIG9wdHMpKTtcbiAgfVxuXG4gIHVwZGF0ZUxpYnJhcnkoc2l0ZUlkOiBzdHJpbmcsIHNpdGVCb2R5OiBTaXRlQm9keUNyZWF0ZSk6IE9ic2VydmFibGU8U2l0ZUVudHJ5PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5zaXRlc0FwaS51cGRhdGVTaXRlKHNpdGVJZCwgc2l0ZUJvZHkpKTtcbiAgfVxuXG4gIGFkZEZhdm9yaXRlKG5vZGVzOiBBcnJheTxOb2RlRW50cnk+KTogT2JzZXJ2YWJsZTxGYXZvcml0ZUVudHJ5PiB7XG4gICAgY29uc3QgcGF5bG9hZDogRmF2b3JpdGVCb2R5Q3JlYXRlW10gPSBub2Rlcy5tYXAoKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHsgaXNGb2xkZXIsIG5vZGVJZCwgaWQgfSA9IG5vZGUuZW50cnkgYXMgYW55O1xuICAgICAgY29uc3Qgc2l0ZUlkID0gbm9kZS5lbnRyeVsnZ3VpZCddO1xuICAgICAgY29uc3QgdHlwZSA9IHNpdGVJZCA/ICdzaXRlJyA6IGlzRm9sZGVyID8gJ2ZvbGRlcicgOiAnZmlsZSc7XG4gICAgICBjb25zdCBndWlkID0gc2l0ZUlkIHx8IG5vZGVJZCB8fCBpZDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgW3R5cGVdOiB7XG4gICAgICAgICAgICBndWlkXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZyb20odGhpcy5mYXZvcml0ZXNBcGkuY3JlYXRlRmF2b3JpdGUoJy1tZS0nLCBwYXlsb2FkIGFzIGFueSkpO1xuICB9XG5cbiAgcmVtb3ZlRmF2b3JpdGUobm9kZXM6IEFycmF5PE5vZGVFbnRyeT4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgUHJvbWlzZS5hbGwoXG4gICAgICAgIG5vZGVzLm1hcCgobm9kZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBub2RlLmVudHJ5Lm5vZGVJZCB8fCBub2RlLmVudHJ5LmlkO1xuICAgICAgICAgIHJldHVybiB0aGlzLmZhdm9yaXRlc0FwaS5kZWxldGVGYXZvcml0ZSgnLW1lLScsIGlkKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgdW5sb2NrTm9kZShub2RlSWQ6IHN0cmluZywgb3B0cz86IGFueSk6IFByb21pc2U8Tm9kZUVudHJ5PiB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXNBcGkudW5sb2NrTm9kZShub2RlSWQsIG9wdHMpO1xuICB9XG5cbiAgZ2V0Tm9kZVZlcnNpb25zKG5vZGVJZDogc3RyaW5nLCBvcHRzPzogYW55KTogT2JzZXJ2YWJsZTxWZXJzaW9uUGFnaW5nPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy52ZXJzaW9uc0FwaS5saXN0VmVyc2lvbkhpc3Rvcnkobm9kZUlkLCBvcHRzKSk7XG4gIH1cblxuICByZXF1ZXN0Tm9kZURpcmVjdEFjY2Vzc1VybChub2RlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RGlyZWN0QWNjZXNzVXJsRW50cnk+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLm5vZGVzQXBpLnJlcXVlc3REaXJlY3RBY2Nlc3NVcmwobm9kZUlkKSk7XG4gIH1cblxuICByZXF1ZXN0VmVyc2lvbkRpcmVjdEFjY2Vzc1VybChub2RlSWQ6IHN0cmluZywgdmVyc2lvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERpcmVjdEFjY2Vzc1VybEVudHJ5PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy52ZXJzaW9uc0FwaS5yZXF1ZXN0RGlyZWN0QWNjZXNzVXJsKG5vZGVJZCwgdmVyc2lvbklkKSk7XG4gIH1cbn1cbiJdfQ==
@@ -36,13 +36,15 @@ export class NavigationHistoryService {
36
36
  return this.router.events.pipe(startWith(new NavigationEnd(0, this.router.url, this.router.url)), filter((event) => event instanceof NavigationEnd));
37
37
  }
38
38
  shouldReturnLastSelection(url) {
39
- return this.history.length > 2 && this.history[1].startsWith(url) && this.history[0] === this.history[2];
39
+ return (this.history.length > 2 &&
40
+ this.history[this.history.length - 2].startsWith(url) &&
41
+ [...this.history]
42
+ .reverse()
43
+ .slice(1)
44
+ .find((oldUrl) => !oldUrl.startsWith(url)) === this.history[this.history.length - 1]);
40
45
  }
41
- setHistory(event, maxHistoryLength) {
46
+ setHistory(event) {
42
47
  this.history.push(event.urlAfterRedirects);
43
- if (maxHistoryLength > 0 && this.history.length > maxHistoryLength) {
44
- this.history.shift();
45
- }
46
48
  }
47
49
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavigationHistoryService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
48
50
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavigationHistoryService, providedIn: 'root' });
@@ -51,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
51
53
  type: Injectable,
52
54
  args: [{ providedIn: 'root' }]
53
55
  }], ctorParameters: () => [{ type: i1.Router }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1oaXN0b3J5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Etc2hhcmVkL3NyYy9saWIvc2VydmljZXMvbmF2aWdhdGlvbi1oaXN0b3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSW5ELE1BQU0sT0FBTyx3QkFBd0I7SUFHZjtJQUZwQixPQUFPLEdBQWEsRUFBRSxDQUFDO0lBRXZCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUV0QyxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzVCLFNBQVMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNqRSxNQUFNLENBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLENBQ2pFLENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsR0FBVztRQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFvQixFQUFFLGdCQUF3QjtRQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxJQUFJLGdCQUFnQixHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25FLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7dUdBckJVLHdCQUF3QjsyR0FBeEIsd0JBQXdCLGNBRFgsTUFBTTs7MkZBQ25CLHdCQUF3QjtrQkFEcEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25IaXN0b3J5U2VydmljZSB7XG4gIGhpc3Rvcnk6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cblxuICBsaXN0ZW5Ub1JvdXRlQ2hhbmdlcygpOiBPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICBzdGFydFdpdGgobmV3IE5hdmlnYXRpb25FbmQoMCwgdGhpcy5yb3V0ZXIudXJsLCB0aGlzLnJvdXRlci51cmwpKSxcbiAgICAgIGZpbHRlcigoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgICApO1xuICB9XG5cbiAgc2hvdWxkUmV0dXJuTGFzdFNlbGVjdGlvbih1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhpc3RvcnkubGVuZ3RoID4gMiAmJiB0aGlzLmhpc3RvcnlbMV0uc3RhcnRzV2l0aCh1cmwpICYmIHRoaXMuaGlzdG9yeVswXSA9PT0gdGhpcy5oaXN0b3J5WzJdO1xuICB9XG5cbiAgc2V0SGlzdG9yeShldmVudDogTmF2aWdhdGlvbkVuZCwgbWF4SGlzdG9yeUxlbmd0aDogbnVtYmVyKSB7XG4gICAgdGhpcy5oaXN0b3J5LnB1c2goZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMpO1xuICAgIGlmIChtYXhIaXN0b3J5TGVuZ3RoID4gMCAmJiB0aGlzLmhpc3RvcnkubGVuZ3RoID4gbWF4SGlzdG9yeUxlbmd0aCkge1xuICAgICAgdGhpcy5oaXN0b3J5LnNoaWZ0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1oaXN0b3J5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Etc2hhcmVkL3NyYy9saWIvc2VydmljZXMvbmF2aWdhdGlvbi1oaXN0b3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSW5ELE1BQU0sT0FBTyx3QkFBd0I7SUFHZjtJQUZwQixPQUFPLEdBQWEsRUFBRSxDQUFDO0lBRXZCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUV0QyxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzVCLFNBQVMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNqRSxNQUFNLENBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLENBQ2pFLENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsR0FBVztRQUNuQyxPQUFPLENBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7WUFDckQsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQ2QsT0FBTyxFQUFFO2lCQUNULEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ1IsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUN2RixDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFvQjtRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO3VHQXpCVSx3QkFBd0I7MkdBQXhCLHdCQUF3QixjQURYLE1BQU07OzJGQUNuQix3QkFBd0I7a0JBRHBDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uSGlzdG9yeVNlcnZpY2Uge1xuICBoaXN0b3J5OiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgbGlzdGVuVG9Sb3V0ZUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uRW5kPiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgc3RhcnRXaXRoKG5ldyBOYXZpZ2F0aW9uRW5kKDAsIHRoaXMucm91dGVyLnVybCwgdGhpcy5yb3V0ZXIudXJsKSksXG4gICAgICBmaWx0ZXIoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICAgKTtcbiAgfVxuXG4gIHNob3VsZFJldHVybkxhc3RTZWxlY3Rpb24odXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5oaXN0b3J5Lmxlbmd0aCA+IDIgJiZcbiAgICAgIHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMl0uc3RhcnRzV2l0aCh1cmwpICYmXG4gICAgICBbLi4udGhpcy5oaXN0b3J5XVxuICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgIC5zbGljZSgxKVxuICAgICAgICAuZmluZCgob2xkVXJsKSA9PiAhb2xkVXJsLnN0YXJ0c1dpdGgodXJsKSkgPT09IHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMV1cbiAgICApO1xuICB9XG5cbiAgc2V0SGlzdG9yeShldmVudDogTmF2aWdhdGlvbkVuZCk6IHZvaWQge1xuICAgIHRoaXMuaGlzdG9yeS5wdXNoKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKTtcbiAgfVxufVxuIl19
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
104
104
  providedIn: 'root'
105
105
  }]
106
106
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.ExtensionService }] });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmV4dGVuc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci5leHRlbnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBS3pDLE1BQU0sT0FBTyxzQkFBc0I7SUFNYjtJQUEwQjtJQUw5QyxRQUFRLEdBQUc7UUFDVCxNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxnQ0FBZ0MsQ0FBQztLQUNyRCxDQUFDO0lBRUYsWUFBb0IsTUFBYyxFQUFZLFVBQTRCO1FBQXRELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBWSxlQUFVLEdBQVYsVUFBVSxDQUFrQjtJQUFHLENBQUM7SUFFOUUsa0JBQWtCO1FBQ2hCLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQThCLEVBQUUsRUFBRTtZQUNyRSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUNsRCxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDL0MsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFcEgsT0FBTztnQkFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDdEUsZ0JBQWdCLEVBQUUsTUFBTTtnQkFDeEIsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsUUFBUSxFQUFFO29CQUNSLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO3dCQUNuQixDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7NEJBQzVELElBQUk7NEJBQ0osTUFBTTs0QkFDTixJQUFJOzRCQUNKLFNBQVMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO3lCQUM1QyxDQUFDLENBQUM7d0JBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDUDt3QkFDRSxJQUFJLEVBQUUsRUFBRTt3QkFDUixTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7d0JBQ2pELElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtxQkFDakI7aUJBQ0Y7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsRUFBVTtRQUNqQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQXFCO1FBQ2xELE9BQU8sS0FBSyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUM7SUFDekMsQ0FBQztJQUVPLDRCQUE0QixDQUFDLGNBQThCO1FBQ2pFLE9BQU8sY0FBYyxDQUFDLFdBQVcsQ0FBQztRQUNsQyxPQUFPLGNBQWMsQ0FBQyxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxXQUFXO1FBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQztRQUV2RixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7dUdBdkVVLHNCQUFzQjsyR0FBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBFeHRlbnNpb25Sb3V0ZSB9IGZyb20gJy4uL21vZGVscy90eXBlcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZXJFeHRlbnNpb25TZXJ2aWNlIHtcbiAgZGVmYXVsdHMgPSB7XG4gICAgbGF5b3V0OiAnYXBwLmxheW91dC5tYWluJyxcbiAgICBhdXRoOiBbJ2FwcC5hdXRoJywgJ2FwcC5leHRlbnNpb25zLmRhdGFMb2FkZXJHdWFyZCddXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJvdGVjdGVkIGV4dGVuc2lvbnM6IEV4dGVuc2lvblNlcnZpY2UpIHt9XG5cbiAgbWFwRXh0ZW5zaW9uUm91dGVzKCkge1xuICAgIGNvbnN0IHJvdXRlc1dpdGhvdXRQYXJlbnQgPSBbXTtcbiAgICB0aGlzLmdldEFwcGxpY2F0aW9uUm91dGVzKCkuZm9yRWFjaCgoZXh0ZW5zaW9uUm91dGU6IEV4dGVuc2lvblJvdXRlKSA9PiB7XG4gICAgICBpZiAodGhpcy5leHRlbnNpb25Sb3V0ZUhhc0NoaWxkKGV4dGVuc2lvblJvdXRlKSkge1xuICAgICAgICBjb25zdCBwYXJlbnRSb3V0ZSA9IHRoaXMuZmluZFJvdXRlKGV4dGVuc2lvblJvdXRlLnBhcmVudFJvdXRlKTtcbiAgICAgICAgaWYgKHBhcmVudFJvdXRlKSB7XG4gICAgICAgICAgdGhpcy5jb252ZXJ0RXh0ZW5zaW9uUm91dGVUb1JvdXRlKGV4dGVuc2lvblJvdXRlKTtcbiAgICAgICAgICBwYXJlbnRSb3V0ZS5jaGlsZHJlbi51bnNoaWZ0KGV4dGVuc2lvblJvdXRlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm91dGVzV2l0aG91dFBhcmVudC5wdXNoKGV4dGVuc2lvblJvdXRlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucm91dGVyLmNvbmZpZy51bnNoaWZ0KC4uLnJvdXRlc1dpdGhvdXRQYXJlbnQpO1xuICB9XG5cbiAgcHVibGljIGdldEFwcGxpY2F0aW9uUm91dGVzKCk6IEFycmF5PEV4dGVuc2lvblJvdXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5yb3V0ZXMubWFwKChyb3V0ZSkgPT4ge1xuICAgICAgY29uc3QgZ3VhcmRzID0gdGhpcy5leHRlbnNpb25zLmdldEF1dGhHdWFyZHMocm91dGUuYXV0aCAmJiByb3V0ZS5hdXRoLmxlbmd0aCA+IDAgPyByb3V0ZS5hdXRoIDogdGhpcy5kZWZhdWx0cy5hdXRoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aDogcm91dGUucGF0aCxcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLmdldENvbXBvbmVudEJ5SWQocm91dGUubGF5b3V0ID8/IHRoaXMuZGVmYXVsdHMubGF5b3V0KSxcbiAgICAgICAgY2FuQWN0aXZhdGVDaGlsZDogZ3VhcmRzLFxuICAgICAgICBjYW5BY3RpdmF0ZTogZ3VhcmRzLFxuICAgICAgICBwYXJlbnRSb3V0ZTogcm91dGUucGFyZW50Um91dGUsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgLi4uKHJvdXRlWydjaGlsZHJlbiddXG4gICAgICAgICAgICA/IHJvdXRlWydjaGlsZHJlbiddLm1hcCgoeyBwYXRoLCBjb21wb25lbnQsIG91dGxldCwgZGF0YSB9KSA9PiAoe1xuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgb3V0bGV0LFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLmdldENvbXBvbmVudEJ5SWQoY29tcG9uZW50KVxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLmdldENvbXBvbmVudEJ5SWQocm91dGUuY29tcG9uZW50KSxcbiAgICAgICAgICAgIGRhdGE6IHJvdXRlLmRhdGFcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbXBvbmVudEJ5SWQoaWQ6IHN0cmluZyk6IFR5cGU8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbnMuZ2V0Q29tcG9uZW50QnlJZChpZCk7XG4gIH1cblxuICBwcml2YXRlIGV4dGVuc2lvblJvdXRlSGFzQ2hpbGQocm91dGU6IEV4dGVuc2lvblJvdXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJvdXRlLnBhcmVudFJvdXRlICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRFeHRlbnNpb25Sb3V0ZVRvUm91dGUoZXh0ZW5zaW9uUm91dGU6IEV4dGVuc2lvblJvdXRlKSB7XG4gICAgZGVsZXRlIGV4dGVuc2lvblJvdXRlLnBhcmVudFJvdXRlO1xuICAgIGRlbGV0ZSBleHRlbnNpb25Sb3V0ZS5jb21wb25lbnQ7XG4gIH1cblxuICBwcml2YXRlIGZpbmRSb3V0ZShwYXJlbnRSb3V0ZSkge1xuICAgIGNvbnN0IHJvdXRlSW5kZXggPSB0aGlzLnJvdXRlci5jb25maWcuZmluZEluZGV4KChyb3V0ZSkgPT4gcm91dGUucGF0aCA9PT0gcGFyZW50Um91dGUpO1xuXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmNvbmZpZ1tyb3V0ZUluZGV4XTtcbiAgfVxufVxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmV4dGVuc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci5leHRlbnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBS3pDLE1BQU0sT0FBTyxzQkFBc0I7SUFPZDtJQUNFO0lBUHJCLFFBQVEsR0FBRztRQUNULE1BQU0sRUFBRSxpQkFBaUI7UUFDekIsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLGdDQUFnQyxDQUFDO0tBQ3JELENBQUM7SUFFRixZQUNtQixNQUFjLEVBQ1osVUFBNEI7UUFEOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNaLGVBQVUsR0FBVixVQUFVLENBQWtCO0lBQzlDLENBQUM7SUFFSixrQkFBa0I7UUFDaEIsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsY0FBOEIsRUFBRSxFQUFFO1lBQ3JFLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsNEJBQTRCLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ2xELFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSxvQkFBb0I7UUFDekIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVwSCxPQUFPO2dCQUNMLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDaEIsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUN0RSxnQkFBZ0IsRUFBRSxNQUFNO2dCQUN4QixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM5QixRQUFRLEVBQUU7b0JBQ1IsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7d0JBQ25CLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDNUQsSUFBSTs0QkFDSixNQUFNOzRCQUNOLElBQUk7NEJBQ0osU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7eUJBQzVDLENBQUMsQ0FBQzt3QkFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNQO3dCQUNFLElBQUksRUFBRSxFQUFFO3dCQUNSLFNBQVMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQzt3QkFDakQsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO3FCQUNqQjtpQkFDRjthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxFQUFVO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU8sc0JBQXNCLENBQUMsS0FBcUI7UUFDbEQsT0FBTyxLQUFLLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sNEJBQTRCLENBQUMsY0FBOEI7UUFDakUsT0FBTyxjQUFjLENBQUMsV0FBVyxDQUFDO1FBQ2xDLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sU0FBUyxDQUFDLFdBQVc7UUFDM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDO1FBRXZGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEMsQ0FBQzt1R0ExRVUsc0JBQXNCOzJHQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFeHRlbnNpb25TZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IEV4dGVuc2lvblJvdXRlIH0gZnJvbSAnLi4vbW9kZWxzL3R5cGVzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlckV4dGVuc2lvblNlcnZpY2Uge1xuICBkZWZhdWx0cyA9IHtcbiAgICBsYXlvdXQ6ICdhcHAubGF5b3V0Lm1haW4nLFxuICAgIGF1dGg6IFsnYXBwLmF1dGgnLCAnYXBwLmV4dGVuc2lvbnMuZGF0YUxvYWRlckd1YXJkJ11cbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBleHRlbnNpb25zOiBFeHRlbnNpb25TZXJ2aWNlXG4gICkge31cblxuICBtYXBFeHRlbnNpb25Sb3V0ZXMoKSB7XG4gICAgY29uc3Qgcm91dGVzV2l0aG91dFBhcmVudCA9IFtdO1xuICAgIHRoaXMuZ2V0QXBwbGljYXRpb25Sb3V0ZXMoKS5mb3JFYWNoKChleHRlbnNpb25Sb3V0ZTogRXh0ZW5zaW9uUm91dGUpID0+IHtcbiAgICAgIGlmICh0aGlzLmV4dGVuc2lvblJvdXRlSGFzQ2hpbGQoZXh0ZW5zaW9uUm91dGUpKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudFJvdXRlID0gdGhpcy5maW5kUm91dGUoZXh0ZW5zaW9uUm91dGUucGFyZW50Um91dGUpO1xuICAgICAgICBpZiAocGFyZW50Um91dGUpIHtcbiAgICAgICAgICB0aGlzLmNvbnZlcnRFeHRlbnNpb25Sb3V0ZVRvUm91dGUoZXh0ZW5zaW9uUm91dGUpO1xuICAgICAgICAgIHBhcmVudFJvdXRlLmNoaWxkcmVuLnVuc2hpZnQoZXh0ZW5zaW9uUm91dGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb3V0ZXNXaXRob3V0UGFyZW50LnB1c2goZXh0ZW5zaW9uUm91dGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZXIuY29uZmlnLnVuc2hpZnQoLi4ucm91dGVzV2l0aG91dFBhcmVudCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXBwbGljYXRpb25Sb3V0ZXMoKTogQXJyYXk8RXh0ZW5zaW9uUm91dGU+IHtcbiAgICByZXR1cm4gdGhpcy5leHRlbnNpb25zLnJvdXRlcy5tYXAoKHJvdXRlKSA9PiB7XG4gICAgICBjb25zdCBndWFyZHMgPSB0aGlzLmV4dGVuc2lvbnMuZ2V0QXV0aEd1YXJkcyhyb3V0ZS5hdXRoICYmIHJvdXRlLmF1dGgubGVuZ3RoID4gMCA/IHJvdXRlLmF1dGggOiB0aGlzLmRlZmF1bHRzLmF1dGgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRoOiByb3V0ZS5wYXRoLFxuICAgICAgICBjb21wb25lbnQ6IHRoaXMuZ2V0Q29tcG9uZW50QnlJZChyb3V0ZS5sYXlvdXQgPz8gdGhpcy5kZWZhdWx0cy5sYXlvdXQpLFxuICAgICAgICBjYW5BY3RpdmF0ZUNoaWxkOiBndWFyZHMsXG4gICAgICAgIGNhbkFjdGl2YXRlOiBndWFyZHMsXG4gICAgICAgIHBhcmVudFJvdXRlOiByb3V0ZS5wYXJlbnRSb3V0ZSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAuLi4ocm91dGVbJ2NoaWxkcmVuJ11cbiAgICAgICAgICAgID8gcm91dGVbJ2NoaWxkcmVuJ10ubWFwKCh7IHBhdGgsIGNvbXBvbmVudCwgb3V0bGV0LCBkYXRhIH0pID0+ICh7XG4gICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICBvdXRsZXQsXG4gICAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMuZ2V0Q29tcG9uZW50QnlJZChjb21wb25lbnQpXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMuZ2V0Q29tcG9uZW50QnlJZChyb3V0ZS5jb21wb25lbnQpLFxuICAgICAgICAgICAgZGF0YTogcm91dGUuZGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50QnlJZChpZDogc3RyaW5nKTogVHlwZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5nZXRDb21wb25lbnRCeUlkKGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0ZW5zaW9uUm91dGVIYXNDaGlsZChyb3V0ZTogRXh0ZW5zaW9uUm91dGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm91dGUucGFyZW50Um91dGUgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEV4dGVuc2lvblJvdXRlVG9Sb3V0ZShleHRlbnNpb25Sb3V0ZTogRXh0ZW5zaW9uUm91dGUpIHtcbiAgICBkZWxldGUgZXh0ZW5zaW9uUm91dGUucGFyZW50Um91dGU7XG4gICAgZGVsZXRlIGV4dGVuc2lvblJvdXRlLmNvbXBvbmVudDtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFJvdXRlKHBhcmVudFJvdXRlKSB7XG4gICAgY29uc3Qgcm91dGVJbmRleCA9IHRoaXMucm91dGVyLmNvbmZpZy5maW5kSW5kZXgoKHJvdXRlKSA9PiByb3V0ZS5wYXRoID09PSBwYXJlbnRSb3V0ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIuY29uZmlnW3JvdXRlSW5kZXhdO1xuICB9XG59XG4iXX0=