UNPKG

cdk-iam-floyd

Version:

AWS IAM policy statement generator with fluent interface for AWS CDK

180 lines 18.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Opensearch = void 0; const shared_1 = require("../../shared"); /** * Statement provider for service [opensearch](https://docs.aws.amazon.com/service-authorization/latest/reference/list_opensearch.html). * * @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement */ class Opensearch extends shared_1.PolicyStatement { /** * Grants permission to cancel submitted Auto Optimize Job * * Access Level: Write * * https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-auto-optimize.html */ toCancelAutoOptimizeJob() { return this.to('CancelAutoOptimizeJob'); } /** * Grants permission to cancel the query that is submitted on the OpenSearch DataSource resource * * Access Level: Write * * https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_CancelDirectQuery.html */ toCancelDirectQuery() { return this.to('CancelDirectQuery'); } /** * Grants permission to delete Auto Optimize Job * * Access Level: Write * * https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-auto-optimize.html */ toDeleteAutoOptimizeJob() { return this.to('DeleteAutoOptimizeJob'); } /** * Grants permission to get the Auto Optimize Job details * * Access Level: Read * * https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-auto-optimize.html */ toGetAutoOptimizeJob() { return this.to('GetAutoOptimizeJob'); } /** * Grants permission to get the query status that are performed on the OpenSearch DataSource resource * * Access Level: Read * * https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_GetDirectQuery.html */ toGetDirectQuery() { return this.to('GetDirectQuery'); } /** * Grants permission to get the results of a query that is performed on the OpenSearch DataSource resource * * Access Level: Read * * https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_GetDirectQueryResult.html */ toGetDirectQueryResult() { return this.to('GetDirectQueryResult'); } /** * Grants permission to retrieve a list of Auto Optimize Jobs * * Access Level: List * * https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-auto-optimize.html */ toListAutoOptimizeJobs() { return this.to('ListAutoOptimizeJobs'); } /** * Grants permission to start a direct query on the provided OpenSearch DataSource arns * * Access Level: Write * * https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_StartDirectQuery.html */ toStartDirectQuery() { return this.to('StartDirectQuery'); } /** * Grants permission to create new Auto Optimize Job * * Access Level: Write * * https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-auto-optimize.html */ toSubmitAutoOptimizeJob() { return this.to('SubmitAutoOptimizeJob'); } /** * Grants permission to access OpenSearch Application * * Access Level: Permissions management, Write * * https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ */ toApplicationAccessAll() { return this.to('ApplicationAccessAll'); } /** * Grants permission to view the login page of an OpenSearch Application * * Access Level: Permissions management, Write * * https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ */ toViewLoginPage() { return this.to('ViewLoginPage'); } /** * Adds a resource of type application to the statement * * https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ac.html * * @param appId - Identifier for the appId. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. */ onApplication(appId, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:opensearch:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:application/${appId}`); } /** * Adds a resource of type datasource to the statement * * https://docs.aws.amazon.com/opensearch-service/latest/developerguide/datasource.html * * @param dataSourceName - Identifier for the dataSourceName. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. */ onDatasource(dataSourceName, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:opensearch:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:datasource/${dataSourceName}`); } /** * Statement provider for service [opensearch](https://docs.aws.amazon.com/service-authorization/latest/reference/list_opensearch.html). * */ constructor(props) { super(props); this.servicePrefix = 'opensearch'; this.accessLevelList = { Write: [ 'CancelAutoOptimizeJob', 'CancelDirectQuery', 'DeleteAutoOptimizeJob', 'StartDirectQuery', 'SubmitAutoOptimizeJob', 'ApplicationAccessAll', 'ViewLoginPage' ], Read: [ 'GetAutoOptimizeJob', 'GetDirectQuery', 'GetDirectQueryResult' ], List: [ 'ListAutoOptimizeJobs' ], 'Permissions management': [ 'ApplicationAccessAll', 'ViewLoginPage' ] }; } } exports.Opensearch = Opensearch; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm9wZW5zZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQStDO0FBRy9DOzs7O0dBSUc7QUFDSCxNQUFhLFVBQVcsU0FBUSx3QkFBZTtJQUc3Qzs7Ozs7O09BTUc7SUFDSSx1QkFBdUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLG1CQUFtQjtRQUN4QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksdUJBQXVCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxvQkFBb0I7UUFDekIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksc0JBQXNCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGtCQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksdUJBQXVCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUEwQkQ7Ozs7Ozs7OztPQVNHO0lBQ0ksYUFBYSxDQUFDLEtBQWEsRUFBRSxPQUFnQixFQUFFLE1BQWUsRUFBRSxTQUFrQjtRQUN2RixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBUSxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFpQixlQUFnQixNQUFNLElBQUksSUFBSSxDQUFDLGFBQWMsSUFBSyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWUsZ0JBQWlCLEtBQU0sRUFBRSxDQUFDLENBQUM7SUFDeEssQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFlBQVksQ0FBQyxjQUFzQixFQUFFLE9BQWdCLEVBQUUsTUFBZSxFQUFFLFNBQWtCO1FBQy9GLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLGVBQWdCLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYyxJQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBZSxlQUFnQixjQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ2hMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLEtBQWdDO1FBQzFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQXBMUixrQkFBYSxHQUFHLFlBQVksQ0FBQztRQTJIMUIsb0JBQWUsR0FBb0I7WUFDM0MsS0FBSyxFQUFFO2dCQUNMLHVCQUF1QjtnQkFDdkIsbUJBQW1CO2dCQUNuQix1QkFBdUI7Z0JBQ3ZCLGtCQUFrQjtnQkFDbEIsdUJBQXVCO2dCQUN2QixzQkFBc0I7Z0JBQ3RCLGVBQWU7YUFDaEI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osb0JBQW9CO2dCQUNwQixnQkFBZ0I7Z0JBQ2hCLHNCQUFzQjthQUN2QjtZQUNELElBQUksRUFBRTtnQkFDSixzQkFBc0I7YUFDdkI7WUFDRCx3QkFBd0IsRUFBRTtnQkFDeEIsc0JBQXNCO2dCQUN0QixlQUFlO2FBQ2hCO1NBQ0YsQ0FBQztJQW9DRixDQUFDO0NBQ0Y7QUF2TEQsZ0NBdUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjZXNzTGV2ZWxMaXN0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FjY2Vzcy1sZXZlbCc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgYXdzX2lhbSBhcyBpYW0gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuLyoqXG4gKiBTdGF0ZW1lbnQgcHJvdmlkZXIgZm9yIHNlcnZpY2UgW29wZW5zZWFyY2hdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X29wZW5zZWFyY2guaHRtbCkuXG4gKlxuICogQHBhcmFtIHNpZCBbU0lEXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3NpZC5odG1sKSBvZiB0aGUgc3RhdGVtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVuc2VhcmNoIGV4dGVuZHMgUG9saWN5U3RhdGVtZW50IHtcbiAgcHVibGljIHNlcnZpY2VQcmVmaXggPSAnb3BlbnNlYXJjaCc7XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNhbmNlbCBzdWJtaXR0ZWQgQXV0byBPcHRpbWl6ZSBKb2JcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb3BlbnNlYXJjaC1zZXJ2aWNlL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9zZXJ2ZXJsZXNzLWF1dG8tb3B0aW1pemUuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ2FuY2VsQXV0b09wdGltaXplSm9iKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDYW5jZWxBdXRvT3B0aW1pemVKb2InKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjYW5jZWwgdGhlIHF1ZXJ5IHRoYXQgaXMgc3VibWl0dGVkIG9uIHRoZSBPcGVuU2VhcmNoIERhdGFTb3VyY2UgcmVzb3VyY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb3BlbnNlYXJjaC1zZXJ2aWNlL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NhbmNlbERpcmVjdFF1ZXJ5Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NhbmNlbERpcmVjdFF1ZXJ5KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDYW5jZWxEaXJlY3RRdWVyeScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBBdXRvIE9wdGltaXplIEpvYlxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vcGVuc2VhcmNoLXNlcnZpY2UvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3NlcnZlcmxlc3MtYXV0by1vcHRpbWl6ZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVBdXRvT3B0aW1pemVKb2IoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZUF1dG9PcHRpbWl6ZUpvYicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCB0aGUgQXV0byBPcHRpbWl6ZSBKb2IgZGV0YWlsc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29wZW5zZWFyY2gtc2VydmljZS9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvc2VydmVybGVzcy1hdXRvLW9wdGltaXplLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldEF1dG9PcHRpbWl6ZUpvYigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0QXV0b09wdGltaXplSm9iJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IHRoZSBxdWVyeSBzdGF0dXMgdGhhdCBhcmUgcGVyZm9ybWVkIG9uIHRoZSBPcGVuU2VhcmNoIERhdGFTb3VyY2UgcmVzb3VyY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vcGVuc2VhcmNoLXNlcnZpY2UvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfR2V0RGlyZWN0UXVlcnkuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0RGlyZWN0UXVlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldERpcmVjdFF1ZXJ5Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IHRoZSByZXN1bHRzIG9mIGEgcXVlcnkgdGhhdCBpcyBwZXJmb3JtZWQgb24gdGhlIE9wZW5TZWFyY2ggRGF0YVNvdXJjZSByZXNvdXJjZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29wZW5zZWFyY2gtc2VydmljZS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXREaXJlY3RRdWVyeVJlc3VsdC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9HZXREaXJlY3RRdWVyeVJlc3VsdCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0RGlyZWN0UXVlcnlSZXN1bHQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBhIGxpc3Qgb2YgQXV0byBPcHRpbWl6ZSBKb2JzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb3BlbnNlYXJjaC1zZXJ2aWNlL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9zZXJ2ZXJsZXNzLWF1dG8tb3B0aW1pemUuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdEF1dG9PcHRpbWl6ZUpvYnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RBdXRvT3B0aW1pemVKb2JzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc3RhcnQgYSBkaXJlY3QgcXVlcnkgb24gdGhlIHByb3ZpZGVkIE9wZW5TZWFyY2ggRGF0YVNvdXJjZSBhcm5zXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29wZW5zZWFyY2gtc2VydmljZS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9TdGFydERpcmVjdFF1ZXJ5Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1N0YXJ0RGlyZWN0UXVlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1N0YXJ0RGlyZWN0UXVlcnknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgbmV3IEF1dG8gT3B0aW1pemUgSm9iXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29wZW5zZWFyY2gtc2VydmljZS9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvc2VydmVybGVzcy1hdXRvLW9wdGltaXplLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1N1Ym1pdEF1dG9PcHRpbWl6ZUpvYigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnU3VibWl0QXV0b09wdGltaXplSm9iJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYWNjZXNzIE9wZW5TZWFyY2ggQXBwbGljYXRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBQZXJtaXNzaW9ucyBtYW5hZ2VtZW50LCBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb3BlbnNlYXJjaC1zZXJ2aWNlL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9cbiAgICovXG4gIHB1YmxpYyB0b0FwcGxpY2F0aW9uQWNjZXNzQWxsKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdBcHBsaWNhdGlvbkFjY2Vzc0FsbCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHZpZXcgdGhlIGxvZ2luIHBhZ2Ugb2YgYW4gT3BlblNlYXJjaCBBcHBsaWNhdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFBlcm1pc3Npb25zIG1hbmFnZW1lbnQsIFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vcGVuc2VhcmNoLXNlcnZpY2UvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKi9cbiAgcHVibGljIHRvVmlld0xvZ2luUGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVmlld0xvZ2luUGFnZScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFjY2Vzc0xldmVsTGlzdDogQWNjZXNzTGV2ZWxMaXN0ID0ge1xuICAgIFdyaXRlOiBbXG4gICAgICAnQ2FuY2VsQXV0b09wdGltaXplSm9iJyxcbiAgICAgICdDYW5jZWxEaXJlY3RRdWVyeScsXG4gICAgICAnRGVsZXRlQXV0b09wdGltaXplSm9iJyxcbiAgICAgICdTdGFydERpcmVjdFF1ZXJ5JyxcbiAgICAgICdTdWJtaXRBdXRvT3B0aW1pemVKb2InLFxuICAgICAgJ0FwcGxpY2F0aW9uQWNjZXNzQWxsJyxcbiAgICAgICdWaWV3TG9naW5QYWdlJ1xuICAgIF0sXG4gICAgUmVhZDogW1xuICAgICAgJ0dldEF1dG9PcHRpbWl6ZUpvYicsXG4gICAgICAnR2V0RGlyZWN0UXVlcnknLFxuICAgICAgJ0dldERpcmVjdFF1ZXJ5UmVzdWx0J1xuICAgIF0sXG4gICAgTGlzdDogW1xuICAgICAgJ0xpc3RBdXRvT3B0aW1pemVKb2JzJ1xuICAgIF0sXG4gICAgJ1Blcm1pc3Npb25zIG1hbmFnZW1lbnQnOiBbXG4gICAgICAnQXBwbGljYXRpb25BY2Nlc3NBbGwnLFxuICAgICAgJ1ZpZXdMb2dpblBhZ2UnXG4gICAgXVxuICB9O1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVzb3VyY2Ugb2YgdHlwZSBhcHBsaWNhdGlvbiB0byB0aGUgc3RhdGVtZW50XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vcGVuc2VhcmNoLXNlcnZpY2UvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2FjLmh0bWxcbiAgICpcbiAgICogQHBhcmFtIGFwcElkIC0gSWRlbnRpZmllciBmb3IgdGhlIGFwcElkLlxuICAgKiBAcGFyYW0gYWNjb3VudCAtIEFjY291bnQgb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIGFjY291bnQuXG4gICAqIEBwYXJhbSByZWdpb24gLSBSZWdpb24gb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHJlZ2lvbi5cbiAgICogQHBhcmFtIHBhcnRpdGlvbiAtIFBhcnRpdGlvbiBvZiB0aGUgQVdTIGFjY291bnQgW2F3cywgYXdzLWNuLCBhd3MtdXMtZ292XTsgZGVmYXVsdHMgdG8gYGF3c2AsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHBhcnRpdGlvbi5cbiAgICovXG4gIHB1YmxpYyBvbkFwcGxpY2F0aW9uKGFwcElkOiBzdHJpbmcsIGFjY291bnQ/OiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06b3BlbnNlYXJjaDokeyByZWdpb24gPz8gdGhpcy5kZWZhdWx0UmVnaW9uIH06JHsgYWNjb3VudCA/PyB0aGlzLmRlZmF1bHRBY2NvdW50IH06YXBwbGljYXRpb24vJHsgYXBwSWQgfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIGRhdGFzb3VyY2UgdG8gdGhlIHN0YXRlbWVudFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb3BlbnNlYXJjaC1zZXJ2aWNlL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9kYXRhc291cmNlLmh0bWxcbiAgICpcbiAgICogQHBhcmFtIGRhdGFTb3VyY2VOYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIGRhdGFTb3VyY2VOYW1lLlxuICAgKiBAcGFyYW0gYWNjb3VudCAtIEFjY291bnQgb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIGFjY291bnQuXG4gICAqIEBwYXJhbSByZWdpb24gLSBSZWdpb24gb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHJlZ2lvbi5cbiAgICogQHBhcmFtIHBhcnRpdGlvbiAtIFBhcnRpdGlvbiBvZiB0aGUgQVdTIGFjY291bnQgW2F3cywgYXdzLWNuLCBhd3MtdXMtZ292XTsgZGVmYXVsdHMgdG8gYGF3c2AsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHBhcnRpdGlvbi5cbiAgICovXG4gIHB1YmxpYyBvbkRhdGFzb3VyY2UoZGF0YVNvdXJjZU5hbWU6IHN0cmluZywgYWNjb3VudD86IHN0cmluZywgcmVnaW9uPzogc3RyaW5nLCBwYXJ0aXRpb24/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vbihgYXJuOiR7IHBhcnRpdGlvbiA/PyB0aGlzLmRlZmF1bHRQYXJ0aXRpb24gfTpvcGVuc2VhcmNoOiR7IHJlZ2lvbiA/PyB0aGlzLmRlZmF1bHRSZWdpb24gfTokeyBhY2NvdW50ID8/IHRoaXMuZGVmYXVsdEFjY291bnQgfTpkYXRhc291cmNlLyR7IGRhdGFTb3VyY2VOYW1lIH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0ZW1lbnQgcHJvdmlkZXIgZm9yIHNlcnZpY2UgW29wZW5zZWFyY2hdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X29wZW5zZWFyY2guaHRtbCkuXG4gICAqXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcz86IGlhbS5Qb2xpY3lTdGF0ZW1lbnRQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxufVxuIl19