awscdk-resources-mongodbatlas
Version:
MongoDB Atlas CDK Construct Library for AWS CloudFormation Resources
155 lines • 29.9 kB
JavaScript
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnServerlessInstance = exports.ServerlessInstancePrivateEndpointType = exports.ServerlessInstanceProviderSettingsProviderName = void 0;
exports.toJson_CfnServerlessInstanceProps = toJson_CfnServerlessInstanceProps;
exports.toJson_ServerlessInstanceConnectionStrings = toJson_ServerlessInstanceConnectionStrings;
exports.toJson_ServerlessInstanceProviderSettings = toJson_ServerlessInstanceProviderSettings;
exports.toJson_ServerlessInstancePrivateEndpoint = toJson_ServerlessInstancePrivateEndpoint;
exports.toJson_ServerlessInstancePrivateEndpointEndpoint = toJson_ServerlessInstancePrivateEndpointEndpoint;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
// Generated by cdk-import
const cdk = require("aws-cdk-lib");
/**
* Converts an object of type 'CfnServerlessInstanceProps' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnServerlessInstanceProps(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
ConnectionStrings: toJson_ServerlessInstanceConnectionStrings(obj.connectionStrings),
ContinuousBackupEnabled: obj.continuousBackupEnabled,
IncludeCount: obj.includeCount,
ItemsPerPage: obj.itemsPerPage,
Name: obj.name,
PageNum: obj.pageNum,
ProjectID: obj.projectId,
ProviderSettings: toJson_ServerlessInstanceProviderSettings(obj.providerSettings),
TerminationProtectionEnabled: obj.terminationProtectionEnabled,
Profile: obj.profile,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'ServerlessInstanceConnectionStrings' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ServerlessInstanceConnectionStrings(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
PrivateEndpoint: obj.privateEndpoint?.map((y) => toJson_ServerlessInstancePrivateEndpoint(y)),
StandardSrv: obj.standardSrv,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'ServerlessInstanceProviderSettings' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ServerlessInstanceProviderSettings(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
ProviderName: obj.providerName,
RegionName: obj.regionName,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'ServerlessInstancePrivateEndpoint' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ServerlessInstancePrivateEndpoint(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Endpoints: obj.endpoints?.map((y) => toJson_ServerlessInstancePrivateEndpointEndpoint(y)),
SrvConnectionString: obj.srvConnectionString,
Type: obj.type,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, quote-props */
/**
* Human-readable label that identifies the cloud service provider.
*
* @schema ServerlessInstanceProviderSettingsProviderName
*/
var ServerlessInstanceProviderSettingsProviderName;
(function (ServerlessInstanceProviderSettingsProviderName) {
/** SERVERLESS */
ServerlessInstanceProviderSettingsProviderName["SERVERLESS"] = "SERVERLESS";
})(ServerlessInstanceProviderSettingsProviderName || (exports.ServerlessInstanceProviderSettingsProviderName = ServerlessInstanceProviderSettingsProviderName = {}));
/**
* Converts an object of type 'ServerlessInstancePrivateEndpointEndpoint' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ServerlessInstancePrivateEndpointEndpoint(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
EndpointId: obj.endpointId,
ProviderName: obj.providerName,
Region: obj.region,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, quote-props */
/**
* MongoDB process type to which your application connects.
*
*
* @schema ServerlessInstancePrivateEndpointType
*/
var ServerlessInstancePrivateEndpointType;
(function (ServerlessInstancePrivateEndpointType) {
/** MONGOS */
ServerlessInstancePrivateEndpointType["MONGOS"] = "MONGOS";
})(ServerlessInstancePrivateEndpointType || (exports.ServerlessInstancePrivateEndpointType = ServerlessInstancePrivateEndpointType = {}));
/**
* A CloudFormation `MongoDB::Atlas::ServerlessInstance`
*
* @cloudformationResource MongoDB::Atlas::ServerlessInstance
* @stability external
*/
class CfnServerlessInstance extends cdk.CfnResource {
/**
* Create a new `MongoDB::Atlas::ServerlessInstance`.
*
* @param scope - scope in which this resource is defined
* @param id - scoped id of the resource
* @param props - resource properties
*/
constructor(scope, id, props) {
super(scope, id, {
type: CfnServerlessInstance.CFN_RESOURCE_TYPE_NAME,
properties: toJson_CfnServerlessInstanceProps(props),
});
this.props = props;
this.attrCreateDate = cdk.Token.asString(this.getAtt("CreateDate"));
this.attrId = cdk.Token.asString(this.getAtt("Id"));
this.attrTotalCount = cdk.Token.asNumber(this.getAtt("TotalCount"));
this.attrStateName = cdk.Token.asString(this.getAtt("StateName"));
this.attrMongoDBVersion = cdk.Token.asString(this.getAtt("MongoDBVersion"));
}
}
exports.CfnServerlessInstance = CfnServerlessInstance;
_a = JSII_RTTI_SYMBOL_1;
CfnServerlessInstance[_a] = { fqn: "awscdk-resources-mongodbatlas.CfnServerlessInstance", version: "3.13.0" };
/**
* The CloudFormation resource type name for this resource class.
*/
CfnServerlessInstance.CFN_RESOURCE_TYPE_NAME = "MongoDB::Atlas::ServerlessInstance";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDEtcmVzb3VyY2VzL3NlcnZlcmxlc3MtaW5zdGFuY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQXFGQSw4RUEyQkM7QUEwQkQsZ0dBaUJDO0FBMEJELDhGQWVDO0FBa0NELDRGQWtCQztBQThDRCw0R0FnQkM7O0FBdFRELDBCQUEwQjtBQUMxQixtQ0FBbUM7QUFnRm5DOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLFNBQWdCLGlDQUFpQyxDQUMvQyxHQUEyQztJQUUzQyxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN0QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUc7UUFDYixpQkFBaUIsRUFBRSwwQ0FBMEMsQ0FDM0QsR0FBRyxDQUFDLGlCQUFpQixDQUN0QjtRQUNELHVCQUF1QixFQUFFLEdBQUcsQ0FBQyx1QkFBdUI7UUFDcEQsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO1FBQzlCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtRQUM5QixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDZCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDcEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1FBQ3hCLGdCQUFnQixFQUFFLHlDQUF5QyxDQUN6RCxHQUFHLENBQUMsZ0JBQWdCLENBQ3JCO1FBQ0QsNEJBQTRCLEVBQUUsR0FBRyxDQUFDLDRCQUE0QjtRQUM5RCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87S0FDckIsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENB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RSxLQUEyQixFQUMzQixFQUFVLEVBQ1YsS0FBaUM7UUFFakMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixJQUFJLEVBQUUscUJBQXFCLENBQUMsc0JBQXNCO1lBQ2xELFVBQVUsRUFBRSxpQ0FBaUMsQ0FBQyxLQUFLLENBQUU7U0FDdEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7O0FBekRILHNEQTBEQzs7O0FBekRDOztHQUVHO0FBQ29CLDRDQUFzQixHQUMzQyxvQ0FBb0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBjZGstaW1wb3J0XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbi8qKlxuICogKipXQVJOSU5HOioqIFRoaXMgcmVzb3VyY2UgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIEphbnVhcnkgMjAyNi4gRm9yIG1vcmUgZGV0YWlscywgc2VlIFtNaWdyYXRlIHlvdXIgcHJvZ3JhbW1hdGljIHRvb2xzIGZyb20gTTIsIE01LCBvciBTZXJ2ZXJsZXNzIEluc3RhbmNlcyB0byBGbGV4IENsdXN0ZXJzXShodHRwczovL3d3dy5tb25nb2RiLmNvbS9kb2NzL2F0bGFzL2ZsZXgtbWlncmF0aW9uLykuIFJldHVybnMsIGFkZHMsIGVkaXRzLCBhbmQgcmVtb3ZlcyBzZXJ2ZXJsZXNzIGluc3RhbmNlcy5cbiAqXG4gKiBAc2NoZW1hIENmblNlcnZlcmxlc3NJbnN0YW5jZVByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuU2VydmVybGVzc0luc3RhbmNlUHJvcHMge1xuICAvKipcbiAgICogQ29sbGVjdGlvbiBvZiBVbmlmb3JtIFJlc291cmNlIExvY2F0b3JzIHRoYXQgcG9pbnQgdG8gdGhlIE1vbmdvREIgZGF0YWJhc2UuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuU2VydmVybGVzc0luc3RhbmNlUHJvcHMjQ29ubmVjdGlvblN0cmluZ3NcbiAgICovXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb25TdHJpbmdzPzogU2VydmVybGVzc0luc3RhbmNlQ29ubmVjdGlvblN0cmluZ3M7XG5cbiAgLyoqXG4gICAqIEZsYWcgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgc2VydmVybGVzcyBpbnN0YW5jZXMgdXNlcyBTZXJ2ZXJsZXNzIENvbnRpbnVvdXMgQmFja3VwLiBJZiB0aGlzIHBhcmFtZXRlciBpcyBmYWxzZSwgdGhlIHNlcnZlcmxlc3MgaW5zdGFuY2UgdXNlcyBCYXNpYyBCYWNrdXAuIHwgT3B0aW9uIHwgRGVzY3JpcHRpb24gfCB8LS0tfC0tLXwgfCBTZXJ2ZXJsZXNzIENvbnRpbnVvdXMgQmFja3VwIHwgQXRsYXMgdGFrZXMgaW5jcmVtZW50YWwgc25hcHNob3RzIG9mIHRoZSBkYXRhIGluIHlvdXIgc2VydmVybGVzcyBpbnN0YW5jZSBldmVyeSBzaXggaG91cnMgYW5kIGxldHMgeW91IHJlc3RvcmUgdGhlIGRhdGEgZnJvbSBhIHNlbGVjdGVkIHBvaW50IGluIHRpbWUgd2l0aGluIHRoZSBsYXN0IDcyIGhvdXJzLiBBdGxhcyBhbHNvIHRha2VzIGRhaWx5IHNuYXBzaG90cyBhbmQgcmV0YWlucyB0aGVzZSBkYWlseSBzbmFwc2hvdHMgZm9yIDM1IGRheXMuIFRvIGxlYXJuIG1vcmUsIHNlZSBTZXJ2ZXJsZXNzIEluc3RhbmNlIENvc3RzLiB8IHwgQmFzaWMgQmFja3VwIHwgQXRsYXMgdGFrZXMgaW5jcmVtZW50YWwgc25hcHNob3RzIG9mIHRoZSBkYXRhIGluIHlvdXIgc2VydmVybGVzcyBpbnN0YW5jZSBldmVyeSBzaXggaG91cnMgYW5kIHJldGFpbnMgb25seSB0aGUgdHdvIG1vc3QgcmVjZW50IHNuYXBzaG90cy4gWW91IGNhbiB1c2UgdGhpcyBvcHRpb24gZm9yIGZyZWUuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuU2VydmVybGVzc0luc3RhbmNlUHJvcHMjQ29udGludW91c0JhY2t1cEVuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRpbnVvdXNCYWNrdXBFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSByZXNwb25zZSByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgKCoqdG90YWxDb3VudCoqKSBpbiB0aGUgcmVzcG9uc2UuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuU2VydmVybGVzc0luc3RhbmNlUHJvcHMjSW5jbHVkZUNvdW50XG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlQ291bnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgaXRlbXMgdGhhdCB0aGUgcmVzcG9uc2UgcmV0dXJucyBwZXIgcGFnZS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZXJ2ZXJsZXNzSW5zdGFuY2VQcm9wcyNJdGVtc1BlclBhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBzZXJ2ZXJsZXNzIGluc3RhbmNlLlxuICAgKlxuICAgKiBAc2NoZW1hIENmblNlcnZlcmxlc3NJbnN0YW5jZVByb3BzI05hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiB0aGUgcGFnZSB0aGF0IGRpc3BsYXlzIHRoZSBjdXJyZW50IHNldCBvZiB0aGUgdG90YWwgb2JqZWN0cyB0aGF0IHRoZSByZXNwb25zZSByZXR1cm5zLlxuICAgKlxuICAgKiBAc2NoZW1hIENmblNlcnZlcmxlc3NJbnN0YW5jZVByb3BzI1BhZ2VOdW1cbiAgICovXG4gIHJlYWRvbmx5IHBhZ2VOdW0/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSAyNC1oZXhhZGVjaW1hbCBkaWdpdCBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHlvdXIgcHJvamVjdC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZXJ2ZXJsZXNzSW5zdGFuY2VQcm9wcyNQcm9qZWN0SURcbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RJZD86IHN0cmluZztcblxuICAvKipcbiAgICogR3JvdXAgb2Ygc2V0dGluZ3MgdGhhdCBjb25maWd1cmUgdGhlIHByb3Zpc2lvbmVkIE1vbmdvREIgc2VydmVybGVzcyBpbnN0YW5jZS4gVGhlIG9wdGlvbnMgYXZhaWxhYmxlIHJlbGF0ZSB0byB0aGUgY2xvdWQgc2VydmljZSBwcm92aWRlci5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZXJ2ZXJsZXNzSW5zdGFuY2VQcm9wcyNQcm92aWRlclNldHRpbmdzXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlclNldHRpbmdzPzogU2VydmVybGVzc0luc3RhbmNlUHJvdmlkZXJTZXR0aW5ncztcblxuICAvKipcbiAgICogRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRlcm1pbmF0aW9uIHByb3RlY3Rpb24gaXMgZW5hYmxlZCBvbiB0aGUgc2VydmVybGVzcyBpbnN0YW5jZS4gSWYgc2V0IHRvIHRydWUsIE1vbmdvREIgQ2xvdWQgd29uJ3QgZGVsZXRlIHRoZSBzZXJ2ZXJsZXNzIGluc3RhbmNlLiBJZiBzZXQgdG8gZmFsc2UsIE1vbmdvREIgY2xvdWQgd2lsbCBkZWxldGUgdGhlIHNlcnZlcmxlc3MgaW5zdGFuY2UuXCJcbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZXJ2ZXJsZXNzSW5zdGFuY2VQcm9wcyNUZXJtaW5hdGlvblByb3RlY3Rpb25FbmFibGVkXG4gICAqL1xuICByZWFkb25seSB0ZXJtaW5hdGlvblByb3RlY3Rpb25FbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJvZmlsZSB1c2VkIHRvIHByb3ZpZGUgY3JlZGVudGlhbHMgaW5mb3JtYXRpb24sIChhIHNlY3JldCB3aXRoIHRoZSBjZm4vYXRsYXMvcHJvZmlsZS97UHJvZmlsZX0sIGlzIHJlcXVpcmVkKSwgaWYgbm90IHByb3ZpZGVkIGRlZmF1bHQgaXMgdXNlZFxuICAgKlxuICAgKiBAc2NoZW1hIENmblNlcnZlcmxlc3NJbnN0YW5jZVByb3BzI1Byb2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmblNlcnZlcmxlc3NJbnN0YW5jZVByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5TZXJ2ZXJsZXNzSW5zdGFuY2VQcm9wcyhcbiAgb2JqOiBDZm5TZXJ2ZXJsZXNzSW5zdGFuY2VQcm9wcyB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIENvbm5lY3Rpb25TdHJpbmdzOiB0b0pzb25fU2VydmVybGVzc0luc3RhbmNlQ29ubmVjdGlvblN0cmluZ3MoXG4gICAgICBvYmouY29ubmVjdGlvblN0cmluZ3NcbiAgICApLFxuICAgIENvbnRpbnVvdXNCYWNrdXBFbmFibGVkOiBvYmouY29udGludW91c0JhY2t1cEVuYWJsZWQsXG4gICAgSW5jbHVkZUNvdW50OiBvYmouaW5jbHVkZUNvdW50LFxuICAgIEl0ZW1zUGVyUGFnZTogb2JqLml0ZW1zUGVyUGFnZSxcbiAgICBOYW1lOiBvYmoubmFtZSxcbiAgICBQYWdlTnVtOiBvYmoucGFnZU51bSxcbiAgICBQcm9qZWN0SUQ6IG9iai5wcm9qZWN0SWQsXG4gICAgUHJvdmlkZXJTZXR0aW5nczogdG9Kc29uX1NlcnZlcmxlc3NJbnN0YW5jZVByb3ZpZGVyU2V0dGluZ3MoXG4gICAgICBvYmoucHJvdmlkZXJTZXR0aW5nc1xuICAgICksXG4gICAgVGVybWluYXRpb25Qcm90ZWN0aW9uRW5hYmxlZDogb2JqLnRlcm1pbmF0aW9uUHJvdGVjdGlvbkVuYWJsZWQsXG4gICAgUHJvZmlsZTogb2JqLnByb2ZpbGUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgU2VydmVybGVzc0luc3RhbmNlQ29ubmVjdGlvblN0cmluZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJsZXNzSW5zdGFuY2VDb25uZWN0aW9uU3RyaW5ncyB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHByaXZhdGUgZW5kcG9pbnQgY29ubmVjdGlvbiBzdHJpbmdzIHRoYXQgeW91IGNhbiB1c2UgdG8gY29ubmVjdCB0byB0aGlzIHNlcnZlcmxlc3MgaW5zdGFuY2UgdGhyb3VnaCBhIHByaXZhdGUgZW5kcG9pbnQuIFRoaXMgcGFyYW1ldGVyIHJldHVybnMgb25seSBpZiB5b3UgY3JlYXRlZCBhIHByaXZhdGUgZW5kcG9pbnQgZm9yIHRoaXMgc2VydmVybGVzcyBpbnN0YW5jZSBhbmQgaXQgaXMgQVZBSUxBQkxFLlxuICAgKlxuICAgKiBAc2NoZW1hIFNlcnZlcmxlc3NJbnN0YW5jZUNvbm5lY3Rpb25TdHJpbmdzI1ByaXZhdGVFbmRwb2ludFxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZUVuZHBvaW50PzogU2VydmVybGVzc0luc3RhbmNlUHJpdmF0ZUVuZHBvaW50W107XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBjb25uZWN0aW9uIHN0cmluZyB0aGF0IHlvdSBjYW4gdXNlIHRvIGNvbm5lY3QgdG8gdGhpcyBzZXJ2ZXJsZXNzIGluc3RhbmNlLiBUaGlzIGNvbm5lY3Rpb24gc3RyaW5nIHVzZXMgdGhlIGBtb25nb2RiK3NydjovL2AgcHJvdG9jb2wuXG4gICAqXG4gICAqIEBzY2hlbWEgU2VydmVybGVzc0luc3RhbmNlQ29ubmVjdGlvblN0cmluZ3MjU3RhbmRhcmRTcnZcbiAgICovXG4gIHJlYWRvbmx5IHN0YW5kYXJkU3J2Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdTZXJ2ZXJsZXNzSW5zdGFuY2VDb25uZWN0aW9uU3RyaW5ncycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fU2VydmVybGVzc0luc3RhbmNlQ29ubmVjdGlvblN0cmluZ3MoXG4gIG9iajogU2VydmVybGVzc0luc3RhbmNlQ29ubmVjdGlvblN0cmluZ3MgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBQcml2YXRlRW5kcG9pbnQ6IG9iai5wcml2YXRlRW5kcG9pbnQ/Lm1hcCgoeSkgPT5cbiAgICAgIHRvSnNvbl9TZXJ2ZXJsZXNzSW5zdGFuY2VQcml2YXRlRW5kcG9pbnQoeSlcbiAgICApLFxuICAgIFN0YW5kYXJkU3J2OiBvYmouc3RhbmRhcmRTcnYsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgU2VydmVybGVzc0luc3RhbmNlUHJvdmlkZXJTZXR0aW5nc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlcmxlc3NJbnN0YW5jZVByb3ZpZGVyU2V0dGluZ3Mge1xuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBjbG91ZCBzZXJ2aWNlIHByb3ZpZGVyLlxuICAgKlxuICAgKiBAc2NoZW1hIFNlcnZlcmxlc3NJbnN0YW5jZVByb3ZpZGVyU2V0dGluZ3MjUHJvdmlkZXJOYW1lXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlck5hbWU/OiBTZXJ2ZXJsZXNzSW5zdGFuY2VQcm92aWRlclNldHRpbmdzUHJvdmlkZXJOYW1lO1xuXG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGlkZW50aWZpZXMgdGhlIGdlb2dyYXBoaWMgbG9jYXRpb24gb2YgeW91ciBNb25nb0RCIHNlcnZlcmxlc3MgaW5zdGFuY2UuIFRoZSByZWdpb24geW91IGNob29zZSBjYW4gYWZmZWN0IG5ldHdvcmsgbGF0ZW5jeSBmb3IgY2xpZW50cyBhY2Nlc3NpbmcgeW91ciBkYXRhYmFzZXMuIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgcmVnaW9uIG5hbWVzLCBzZWUgW0FXU10oaHR0cHM6Ly9kb2NzLmF0bGFzLm1vbmdvZGIuY29tL3JlZmVyZW5jZS9hbWF6b24tYXdzLyNzdGQtbGFiZWwtYW1hem9uLWF3cyksIFtHQ1BdKGh0dHBzOi8vZG9jcy5hdGxhcy5tb25nb2RiLmNvbS9yZWZlcmVuY2UvZ29vZ2xlLWdjcC8pLCBhbmQgW0F6dXJlXShodHRwczovL2RvY3MuYXRsYXMubW9uZ29kYi5jb20vcmVmZXJlbmNlL21pY3Jvc29mdC1henVyZS8pLlxuICAgKlxuICAgKiBAc2NoZW1hIFNlcnZlcmxlc3NJbnN0YW5jZVByb3ZpZGVyU2V0dGluZ3MjUmVnaW9uTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnU2VydmVybGVzc0luc3RhbmNlUHJvdmlkZXJTZXR0aW5ncycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fU2VydmVybGVzc0luc3RhbmNlUHJvdmlkZXJTZXR0aW5ncyhcbiAgb2JqOiBTZXJ2ZXJsZXNzSW5zdGFuY2VQcm92aWRlclNldHRpbmdzIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgUHJvdmlkZXJOYW1lOiBvYmoucHJvdmlkZXJOYW1lLFxuICAgIFJlZ2lvbk5hbWU6IG9iai5yZWdpb25OYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFNlcnZlcmxlc3NJbnN0YW5jZVByaXZhdGVFbmRwb2ludFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlcmxlc3NJbnN0YW5jZVByaXZhdGVFbmRwb2ludCB7XG4gIC8qKlxuICAgKiBMaXN0IHRoYXQgY29udGFpbnMgdGhlIHByaXZhdGUgZW5kcG9pbnRzIHRocm91Z2ggd2hpY2ggeW91IGNvbm5lY3QgdG8gTW9uZ29EQiBDbG91ZCB3aGVuIHlvdSB1c2UgKipjb25uZWN0aW9uU3RyaW5ncy5wcml2YXRlRW5kcG9pbnRbbl0uc3J2Q29ubmVjdGlvblN0cmluZyoqLlxuICAgKlxuICAgKiBAc2NoZW1hIFNlcnZlcmxlc3NJbnN0YW5jZVByaXZhdGVFbmRwb2ludCNFbmRwb2ludHNcbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50cz86IFNlcnZlcmxlc3NJbnN0YW5jZVByaXZhdGVFbmRwb2ludEVuZHBvaW50W107XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgZW5kcG9pbnQtYXdhcmUgY29ubmVjdGlvbiBzdHJpbmcgdGhhdCB1c2VzIHRoZSBgbW9uZ29kYitzcnY6Ly9gIHByb3RvY29sIHRvIGNvbm5lY3QgdG8gTW9uZ29EQiBDbG91ZCB0aHJvdWdoIGEgcHJpdmF0ZSBlbmRwb2ludC4gVGhlIGBtb25nb2RiK3NydmAgcHJvdG9jb2wgdGVsbHMgdGhlIGRyaXZlciB0byBsb29rIHVwIHRoZSBzZWVkIGxpc3Qgb2YgaG9zdHMgaW4gdGhlIERvbWFpbiBOYW1lIFN5c3RlbSAoRE5TKS5cbiAgICpcbiAgICogQHNjaGVtYSBTZXJ2ZXJsZXNzSW5zdGFuY2VQcml2YXRlRW5kcG9pbnQjU3J2Q29ubmVjdGlvblN0cmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgc3J2Q29ubmVjdGlvblN0cmluZz86IHN0cmluZztcblxuICAvKipcbiAgICogTW9uZ29EQiBwcm9jZXNzIHR5cGUgdG8gd2hpY2ggeW91ciBhcHBsaWNhdGlvbiBjb25uZWN0cy5cbiAgICpcbiAgICpcbiAgICogQHNjaGVtYSBTZXJ2ZXJsZXNzSW5zdGFuY2VQcml2YXRlRW5kcG9pbnQjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IFNlcnZlcmxlc3NJbnN0YW5jZVByaXZhdGVFbmRwb2ludFR5cGU7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1NlcnZlcmxlc3NJbnN0YW5jZVByaXZhdGVFbmRwb2ludCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fU2VydmVybGVzc0luc3RhbmNlUHJpdmF0ZUVuZHBvaW50KFxuICBvYmo6IFNlcnZlcmxlc3NJbnN0YW5jZVByaXZhdGVFbmRwb2ludCB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIEVuZHBvaW50czogb2JqLmVuZHBvaW50cz8ubWFwKCh5KSA9PlxuICAgICAgdG9Kc29uX1NlcnZlcmxlc3NJbnN0YW5jZVByaXZhdGVFbmRwb2ludEVuZHBvaW50KHkpXG4gICAgKSxcbiAgICBTcnZDb25uZWN0aW9uU3RyaW5nOiBvYmouc3J2Q29ubmVjdGlvblN0cmluZyxcbiAgICBUeXBlOiBvYmoudHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBjbG91ZCBzZXJ2aWNlIHByb3ZpZGVyLlxuICpcbiAqIEBzY2hlbWEgU2VydmVybGVzc0luc3RhbmNlUHJvdmlkZXJTZXR0aW5nc1Byb3ZpZGVyTmFtZVxuICovXG5leHBvcnQgZW51bSBTZXJ2ZXJsZXNzSW5zdGFuY2VQcm92aWRlclNldHRpbmdzUHJvdmlkZXJOYW1lIHtcbiAgLyoqIFNFUlZFUkxFU1MgKi9cbiAgU0VSVkVSTEVTUyA9IFwiU0VSVkVSTEVTU1wiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgU2VydmVybGVzc0luc3RhbmNlUHJpdmF0ZUVuZHBvaW50RW5kcG9pbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJsZXNzSW5zdGFuY2VQcml2YXRlRW5kcG9pbnRFbmRwb2ludCB7XG4gIC8qKlxuICAgKiBVbmlxdWUgcHJvdmlkZXIgaWRlbnRpZmllciBvZiB0aGUgcHJpdmF0ZSBlbmRwb2ludC5cbiAgICpcbiAgICpcbiAgICogQHNjaGVtYSBTZXJ2ZXJsZXNzSW5zdGFuY2VQcml2YXRlRW5kcG9pbnRFbmRwb2ludCNFbmRwb2ludElkXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDbG91ZCBwcm92aWRlciB3aGVyZSB0aGUgcHJpdmF0ZSBlbmRwb2ludCBpcyBkZXBsb3llZC5cbiAgICpcbiAgICpcbiAgICogQHNjaGVtYSBTZXJ2ZXJsZXNzSW5zdGFuY2VQcml2YXRlRW5kcG9pbnRFbmRwb2ludCNQcm92aWRlck5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUmVnaW9uIHdoZXJlIHRoZSBwcml2YXRlIGVuZHBvaW50IGlzIGRlcGxveWVkLlxuICAgKlxuICAgKlxuICAgKiBAc2NoZW1hIFNlcnZlcmxlc3NJbnN0YW5jZVByaXZhdGVFbmRwb2ludEVuZHBvaW50I1JlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdTZXJ2ZXJsZXNzSW5zdGFuY2VQcml2YXRlRW5kcG9pbnRFbmRwb2ludCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fU2VydmVybGVzc0luc3RhbmNlUHJpdmF0ZUVuZHBvaW50RW5kcG9pbnQoXG4gIG9iajogU2VydmVybGVzc0luc3RhbmNlUHJpdmF0ZUVuZHBvaW50RW5kcG9pbnQgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBFbmRwb2ludElkOiBvYmouZW5kcG9pbnRJZCxcbiAgICBQcm92aWRlck5hbWU6IG9iai5wcm92aWRlck5hbWUsXG4gICAgUmVnaW9uOiBvYmoucmVnaW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBNb25nb0RCIHByb2Nlc3MgdHlwZSB0byB3aGljaCB5b3VyIGFwcGxpY2F0aW9uIGNvbm5lY3RzLlxuICpcbiAqXG4gKiBAc2NoZW1hIFNlcnZlcmxlc3NJbnN0YW5jZVByaXZhdGVFbmRwb2ludFR5cGVcbiAqL1xuZXhwb3J0IGVudW0gU2VydmVybGVzc0luc3RhbmNlUHJpdmF0ZUVuZHBvaW50VHlwZSB7XG4gIC8qKiBNT05HT1MgKi9cbiAgTU9OR09TID0gXCJNT05HT1NcIixcbn1cblxuLyoqXG4gKiBBIENsb3VkRm9ybWF0aW9uIGBNb25nb0RCOjpBdGxhczo6U2VydmVybGVzc0luc3RhbmNlYFxuICpcbiAqIEBjbG91ZGZvcm1hdGlvblJlc291cmNlIE1vbmdvREI6OkF0bGFzOjpTZXJ2ZXJsZXNzSW5zdGFuY2VcbiAqIEBzdGFiaWxpdHkgZXh0ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIENmblNlcnZlcmxlc3NJbnN0YW5jZSBleHRlbmRzIGNkay5DZm5SZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDRk5fUkVTT1VSQ0VfVFlQRV9OQU1FID1cbiAgICBcIk1vbmdvREI6OkF0bGFzOjpTZXJ2ZXJsZXNzSW5zdGFuY2VcIjtcblxuICAvKipcbiAgICogUmVzb3VyY2UgcHJvcHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IENmblNlcnZlcmxlc3NJbnN0YW5jZVByb3BzO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpTZXJ2ZXJsZXNzSW5zdGFuY2UuQ3JlYXRlRGF0ZWBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyQ3JlYXRlRGF0ZTogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6U2VydmVybGVzc0luc3RhbmNlLklkYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJJZDogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6U2VydmVybGVzc0luc3RhbmNlLlRvdGFsQ291bnRgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0clRvdGFsQ291bnQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OlNlcnZlcmxlc3NJbnN0YW5jZS5TdGF0ZU5hbWVgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0clN0YXRlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6U2VydmVybGVzc0luc3RhbmNlLk1vbmdvREJWZXJzaW9uYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJNb25nb0RCVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgYE1vbmdvREI6OkF0bGFzOjpTZXJ2ZXJsZXNzSW5zdGFuY2VgLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBzY29wZSBpbiB3aGljaCB0aGlzIHJlc291cmNlIGlzIGRlZmluZWRcbiAgICogQHBhcmFtIGlkICAgIC0gc2NvcGVkIGlkIG9mIHRoZSByZXNvdXJjZVxuICAgKiBAcGFyYW0gcHJvcHMgLSByZXNvdXJjZSBwcm9wZXJ0aWVzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQ2ZuU2VydmVybGVzc0luc3RhbmNlUHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0eXBlOiBDZm5TZXJ2ZXJsZXNzSW5zdGFuY2UuQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRSxcbiAgICAgIHByb3BlcnRpZXM6IHRvSnNvbl9DZm5TZXJ2ZXJsZXNzSW5zdGFuY2VQcm9wcyhwcm9wcykhLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5hdHRyQ3JlYXRlRGF0ZSA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIkNyZWF0ZURhdGVcIikpO1xuICAgIHRoaXMuYXR0cklkID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiSWRcIikpO1xuICAgIHRoaXMuYXR0clRvdGFsQ291bnQgPSBjZGsuVG9rZW4uYXNOdW1iZXIodGhpcy5nZXRBdHQoXCJUb3RhbENvdW50XCIpKTtcbiAgICB0aGlzLmF0dHJTdGF0ZU5hbWUgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJTdGF0ZU5hbWVcIikpO1xuICAgIHRoaXMuYXR0ck1vbmdvREJWZXJzaW9uID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiTW9uZ29EQlZlcnNpb25cIikpO1xuICB9XG59XG4iXX0=
;