UNPKG

cdk-iam-floyd

Version:

AWS IAM policy statement generator with fluent interface for AWS CDK

875 lines 80 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Ecr = void 0; const shared_1 = require("../../shared"); /** * Statement provider for service [ecr](https://docs.aws.amazon.com/service-authorization/latest/reference/list_ecr.html). * * @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement */ class Ecr extends shared_1.PolicyStatement { /** * Grants permission to check the availability of multiple image layers in a specified registry and repository * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_BatchCheckLayerAvailability.html */ toBatchCheckLayerAvailability() { return this.to('BatchCheckLayerAvailability'); } /** * Grants permission to delete a list of specified images within a specified repository * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_BatchDeleteImage.html */ toBatchDeleteImage() { return this.to('BatchDeleteImage'); } /** * Grants permission to get detailed information for specified images within a specified repository * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_BatchGetImage.html */ toBatchGetImage() { return this.to('BatchGetImage'); } /** * Grants permission to retrieve repository scanning configuration for a list of repositories * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_BatchGetRepositoryScanningConfiguration.html */ toBatchGetRepositoryScanningConfiguration() { return this.to('BatchGetRepositoryScanningConfiguration'); } /** * Grants permission to inform Amazon ECR that the image layer upload for a specified registry, repository name, and upload ID, has completed * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_CompleteLayerUpload.html */ toCompleteLayerUpload() { return this.to('CompleteLayerUpload'); } /** * Grants permission to create new pull-through cache rule * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_CreatePullThroughCacheRule.html */ toCreatePullThroughCacheRule() { return this.to('CreatePullThroughCacheRule'); } /** * Grants permission to create an image repository * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_CreateRepository.html */ toCreateRepository() { return this.to('CreateRepository'); } /** * Grants permission to create the repository creation template * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_CreateRepositoryCreationTemplate.html */ toCreateRepositoryCreationTemplate() { return this.to('CreateRepositoryCreationTemplate'); } /** * Grants permission to delete the specified lifecycle policy * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DeleteLifecyclePolicy.html */ toDeleteLifecyclePolicy() { return this.to('DeleteLifecyclePolicy'); } /** * Grants permission to delete the pull-through cache rule * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DeletePullThroughCacheRule.html */ toDeletePullThroughCacheRule() { return this.to('DeletePullThroughCacheRule'); } /** * Grants permission to delete the registry policy * * Access Level: Permissions management, Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DeleteRegistryPolicy.html */ toDeleteRegistryPolicy() { return this.to('DeleteRegistryPolicy'); } /** * Grants permission to delete an existing image repository * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DeleteRepository.html */ toDeleteRepository() { return this.to('DeleteRepository'); } /** * Grants permission to delete the repository creation template * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DeleteRepositoryCreationTemplate.html */ toDeleteRepositoryCreationTemplate() { return this.to('DeleteRepositoryCreationTemplate'); } /** * Grants permission to delete the repository policy from a specified repository * * Access Level: Permissions management, Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DeleteRepositoryPolicy.html */ toDeleteRepositoryPolicy() { return this.to('DeleteRepositoryPolicy'); } /** * Grants permission to delete the signing configuration for the registry * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DeleteSigningConfiguration */ toDeleteSigningConfiguration() { return this.to('DeleteSigningConfiguration'); } /** * Grants permission to deregister a pull time update exclusion * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DeregisterPullTimeUpdateExclusion */ toDeregisterPullTimeUpdateExclusion() { return this.to('DeregisterPullTimeUpdateExclusion'); } /** * Grants permission to retrieve replication status about an image in a registry, including failure reason if replication fails * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeImageReplicationStatus.html */ toDescribeImageReplicationStatus() { return this.to('DescribeImageReplicationStatus'); } /** * Grants permission to describe the image scan findings for the specified image * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeImageScanFindings.html */ toDescribeImageScanFindings() { return this.to('DescribeImageScanFindings'); } /** * Grants permission to retrieve signing status about an image in a specified registry * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeImageSigningStatus */ toDescribeImageSigningStatus() { return this.to('DescribeImageSigningStatus'); } /** * Grants permission to get metadata about the images in a repository, including image size, image tags, and creation date * * Access Level: List * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeImages.html */ toDescribeImages() { return this.to('DescribeImages'); } /** * Grants permission to describe the pull-through cache rules * * Access Level: List * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribePullThroughCacheRules.html */ toDescribePullThroughCacheRules() { return this.to('DescribePullThroughCacheRules'); } /** * Grants permission to describe the registry settings * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeRegistry.html */ toDescribeRegistry() { return this.to('DescribeRegistry'); } /** * Grants permission to describe image repositories in a registry * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeRepositories.html */ toDescribeRepositories() { return this.to('DescribeRepositories'); } /** * Grants permission to describe the repository creation template * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeRepositoryCreationTemplates.html */ toDescribeRepositoryCreationTemplates() { return this.to('DescribeRepositoryCreationTemplates'); } /** * Grants permission to retrieve account settings * * Access Level: Read * * Possible conditions: * - .ifAccountSetting() * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetAccountSetting.html */ toGetAccountSetting() { return this.to('GetAccountSetting'); } /** * Grants permission to retrieve a token that is valid for a specified registry for 12 hours * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetAuthorizationToken.html */ toGetAuthorizationToken() { return this.to('GetAuthorizationToken'); } /** * Grants permission to retrieve the download URL corresponding to an image layer * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetDownloadUrlForLayer.html */ toGetDownloadUrlForLayer() { return this.to('GetDownloadUrlForLayer'); } /** * Grants permission to retrieve the specified lifecycle policy * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetLifecyclePolicy.html */ toGetLifecyclePolicy() { return this.to('GetLifecyclePolicy'); } /** * Grants permission to retrieve the results of the specified lifecycle policy preview request * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetLifecyclePolicyPreview.html */ toGetLifecyclePolicyPreview() { return this.to('GetLifecyclePolicyPreview'); } /** * Grants permission to retrieve the registry policy * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetRegistryPolicy.html */ toGetRegistryPolicy() { return this.to('GetRegistryPolicy'); } /** * Grants permission to retrieve registry scanning configuration * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetRegistryScanningConfiguration.html */ toGetRegistryScanningConfiguration() { return this.to('GetRegistryScanningConfiguration'); } /** * Grants permission to retrieve the repository policy for a specified repository * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetRepositoryPolicy.html */ toGetRepositoryPolicy() { return this.to('GetRepositoryPolicy'); } /** * Grants permission to retrieve the signing configuration for the registry * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetSigningConfiguration */ toGetSigningConfiguration() { return this.to('GetSigningConfiguration'); } /** * Grants permission to notify Amazon ECR that you intend to upload an image layer * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_InitiateLayerUpload.html */ toInitiateLayerUpload() { return this.to('InitiateLayerUpload'); } /** * Grants permission to list all the image IDs for a given repository * * Access Level: List * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ListImages.html */ toListImages() { return this.to('ListImages'); } /** * Grants permission to list pull time update exclusions for the registry * * Access Level: List * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ListPullTimeUpdateExclusions */ toListPullTimeUpdateExclusions() { return this.to('ListPullTimeUpdateExclusions'); } /** * Grants permission to list the tags for an Amazon ECR resource * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ListTagsForResource.html */ toListTagsForResource() { return this.to('ListTagsForResource'); } /** * Grants permission to update account settings * * Access Level: Write * * Possible conditions: * - .ifAccountSetting() * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_PutAccountSetting.html */ toPutAccountSetting() { return this.to('PutAccountSetting'); } /** * Grants permission to create or update the image manifest associated with an image * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_PutImage.html */ toPutImage() { return this.to('PutImage'); } /** * Grants permission to update the image scanning configuration for a repository * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_PutImageScanningConfiguration.html */ toPutImageScanningConfiguration() { return this.to('PutImageScanningConfiguration'); } /** * Grants permission to update the image tag mutability settings for a repository * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_PutImageTagMutability.html */ toPutImageTagMutability() { return this.to('PutImageTagMutability'); } /** * Grants permission to create or update a lifecycle policy * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_PutLifecyclePolicy.html */ toPutLifecyclePolicy() { return this.to('PutLifecyclePolicy'); } /** * Grants permission to update the registry policy * * Access Level: Permissions management, Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_PutRegistryPolicy.html */ toPutRegistryPolicy() { return this.to('PutRegistryPolicy'); } /** * Grants permission to update registry scanning configuration * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_PutRegistryScanningConfiguration.html */ toPutRegistryScanningConfiguration() { return this.to('PutRegistryScanningConfiguration'); } /** * Grants permission to update the replication configuration for the registry * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_PutReplicationConfiguration.html */ toPutReplicationConfiguration() { return this.to('PutReplicationConfiguration'); } /** * Grants permission to update the signing configuration for the registry * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_PutSigningConfiguration */ toPutSigningConfiguration() { return this.to('PutSigningConfiguration'); } /** * Grants permission to register a pull time update exclusion * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_RegisterPullTimeUpdateExclusion */ toRegisterPullTimeUpdateExclusion() { return this.to('RegisterPullTimeUpdateExclusion'); } /** * Grants permission to apply a repository policy on a specified repository to control access permissions * * Access Level: Permissions management, Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_SetRepositoryPolicy.html */ toSetRepositoryPolicy() { return this.to('SetRepositoryPolicy'); } /** * Grants permission to start an image scan * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_StartImageScan.html */ toStartImageScan() { return this.to('StartImageScan'); } /** * Grants permission to start a preview of the specified lifecycle policy * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_StartLifecyclePolicyPreview.html */ toStartLifecyclePolicyPreview() { return this.to('StartLifecyclePolicyPreview'); } /** * Grants permission to tag an Amazon ECR resource * * Access Level: Tagging, Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_TagResource.html */ toTagResource() { return this.to('TagResource'); } /** * Grants permission to untag an Amazon ECR resource * * Access Level: Tagging, Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_UntagResource.html */ toUntagResource() { return this.to('UntagResource'); } /** * Grants permission to get update the storage class of a specified image within a specified repository * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_UpdateImageStorageClass */ toUpdateImageStorageClass() { return this.to('UpdateImageStorageClass'); } /** * Grants permission to update the pull-through cache rule * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_UpdatePullThroughCacheRule.html */ toUpdatePullThroughCacheRule() { return this.to('UpdatePullThroughCacheRule'); } /** * Grants permission to update the repository creation template * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_UpdateRepositoryCreationTemplate.html */ toUpdateRepositoryCreationTemplate() { return this.to('UpdateRepositoryCreationTemplate'); } /** * Grants permission to upload an image layer part to Amazon ECR * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_UploadLayerPart.html */ toUploadLayerPart() { return this.to('UploadLayerPart'); } /** * Grants permission to validate the pull-through cache rule * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ValidatePullThroughCacheRule.html */ toValidatePullThroughCacheRule() { return this.to('ValidatePullThroughCacheRule'); } /** * Grants permission to retrieve the image from the upstream registry and import it to your private registry * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache.html */ toBatchImportUpstreamImage() { return this.to('BatchImportUpstreamImage'); } /** * Grants permission to retrieve the status about an image copy * * Access Level: Read * * https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache.html */ toGetImageCopyStatus() { return this.to('GetImageCopyStatus'); } /** * Grants permission to replicate images to the destination registry * * Access Level: Write * * https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry-permissions.html */ toReplicateImage() { return this.to('ReplicateImage'); } /** * Adds a resource of type repository to the statement * * https://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html * * @param repositoryName - Identifier for the repositoryName. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. * * Possible conditions: * - .ifAwsResourceTag() * - .ifResourceTag() */ onRepository(repositoryName, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:ecr:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:repository/${repositoryName}`); } /** * Filters access by the allowed set of values for each of the tags * * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag * * Applies to actions: * - .toCreateRepository() * - .toListTagsForResource() * - .toTagResource() * * @param tagKey The tag key to check * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAwsRequestTag(tagKey, value, operator) { return this.if(`aws:RequestTag/${tagKey}`, value, operator ?? 'StringLike'); } /** * Filters access by tag-value associated with the resource * * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag * * Applies to actions: * - .toBatchCheckLayerAvailability() * - .toBatchDeleteImage() * - .toBatchGetImage() * - .toBatchGetRepositoryScanningConfiguration() * - .toCompleteLayerUpload() * - .toCreateRepository() * - .toDeleteLifecyclePolicy() * - .toDeleteRepository() * - .toDeleteRepositoryPolicy() * - .toDescribeImageReplicationStatus() * - .toDescribeImageScanFindings() * - .toDescribeImageSigningStatus() * - .toDescribeImages() * - .toDescribeRepositories() * - .toGetDownloadUrlForLayer() * - .toGetLifecyclePolicy() * - .toGetLifecyclePolicyPreview() * - .toGetRepositoryPolicy() * - .toInitiateLayerUpload() * - .toListImages() * - .toListTagsForResource() * - .toPutImage() * - .toPutImageScanningConfiguration() * - .toPutImageTagMutability() * - .toPutLifecyclePolicy() * - .toSetRepositoryPolicy() * - .toStartImageScan() * - .toStartLifecyclePolicyPreview() * - .toTagResource() * - .toUntagResource() * - .toUpdateImageStorageClass() * - .toUploadLayerPart() * - .toBatchImportUpstreamImage() * - .toGetImageCopyStatus() * - .toReplicateImage() * * Applies to resource types: * - repository * * @param tagKey The tag key to check * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAwsResourceTag(tagKey, value, operator) { return this.if(`aws:ResourceTag/${tagKey}`, value, operator ?? 'StringLike'); } /** * Filters access by the presence of mandatory tags in the request * * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys * * Applies to actions: * - .toCreateRepository() * - .toListTagsForResource() * - .toTagResource() * - .toUntagResource() * * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAwsTagKeys(value, operator) { return this.if(`aws:TagKeys`, value, operator ?? 'StringLike'); } /** * Filters access by the ECR account setting name * * https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-conditionkeys * * Applies to actions: * - .toGetAccountSetting() * - .toPutAccountSetting() * * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAccountSetting(value, operator) { return this.if(`AccountSetting`, value, operator ?? 'StringLike'); } /** * Filters access by tag-value associated with the resource * * https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-conditionkeys * * Applies to actions: * - .toBatchCheckLayerAvailability() * - .toBatchDeleteImage() * - .toBatchGetImage() * - .toBatchGetRepositoryScanningConfiguration() * - .toCompleteLayerUpload() * - .toCreateRepository() * - .toDeleteLifecyclePolicy() * - .toDeleteRepository() * - .toDeleteRepositoryPolicy() * - .toDescribeImageReplicationStatus() * - .toDescribeImageScanFindings() * - .toDescribeImageSigningStatus() * - .toDescribeImages() * - .toDescribeRepositories() * - .toGetDownloadUrlForLayer() * - .toGetLifecyclePolicy() * - .toGetLifecyclePolicyPreview() * - .toGetRepositoryPolicy() * - .toInitiateLayerUpload() * - .toListImages() * - .toListTagsForResource() * - .toPutImage() * - .toPutImageScanningConfiguration() * - .toPutImageTagMutability() * - .toPutLifecyclePolicy() * - .toSetRepositoryPolicy() * - .toStartImageScan() * - .toStartLifecyclePolicyPreview() * - .toTagResource() * - .toUntagResource() * - .toUpdateImageStorageClass() * - .toUploadLayerPart() * - .toBatchImportUpstreamImage() * - .toGetImageCopyStatus() * - .toReplicateImage() * * Applies to resource types: * - repository * * @param tagKey The tag key to check * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifResourceTag(tagKey, value, operator) { return this.if(`ResourceTag/${tagKey}`, value, operator ?? 'StringLike'); } /** * Statement provider for service [ecr](https://docs.aws.amazon.com/service-authorization/latest/reference/list_ecr.html). * */ constructor(props) { super(props); this.servicePrefix = 'ecr'; this.accessLevelList = { Read: [ 'BatchCheckLayerAvailability', 'BatchGetImage', 'BatchGetRepositoryScanningConfiguration', 'DescribeImageReplicationStatus', 'DescribeImageScanFindings', 'DescribeImageSigningStatus', 'DescribeRegistry', 'DescribeRepositories', 'DescribeRepositoryCreationTemplates', 'GetAccountSetting', 'GetAuthorizationToken', 'GetDownloadUrlForLayer', 'GetLifecyclePolicy', 'GetLifecyclePolicyPreview', 'GetRegistryPolicy', 'GetRegistryScanningConfiguration', 'GetRepositoryPolicy', 'GetSigningConfiguration', 'ListTagsForResource', 'ValidatePullThroughCacheRule', 'GetImageCopyStatus' ], Write: [ 'BatchDeleteImage', 'CompleteLayerUpload', 'CreatePullThroughCacheRule', 'CreateRepository', 'CreateRepositoryCreationTemplate', 'DeleteLifecyclePolicy', 'DeletePullThroughCacheRule', 'DeleteRegistryPolicy', 'DeleteRepository', 'DeleteRepositoryCreationTemplate', 'DeleteRepositoryPolicy', 'DeleteSigningConfiguration', 'DeregisterPullTimeUpdateExclusion', 'InitiateLayerUpload', 'PutAccountSetting', 'PutImage', 'PutImageScanningConfiguration', 'PutImageTagMutability', 'PutLifecyclePolicy', 'PutRegistryPolicy', 'PutRegistryScanningConfiguration', 'PutReplicationConfiguration', 'PutSigningConfiguration', 'RegisterPullTimeUpdateExclusion', 'SetRepositoryPolicy', 'StartImageScan', 'StartLifecyclePolicyPreview', 'TagResource', 'UntagResource', 'UpdateImageStorageClass', 'UpdatePullThroughCacheRule', 'UpdateRepositoryCreationTemplate', 'UploadLayerPart', 'BatchImportUpstreamImage', 'ReplicateImage' ], 'Permissions management': [ 'DeleteRegistryPolicy', 'DeleteRepositoryPolicy', 'PutRegistryPolicy', 'SetRepositoryPolicy' ], List: [ 'DescribeImages', 'DescribePullThroughCacheRules', 'ListImages', 'ListPullTimeUpdateExclusions' ], Tagging: [ 'TagResource', 'UntagResource' ] }; } } exports.Ecr = Ecr; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZWNyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlDQUF5RDtBQUd6RDs7OztHQUlHO0FBQ0gsTUFBYSxHQUFJLFNBQVEsd0JBQWU7SUFHdEM7Ozs7OztPQU1HO0lBQ0ksNkJBQTZCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSx5Q0FBeUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksNEJBQTRCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGtDQUFrQztRQUN2QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksdUJBQXVCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxD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QWU7Z0JBQ2YseUJBQXlCO2dCQUN6Qiw0QkFBNEI7Z0JBQzVCLGtDQUFrQztnQkFDbEMsaUJBQWlCO2dCQUNqQiwwQkFBMEI7Z0JBQzFCLGdCQUFnQjthQUNqQjtZQUNELHdCQUF3QixFQUFFO2dCQUN4QixzQkFBc0I7Z0JBQ3RCLHdCQUF3QjtnQkFDeEIsbUJBQW1CO2dCQUNuQixxQkFBcUI7YUFDdEI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osZ0JBQWdCO2dCQUNoQiwrQkFBK0I7Z0JBQy9CLFlBQVk7Z0JBQ1osOEJBQThCO2FBQy9CO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLGFBQWE7Z0JBQ2IsZUFBZTthQUNoQjtTQUNGLENBQUM7SUF3TEYsQ0FBQztDQUNGO0FBbjZCRCxrQkFtNkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjZXNzTGV2ZWxMaXN0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FjY2Vzcy1sZXZlbCc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQsIE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IGF3c19pYW0gYXMgaWFtIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbi8qKlxuICogU3RhdGVtZW50IHByb3ZpZGVyIGZvciBzZXJ2aWNlIFtlY3JdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X2Vjci5odG1sKS5cbiAqXG4gKiBAcGFyYW0gc2lkIFtTSURdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfc2lkLmh0bWwpIG9mIHRoZSBzdGF0ZW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEVjciBleHRlbmRzIFBvbGljeVN0YXRlbWVudCB7XG4gIHB1YmxpYyBzZXJ2aWNlUHJlZml4ID0gJ2Vjcic7XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgb2YgbXVsdGlwbGUgaW1hZ2UgbGF5ZXJzIGluIGEgc3BlY2lmaWVkIHJlZ2lzdHJ5IGFuZCByZXBvc2l0b3J5XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNSL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0JhdGNoQ2hlY2tMYXllckF2YWlsYWJpbGl0eS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9CYXRjaENoZWNrTGF5ZXJBdmFpbGFiaWxpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0JhdGNoQ2hlY2tMYXllckF2YWlsYWJpbGl0eScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBhIGxpc3Qgb2Ygc3BlY2lmaWVkIGltYWdlcyB3aXRoaW4gYSBzcGVjaWZpZWQgcmVwb3NpdG9yeVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1IvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQmF0Y2hEZWxldGVJbWFnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9CYXRjaERlbGV0ZUltYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdCYXRjaERlbGV0ZUltYWdlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGZvciBzcGVjaWZpZWQgaW1hZ2VzIHdpdGhpbiBhIHNwZWNpZmllZCByZXBvc2l0b3J5XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNSL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0JhdGNoR2V0SW1hZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQmF0Y2hHZXRJbWFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQmF0Y2hHZXRJbWFnZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIHJlcG9zaXRvcnkgc2Nhbm5pbmcgY29uZmlndXJhdGlvbiBmb3IgYSBsaXN0IG9mIHJlcG9zaXRvcmllc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9CYXRjaEdldFJlcG9zaXRvcnlTY2FubmluZ0NvbmZpZ3VyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQmF0Y2hHZXRSZXBvc2l0b3J5U2Nhbm5pbmdDb25maWd1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdCYXRjaEdldFJlcG9zaXRvcnlTY2FubmluZ0NvbmZpZ3VyYXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBpbmZvcm0gQW1hem9uIEVDUiB0aGF0IHRoZSBpbWFnZSBsYXllciB1cGxvYWQgZm9yIGEgc3BlY2lmaWVkIHJlZ2lzdHJ5LCByZXBvc2l0b3J5IG5hbWUsIGFuZCB1cGxvYWQgSUQsIGhhcyBjb21wbGV0ZWRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNSL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NvbXBsZXRlTGF5ZXJVcGxvYWQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ29tcGxldGVMYXllclVwbG9hZCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ29tcGxldGVMYXllclVwbG9hZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBuZXcgcHVsbC10aHJvdWdoIGNhY2hlIHJ1bGVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNSL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZVB1bGxUaHJvdWdoQ2FjaGVSdWxlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVB1bGxUaHJvdWdoQ2FjaGVSdWxlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVQdWxsVGhyb3VnaENhY2hlUnVsZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhbiBpbWFnZSByZXBvc2l0b3J5XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVSZXBvc2l0b3J5Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVJlcG9zaXRvcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZVJlcG9zaXRvcnknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgdGhlIHJlcG9zaXRvcnkgY3JlYXRpb24gdGVtcGxhdGVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNSL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZVJlcG9zaXRvcnlDcmVhdGlvblRlbXBsYXRlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVJlcG9zaXRvcnlDcmVhdGlvblRlbXBsYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVSZXBvc2l0b3J5Q3JlYXRpb25UZW1wbGF0ZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGUgc3BlY2lmaWVkIGxpZmVjeWNsZSBwb2xpY3lcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNSL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RlbGV0ZUxpZmVjeWNsZVBvbGljeS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVMaWZlY3ljbGVQb2xpY3koKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZUxpZmVjeWNsZVBvbGljeScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGUgcHVsbC10aHJvdWdoIGNhY2hlIHJ1bGVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNSL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RlbGV0ZVB1bGxUaHJvdWdoQ2FjaGVSdWxlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZVB1bGxUaHJvdWdoQ2FjaGVSdWxlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVQdWxsVGhyb3VnaENhY2hlUnVsZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGUgcmVnaXN0cnkgcG9saWN5XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUGVybWlzc2lvbnMgbWFuYWdlbWVudCwgV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVSZWdpc3RyeVBvbGljeS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVSZWdpc3RyeVBvbGljeSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlUmVnaXN0cnlQb2xpY3knKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgYW4gZXhpc3RpbmcgaW1hZ2UgcmVwb3NpdG9yeVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1IvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlUmVwb3NpdG9yeS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVSZXBvc2l0b3J5KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVSZXBvc2l0b3J5Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSByZXBvc2l0b3J5IGNyZWF0aW9uIHRlbXBsYXRlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVSZXBvc2l0b3J5Q3JlYXRpb25UZW1wbGF0ZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVSZXBvc2l0b3J5Q3JlYXRpb25UZW1wbGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlUmVwb3NpdG9yeUNyZWF0aW9uVGVtcGxhdGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgdGhlIHJlcG9zaXRvcnkgcG9saWN5IGZyb20gYSBzcGVjaWZpZWQgcmVwb3NpdG9yeVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFBlcm1pc3Npb25zIG1hbmFnZW1lbnQsIFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1IvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlUmVwb3NpdG9yeVBvbGljeS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVSZXBvc2l0b3J5UG9saWN5KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVSZXBvc2l0b3J5UG9saWN5Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBzaWduaW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSByZWdpc3RyeVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1IvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlU2lnbmluZ0NvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZVNpZ25pbmdDb25maWd1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVTaWduaW5nQ29uZmlndXJhdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlcmVnaXN0ZXIgYSBwdWxsIHRpbWUgdXBkYXRlIGV4Y2x1c2lvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1IvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVyZWdpc3RlclB1bGxUaW1lVXBkYXRlRXhjbHVzaW9uXG4gICAqL1xuICBwdWJsaWMgdG9EZXJlZ2lzdGVyUHVsbFRpbWVVcGRhdGVFeGNsdXNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlcmVnaXN0ZXJQdWxsVGltZVVwZGF0ZUV4Y2x1c2lvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIHJlcGxpY2F0aW9uIHN0YXR1cyBhYm91dCBhbiBpbWFnZSBpbiBhIHJlZ2lzdHJ5LCBpbmNsdWRpbmcgZmFpbHVyZSByZWFzb24gaWYgcmVwbGljYXRpb24gZmFpbHNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1IvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVJbWFnZVJlcGxpY2F0aW9uU3RhdHVzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlSW1hZ2VSZXBsaWNhdGlvblN0YXR1cygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVJbWFnZVJlcGxpY2F0aW9uU3RhdHVzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVzY3JpYmUgdGhlIGltYWdlIHNjYW4gZmluZGluZ3MgZm9yIHRoZSBzcGVjaWZpZWQgaW1hZ2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1IvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVJbWFnZVNjYW5GaW5kaW5ncy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUltYWdlU2NhbkZpbmRpbmdzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUltYWdlU2NhbkZpbmRpbmdzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgc2lnbmluZyBzdGF0dXMgYWJvdXQgYW4gaW1hZ2UgaW4gYSBzcGVjaWZpZWQgcmVnaXN0cnlcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1IvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVJbWFnZVNpZ25pbmdTdGF0dXNcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlSW1hZ2VTaWduaW5nU3RhdHVzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUltYWdlU2lnbmluZ1N0YXR1cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCBtZXRhZGF0YSBhYm91dCB0aGUgaW1hZ2VzIGluIGEgcmVwb3NpdG9yeSwgaW5jbHVkaW5nIGltYWdlIHNpemUsIGltYWdlIHRhZ3MsIGFuZCBjcmVhdGlvbiBkYXRlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNSL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlSW1hZ2VzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlSW1hZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUltYWdlcycpO1xuI