@aws-cdk/aws-servicecatalog
Advanced tools
Comparing version 1.134.0 to 1.135.0
@@ -35,4 +35,2 @@ function _aws_cdk_aws_servicecatalog_MessageLanguage(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_IProduct(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_TemplateRuleAssertion(p) { | ||
@@ -78,2 +76,4 @@ } | ||
} | ||
function _aws_cdk_aws_servicecatalog_IProduct(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_ProductStack(p) { | ||
@@ -109,4 +109,2 @@ } | ||
} | ||
function _aws_cdk_aws_servicecatalog_Product(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_PortfolioProps(p) { | ||
@@ -122,14 +120,8 @@ if (p == null) | ||
} | ||
function _aws_cdk_aws_servicecatalog_CloudFormationProductProps(p) { | ||
if (p == null) | ||
return; | ||
visitedObjects.add(p); | ||
if (!visitedObjects.has(p.productVersions)) | ||
_aws_cdk_aws_servicecatalog_CloudFormationProductVersion(p.productVersions); | ||
if (!visitedObjects.has(p.messageLanguage)) | ||
_aws_cdk_aws_servicecatalog_MessageLanguage(p.messageLanguage); | ||
visitedObjects.delete(p); | ||
function _aws_cdk_aws_servicecatalog_Product(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnAcceptedPortfolioShare(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnLaunchRoleConstraint(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnLaunchNotificationConstraint(p) { | ||
@@ -139,4 +131,2 @@ } | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnLaunchRoleConstraint(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnPortfolioPrincipalAssociation(p) { | ||
@@ -148,4 +138,2 @@ } | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnServiceActionAssociation(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnStackSetConstraint(p) { | ||
@@ -155,2 +143,16 @@ } | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnServiceActionAssociation(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_CloudFormationProductProps(p) { | ||
if (p == null) | ||
return; | ||
visitedObjects.add(p); | ||
if (!visitedObjects.has(p.productVersions)) | ||
_aws_cdk_aws_servicecatalog_CloudFormationProductVersion(p.productVersions); | ||
if (!visitedObjects.has(p.messageLanguage)) | ||
_aws_cdk_aws_servicecatalog_MessageLanguage(p.messageLanguage); | ||
if (!visitedObjects.has(p.tagOptions)) | ||
_aws_cdk_aws_servicecatalog_TagOptions(p.tagOptions); | ||
visitedObjects.delete(p); | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnCloudFormationProductProps(p) { | ||
@@ -164,4 +166,2 @@ if (p == null) | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnPortfolio(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnPortfolioShare(p) { | ||
@@ -179,2 +179,4 @@ } | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnPortfolio(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_CloudFormationTemplate(p) { | ||
@@ -188,2 +190,4 @@ } | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnCloudFormationProduct_ProvisioningArtifactPropertiesProperty(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnCloudFormationProvisionedProduct(p) { | ||
@@ -195,4 +199,2 @@ } | ||
} | ||
function _aws_cdk_aws_servicecatalog_CfnCloudFormationProduct_ProvisioningArtifactPropertiesProperty(p) { | ||
} | ||
function _aws_cdk_aws_servicecatalog_IPortfolio(p) { | ||
@@ -217,3 +219,3 @@ } | ||
} | ||
module.exports = { print, _aws_cdk_aws_servicecatalog_MessageLanguage, _aws_cdk_aws_servicecatalog_CloudFormationTemplateConfig, _aws_cdk_aws_servicecatalog_CfnTagOptionAssociationProps, _aws_cdk_aws_servicecatalog_CfnServiceActionAssociationProps, _aws_cdk_aws_servicecatalog_CfnAcceptedPortfolioShareProps, _aws_cdk_aws_servicecatalog_CfnPortfolioPrincipalAssociationProps, _aws_cdk_aws_servicecatalog_CfnPortfolioProductAssociationProps, _aws_cdk_aws_servicecatalog_TagOptions, _aws_cdk_aws_servicecatalog_CfnLaunchTemplateConstraintProps, _aws_cdk_aws_servicecatalog_CfnResourceUpdateConstraintProps, _aws_cdk_aws_servicecatalog_CfnLaunchNotificationConstraintProps, _aws_cdk_aws_servicecatalog_CfnLaunchRoleConstraintProps, _aws_cdk_aws_servicecatalog_CfnStackSetConstraintProps, _aws_cdk_aws_servicecatalog_TagUpdateConstraintOptions, _aws_cdk_aws_servicecatalog_IProduct, _aws_cdk_aws_servicecatalog_TemplateRuleAssertion, _aws_cdk_aws_servicecatalog_CfnTagOptionProps, _aws_cdk_aws_servicecatalog_CloudFormationProductVersion, _aws_cdk_aws_servicecatalog_CfnPortfolioShareProps, _aws_cdk_aws_servicecatalog_CfnPortfolioProps, _aws_cdk_aws_servicecatalog_StackSetsConstraintOptions, _aws_cdk_aws_servicecatalog_CloudFormationRuleConstraintOptions, _aws_cdk_aws_servicecatalog_ProductStack, _aws_cdk_aws_servicecatalog_TemplateRule, _aws_cdk_aws_servicecatalog_CloudFormationProduct, _aws_cdk_aws_servicecatalog_CommonConstraintOptions, _aws_cdk_aws_servicecatalog_CfnServiceActionProps, _aws_cdk_aws_servicecatalog_PortfolioShareOptions, _aws_cdk_aws_servicecatalog_Product, _aws_cdk_aws_servicecatalog_PortfolioProps, _aws_cdk_aws_servicecatalog_CloudFormationProductProps, _aws_cdk_aws_servicecatalog_CfnAcceptedPortfolioShare, _aws_cdk_aws_servicecatalog_CfnLaunchNotificationConstraint, _aws_cdk_aws_servicecatalog_CfnLaunchTemplateConstraint, _aws_cdk_aws_servicecatalog_CfnLaunchRoleConstraint, _aws_cdk_aws_servicecatalog_CfnPortfolioPrincipalAssociation, _aws_cdk_aws_servicecatalog_CfnPortfolioProductAssociation, _aws_cdk_aws_servicecatalog_CfnResourceUpdateConstraint, _aws_cdk_aws_servicecatalog_CfnServiceActionAssociation, _aws_cdk_aws_servicecatalog_CfnStackSetConstraint, _aws_cdk_aws_servicecatalog_CfnTagOptionAssociation, _aws_cdk_aws_servicecatalog_CfnCloudFormationProductProps, _aws_cdk_aws_servicecatalog_CfnPortfolio, _aws_cdk_aws_servicecatalog_CfnPortfolioShare, _aws_cdk_aws_servicecatalog_CfnTagOption, _aws_cdk_aws_servicecatalog_CfnCloudFormationProvisionedProductProps, _aws_cdk_aws_servicecatalog_CloudFormationTemplate, _aws_cdk_aws_servicecatalog_CfnServiceAction, _aws_cdk_aws_servicecatalog_CfnServiceAction_DefinitionParameterProperty, _aws_cdk_aws_servicecatalog_CfnCloudFormationProduct, _aws_cdk_aws_servicecatalog_CfnCloudFormationProvisionedProduct, _aws_cdk_aws_servicecatalog_CfnCloudFormationProvisionedProduct_ProvisioningParameterProperty, _aws_cdk_aws_servicecatalog_CfnCloudFormationProvisionedProduct_ProvisioningPreferencesProperty, _aws_cdk_aws_servicecatalog_CfnCloudFormationProduct_ProvisioningArtifactPropertiesProperty, _aws_cdk_aws_servicecatalog_IPortfolio, _aws_cdk_aws_servicecatalog_Portfolio }; | ||
module.exports = { print, _aws_cdk_aws_servicecatalog_MessageLanguage, _aws_cdk_aws_servicecatalog_CloudFormationTemplateConfig, _aws_cdk_aws_servicecatalog_CfnTagOptionAssociationProps, _aws_cdk_aws_servicecatalog_CfnServiceActionAssociationProps, _aws_cdk_aws_servicecatalog_CfnAcceptedPortfolioShareProps, _aws_cdk_aws_servicecatalog_CfnPortfolioPrincipalAssociationProps, _aws_cdk_aws_servicecatalog_CfnPortfolioProductAssociationProps, _aws_cdk_aws_servicecatalog_TagOptions, _aws_cdk_aws_servicecatalog_CfnLaunchTemplateConstraintProps, _aws_cdk_aws_servicecatalog_CfnResourceUpdateConstraintProps, _aws_cdk_aws_servicecatalog_CfnLaunchNotificationConstraintProps, _aws_cdk_aws_servicecatalog_CfnLaunchRoleConstraintProps, _aws_cdk_aws_servicecatalog_CfnStackSetConstraintProps, _aws_cdk_aws_servicecatalog_TagUpdateConstraintOptions, _aws_cdk_aws_servicecatalog_TemplateRuleAssertion, _aws_cdk_aws_servicecatalog_CfnTagOptionProps, _aws_cdk_aws_servicecatalog_CloudFormationProductVersion, _aws_cdk_aws_servicecatalog_CfnPortfolioShareProps, _aws_cdk_aws_servicecatalog_CfnPortfolioProps, _aws_cdk_aws_servicecatalog_StackSetsConstraintOptions, _aws_cdk_aws_servicecatalog_CloudFormationRuleConstraintOptions, _aws_cdk_aws_servicecatalog_IProduct, _aws_cdk_aws_servicecatalog_ProductStack, _aws_cdk_aws_servicecatalog_TemplateRule, _aws_cdk_aws_servicecatalog_CloudFormationProduct, _aws_cdk_aws_servicecatalog_CommonConstraintOptions, _aws_cdk_aws_servicecatalog_CfnServiceActionProps, _aws_cdk_aws_servicecatalog_PortfolioShareOptions, _aws_cdk_aws_servicecatalog_PortfolioProps, _aws_cdk_aws_servicecatalog_Product, _aws_cdk_aws_servicecatalog_CfnAcceptedPortfolioShare, _aws_cdk_aws_servicecatalog_CfnLaunchRoleConstraint, _aws_cdk_aws_servicecatalog_CfnLaunchNotificationConstraint, _aws_cdk_aws_servicecatalog_CfnLaunchTemplateConstraint, _aws_cdk_aws_servicecatalog_CfnPortfolioPrincipalAssociation, _aws_cdk_aws_servicecatalog_CfnPortfolioProductAssociation, _aws_cdk_aws_servicecatalog_CfnResourceUpdateConstraint, _aws_cdk_aws_servicecatalog_CfnStackSetConstraint, _aws_cdk_aws_servicecatalog_CfnTagOptionAssociation, _aws_cdk_aws_servicecatalog_CfnServiceActionAssociation, _aws_cdk_aws_servicecatalog_CloudFormationProductProps, _aws_cdk_aws_servicecatalog_CfnCloudFormationProductProps, _aws_cdk_aws_servicecatalog_CfnPortfolioShare, _aws_cdk_aws_servicecatalog_CfnTagOption, _aws_cdk_aws_servicecatalog_CfnCloudFormationProvisionedProductProps, _aws_cdk_aws_servicecatalog_CfnPortfolio, _aws_cdk_aws_servicecatalog_CloudFormationTemplate, _aws_cdk_aws_servicecatalog_CfnServiceAction, _aws_cdk_aws_servicecatalog_CfnServiceAction_DefinitionParameterProperty, _aws_cdk_aws_servicecatalog_CfnCloudFormationProduct, _aws_cdk_aws_servicecatalog_CfnCloudFormationProduct_ProvisioningArtifactPropertiesProperty, _aws_cdk_aws_servicecatalog_CfnCloudFormationProvisionedProduct, _aws_cdk_aws_servicecatalog_CfnCloudFormationProvisionedProduct_ProvisioningParameterProperty, _aws_cdk_aws_servicecatalog_CfnCloudFormationProvisionedProduct_ProvisioningPreferencesProperty, _aws_cdk_aws_servicecatalog_IPortfolio, _aws_cdk_aws_servicecatalog_Portfolio }; | ||
module.exports.DeprecationError = DeprecationError; |
@@ -45,3 +45,3 @@ "use strict"; | ||
_a = JSII_RTTI_SYMBOL_1; | ||
CloudFormationTemplate[_a] = { fqn: "@aws-cdk/aws-servicecatalog.CloudFormationTemplate", version: "1.134.0" }; | ||
CloudFormationTemplate[_a] = { fqn: "@aws-cdk/aws-servicecatalog.CloudFormationTemplate", version: "1.135.0" }; | ||
/** | ||
@@ -48,0 +48,0 @@ * Template code from a Url. |
@@ -308,3 +308,3 @@ import * as iam from '@aws-cdk/aws-iam'; | ||
/** | ||
* (experimental) TagOptions associated directly on portfolio. | ||
* (experimental) TagOptions associated directly to a portfolio. | ||
* | ||
@@ -311,0 +311,0 @@ * @default - No tagOptions provided |
@@ -73,3 +73,3 @@ "use strict"; | ||
associateTagOptions(tagOptions) { | ||
association_manager_1.AssociationManager.associateTagOptions(this, tagOptions); | ||
association_manager_1.AssociationManager.associateTagOptions(this, this.portfolioId, tagOptions); | ||
} | ||
@@ -238,3 +238,3 @@ /** | ||
_a = JSII_RTTI_SYMBOL_1; | ||
Portfolio[_a] = { fqn: "@aws-cdk/aws-servicecatalog.Portfolio", version: "1.134.0" }; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGZvbGlvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicG9ydGZvbGlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHdDQUF3QztBQUV4QyxxQ0FBcUM7QUFNckMsdUVBQW1FO0FBQ25FLHlDQUE0QztBQUM1QyxxREFBc0Q7QUFFdEQseUVBQStHO0FBZ0UvRyxNQUFlLGFBQWMsU0FBUSxHQUFHLENBQUMsUUFBUTtJQUFqRDs7UUFHbUIseUJBQW9CLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUM7SUFzRmpFLENBQUM7Ozs7OztJQXBGUSxnQkFBZ0IsQ0FBQyxJQUFlO1FBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkQ7Ozs7OztJQUVNLGdCQUFnQixDQUFDLElBQWU7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN2RDs7Ozs7O0lBRU0saUJBQWlCLENBQUMsS0FBaUI7UUFDeEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMxRDs7Ozs7O0lBRU0sVUFBVSxDQUFDLE9BQWlCO1FBQ2pDLHdDQUFrQixDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDNUU7Ozs7OztJQUVNLGdCQUFnQixDQUFDLFNBQWlCLEVBQUUsVUFBaUMsRUFBRTtRQUM1RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSw0Q0FBaUIsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLE1BQU0sRUFBRSxFQUFFO1lBQ3JELFdBQVcsRUFBRSxJ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aW1wb3J0ICogYXMgc25zIGZyb20gJ0Bhd3MtY2RrL2F3cy1zbnMnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZUxhbmd1YWdlIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2xvdWRGb3JtYXRpb25SdWxlQ29uc3RyYWludE9wdGlvbnMsIENvbW1vbkNvbnN0cmFpbnRPcHRpb25zLFxuICBTdGFja1NldHNDb25zdHJhaW50T3B0aW9ucywgVGFnVXBkYXRlQ29uc3RyYWludE9wdGlvbnMsXG59IGZyb20gJy4vY29uc3RyYWludHMnO1xuaW1wb3J0IHsgQXNzb2NpYXRpb25NYW5hZ2VyIH0gZnJvbSAnLi9wcml2YXRlL2Fzc29jaWF0aW9uLW1hbmFnZXInO1xuaW1wb3J0IHsgaGFzaFZhbHVlcyB9IGZyb20gJy4vcHJpdmF0ZS91dGlsJztcbmltcG9ydCB7IElucHV0VmFsaWRhdG9yIH0gZnJvbSAnLi9wcml2YXRlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgSVByb2R1Y3QgfSBmcm9tICcuL3Byb2R1Y3QnO1xuaW1wb3J0IHsgQ2ZuUG9ydGZvbGlvLCBDZm5Qb3J0Zm9saW9QcmluY2lwYWxBc3NvY2lhdGlvbiwgQ2ZuUG9ydGZvbGlvU2hhcmUgfSBmcm9tICcuL3NlcnZpY2VjYXRhbG9nLmdlbmVyYXRlZCc7XG5pbXBvcnQgeyBUYWdPcHRpb25zIH0gZnJvbSAnLi90YWctb3B0aW9ucyc7XG5cbi8vIGtlZXAgdGhpcyBpbXBvcnQgc2VwYXJhdGUgZnJvbSBvdGhlciBpbXBvcnRzIHRvIHJlZHVjZSBjaGFuY2UgZm9yIG1lcmdlIGNvbmZsaWN0cyB3aXRoIHYyLW1haW5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kdXBsaWNhdGUtaW1wb3J0cywgaW1wb3J0L29yZGVyXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIFBvcnRmb2xpb1NoYXJlT3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNoYXJlVGFnT3B0aW9ucz86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWVzc2FnZUxhbmd1YWdlPzogTWVzc2FnZUxhbmd1YWdlO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgSVBvcnRmb2xpbyBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwb3J0Zm9saW9Bcm46IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHBvcnRmb2xpb0lkOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIGdpdmVBY2Nlc3NUb1JvbGUocm9sZTogaWFtLklSb2xlKTogdm9pZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgZ2l2ZUFjY2Vzc1RvVXNlcih1c2VyOiBpYW0uSVVzZXIpOiB2b2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBnaXZlQWNjZXNzVG9Hcm91cChncm91cDogaWFtLklHcm91cCk6IHZvaWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBzaGFyZVdpdGhBY2NvdW50KGFjY291bnRJZDogc3RyaW5nLCBvcHRpb25zPzogUG9ydGZvbGlvU2hhcmVPcHRpb25zKTogdm9pZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBhZGRQcm9kdWN0KHByb2R1Y3Q6IElQcm9kdWN0KTogdm9pZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBhc3NvY2lhdGVUYWdPcHRpb25zKHRhZ09wdGlvbnM6IFRhZ09wdGlvbnMpOiB2b2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBjb25zdHJhaW5UYWdVcGRhdGVzKHByb2R1Y3Q6IElQcm9kdWN0LCBvcHRpb25zPzogVGFnVXBkYXRlQ29uc3RyYWludE9wdGlvbnMpOiB2b2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBub3RpZnlPblN0YWNrRXZlbnRzKHByb2R1Y3Q6IElQcm9kdWN0LCB0b3BpYzogc25zLklUb3BpYywgb3B0aW9ucz86IENvbW1vbkNvbnN0cmFpbnRPcHRpb25zKTogdm9pZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBjb25zdHJhaW5DbG91ZEZvcm1hdGlvblBhcmFtZXRlcnMocHJvZHVjdDpJUHJvZHVjdCwgb3B0aW9uczogQ2xvdWRGb3JtYXRpb25SdWxlQ29uc3RyYWludE9wdGlvbnMpOiB2b2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHNldExhdW5jaFJvbGUocHJvZHVjdDogSVByb2R1Y3QsIGxhdW5jaFJvbGU6IGlhbS5JUm9sZSwgb3B0aW9ucz86IENvbW1vbkNvbnN0cmFpbnRPcHRpb25zKTogdm9pZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgc2V0TG9jYWxMYXVuY2hSb2xlTmFtZShwcm9kdWN0OiBJUHJvZHVjdCwgbGF1bmNoUm9sZU5hbWU6IHN0cmluZywgb3B0aW9ucz86IENvbW1vbkNvbnN0cmFpbnRPcHRpb25zKTogaWFtLklSb2xlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBzZXRMb2NhbExhdW5jaFJvbGUocHJvZHVjdDogSVByb2R1Y3QsIGxhdW5jaFJvbGU6IGlhbS5JUm9sZSwgb3B0aW9ucz86IENvbW1vbkNvbnN0cmFpbnRPcHRpb25zKTogdm9pZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgZGVwbG95V2l0aFN0YWNrU2V0cyhwcm9kdWN0OiBJUHJvZHVjdCwgb3B0aW9uczogU3RhY2tTZXRzQ29uc3RyYWludE9wdGlvbnMpOiB2b2lkO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBQb3J0Zm9saW9CYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSVBvcnRmb2xpbyB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBwb3J0Zm9saW9Bcm46IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHBvcnRmb2xpb0lkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXNzb2NpYXRlZFByaW5jaXBhbHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuXG4gIHB1YmxpYyBnaXZlQWNjZXNzVG9Sb2xlKHJvbGU6IGlhbS5JUm9sZSk6IHZvaWQge1xuICAgIHRoaXMuYXNzb2NpYXRlUHJpbmNpcGFsKHJvbGUucm9sZUFybiwgcm9sZS5ub2RlLmFkZHIpO1xuICB9XG5cbiAgcHVibGljIGdpdmVBY2Nlc3NUb1VzZXIodXNlcjogaWFtLklVc2VyKTogdm9pZCB7XG4gICAgdGhpcy5hc3NvY2lhdGVQcmluY2lwYWwodXNlci51c2VyQXJuLCB1c2VyLm5vZGUuYWRkcik7XG4gIH1cblxuICBwdWJsaWMgZ2l2ZUFjY2Vzc1RvR3JvdXAoZ3JvdXA6IGlhbS5JR3JvdXApOiB2b2lkIHtcbiAgICB0aGlzLmFzc29jaWF0ZVByaW5jaXBhbChncm91cC5ncm91cEFybiwgZ3JvdXAubm9kZS5hZGRyKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRQcm9kdWN0KHByb2R1Y3Q6IElQcm9kdWN0KTogdm9pZCB7XG4gICAgQXNzb2NpYXRpb25NYW5hZ2VyLmFzc29jaWF0ZVByb2R1Y3RXaXRoUG9ydGZvbGlvKHRoaXMsIHByb2R1Y3QsIHVuZGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgc2hhcmVXaXRoQWNjb3VudChhY2NvdW50SWQ6IHN0cmluZywgb3B0aW9uczogUG9ydGZvbGlvU2hhcmVPcHRpb25zID0ge30pOiB2b2lkIHtcbiAgICBjb25zdCBoYXNoSWQgPSB0aGlzLmdlbmVyYXRlVW5pcXVlSGFzaChhY2NvdW50SWQpO1xuICAgIG5ldyBDZm5Qb3J0Zm9saW9TaGFyZSh0aGlzLCBgUG9ydGZvbGlvU2hhcmUke2hhc2hJZH1gLCB7XG4gICAgICBwb3J0Zm9saW9JZDogdGhpcy5wb3J0Zm9saW9JZCxcbiAgICAgIGFjY291bnRJZDogYWNjb3VudElkLFxuICAgICAgc2hhcmVUYWdPcHRpb25zOiBvcHRpb25zLnNoYXJlVGFnT3B0aW9ucyxcbiAgICAgIGFjY2VwdExhbmd1YWdlOiBvcHRpb25zLm1lc3NhZ2VMYW5ndWFnZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3NvY2lhdGVUYWdPcHRpb25zKHRhZ09wdGlvbnM6IFRhZ09wdGlvbnMpIHtcbiAgICBBc3NvY2lhdGlvbk1hbmFnZXIuYXNzb2NpYXRlVGFnT3B0aW9ucyh0aGlzLCB0YWdPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJhaW5UYWdVcGRhdGVzKHByb2R1Y3Q6IElQcm9kdWN0LCBvcHRpb25zOiBUYWdVcGRhdGVDb25zdHJhaW50T3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgQXNzb2NpYXRpb25NYW5hZ2VyLmNvbnN0cmFpblRhZ1VwZGF0ZXModGhpcywgcHJvZHVjdCwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgbm90aWZ5T25TdGFja0V2ZW50cyhwcm9kdWN0OiBJUHJvZHVjdCwgdG9waWM6IHNucy5JVG9waWMsIG9wdGlvbnM6IENvbW1vbkNvbnN0cmFpbnRPcHRpb25zID0ge30pOiB2b2lkIHtcbiAgICBBc3NvY2lhdGlvbk1hbmFnZXIubm90aWZ5T25TdGFja0V2ZW50cyh0aGlzLCBwcm9kdWN0LCB0b3BpYywgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RyYWluQ2xvdWRGb3JtYXRpb25QYXJhbWV0ZXJzKHByb2R1Y3Q6IElQcm9kdWN0LCBvcHRpb25zOiBDbG91ZEZvcm1hdGlvblJ1bGVDb25zdHJhaW50T3B0aW9ucyk6IHZvaWQge1xuICAgIEFzc29jaWF0aW9uTWFuYWdlci5jb25zdHJhaW5DbG91ZEZvcm1hdGlvblBhcmFtZXRlcnModGhpcywgcHJvZHVjdCwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgc2V0TGF1bmNoUm9sZShwcm9kdWN0OiBJUHJvZHVjdCwgbGF1bmNoUm9sZTogaWFtLklSb2xlLCBvcHRpb25zOiBDb21tb25Db25zdHJhaW50T3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgQXNzb2NpYXRpb25NYW5hZ2VyLnNldExhdW5jaFJvbGUodGhpcywgcHJvZHVjdCwgbGF1bmNoUm9sZSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgc2V0TG9jYWxMYXVuY2hSb2xlTmFtZShwcm9kdWN0OiBJUHJvZHVjdCwgbGF1bmNoUm9sZU5hbWU6IHN0cmluZywgb3B0aW9uczogQ29tbW9uQ29uc3RyYWludE9wdGlvbnMgPSB7fSk6IGlhbS5JUm9sZSB7XG4gICAgY29uc3QgbGF1bmNoUm9sZTogaWFtLklSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIGBMYXVuY2hSb2xlJHtsYXVuY2hSb2xlTmFtZX1gLCB7XG4gICAgICByb2xlTmFtZTogbGF1bmNoUm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnc2VydmljZWNhdGFsb2cuYW1hem9uYXdzLmNvbScpLFxuICAgIH0pO1xuICAgIEFzc29jaWF0aW9uTWFuYWdlci5zZXRMb2NhbExhdW5jaFJvbGVOYW1lKHRoaXMsIHByb2R1Y3QsIGxhdW5jaFJvbGUucm9sZU5hbWUsIG9wdGlvbnMpO1xuICAgIHJldHVybiBsYXVuY2hSb2xlO1xuICB9XG5cbiAgcHVibGljIHNldExvY2FsTGF1bmNoUm9sZShwcm9kdWN0OiBJUHJvZHVjdCwgbGF1bmNoUm9sZTogaWFtLklSb2xlLCBvcHRpb25zOiBDb21tb25Db25zdHJhaW50T3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgSW5wdXRWYWxpZGF0b3IudmFsaWRhdGVSb2xlTmFtZVNldEZvckxvY2FsTGF1bmNoUm9sZShsYXVuY2hSb2xlKTtcbiAgICBBc3NvY2lhdGlvbk1hbmFnZXIuc2V0TG9jYWxMYXVuY2hSb2xlTmFtZSh0aGlzLCBwcm9kdWN0LCBsYXVuY2hSb2xlLnJvbGVOYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXBsb3lXaXRoU3RhY2tTZXRzKHByb2R1Y3Q6IElQcm9kdWN0LCBvcHRpb25zOiBTdGFja1NldHNDb25zdHJhaW50T3B0aW9ucykge1xuICAgIEFzc29jaWF0aW9uTWFuYWdlci5kZXBsb3lXaXRoU3RhY2tTZXRzKHRoaXMsIHByb2R1Y3QsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc29jaWF0ZSBhIHByaW5jaXBhbCB3aXRoIHRoZSBwb3J0Zm9saW8uXG4gICAqIElmIHRoZSBwcmluY2lwYWwgaXMgYWxyZWFkeSBhc3NvY2lhdGVkLCBpdCB3aWxsIHNraXAuXG4gICAqL1xuICBwcml2YXRlIGFzc29jaWF0ZVByaW5jaXBhbChwcmluY2lwYWxBcm46IHN0cmluZywgcHJpbmNpcGFsSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hc3NvY2lhdGVkUHJpbmNpcGFscy5oYXMocHJpbmNpcGFsQXJuKSkge1xuICAgICAgY29uc3QgaGFzaElkID0gdGhpcy5nZW5lcmF0ZVVuaXF1ZUhhc2gocHJpbmNpcGFsSWQpO1xuICAgICAgbmV3IENmblBvcnRmb2xpb1ByaW5jaXBhbEFzc29jaWF0aW9uKHRoaXMsIGBQb3J0b2xpb1ByaW5jaXBhbEFzc29jaWF0aW9uJHtoYXNoSWR9YCwge1xuICAgICAgICBwb3J0Zm9saW9JZDogdGhpcy5wb3J0Zm9saW9JZCxcbiAgICAgICAgcHJpbmNpcGFsQXJuOiBwcmluY2lwYWxBcm4sXG4gICAgICAgIHByaW5jaXBhbFR5cGU6ICdJQU0nLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmFzc29jaWF0ZWRQcmluY2lwYWxzLmFkZChwcmluY2lwYWxBcm4pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSB1bmlxdWUgaWQgYmFzZWQgb2ZmIHRoZSBMMSBDZm5Qb3J0Zm9saW8gb3IgdGhlIGFybiBvZiBhbiBpbXBvcnRlZCBwb3J0Zm9saW8uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2VuZXJhdGVVbmlxdWVIYXNoKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIFBvcnRmb2xpb1Byb3BzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcHJvdmlkZXJOYW1lOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWVzc2FnZUxhbmd1YWdlPzogTWVzc2FnZUxhbmd1YWdlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB0YWdPcHRpb25zPzogVGFnT3B0aW9uc1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBQb3J0Zm9saW8gZXh0ZW5kcyBQb3J0Zm9saW9CYXNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIGZyb21Qb3J0Zm9saW9Bcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcG9ydGZvbGlvQXJuOiBzdHJpbmcpOiBJUG9ydGZvbGlvIHtcbiAgICBjb25zdCBhcm4gPSBjZGsuU3RhY2sub2Yoc2NvcGUpLnNwbGl0QXJuKHBvcnRmb2xpb0FybiwgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKTtcbiAgICBjb25zdCBwb3J0Zm9saW9JZCA9IGFybi5yZXNvdXJjZU5hbWU7XG5cbiAgICBpZiAoIXBvcnRmb2xpb0lkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgUG9ydGZvbGlvIElEIGZyb20gUG9ydGZvbGlvIEFSTjogJyArIHBvcnRmb2xpb0Fybik7XG4gICAgfVxuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUG9ydGZvbGlvQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcG9ydGZvbGlvQXJuID0gcG9ydGZvbGlvQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHBvcnRmb2xpb0lkID0gcG9ydGZvbGlvSWQhO1xuXG4gICAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVVbmlxdWVIYXNoKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaGFzaFZhbHVlcyh0aGlzLnBvcnRmb2xpb0FybiwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCwge1xuICAgICAgZW52aXJvbm1lbnRGcm9tQXJuOiBwb3J0Zm9saW9Bcm4sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgcG9ydGZvbGlvQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBwb3J0Zm9saW9JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHBvcnRmb2xpbzogQ2ZuUG9ydGZvbGlvO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQb3J0Zm9saW9Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlUG9ydGZvbGlvUHJvcHMocHJvcHMpO1xuXG4gICAgdGhpcy5wb3J0Zm9saW8gPSBuZXcgQ2ZuUG9ydGZvbGlvKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGRpc3BsYXlOYW1lOiBwcm9wcy5kaXNwbGF5TmFtZSxcbiAgICAgIHByb3ZpZGVyTmFtZTogcHJvcHMucHJvdmlkZXJOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgYWNjZXB0TGFuZ3VhZ2U6IHByb3BzLm1lc3NhZ2VMYW5ndWFnZSxcbiAgICB9KTtcbiAgICB0aGlzLnBvcnRmb2xpb0lkID0gdGhpcy5wb3J0Zm9saW8ucmVmO1xuICAgIHRoaXMucG9ydGZvbGlvQXJuID0gY2RrLlN0YWNrLm9mKHRoaXMpLmZvcm1hdEFybih7XG4gICAgICBzZXJ2aWNlOiAnc2VydmljZWNhdGFsb2cnLFxuICAgICAgcmVzb3VyY2U6ICdwb3J0Zm9saW8nLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnBvcnRmb2xpb0lkLFxuICAgIH0pO1xuICAgIGlmIChwcm9wcy50YWdPcHRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYXNzb2NpYXRlVGFnT3B0aW9ucyhwcm9wcy50YWdPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2VuZXJhdGVVbmlxdWVIYXNoKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBoYXNoVmFsdWVzKGNkay5OYW1lcy5ub2RlVW5pcXVlSWQodGhpcy5wb3J0Zm9saW8ubm9kZSksIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVQb3J0Zm9saW9Qcm9wcyhwcm9wczogUG9ydGZvbGlvUHJvcHMpIHtcbiAgICBJbnB1dFZhbGlkYXRvci52YWxpZGF0ZUxlbmd0aCh0aGlzLm5vZGUucGF0aCwgJ3BvcnRmb2xpbyBkaXNwbGF5IG5hbWUnLCAxLCAxMDAsIHByb3BzLmRpc3BsYXlOYW1lKTtcbiAgICBJbnB1dFZhbGlkYXRvci52YWxpZGF0ZUxlbmd0aCh0aGlzLm5vZGUucGF0aCwgJ3BvcnRmb2xpbyBwcm92aWRlciBuYW1lJywgMSwgNTAsIHByb3BzLnByb3ZpZGVyTmFtZSk7XG4gICAgSW5wdXRWYWxpZGF0b3IudmFsaWRhdGVMZW5ndGgodGhpcy5ub2RlLnBhdGgsICdwb3J0Zm9saW8gZGVzY3JpcHRpb24nLCAwLCAyMDAwLCBwcm9wcy5kZXNjcmlwdGlvbik7XG4gIH1cbn1cbiJdfQ== | ||
Portfolio[_a] = { fqn: "@aws-cdk/aws-servicecatalog.Portfolio", version: "1.135.0" }; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGZvbGlvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicG9ydGZvbGlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHdDQUF3QztBQUV4QyxxQ0FBcUM7QUFNckMsdUVBQW1FO0FBQ25FLHlDQUE0QztBQUM1QyxxREFBc0Q7QUFFdEQseUVBQStHO0FBZ0UvRyxNQUFlLGFBQWMsU0FBUSxHQUFHLENBQUMsUUFBUTtJQUFqRDs7UUFHbUIseUJBQW9CLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUM7SUFzRmpFLENBQUM7Ozs7OztJQXBGUSxnQkFBZ0IsQ0FBQyxJQUFlO1FBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkQ7Ozs7OztJQUVNLGdCQUFnQixDQUFDLElBQWU7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN2RDs7Ozs7O0lBRU0saUJBQWlCLENBQUMsS0FBaUI7UUFDeEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMxRDs7Ozs7O0lBRU0sVUFBVSxDQUFDLE9BQWlCO1FBQ2pDLHdDQUFrQixDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDNUU7Ozs7OztJQUVNLGdCQUFnQixDQUFDLFNBQWlCLEVBQUUsVUFBaUMsRUFBRTtRQUM1RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSw0Q0FBaUIsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLE1BQU0sRUFBRSxFQUFFO1lBQ3JELFdBQVcsRUFBRSxJ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QGF3cy1jZGsvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnQGF3cy1jZGsvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgeyBNZXNzYWdlTGFuZ3VhZ2UgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQge1xuICBDbG91ZEZvcm1hdGlvblJ1bGVDb25zdHJhaW50T3B0aW9ucywgQ29tbW9uQ29uc3RyYWludE9wdGlvbnMsXG4gIFN0YWNrU2V0c0NvbnN0cmFpbnRPcHRpb25zLCBUYWdVcGRhdGVDb25zdHJhaW50T3B0aW9ucyxcbn0gZnJvbSAnLi9jb25zdHJhaW50cyc7XG5pbXBvcnQgeyBBc3NvY2lhdGlvbk1hbmFnZXIgfSBmcm9tICcuL3ByaXZhdGUvYXNzb2NpYXRpb24tbWFuYWdlcic7XG5pbXBvcnQgeyBoYXNoVmFsdWVzIH0gZnJvbSAnLi9wcml2YXRlL3V0aWwnO1xuaW1wb3J0IHsgSW5wdXRWYWxpZGF0b3IgfSBmcm9tICcuL3ByaXZhdGUvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBJUHJvZHVjdCB9IGZyb20gJy4vcHJvZHVjdCc7XG5pbXBvcnQgeyBDZm5Qb3J0Zm9saW8sIENmblBvcnRmb2xpb1ByaW5jaXBhbEFzc29jaWF0aW9uLCBDZm5Qb3J0Zm9saW9TaGFyZSB9IGZyb20gJy4vc2VydmljZWNhdGFsb2cuZ2VuZXJhdGVkJztcbmltcG9ydCB7IFRhZ09wdGlvbnMgfSBmcm9tICcuL3RhZy1vcHRpb25zJztcblxuLy8ga2VlcCB0aGlzIGltcG9ydCBzZXBhcmF0ZSBmcm9tIG90aGVyIGltcG9ydHMgdG8gcmVkdWNlIGNoYW5jZSBmb3IgbWVyZ2UgY29uZmxpY3RzIHdpdGggdjItbWFpblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWR1cGxpY2F0ZS1pbXBvcnRzLCBpbXBvcnQvb3JkZXJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgUG9ydGZvbGlvU2hhcmVPcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2hhcmVUYWdPcHRpb25zPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBtZXNzYWdlTGFuZ3VhZ2U/OiBNZXNzYWdlTGFuZ3VhZ2U7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBJUG9ydGZvbGlvIGV4dGVuZHMgY2RrLklSZXNvdXJjZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHBvcnRmb2xpb0Fybjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcG9ydGZvbGlvSWQ6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgZ2l2ZUFjY2Vzc1RvUm9sZShyb2xlOiBpYW0uSVJvbGUpOiB2b2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBnaXZlQWNjZXNzVG9Vc2VyKHVzZXI6IGlhbS5JVXNlcik6IHZvaWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIGdpdmVBY2Nlc3NUb0dyb3VwKGdyb3VwOiBpYW0uSUdyb3VwKTogdm9pZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHNoYXJlV2l0aEFjY291bnQoYWNjb3VudElkOiBzdHJpbmcsIG9wdGlvbnM/OiBQb3J0Zm9saW9TaGFyZU9wdGlvbnMpOiB2b2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIGFkZFByb2R1Y3QocHJvZHVjdDogSVByb2R1Y3QpOiB2b2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIGFzc29jaWF0ZVRhZ09wdGlvbnModGFnT3B0aW9uczogVGFnT3B0aW9ucyk6IHZvaWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIGNvbnN0cmFpblRhZ1VwZGF0ZXMocHJvZHVjdDogSVByb2R1Y3QsIG9wdGlvbnM/OiBUYWdVcGRhdGVDb25zdHJhaW50T3B0aW9ucyk6IHZvaWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIG5vdGlmeU9uU3RhY2tFdmVudHMocHJvZHVjdDogSVByb2R1Y3QsIHRvcGljOiBzbnMuSVRvcGljLCBvcHRpb25zPzogQ29tbW9uQ29uc3RyYWludE9wdGlvbnMpOiB2b2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIGNvbnN0cmFpbkNsb3VkRm9ybWF0aW9uUGFyYW1ldGVycyhwcm9kdWN0OklQcm9kdWN0LCBvcHRpb25zOiBDbG91ZEZvcm1hdGlvblJ1bGVDb25zdHJhaW50T3B0aW9ucyk6IHZvaWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgc2V0TGF1bmNoUm9sZShwcm9kdWN0OiBJUHJvZHVjdCwgbGF1bmNoUm9sZTogaWFtLklSb2xlLCBvcHRpb25zPzogQ29tbW9uQ29uc3RyYWludE9wdGlvbnMpOiB2b2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBzZXRMb2NhbExhdW5jaFJvbGVOYW1lKHByb2R1Y3Q6IElQcm9kdWN0LCBsYXVuY2hSb2xlTmFtZTogc3RyaW5nLCBvcHRpb25zPzogQ29tbW9uQ29uc3RyYWludE9wdGlvbnMpOiBpYW0uSVJvbGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHNldExvY2FsTGF1bmNoUm9sZShwcm9kdWN0OiBJUHJvZHVjdCwgbGF1bmNoUm9sZTogaWFtLklSb2xlLCBvcHRpb25zPzogQ29tbW9uQ29uc3RyYWludE9wdGlvbnMpOiB2b2lkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBkZXBsb3lXaXRoU3RhY2tTZXRzKHByb2R1Y3Q6IElQcm9kdWN0LCBvcHRpb25zOiBTdGFja1NldHNDb25zdHJhaW50T3B0aW9ucyk6IHZvaWQ7XG59XG5cbmFic3RyYWN0IGNsYXNzIFBvcnRmb2xpb0Jhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJUG9ydGZvbGlvIHtcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHBvcnRmb2xpb0Fybjogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcG9ydGZvbGlvSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBhc3NvY2lhdGVkUHJpbmNpcGFsczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cbiAgcHVibGljIGdpdmVBY2Nlc3NUb1JvbGUocm9sZTogaWFtLklSb2xlKTogdm9pZCB7XG4gICAgdGhpcy5hc3NvY2lhdGVQcmluY2lwYWwocm9sZS5yb2xlQXJuLCByb2xlLm5vZGUuYWRkcik7XG4gIH1cblxuICBwdWJsaWMgZ2l2ZUFjY2Vzc1RvVXNlcih1c2VyOiBpYW0uSVVzZXIpOiB2b2lkIHtcbiAgICB0aGlzLmFzc29jaWF0ZVByaW5jaXBhbCh1c2VyLnVzZXJBcm4sIHVzZXIubm9kZS5hZGRyKTtcbiAgfVxuXG4gIHB1YmxpYyBnaXZlQWNjZXNzVG9Hcm91cChncm91cDogaWFtLklHcm91cCk6IHZvaWQge1xuICAgIHRoaXMuYXNzb2NpYXRlUHJpbmNpcGFsKGdyb3VwLmdyb3VwQXJuLCBncm91cC5ub2RlLmFkZHIpO1xuICB9XG5cbiAgcHVibGljIGFkZFByb2R1Y3QocHJvZHVjdDogSVByb2R1Y3QpOiB2b2lkIHtcbiAgICBBc3NvY2lhdGlvbk1hbmFnZXIuYXNzb2NpYXRlUHJvZHVjdFdpdGhQb3J0Zm9saW8odGhpcywgcHJvZHVjdCwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBzaGFyZVdpdGhBY2NvdW50KGFjY291bnRJZDogc3RyaW5nLCBvcHRpb25zOiBQb3J0Zm9saW9TaGFyZU9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICAgIGNvbnN0IGhhc2hJZCA9IHRoaXMuZ2VuZXJhdGVVbmlxdWVIYXNoKGFjY291bnRJZCk7XG4gICAgbmV3IENmblBvcnRmb2xpb1NoYXJlKHRoaXMsIGBQb3J0Zm9saW9TaGFyZSR7aGFzaElkfWAsIHtcbiAgICAgIHBvcnRmb2xpb0lkOiB0aGlzLnBvcnRmb2xpb0lkLFxuICAgICAgYWNjb3VudElkOiBhY2NvdW50SWQsXG4gICAgICBzaGFyZVRhZ09wdGlvbnM6IG9wdGlvbnMuc2hhcmVUYWdPcHRpb25zLFxuICAgICAgYWNjZXB0TGFuZ3VhZ2U6IG9wdGlvbnMubWVzc2FnZUxhbmd1YWdlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzc29jaWF0ZVRhZ09wdGlvbnModGFnT3B0aW9uczogVGFnT3B0aW9ucykge1xuICAgIEFzc29jaWF0aW9uTWFuYWdlci5hc3NvY2lhdGVUYWdPcHRpb25zKHRoaXMsIHRoaXMucG9ydGZvbGlvSWQsIHRhZ09wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cmFpblRhZ1VwZGF0ZXMocHJvZHVjdDogSVByb2R1Y3QsIG9wdGlvbnM6IFRhZ1VwZGF0ZUNvbnN0cmFpbnRPcHRpb25zID0ge30pOiB2b2lkIHtcbiAgICBBc3NvY2lhdGlvbk1hbmFnZXIuY29uc3RyYWluVGFnVXBkYXRlcyh0aGlzLCBwcm9kdWN0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBub3RpZnlPblN0YWNrRXZlbnRzKHByb2R1Y3Q6IElQcm9kdWN0LCB0b3BpYzogc25zLklUb3BpYywgb3B0aW9uczogQ29tbW9uQ29uc3RyYWludE9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICAgIEFzc29jaWF0aW9uTWFuYWdlci5ub3RpZnlPblN0YWNrRXZlbnRzKHRoaXMsIHByb2R1Y3QsIHRvcGljLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJhaW5DbG91ZEZvcm1hdGlvblBhcmFtZXRlcnMocHJvZHVjdDogSVByb2R1Y3QsIG9wdGlvbnM6IENsb3VkRm9ybWF0aW9uUnVsZUNvbnN0cmFpbnRPcHRpb25zKTogdm9pZCB7XG4gICAgQXNzb2NpYXRpb25NYW5hZ2VyLmNvbnN0cmFpbkNsb3VkRm9ybWF0aW9uUGFyYW1ldGVycyh0aGlzLCBwcm9kdWN0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMYXVuY2hSb2xlKHByb2R1Y3Q6IElQcm9kdWN0LCBsYXVuY2hSb2xlOiBpYW0uSVJvbGUsIG9wdGlvbnM6IENvbW1vbkNvbnN0cmFpbnRPcHRpb25zID0ge30pOiB2b2lkIHtcbiAgICBBc3NvY2lhdGlvbk1hbmFnZXIuc2V0TGF1bmNoUm9sZSh0aGlzLCBwcm9kdWN0LCBsYXVuY2hSb2xlLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMb2NhbExhdW5jaFJvbGVOYW1lKHByb2R1Y3Q6IElQcm9kdWN0LCBsYXVuY2hSb2xlTmFtZTogc3RyaW5nLCBvcHRpb25zOiBDb21tb25Db25zdHJhaW50T3B0aW9ucyA9IHt9KTogaWFtLklSb2xlIHtcbiAgICBjb25zdCBsYXVuY2hSb2xlOiBpYW0uSVJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgYExhdW5jaFJvbGUke2xhdW5jaFJvbGVOYW1lfWAsIHtcbiAgICAgIHJvbGVOYW1lOiBsYXVuY2hSb2xlTmFtZSxcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdzZXJ2aWNlY2F0YWxvZy5hbWF6b25hd3MuY29tJyksXG4gICAgfSk7XG4gICAgQXNzb2NpYXRpb25NYW5hZ2VyLnNldExvY2FsTGF1bmNoUm9sZU5hbWUodGhpcywgcHJvZHVjdCwgbGF1bmNoUm9sZS5yb2xlTmFtZSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGxhdW5jaFJvbGU7XG4gIH1cblxuICBwdWJsaWMgc2V0TG9jYWxMYXVuY2hSb2xlKHByb2R1Y3Q6IElQcm9kdWN0LCBsYXVuY2hSb2xlOiBpYW0uSVJvbGUsIG9wdGlvbnM6IENvbW1vbkNvbnN0cmFpbnRPcHRpb25zID0ge30pOiB2b2lkIHtcbiAgICBJbnB1dFZhbGlkYXRvci52YWxpZGF0ZVJvbGVOYW1lU2V0Rm9yTG9jYWxMYXVuY2hSb2xlKGxhdW5jaFJvbGUpO1xuICAgIEFzc29jaWF0aW9uTWFuYWdlci5zZXRMb2NhbExhdW5jaFJvbGVOYW1lKHRoaXMsIHByb2R1Y3QsIGxhdW5jaFJvbGUucm9sZU5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGRlcGxveVdpdGhTdGFja1NldHMocHJvZHVjdDogSVByb2R1Y3QsIG9wdGlvbnM6IFN0YWNrU2V0c0NvbnN0cmFpbnRPcHRpb25zKSB7XG4gICAgQXNzb2NpYXRpb25NYW5hZ2VyLmRlcGxveVdpdGhTdGFja1NldHModGhpcywgcHJvZHVjdCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQXNzb2NpYXRlIGEgcHJpbmNpcGFsIHdpdGggdGhlIHBvcnRmb2xpby5cbiAgICogSWYgdGhlIHByaW5jaXBhbCBpcyBhbHJlYWR5IGFzc29jaWF0ZWQsIGl0IHdpbGwgc2tpcC5cbiAgICovXG4gIHByaXZhdGUgYXNzb2NpYXRlUHJpbmNpcGFsKHByaW5jaXBhbEFybjogc3RyaW5nLCBwcmluY2lwYWxJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFzc29jaWF0ZWRQcmluY2lwYWxzLmhhcyhwcmluY2lwYWxBcm4pKSB7XG4gICAgICBjb25zdCBoYXNoSWQgPSB0aGlzLmdlbmVyYXRlVW5pcXVlSGFzaChwcmluY2lwYWxJZCk7XG4gICAgICBuZXcgQ2ZuUG9ydGZvbGlvUHJpbmNpcGFsQXNzb2NpYXRpb24odGhpcywgYFBvcnRvbGlvUHJpbmNpcGFsQXNzb2NpYXRpb24ke2hhc2hJZH1gLCB7XG4gICAgICAgIHBvcnRmb2xpb0lkOiB0aGlzLnBvcnRmb2xpb0lkLFxuICAgICAgICBwcmluY2lwYWxBcm46IHByaW5jaXBhbEFybixcbiAgICAgICAgcHJpbmNpcGFsVHlwZTogJ0lBTScsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXNzb2NpYXRlZFByaW5jaXBhbHMuYWRkKHByaW5jaXBhbEFybik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHVuaXF1ZSBpZCBiYXNlZCBvZmYgdGhlIEwxIENmblBvcnRmb2xpbyBvciB0aGUgYXJuIG9mIGFuIGltcG9ydGVkIHBvcnRmb2xpby5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZW5lcmF0ZVVuaXF1ZUhhc2godmFsdWU6IHN0cmluZyk6IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgUG9ydGZvbGlvUHJvcHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkaXNwbGF5TmFtZTogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwcm92aWRlck5hbWU6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBtZXNzYWdlTGFuZ3VhZ2U/OiBNZXNzYWdlTGFuZ3VhZ2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRhZ09wdGlvbnM/OiBUYWdPcHRpb25zXG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIFBvcnRmb2xpbyBleHRlbmRzIFBvcnRmb2xpb0Jhc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBvcnRmb2xpb0FybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwb3J0Zm9saW9Bcm46IHN0cmluZyk6IElQb3J0Zm9saW8ge1xuICAgIGNvbnN0IGFybiA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4ocG9ydGZvbGlvQXJuLCBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpO1xuICAgIGNvbnN0IHBvcnRmb2xpb0lkID0gYXJuLnJlc291cmNlTmFtZTtcblxuICAgIGlmICghcG9ydGZvbGlvSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBQb3J0Zm9saW8gSUQgZnJvbSBQb3J0Zm9saW8gQVJOOiAnICsgcG9ydGZvbGlvQXJuKTtcbiAgICB9XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBQb3J0Zm9saW9CYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwb3J0Zm9saW9Bcm4gPSBwb3J0Zm9saW9Bcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcG9ydGZvbGlvSWQgPSBwb3J0Zm9saW9JZCE7XG5cbiAgICAgIHByb3RlY3RlZCBnZW5lcmF0ZVVuaXF1ZUhhc2godmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBoYXNoVmFsdWVzKHRoaXMucG9ydGZvbGlvQXJuLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkLCB7XG4gICAgICBlbnZpcm9ubWVudEZyb21Bcm46IHBvcnRmb2xpb0FybixcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBwb3J0Zm9saW9Bcm46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHBvcnRmb2xpb0lkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcG9ydGZvbGlvOiBDZm5Qb3J0Zm9saW87XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBvcnRmb2xpb1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMudmFsaWRhdGVQb3J0Zm9saW9Qcm9wcyhwcm9wcyk7XG5cbiAgICB0aGlzLnBvcnRmb2xpbyA9IG5ldyBDZm5Qb3J0Zm9saW8odGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgZGlzcGxheU5hbWU6IHByb3BzLmRpc3BsYXlOYW1lLFxuICAgICAgcHJvdmlkZXJOYW1lOiBwcm9wcy5wcm92aWRlck5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBhY2NlcHRMYW5ndWFnZTogcHJvcHMubWVzc2FnZUxhbmd1YWdlLFxuICAgIH0pO1xuICAgIHRoaXMucG9ydGZvbGlvSWQgPSB0aGlzLnBvcnRmb2xpby5yZWY7XG4gICAgdGhpcy5wb3J0Zm9saW9Bcm4gPSBjZGsuU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6ICdzZXJ2aWNlY2F0YWxvZycsXG4gICAgICByZXNvdXJjZTogJ3BvcnRmb2xpbycsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMucG9ydGZvbGlvSWQsXG4gICAgfSk7XG4gICAgaWYgKHByb3BzLnRhZ09wdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5hc3NvY2lhdGVUYWdPcHRpb25zKHByb3BzLnRhZ09wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZW5lcmF0ZVVuaXF1ZUhhc2godmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGhhc2hWYWx1ZXMoY2RrLk5hbWVzLm5vZGVVbmlxdWVJZCh0aGlzLnBvcnRmb2xpby5ub2RlKSwgdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVBvcnRmb2xpb1Byb3BzKHByb3BzOiBQb3J0Zm9saW9Qcm9wcykge1xuICAgIElucHV0VmFsaWRhdG9yLnZhbGlkYXRlTGVuZ3RoKHRoaXMubm9kZS5wYXRoLCAncG9ydGZvbGlvIGRpc3BsYXkgbmFtZScsIDEsIDEwMCwgcHJvcHMuZGlzcGxheU5hbWUpO1xuICAgIElucHV0VmFsaWRhdG9yLnZhbGlkYXRlTGVuZ3RoKHRoaXMubm9kZS5wYXRoLCAncG9ydGZvbGlvIHByb3ZpZGVyIG5hbWUnLCAxLCA1MCwgcHJvcHMucHJvdmlkZXJOYW1lKTtcbiAgICBJbnB1dFZhbGlkYXRvci52YWxpZGF0ZUxlbmd0aCh0aGlzLm5vZGUucGF0aCwgJ3BvcnRmb2xpbyBkZXNjcmlwdGlvbicsIDAsIDIwMDAsIHByb3BzLmRlc2NyaXB0aW9uKTtcbiAgfVxufVxuIl19 |
import * as iam from '@aws-cdk/aws-iam'; | ||
import * as sns from '@aws-cdk/aws-sns'; | ||
import * as cdk from '@aws-cdk/core'; | ||
import { CloudFormationRuleConstraintOptions, CommonConstraintOptions, StackSetsConstraintOptions, TagUpdateConstraintOptions } from '../constraints'; | ||
@@ -19,3 +20,3 @@ import { IPortfolio } from '../portfolio'; | ||
static deployWithStackSets(portfolio: IPortfolio, product: IProduct, options: StackSetsConstraintOptions): void; | ||
static associateTagOptions(portfolio: IPortfolio, tagOptions: TagOptions): void; | ||
static associateTagOptions(resource: cdk.IResource, resourceId: string, tagOptions: TagOptions): void; | ||
private static setLaunchRoleConstraint; | ||
@@ -22,0 +23,0 @@ private static stackSetConstraintLogicalId; |
@@ -116,13 +116,13 @@ "use strict"; | ||
} | ||
static associateTagOptions(portfolio, tagOptions) { | ||
const portfolioStack = cdk.Stack.of(portfolio); | ||
static associateTagOptions(resource, resourceId, tagOptions) { | ||
const resourceStack = cdk.Stack.of(resource); | ||
for (const [key, tagOptionsList] of Object.entries(tagOptions.tagOptionsMap)) { | ||
validation_1.InputValidator.validateLength(portfolio.node.addr, 'TagOption key', 1, 128, key); | ||
validation_1.InputValidator.validateLength(resource.node.addr, 'TagOption key', 1, 128, key); | ||
tagOptionsList.forEach((value) => { | ||
validation_1.InputValidator.validateLength(portfolio.node.addr, 'TagOption value', 1, 256, value); | ||
const tagOptionKey = util_1.hashValues(key, value, portfolioStack.node.addr); | ||
validation_1.InputValidator.validateLength(resource.node.addr, 'TagOption value', 1, 256, value); | ||
const tagOptionKey = util_1.hashValues(key, value, resourceStack.node.addr); | ||
const tagOptionConstructId = `TagOption${tagOptionKey}`; | ||
let cfnTagOption = portfolioStack.node.tryFindChild(tagOptionConstructId); | ||
let cfnTagOption = resourceStack.node.tryFindChild(tagOptionConstructId); | ||
if (!cfnTagOption) { | ||
cfnTagOption = new servicecatalog_generated_1.CfnTagOption(portfolioStack, tagOptionConstructId, { | ||
cfnTagOption = new servicecatalog_generated_1.CfnTagOption(resourceStack, tagOptionConstructId, { | ||
key: key, | ||
@@ -133,7 +133,7 @@ value: value, | ||
} | ||
const tagAssocationKey = util_1.hashValues(key, value, portfolio.node.addr); | ||
const tagAssocationKey = util_1.hashValues(key, value, resource.node.addr); | ||
const tagAssocationConstructId = `TagOptionAssociation${tagAssocationKey}`; | ||
if (!portfolio.node.tryFindChild(tagAssocationConstructId)) { | ||
new servicecatalog_generated_1.CfnTagOptionAssociation(portfolio, tagAssocationConstructId, { | ||
resourceId: portfolio.portfolioId, | ||
if (!resource.node.tryFindChild(tagAssocationConstructId)) { | ||
new servicecatalog_generated_1.CfnTagOptionAssociation(resource, tagAssocationConstructId, { | ||
resourceId: resourceId, | ||
tagOptionId: cfnTagOption.ref, | ||
@@ -198,2 +198,2 @@ }); | ||
exports.AssociationManager = AssociationManager; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb2NpYXRpb24tbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc29jaWF0aW9uLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEscUNBQXFDO0FBT3JDLDBFQUdxQztBQUVyQyxpQ0FBb0M7QUFDcEMsNkNBQThDO0FBRTlDLE1BQWEsa0JBQWtCO0lBQ3RCLE1BQU0sQ0FBQyw2QkFBNkIsQ0FDekMsU0FBcUIsRUFBRSxPQUFpQixFQUFFLE9BQTRDO1FBRXRGLDJCQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzdILE1BQU0sY0FBYyxHQUFHLGlCQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkcsTUFBTSxXQUFXLEdBQUcsOEJBQThCLGNBQWMsRUFBRSxDQUFDO1FBQ25FLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckUsTUFBTSxjQUFjLEdBQUcsbUJBQW1CO1lBQ3hDLENBQUMsQ0FBQyxtQkFBcUQ7WUFDdkQsQ0FBQyxDQUFDLElBQUkseURBQThCLENBQUMsU0FBb0MsRUFBRSxXQUFXLEVBQUU7Z0JBQ3RGLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztnQkFDbEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2FBQzdCLENBQUMsQ0FBQztRQUVMLE9BQU87WUFDTCxjQUFjLEVBQUUsY0FBYztZQUM5Qiw4QkFBOEIsRUFBRSxjQUFjO1NBQy9DLENBQUM7S0FD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Q0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQzFFO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7SUFFTyxNQUFNLENBQUMsZ0JBQWdCLENBQzdCLEtBQWdCLEVBQUUsVUFBb0M7UUFFdEQsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDMUQsbUJBQW1CLENBQUMsSUFBSSxDQUFFO2dCQUN4QixNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUN2QyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsV0FBVzthQUN6QyxDQUFDLENBQUM7WUFDSCxPQUFPLG1CQUFtQixDQUFDO1FBQzdCLENBQUMsRUFBRSxJQUFJLEtBQUssRUFBNkQsQ0FBQyxDQUFDO0tBQzVFO0lBQUEsQ0FBQztDQUNIO0FBcE5ELGdEQW9OQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGlhbSBmcm9tICdAYXdzLWNkay9hd3MtaWFtJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdAYXdzLWNkay9hd3Mtc25zJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdAYXdzLWNkay9jb3JlJztcbmltcG9ydCB7XG4gIENsb3VkRm9ybWF0aW9uUnVsZUNvbnN0cmFpbnRPcHRpb25zLCBDb21tb25Db25zdHJhaW50T3B0aW9ucywgU3RhY2tTZXRzQ29uc3RyYWludE9wdGlvbnMsXG4gIFRhZ1VwZGF0ZUNvbnN0cmFpbnRPcHRpb25zLCBUZW1wbGF0ZVJ1bGUsIFRlbXBsYXRlUnVsZUFzc2VydGlvbixcbn0gZnJvbSAnLi4vY29uc3RyYWludHMnO1xuaW1wb3J0IHsgSVBvcnRmb2xpbyB9IGZyb20gJy4uL3BvcnRmb2xpbyc7XG5pbXBvcnQgeyBJUHJvZHVjdCB9IGZyb20gJy4uL3Byb2R1Y3QnO1xuaW1wb3J0IHtcbiAgQ2ZuTGF1bmNoTm90aWZpY2F0aW9uQ29uc3RyYWludCwgQ2ZuTGF1bmNoUm9sZUNvbnN0cmFpbnQsIENmbkxhdW5jaFRlbXBsYXRlQ29uc3RyYWludCwgQ2ZuUG9ydGZvbGlvUHJvZHVjdEFzc29jaWF0aW9uLFxuICBDZm5SZXNvdXJjZVVwZGF0ZUNvbnN0cmFpbnQsIENmblN0YWNrU2V0Q29uc3RyYWludCwgQ2ZuVGFnT3B0aW9uLCBDZm5UYWdPcHRpb25Bc3NvY2lhdGlvbixcbn0gZnJvbSAnLi4vc2VydmljZWNhdGFsb2cuZ2VuZXJhdGVkJztcbmltcG9ydCB7IFRhZ09wdGlvbnMgfSBmcm9tICcuLi90YWctb3B0aW9ucyc7XG5pbXBvcnQgeyBoYXNoVmFsdWVzIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IElucHV0VmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0aW9uJztcblxuZXhwb3J0IGNsYXNzIEFzc29jaWF0aW9uTWFuYWdlciB7XG4gIHB1YmxpYyBzdGF0aWMgYXNzb2NpYXRlUHJvZHVjdFdpdGhQb3J0Zm9saW8oXG4gICAgcG9ydGZvbGlvOiBJUG9ydGZvbGlvLCBwcm9kdWN0OiBJUHJvZHVjdCwgb3B0aW9uczogQ29tbW9uQ29uc3RyYWludE9wdGlvbnMgfCB1bmRlZmluZWQsXG4gICk6IHsgYXNzb2NpYXRpb25LZXk6IHN0cmluZywgY2ZuUG9ydGZvbGlvUHJvZHVjdEFzc29jaWF0aW9uOiBDZm5Qb3J0Zm9saW9Qcm9kdWN0QXNzb2NpYXRpb24gfSB7XG4gICAgSW5wdXRWYWxpZGF0b3IudmFsaWRhdGVMZW5ndGgodGhpcy5wcmV0dHlQcmludEFzc29jaWF0aW9uKHBvcnRmb2xpbywgcHJvZHVjdCksICdkZXNjcmlwdGlvbicsIDAsIDIwMDAsIG9wdGlvbnM/LmRlc2NyaXB0aW9uKTtcbiAgICBjb25zdCBhc3NvY2lhdGlvbktleSA9IGhhc2hWYWx1ZXMocG9ydGZvbGlvLm5vZGUuYWRkciwgcHJvZHVjdC5ub2RlLmFkZHIsIHByb2R1Y3Quc3RhY2subm9kZS5hZGRyKTtcbiAgICBjb25zdCBjb25zdHJ1Y3RJZCA9IGBQb3J0Zm9saW9Qcm9kdWN0QXNzb2NpYXRpb24ke2Fzc29jaWF0aW9uS2V5fWA7XG4gICAgY29uc3QgZXhpc3RpbmdBc3NvY2lhdGlvbiA9IHBvcnRmb2xpby5ub2RlLnRyeUZpbmRDaGlsZChjb25zdHJ1Y3RJZCk7XG4gICAgY29uc3QgY2ZuQXNzb2NpYXRpb24gPSBleGlzdGluZ0Fzc29jaWF0aW9uXG4gICAgICA/IGV4aXN0aW5nQXNzb2NpYXRpb24gYXMgQ2ZuUG9ydGZvbGlvUHJvZHVjdEFzc29jaWF0aW9uXG4gICAgICA6IG5ldyBDZm5Qb3J0Zm9saW9Qcm9kdWN0QXNzb2NpYXRpb24ocG9ydGZvbGlvIGFzIHVua25vd24gYXMgY2RrLlJlc291cmNlLCBjb25zdHJ1Y3RJZCwge1xuICAgICAgICBwb3J0Zm9saW9JZDogcG9ydGZvbGlvLnBvcnRmb2xpb0lkLFxuICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3QucHJvZHVjdElkLFxuICAgICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXNzb2NpYXRpb25LZXk6IGFzc29jaWF0aW9uS2V5LFxuICAgICAgY2ZuUG9ydGZvbGlvUHJvZHVjdEFzc29jaWF0aW9uOiBjZm5Bc3NvY2lhdGlvbixcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb25zdHJhaW5UYWdVcGRhdGVzKHBvcnRmb2xpbzogSVBvcnRmb2xpbywgcHJvZHVjdDogSVByb2R1Y3QsIG9wdGlvbnM6IFRhZ1VwZGF0ZUNvbnN0cmFpbnRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmFzc29jaWF0ZVByb2R1Y3RXaXRoUG9ydGZvbGlvKHBvcnRmb2xpbywgcHJvZHVjdCwgb3B0aW9ucyk7XG4gICAgY29uc3QgY29uc3RydWN0SWQgPSBgUmVzb3VyY2VVcGRhdGVDb25zdHJhaW50JHthc3NvY2lhdGlvbi5hc3NvY2lhdGlvbktleX1gO1xuXG4gICAgaWYgKCFwb3J0Zm9saW8ubm9kZS50cnlGaW5kQ2hpbGQoY29uc3RydWN0SWQpKSB7XG4gICAgICBjb25zdCBjb25zdHJhaW50ID0gbmV3IENmblJlc291cmNlVXBkYXRlQ29uc3RyYWludChwb3J0Zm9saW8gYXMgdW5rbm93biBhcyBjZGsuUmVzb3VyY2UsIGNvbnN0cnVjdElkLCB7XG4gICAgICAgIGFjY2VwdExhbmd1YWdlOiBvcHRpb25zLm1lc3NhZ2VMYW5ndWFnZSxcbiAgICAgICAgZGVzY3JpcHRpb246IG9wdGlvbnMuZGVzY3JpcHRpb24sXG4gICAgICAgIHBvcnRmb2xpb0lkOiBwb3J0Zm9saW8ucG9ydGZvbGlvSWQsXG4gICAgICAgIHByb2R1Y3RJZDogcHJvZHVjdC5wcm9kdWN0SWQsXG4gICAgICAgIHRhZ1VwZGF0ZU9uUHJvdmlzaW9uZWRQcm9kdWN0OiBvcHRpb25zLmFsbG93ID09PSBmYWxzZSA/ICdOT1RfQUxMT1dFRCcgOiAnQUxMT1dFRCcsXG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIGRlcGVuZHNPbiB0byBmb3JjZSBwcm9wZXIgb3JkZXIgaW4gZGVwbG95bWVudC5cbiAgICAgIGNvbnN0cmFpbnQuYWRkRGVwZW5kc09uKGFzc29jaWF0aW9uLmNmblBvcnRmb2xpb1Byb2R1Y3RBc3NvY2lhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGhhdmUgbXVsdGlwbGUgdGFnIHVwZGF0ZSBjb25zdHJhaW50cyBmb3IgYXNzb2NpYXRpb24gJHt0aGlzLnByZXR0eVByaW50QXNzb2NpYXRpb24ocG9ydGZvbGlvLCBwcm9kdWN0KX1gKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG5vdGlmeU9uU3RhY2tFdmVudHMocG9ydGZvbGlvOiBJUG9ydGZvbGlvLCBwcm9kdWN0OiBJUHJvZHVjdCwgdG9waWM6IHNucy5JVG9waWMsIG9wdGlvbnM6IENvbW1vbkNvbnN0cmFpbnRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmFzc29jaWF0ZVByb2R1Y3RXaXRoUG9ydGZvbGlvKHBvcnRmb2xpbywgcHJvZHVjdCwgb3B0aW9ucyk7XG4gICAgY29uc3QgY29uc3RydWN0SWQgPSBgTGF1bmNoTm90aWZpY2F0aW9uQ29uc3RyYWludCR7aGFzaFZhbHVlcyh0b3BpYy5ub2RlLmFkZHIsIHRvcGljLnN0YWNrLm5vZGUuYWRkciwgYXNzb2NpYXRpb24uYXNzb2NpYXRpb25LZXkpfWA7XG5cbiAgICBpZiAoIXBvcnRmb2xpby5ub2RlLnRyeUZpbmRDaGlsZChjb25zdHJ1Y3RJZCkpIHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSBuZXcgQ2ZuTGF1bmNoTm90aWZpY2F0aW9uQ29uc3RyYWludChwb3J0Zm9saW8gYXMgdW5rbm93biBhcyBjZGsuUmVzb3VyY2UsIGNvbnN0cnVjdElkLCB7XG4gICAgICAgIGFjY2VwdExhbmd1YWdlOiBvcHRpb25zLm1lc3NhZ2VMYW5ndWFnZSxcbiAgICAgICAgZGVzY3JpcHRpb246IG9wdGlvbnMuZGVzY3JpcHRpb24sXG4gICAgICAgIHBvcnRmb2xpb0lkOiBwb3J0Zm9saW8ucG9ydGZvbGlvSWQsXG4gICAgICAgIHByb2R1Y3RJZDogcHJvZHVjdC5wcm9kdWN0SWQsXG4gICAgICAgIG5vdGlmaWNhdGlvbkFybnM6IFt0b3BpYy50b3BpY0Fybl0sXG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIGRlcGVuZHNPbiB0byBmb3JjZSBwcm9wZXIgb3JkZXIgaW4gZGVwbG95bWVudC5cbiAgICAgIGNvbnN0cmFpbnQuYWRkRGVwZW5kc09uKGFzc29jaWF0aW9uLmNmblBvcnRmb2xpb1Byb2R1Y3RBc3NvY2lhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVG9waWMgJHt0b3BpYy5ub2RlLnBhdGh9IGlzIGFscmVhZHkgc3Vic2NyaWJlZCB0byBhc3NvY2lhdGlvbiAke3RoaXMucHJldHR5UHJpbnRBc3NvY2lhdGlvbihwb3J0Zm9saW8sIHByb2R1Y3QpfWApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29uc3RyYWluQ2xvdWRGb3JtYXRpb25QYXJhbWV0ZXJzKFxuICAgIHBvcnRmb2xpbzogSVBvcnRmb2xpbywgcHJvZHVjdDogSVByb2R1Y3QsXG4gICAgb3B0aW9uczogQ2xvdWRGb3JtYXRpb25SdWxlQ29uc3RyYWludE9wdGlvbnMsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5hc3NvY2lhdGVQcm9kdWN0V2l0aFBvcnRmb2xpbyhwb3J0Zm9saW8sIHByb2R1Y3QsIG9wdGlvbnMpO1xuICAgIGNvbnN0IGNvbnN0cnVjdElkID0gYExhdW5jaFRlbXBsYXRlQ29uc3RyYWludCR7aGFzaFZhbHVlcyhhc3NvY2lhdGlvbi5hc3NvY2lhdGlvbktleSwgb3B0aW9ucy5ydWxlLnJ1bGVOYW1lKX1gO1xuXG4gICAgaWYgKCFwb3J0Zm9saW8ubm9kZS50cnlGaW5kQ2hpbGQoY29uc3RydWN0SWQpKSB7XG4gICAgICBjb25zdCBjb25zdHJhaW50ID0gbmV3IENmbkxhdW5jaFRlbXBsYXRlQ29uc3RyYWludChwb3J0Zm9saW8gYXMgdW5rbm93biBhcyBjZGsuUmVzb3VyY2UsIGNvbnN0cnVjdElkLCB7XG4gICAgICAgIGFjY2VwdExhbmd1YWdlOiBvcHRpb25zLm1lc3NhZ2VMYW5ndWFnZSxcbiAgICAgICAgZGVzY3JpcHRpb246IG9wdGlvbnMuZGVzY3JpcHRpb24sXG4gICAgICAgIHBvcnRmb2xpb0lkOiBwb3J0Zm9saW8ucG9ydGZvbGlvSWQsXG4gICAgICAgIHByb2R1Y3RJZDogcHJvZHVjdC5wcm9kdWN0SWQsXG4gICAgICAgIHJ1bGVzOiB0aGlzLmZvcm1hdFRlbXBsYXRlUnVsZShwb3J0Zm9saW8uc3RhY2ssIG9wdGlvbnMucnVsZSksXG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIGRlcGVuZHNPbiB0byBmb3JjZSBwcm9wZXIgb3JkZXIgaW4gZGVwbG95bWVudC5cbiAgICAgIGNvbnN0cmFpbnQuYWRkRGVwZW5kc09uKGFzc29jaWF0aW9uLmNmblBvcnRmb2xpb1Byb2R1Y3RBc3NvY2lhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvdmlzaW9uaW5nIHJ1bGUgJHtvcHRpb25zLnJ1bGUucnVsZU5hbWV9IGFscmVhZHkgY29uZmlndXJlZCBvbiBhc3NvY2lhdGlvbiAke3RoaXMucHJldHR5UHJpbnRBc3NvY2lhdGlvbihwb3J0Zm9saW8sIHByb2R1Y3QpfWApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0TGF1bmNoUm9sZShwb3J0Zm9saW86IElQb3J0Zm9saW8sIHByb2R1Y3Q6IElQcm9kdWN0LCBsYXVuY2hSb2xlOiBpYW0uSVJvbGUsIG9wdGlvbnM6IENvbW1vbkNvbnN0cmFpbnRPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5zZXRMYXVuY2hSb2xlQ29uc3RyYWludChwb3J0Zm9saW8sIHByb2R1Y3QsIG9wdGlvbnMsIHtcbiAgICAgIHJvbGVBcm46IGxhdW5jaFJvbGUucm9sZUFybixcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0TG9jYWxMYXVuY2hSb2xlTmFtZShwb3J0Zm9saW86IElQb3J0Zm9saW8sIHByb2R1Y3Q6IElQcm9kdWN0LCBsYXVuY2hSb2xlTmFtZTogc3RyaW5nLCBvcHRpb25zOiBDb21tb25Db25zdHJhaW50T3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuc2V0TGF1bmNoUm9sZUNvbnN0cmFpbnQocG9ydGZvbGlvLCBwcm9kdWN0LCBvcHRpb25zLCB7XG4gICAgICBsb2NhbFJvbGVOYW1lOiBsYXVuY2hSb2xlTmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZGVwbG95V2l0aFN0YWNrU2V0cyhwb3J0Zm9saW86IElQb3J0Zm9saW8sIHByb2R1Y3Q6IElQcm9kdWN0LCBvcHRpb25zOiBTdGFja1NldHNDb25zdHJhaW50T3B0aW9ucykge1xuICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5hc3NvY2lhdGVQcm9kdWN0V2l0aFBvcnRmb2xpbyhwb3J0Zm9saW8sIHByb2R1Y3QsIG9wdGlvbnMpO1xuICAgIC8vIENoZWNrIGlmIGEgbGF1bmNoIHJvbGUgaGFzIGFscmVhZHkgYmVlbiBzZXQuXG4gICAgaWYgKHBvcnRmb2xpby5ub2RlLnRyeUZpbmRDaGlsZCh0aGlzLmxhdW5jaFJvbGVDb25zdHJhaW50TG9naWNhbElkKGFzc29jaWF0aW9uLmFzc29jaWF0aW9uS2V5KSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvbmZpZ3VyZSBTdGFja1NldCBkZXBsb3ltZW50IHdoZW4gYSBsYXVuY2ggcm9sZSBpcyBhbHJlYWR5IGRlZmluZWQgZm9yIGFzc29jaWF0aW9uICR7dGhpcy5wcmV0dHlQcmludEFzc29jaWF0aW9uKHBvcnRmb2xpbywgcHJvZHVjdCl9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uc3RydWN0SWQgPSB0aGlzLnN0YWNrU2V0Q29uc3RyYWludExvZ2ljYWxJZChhc3NvY2lhdGlvbi5hc3NvY2lhdGlvbktleSk7XG4gICAgaWYgKCFwb3J0Zm9saW8ubm9kZS50cnlGaW5kQ2hpbGQoY29uc3RydWN0SWQpKSB7XG4gICAgICBjb25zdCBjb25zdHJhaW50ID0gbmV3IENmblN0YWNrU2V0Q29uc3RyYWludChwb3J0Zm9saW8gYXMgdW5rbm93biBhcyBjZGsuUmVzb3VyY2UsIGNvbnN0cnVjdElkLCB7XG4gICAgICAgIGFjY2VwdExhbmd1YWdlOiBvcHRpb25zLm1lc3NhZ2VMYW5ndWFnZSxcbiAgICAgICAgZGVzY3JpcHRpb246IG9wdGlvbnMuZGVzY3JpcHRpb24gPz8gJycsXG4gICAgICAgIHBvcnRmb2xpb0lkOiBwb3J0Zm9saW8ucG9ydGZvbGlvSWQsXG4gICAgICAgIHByb2R1Y3RJZDogcHJvZHVjdC5wcm9kdWN0SWQsXG4gICAgICAgIGFjY291bnRMaXN0OiBvcHRpb25zLmFjY291bnRzLFxuICAgICAgICByZWdpb25MaXN0OiBvcHRpb25zLnJlZ2lvbnMsXG4gICAgICAgIGFkbWluUm9sZTogb3B0aW9ucy5hZG1pblJvbGUucm9sZUFybixcbiAgICAgICAgZXhlY3V0aW9uUm9sZTogb3B0aW9ucy5leGVjdXRpb25Sb2xlTmFtZSxcbiAgICAgICAgc3RhY2tJbnN0YW5jZUNvbnRyb2w6IG9wdGlvbnMuYWxsb3dTdGFja1NldEluc3RhbmNlT3BlcmF0aW9ucyA/ICdBTExPV0VEJyA6ICdOT1RfQUxMT1dFRCcsXG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIGRlcGVuZHNPbiB0byBmb3JjZSBwcm9wZXIgb3JkZXIgaW4gZGVwbG95bWVudC5cbiAgICAgIGNvbnN0cmFpbnQuYWRkRGVwZW5kc09uKGFzc29jaWF0aW9uLmNmblBvcnRmb2xpb1Byb2R1Y3RBc3NvY2lhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvbmZpZ3VyZSBtdWx0aXBsZSBTdGFja1NldCBkZXBsb3ltZW50IGNvbnN0cmFpbnRzIGZvciBhc3NvY2lhdGlvbiAke3RoaXMucHJldHR5UHJpbnRBc3NvY2lhdGlvbihwb3J0Zm9saW8sIHByb2R1Y3QpfWApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXNzb2NpYXRlVGFnT3B0aW9ucyhwb3J0Zm9saW86IElQb3J0Zm9saW8sIHRhZ09wdGlvbnM6IFRhZ09wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBwb3J0Zm9saW9TdGFjayA9IGNkay5TdGFjay5vZihwb3J0Zm9saW8pO1xuICAgIGZvciAoY29uc3QgW2tleSwgdGFnT3B0aW9uc0xpc3RdIG9mIE9iamVjdC5lbnRyaWVzKHRhZ09wdGlvbnMudGFnT3B0aW9uc01hcCkpIHtcbiAgICAgIElucHV0VmFsaWRhdG9yLnZhbGlkYXRlTGVuZ3RoKHBvcnRmb2xpby5ub2RlLmFkZHIsICdUYWdPcHRpb24ga2V5JywgMSwgMTI4LCBrZXkpO1xuICAgICAgdGFnT3B0aW9uc0xpc3QuZm9yRWFjaCgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICBJbnB1dFZhbGlkYXRvci52YWxpZGF0ZUxlbmd0aChwb3J0Zm9saW8ubm9kZS5hZGRyLCAnVGFnT3B0aW9uIHZhbHVlJywgMSwgMjU2LCB2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHRhZ09wdGlvbktleSA9IGhhc2hWYWx1ZXMoa2V5LCB2YWx1ZSwgcG9ydGZvbGlvU3RhY2subm9kZS5hZGRyKTtcbiAgICAgICAgY29uc3QgdGFnT3B0aW9uQ29uc3RydWN0SWQgPSBgVGFnT3B0aW9uJHt0YWdPcHRpb25LZXl9YDtcbiAgICAgICAgbGV0IGNmblRhZ09wdGlvbiA9IHBvcnRmb2xpb1N0YWNrLm5vZGUudHJ5RmluZENoaWxkKHRhZ09wdGlvbkNvbnN0cnVjdElkKSBhcyBDZm5UYWdPcHRpb247XG4gICAgICAgIGlmICghY2ZuVGFnT3B0aW9uKSB7XG4gICAgICAgICAgY2ZuVGFnT3B0aW9uID0gbmV3IENmblRhZ09wdGlvbihwb3J0Zm9saW9TdGFjaywgdGFnT3B0aW9uQ29uc3RydWN0SWQsIHtcbiAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhZ0Fzc29jYXRpb25LZXkgPSBoYXNoVmFsdWVzKGtleSwgdmFsdWUsIHBvcnRmb2xpby5ub2RlLmFkZHIpO1xuICAgICAgICBjb25zdCB0YWdBc3NvY2F0aW9uQ29uc3RydWN0SWQgPSBgVGFnT3B0aW9uQXNzb2NpYXRpb24ke3RhZ0Fzc29jYXRpb25LZXl9YDtcbiAgICAgICAgaWYgKCFwb3J0Zm9saW8ubm9kZS50cnlGaW5kQ2hpbGQodGFnQXNzb2NhdGlvbkNvbnN0cnVjdElkKSkge1xuICAgICAgICAgIG5ldyBDZm5UYWdPcHRpb25Bc3NvY2lhdGlvbihwb3J0Zm9saW8gYXMgdW5rbm93biBhcyBjZGsuUmVzb3VyY2UsIHRhZ0Fzc29jYXRpb25Db25zdHJ1Y3RJZCwge1xuICAgICAgICAgICAgcmVzb3VyY2VJZDogcG9ydGZvbGlvLnBvcnRmb2xpb0lkLFxuICAgICAgICAgICAgdGFnT3B0aW9uSWQ6IGNmblRhZ09wdGlvbi5yZWYsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzZXRMYXVuY2hSb2xlQ29uc3RyYWludChcbiAgICBwb3J0Zm9saW86IElQb3J0Zm9saW8sIHByb2R1Y3Q6IElQcm9kdWN0LCBvcHRpb25zOiBDb21tb25Db25zdHJhaW50T3B0aW9ucyxcbiAgICByb2xlT3B0aW9uczogTGF1bmNoUm9sZUNvbnN0cmFpbnRSb2xlT3B0aW9ucyxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmFzc29jaWF0ZVByb2R1Y3RXaXRoUG9ydGZvbGlvKHBvcnRmb2xpbywgcHJvZHVjdCwgb3B0aW9ucyk7XG4gICAgLy8gQ2hlY2sgaWYgYSBzdGFja3NldCBkZXBsb3ltZW50IGNvbnN0cmFpbnQgaGFzIGFscmVhZHkgYmVlbiBjb25maWd1cmVkLlxuICAgIGlmIChwb3J0Zm9saW8ubm9kZS50cnlGaW5kQ2hpbGQodGhpcy5zdGFja1NldENvbnN0cmFpbnRMb2dpY2FsSWQoYXNzb2NpYXRpb24uYXNzb2NpYXRpb25LZXkpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0IGxhdW5jaCByb2xlIHdoZW4gYSBTdGFja1NldCBydWxlIGlzIGFscmVhZHkgZGVmaW5lZCBmb3IgYXNzb2NpYXRpb24gJHt0aGlzLnByZXR0eVByaW50QXNzb2NpYXRpb24ocG9ydGZvbGlvLCBwcm9kdWN0KX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25zdHJ1Y3RJZCA9IHRoaXMubGF1bmNoUm9sZUNvbnN0cmFpbnRMb2dpY2FsSWQoYXNzb2NpYXRpb24uYXNzb2NpYXRpb25LZXkpO1xuICAgIGlmICghcG9ydGZvbGlvLm5vZGUudHJ5RmluZENoaWxkKGNvbnN0cnVjdElkKSkge1xuICAgICAgY29uc3QgY29uc3RyYWludCA9IG5ldyBDZm5MYXVuY2hSb2xlQ29uc3RyYWludChwb3J0Zm9saW8gYXMgdW5rbm93biBhcyBjZGsuUmVzb3VyY2UsIGNvbnN0cnVjdElkLCB7XG4gICAgICAgIGFjY2VwdExhbmd1YWdlOiBvcHRpb25zLm1lc3NhZ2VMYW5ndWFnZSxcbiAgICAgICAgZGVzY3JpcHRpb246IG9wdGlvbnMuZGVzY3JpcHRpb24sXG4gICAgICAgIHBvcnRmb2xpb0lkOiBwb3J0Zm9saW8ucG9ydGZvbGlvSWQsXG4gICAgICAgIHByb2R1Y3RJZDogcHJvZHVjdC5wcm9kdWN0SWQsXG4gICAgICAgIHJvbGVBcm46IHJvbGVPcHRpb25zLnJvbGVBcm4sXG4gICAgICAgIGxvY2FsUm9sZU5hbWU6IHJvbGVPcHRpb25zLmxvY2FsUm9sZU5hbWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIGRlcGVuZHNPbiB0byBmb3JjZSBwcm9wZXIgb3JkZXIgaW4gZGVwbG95bWVudC5cbiAgICAgIGNvbnN0cmFpbnQuYWRkRGVwZW5kc09uKGFzc29jaWF0aW9uLmNmblBvcnRmb2xpb1Byb2R1Y3RBc3NvY2lhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNldCBtdWx0aXBsZSBsYXVuY2ggcm9sZXMgZm9yIGFzc29jaWF0aW9uICR7dGhpcy5wcmV0dHlQcmludEFzc29jaWF0aW9uKHBvcnRmb2xpbywgcHJvZHVjdCl9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgc3RhY2tTZXRDb25zdHJhaW50TG9naWNhbElkKGFzc29jaWF0aW9uS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgU3RhY2tTZXRDb25zdHJhaW50JHthc3NvY2lhdGlvbktleX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbGF1bmNoUm9sZUNvbnN0cmFpbnRMb2dpY2FsSWQoYXNzb2NpYXRpb25LZXk6c3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYExhdW5jaFJvbGVDb25zdHJhaW50JHthc3NvY2lhdGlvbktleX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcHJldHR5UHJpbnRBc3NvY2lhdGlvbihwb3J0Zm9saW86IElQb3J0Zm9saW8sIHByb2R1Y3Q6IElQcm9kdWN0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYC0gUG9ydGZvbGlvOiAke3BvcnRmb2xpby5ub2RlLnBhdGh9IHwgUHJvZHVjdDogJHtwcm9kdWN0Lm5vZGUucGF0aH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZm9ybWF0VGVtcGxhdGVSdWxlKHN0YWNrOiBjZGsuU3RhY2ssIHJ1bGU6IFRlbXBsYXRlUnVsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIFtydWxlLnJ1bGVOYW1lXToge1xuICAgICAgICBBc3NlcnRpb25zOiB0aGlzLmZvcm1hdEFzc2VydGlvbnMoc3RhY2ssIHJ1bGUuYXNzZXJ0aW9ucyksXG4gICAgICAgIFJ1bGVDb25kaXRpb246IHJ1bGUuY29uZGl0aW9uID8gc3RhY2sucmVzb2x2ZShydWxlLmNvbmRpdGlvbikgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZm9ybWF0QXNzZXJ0aW9ucyhcbiAgICBzdGFjazogY2RrLlN0YWNrLCBhc3NlcnRpb25zIDogVGVtcGxhdGVSdWxlQXNzZXJ0aW9uW10sXG4gICk6IHsgQXNzZXJ0OiBzdHJpbmcsIEFzc2VydERlc2NyaXB0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgfVtdIHtcbiAgICByZXR1cm4gYXNzZXJ0aW9ucy5yZWR1Y2UoKGZvcm1hdHRlZEFzc2VydGlvbnMsIGFzc2VydGlvbikgPT4ge1xuICAgICAgZm9ybWF0dGVkQXNzZXJ0aW9ucy5wdXNoKCB7XG4gICAgICAgIEFzc2VydDogc3RhY2sucmVzb2x2ZShhc3NlcnRpb24uYXNzZXJ0KSxcbiAgICAgICAgQXNzZXJ0RGVzY3JpcHRpb246IGFzc2VydGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZvcm1hdHRlZEFzc2VydGlvbnM7XG4gICAgfSwgbmV3IEFycmF5PHsgQXNzZXJ0OiBzdHJpbmcsIEFzc2VydERlc2NyaXB0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgfT4oKSk7XG4gIH07XG59XG5cbmludGVyZmFjZSBMYXVuY2hSb2xlQXJuT3B0aW9uIHtcbiAgcmVhZG9ubHkgcm9sZUFybjogc3RyaW5nLFxuICByZWFkb25seSBsb2NhbFJvbGVOYW1lPzogbmV2ZXIsXG59XG5cbmludGVyZmFjZSBMYXVuY2hSb2xlTmFtZU9wdGlvbiB7XG4gIHJlYWRvbmx5IGxvY2FsUm9sZU5hbWU6IHN0cmluZyxcbiAgcmVhZG9ubHkgcm9sZUFybj86IG5ldmVyLFxufVxuXG50eXBlIExhdW5jaFJvbGVDb25zdHJhaW50Um9sZU9wdGlvbnMgPSBMYXVuY2hSb2xlQXJuT3B0aW9uIHwgTGF1bmNoUm9sZU5hbWVPcHRpb247XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb2NpYXRpb24tbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc29jaWF0aW9uLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEscUNBQXFDO0FBT3JDLDBFQUdxQztBQUVyQyxpQ0FBb0M7QUFDcEMsNkNBQThDO0FBRTlDLE1BQWEsa0JBQWtCO0lBQ3RCLE1BQU0sQ0FBQyw2QkFBNkIsQ0FDekMsU0FBcUIsRUFBRSxPQUFpQixFQUFFLE9BQTRDO1FBRXRGLDJCQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzdILE1BQU0sY0FBYyxHQUFHLGlCQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkcsTUFBTSxXQUFXLEdBQUcsOEJBQThCLGNBQWMsRUFBRSxDQUFDO1FBQ25FLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckUsTUFBTSxjQUFjLEdBQUcsbUJBQW1CO1lBQ3hDLENBQUMsQ0FBQyxtQkFBcUQ7WUFDdkQsQ0FBQyxDQUFDLElBQUkseURBQThCLENBQUMsU0FBb0MsRUFBRSxXQUFXLEVBQUU7Z0JBQ3RGLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztnQkFDbEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2FBQzdCLENBQUMsQ0FBQztRQUVMLE9BQU87WUFDTCxjQUFjLEVBQUUsY0FBYztZQUM5Qiw4QkFBOEIsRUFBRSxjQUFjO1NBQy9DLENBQUM7S0FD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LENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUMxRTtTQUNGLENBQUMsQ0FBQztLQUNKO0lBRU8sTUFBTSxDQUFDLGdCQUFnQixDQUM3QixLQUFnQixFQUFFLFVBQW9DO1FBRXRELE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQzFELG1CQUFtQixDQUFDLElBQUksQ0FBRTtnQkFDeEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDdkMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLFdBQVc7YUFDekMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxtQkFBbUIsQ0FBQztRQUM3QixDQUFDLEVBQUUsSUFBSSxLQUFLLEVBQTZELENBQUMsQ0FBQztLQUM1RTtJQUFBLENBQUM7Q0FDSDtBQXJORCxnREFxTkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpYW0gZnJvbSAnQGF3cy1jZGsvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnQGF3cy1jZGsvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQge1xuICBDbG91ZEZvcm1hdGlvblJ1bGVDb25zdHJhaW50T3B0aW9ucywgQ29tbW9uQ29uc3RyYWludE9wdGlvbnMsIFN0YWNrU2V0c0NvbnN0cmFpbnRPcHRpb25zLFxuICBUYWdVcGRhdGVDb25zdHJhaW50T3B0aW9ucywgVGVtcGxhdGVSdWxlLCBUZW1wbGF0ZVJ1bGVBc3NlcnRpb24sXG59IGZyb20gJy4uL2NvbnN0cmFpbnRzJztcbmltcG9ydCB7IElQb3J0Zm9saW8gfSBmcm9tICcuLi9wb3J0Zm9saW8nO1xuaW1wb3J0IHsgSVByb2R1Y3QgfSBmcm9tICcuLi9wcm9kdWN0JztcbmltcG9ydCB7XG4gIENmbkxhdW5jaE5vdGlmaWNhdGlvbkNvbnN0cmFpbnQsIENmbkxhdW5jaFJvbGVDb25zdHJhaW50LCBDZm5MYXVuY2hUZW1wbGF0ZUNvbnN0cmFpbnQsIENmblBvcnRmb2xpb1Byb2R1Y3RBc3NvY2lhdGlvbixcbiAgQ2ZuUmVzb3VyY2VVcGRhdGVDb25zdHJhaW50LCBDZm5TdGFja1NldENvbnN0cmFpbnQsIENmblRhZ09wdGlvbiwgQ2ZuVGFnT3B0aW9uQXNzb2NpYXRpb24sXG59IGZyb20gJy4uL3NlcnZpY2VjYXRhbG9nLmdlbmVyYXRlZCc7XG5pbXBvcnQgeyBUYWdPcHRpb25zIH0gZnJvbSAnLi4vdGFnLW9wdGlvbnMnO1xuaW1wb3J0IHsgaGFzaFZhbHVlcyB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBJbnB1dFZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBBc3NvY2lhdGlvbk1hbmFnZXIge1xuICBwdWJsaWMgc3RhdGljIGFzc29jaWF0ZVByb2R1Y3RXaXRoUG9ydGZvbGlvKFxuICAgIHBvcnRmb2xpbzogSVBvcnRmb2xpbywgcHJvZHVjdDogSVByb2R1Y3QsIG9wdGlvbnM6IENvbW1vbkNvbnN0cmFpbnRPcHRpb25zIHwgdW5kZWZpbmVkLFxuICApOiB7IGFzc29jaWF0aW9uS2V5OiBzdHJpbmcsIGNmblBvcnRmb2xpb1Byb2R1Y3RBc3NvY2lhdGlvbjogQ2ZuUG9ydGZvbGlvUHJvZHVjdEFzc29jaWF0aW9uIH0ge1xuICAgIElucHV0VmFsaWRhdG9yLnZhbGlkYXRlTGVuZ3RoKHRoaXMucHJldHR5UHJpbnRBc3NvY2lhdGlvbihwb3J0Zm9saW8sIHByb2R1Y3QpLCAnZGVzY3JpcHRpb24nLCAwLCAyMDAwLCBvcHRpb25zPy5kZXNjcmlwdGlvbik7XG4gICAgY29uc3QgYXNzb2NpYXRpb25LZXkgPSBoYXNoVmFsdWVzKHBvcnRmb2xpby5ub2RlLmFkZHIsIHByb2R1Y3Qubm9kZS5hZGRyLCBwcm9kdWN0LnN0YWNrLm5vZGUuYWRkcik7XG4gICAgY29uc3QgY29uc3RydWN0SWQgPSBgUG9ydGZvbGlvUHJvZHVjdEFzc29jaWF0aW9uJHthc3NvY2lhdGlvbktleX1gO1xuICAgIGNvbnN0IGV4aXN0aW5nQXNzb2NpYXRpb24gPSBwb3J0Zm9saW8ubm9kZS50cnlGaW5kQ2hpbGQoY29uc3RydWN0SWQpO1xuICAgIGNvbnN0IGNmbkFzc29jaWF0aW9uID0gZXhpc3RpbmdBc3NvY2lhdGlvblxuICAgICAgPyBleGlzdGluZ0Fzc29jaWF0aW9uIGFzIENmblBvcnRmb2xpb1Byb2R1Y3RBc3NvY2lhdGlvblxuICAgICAgOiBuZXcgQ2ZuUG9ydGZvbGlvUHJvZHVjdEFzc29jaWF0aW9uKHBvcnRmb2xpbyBhcyB1bmtub3duIGFzIGNkay5SZXNvdXJjZSwgY29uc3RydWN0SWQsIHtcbiAgICAgICAgcG9ydGZvbGlvSWQ6IHBvcnRmb2xpby5wb3J0Zm9saW9JZCxcbiAgICAgICAgcHJvZHVjdElkOiBwcm9kdWN0LnByb2R1Y3RJZCxcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzc29jaWF0aW9uS2V5OiBhc3NvY2lhdGlvbktleSxcbiAgICAgIGNmblBvcnRmb2xpb1Byb2R1Y3RBc3NvY2lhdGlvbjogY2ZuQXNzb2NpYXRpb24sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29uc3RyYWluVGFnVXBkYXRlcyhwb3J0Zm9saW86IElQb3J0Zm9saW8sIHByb2R1Y3Q6IElQcm9kdWN0LCBvcHRpb25zOiBUYWdVcGRhdGVDb25zdHJhaW50T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5hc3NvY2lhdGVQcm9kdWN0V2l0aFBvcnRmb2xpbyhwb3J0Zm9saW8sIHByb2R1Y3QsIG9wdGlvbnMpO1xuICAgIGNvbnN0IGNvbnN0cnVjdElkID0gYFJlc291cmNlVXBkYXRlQ29uc3RyYWludCR7YXNzb2NpYXRpb24uYXNzb2NpYXRpb25LZXl9YDtcblxuICAgIGlmICghcG9ydGZvbGlvLm5vZGUudHJ5RmluZENoaWxkKGNvbnN0cnVjdElkKSkge1xuICAgICAgY29uc3QgY29uc3RyYWludCA9IG5ldyBDZm5SZXNvdXJjZVVwZGF0ZUNvbnN0cmFpbnQocG9ydGZvbGlvIGFzIHVua25vd24gYXMgY2RrLlJlc291cmNlLCBjb25zdHJ1Y3RJZCwge1xuICAgICAgICBhY2NlcHRMYW5ndWFnZTogb3B0aW9ucy5tZXNzYWdlTGFuZ3VhZ2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgICBwb3J0Zm9saW9JZDogcG9ydGZvbGlvLnBvcnRmb2xpb0lkLFxuICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3QucHJvZHVjdElkLFxuICAgICAgICB0YWdVcGRhdGVPblByb3Zpc2lvbmVkUHJvZHVjdDogb3B0aW9ucy5hbGxvdyA9PT0gZmFsc2UgPyAnTk9UX0FMTE9XRUQnIDogJ0FMTE9XRUQnLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEFkZCBkZXBlbmRzT24gdG8gZm9yY2UgcHJvcGVyIG9yZGVyIGluIGRlcGxveW1lbnQuXG4gICAgICBjb25zdHJhaW50LmFkZERlcGVuZHNPbihhc3NvY2lhdGlvbi5jZm5Qb3J0Zm9saW9Qcm9kdWN0QXNzb2NpYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBoYXZlIG11bHRpcGxlIHRhZyB1cGRhdGUgY29uc3RyYWludHMgZm9yIGFzc29jaWF0aW9uICR7dGhpcy5wcmV0dHlQcmludEFzc29jaWF0aW9uKHBvcnRmb2xpbywgcHJvZHVjdCl9YCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBub3RpZnlPblN0YWNrRXZlbnRzKHBvcnRmb2xpbzogSVBvcnRmb2xpbywgcHJvZHVjdDogSVByb2R1Y3QsIHRvcGljOiBzbnMuSVRvcGljLCBvcHRpb25zOiBDb21tb25Db25zdHJhaW50T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5hc3NvY2lhdGVQcm9kdWN0V2l0aFBvcnRmb2xpbyhwb3J0Zm9saW8sIHByb2R1Y3QsIG9wdGlvbnMpO1xuICAgIGNvbnN0IGNvbnN0cnVjdElkID0gYExhdW5jaE5vdGlmaWNhdGlvbkNvbnN0cmFpbnQke2hhc2hWYWx1ZXModG9waWMubm9kZS5hZGRyLCB0b3BpYy5zdGFjay5ub2RlLmFkZHIsIGFzc29jaWF0aW9uLmFzc29jaWF0aW9uS2V5KX1gO1xuXG4gICAgaWYgKCFwb3J0Zm9saW8ubm9kZS50cnlGaW5kQ2hpbGQoY29uc3RydWN0SWQpKSB7XG4gICAgICBjb25zdCBjb25zdHJhaW50ID0gbmV3IENmbkxhdW5jaE5vdGlmaWNhdGlvbkNvbnN0cmFpbnQocG9ydGZvbGlvIGFzIHVua25vd24gYXMgY2RrLlJlc291cmNlLCBjb25zdHJ1Y3RJZCwge1xuICAgICAgICBhY2NlcHRMYW5ndWFnZTogb3B0aW9ucy5tZXNzYWdlTGFuZ3VhZ2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgICBwb3J0Zm9saW9JZDogcG9ydGZvbGlvLnBvcnRmb2xpb0lkLFxuICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3QucHJvZHVjdElkLFxuICAgICAgICBub3RpZmljYXRpb25Bcm5zOiBbdG9waWMudG9waWNBcm5dLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEFkZCBkZXBlbmRzT24gdG8gZm9yY2UgcHJvcGVyIG9yZGVyIGluIGRlcGxveW1lbnQuXG4gICAgICBjb25zdHJhaW50LmFkZERlcGVuZHNPbihhc3NvY2lhdGlvbi5jZm5Qb3J0Zm9saW9Qcm9kdWN0QXNzb2NpYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRvcGljICR7dG9waWMubm9kZS5wYXRofSBpcyBhbHJlYWR5IHN1YnNjcmliZWQgdG8gYXNzb2NpYXRpb24gJHt0aGlzLnByZXR0eVByaW50QXNzb2NpYXRpb24ocG9ydGZvbGlvLCBwcm9kdWN0KX1gKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnN0cmFpbkNsb3VkRm9ybWF0aW9uUGFyYW1ldGVycyhcbiAgICBwb3J0Zm9saW86IElQb3J0Zm9saW8sIHByb2R1Y3Q6IElQcm9kdWN0LFxuICAgIG9wdGlvbnM6IENsb3VkRm9ybWF0aW9uUnVsZUNvbnN0cmFpbnRPcHRpb25zLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuYXNzb2NpYXRlUHJvZHVjdFdpdGhQb3J0Zm9saW8ocG9ydGZvbGlvLCBwcm9kdWN0LCBvcHRpb25zKTtcbiAgICBjb25zdCBjb25zdHJ1Y3RJZCA9IGBMYXVuY2hUZW1wbGF0ZUNvbnN0cmFpbnQke2hhc2hWYWx1ZXMoYXNzb2NpYXRpb24uYXNzb2NpYXRpb25LZXksIG9wdGlvbnMucnVsZS5ydWxlTmFtZSl9YDtcblxuICAgIGlmICghcG9ydGZvbGlvLm5vZGUudHJ5RmluZENoaWxkKGNvbnN0cnVjdElkKSkge1xuICAgICAgY29uc3QgY29uc3RyYWludCA9IG5ldyBDZm5MYXVuY2hUZW1wbGF0ZUNvbnN0cmFpbnQocG9ydGZvbGlvIGFzIHVua25vd24gYXMgY2RrLlJlc291cmNlLCBjb25zdHJ1Y3RJZCwge1xuICAgICAgICBhY2NlcHRMYW5ndWFnZTogb3B0aW9ucy5tZXNzYWdlTGFuZ3VhZ2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgICBwb3J0Zm9saW9JZDogcG9ydGZvbGlvLnBvcnRmb2xpb0lkLFxuICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3QucHJvZHVjdElkLFxuICAgICAgICBydWxlczogdGhpcy5mb3JtYXRUZW1wbGF0ZVJ1bGUocG9ydGZvbGlvLnN0YWNrLCBvcHRpb25zLnJ1bGUpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEFkZCBkZXBlbmRzT24gdG8gZm9yY2UgcHJvcGVyIG9yZGVyIGluIGRlcGxveW1lbnQuXG4gICAgICBjb25zdHJhaW50LmFkZERlcGVuZHNPbihhc3NvY2lhdGlvbi5jZm5Qb3J0Zm9saW9Qcm9kdWN0QXNzb2NpYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3Zpc2lvbmluZyBydWxlICR7b3B0aW9ucy5ydWxlLnJ1bGVOYW1lfSBhbHJlYWR5IGNvbmZpZ3VyZWQgb24gYXNzb2NpYXRpb24gJHt0aGlzLnByZXR0eVByaW50QXNzb2NpYXRpb24ocG9ydGZvbGlvLCBwcm9kdWN0KX1gKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNldExhdW5jaFJvbGUocG9ydGZvbGlvOiBJUG9ydGZvbGlvLCBwcm9kdWN0OiBJUHJvZHVjdCwgbGF1bmNoUm9sZTogaWFtLklSb2xlLCBvcHRpb25zOiBDb21tb25Db25zdHJhaW50T3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuc2V0TGF1bmNoUm9sZUNvbnN0cmFpbnQocG9ydGZvbGlvLCBwcm9kdWN0LCBvcHRpb25zLCB7XG4gICAgICByb2xlQXJuOiBsYXVuY2hSb2xlLnJvbGVBcm4sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNldExvY2FsTGF1bmNoUm9sZU5hbWUocG9ydGZvbGlvOiBJUG9ydGZvbGlvLCBwcm9kdWN0OiBJUHJvZHVjdCwgbGF1bmNoUm9sZU5hbWU6IHN0cmluZywgb3B0aW9uczogQ29tbW9uQ29uc3RyYWludE9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLnNldExhdW5jaFJvbGVDb25zdHJhaW50KHBvcnRmb2xpbywgcHJvZHVjdCwgb3B0aW9ucywge1xuICAgICAgbG9jYWxSb2xlTmFtZTogbGF1bmNoUm9sZU5hbWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRlcGxveVdpdGhTdGFja1NldHMocG9ydGZvbGlvOiBJUG9ydGZvbGlvLCBwcm9kdWN0OiBJUHJvZHVjdCwgb3B0aW9uczogU3RhY2tTZXRzQ29uc3RyYWludE9wdGlvbnMpIHtcbiAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuYXNzb2NpYXRlUHJvZHVjdFdpdGhQb3J0Zm9saW8ocG9ydGZvbGlvLCBwcm9kdWN0LCBvcHRpb25zKTtcbiAgICAvLyBDaGVjayBpZiBhIGxhdW5jaCByb2xlIGhhcyBhbHJlYWR5IGJlZW4gc2V0LlxuICAgIGlmIChwb3J0Zm9saW8ubm9kZS50cnlGaW5kQ2hpbGQodGhpcy5sYXVuY2hSb2xlQ29uc3RyYWludExvZ2ljYWxJZChhc3NvY2lhdGlvbi5hc3NvY2lhdGlvbktleSkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb25maWd1cmUgU3RhY2tTZXQgZGVwbG95bWVudCB3aGVuIGEgbGF1bmNoIHJvbGUgaXMgYWxyZWFkeSBkZWZpbmVkIGZvciBhc3NvY2lhdGlvbiAke3RoaXMucHJldHR5UHJpbnRBc3NvY2lhdGlvbihwb3J0Zm9saW8sIHByb2R1Y3QpfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnN0cnVjdElkID0gdGhpcy5zdGFja1NldENvbnN0cmFpbnRMb2dpY2FsSWQoYXNzb2NpYXRpb24uYXNzb2NpYXRpb25LZXkpO1xuICAgIGlmICghcG9ydGZvbGlvLm5vZGUudHJ5RmluZENoaWxkKGNvbnN0cnVjdElkKSkge1xuICAgICAgY29uc3QgY29uc3RyYWludCA9IG5ldyBDZm5TdGFja1NldENvbnN0cmFpbnQocG9ydGZvbGlvIGFzIHVua25vd24gYXMgY2RrLlJlc291cmNlLCBjb25zdHJ1Y3RJZCwge1xuICAgICAgICBhY2NlcHRMYW5ndWFnZTogb3B0aW9ucy5tZXNzYWdlTGFuZ3VhZ2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uID8/ICcnLFxuICAgICAgICBwb3J0Zm9saW9JZDogcG9ydGZvbGlvLnBvcnRmb2xpb0lkLFxuICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3QucHJvZHVjdElkLFxuICAgICAgICBhY2NvdW50TGlzdDogb3B0aW9ucy5hY2NvdW50cyxcbiAgICAgICAgcmVnaW9uTGlzdDogb3B0aW9ucy5yZWdpb25zLFxuICAgICAgICBhZG1pblJvbGU6IG9wdGlvbnMuYWRtaW5Sb2xlLnJvbGVBcm4sXG4gICAgICAgIGV4ZWN1dGlvblJvbGU6IG9wdGlvbnMuZXhlY3V0aW9uUm9sZU5hbWUsXG4gICAgICAgIHN0YWNrSW5zdGFuY2VDb250cm9sOiBvcHRpb25zLmFsbG93U3RhY2tTZXRJbnN0YW5jZU9wZXJhdGlvbnMgPyAnQUxMT1dFRCcgOiAnTk9UX0FMTE9XRUQnLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEFkZCBkZXBlbmRzT24gdG8gZm9yY2UgcHJvcGVyIG9yZGVyIGluIGRlcGxveW1lbnQuXG4gICAgICBjb25zdHJhaW50LmFkZERlcGVuZHNPbihhc3NvY2lhdGlvbi5jZm5Qb3J0Zm9saW9Qcm9kdWN0QXNzb2NpYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb25maWd1cmUgbXVsdGlwbGUgU3RhY2tTZXQgZGVwbG95bWVudCBjb25zdHJhaW50cyBmb3IgYXNzb2NpYXRpb24gJHt0aGlzLnByZXR0eVByaW50QXNzb2NpYXRpb24ocG9ydGZvbGlvLCBwcm9kdWN0KX1gKTtcbiAgICB9XG4gIH1cblxuXG4gIHB1YmxpYyBzdGF0aWMgYXNzb2NpYXRlVGFnT3B0aW9ucyhyZXNvdXJjZTogY2RrLklSZXNvdXJjZSwgcmVzb3VyY2VJZDogc3RyaW5nLCB0YWdPcHRpb25zOiBUYWdPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgcmVzb3VyY2VTdGFjayA9IGNkay5TdGFjay5vZihyZXNvdXJjZSk7XG4gICAgZm9yIChjb25zdCBba2V5LCB0YWdPcHRpb25zTGlzdF0gb2YgT2JqZWN0LmVudHJpZXModGFnT3B0aW9ucy50YWdPcHRpb25zTWFwKSkge1xuICAgICAgSW5wdXRWYWxpZGF0b3IudmFsaWRhdGVMZW5ndGgocmVzb3VyY2Uubm9kZS5hZGRyLCAnVGFnT3B0aW9uIGtleScsIDEsIDEyOCwga2V5KTtcbiAgICAgIHRhZ09wdGlvbnNMaXN0LmZvckVhY2goKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgSW5wdXRWYWxpZGF0b3IudmFsaWRhdGVMZW5ndGgocmVzb3VyY2Uubm9kZS5hZGRyLCAnVGFnT3B0aW9uIHZhbHVlJywgMSwgMjU2LCB2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHRhZ09wdGlvbktleSA9IGhhc2hWYWx1ZXMoa2V5LCB2YWx1ZSwgcmVzb3VyY2VTdGFjay5ub2RlLmFkZHIpO1xuICAgICAgICBjb25zdCB0YWdPcHRpb25Db25zdHJ1Y3RJZCA9IGBUYWdPcHRpb24ke3RhZ09wdGlvbktleX1gO1xuICAgICAgICBsZXQgY2ZuVGFnT3B0aW9uID0gcmVzb3VyY2VTdGFjay5ub2RlLnRyeUZpbmRDaGlsZCh0YWdPcHRpb25Db25zdHJ1Y3RJZCkgYXMgQ2ZuVGFnT3B0aW9uO1xuICAgICAgICBpZiAoIWNmblRhZ09wdGlvbikge1xuICAgICAgICAgIGNmblRhZ09wdGlvbiA9IG5ldyBDZm5UYWdPcHRpb24ocmVzb3VyY2VTdGFjaywgdGFnT3B0aW9uQ29uc3RydWN0SWQsIHtcbiAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhZ0Fzc29jYXRpb25LZXkgPSBoYXNoVmFsdWVzKGtleSwgdmFsdWUsIHJlc291cmNlLm5vZGUuYWRkcik7XG4gICAgICAgIGNvbnN0IHRhZ0Fzc29jYXRpb25Db25zdHJ1Y3RJZCA9IGBUYWdPcHRpb25Bc3NvY2lhdGlvbiR7dGFnQXNzb2NhdGlvbktleX1gO1xuICAgICAgICBpZiAoIXJlc291cmNlLm5vZGUudHJ5RmluZENoaWxkKHRhZ0Fzc29jYXRpb25Db25zdHJ1Y3RJZCkpIHtcbiAgICAgICAgICBuZXcgQ2ZuVGFnT3B0aW9uQXNzb2NpYXRpb24ocmVzb3VyY2UgYXMgY2RrLlJlc291cmNlLCB0YWdBc3NvY2F0aW9uQ29uc3RydWN0SWQsIHtcbiAgICAgICAgICAgIHJlc291cmNlSWQ6IHJlc291cmNlSWQsXG4gICAgICAgICAgICB0YWdPcHRpb25JZDogY2ZuVGFnT3B0aW9uLnJlZixcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNldExhdW5jaFJvbGVDb25zdHJhaW50KFxuICAgIHBvcnRmb2xpbzogSVBvcnRmb2xpbywgcHJvZHVjdDogSVByb2R1Y3QsIG9wdGlvbnM6IENvbW1vbkNvbnN0cmFpbnRPcHRpb25zLFxuICAgIHJvbGVPcHRpb25zOiBMYXVuY2hSb2xlQ29uc3RyYWludFJvbGVPcHRpb25zLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuYXNzb2NpYXRlUHJvZHVjdFdpdGhQb3J0Zm9saW8ocG9ydGZvbGlvLCBwcm9kdWN0LCBvcHRpb25zKTtcbiAgICAvLyBDaGVjayBpZiBhIHN0YWNrc2V0IGRlcGxveW1lbnQgY29uc3RyYWludCBoYXMgYWxyZWFkeSBiZWVuIGNvbmZpZ3VyZWQuXG4gICAgaWYgKHBvcnRmb2xpby5ub2RlLnRyeUZpbmRDaGlsZCh0aGlzLnN0YWNrU2V0Q29uc3RyYWludExvZ2ljYWxJZChhc3NvY2lhdGlvbi5hc3NvY2lhdGlvbktleSkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgbGF1bmNoIHJvbGUgd2hlbiBhIFN0YWNrU2V0IHJ1bGUgaXMgYWxyZWFkeSBkZWZpbmVkIGZvciBhc3NvY2lhdGlvbiAke3RoaXMucHJldHR5UHJpbnRBc3NvY2lhdGlvbihwb3J0Zm9saW8sIHByb2R1Y3QpfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnN0cnVjdElkID0gdGhpcy5sYXVuY2hSb2xlQ29uc3RyYWludExvZ2ljYWxJZChhc3NvY2lhdGlvbi5hc3NvY2lhdGlvbktleSk7XG4gICAgaWYgKCFwb3J0Zm9saW8ubm9kZS50cnlGaW5kQ2hpbGQoY29uc3RydWN0SWQpKSB7XG4gICAgICBjb25zdCBjb25zdHJhaW50ID0gbmV3IENmbkxhdW5jaFJvbGVDb25zdHJhaW50KHBvcnRmb2xpbyBhcyB1bmtub3duIGFzIGNkay5SZXNvdXJjZSwgY29uc3RydWN0SWQsIHtcbiAgICAgICAgYWNjZXB0TGFuZ3VhZ2U6IG9wdGlvbnMubWVzc2FnZUxhbmd1YWdlLFxuICAgICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgICAgcG9ydGZvbGlvSWQ6IHBvcnRmb2xpby5wb3J0Zm9saW9JZCxcbiAgICAgICAgcHJvZHVjdElkOiBwcm9kdWN0LnByb2R1Y3RJZCxcbiAgICAgICAgcm9sZUFybjogcm9sZU9wdGlvbnMucm9sZUFybixcbiAgICAgICAgbG9jYWxSb2xlTmFtZTogcm9sZU9wdGlvbnMubG9jYWxSb2xlTmFtZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBZGQgZGVwZW5kc09uIHRvIGZvcmNlIHByb3BlciBvcmRlciBpbiBkZXBsb3ltZW50LlxuICAgICAgY29uc3RyYWludC5hZGREZXBlbmRzT24oYXNzb2NpYXRpb24uY2ZuUG9ydGZvbGlvUHJvZHVjdEFzc29jaWF0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0IG11bHRpcGxlIGxhdW5jaCByb2xlcyBmb3IgYXNzb2NpYXRpb24gJHt0aGlzLnByZXR0eVByaW50QXNzb2NpYXRpb24ocG9ydGZvbGlvLCBwcm9kdWN0KX1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzdGFja1NldENvbnN0cmFpbnRMb2dpY2FsSWQoYXNzb2NpYXRpb25LZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBTdGFja1NldENvbnN0cmFpbnQke2Fzc29jaWF0aW9uS2V5fWA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBsYXVuY2hSb2xlQ29uc3RyYWludExvZ2ljYWxJZChhc3NvY2lhdGlvbktleTpzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgTGF1bmNoUm9sZUNvbnN0cmFpbnQke2Fzc29jaWF0aW9uS2V5fWA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwcmV0dHlQcmludEFzc29jaWF0aW9uKHBvcnRmb2xpbzogSVBvcnRmb2xpbywgcHJvZHVjdDogSVByb2R1Y3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBgLSBQb3J0Zm9saW86ICR7cG9ydGZvbGlvLm5vZGUucGF0aH0gfCBQcm9kdWN0OiAke3Byb2R1Y3Qubm9kZS5wYXRofWA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb3JtYXRUZW1wbGF0ZVJ1bGUoc3RhY2s6IGNkay5TdGFjaywgcnVsZTogVGVtcGxhdGVSdWxlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgW3J1bGUucnVsZU5hbWVdOiB7XG4gICAgICAgIEFzc2VydGlvbnM6IHRoaXMuZm9ybWF0QXNzZXJ0aW9ucyhzdGFjaywgcnVsZS5hc3NlcnRpb25zKSxcbiAgICAgICAgUnVsZUNvbmRpdGlvbjogcnVsZS5jb25kaXRpb24gPyBzdGFjay5yZXNvbHZlKHJ1bGUuY29uZGl0aW9uKSA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb3JtYXRBc3NlcnRpb25zKFxuICAgIHN0YWNrOiBjZGsuU3RhY2ssIGFzc2VydGlvbnMgOiBUZW1wbGF0ZVJ1bGVBc3NlcnRpb25bXSxcbiAgKTogeyBBc3NlcnQ6IHN0cmluZywgQXNzZXJ0RGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCB9W10ge1xuICAgIHJldHVybiBhc3NlcnRpb25zLnJlZHVjZSgoZm9ybWF0dGVkQXNzZXJ0aW9ucywgYXNzZXJ0aW9uKSA9PiB7XG4gICAgICBmb3JtYXR0ZWRBc3NlcnRpb25zLnB1c2goIHtcbiAgICAgICAgQXNzZXJ0OiBzdGFjay5yZXNvbHZlKGFzc2VydGlvbi5hc3NlcnQpLFxuICAgICAgICBBc3NlcnREZXNjcmlwdGlvbjogYXNzZXJ0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZm9ybWF0dGVkQXNzZXJ0aW9ucztcbiAgICB9LCBuZXcgQXJyYXk8eyBBc3NlcnQ6IHN0cmluZywgQXNzZXJ0RGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCB9PigpKTtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIExhdW5jaFJvbGVBcm5PcHRpb24ge1xuICByZWFkb25seSByb2xlQXJuOiBzdHJpbmcsXG4gIHJlYWRvbmx5IGxvY2FsUm9sZU5hbWU/OiBuZXZlcixcbn1cblxuaW50ZXJmYWNlIExhdW5jaFJvbGVOYW1lT3B0aW9uIHtcbiAgcmVhZG9ubHkgbG9jYWxSb2xlTmFtZTogc3RyaW5nLFxuICByZWFkb25seSByb2xlQXJuPzogbmV2ZXIsXG59XG5cbnR5cGUgTGF1bmNoUm9sZUNvbnN0cmFpbnRSb2xlT3B0aW9ucyA9IExhdW5jaFJvbGVBcm5PcHRpb24gfCBMYXVuY2hSb2xlTmFtZU9wdGlvbjtcbiJdfQ== |
@@ -63,3 +63,3 @@ "use strict"; | ||
_a = JSII_RTTI_SYMBOL_1; | ||
ProductStack[_a] = { fqn: "@aws-cdk/aws-servicecatalog.ProductStack", version: "1.134.0" }; | ||
ProductStack[_a] = { fqn: "@aws-cdk/aws-servicecatalog.ProductStack", version: "1.135.0" }; | ||
/** | ||
@@ -66,0 +66,0 @@ * Validates the scope for a product stack, which must be defined within the scope of another `Stack`. |
import { IResource, Resource } from '@aws-cdk/core'; | ||
import { Construct } from 'constructs'; | ||
import { TagOptions } from '.'; | ||
import { CloudFormationTemplate } from './cloudformation-template'; | ||
@@ -25,2 +26,11 @@ import { MessageLanguage } from './common'; | ||
readonly productId: string; | ||
/** | ||
* (experimental) Associate Tag Options. | ||
* | ||
* A TagOption is a key-value pair managed in AWS Service Catalog. | ||
* It is not an AWS tag, but serves as a template for creating an AWS tag based on the TagOption. | ||
* | ||
* @experimental | ||
*/ | ||
associateTagOptions(tagOptions: TagOptions): void; | ||
} | ||
@@ -40,2 +50,11 @@ declare abstract class ProductBase extends Resource implements IProduct { | ||
abstract readonly productId: string; | ||
/** | ||
* (experimental) Associate Tag Options. | ||
* | ||
* A TagOption is a key-value pair managed in AWS Service Catalog. | ||
* It is not an AWS tag, but serves as a template for creating an AWS tag based on the TagOption. | ||
* | ||
* @experimental | ||
*/ | ||
associateTagOptions(tagOptions: TagOptions): void; | ||
} | ||
@@ -153,2 +172,9 @@ /** | ||
readonly supportUrl?: string; | ||
/** | ||
* (experimental) TagOptions associated directly to a product. | ||
* | ||
* @default - No tagOptions provided | ||
* @experimental | ||
*/ | ||
readonly tagOptions?: TagOptions; | ||
} | ||
@@ -155,0 +181,0 @@ /** |
@@ -8,5 +8,17 @@ "use strict"; | ||
const core_1 = require("@aws-cdk/core"); | ||
const association_manager_1 = require("./private/association-manager"); | ||
const validation_1 = require("./private/validation"); | ||
const servicecatalog_generated_1 = require("./servicecatalog.generated"); | ||
class ProductBase extends core_1.Resource { | ||
/** | ||
* (experimental) Associate Tag Options. | ||
* | ||
* A TagOption is a key-value pair managed in AWS Service Catalog. | ||
* It is not an AWS tag, but serves as a template for creating an AWS tag based on the TagOption. | ||
* | ||
* @experimental | ||
*/ | ||
associateTagOptions(tagOptions) { | ||
association_manager_1.AssociationManager.associateTagOptions(this, this.productId, tagOptions); | ||
} | ||
} | ||
@@ -44,3 +56,3 @@ /** | ||
_a = JSII_RTTI_SYMBOL_1; | ||
Product[_a] = { fqn: "@aws-cdk/aws-servicecatalog.Product", version: "1.134.0" }; | ||
Product[_a] = { fqn: "@aws-cdk/aws-servicecatalog.Product", version: "1.135.0" }; | ||
/** | ||
@@ -71,2 +83,3 @@ * (experimental) A Service Catalog Cloudformation Product. | ||
}); | ||
this.productId = product.ref; | ||
this.productArn = core_1.Stack.of(this).formatArn({ | ||
@@ -77,3 +90,5 @@ service: 'catalog', | ||
}); | ||
this.productId = product.ref; | ||
if (props.tagOptions !== undefined) { | ||
this.associateTagOptions(props.tagOptions); | ||
} | ||
} | ||
@@ -114,3 +129,3 @@ renderProvisioningArtifacts(props) { | ||
_b = JSII_RTTI_SYMBOL_1; | ||
CloudFormationProduct[_b] = { fqn: "@aws-cdk/aws-servicecatalog.CloudFormationProduct", version: "1.134.0" }; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByb2R1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsd0NBQXNFO0FBSXRFLHFEQUFzRDtBQUN0RCx5RUFBc0U7QUFXdEUsTUFBZSxXQUFZLFNBQVEsZUFBUTtDQUcxQzs7Ozs7O0FBbURELE1BQXNCLE9BQVEsU0FBUSxXQUFXOzs7Ozs7Ozs7SUFFeEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxVQUFrQjtRQUMzRSxNQUFNLEdBQUcsR0FBRyxZQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsZ0JBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFFbkMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELEdBQUcsVUFBVSxDQUFDLENBQUM7U0FDcEY7UUFFRCxPQUFPLElBQUksS0FBTSxTQUFRLFdBQVc7WUFBekI7O2dCQUNPLGNBQVMsR0FBRyxTQUFVLENBQUM7Z0JBQ3ZCLGVBQVUsR0FBRyxVQUFVLENBQUM7WUFDMUMsQ0FBQztTQUFBLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ2Q7O0FBZEgsMEJBZUM7Ozs7Ozs7O0FBR0QsTUFBYSxxQkFBc0IsU0FBUSxPQUFPOzs7O0lBSWhELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBaUM7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7UUFFakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpDLE1BQU0sT0FBTyxHQUFHLElBQUksbURBQXdCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM3RCxjQUFjLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFD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QixDQUFDLENBQUM7UUFDeEcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLDJDQUEyQyxDQUFDLENBQUM7U0FDckg7UUFDRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUM3QywyQkFBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSw0QkFBNEIsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3ZILDJCQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLG1DQUFtQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFILENBQUMsQ0FBQyxDQUFDO0tBQ0o7O0FBOURILHNEQStEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFybkZvcm1hdCwgSVJlc291cmNlLCBSZXNvdXJjZSwgU3RhY2sgfSBmcm9tICdAYXdzLWNkay9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSB9IGZyb20gJy4vY2xvdWRmb3JtYXRpb24tdGVtcGxhdGUnO1xuaW1wb3J0IHsgTWVzc2FnZUxhbmd1YWdlIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgSW5wdXRWYWxpZGF0b3IgfSBmcm9tICcuL3ByaXZhdGUvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBDZm5DbG91ZEZvcm1hdGlvblByb2R1Y3QgfSBmcm9tICcuL3NlcnZpY2VjYXRhbG9nLmdlbmVyYXRlZCc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgSVByb2R1Y3QgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcHJvZHVjdEFybjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcHJvZHVjdElkOiBzdHJpbmc7XG59XG5cbmFic3RyYWN0IGNsYXNzIFByb2R1Y3RCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUHJvZHVjdCB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBwcm9kdWN0QXJuOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBwcm9kdWN0SWQ6IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRm9ybWF0aW9uUHJvZHVjdFZlcnNpb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2YWxpZGF0ZVRlbXBsYXRlPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uVGVtcGxhdGU6IENsb3VkRm9ybWF0aW9uVGVtcGxhdGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHByb2R1Y3RWZXJzaW9uTmFtZT86IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGb3JtYXRpb25Qcm9kdWN0UHJvcHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IG93bmVyOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHByb2R1Y3ROYW1lOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcHJvZHVjdFZlcnNpb25zOiBDbG91ZEZvcm1hdGlvblByb2R1Y3RWZXJzaW9uW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBtZXNzYWdlTGFuZ3VhZ2U/OiBNZXNzYWdlTGFuZ3VhZ2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGlzdHJpYnV0b3I/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHJlcGxhY2VQcm9kdWN0VmVyc2lvbklkcz86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc3VwcG9ydERlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHN1cHBvcnRFbWFpbD86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHN1cHBvcnRVcmw/OiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByb2R1Y3QgZXh0ZW5kcyBQcm9kdWN0QmFzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyBmcm9tUHJvZHVjdEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9kdWN0QXJuOiBzdHJpbmcpOiBJUHJvZHVjdCB7XG4gICAgY29uc3QgYXJuID0gU3RhY2sub2Yoc2NvcGUpLnNwbGl0QXJuKHByb2R1Y3RBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKTtcbiAgICBjb25zdCBwcm9kdWN0SWQgPSBhcm4ucmVzb3VyY2VOYW1lO1xuXG4gICAgaWYgKCFwcm9kdWN0SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBQb3J0Zm9saW8gSUQgZnJvbSBQb3J0Zm9saW8gQVJOOiAnICsgcHJvZHVjdEFybik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBjbGFzcyBleHRlbmRzIFByb2R1Y3RCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwcm9kdWN0SWQgPSBwcm9kdWN0SWQhO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHByb2R1Y3RBcm4gPSBwcm9kdWN0QXJuO1xuICAgIH0oc2NvcGUsIGlkKTtcbiAgfVxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgQ2xvdWRGb3JtYXRpb25Qcm9kdWN0IGV4dGVuZHMgUHJvZHVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9kdWN0QXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBwcm9kdWN0SWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2xvdWRGb3JtYXRpb25Qcm9kdWN0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZVByb2R1Y3RQcm9wcyhwcm9wcyk7XG5cbiAgICBjb25zdCBwcm9kdWN0ID0gbmV3IENmbkNsb3VkRm9ybWF0aW9uUHJvZHVjdCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBhY2NlcHRMYW5ndWFnZTogcHJvcHMubWVzc2FnZUxhbmd1YWdlLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgZGlzdHJpYnV0b3I6IHByb3BzLmRpc3RyaWJ1dG9yLFxuICAgICAgbmFtZTogcHJvcHMucHJvZHVjdE5hbWUsXG4gICAgICBvd25lcjogcHJvcHMub3duZXIsXG4gICAgICBwcm92aXNpb25pbmdBcnRpZmFjdFBhcmFtZXRlcnM6IHRoaXMucmVuZGVyUHJvdmlzaW9uaW5nQXJ0aWZhY3RzKHByb3BzKSxcbiAgICAgIHJlcGxhY2VQcm92aXNpb25pbmdBcnRpZmFjdHM6IHByb3BzLnJlcGxhY2VQcm9kdWN0VmVyc2lvbklkcyxcbiAgICAgIHN1cHBvcnREZXNjcmlwdGlvbjogcHJvcHMuc3VwcG9ydERlc2NyaXB0aW9uLFxuICAgICAgc3VwcG9ydEVtYWlsOiBwcm9wcy5zdXBwb3J0RW1haWwsXG4gICAgICBzdXBwb3J0VXJsOiBwcm9wcy5zdXBwb3J0VXJsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9kdWN0QXJuID0gU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6ICdjYXRhbG9nJyxcbiAgICAgIHJlc291cmNlOiAncHJvZHVjdCcsXG4gICAgICByZXNvdXJjZU5hbWU6IHByb2R1Y3QucmVmLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9kdWN0SWQgPSBwcm9kdWN0LnJlZjtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyUHJvdmlzaW9uaW5nQXJ0aWZhY3RzKFxuICAgIHByb3BzOiBDbG91ZEZvcm1hdGlvblByb2R1Y3RQcm9wcyk6IENmbkNsb3VkRm9ybWF0aW9uUHJvZHVjdC5Qcm92aXNpb25pbmdBcnRpZmFjdFByb3BlcnRpZXNQcm9wZXJ0eVtdIHtcbiAgICByZXR1cm4gcHJvcHMucHJvZHVjdFZlcnNpb25zLm1hcChwcm9kdWN0VmVyc2lvbiA9PiB7XG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IHByb2R1Y3RWZXJzaW9uLmNsb3VkRm9ybWF0aW9uVGVtcGxhdGUuYmluZCh0aGlzKTtcbiAgICAgIElucHV0VmFsaWRhdG9yLnZhbGlkYXRlVXJsKHRoaXMubm9kZS5wYXRoLCAncHJvdmlzaW9uaW5nIHRlbXBsYXRlIHVybCcsIHRlbXBsYXRlLmh0dHBVcmwpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogcHJvZHVjdFZlcnNpb24ucHJvZHVjdFZlcnNpb25OYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvZHVjdFZlcnNpb24uZGVzY3JpcHRpb24sXG4gICAgICAgIGRpc2FibGVUZW1wbGF0ZVZhbGlkYXRpb246IHByb2R1Y3RWZXJzaW9uLnZhbGlkYXRlVGVtcGxhdGUgPT09IGZhbHNlID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgTG9hZFRlbXBsYXRlRnJvbVVSTDogdGVtcGxhdGUuaHR0cFVybCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH07XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVByb2R1Y3RQcm9wcyhwcm9wczogQ2xvdWRGb3JtYXRpb25Qcm9kdWN0UHJvcHMpIHtcbiAgICBJbnB1dFZhbGlkYXRvci52YWxpZGF0ZUxlbmd0aCh0aGlzLm5vZGUucGF0aCwgJ3Byb2R1Y3QgcHJvZHVjdCBuYW1lJywgMSwgMTAwLCBwcm9wcy5wcm9kdWN0TmFtZSk7XG4gICAgSW5wdXRWYWxpZGF0b3IudmFsaWRhdGVMZW5ndGgodGhpcy5ub2RlLnBhdGgsICdwcm9kdWN0IG93bmVyJywgMSwgODE5MSwgcHJvcHMub3duZXIpO1xuICAgIElucHV0VmFsaWRhdG9yLnZhbGlkYXRlTGVuZ3RoKHRoaXMubm9kZS5wYXRoLCAncHJvZHVjdCBkZXNjcmlwdGlvbicsIDAsIDgxOTEsIHByb3BzLmRlc2NyaXB0aW9uKTtcbiAgICBJbnB1dFZhbGlkYXRvci52YWxpZGF0ZUxlbmd0aCh0aGlzLm5vZGUucGF0aCwgJ3Byb2R1Y3QgZGlzdHJpYnV0b3InLCAwLCA4MTkxLCBwcm9wcy5kaXN0cmlidXRvcik7XG4gICAgSW5wdXRWYWxpZGF0b3IudmFsaWRhdGVFbWFpbCh0aGlzLm5vZGUucGF0aCwgJ3N1cHBvcnQgZW1haWwnLCBwcm9wcy5zdXBwb3J0RW1haWwpO1xuICAgIElucHV0VmFsaWRhdG9yLnZhbGlkYXRlVXJsKHRoaXMubm9kZS5wYXRoLCAnc3VwcG9ydCB1cmwnLCBwcm9wcy5zdXBwb3J0VXJsKTtcbiAgICBJbnB1dFZhbGlkYXRvci52YWxpZGF0ZUxlbmd0aCh0aGlzLm5vZGUucGF0aCwgJ3N1cHBvcnQgZGVzY3JpcHRpb24nLCAwLCA4MTkxLCBwcm9wcy5zdXBwb3J0RGVzY3JpcHRpb24pO1xuICAgIGlmIChwcm9wcy5wcm9kdWN0VmVyc2lvbnMubGVuZ3RoID09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwcm9kdWN0IHZlcnNpb25zIGZvciByZXNvdXJjZSAke3RoaXMubm9kZS5wYXRofSwgbXVzdCBjb250YWluIGF0IGxlYXN0IDEgcHJvZHVjdCB2ZXJzaW9uYCk7XG4gICAgfVxuICAgIHByb3BzLnByb2R1Y3RWZXJzaW9ucy5mb3JFYWNoKHByb2R1Y3RWZXJzaW9uID0+IHtcbiAgICAgIElucHV0VmFsaWRhdG9yLnZhbGlkYXRlTGVuZ3RoKHRoaXMubm9kZS5wYXRoLCAncHJvdmlzaW9uaW5nIGFydGlmYWN0IG5hbWUnLCAwLCAxMDAsIHByb2R1Y3RWZXJzaW9uLnByb2R1Y3RWZXJzaW9uTmFtZSk7XG4gICAgICBJbnB1dFZhbGlkYXRvci52YWxpZGF0ZUxlbmd0aCh0aGlzLm5vZGUucGF0aCwgJ3Byb3Zpc2lvbmluZyBhcnRpZmFjdCBkZXNjcmlwdGlvbicsIDAsIDgxOTEsIHByb2R1Y3RWZXJzaW9uLmRlc2NyaXB0aW9uKTtcbiAgICB9KTtcbiAgfVxufVxuIl19 | ||
CloudFormationProduct[_b] = { fqn: "@aws-cdk/aws-servicecatalog.CloudFormationProduct", version: "1.135.0" }; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByb2R1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsd0NBQXNFO0FBS3RFLHVFQUFtRTtBQUNuRSxxREFBc0Q7QUFDdEQseUVBQXNFO0FBY3RFLE1BQWUsV0FBWSxTQUFRLGVBQVE7Ozs7Ozs7OztJQUlsQyxtQkFBbUIsQ0FBQyxVQUFzQjtRQUMvQyx3Q0FBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUMxRTtDQUNGOzs7Ozs7QUFzREQsTUFBc0IsT0FBUSxTQUFRLFdBQVc7Ozs7Ozs7OztJQUV4QyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFVBQWtCO1FBQzNFLE1BQU0sR0FBRyxHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxnQkFBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDaEYsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztRQUVuQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsR0FBRyxVQUFVLENBQUMsQ0FBQztTQUNwRjtRQUVELE9BQU8sSUFBSSxLQUFNLFNBQVEsV0FBVztZQUF6Qjs7Z0JBQ08sY0FBUyxHQUFHLFNBQVUsQ0FBQztnQkFDdkIsZUFBVSxHQUFHLFVBQVUsQ0FBQztZQUMxQyxDQUFDO1NBQUEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDZDs7QUFkSCwwQkFlQzs7Ozs7Ozs7QUFHRCxNQUFhLHFCQUFzQixTQUFRLE9BQU87Ozs7SUFJaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOztRQUVqQixJQUFJ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QUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xGLDJCQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUUsMkJBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4RyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksMkNBQTJDLENBQUMsQ0FBQztTQUNySDtRQUNELEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQzdDLDJCQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLDRCQUE0QixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDdkgsMkJBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsbUNBQW1DLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUgsQ0FBQyxDQUFDLENBQUM7S0FDSjs7QUFqRUgsc0RBa0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJuRm9ybWF0LCBJUmVzb3VyY2UsIFJlc291cmNlLCBTdGFjayB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBUYWdPcHRpb25zIH0gZnJvbSAnLic7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvblRlbXBsYXRlIH0gZnJvbSAnLi9jbG91ZGZvcm1hdGlvbi10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBNZXNzYWdlTGFuZ3VhZ2UgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBBc3NvY2lhdGlvbk1hbmFnZXIgfSBmcm9tICcuL3ByaXZhdGUvYXNzb2NpYXRpb24tbWFuYWdlcic7XG5pbXBvcnQgeyBJbnB1dFZhbGlkYXRvciB9IGZyb20gJy4vcHJpdmF0ZS92YWxpZGF0aW9uJztcbmltcG9ydCB7IENmbkNsb3VkRm9ybWF0aW9uUHJvZHVjdCB9IGZyb20gJy4vc2VydmljZWNhdGFsb2cuZ2VuZXJhdGVkJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBJUHJvZHVjdCBleHRlbmRzIElSZXNvdXJjZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwcm9kdWN0QXJuOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwcm9kdWN0SWQ6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBhc3NvY2lhdGVUYWdPcHRpb25zKHRhZ09wdGlvbnM6IFRhZ09wdGlvbnMpOiB2b2lkO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBQcm9kdWN0QmFzZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVByb2R1Y3Qge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcHJvZHVjdEFybjogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcHJvZHVjdElkOiBzdHJpbmc7XG5cbiAgcHVibGljIGFzc29jaWF0ZVRhZ09wdGlvbnModGFnT3B0aW9uczogVGFnT3B0aW9ucykge1xuICAgIEFzc29jaWF0aW9uTWFuYWdlci5hc3NvY2lhdGVUYWdPcHRpb25zKHRoaXMsIHRoaXMucHJvZHVjdElkLCB0YWdPcHRpb25zKTtcbiAgfVxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGb3JtYXRpb25Qcm9kdWN0VmVyc2lvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHZhbGlkYXRlVGVtcGxhdGU/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UZW1wbGF0ZTogQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcHJvZHVjdFZlcnNpb25OYW1lPzogc3RyaW5nO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZvcm1hdGlvblByb2R1Y3RQcm9wcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgb3duZXI6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcHJvZHVjdE5hbWU6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwcm9kdWN0VmVyc2lvbnM6IENsb3VkRm9ybWF0aW9uUHJvZHVjdFZlcnNpb25bXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IG1lc3NhZ2VMYW5ndWFnZT86IE1lc3NhZ2VMYW5ndWFnZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkaXN0cmlidXRvcj86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcmVwbGFjZVByb2R1Y3RWZXJzaW9uSWRzPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzdXBwb3J0RGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc3VwcG9ydEVtYWlsPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc3VwcG9ydFVybD86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRhZ09wdGlvbnM/OiBUYWdPcHRpb25zXG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByb2R1Y3QgZXh0ZW5kcyBQcm9kdWN0QmFzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyBmcm9tUHJvZHVjdEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9kdWN0QXJuOiBzdHJpbmcpOiBJUHJvZHVjdCB7XG4gICAgY29uc3QgYXJuID0gU3RhY2sub2Yoc2NvcGUpLnNwbGl0QXJuKHByb2R1Y3RBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKTtcbiAgICBjb25zdCBwcm9kdWN0SWQgPSBhcm4ucmVzb3VyY2VOYW1lO1xuXG4gICAgaWYgKCFwcm9kdWN0SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBQb3J0Zm9saW8gSUQgZnJvbSBQb3J0Zm9saW8gQVJOOiAnICsgcHJvZHVjdEFybik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBjbGFzcyBleHRlbmRzIFByb2R1Y3RCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwcm9kdWN0SWQgPSBwcm9kdWN0SWQhO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHByb2R1Y3RBcm4gPSBwcm9kdWN0QXJuO1xuICAgIH0oc2NvcGUsIGlkKTtcbiAgfVxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgQ2xvdWRGb3JtYXRpb25Qcm9kdWN0IGV4dGVuZHMgUHJvZHVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9kdWN0QXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBwcm9kdWN0SWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2xvdWRGb3JtYXRpb25Qcm9kdWN0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZVByb2R1Y3RQcm9wcyhwcm9wcyk7XG5cbiAgICBjb25zdCBwcm9kdWN0ID0gbmV3IENmbkNsb3VkRm9ybWF0aW9uUHJvZHVjdCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBhY2NlcHRMYW5ndWFnZTogcHJvcHMubWVzc2FnZUxhbmd1YWdlLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgZGlzdHJpYnV0b3I6IHByb3BzLmRpc3RyaWJ1dG9yLFxuICAgICAgbmFtZTogcHJvcHMucHJvZHVjdE5hbWUsXG4gICAgICBvd25lcjogcHJvcHMub3duZXIsXG4gICAgICBwcm92aXNpb25pbmdBcnRpZmFjdFBhcmFtZXRlcnM6IHRoaXMucmVuZGVyUHJvdmlzaW9uaW5nQXJ0aWZhY3RzKHByb3BzKSxcbiAgICAgIHJlcGxhY2VQcm92aXNpb25pbmdBcnRpZmFjdHM6IHByb3BzLnJlcGxhY2VQcm9kdWN0VmVyc2lvbklkcyxcbiAgICAgIHN1cHBvcnREZXNjcmlwdGlvbjogcHJvcHMuc3VwcG9ydERlc2NyaXB0aW9uLFxuICAgICAgc3VwcG9ydEVtYWlsOiBwcm9wcy5zdXBwb3J0RW1haWwsXG4gICAgICBzdXBwb3J0VXJsOiBwcm9wcy5zdXBwb3J0VXJsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9kdWN0SWQgPSBwcm9kdWN0LnJlZjtcbiAgICB0aGlzLnByb2R1Y3RBcm4gPSBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2NhdGFsb2cnLFxuICAgICAgcmVzb3VyY2U6ICdwcm9kdWN0JyxcbiAgICAgIHJlc291cmNlTmFtZTogcHJvZHVjdC5yZWYsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMudGFnT3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmFzc29jaWF0ZVRhZ09wdGlvbnMocHJvcHMudGFnT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJQcm92aXNpb25pbmdBcnRpZmFjdHMoXG4gICAgcHJvcHM6IENsb3VkRm9ybWF0aW9uUHJvZHVjdFByb3BzKTogQ2ZuQ2xvdWRGb3JtYXRpb25Qcm9kdWN0LlByb3Zpc2lvbmluZ0FydGlmYWN0UHJvcGVydGllc1Byb3BlcnR5W10ge1xuICAgIHJldHVybiBwcm9wcy5wcm9kdWN0VmVyc2lvbnMubWFwKHByb2R1Y3RWZXJzaW9uID0+IHtcbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gcHJvZHVjdFZlcnNpb24uY2xvdWRGb3JtYXRpb25UZW1wbGF0ZS5iaW5kKHRoaXMpO1xuICAgICAgSW5wdXRWYWxpZGF0b3IudmFsaWRhdGVVcmwodGhpcy5ub2RlLnBhdGgsICdwcm92aXNpb25pbmcgdGVtcGxhdGUgdXJsJywgdGVtcGxhdGUuaHR0cFVybCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBwcm9kdWN0VmVyc2lvbi5wcm9kdWN0VmVyc2lvbk5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwcm9kdWN0VmVyc2lvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgZGlzYWJsZVRlbXBsYXRlVmFsaWRhdGlvbjogcHJvZHVjdFZlcnNpb24udmFsaWRhdGVUZW1wbGF0ZSA9PT0gZmFsc2UgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgIGluZm86IHtcbiAgICAgICAgICBMb2FkVGVtcGxhdGVGcm9tVVJMOiB0ZW1wbGF0ZS5odHRwVXJsLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcblxuICBwcml2YXRlIHZhbGlkYXRlUHJvZHVjdFByb3BzKHByb3BzOiBDbG91ZEZvcm1hdGlvblByb2R1Y3RQcm9wcykge1xuICAgIElucHV0VmFsaWRhdG9yLnZhbGlkYXRlTGVuZ3RoKHRoaXMubm9kZS5wYXRoLCAncHJvZHVjdCBwcm9kdWN0IG5hbWUnLCAxLCAxMDAsIHByb3BzLnByb2R1Y3ROYW1lKTtcbiAgICBJbnB1dFZhbGlkYXRvci52YWxpZGF0ZUxlbmd0aCh0aGlzLm5vZGUucGF0aCwgJ3Byb2R1Y3Qgb3duZXInLCAxLCA4MTkxLCBwcm9wcy5vd25lcik7XG4gICAgSW5wdXRWYWxpZGF0b3IudmFsaWRhdGVMZW5ndGgodGhpcy5ub2RlLnBhdGgsICdwcm9kdWN0IGRlc2NyaXB0aW9uJywgMCwgODE5MSwgcHJvcHMuZGVzY3JpcHRpb24pO1xuICAgIElucHV0VmFsaWRhdG9yLnZhbGlkYXRlTGVuZ3RoKHRoaXMubm9kZS5wYXRoLCAncHJvZHVjdCBkaXN0cmlidXRvcicsIDAsIDgxOTEsIHByb3BzLmRpc3RyaWJ1dG9yKTtcbiAgICBJbnB1dFZhbGlkYXRvci52YWxpZGF0ZUVtYWlsKHRoaXMubm9kZS5wYXRoLCAnc3VwcG9ydCBlbWFpbCcsIHByb3BzLnN1cHBvcnRFbWFpbCk7XG4gICAgSW5wdXRWYWxpZGF0b3IudmFsaWRhdGVVcmwodGhpcy5ub2RlLnBhdGgsICdzdXBwb3J0IHVybCcsIHByb3BzLnN1cHBvcnRVcmwpO1xuICAgIElucHV0VmFsaWRhdG9yLnZhbGlkYXRlTGVuZ3RoKHRoaXMubm9kZS5wYXRoLCAnc3VwcG9ydCBkZXNjcmlwdGlvbicsIDAsIDgxOTEsIHByb3BzLnN1cHBvcnREZXNjcmlwdGlvbik7XG4gICAgaWYgKHByb3BzLnByb2R1Y3RWZXJzaW9ucy5sZW5ndGggPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHByb2R1Y3QgdmVyc2lvbnMgZm9yIHJlc291cmNlICR7dGhpcy5ub2RlLnBhdGh9LCBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgMSBwcm9kdWN0IHZlcnNpb25gKTtcbiAgICB9XG4gICAgcHJvcHMucHJvZHVjdFZlcnNpb25zLmZvckVhY2gocHJvZHVjdFZlcnNpb24gPT4ge1xuICAgICAgSW5wdXRWYWxpZGF0b3IudmFsaWRhdGVMZW5ndGgodGhpcy5ub2RlLnBhdGgsICdwcm92aXNpb25pbmcgYXJ0aWZhY3QgbmFtZScsIDAsIDEwMCwgcHJvZHVjdFZlcnNpb24ucHJvZHVjdFZlcnNpb25OYW1lKTtcbiAgICAgIElucHV0VmFsaWRhdG9yLnZhbGlkYXRlTGVuZ3RoKHRoaXMubm9kZS5wYXRoLCAncHJvdmlzaW9uaW5nIGFydGlmYWN0IGRlc2NyaXB0aW9uJywgMCwgODE5MSwgcHJvZHVjdFZlcnNpb24uZGVzY3JpcHRpb24pO1xuICAgIH0pO1xuICB9XG59XG4iXX0= |
@@ -21,3 +21,3 @@ "use strict"; | ||
_a = JSII_RTTI_SYMBOL_1; | ||
TagOptions[_a] = { fqn: "@aws-cdk/aws-servicecatalog.TagOptions", version: "1.134.0" }; | ||
TagOptions[_a] = { fqn: "@aws-cdk/aws-servicecatalog.TagOptions", version: "1.135.0" }; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YWctb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsTUFBYSxVQUFVOzs7O0lBSXJCLFlBQVksYUFBeUM7UUFDbkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUM7S0FDM0M7O0FBTkgsZ0NBT0MiLCJzb3VyY2VzQ29udGVudCI6WyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIFRhZ09wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHRhZ09wdGlvbnNNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfTtcblxuICBjb25zdHJ1Y3Rvcih0YWdPcHRpb25zTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdfSApIHtcbiAgICB0aGlzLnRhZ09wdGlvbnNNYXAgPSB7IC4uLnRhZ09wdGlvbnNNYXAgfTtcbiAgfVxufVxuIl19 |
{ | ||
"name": "@aws-cdk/aws-servicecatalog", | ||
"version": "1.134.0", | ||
"version": "1.135.0", | ||
"description": "The CDK Construct Library for AWS::ServiceCatalog", | ||
@@ -75,14 +75,14 @@ "main": "lib/index.js", | ||
"devDependencies": { | ||
"@aws-cdk/assertions": "1.134.0", | ||
"@aws-cdk/cdk-build-tools": "1.134.0", | ||
"@aws-cdk/cdk-integ-tools": "1.134.0", | ||
"@aws-cdk/cfn2ts": "1.134.0", | ||
"@aws-cdk/pkglint": "1.134.0", | ||
"@types/jest": "^27.0.2" | ||
"@aws-cdk/assertions": "1.135.0", | ||
"@aws-cdk/cdk-build-tools": "1.135.0", | ||
"@aws-cdk/cdk-integ-tools": "1.135.0", | ||
"@aws-cdk/cfn2ts": "1.135.0", | ||
"@aws-cdk/pkglint": "1.135.0", | ||
"@types/jest": "^27.0.3" | ||
}, | ||
"dependencies": { | ||
"@aws-cdk/aws-iam": "1.134.0", | ||
"@aws-cdk/aws-s3-assets": "1.134.0", | ||
"@aws-cdk/aws-sns": "1.134.0", | ||
"@aws-cdk/core": "1.134.0", | ||
"@aws-cdk/aws-iam": "1.135.0", | ||
"@aws-cdk/aws-s3-assets": "1.135.0", | ||
"@aws-cdk/aws-sns": "1.135.0", | ||
"@aws-cdk/core": "1.135.0", | ||
"constructs": "^3.3.69" | ||
@@ -92,6 +92,6 @@ }, | ||
"peerDependencies": { | ||
"@aws-cdk/aws-iam": "1.134.0", | ||
"@aws-cdk/aws-s3-assets": "1.134.0", | ||
"@aws-cdk/aws-sns": "1.134.0", | ||
"@aws-cdk/core": "1.134.0", | ||
"@aws-cdk/aws-iam": "1.135.0", | ||
"@aws-cdk/aws-s3-assets": "1.135.0", | ||
"@aws-cdk/aws-sns": "1.135.0", | ||
"@aws-cdk/core": "1.135.0", | ||
"constructs": "^3.3.69" | ||
@@ -98,0 +98,0 @@ }, |
@@ -205,11 +205,18 @@ # AWS Service Catalog Construct Library | ||
For example, an end user can choose an `ec2` for the instance type size. | ||
TagOptions are created by specifying a key with a selection of values. | ||
TagOptions are created by specifying a key with a selection of values and can be associated with both portfolios and products. | ||
When launching a product, both the TagOptions associated with the product and the containing portfolio are made available. | ||
At the moment, TagOptions can only be disabled in the console. | ||
```ts fixture=basic-portfolio | ||
const tagOptions = new servicecatalog.TagOptions({ | ||
```ts fixture=portfolio-product | ||
const tagOptionsForPortfolio = new servicecatalog.TagOptions({ | ||
costCenter: ['Data Insights', 'Marketing'], | ||
}); | ||
portfolio.associateTagOptions(tagOptionsForPortfolio); | ||
const tagOptionsForProduct = new servicecatalog.TagOptions({ | ||
ec2InstanceType: ['A1', 'M4'], | ||
ec2InstanceSize: ['medium', 'large'], | ||
}); | ||
portfolio.associateTagOptions(tagOptions); | ||
product.associateTagOptions(tagOptionsForProduct); | ||
``` | ||
@@ -216,0 +223,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1304066
39
8968
374
+ Added@aws-cdk/assets@1.135.0(transitive)
+ Added@aws-cdk/aws-cloudwatch@1.135.0(transitive)
+ Added@aws-cdk/aws-codestarnotifications@1.135.0(transitive)
+ Added@aws-cdk/aws-events@1.135.0(transitive)
+ Added@aws-cdk/aws-iam@1.135.0(transitive)
+ Added@aws-cdk/aws-kms@1.135.0(transitive)
+ Added@aws-cdk/aws-s3@1.135.0(transitive)
+ Added@aws-cdk/aws-s3-assets@1.135.0(transitive)
+ Added@aws-cdk/aws-sns@1.135.0(transitive)
+ Added@aws-cdk/aws-sqs@1.135.0(transitive)
+ Added@aws-cdk/cloud-assembly-schema@1.135.0(transitive)
+ Added@aws-cdk/core@1.135.0(transitive)
+ Added@aws-cdk/cx-api@1.135.0(transitive)
+ Added@aws-cdk/region-info@1.135.0(transitive)
- Removed@aws-cdk/assets@1.134.0(transitive)
- Removed@aws-cdk/aws-cloudwatch@1.134.0(transitive)
- Removed@aws-cdk/aws-codestarnotifications@1.134.0(transitive)
- Removed@aws-cdk/aws-events@1.134.0(transitive)
- Removed@aws-cdk/aws-iam@1.134.0(transitive)
- Removed@aws-cdk/aws-kms@1.134.0(transitive)
- Removed@aws-cdk/aws-s3@1.134.0(transitive)
- Removed@aws-cdk/aws-s3-assets@1.134.0(transitive)
- Removed@aws-cdk/aws-sns@1.134.0(transitive)
- Removed@aws-cdk/aws-sqs@1.134.0(transitive)
- Removed@aws-cdk/cloud-assembly-schema@1.134.0(transitive)
- Removed@aws-cdk/core@1.134.0(transitive)
- Removed@aws-cdk/cx-api@1.134.0(transitive)
- Removed@aws-cdk/region-info@1.134.0(transitive)
Updated@aws-cdk/aws-iam@1.135.0
Updated@aws-cdk/aws-sns@1.135.0
Updated@aws-cdk/core@1.135.0