iam-floyd
Version:
AWS IAM policy statement generator with fluent interface
371 lines • 33.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MigrationhubStrategy = void 0;
const shared_1 = require("../../shared");
/**
* Statement provider for service [migrationhub-strategy](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsmigrationhubstrategyrecommendations.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
class MigrationhubStrategy extends shared_1.PolicyStatement {
/**
* Statement provider for service [migrationhub-strategy](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsmigrationhubstrategyrecommendations.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
constructor(sid) {
super(sid);
this.servicePrefix = 'migrationhub-strategy';
this.accessLevelList = {
Read: [
'GetAntiPattern',
'GetApplicationComponentDetails',
'GetApplicationComponentStrategies',
'GetAssessment',
'GetImportFileTask',
'GetLatestAssessmentId',
'GetMessage',
'GetPortfolioPreferences',
'GetPortfolioSummary',
'GetRecommendationReportDetails',
'GetServerDetails',
'GetServerStrategies'
],
List: [
'ListAnalyzableServers',
'ListAntiPatterns',
'ListApplicationComponents',
'ListCollectors',
'ListImportFileTask',
'ListJarArtifacts',
'ListServers'
],
Write: [
'PutLogData',
'PutMetricData',
'PutPortfolioPreferences',
'RegisterCollector',
'SendMessage',
'StartAssessment',
'StartImportFileTask',
'StartRecommendationReportGeneration',
'StopAssessment',
'UpdateApplicationComponentConfig',
'UpdateCollectorConfiguration',
'UpdateServerConfig'
]
};
}
/**
* Grants permission to get details of each anti pattern that collector should look at in a customer's environment
*
* Access Level: Read
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_GetAntiPattern.html
*/
toGetAntiPattern() {
return this.to('GetAntiPattern');
}
/**
* Grants permission to get details of an application
*
* Access Level: Read
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_GetApplicationComponentDetails.html
*/
toGetApplicationComponentDetails() {
return this.to('GetApplicationComponentDetails');
}
/**
* Grants permission to get a list of all recommended strategies and tools for an application running in a server
*
* Access Level: Read
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_GetApplicationComponentStrategies.html
*/
toGetApplicationComponentStrategies() {
return this.to('GetApplicationComponentStrategies');
}
/**
* Grants permission to retrieve status of an on-going assessment
*
* Access Level: Read
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_GetAssessment.html
*/
toGetAssessment() {
return this.to('GetAssessment');
}
/**
* Grants permission to get details of a specific import task
*
* Access Level: Read
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_GetImportFileTask.html
*/
toGetImportFileTask() {
return this.to('GetImportFileTask');
}
/**
* Grants permission to retrieve the latest assessment id
*
* Access Level: Read
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_GetLatestAssessmentId.html
*/
toGetLatestAssessmentId() {
return this.to('GetLatestAssessmentId');
}
/**
* Grants permission to the collector to receive information from the service
*
* Access Level: Read
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_GetMessage.html
*/
toGetMessage() {
return this.to('GetMessage');
}
/**
* Grants permission to retrieve customer migration/Modernization preferences
*
* Access Level: Read
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_GetPortfolioPreferences.html
*/
toGetPortfolioPreferences() {
return this.to('GetPortfolioPreferences');
}
/**
* Grants permission to retrieve overall summary (number-of servers to rehost etc as well as overall number of anti patterns)
*
* Access Level: Read
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_GetPortfolioSummary.html
*/
toGetPortfolioSummary() {
return this.to('GetPortfolioSummary');
}
/**
* Grants permission to retrieve detailed information about a recommendation report
*
* Access Level: Read
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_GetRecommendationReportDetails.html
*/
toGetRecommendationReportDetails() {
return this.to('GetRecommendationReportDetails');
}
/**
* Grants permission to get info about a specific server
*
* Access Level: Read
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_GetServerDetails.html
*/
toGetServerDetails() {
return this.to('GetServerDetails');
}
/**
* Grants permission to get recommended strategies and tools for a specific server
*
* Access Level: Read
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_GetServerStrategies.html
*/
toGetServerStrategies() {
return this.to('GetServerStrategies');
}
/**
* Grants permission to get a list of all analyzable servers in a customer's vcenter environment
*
* Access Level: List
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_ListAnalyzableServers.html
*/
toListAnalyzableServers() {
return this.to('ListAnalyzableServers');
}
/**
* Grants permission to get a list of all anti patterns that collector should look for in a customer's environment
*
* Access Level: List
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_ListAntiPatterns.html
*/
toListAntiPatterns() {
return this.to('ListAntiPatterns');
}
/**
* Grants permission to get a list of all applications running on servers on customer's servers
*
* Access Level: List
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_ListApplicationComponents.html
*/
toListApplicationComponents() {
return this.to('ListApplicationComponents');
}
/**
* Grants permission to get a list of all collectors installed by the customer
*
* Access Level: List
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_ListCollectors.html
*/
toListCollectors() {
return this.to('ListCollectors');
}
/**
* Grants permission to get list of all imports performed by the customer
*
* Access Level: List
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_ListImportFileTask.html
*/
toListImportFileTask() {
return this.to('ListImportFileTask');
}
/**
* Grants permission to get a list of binaries that collector should assess
*
* Access Level: List
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_ListJarArtifacts.html
*/
toListJarArtifacts() {
return this.to('ListJarArtifacts');
}
/**
* Grants permission to get a list of all servers in a customer's environment
*
* Access Level: List
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_ListServers.html
*/
toListServers() {
return this.to('ListServers');
}
/**
* Grants permission to the collector to send logs to the service
*
* Access Level: Write
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_PutLogData.html
*/
toPutLogData() {
return this.to('PutLogData');
}
/**
* Grants permission to the collector to send metrics to the service
*
* Access Level: Write
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_PutMetricData.html
*/
toPutMetricData() {
return this.to('PutMetricData');
}
/**
* Grants permission to save customer's Migration/Modernization preferences
*
* Access Level: Write
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_PutPortfolioPreferences.html
*/
toPutPortfolioPreferences() {
return this.to('PutPortfolioPreferences');
}
/**
* Grants permission to register the collector to receive an ID and to start receiving messages from the service
*
* Access Level: Write
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_RegisterCollector.html
*/
toRegisterCollector() {
return this.to('RegisterCollector');
}
/**
* Grants permission to the collector to send information to the service
*
* Access Level: Write
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_SendMessage.html
*/
toSendMessage() {
return this.to('SendMessage');
}
/**
* Grants permission to start assessment in a customer's environment (collect data from all servers and provide recommendations)
*
* Access Level: Write
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_StartAssessment.html
*/
toStartAssessment() {
return this.to('StartAssessment');
}
/**
* Grants permission to start importing data from a file provided by customer
*
* Access Level: Write
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_StartImportFileTask.html
*/
toStartImportFileTask() {
return this.to('StartImportFileTask');
}
/**
* Grants permission to start generating a recommendation report
*
* Access Level: Write
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_StartRecommendationReportGeneration.html
*/
toStartRecommendationReportGeneration() {
return this.to('StartRecommendationReportGeneration');
}
/**
* Grants permission to stop an on-going assessment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_StopAssessment.html
*/
toStopAssessment() {
return this.to('StopAssessment');
}
/**
* Grants permission to update details for an application
*
* Access Level: Write
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_UpdateApplicationComponentConfig.html
*/
toUpdateApplicationComponentConfig() {
return this.to('UpdateApplicationComponentConfig');
}
/**
* Grants permission to the collector to send configuration information to the service
*
* Access Level: Write
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_UpdateCollectorConfiguration.html
*/
toUpdateCollectorConfiguration() {
return this.to('UpdateCollectorConfiguration');
}
/**
* Grants permission to update info on a server along with the recommended strategy
*
* Access Level: Write
*
* https://docs.aws.amazon.com/migrationhub-strategy/latest/APIReference/API_UpdateServerConfig.html
*/
toUpdateServerConfig() {
return this.to('UpdateServerConfig');
}
}
exports.MigrationhubStrategy = MigrationhubStrategy;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uaHVic3RyYXRlZ3lyZWNvbW1lbmRhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtaWdyYXRpb25odWJzdHJhdGVneXJlY29tbWVuZGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBK0M7QUFFL0M7Ozs7R0FJRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsd0JBQWU7SUFHdkQ7Ozs7T0FJRztJQUNILFlBQVksR0FBWTtRQUN0QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFSTixrQkFBYSxHQUFHLHVCQUF1QixDQUFDO1FBZ1dyQyxvQkFBZSxHQUFvQjtZQUMzQyxJQUFJLEVBQUU7Z0JBQ0osZ0JBQWdCO2dCQUNoQixnQ0FBZ0M7Z0JBQ2hDLG1DQUFtQztnQkFDbkMsZUFBZTtnQkFDZixtQkFBbUI7Z0JBQ25CLHVCQUF1QjtnQkFDdkIsWUFBWTtnQkFDWix5QkFBeUI7Z0JBQ3pCLHFCQUFxQjtnQkFDckIsZ0NBQWdDO2dCQUNoQyxrQkFBa0I7Z0JBQ2xCLHFCQUFxQjthQUN0QjtZQUNELElBQUksRUFBRTtnQkFDSix1QkFBdUI7Z0JBQ3ZCLGtCQUFrQjtnQkFDbEIsMkJBQTJCO2dCQUMzQixnQkFBZ0I7Z0JBQ2hCLG9CQUFvQjtnQkFDcEIsa0JBQWtCO2dCQUNsQixhQUFhO2FBQ2Q7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsWUFBWTtnQkFDWixlQUFlO2dCQUNmLHlCQUF5QjtnQkFDekIsbUJBQW1CO2dCQUNuQixhQUFhO2dCQUNiLGlCQUFpQjtnQkFDakIscUJBQXFCO2dCQUNyQixxQ0FBcUM7Z0JBQ3JDLGdCQUFnQjtnQkFDaEIsa0NBQWtDO2dCQUNsQyw4QkFBOEI7Z0JBQzlCLG9CQUFvQjthQUNyQjtTQUNGLENBQUM7SUE3WEYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuQyxDQUFD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RztJQUNJLG1CQUFtQjtRQUN4QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0kscUJBQXFCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxxQ0FBcUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksa0NBQWtDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSw4QkFBOEI7UUFDbkMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLG9CQUFvQjtRQUN6QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBeUNGO0FBeFlELG9EQXdZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjY2Vzc0xldmVsTGlzdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9hY2Nlc3MtbGV2ZWwnO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcblxuLyoqXG4gKiBTdGF0ZW1lbnQgcHJvdmlkZXIgZm9yIHNlcnZpY2UgW21pZ3JhdGlvbmh1Yi1zdHJhdGVneV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYXdzbWlncmF0aW9uaHVic3RyYXRlZ3lyZWNvbW1lbmRhdGlvbnMuaHRtbCkuXG4gKlxuICogQHBhcmFtIHNpZCBbU0lEXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3NpZC5odG1sKSBvZiB0aGUgc3RhdGVtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBNaWdyYXRpb25odWJTdHJhdGVneSBleHRlbmRzIFBvbGljeVN0YXRlbWVudCB7XG4gIHB1YmxpYyBzZXJ2aWNlUHJlZml4ID0gJ21pZ3JhdGlvbmh1Yi1zdHJhdGVneSc7XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbbWlncmF0aW9uaHViLXN0cmF0ZWd5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hd3NtaWdyYXRpb25odWJzdHJhdGVneXJlY29tbWVuZGF0aW9ucy5odG1sKS5cbiAgICpcbiAgICogQHBhcmFtIHNpZCBbU0lEXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3NpZC5odG1sKSBvZiB0aGUgc3RhdGVtZW50XG4gICAqL1xuICBjb25zdHJ1Y3RvcihzaWQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihzaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCBkZXRhaWxzIG9mIGVhY2ggYW50aSBwYXR0ZXJuIHRoYXQgY29sbGVjdG9yIHNob3VsZCBsb29rIGF0IGluIGEgY3VzdG9tZXIncyBlbnZpcm9ubWVudFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRBbnRpUGF0dGVybi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9HZXRBbnRpUGF0dGVybigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0QW50aVBhdHRlcm4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgZGV0YWlscyBvZiBhbiBhcHBsaWNhdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRBcHBsaWNhdGlvbkNvbXBvbmVudERldGFpbHMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0QXBwbGljYXRpb25Db21wb25lbnREZXRhaWxzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdHZXRBcHBsaWNhdGlvbkNvbXBvbmVudERldGFpbHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgYSBsaXN0IG9mIGFsbCByZWNvbW1lbmRlZCBzdHJhdGVnaWVzIGFuZCB0b29scyBmb3IgYW4gYXBwbGljYXRpb24gcnVubmluZyBpbiBhIHNlcnZlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRBcHBsaWNhdGlvbkNvbXBvbmVudFN0cmF0ZWdpZXMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0QXBwbGljYXRpb25Db21wb25lbnRTdHJhdGVnaWVzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdHZXRBcHBsaWNhdGlvbkNvbXBvbmVudFN0cmF0ZWdpZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBzdGF0dXMgb2YgYW4gb24tZ29pbmcgYXNzZXNzbWVudFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRBc3Nlc3NtZW50Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldEFzc2Vzc21lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldEFzc2Vzc21lbnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgZGV0YWlscyBvZiBhIHNwZWNpZmljIGltcG9ydCB0YXNrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbWlncmF0aW9uaHViLXN0cmF0ZWd5L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldEltcG9ydEZpbGVUYXNrLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldEltcG9ydEZpbGVUYXNrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdHZXRJbXBvcnRGaWxlVGFzaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIHRoZSBsYXRlc3QgYXNzZXNzbWVudCBpZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRMYXRlc3RBc3Nlc3NtZW50SWQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0TGF0ZXN0QXNzZXNzbWVudElkKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdHZXRMYXRlc3RBc3Nlc3NtZW50SWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB0aGUgY29sbGVjdG9yIHRvIHJlY2VpdmUgaW5mb3JtYXRpb24gZnJvbSB0aGUgc2VydmljZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRNZXNzYWdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldE1lc3NhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldE1lc3NhZ2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBjdXN0b21lciBtaWdyYXRpb24vTW9kZXJuaXphdGlvbiBwcmVmZXJlbmNlc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRQb3J0Zm9saW9QcmVmZXJlbmNlcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9HZXRQb3J0Zm9saW9QcmVmZXJlbmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0UG9ydGZvbGlvUHJlZmVyZW5jZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBvdmVyYWxsIHN1bW1hcnkgKG51bWJlci1vZiBzZXJ2ZXJzIHRvIHJlaG9zdCBldGMgYXMgd2VsbCBhcyBvdmVyYWxsIG51bWJlciBvZiBhbnRpIHBhdHRlcm5zKVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRQb3J0Zm9saW9TdW1tYXJ5Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldFBvcnRmb2xpb1N1bW1hcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldFBvcnRmb2xpb1N1bW1hcnknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhIHJlY29tbWVuZGF0aW9uIHJlcG9ydFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRSZWNvbW1lbmRhdGlvblJlcG9ydERldGFpbHMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0UmVjb21tZW5kYXRpb25SZXBvcnREZXRhaWxzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdHZXRSZWNvbW1lbmRhdGlvblJlcG9ydERldGFpbHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgaW5mbyBhYm91dCBhIHNwZWNpZmljIHNlcnZlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRTZXJ2ZXJEZXRhaWxzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldFNlcnZlckRldGFpbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldFNlcnZlckRldGFpbHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgcmVjb21tZW5kZWQgc3RyYXRlZ2llcyBhbmQgdG9vbHMgZm9yIGEgc3BlY2lmaWMgc2VydmVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbWlncmF0aW9uaHViLXN0cmF0ZWd5L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldFNlcnZlclN0cmF0ZWdpZXMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0U2VydmVyU3RyYXRlZ2llcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0U2VydmVyU3RyYXRlZ2llcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCBhIGxpc3Qgb2YgYWxsIGFuYWx5emFibGUgc2VydmVycyBpbiBhIGN1c3RvbWVyJ3MgdmNlbnRlciBlbnZpcm9ubWVudFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9MaXN0QW5hbHl6YWJsZVNlcnZlcnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdEFuYWx5emFibGVTZXJ2ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0QW5hbHl6YWJsZVNlcnZlcnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgYSBsaXN0IG9mIGFsbCBhbnRpIHBhdHRlcm5zIHRoYXQgY29sbGVjdG9yIHNob3VsZCBsb29rIGZvciBpbiBhIGN1c3RvbWVyJ3MgZW52aXJvbm1lbnRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9taWdyYXRpb25odWItc3RyYXRlZ3kvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdEFudGlQYXR0ZXJucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0QW50aVBhdHRlcm5zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0QW50aVBhdHRlcm5zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IGEgbGlzdCBvZiBhbGwgYXBwbGljYXRpb25zIHJ1bm5pbmcgb24gc2VydmVycyBvbiBjdXN0b21lcidzIHNlcnZlcnNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9taWdyYXRpb25odWItc3RyYXRlZ3kvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdEFwcGxpY2F0aW9uQ29tcG9uZW50cy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0QXBwbGljYXRpb25Db21wb25lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0QXBwbGljYXRpb25Db21wb25lbnRzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IGEgbGlzdCBvZiBhbGwgY29sbGVjdG9ycyBpbnN0YWxsZWQgYnkgdGhlIGN1c3RvbWVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbWlncmF0aW9uaHViLXN0cmF0ZWd5L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0xpc3RDb2xsZWN0b3JzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RDb2xsZWN0b3JzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0Q29sbGVjdG9ycycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCBsaXN0IG9mIGFsbCBpbXBvcnRzIHBlcmZvcm1lZCBieSB0aGUgY3VzdG9tZXJcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9taWdyYXRpb25odWItc3RyYXRlZ3kvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdEltcG9ydEZpbGVUYXNrLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RJbXBvcnRGaWxlVGFzaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdEltcG9ydEZpbGVUYXNrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IGEgbGlzdCBvZiBiaW5hcmllcyB0aGF0IGNvbGxlY3RvciBzaG91bGQgYXNzZXNzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbWlncmF0aW9uaHViLXN0cmF0ZWd5L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0xpc3RKYXJBcnRpZmFjdHMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdEphckFydGlmYWN0cygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdEphckFydGlmYWN0cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCBhIGxpc3Qgb2YgYWxsIHNlcnZlcnMgaW4gYSBjdXN0b21lcidzIGVudmlyb25tZW50XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbWlncmF0aW9uaHViLXN0cmF0ZWd5L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0xpc3RTZXJ2ZXJzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RTZXJ2ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0U2VydmVycycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHRoZSBjb2xsZWN0b3IgdG8gc2VuZCBsb2dzIHRvIHRoZSBzZXJ2aWNlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9QdXRMb2dEYXRhLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1B1dExvZ0RhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1B1dExvZ0RhdGEnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB0aGUgY29sbGVjdG9yIHRvIHNlbmQgbWV0cmljcyB0byB0aGUgc2VydmljZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9taWdyYXRpb25odWItc3RyYXRlZ3kvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUHV0TWV0cmljRGF0YS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9QdXRNZXRyaWNEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdQdXRNZXRyaWNEYXRhJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc2F2ZSBjdXN0b21lcidzIE1pZ3JhdGlvbi9Nb2Rlcm5pemF0aW9uIHByZWZlcmVuY2VzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9QdXRQb3J0Zm9saW9QcmVmZXJlbmNlcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9QdXRQb3J0Zm9saW9QcmVmZXJlbmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnUHV0UG9ydGZvbGlvUHJlZmVyZW5jZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZWdpc3RlciB0aGUgY29sbGVjdG9yIHRvIHJlY2VpdmUgYW4gSUQgYW5kIHRvIHN0YXJ0IHJlY2VpdmluZyBtZXNzYWdlcyBmcm9tIHRoZSBzZXJ2aWNlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9SZWdpc3RlckNvbGxlY3Rvci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9SZWdpc3RlckNvbGxlY3RvcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnUmVnaXN0ZXJDb2xsZWN0b3InKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB0aGUgY29sbGVjdG9yIHRvIHNlbmQgaW5mb3JtYXRpb24gdG8gdGhlIHNlcnZpY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbWlncmF0aW9uaHViLXN0cmF0ZWd5L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1NlbmRNZXNzYWdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1NlbmRNZXNzYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdTZW5kTWVzc2FnZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHN0YXJ0IGFzc2Vzc21lbnQgaW4gYSBjdXN0b21lcidzIGVudmlyb25tZW50IChjb2xsZWN0IGRhdGEgZnJvbSBhbGwgc2VydmVycyBhbmQgcHJvdmlkZSByZWNvbW1lbmRhdGlvbnMpXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9TdGFydEFzc2Vzc21lbnQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvU3RhcnRBc3Nlc3NtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdTdGFydEFzc2Vzc21lbnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBzdGFydCBpbXBvcnRpbmcgZGF0YSBmcm9tIGEgZmlsZSBwcm92aWRlZCBieSBjdXN0b21lclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9taWdyYXRpb25odWItc3RyYXRlZ3kvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfU3RhcnRJbXBvcnRGaWxlVGFzay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9TdGFydEltcG9ydEZpbGVUYXNrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdTdGFydEltcG9ydEZpbGVUYXNrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc3RhcnQgZ2VuZXJhdGluZyBhIHJlY29tbWVuZGF0aW9uIHJlcG9ydFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9taWdyYXRpb25odWItc3RyYXRlZ3kvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfU3RhcnRSZWNvbW1lbmRhdGlvblJlcG9ydEdlbmVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvU3RhcnRSZWNvbW1lbmRhdGlvblJlcG9ydEdlbmVyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1N0YXJ0UmVjb21tZW5kYXRpb25SZXBvcnRHZW5lcmF0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc3RvcCBhbiBvbi1nb2luZyBhc3Nlc3NtZW50XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9TdG9wQXNzZXNzbWVudC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9TdG9wQXNzZXNzbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnU3RvcEFzc2Vzc21lbnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB1cGRhdGUgZGV0YWlscyBmb3IgYW4gYXBwbGljYXRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbWlncmF0aW9uaHViLXN0cmF0ZWd5L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1VwZGF0ZUFwcGxpY2F0aW9uQ29tcG9uZW50Q29uZmlnLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1VwZGF0ZUFwcGxpY2F0aW9uQ29tcG9uZW50Q29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdVcGRhdGVBcHBsaWNhdGlvbkNvbXBvbmVudENvbmZpZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHRoZSBjb2xsZWN0b3IgdG8gc2VuZCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHRvIHRoZSBzZXJ2aWNlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21pZ3JhdGlvbmh1Yi1zdHJhdGVneS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9VcGRhdGVDb2xsZWN0b3JDb25maWd1cmF0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1VwZGF0ZUNvbGxlY3RvckNvbmZpZ3VyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1VwZGF0ZUNvbGxlY3RvckNvbmZpZ3VyYXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB1cGRhdGUgaW5mbyBvbiBhIHNlcnZlciBhbG9uZyB3aXRoIHRoZSByZWNvbW1lbmRlZCBzdHJhdGVneVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9taWdyYXRpb25odWItc3RyYXRlZ3kvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfVXBkYXRlU2VydmVyQ29uZmlnLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1VwZGF0ZVNlcnZlckNvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlU2VydmVyQ29uZmlnJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWNjZXNzTGV2ZWxMaXN0OiBBY2Nlc3NMZXZlbExpc3QgPSB7XG4gICAgUmVhZDogW1xuICAgICAgJ0dldEFudGlQYXR0ZXJuJyxcbiAgICAgICdHZXRBcHBsaWNhdGlvbkNvbXBvbmVudERldGFpbHMnLFxuICAgICAgJ0dldEFwcGxpY2F0aW9uQ29tcG9uZW50U3RyYXRlZ2llcycsXG4gICAgICAnR2V0QXNzZXNzbWVudCcsXG4gICAgICAnR2V0SW1wb3J0RmlsZVRhc2snLFxuICAgICAgJ0dldExhdGVzdEFzc2Vzc21lbnRJZCcsXG4gICAgICAnR2V0TWVzc2FnZScsXG4gICAgICAnR2V0UG9ydGZvbGlvUHJlZmVyZW5jZXMnLFxuICAgICAgJ0dldFBvcnRmb2xpb1N1bW1hcnknLFxuICAgICAgJ0dldFJlY29tbWVuZGF0aW9uUmVwb3J0RGV0YWlscycsXG4gICAgICAnR2V0U2VydmVyRGV0YWlscycsXG4gICAgICAnR2V0U2VydmVyU3RyYXRlZ2llcydcbiAgICBdLFxuICAgIExpc3Q6IFtcbiAgICAgICdMaXN0QW5hbHl6YWJsZVNlcnZlcnMnLFxuICAgICAgJ0xpc3RBbnRpUGF0dGVybnMnLFxuICAgICAgJ0xpc3RBcHBsaWNhdGlvbkNvbXBvbmVudHMnLFxuICAgICAgJ0xpc3RDb2xsZWN0b3JzJyxcbiAgICAgICdMaXN0SW1wb3J0RmlsZVRhc2snLFxuICAgICAgJ0xpc3RKYXJBcnRpZmFjdHMnLFxuICAgICAgJ0xpc3RTZXJ2ZXJzJ1xuICAgIF0sXG4gICAgV3JpdGU6IFtcbiAgICAgICdQdXRMb2dEYXRhJyxcbiAgICAgICdQdXRNZXRyaWNEYXRhJyxcbiAgICAgICdQdXRQb3J0Zm9saW9QcmVmZXJlbmNlcycsXG4gICAgICAnUmVnaXN0ZXJDb2xsZWN0b3InLFxuICAgICAgJ1NlbmRNZXNzYWdlJyxcbiAgICAgICdTdGFydEFzc2Vzc21lbnQnLFxuICAgICAgJ1N0YXJ0SW1wb3J0RmlsZVRhc2snLFxuICAgICAgJ1N0YXJ0UmVjb21tZW5kYXRpb25SZXBvcnRHZW5lcmF0aW9uJyxcbiAgICAgICdTdG9wQXNzZXNzbWVudCcsXG4gICAgICAnVXBkYXRlQXBwbGljYXRpb25Db21wb25lbnRDb25maWcnLFxuICAgICAgJ1VwZGF0ZUNvbGxlY3RvckNvbmZpZ3VyYXRpb24nLFxuICAgICAgJ1VwZGF0ZVNlcnZlckNvbmZpZydcbiAgICBdXG4gIH07XG59XG4iXX0=