awscdk-resources-mongodbatlas
Version:
MongoDB Atlas CDK Construct Library for AWS CloudFormation Resources
186 lines • 27.4 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnTeams = exports.AtlasRoleRoleName = exports.CfnTeamsPropsRoleNames = void 0;
exports.toJson_CfnTeamsProps = toJson_CfnTeamsProps;
exports.toJson_AtlasUser = toJson_AtlasUser;
exports.toJson_Link = toJson_Link;
exports.toJson_AtlasRole = toJson_AtlasRole;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
// Generated by cdk-import
const cdk = require("aws-cdk-lib");
/**
* Converts an object of type 'CfnTeamsProps' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnTeamsProps(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Profile: obj.profile,
RoleNames: obj.roleNames?.map((y) => y),
OrgId: obj.orgId,
ProjectId: obj.projectId,
Name: obj.name,
Usernames: obj.usernames?.map((y) => y),
Users: obj.users?.map((y) => toJson_AtlasUser(y)),
};
// 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 */
/**
* @schema CfnTeamsPropsRoleNames
*/
var CfnTeamsPropsRoleNames;
(function (CfnTeamsPropsRoleNames) {
/** GROUP_CLUSTER_MANAGER */
CfnTeamsPropsRoleNames["GROUP_CLUSTER_MANAGER"] = "GROUP_CLUSTER_MANAGER";
/** GROUP_DATA_ACCESS_ADMIN */
CfnTeamsPropsRoleNames["GROUP_DATA_ACCESS_ADMIN"] = "GROUP_DATA_ACCESS_ADMIN";
/** GROUP_DATA_ACCESS_READ_ONLY */
CfnTeamsPropsRoleNames["GROUP_DATA_ACCESS_READ_ONLY"] = "GROUP_DATA_ACCESS_READ_ONLY";
/** GROUP_DATA_ACCESS_READ_WRITE */
CfnTeamsPropsRoleNames["GROUP_DATA_ACCESS_READ_WRITE"] = "GROUP_DATA_ACCESS_READ_WRITE";
/** GROUP_OWNER */
CfnTeamsPropsRoleNames["GROUP_OWNER"] = "GROUP_OWNER";
/** GROUP_READ_ONLY */
CfnTeamsPropsRoleNames["GROUP_READ_ONLY"] = "GROUP_READ_ONLY";
})(CfnTeamsPropsRoleNames || (exports.CfnTeamsPropsRoleNames = CfnTeamsPropsRoleNames = {}));
/**
* Converts an object of type 'AtlasUser' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_AtlasUser(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Country: obj.country,
EmailAddress: obj.emailAddress,
FirstName: obj.firstName,
Id: obj.id,
LastName: obj.lastName,
Links: obj.links?.map((y) => toJson_Link(y)),
MobileNumber: obj.mobileNumber,
Password: obj.password,
Roles: obj.roles?.map((y) => toJson_AtlasRole(y)),
TeamIds: obj.teamIds?.map((y) => y),
Username: obj.username,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'Link' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_Link(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Rel: obj.rel,
Href: obj.href,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'AtlasRole' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_AtlasRole(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
ProjectId: obj.projectId,
OrgId: obj.orgId,
RoleName: obj.roleName,
};
// 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 collection of privileges that MongoDB Cloud grants a specific API key, MongoDB Cloud user, or MongoDB Cloud team. These roles include organization- and project-level roles.
*
* Organization Roles
*
* * ORG_OWNER
* * ORG_MEMBER
* * ORG_GROUP_CREATOR
* * ORG_BILLING_ADMIN
* * ORG_READ_ONLY
*
* Project Roles
*
* * GROUP_CLUSTER_MANAGER
* * GROUP_DATA_ACCESS_ADMIN
* * GROUP_DATA_ACCESS_READ_ONLY
* * GROUP_DATA_ACCESS_READ_WRITE
* * GROUP_OWNER
* * GROUP_READ_ONLY
*
*
*
* @schema AtlasRoleRoleName
*/
var AtlasRoleRoleName;
(function (AtlasRoleRoleName) {
/** ORG_OWNER */
AtlasRoleRoleName["ORG_OWNER"] = "ORG_OWNER";
/** ORG_MEMBER */
AtlasRoleRoleName["ORG_MEMBER"] = "ORG_MEMBER";
/** ORG_GROUP_CREATOR */
AtlasRoleRoleName["ORG_GROUP_CREATOR"] = "ORG_GROUP_CREATOR";
/** ORG_BILLING_ADMIN */
AtlasRoleRoleName["ORG_BILLING_ADMIN"] = "ORG_BILLING_ADMIN";
/** ORG_READ_ONLY */
AtlasRoleRoleName["ORG_READ_ONLY"] = "ORG_READ_ONLY";
/** GROUP_CLUSTER_MANAGER */
AtlasRoleRoleName["GROUP_CLUSTER_MANAGER"] = "GROUP_CLUSTER_MANAGER";
/** GROUP_DATA_ACCESS_ADMIN */
AtlasRoleRoleName["GROUP_DATA_ACCESS_ADMIN"] = "GROUP_DATA_ACCESS_ADMIN";
/** GROUP_DATA_ACCESS_READ_ONLY */
AtlasRoleRoleName["GROUP_DATA_ACCESS_READ_ONLY"] = "GROUP_DATA_ACCESS_READ_ONLY";
/** GROUP_DATA_ACCESS_READ_WRITE */
AtlasRoleRoleName["GROUP_DATA_ACCESS_READ_WRITE"] = "GROUP_DATA_ACCESS_READ_WRITE";
/** GROUP_OWNER */
AtlasRoleRoleName["GROUP_OWNER"] = "GROUP_OWNER";
/** GROUP_READ_ONLY */
AtlasRoleRoleName["GROUP_READ_ONLY"] = "GROUP_READ_ONLY";
})(AtlasRoleRoleName || (exports.AtlasRoleRoleName = AtlasRoleRoleName = {}));
/**
* A CloudFormation `MongoDB::Atlas::Teams`
*
* @cloudformationResource MongoDB::Atlas::Teams
* @stability external
*/
class CfnTeams extends cdk.CfnResource {
/**
* Create a new `MongoDB::Atlas::Teams`.
*
* @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: CfnTeams.CFN_RESOURCE_TYPE_NAME,
properties: toJson_CfnTeamsProps(props),
});
this.props = props;
this.attrTeamId = cdk.Token.asString(this.getAtt("TeamId"));
}
}
exports.CfnTeams = CfnTeams;
_a = JSII_RTTI_SYMBOL_1;
CfnTeams[_a] = { fqn: "awscdk-resources-mongodbatlas.CfnTeams", version: "3.13.1" };
/**
* The CloudFormation resource type name for this resource class.
*/
CfnTeams.CFN_RESOURCE_TYPE_NAME = "MongoDB::Atlas::Teams";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDEtcmVzb3VyY2VzL3RlYW1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFnRUEsb0RBb0JDO0FBMkdELDRDQXdCQztBQXdCRCxrQ0FlQztBQW9ERCw0Q0FnQkM7O0FBbFVELDBCQUEwQjtBQUMxQixtQ0FBbUM7QUEyRG5DOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLFNBQWdCLG9CQUFvQixDQUNsQyxHQUE4QjtJQUU5QixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN0QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUc7UUFDYixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDcEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1FBQ2hCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztRQUN4QixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDZCxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2QyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2xELENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FDbEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENB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QjtJQUM5Qix3RUFBbUQsQ0FBQTtJQUNuRCxrQ0FBa0M7SUFDbEMsZ0ZBQTJELENBQUE7SUFDM0QsbUNBQW1DO0lBQ25DLGtGQUE2RCxDQUFBO0lBQzdELGtCQUFrQjtJQUNsQixnREFBMkIsQ0FBQTtJQUMzQixzQkFBc0I7SUFDdEIsd0RBQW1DLENBQUE7QUFDckMsQ0FBQyxFQXZCVyxpQkFBaUIsaUNBQWpCLGlCQUFpQixRQXVCNUI7QUFFRDs7Ozs7R0FLRztBQUNILE1BQWEsUUFBUyxTQUFRLEdBQUcsQ0FBQyxXQUFXO0lBZ0IzQzs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsSUFBSSxFQUFFLFFBQVEsQ0FBQyxzQkFBc0I7WUFDckMsVUFBVSxFQUFFLG9CQUFvQixDQUFDLEtBQUssQ0FBRTtTQUN6QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDOztBQWhDSCw0QkFpQ0M7OztBQWhDQzs7R0FFRztBQUNvQiwrQkFBc0IsR0FBRyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBjZGstaW1wb3J0XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbi8qKlxuICogQWRkcyBvbmUgdGVhbSB0byB0aGUgc3BlY2lmaWVkIHByb2plY3QuIEFsbCBtZW1iZXJzIG9mIHRoZSB0ZWFtIHNoYXJlIHRoZSBzYW1lIHByb2plY3QgYWNjZXNzLiBUbyB1c2UgdGhpcyByZXNvdXJjZSwgdGhlIHJlcXVlc3RpbmcgQVBJIEtleSBtdXN0IGhhdmUgdGhlIFByb2plY3QgVXNlciBBZG1pbiByb2xlLiBUaGlzIHJlc291cmNlIGRvZXNuJ3QgcmVxdWlyZSB0aGUgQVBJIEtleSB0byBoYXZlIGFuIEFjY2VzcyBMaXN0LlxuICpcbiAqIEBzY2hlbWEgQ2ZuVGVhbXNQcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENmblRlYW1zUHJvcHMge1xuICAvKipcbiAgICogVGhlIHByb2ZpbGUgaXMgZGVmaW5lZCBpbiBBV1MgU2VjcmV0IG1hbmFnZXIuIFNlZSBbU2VjcmV0IE1hbmFnZXIgUHJvZmlsZSBzZXR1cF0oLi4vLi4vLi4vZXhhbXBsZXMvcHJvZmlsZS1zZWNyZXQueWFtbCkuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuVGVhbXNQcm9wcyNQcm9maWxlXG4gICAqL1xuICByZWFkb25seSBwcm9maWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPbmUgb3IgbW9yZSBvcmdhbml6YXRpb24tIG9yIHByb2plY3QtbGV2ZWwgcm9sZXMgdG8gYXNzaWduIHRvIHRoZSBNb25nb0RCIENsb3VkIHVzZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuVGVhbXNQcm9wcyNSb2xlTmFtZXNcbiAgICovXG4gIHJlYWRvbmx5IHJvbGVOYW1lcz86IENmblRlYW1zUHJvcHNSb2xlTmFtZXNbXTtcblxuICAvKipcbiAgICogVW5pcXVlIDI0LWhleGFkZWNpbWFsIGNoYXJhY3RlciBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBvcmdhbml6YXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuVGVhbXNQcm9wcyNPcmdJZFxuICAgKi9cbiAgcmVhZG9ubHkgb3JnSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSAyNC1oZXhhZGVjaW1hbCBjaGFyYWN0ZXIgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgcHJvamVjdC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5UZWFtc1Byb3BzI1Byb2plY3RJZFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGlkZW50aWZpZXMgdGhlIHRlYW0uXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuVGVhbXNQcm9wcyNOYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IHRoYXQgY29udGFpbnMgdGhlIE1vbmdvREIgQ2xvdWQgdXNlcnMgaW4gdGhpcyB0ZWFtLlxuICAgKlxuICAgKiBAc2NoZW1hIENmblRlYW1zUHJvcHMjVXNlcm5hbWVzXG4gICAqL1xuICByZWFkb25seSB1c2VybmFtZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiByZXR1cm5lZCBkb2N1bWVudHMgdGhhdCBNb25nb0RCIENsb3VkIHByb3ZpZGVzIHdoZW4gY29tcGxldGluZyB0aGlzIHJlcXVlc3QuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuVGVhbXNQcm9wcyNVc2Vyc1xuICAgKi9cbiAgcmVhZG9ubHkgdXNlcnM/OiBBdGxhc1VzZXJbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuVGVhbXNQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQ2ZuVGVhbXNQcm9wcyhcbiAgb2JqOiBDZm5UZWFtc1Byb3BzIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgUHJvZmlsZTogb2JqLnByb2ZpbGUsXG4gICAgUm9sZU5hbWVzOiBvYmoucm9sZU5hbWVzPy5tYXAoKHkpID0+IHkpLFxuICAgIE9yZ0lkOiBvYmoub3JnSWQsXG4gICAgUHJvamVjdElkOiBvYmoucHJvamVjdElkLFxuICAgIE5hbWU6IG9iai5uYW1lLFxuICAgIFVzZXJuYW1lczogb2JqLnVzZXJuYW1lcz8ubWFwKCh5KSA9PiB5KSxcbiAgICBVc2Vyczogb2JqLnVzZXJzPy5tYXAoKHkpID0+IHRvSnNvbl9BdGxhc1VzZXIoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIENmblRlYW1zUHJvcHNSb2xlTmFtZXNcbiAqL1xuZXhwb3J0IGVudW0gQ2ZuVGVhbXNQcm9wc1JvbGVOYW1lcyB7XG4gIC8qKiBHUk9VUF9DTFVTVEVSX01BTkFHRVIgKi9cbiAgR1JPVVBfQ0xVU1RFUl9NQU5BR0VSID0gXCJHUk9VUF9DTFVTVEVSX01BTkFHRVJcIixcbiAgLyoqIEdST1VQX0RBVEFfQUNDRVNTX0FETUlOICovXG4gIEdST1VQX0RBVEFfQUNDRVNTX0FETUlOID0gXCJHUk9VUF9EQVRBX0FDQ0VTU19BRE1JTlwiLFxuICAvKiogR1JPVVBfREFUQV9BQ0NFU1NfUkVBRF9PTkxZICovXG4gIEdST1VQX0RBVEFfQUNDRVNTX1JFQURfT05MWSA9IFwiR1JPVVBfREFUQV9BQ0NFU1NfUkVBRF9PTkxZXCIsXG4gIC8qKiBHUk9VUF9EQVRBX0FDQ0VTU19SRUFEX1dSSVRFICovXG4gIEdST1VQX0RBVEFfQUNDRVNTX1JFQURfV1JJVEUgPSBcIkdST1VQX0RBVEFfQUNDRVNTX1JFQURfV1JJVEVcIixcbiAgLyoqIEdST1VQX09XTkVSICovXG4gIEdST1VQX09XTkVSID0gXCJHUk9VUF9PV05FUlwiLFxuICAvKiogR1JPVVBfUkVBRF9PTkxZICovXG4gIEdST1VQX1JFQURfT05MWSA9IFwiR1JPVVBfUkVBRF9PTkxZXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBBdGxhc1VzZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdGxhc1VzZXIge1xuICAvKipcbiAgICogVHdvIGFscGhhYmV0IGNoYXJhY3RlcnMgdGhhdCBpZGVudGlmaWVzIE1vbmdvREIgQ2xvdWQgdXNlcidzIGdlb2dyYXBoaWMgbG9jYXRpb24uIFRoaXMgcGFyYW1ldGVyIHVzZXMgdGhlIElTTyAzMTY2LTFhMiBjb2RlIGZvcm1hdC5cbiAgICpcbiAgICogQHNjaGVtYSBBdGxhc1VzZXIjQ291bnRyeVxuICAgKi9cbiAgcmVhZG9ubHkgY291bnRyeT86IHN0cmluZztcblxuICAvKipcbiAgICogRW1haWwgYWRkcmVzcyB0aGF0IGJlbG9uZ3MgdG8gdGhlIE1vbmdvREIgQ2xvdWQgdXNlci5cbiAgICpcbiAgICogQHNjaGVtYSBBdGxhc1VzZXIjRW1haWxBZGRyZXNzXG4gICAqL1xuICByZWFkb25seSBlbWFpbEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpcnN0IG9yIGdpdmVuIG5hbWUgdGhhdCBiZWxvbmdzIHRvIHRoZSBNb25nb0RCIENsb3VkIHVzZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgQXRsYXNVc2VyI0ZpcnN0TmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZmlyc3ROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgMjQtaGV4YWRlY2ltYWwgZGlnaXQgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgTW9uZ29EQiBDbG91ZCB1c2VyLlxuICAgKlxuICAgKiBAc2NoZW1hIEF0bGFzVXNlciNJZFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExhc3QgbmFtZSwgZmFtaWx5IG5hbWUsIG9yIHN1cm5hbWUgdGhhdCBiZWxvbmdzIHRvIHRoZSBNb25nb0RCIENsb3VkIHVzZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgQXRsYXNVc2VyI0xhc3ROYW1lXG4gICAqL1xuICByZWFkb25seSBsYXN0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBvbmUgb3IgbW9yZSBVbmlmb3JtIFJlc291cmNlIExvY2F0b3JzIChVUkxzKSB0aGF0IHBvaW50IHRvIEFQSSBzdWItcmVzb3VyY2VzLCByZWxhdGVkIEFQSSByZXNvdXJjZXMsIG9yIGJvdGguIFJGQyA1OTg4IG91dGxpbmVzIHRoZXNlIHJlbGF0aW9uc2hpcHMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXRsYXNVc2VyI0xpbmtzXG4gICAqL1xuICByZWFkb25seSBsaW5rcz86IExpbmtbXTtcblxuICAvKipcbiAgICogTW9iaWxlIHBob25lIG51bWJlciB0aGF0IGJlbG9uZ3MgdG8gdGhlIE1vbmdvREIgQ2xvdWQgdXNlci5cbiAgICpcbiAgICogQHNjaGVtYSBBdGxhc1VzZXIjTW9iaWxlTnVtYmVyXG4gICAqL1xuICByZWFkb25seSBtb2JpbGVOdW1iZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhc3N3b3JkIGFwcGxpZWQgd2l0aCB0aGUgdXNlcm5hbWUgdG8gbG9nIGluIHRvIE1vbmdvREIgQ2xvdWQuIE1vbmdvREIgQ2xvdWQgZG9lcyBub3QgcmV0dXJuIHRoaXMgcGFyYW1ldGVyIGV4Y2VwdCBpbiByZXNwb25zZSB0byBjcmVhdGluZyBhIG5ldyBNb25nb0RCIENsb3VkIHVzZXIuIE9ubHkgdGhlIE1vbmdvREIgQ2xvdWQgdXNlciBjYW4gdXBkYXRlIHRoZWlyIHBhc3N3b3JkIGFmdGVyIGl0IGhhcyBiZWVuIHNldCBmcm9tIHRoZSBNb25nb0RCIENsb3VkIGNvbnNvbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgQXRsYXNVc2VyI1Bhc3N3b3JkXG4gICAqL1xuICByZWFkb25seSBwYXNzd29yZD86IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBvYmplY3RzIHRoYXQgZGlzcGxheSB0aGUgTW9uZ29EQiBDbG91ZCB1c2VyJ3Mgcm9sZXMgYW5kIHRoZSBjb3JyZXNwb25kaW5nIG9yZ2FuaXphdGlvbiBvciBwcm9qZWN0IHRvIHdoaWNoIHRoYXQgcm9sZSBhcHBsaWVzLiBBIHJvbGUgY2FuIGFwcGx5IHRvIG9uZSBvcmdhbml6YXRpb24gb3Igb25lIHByb2plY3QgYnV0IG5vdCBib3RoLlxuICAgKlxuICAgKiBAc2NoZW1hIEF0bGFzVXNlciNSb2xlc1xuICAgKi9cbiAgcmVhZG9ubHkgcm9sZXM/OiBBdGxhc1JvbGVbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiB1bmlxdWUgMjQtaGV4YWRlY2ltYWwgZGlnaXQgc3RyaW5ncyB0aGF0IGlkZW50aWZpZXMgdGhlIHRlYW1zIHRvIHdoaWNoIHRoaXMgTW9uZ29EQiBDbG91ZCB1c2VyIGJlbG9uZ3MuXG4gICAqXG4gICAqIEBzY2hlbWEgQXRsYXNVc2VyI1RlYW1JZHNcbiAgICovXG4gIHJlYWRvbmx5IHRlYW1JZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRW1haWwgYWRkcmVzcyB0aGF0IHJlcHJlc2VudHMgdGhlIHVzZXJuYW1lIG9mIHRoZSBNb25nb0RCIENsb3VkIHVzZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgQXRsYXNVc2VyI1VzZXJuYW1lXG4gICAqL1xuICByZWFkb25seSB1c2VybmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQXRsYXNVc2VyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9BdGxhc1VzZXIoXG4gIG9iajogQXRsYXNVc2VyIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgQ291bnRyeTogb2JqLmNvdW50cnksXG4gICAgRW1haWxBZGRyZXNzOiBvYmouZW1haWxBZGRyZXNzLFxuICAgIEZpcnN0TmFtZTogb2JqLmZpcnN0TmFtZSxcbiAgICBJZDogb2JqLmlkLFxuICAgIExhc3ROYW1lOiBvYmoubGFzdE5hbWUsXG4gICAgTGlua3M6IG9iai5saW5rcz8ubWFwKCh5KSA9PiB0b0pzb25fTGluayh5KSksXG4gICAgTW9iaWxlTnVtYmVyOiBvYmoubW9iaWxlTnVtYmVyLFxuICAgIFBhc3N3b3JkOiBvYmoucGFzc3dvcmQsXG4gICAgUm9sZXM6IG9iai5yb2xlcz8ubWFwKCh5KSA9PiB0b0pzb25fQXRsYXNSb2xlKHkpKSxcbiAgICBUZWFtSWRzOiBvYmoudGVhbUlkcz8ubWFwKCh5KSA9PiB5KSxcbiAgICBVc2VybmFtZTogb2JqLnVzZXJuYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBPbmUgb3IgbW9yZSBsaW5rcyB0byBzdWItcmVzb3VyY2VzIGFuZC9vciByZWxhdGVkIHJlc291cmNlcy5cbiAqXG4gKiBAc2NoZW1hIExpbmtcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW5rIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgTGluayNSZWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBMaW5rI0hyZWZcbiAgICovXG4gIHJlYWRvbmx5IGhyZWY/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0xpbmsnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0xpbmsoXG4gIG9iajogTGluayB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIFJlbDogb2JqLnJlbCxcbiAgICBIcmVmOiBvYmouaHJlZixcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBBdGxhc1JvbGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdGxhc1JvbGUge1xuICAvKipcbiAgICogVW5pcXVlIDI0LWhleGFkZWNpbWFsIGRpZ2l0IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHByb2plY3QgdG8gd2hpY2ggdGhpcyByb2xlIGJlbG9uZ3MuIFlvdSBjYW4gc2V0IGEgdmFsdWUgZm9yIHRoaXMgcGFyYW1ldGVyIG9yICoqb3JnSWQqKiBidXQgbm90IGJvdGggaW4gdGhlIHNhbWUgcmVxdWVzdC5cbiAgICpcbiAgICogQHNjaGVtYSBBdGxhc1JvbGUjUHJvamVjdElkXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSAyNC1oZXhhZGVjaW1hbCBkaWdpdCBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBvcmdhbml6YXRpb24gdG8gd2hpY2ggdGhpcyByb2xlIGJlbG9uZ3MuIFlvdSBjYW4gc2V0IGEgdmFsdWUgZm9yIHRoaXMgcGFyYW1ldGVyIG9yICoqZ3JvdXBJZCoqIGJ1dCBub3QgYm90aCBpbiB0aGUgc2FtZSByZXF1ZXN0XG4gICAqXG4gICAqIEBzY2hlbWEgQXRsYXNSb2xlI09yZ0lkXG4gICAqL1xuICByZWFkb25seSBvcmdJZD86IHN0cmluZztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBjb2xsZWN0aW9uIG9mIHByaXZpbGVnZXMgdGhhdCBNb25nb0RCIENsb3VkIGdyYW50cyBhIHNwZWNpZmljIEFQSSBrZXksIE1vbmdvREIgQ2xvdWQgdXNlciwgb3IgTW9uZ29EQiBDbG91ZCB0ZWFtLiBUaGVzZSByb2xlcyBpbmNsdWRlIG9yZ2FuaXphdGlvbi0gYW5kIHByb2plY3QtbGV2ZWwgcm9sZXMuXG4gICAqXG4gICAqIE9yZ2FuaXphdGlvbiBSb2xlc1xuICAgKlxuICAgKiAqIE9SR19PV05FUlxuICAgKiAqIE9SR19NRU1CRVJcbiAgICogKiBPUkdfR1JPVVBfQ1JFQVRPUlxuICAgKiAqIE9SR19CSUxMSU5HX0FETUlOXG4gICAqICogT1JHX1JFQURfT05MWVxuICAgKlxuICAgKiBQcm9qZWN0IFJvbGVzXG4gICAqXG4gICAqICogR1JPVVBfQ0xVU1RFUl9NQU5BR0VSXG4gICAqICogR1JPVVBfREFUQV9BQ0NFU1NfQURNSU5cbiAgICogKiBHUk9VUF9EQVRBX0FDQ0VTU19SRUFEX09OTFlcbiAgICogKiBHUk9VUF9EQVRBX0FDQ0VTU19SRUFEX1dSSVRFXG4gICAqICogR1JPVVBfT1dORVJcbiAgICogKiBHUk9VUF9SRUFEX09OTFlcbiAgICpcbiAgICpcbiAgICpcbiAgICogQHNjaGVtYSBBdGxhc1JvbGUjUm9sZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHJvbGVOYW1lPzogQXRsYXNSb2xlUm9sZU5hbWU7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0F0bGFzUm9sZScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQXRsYXNSb2xlKFxuICBvYmo6IEF0bGFzUm9sZSB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIFByb2plY3RJZDogb2JqLnByb2plY3RJZCxcbiAgICBPcmdJZDogb2JqLm9yZ0lkLFxuICAgIFJvbGVOYW1lOiBvYmoucm9sZU5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB0aGUgY29sbGVjdGlvbiBvZiBwcml2aWxlZ2VzIHRoYXQgTW9uZ29EQiBDbG91ZCBncmFudHMgYSBzcGVjaWZpYyBBUEkga2V5LCBNb25nb0RCIENsb3VkIHVzZXIsIG9yIE1vbmdvREIgQ2xvdWQgdGVhbS4gVGhlc2Ugcm9sZXMgaW5jbHVkZSBvcmdhbml6YXRpb24tIGFuZCBwcm9qZWN0LWxldmVsIHJvbGVzLlxuICpcbiAqIE9yZ2FuaXphdGlvbiBSb2xlc1xuICpcbiAqICogT1JHX09XTkVSXG4gKiAqIE9SR19NRU1CRVJcbiAqICogT1JHX0dST1VQX0NSRUFUT1JcbiAqICogT1JHX0JJTExJTkdfQURNSU5cbiAqICogT1JHX1JFQURfT05MWVxuICpcbiAqIFByb2plY3QgUm9sZXNcbiAqXG4gKiAqIEdST1VQX0NMVVNURVJfTUFOQUdFUlxuICogKiBHUk9VUF9EQVRBX0FDQ0VTU19BRE1JTlxuICogKiBHUk9VUF9EQVRBX0FDQ0VTU19SRUFEX09OTFlcbiAqICogR1JPVVBfREFUQV9BQ0NFU1NfUkVBRF9XUklURVxuICogKiBHUk9VUF9PV05FUlxuICogKiBHUk9VUF9SRUFEX09OTFlcbiAqXG4gKlxuICpcbiAqIEBzY2hlbWEgQXRsYXNSb2xlUm9sZU5hbWVcbiAqL1xuZXhwb3J0IGVudW0gQXRsYXNSb2xlUm9sZU5hbWUge1xuICAvKiogT1JHX09XTkVSICovXG4gIE9SR19PV05FUiA9IFwiT1JHX09XTkVSXCIsXG4gIC8qKiBPUkdfTUVNQkVSICovXG4gIE9SR19NRU1CRVIgPSBcIk9SR19NRU1CRVJcIixcbiAgLyoqIE9SR19HUk9VUF9DUkVBVE9SICovXG4gIE9SR19HUk9VUF9DUkVBVE9SID0gXCJPUkdfR1JPVVBfQ1JFQVRPUlwiLFxuICAvKiogT1JHX0JJTExJTkdfQURNSU4gKi9cbiAgT1JHX0JJTExJTkdfQURNSU4gPSBcIk9SR19CSUxMSU5HX0FETUlOXCIsXG4gIC8qKiBPUkdfUkVBRF9PTkxZICovXG4gIE9SR19SRUFEX09OTFkgPSBcIk9SR19SRUFEX09OTFlcIixcbiAgLyoqIEdST1VQX0NMVVNURVJfTUFOQUdFUiAqL1xuICBHUk9VUF9DTFVTVEVSX01BTkFHRVIgPSBcIkdST1VQX0NMVVNURVJfTUFOQUdFUlwiLFxuICAvKiogR1JPVVBfREFUQV9BQ0NFU1NfQURNSU4gKi9cbiAgR1JPVVBfREFUQV9BQ0NFU1NfQURNSU4gPSBcIkdST1VQX0RBVEFfQUNDRVNTX0FETUlOXCIsXG4gIC8qKiBHUk9VUF9EQVRBX0FDQ0VTU19SRUFEX09OTFkgKi9cbiAgR1JPVVBfREFUQV9BQ0NFU1NfUkVBRF9PTkxZID0gXCJHUk9VUF9EQVRBX0FDQ0VTU19SRUFEX09OTFlcIixcbiAgLyoqIEdST1VQX0RBVEFfQUNDRVNTX1JFQURfV1JJVEUgKi9cbiAgR1JPVVBfREFUQV9BQ0NFU1NfUkVBRF9XUklURSA9IFwiR1JPVVBfREFUQV9BQ0NFU1NfUkVBRF9XUklURVwiLFxuICAvKiogR1JPVVBfT1dORVIgKi9cbiAgR1JPVVBfT1dORVIgPSBcIkdST1VQX09XTkVSXCIsXG4gIC8qKiBHUk9VUF9SRUFEX09OTFkgKi9cbiAgR1JPVVBfUkVBRF9PTkxZID0gXCJHUk9VUF9SRUFEX09OTFlcIixcbn1cblxuLyoqXG4gKiBBIENsb3VkRm9ybWF0aW9uIGBNb25nb0RCOjpBdGxhczo6VGVhbXNgXG4gKlxuICogQGNsb3VkZm9ybWF0aW9uUmVzb3VyY2UgTW9uZ29EQjo6QXRsYXM6OlRlYW1zXG4gKiBAc3RhYmlsaXR5IGV4dGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBDZm5UZWFtcyBleHRlbmRzIGNkay5DZm5SZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDRk5fUkVTT1VSQ0VfVFlQRV9OQU1FID0gXCJNb25nb0RCOjpBdGxhczo6VGVhbXNcIjtcblxuICAvKipcbiAgICogUmVzb3VyY2UgcHJvcHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IENmblRlYW1zUHJvcHM7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OlRlYW1zLlRlYW1JZGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyVGVhbUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBgTW9uZ29EQjo6QXRsYXM6OlRlYW1zYC5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gc2NvcGUgaW4gd2hpY2ggdGhpcyByZXNvdXJjZSBpcyBkZWZpbmVkXG4gICAqIEBwYXJhbSBpZCAgICAtIHNjb3BlZCBpZCBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIHByb3BzIC0gcmVzb3VyY2UgcHJvcGVydGllc1xuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2ZuVGVhbXNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgdHlwZTogQ2ZuVGVhbXMuQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRSxcbiAgICAgIHByb3BlcnRpZXM6IHRvSnNvbl9DZm5UZWFtc1Byb3BzKHByb3BzKSEsXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLmF0dHJUZWFtSWQgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJUZWFtSWRcIikpO1xuICB9XG59XG4iXX0=