@cdk-cloudformation/tf-aws-s3bucket
Version:
Provides a S3 bucket resource.
496 lines • 95.4 kB
JavaScript
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnS3Bucket = exports.toJson_SseKmsEncryptedObjectsDefinition = exports.toJson_TagsDefinition3 = exports.toJson_AccessControlTranslationDefinition = exports.toJson_SourceSelectionCriteriaDefinition = exports.toJson_FilterDefinition = exports.toJson_DestinationDefinition = exports.toJson_ApplyServerSideEncryptionByDefaultDefinition = exports.toJson_RulesDefinition = exports.toJson_RuleDefinition = exports.toJson_TransitionDefinition = exports.toJson_NoncurrentVersionTransitionDefinition = exports.toJson_NoncurrentVersionExpirationDefinition = exports.toJson_ExpirationDefinition = exports.toJson_TagsDefinition2 = exports.toJson_WebsiteDefinition = exports.toJson_VersioningDefinition = exports.toJson_ServerSideEncryptionConfigurationDefinition = exports.toJson_ReplicationConfigurationDefinition = exports.toJson_ObjectLockConfigurationDefinition = exports.toJson_LoggingDefinition = exports.toJson_LifecycleRuleDefinition = exports.toJson_GrantDefinition = exports.toJson_CorsRuleDefinition = exports.toJson_TagsAllDefinition = exports.toJson_TagsDefinition = exports.toJson_CfnS3BucketProps = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
// Generated by cdk-import
const cdk = require("aws-cdk-lib");
/**
* Converts an object of type 'CfnS3BucketProps' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnS3BucketProps(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'AccelerationStatus': obj.accelerationStatus,
'Acl': obj.acl,
'Arn': obj.arn,
'Bucket': obj.bucket,
'BucketPrefix': obj.bucketPrefix,
'ForceDestroy': obj.forceDestroy,
'HostedZoneId': obj.hostedZoneId,
'Policy': obj.policy,
'RequestPayer': obj.requestPayer,
'Tags': obj.tags?.map(y => toJson_TagsDefinition(y)),
'TagsAll': obj.tagsAll?.map(y => toJson_TagsAllDefinition(y)),
'WebsiteDomain': obj.websiteDomain,
'WebsiteEndpoint': obj.websiteEndpoint,
'CorsRule': obj.corsRule?.map(y => toJson_CorsRuleDefinition(y)),
'Grant': obj.grant?.map(y => toJson_GrantDefinition(y)),
'LifecycleRule': obj.lifecycleRule?.map(y => toJson_LifecycleRuleDefinition(y)),
'Logging': obj.logging?.map(y => toJson_LoggingDefinition(y)),
'ObjectLockConfiguration': obj.objectLockConfiguration?.map(y => toJson_ObjectLockConfigurationDefinition(y)),
'ReplicationConfiguration': obj.replicationConfiguration?.map(y => toJson_ReplicationConfigurationDefinition(y)),
'ServerSideEncryptionConfiguration': obj.serverSideEncryptionConfiguration?.map(y => toJson_ServerSideEncryptionConfigurationDefinition(y)),
'Versioning': obj.versioning?.map(y => toJson_VersioningDefinition(y)),
'Website': obj.website?.map(y => toJson_WebsiteDefinition(y)),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnS3BucketProps = toJson_CfnS3BucketProps;
/**
* Converts an object of type 'TagsDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_TagsDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'MapKey': obj.mapKey,
'MapValue': obj.mapValue,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_TagsDefinition = toJson_TagsDefinition;
/**
* Converts an object of type 'TagsAllDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_TagsAllDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'MapKey': obj.mapKey,
'MapValue': obj.mapValue,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_TagsAllDefinition = toJson_TagsAllDefinition;
/**
* Converts an object of type 'CorsRuleDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CorsRuleDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'AllowedHeaders': obj.allowedHeaders?.map(y => y),
'AllowedMethods': obj.allowedMethods?.map(y => y),
'AllowedOrigins': obj.allowedOrigins?.map(y => y),
'ExposeHeaders': obj.exposeHeaders?.map(y => y),
'MaxAgeSeconds': obj.maxAgeSeconds,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CorsRuleDefinition = toJson_CorsRuleDefinition;
/**
* Converts an object of type 'GrantDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_GrantDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Id': obj.id,
'Permissions': obj.permissions?.map(y => y),
'Type': obj.type,
'Uri': obj.uri,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_GrantDefinition = toJson_GrantDefinition;
/**
* Converts an object of type 'LifecycleRuleDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_LifecycleRuleDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'AbortIncompleteMultipartUploadDays': obj.abortIncompleteMultipartUploadDays,
'Enabled': obj.enabled,
'Id': obj.id,
'Prefix': obj.prefix,
'Tags': obj.tags?.map(y => toJson_TagsDefinition2(y)),
'Expiration': obj.expiration?.map(y => toJson_ExpirationDefinition(y)),
'NoncurrentVersionExpiration': obj.noncurrentVersionExpiration?.map(y => toJson_NoncurrentVersionExpirationDefinition(y)),
'NoncurrentVersionTransition': obj.noncurrentVersionTransition?.map(y => toJson_NoncurrentVersionTransitionDefinition(y)),
'Transition': obj.transition?.map(y => toJson_TransitionDefinition(y)),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_LifecycleRuleDefinition = toJson_LifecycleRuleDefinition;
/**
* Converts an object of type 'LoggingDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_LoggingDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'TargetBucket': obj.targetBucket,
'TargetPrefix': obj.targetPrefix,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_LoggingDefinition = toJson_LoggingDefinition;
/**
* Converts an object of type 'ObjectLockConfigurationDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ObjectLockConfigurationDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'ObjectLockEnabled': obj.objectLockEnabled,
'Rule': obj.rule?.map(y => toJson_RuleDefinition(y)),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_ObjectLockConfigurationDefinition = toJson_ObjectLockConfigurationDefinition;
/**
* Converts an object of type 'ReplicationConfigurationDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ReplicationConfigurationDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Role': obj.role,
'Rules': obj.rules?.map(y => toJson_RulesDefinition(y)),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_ReplicationConfigurationDefinition = toJson_ReplicationConfigurationDefinition;
/**
* Converts an object of type 'ServerSideEncryptionConfigurationDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ServerSideEncryptionConfigurationDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Rule': obj.rule?.map(y => toJson_RuleDefinition(y)),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_ServerSideEncryptionConfigurationDefinition = toJson_ServerSideEncryptionConfigurationDefinition;
/**
* Converts an object of type 'VersioningDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_VersioningDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Enabled': obj.enabled,
'MfaDelete': obj.mfaDelete,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_VersioningDefinition = toJson_VersioningDefinition;
/**
* Converts an object of type 'WebsiteDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_WebsiteDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'ErrorDocument': obj.errorDocument,
'IndexDocument': obj.indexDocument,
'RedirectAllRequestsTo': obj.redirectAllRequestsTo,
'RoutingRules': obj.routingRules,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_WebsiteDefinition = toJson_WebsiteDefinition;
/**
* Converts an object of type 'TagsDefinition2' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_TagsDefinition2(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'MapKey': obj.mapKey,
'MapValue': obj.mapValue,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_TagsDefinition2 = toJson_TagsDefinition2;
/**
* Converts an object of type 'ExpirationDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ExpirationDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Date': obj.date,
'Days': obj.days,
'ExpiredObjectDeleteMarker': obj.expiredObjectDeleteMarker,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_ExpirationDefinition = toJson_ExpirationDefinition;
/**
* Converts an object of type 'NoncurrentVersionExpirationDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_NoncurrentVersionExpirationDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Days': obj.days,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_NoncurrentVersionExpirationDefinition = toJson_NoncurrentVersionExpirationDefinition;
/**
* Converts an object of type 'NoncurrentVersionTransitionDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_NoncurrentVersionTransitionDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Days': obj.days,
'StorageClass': obj.storageClass,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_NoncurrentVersionTransitionDefinition = toJson_NoncurrentVersionTransitionDefinition;
/**
* Converts an object of type 'TransitionDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_TransitionDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Date': obj.date,
'Days': obj.days,
'StorageClass': obj.storageClass,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_TransitionDefinition = toJson_TransitionDefinition;
/**
* Converts an object of type 'RuleDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_RuleDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'BucketKeyEnabled': obj.bucketKeyEnabled,
'ApplyServerSideEncryptionByDefault': obj.applyServerSideEncryptionByDefault?.map(y => toJson_ApplyServerSideEncryptionByDefaultDefinition(y)),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_RuleDefinition = toJson_RuleDefinition;
/**
* Converts an object of type 'RulesDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_RulesDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Id': obj.id,
'Prefix': obj.prefix,
'Priority': obj.priority,
'Status': obj.status,
'Destination': obj.destination?.map(y => toJson_DestinationDefinition(y)),
'Filter': obj.filter?.map(y => toJson_FilterDefinition(y)),
'SourceSelectionCriteria': obj.sourceSelectionCriteria?.map(y => toJson_SourceSelectionCriteriaDefinition(y)),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_RulesDefinition = toJson_RulesDefinition;
/**
* Converts an object of type 'ApplyServerSideEncryptionByDefaultDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ApplyServerSideEncryptionByDefaultDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'KmsMasterKeyId': obj.kmsMasterKeyId,
'SseAlgorithm': obj.sseAlgorithm,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_ApplyServerSideEncryptionByDefaultDefinition = toJson_ApplyServerSideEncryptionByDefaultDefinition;
/**
* Converts an object of type 'DestinationDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_DestinationDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'AccountId': obj.accountId,
'Bucket': obj.bucket,
'ReplicaKmsKeyId': obj.replicaKmsKeyId,
'StorageClass': obj.storageClass,
'AccessControlTranslation': obj.accessControlTranslation?.map(y => toJson_AccessControlTranslationDefinition(y)),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_DestinationDefinition = toJson_DestinationDefinition;
/**
* Converts an object of type 'FilterDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_FilterDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Prefix': obj.prefix,
'Tags': obj.tags?.map(y => toJson_TagsDefinition3(y)),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_FilterDefinition = toJson_FilterDefinition;
/**
* Converts an object of type 'SourceSelectionCriteriaDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_SourceSelectionCriteriaDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'SseKmsEncryptedObjects': obj.sseKmsEncryptedObjects?.map(y => toJson_SseKmsEncryptedObjectsDefinition(y)),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_SourceSelectionCriteriaDefinition = toJson_SourceSelectionCriteriaDefinition;
/**
* Converts an object of type 'AccessControlTranslationDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_AccessControlTranslationDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Owner': obj.owner,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_AccessControlTranslationDefinition = toJson_AccessControlTranslationDefinition;
/**
* Converts an object of type 'TagsDefinition3' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_TagsDefinition3(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'MapKey': obj.mapKey,
'MapValue': obj.mapValue,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_TagsDefinition3 = toJson_TagsDefinition3;
/**
* Converts an object of type 'SseKmsEncryptedObjectsDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_SseKmsEncryptedObjectsDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Enabled': obj.enabled,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_SseKmsEncryptedObjectsDefinition = toJson_SseKmsEncryptedObjectsDefinition;
/* eslint-enable max-len, quote-props */
/**
* A CloudFormation `TF::AWS::S3Bucket`
*
* @cloudformationResource TF::AWS::S3Bucket
* @stability external
* @link https://github.com/iann0036/cfn-tf-custom-types.git
*/
class CfnS3Bucket extends cdk.CfnResource {
/**
* Create a new `TF::AWS::S3Bucket`.
*
* @param scope - scope in which this resource is defined
* @param id - scoped id of the resource
* @param props - resource properties
*/
constructor(scope, id, props) {
super(scope, id, { type: CfnS3Bucket.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnS3BucketProps(props) });
this.props = props;
this.attrTfcfnid = cdk.Token.asString(this.getAtt('tfcfnid'));
this.attrBucketDomainName = cdk.Token.asString(this.getAtt('BucketDomainName'));
this.attrBucketRegionalDomainName = cdk.Token.asString(this.getAtt('BucketRegionalDomainName'));
this.attrId = cdk.Token.asString(this.getAtt('Id'));
this.attrRegion = cdk.Token.asString(this.getAtt('Region'));
}
}
exports.CfnS3Bucket = CfnS3Bucket;
_a = JSII_RTTI_SYMBOL_1;
CfnS3Bucket[_a] = { fqn: "@cdk-cloudformation/tf-aws-s3bucket.CfnS3Bucket", version: "1.0.0-alpha.7" };
/**
* The CloudFormation resource type name for this resource class.
*/
CfnS3Bucket.CFN_RESOURCE_TYPE_NAME = "TF::AWS::S3Bucket";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwQkFBMEI7QUFDMUIsbUNBQW1DO0FBK0luQzs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQix1QkFBdUIsQ0FBQyxHQUFpQztJQUN2RSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2Isb0JBQW9CLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtRQUM1QyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUc7UUFDZCxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUc7UUFDZCxRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU07UUFDcEIsY0FBYyxFQUFFLEdBQUcsQ0FBQyxZQUFZO1FBQ2hDLGNBQWMsRUFBRSxHQUFHLENBQUMsWUFBWTtRQUNoQyxjQUFjLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDaEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1FBQ3BCLGNBQWMsRUFBRSxHQUFHLENBQUMsWUFBWTtRQUNoQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxTQUFTLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCxlQUFlLEVBQUUsR0FBRyxDQUFDLGFBQWE7UUFDbEMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLGVBQWU7UUFDdEMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsT0FBTyxFQUFF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USxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7O0FBdERILGtDQXVEQzs7O0FBdERDOztFQUVFO0FBQ3FCLGtDQUFzQixHQUFHLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGNkay1pbXBvcnRcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgUzMgYnVja2V0IHJlc291cmNlLlxuICpcbiAqIC0+IFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBmb3IgbWFuYWdpbmcgUzMgaW4gYW4gQVdTIFBhcnRpdGlvbi4gVG8gbWFuYWdlIFtTMyBvbiBPdXRwb3N0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvUzNvbk91dHBvc3RzLmh0bWwpLCBzZWUgdGhlIFtgYXdzX3MzY29udHJvbF9idWNrZXRgXSgvZG9jcy9wcm92aWRlcnMvYXdzL3IvczNjb250cm9sX2J1Y2tldC5odG1sKSByZXNvdXJjZS5cbiAqXG4gKiBAc2NoZW1hIENmblMzQnVja2V0UHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5TM0J1Y2tldFByb3BzIHtcbiAgLyoqXG4gICAqIFNldHMgdGhlIGFjY2VsZXJhdGUgY29uZmlndXJhdGlvbiBvZiBhbiBleGlzdGluZyBidWNrZXQuIENhbiBiZSBgRW5hYmxlZGAgb3IgYFN1c3BlbmRlZGAuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuUzNCdWNrZXRQcm9wcyNBY2NlbGVyYXRpb25TdGF0dXNcbiAgICovXG4gIHJlYWRvbmx5IGFjY2VsZXJhdGlvblN0YXR1cz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFtjYW5uZWQgQUNMXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9hY2wtb3ZlcnZpZXcuaHRtbCNjYW5uZWQtYWNsKSB0byBhcHBseS4gVmFsaWQgdmFsdWVzIGFyZSBgcHJpdmF0ZWAsIGBwdWJsaWMtcmVhZGAsIGBwdWJsaWMtcmVhZC13cml0ZWAsIGBhd3MtZXhlYy1yZWFkYCwgYGF1dGhlbnRpY2F0ZWQtcmVhZGAsIGFuZCBgbG9nLWRlbGl2ZXJ5LXdyaXRlYC4gRGVmYXVsdHMgdG8gYHByaXZhdGVgLiAgQ29uZmxpY3RzIHdpdGggYGdyYW50YC5cbiAgICpcbiAgICogQGRlZmF1bHQgcHJpdmF0ZWAuICBDb25mbGljdHMgd2l0aCBgZ3JhbnRgLlxuICAgKiBAc2NoZW1hIENmblMzQnVja2V0UHJvcHMjQWNsXG4gICAqL1xuICByZWFkb25seSBhY2w/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuUzNCdWNrZXRQcm9wcyNBcm5cbiAgICovXG4gIHJlYWRvbmx5IGFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGJ1Y2tldC4gSWYgb21pdHRlZCwgVGVycmFmb3JtIHdpbGwgYXNzaWduIGEgcmFuZG9tLCB1bmlxdWUgbmFtZS4gTXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gNjMgY2hhcmFjdGVycyBpbiBsZW5ndGguXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuUzNCdWNrZXRQcm9wcyNCdWNrZXRcbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHVuaXF1ZSBidWNrZXQgbmFtZSBiZWdpbm5pbmcgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeC4gQ29uZmxpY3RzIHdpdGggYGJ1Y2tldGAuIE11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDM3IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLlxuICAgKlxuICAgKiBAc2NoZW1hIENmblMzQnVja2V0UHJvcHMjQnVja2V0UHJlZml4XG4gICAqL1xuICByZWFkb25seSBidWNrZXRQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiB0aGF0IGluZGljYXRlcyBhbGwgb2JqZWN0cyAoaW5jbHVkaW5nIGFueSBbbG9ja2VkIG9iamVjdHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L29iamVjdC1sb2NrLW92ZXJ2aWV3Lmh0bWwpKSBzaG91bGQgYmUgZGVsZXRlZCBmcm9tIHRoZSBidWNrZXQgc28gdGhhdCB0aGUgYnVja2V0IGNhbiBiZSBkZXN0cm95ZWQgd2l0aG91dCBlcnJvci4gVGhlc2Ugb2JqZWN0cyBhcmUgKm5vdCogcmVjb3ZlcmFibGUuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuUzNCdWNrZXRQcm9wcyNGb3JjZURlc3Ryb3lcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlRGVzdHJveT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuUzNCdWNrZXRQcm9wcyNIb3N0ZWRab25lSWRcbiAgICovXG4gIHJlYWRvbmx5IGhvc3RlZFpvbmVJZD86IHN0cmluZztcblxuICAvKipcbiAgICogQSB2YWxpZCBbYnVja2V0IHBvbGljeV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvZXhhbXBsZS1idWNrZXQtcG9saWNpZXMuaHRtbCkgSlNPTiBkb2N1bWVudC4gTm90ZSB0aGF0IGlmIHRoZSBwb2xpY3kgZG9jdW1lbnQgaXMgbm90IHNwZWNpZmljIGVub3VnaCAoYnV0IHN0aWxsIHZhbGlkKSwgVGVycmFmb3JtIG1heSB2aWV3IHRoZSBwb2xpY3kgYXMgY29uc3RhbnRseSBjaGFuZ2luZyBpbiBhIGB0ZXJyYWZvcm0gcGxhbmAuIEluIHRoaXMgY2FzZSwgcGxlYXNlIG1ha2Ugc3VyZSB5b3UgdXNlIHRoZSB2ZXJib3NlL3NwZWNpZmljIHZlcnNpb24gb2YgdGhlIHBvbGljeS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYnVpbGRpbmcgQVdTIElBTSBwb2xpY3kgZG9jdW1lbnRzIHdpdGggVGVycmFmb3JtLCBzZWUgdGhlIFtBV1MgSUFNIFBvbGljeSBEb2N1bWVudCBHdWlkZV0oaHR0cHM6Ly9sZWFybi5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9hd3MvaWFtLXBvbGljeSkuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuUzNCdWNrZXRQcm9wcyNQb2xpY3lcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeT86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdobyBzaG91bGQgYmVhciB0aGUgY29zdCBvZiBBbWF6b24gUzMgZGF0YSB0cmFuc2Zlci5cbiAgICogQ2FuIGJlIGVpdGhlciBgQnVja2V0T3duZXJgIG9yIGBSZXF1ZXN0ZXJgLiBCeSBkZWZhdWx0LCB0aGUgb3duZXIgb2YgdGhlIFMzIGJ1Y2tldCB3b3VsZCBpbmN1clxuICAgKiB0aGUgY29zdHMgb2YgYW55IGRhdGEgdHJhbnNmZXIuIFNlZSBbUmVxdWVzdGVyIFBheXMgQnVja2V0c10oaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9SZXF1ZXN0ZXJQYXlzQnVja2V0cy5odG1sKVxuICAgKiBkZXZlbG9wZXIgZ3VpZGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuUzNCdWNrZXRQcm9wcyNSZXF1ZXN0UGF5ZXJcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RQYXllcj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBtYXAgb2YgdGFncyB0byBhc3NpZ24gdG8gdGhlIGJ1Y2tldC4gSWYgY29uZmlndXJlZCB3aXRoIGEgcHJvdmlkZXIgW2BkZWZhdWx0X3RhZ3NgIGNvbmZpZ3VyYXRpb24gYmxvY2tdKC9kb2NzL3Byb3ZpZGVycy9hd3MvaW5kZXguaHRtbCNkZWZhdWx0X3RhZ3MtY29uZmlndXJhdGlvbi1ibG9jaykgcHJlc2VudCwgdGFncyB3aXRoIG1hdGNoaW5nIGtleXMgd2lsbCBvdmVyd3JpdGUgdGhvc2UgZGVmaW5lZCBhdCB0aGUgcHJvdmlkZXItbGV2ZWwuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuUzNCdWNrZXRQcm9wcyNUYWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogVGFnc0RlZmluaXRpb25bXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5TM0J1Y2tldFByb3BzI1RhZ3NBbGxcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3NBbGw/OiBUYWdzQWxsRGVmaW5pdGlvbltdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmblMzQnVja2V0UHJvcHMjV2Vic2l0ZURvbWFpblxuICAgKi9cbiAgcmVhZG9ubHkgd2Vic2l0ZURvbWFpbj86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5TM0J1Y2tldFByb3BzI1dlYnNpdGVFbmRwb2ludFxuICAgKi9cbiAgcmVhZG9ubHkgd2Vic2l0ZUVuZHBvaW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmblMzQnVja2V0UHJvcHMjQ29yc1J1bGVcbiAgICovXG4gIHJlYWRvbmx5IGNvcnNSdWxlPzogQ29yc1J1bGVEZWZpbml0aW9uW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuUzNCdWNrZXRQcm9wcyNHcmFudFxuICAgKi9cbiAgcmVhZG9ubHkgZ3JhbnQ/OiBHcmFudERlZmluaXRpb25bXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5TM0J1Y2tldFByb3BzI0xpZmVjeWNsZVJ1bGVcbiAgICovXG4gIHJlYWRvbmx5IGxpZmVjeWNsZVJ1bGU/OiBMaWZlY3ljbGVSdWxlRGVmaW5pdGlvbltdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmblMzQnVja2V0UHJvcHMjTG9nZ2luZ1xuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2luZz86IExvZ2dpbmdEZWZpbml0aW9uW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuUzNCdWNrZXRQcm9wcyNPYmplY3RMb2NrQ29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgb2JqZWN0TG9ja0NvbmZpZ3VyYXRpb24/OiBPYmplY3RMb2NrQ29uZmlndXJhdGlvbkRlZmluaXRpb25bXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5TM0J1Y2tldFByb3BzI1JlcGxpY2F0aW9uQ29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGljYXRpb25Db25maWd1cmF0aW9uPzogUmVwbGljYXRpb25Db25maWd1cmF0aW9uRGVmaW5pdGlvbltdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmblMzQnVja2V0UHJvcHMjU2VydmVyU2lkZUVuY3J5cHRpb25Db25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24/OiBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb25EZWZpbml0aW9uW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuUzNCdWNrZXRQcm9wcyNWZXJzaW9uaW5nXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uaW5nPzogVmVyc2lvbmluZ0RlZmluaXRpb25bXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5TM0J1Y2tldFByb3BzI1dlYnNpdGVcbiAgICovXG4gIHJlYWRvbmx5IHdlYnNpdGU/OiBXZWJzaXRlRGVmaW5pdGlvblt