truemark-cdk-lib 1.6.4 → 1.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -96,6 +96,12 @@ export interface StandardApplicationFargateServiceProps extends StandardFargateS
96
96
  * Additional domain names to associate with this service.
97
97
  */
98
98
  readonly domainNames?: string[];
99
+ /**
100
+ * Set this to true to skip the creation of route53 records. By default records will be created in domainName and domainZone is provided.
101
+ *
102
+ * @default - false
103
+ */
104
+ readonly skipCreateRoute53Records?: boolean;
99
105
  /**
100
106
  * Path pattern to match on the load balancer.
101
107
  *
@@ -121,6 +127,7 @@ export interface StandardApplicationFargateServiceProps extends StandardFargateS
121
127
  readonly targetGroupPriority?: number;
122
128
  /**
123
129
  * Zone of the domain name. If set, a route53 record is created for the service.
130
+ *
124
131
  */
125
132
  readonly domainZone?: IHostedZone;
126
133
  }
@@ -86,7 +86,7 @@ class StandardApplicationFargateService extends standard_fargate_service_1.Stand
86
86
  conditions: targetGroupConditions,
87
87
  priority: (_r = props.targetGroupPriority) !== null && _r !== void 0 ? _r : 1
88
88
  });
89
- if (props.domainName !== undefined && props.domainZone !== undefined) {
89
+ if (props.domainName !== undefined && props.domainZone !== undefined && !props.skipCreateRoute53Records) {
90
90
  this.domainName = aws_route53_2.DomainName.fromFqdn(props.domainName, props.domainZone);
91
91
  this.route53Record = this.domainName.createARecord(this, aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.LoadBalancerTarget(loadBalancer)));
92
92
  }
@@ -95,4 +95,4 @@ class StandardApplicationFargateService extends standard_fargate_service_1.Stand
95
95
  }
96
96
  }
97
97
  exports.StandardApplicationFargateService = StandardApplicationFargateService;
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtYXBwbGljYXRpb24tZmFyZ2F0ZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhbmRhcmQtYXBwbGljYXRpb24tZmFyZ2F0ZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUErRjtBQUUvRiw2Q0FBcUM7QUFDckMsdUZBTWdEO0FBQ2hELHlEQUEyRTtBQUMzRSxtREFBNkM7QUFDN0MseUVBQW1FO0FBK0luRTs7R0FFRztBQUNILE1BQWEsaUNBQWtDLFNBQVEsaURBQXNCO0lBTzNFLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkM7O1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksd0JBQXdCLFNBQXlCLEtBQUssQ0FBQyx3QkFBd0IsbUNBQUksc0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEcsSUFBSSx3QkFBd0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDOUMsd0JBQXdCLEdBQUcsU0FBUyxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxvQkFBd0MsQ0FBQztRQUM3QyxJQUFJLHdCQUF3QixLQUFLLFNBQVMsRUFBRTtZQUMxQyxvQkFBb0IsU0FBRyxLQUFLLENBQUMsb0JBQW9CLG1DQUFJLGFBQWEsQ0FBQTtTQUNuRTtRQUVELElBQUksU0FBUyxTQUF5QixLQUFLLENBQUMsU0FBUyxtQ0FBSSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDL0IsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUN2QjtRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksbURBQXNCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNsRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lB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LENBQUM7UUFFSCxRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUU7WUFDNUMsWUFBWSxFQUFFLENBQUMsV0FBVyxDQUFDO1lBQzNCLFVBQVUsRUFBRSxxQkFBcUI7WUFDakMsUUFBUSxRQUFFLEtBQUssQ0FBQyxtQkFBbUIsbUNBQUksQ0FBQztTQUN6QyxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQ3BFLElBQUksQ0FBQyxVQUFVLEdBQUcsd0JBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQ3JELDBCQUFZLENBQUMsU0FBUyxDQUFDLElBQUksd0NBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pFO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBbEdELDhFQWtHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3RhbmRhcmRGYXJnYXRlU2VydmljZSwgU3RhbmRhcmRGYXJnYXRlU2VydmljZVByb3BzfSBmcm9tIFwiLi9zdGFuZGFyZC1mYXJnYXRlLXNlcnZpY2VcIjtcbmltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtEdXJhdGlvbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkxpc3RlbmVyLFxuICBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgQXBwbGljYXRpb25Qcm90b2NvbCxcbiAgQXBwbGljYXRpb25UYXJnZXRHcm91cCwgSUFwcGxpY2F0aW9uTGlzdGVuZXIsIElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciwgTGlzdGVuZXJDb25kaXRpb24sXG4gIFRhcmdldEdyb3VwTG9hZEJhbGFuY2luZ0FsZ29yaXRobVR5cGVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXCI7XG5pbXBvcnQge0FSZWNvcmQsIElIb3N0ZWRab25lLCBSZWNvcmRUYXJnZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHtEb21haW5OYW1lfSBmcm9tIFwiLi4vLi4vYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7TG9hZEJhbGFuY2VyVGFyZ2V0fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0c1wiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIFN0YW5kYXJkQXBwbGljYXRpb25GYXJnYXRlU2VydmljZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkQXBwbGljYXRpb25GYXJnYXRlU2VydmljZVByb3BzIGV4dGVuZHMgU3RhbmRhcmRGYXJnYXRlU2VydmljZVByb3BzIHtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgYW4gYXBwbGljYXRpb24tYmFzZWQgc3RpY2tpbmVzcyBjb29raWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbGJfYWZmaW5pdHlcbiAgICovXG4gIHJlYWRvbmx5IHN0aWNraW5lc3NDb29raWVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RpY2tpbmVzcyBjb29raWUgZXhwaXJhdGlvbiBwZXJpb2QuIFNldCB0byAwIHRvIGRpc2FibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRHVyYXRpb24uZGF5cygxKVxuICAgKi9cbiAgcmVhZG9ubHkgc3RpY2tpbmVzc0Nvb2tpZUR1cmF0aW9uPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIHBlcmlvZCBkdXJpbmcgd2hpY2ggdGhlIGxvYWQgYmFsYW5jZXIgc2VuZHMgYSBuZXdseSByZWdpc3RlcmVkIHRhcmdldCBhXG4gICAqIGxpbmVhcmx5IGluY3JlYXNpbmcgc2hhcmUgb2YgdGhlIHRyYWZmaWMgdG8gdGhlIHRhcmdldCBncm91cC4gU2V0IHRoaXMgdG8gMFxuICAgKiB0byBkaXNhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIER1cmF0aW9uLnNlY29uZHMoMzApXG4gICAqL1xuICByZWFkb25seSBzbG93U3RhcnQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIHByb3RvY29sIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQXG4gICAqL1xuICByZWFkb25seSBhcHBsaWNhdGlvblByb3RvY29sPzogQXBwbGljYXRpb25Qcm90b2NvbDtcblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiB0aW1lIGZvciBFbGFzdGljIExvYWQgQmFsYW5jaW5nIHRvIHdhaXQgYmVmb3JlIGRlcmVnaXN0ZXJpbmcgYSB0YXJnZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRHVyYXRpb24uc2Vjb25kcygxMClcbiAgICovXG4gIHJlYWRvbmx5IGRlcmVnaXN0cmF0aW9uRGVsYXk/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGFwcHJveGltYXRlIG51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gaGVhbHRoIGNoZWNrcyBmb3IgYW4gaW5kaXZpZHVhbCB0YXJnZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRHVyYXRpb24uc2Vjb25kcygxMClcbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrSW50ZXJ2YWw/OiBEdXJhdGlvblxuXG4gIC8qKlxuICAgKiBUaGUgcGluZyBwYXRoIGRlc3RpbmF0aW9uIHdoZXJlIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgc2VuZHMgaGVhbHRoIGNoZWNrIHJlcXVlc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIC9oZWFsdGhcbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCBkdXJpbmcgd2hpY2ggbm8gcmVzcG9uc2UgZnJvbSBhIHRhcmdldCBtZWFucyBhIGZhaWxlZCBoZWFsdGggY2hlY2tcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEdXJhdGlvbi5zZWNvbmRzKDMpXG4gICAqL1xuICByZWFkb25seSBoZWFsdGhDaGVja1RpbWVvdXQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSBoZWFsdGggY2hlY2tzIHN1Y2Nlc3NlcyByZXF1aXJlZCBiZWZvcmUgY29uc2lkZXJpbmcgYW4gdW5oZWFsdGh5IHRhcmdldCBoZWFsdGh5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDJcbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aHlUaHJlc2hvbGRDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSBoZWFsdGggY2hlY2sgZmFpbHVyZXMgcmVxdWlyZWQgYmVmb3JlIGNvbnNpZGVyaW5nIGEgdGFyZ2V0IHVuaGVhbHRoeS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAyXG4gICAqL1xuICByZWFkb25seSB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogSFRUUCBjb2RlIHRvIHVzZSB3aGVuIGNoZWNraW5nIGZvciBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2UgZnJvbSBhIHRhcmdldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDIwMC0yOTlcbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aHlIdHRwQ29kZXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2FkIGJhbGFuY2luZyBhbGdvcml0aG0gdG8gc2VsZWN0IHRhcmdldHMgZm9yIHJvdXRpbmcgcmVxdWVzdHMuXG4gICAqIFRvIHNldCB0aGlzIHRvIExFQVNUX09VVFNUQU5ESU5HX1JFUVVFU1RTLCBzdGlja2luZXNzIG11c3QgYmUgZGlzYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gUk9VTkRfUk9CSU5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNpbmdBbGdvcml0aG1UeXBlPzogVGFyZ2V0R3JvdXBMb2FkQmFsYW5jaW5nQWxnb3JpdGhtVHlwZTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBBTEIgcmVxdWVzdHMgdG8gdGFyZ2V0IGZvciBzY2FsaW5nLlxuICAgKiBEaXNhYmxlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2NhbGVSZXF1ZXN0UGVyVGFyZ2V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEb21haW4gbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBkb21haW4gbmFtZXMgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUGF0aCBwYXR0ZXJuIHRvIG1hdGNoIG9uIHRoZSBsb2FkIGJhbGFuY2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFtcIi8qXCJdXG4gICAqL1xuICByZWFkb25seSBwYXRoUGF0dGVybj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMb2FkIGJhbGFuY2VyIHRvIGF0dGFjaCB0aGlzIHNlcnZpY2UgdG8uIElmIHBhc3NlZCBhbiBBUk4gb3IgbmFtZSBhIGxvb2t1cCB3aWxsIGJlXG4gICAqIHBlcmZvcm1lZCB0byBsb2NhdGUgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciB8IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxpc3RlbmVyIHByb3RvY29sIHRvIGF0dGFjaCB0aGlzIHNlcnZpY2UgdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQU1xuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJQcm90b2NvbD86IEFwcGxpY2F0aW9uUHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0eSB0byBnaXZlIHRoZSB0YXJnZXQgZ3JvdXAgb24gdGhlIEFMQi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAxXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRHcm91cFByaW9yaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBab25lIG9mIHRoZSBkb21haW4gbmFtZS4gSWYgc2V0LCBhIHJvdXRlNTMgcmVjb3JkIGlzIGNyZWF0ZWQgZm9yIHRoZSBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluWm9uZT86IElIb3N0ZWRab25lO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gRUNTIEZhcmdhdGUgc2VydmljZSBhbmQgbWFwcyBpdCB0byBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyIChBTEIpLlxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmRBcHBsaWNhdGlvbkZhcmdhdGVTZXJ2aWNlIGV4dGVuZHMgU3RhbmRhcmRGYXJnYXRlU2VydmljZSB7XG5cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gIHJlYWRvbmx5IGxpc3RlbmVyOiBJQXBwbGljYXRpb25MaXN0ZW5lcjtcbiAgcmVhZG9ubHkgZG9tYWluTmFtZT86IERvbWFpbk5hbWU7XG4gIHJlYWRvbmx5IHJvdXRlNTNSZWNvcmQ/OiBBUmVjb3JkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFuZGFyZEFwcGxpY2F0aW9uRmFyZ2F0ZVNlcnZpY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbGV0IHN0aWNraW5lc3NDb29raWVEdXJhdGlvbjogRHVyYXRpb24gfCB1bmRlZmluZWQgPSBwcm9wcy5zdGlja2luZXNzQ29va2llRHVyYXRpb24gPz8gRHVyYXRpb24uZGF5cygxKTtcbiAgICBpZiAoc3RpY2tpbmVzc0Nvb2tpZUR1cmF0aW9uLnRvU2Vjb25kcygpID09PSAwKSB7XG4gICAgICBzdGlja2luZXNzQ29va2llRHVyYXRpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbGV0IHN0aWNraW5lc3NDb29raWVOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHN0aWNraW5lc3NDb29raWVEdXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdGlja2luZXNzQ29va2llTmFtZSA9IHByb3BzLnN0aWNraW5lc3NDb29raWVOYW1lID8/IFwibGJfYWZmaW5pdHlcIlxuICAgIH1cblxuICAgIGxldCBzbG93U3RhcnQ6IER1cmF0aW9uIHwgdW5kZWZpbmVkID0gcHJvcHMuc2xvd1N0YXJ0ID8/IER1cmF0aW9uLnNlY29uZHMoMzApO1xuICAgIGlmIChzbG93U3RhcnQudG9TZWNvbmRzKCkgPT09IDApIHtcbiAgICAgIHNsb3dTdGFydCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRHcm91cCA9IG5ldyBBcHBsaWNhdGlvblRhcmdldEdyb3VwKHRoaXMsIFwiVGFyZ2V0R3JvdXBcIiwge1xuICAgICAgdGFyZ2V0czogW3RoaXMuc2VydmljZV0sXG4gICAgICB2cGM6IHByb3BzLmNsdXN0ZXIudnBjLFxuICAgICAgcG9ydDogdGhpcy5wb3J0LFxuICAgICAgcHJvdG9jb2w6IHByb3BzLmFwcGxpY2F0aW9uUHJvdG9jb2wgPz8gQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQLFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogcHJvcHMuZGVyZWdpc3RyYXRpb25EZWxheSA/PyBEdXJhdGlvbi5zZWNvbmRzKDEwKSxcbiAgICAgIHNsb3dTdGFydCxcbiAgICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgIGludGVydmFsOiBwcm9wcy5oZWFsdGhDaGVja0ludGVydmFsID8/IER1cmF0aW9uLnNlY29uZHMoMTApLFxuICAgICAgICBwYXRoOiBwcm9wcy5oZWFsdGhDaGVja1BhdGggPz8gXCIvaGVhbHRoXCIsXG4gICAgICAgIHRpbWVvdXQ6IHByb3BzLmhlYWx0aENoZWNrVGltZW91dCA/PyBEdXJhdGlvbi5zZWNvbmRzKDMpLFxuICAgICAgICBoZWFsdGh5VGhyZXNob2xkQ291bnQ6IHByb3BzLmhlYWx0aHlUaHJlc2hvbGRDb3VudCA/PyAyLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogcHJvcHMudW5oZWFsdGh5VGhyZXNob2xkQ291bnQgPz8gMixcbiAgICAgICAgaGVhbHRoeUh0dHBDb2RlczogcHJvcHMuaGVhbHRoeUh0dHBDb2RlcyA/PyBcIjIwMC0yOTlcIlxuICAgICAgfSxcbiAgICAgIHN0aWNraW5lc3NDb29raWVOYW1lLFxuICAgICAgc3RpY2tpbmVzc0Nvb2tpZUR1cmF0aW9uLFxuICAgICAgbG9hZEJhbGFuY2luZ0FsZ29yaXRobVR5cGU6IHByb3BzLmxvYWRCYWxhbmNpbmdBbGdvcml0aG1UeXBlID8/IFRhcmdldEdyb3VwTG9hZEJhbGFuY2luZ0FsZ29yaXRobVR5cGUuUk9VTkRfUk9CSU5cbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5zY2FsZVJlcXVlc3RQZXJUYXJnZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zY2FsaW5nLnNjYWxlT25SZXF1ZXN0Q291bnQoXCJSZXF1ZXN0Q291bnRTY2FsaW5nXCIsIHtcbiAgICAgICAgc2NhbGVJbkNvb2xkb3duOiB0aGlzLnNjYWxlSW5Db29sZG93bixcbiAgICAgICAgc2NhbGVPdXRDb29sZG93bjogdGhpcy5zY2FsZU91dENvb2xkb3duLFxuICAgICAgICB0YXJnZXRHcm91cCxcbiAgICAgICAgcmVxdWVzdHNQZXJUYXJnZXQ6IHByb3BzLnNjYWxlUmVxdWVzdFBlclRhcmdldCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldEdyb3VwQ29uZGl0aW9uczogTGlzdGVuZXJDb25kaXRpb25bXSA9IFtdO1xuICAgIHRhcmdldEdyb3VwQ29uZGl0aW9ucy5wdXNoKExpc3RlbmVyQ29uZGl0aW9uLnBhdGhQYXR0ZXJucyhwcm9wcy5wYXRoUGF0dGVybiA/PyBbXCIvKlwiXSkpO1xuICAgIGlmIChwcm9wcy5kb21haW5OYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRhcmdldEdyb3VwQ29uZGl0aW9ucy5wdXNoKExpc3RlbmVyQ29uZGl0aW9uLmhvc3RIZWFkZXJzKFtwcm9wcy5kb21haW5OYW1lLCAuLi5wcm9wcy5kb21haW5OYW1lcyA/PyBbXV0pKTtcbiAgICB9XG5cbiAgICBsZXQgbG9hZEJhbGFuY2VyOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gICAgaWYgKHR5cGVvZiBwcm9wcy5sb2FkQmFsYW5jZXIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGlmIChwcm9wcy5sb2FkQmFsYW5jZXIuc3RhcnRzV2l0aChcImFybjpcIikpIHtcbiAgICAgICAgbG9hZEJhbGFuY2VyID0gQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIuZnJvbUxvb2t1cCh0aGlzLCBcIkxvYWRCYWxhbmNlclwiLCB7XG4gICAgICAgICAgbG9hZEJhbGFuY2VyQXJuOiBwcm9wcy5sb2FkQmFsYW5jZXJcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2FkQmFsYW5jZXIgPSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlci5mcm9tTG9va3VwKHRoaXMsIFwiTG9hZEJhbGFuY2VyXCIsIHtcbiAgICAgICAgICBsb2FkQmFsYW5jZXJUYWdzOiB7XG4gICAgICAgICAgICBOYW1lOiBwcm9wcy5sb2FkQmFsYW5jZXJcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkQmFsYW5jZXIgPSBwcm9wcy5sb2FkQmFsYW5jZXI7XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdGVuZXIgPSBBcHBsaWNhdGlvbkxpc3RlbmVyLmZyb21Mb29rdXAodGhpcywgXCJMaXN0ZW5lclwiLCB7XG4gICAgICBsb2FkQmFsYW5jZXJBcm46IGxvYWRCYWxhbmNlci5sb2FkQmFsYW5jZXJBcm4sXG4gICAgICBsaXN0ZW5lclByb3RvY29sOiBwcm9wcy5saXN0ZW5lclByb3RvY29sID8/IEFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFNcbiAgICB9KTtcblxuICAgIGxpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgJHtpZH1UYXJnZXRHcm91cHNgLCB7XG4gICAgICB0YXJnZXRHcm91cHM6IFt0YXJnZXRHcm91cF0sXG4gICAgICBjb25kaXRpb25zOiB0YXJnZXRHcm91cENvbmRpdGlvbnMsXG4gICAgICBwcmlvcml0eTogcHJvcHMudGFyZ2V0R3JvdXBQcmlvcml0eSA/PyAxXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuZG9tYWluTmFtZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRvbWFpblpvbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kb21haW5OYW1lID0gRG9tYWluTmFtZS5mcm9tRnFkbihwcm9wcy5kb21haW5OYW1lLCBwcm9wcy5kb21haW5ab25lKTtcbiAgICAgIHRoaXMucm91dGU1M1JlY29yZCA9IHRoaXMuZG9tYWluTmFtZS5jcmVhdGVBUmVjb3JkKHRoaXMsXG4gICAgICAgIFJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IExvYWRCYWxhbmNlclRhcmdldChsb2FkQmFsYW5jZXIpKSk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkQmFsYW5jZXIgPSBsb2FkQmFsYW5jZXI7XG4gICAgdGhpcy5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICB9XG59XG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtYXBwbGljYXRpb24tZmFyZ2F0ZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhbmRhcmQtYXBwbGljYXRpb24tZmFyZ2F0ZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUErRjtBQUUvRiw2Q0FBcUM7QUFDckMsdUZBTWdEO0FBQ2hELHlEQUEyRTtBQUMzRSxtREFBNkM7QUFDN0MseUVBQW1FO0FBdUpuRTs7R0FFRztBQUNILE1BQWEsaUNBQWtDLFNBQVEsaURBQXNCO0lBTzNFLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkM7O1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksd0JBQXdCLFNBQXlCLEtBQUssQ0FBQyx3QkFBd0IsbUNBQUksc0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEcsSUFBSSx3QkFBd0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDOUMsd0JBQXdCLEdBQUcsU0FBUyxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxvQkFBd0MsQ0FBQztRQUM3QyxJQUFJLHdCQUF3QixLQUFLLFNBQVMsRUFBRTtZQUMxQyxvQkFBb0IsU0FBRyxLQUFLLENBQUMsb0JBQW9CLG1DQUFJLGFBQWEsQ0FBQTtTQUNuRTtRQUVELElBQUksU0FBUyxTQUF5QixLQUFLLENBQUMsU0FBUyxtQ0FBSSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDL0IsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUN2QjtRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksbURBQXNCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNsRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lB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LENBQUM7UUFFSCxRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUU7WUFDNUMsWUFBWSxFQUFFLENBQUMsV0FBVyxDQUFDO1lBQzNCLFVBQVUsRUFBRSxxQkFBcUI7WUFDakMsUUFBUSxRQUFFLEtBQUssQ0FBQyxtQkFBbUIsbUNBQUksQ0FBQztTQUN6QyxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFO1lBQ3ZHLElBQUksQ0FBQyxVQUFVLEdBQUcsd0JBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQ3JELDBCQUFZLENBQUMsU0FBUyxDQUFDLElBQUksd0NBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pFO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBbEdELDhFQWtHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3RhbmRhcmRGYXJnYXRlU2VydmljZSwgU3RhbmRhcmRGYXJnYXRlU2VydmljZVByb3BzfSBmcm9tIFwiLi9zdGFuZGFyZC1mYXJnYXRlLXNlcnZpY2VcIjtcbmltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtEdXJhdGlvbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkxpc3RlbmVyLFxuICBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgQXBwbGljYXRpb25Qcm90b2NvbCxcbiAgQXBwbGljYXRpb25UYXJnZXRHcm91cCwgSUFwcGxpY2F0aW9uTGlzdGVuZXIsIElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciwgTGlzdGVuZXJDb25kaXRpb24sXG4gIFRhcmdldEdyb3VwTG9hZEJhbGFuY2luZ0FsZ29yaXRobVR5cGVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXCI7XG5pbXBvcnQge0FSZWNvcmQsIElIb3N0ZWRab25lLCBSZWNvcmRUYXJnZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHtEb21haW5OYW1lfSBmcm9tIFwiLi4vLi4vYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7TG9hZEJhbGFuY2VyVGFyZ2V0fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0c1wiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIFN0YW5kYXJkQXBwbGljYXRpb25GYXJnYXRlU2VydmljZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkQXBwbGljYXRpb25GYXJnYXRlU2VydmljZVByb3BzIGV4dGVuZHMgU3RhbmRhcmRGYXJnYXRlU2VydmljZVByb3BzIHtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgYW4gYXBwbGljYXRpb24tYmFzZWQgc3RpY2tpbmVzcyBjb29raWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbGJfYWZmaW5pdHlcbiAgICovXG4gIHJlYWRvbmx5IHN0aWNraW5lc3NDb29raWVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RpY2tpbmVzcyBjb29raWUgZXhwaXJhdGlvbiBwZXJpb2QuIFNldCB0byAwIHRvIGRpc2FibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRHVyYXRpb24uZGF5cygxKVxuICAgKi9cbiAgcmVhZG9ubHkgc3RpY2tpbmVzc0Nvb2tpZUR1cmF0aW9uPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIHBlcmlvZCBkdXJpbmcgd2hpY2ggdGhlIGxvYWQgYmFsYW5jZXIgc2VuZHMgYSBuZXdseSByZWdpc3RlcmVkIHRhcmdldCBhXG4gICAqIGxpbmVhcmx5IGluY3JlYXNpbmcgc2hhcmUgb2YgdGhlIHRyYWZmaWMgdG8gdGhlIHRhcmdldCBncm91cC4gU2V0IHRoaXMgdG8gMFxuICAgKiB0byBkaXNhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIER1cmF0aW9uLnNlY29uZHMoMzApXG4gICAqL1xuICByZWFkb25seSBzbG93U3RhcnQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIHByb3RvY29sIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQXG4gICAqL1xuICByZWFkb25seSBhcHBsaWNhdGlvblByb3RvY29sPzogQXBwbGljYXRpb25Qcm90b2NvbDtcblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiB0aW1lIGZvciBFbGFzdGljIExvYWQgQmFsYW5jaW5nIHRvIHdhaXQgYmVmb3JlIGRlcmVnaXN0ZXJpbmcgYSB0YXJnZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRHVyYXRpb24uc2Vjb25kcygxMClcbiAgICovXG4gIHJlYWRvbmx5IGRlcmVnaXN0cmF0aW9uRGVsYXk/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGFwcHJveGltYXRlIG51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gaGVhbHRoIGNoZWNrcyBmb3IgYW4gaW5kaXZpZHVhbCB0YXJnZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRHVyYXRpb24uc2Vjb25kcygxMClcbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrSW50ZXJ2YWw/OiBEdXJhdGlvblxuXG4gIC8qKlxuICAgKiBUaGUgcGluZyBwYXRoIGRlc3RpbmF0aW9uIHdoZXJlIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgc2VuZHMgaGVhbHRoIGNoZWNrIHJlcXVlc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIC9oZWFsdGhcbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCBkdXJpbmcgd2hpY2ggbm8gcmVzcG9uc2UgZnJvbSBhIHRhcmdldCBtZWFucyBhIGZhaWxlZCBoZWFsdGggY2hlY2tcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEdXJhdGlvbi5zZWNvbmRzKDMpXG4gICAqL1xuICByZWFkb25seSBoZWFsdGhDaGVja1RpbWVvdXQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSBoZWFsdGggY2hlY2tzIHN1Y2Nlc3NlcyByZXF1aXJlZCBiZWZvcmUgY29uc2lkZXJpbmcgYW4gdW5oZWFsdGh5IHRhcmdldCBoZWFsdGh5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDJcbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aHlUaHJlc2hvbGRDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSBoZWFsdGggY2hlY2sgZmFpbHVyZXMgcmVxdWlyZWQgYmVmb3JlIGNvbnNpZGVyaW5nIGEgdGFyZ2V0IHVuaGVhbHRoeS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAyXG4gICAqL1xuICByZWFkb25seSB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogSFRUUCBjb2RlIHRvIHVzZSB3aGVuIGNoZWNraW5nIGZvciBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2UgZnJvbSBhIHRhcmdldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDIwMC0yOTlcbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aHlIdHRwQ29kZXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2FkIGJhbGFuY2luZyBhbGdvcml0aG0gdG8gc2VsZWN0IHRhcmdldHMgZm9yIHJvdXRpbmcgcmVxdWVzdHMuXG4gICAqIFRvIHNldCB0aGlzIHRvIExFQVNUX09VVFNUQU5ESU5HX1JFUVVFU1RTLCBzdGlja2luZXNzIG11c3QgYmUgZGlzYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gUk9VTkRfUk9CSU5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNpbmdBbGdvcml0aG1UeXBlPzogVGFyZ2V0R3JvdXBMb2FkQmFsYW5jaW5nQWxnb3JpdGhtVHlwZTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBBTEIgcmVxdWVzdHMgdG8gdGFyZ2V0IGZvciBzY2FsaW5nLlxuICAgKiBEaXNhYmxlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2NhbGVSZXF1ZXN0UGVyVGFyZ2V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEb21haW4gbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBkb21haW4gbmFtZXMgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSB0byBza2lwIHRoZSBjcmVhdGlvbiBvZiByb3V0ZTUzIHJlY29yZHMuIEJ5IGRlZmF1bHQgcmVjb3JkcyB3aWxsIGJlIGNyZWF0ZWQgaW4gZG9tYWluTmFtZSBhbmQgZG9tYWluWm9uZSBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcENyZWF0ZVJvdXRlNTNSZWNvcmRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGF0aCBwYXR0ZXJuIHRvIG1hdGNoIG9uIHRoZSBsb2FkIGJhbGFuY2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFtcIi8qXCJdXG4gICAqL1xuICByZWFkb25seSBwYXRoUGF0dGVybj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMb2FkIGJhbGFuY2VyIHRvIGF0dGFjaCB0aGlzIHNlcnZpY2UgdG8uIElmIHBhc3NlZCBhbiBBUk4gb3IgbmFtZSBhIGxvb2t1cCB3aWxsIGJlXG4gICAqIHBlcmZvcm1lZCB0byBsb2NhdGUgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciB8IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxpc3RlbmVyIHByb3RvY29sIHRvIGF0dGFjaCB0aGlzIHNlcnZpY2UgdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQU1xuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJQcm90b2NvbD86IEFwcGxpY2F0aW9uUHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0eSB0byBnaXZlIHRoZSB0YXJnZXQgZ3JvdXAgb24gdGhlIEFMQi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAxXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRHcm91cFByaW9yaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBab25lIG9mIHRoZSBkb21haW4gbmFtZS4gSWYgc2V0LCBhIHJvdXRlNTMgcmVjb3JkIGlzIGNyZWF0ZWQgZm9yIHRoZSBzZXJ2aWNlLlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluWm9uZT86IElIb3N0ZWRab25lO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gRUNTIEZhcmdhdGUgc2VydmljZSBhbmQgbWFwcyBpdCB0byBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyIChBTEIpLlxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmRBcHBsaWNhdGlvbkZhcmdhdGVTZXJ2aWNlIGV4dGVuZHMgU3RhbmRhcmRGYXJnYXRlU2VydmljZSB7XG5cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gIHJlYWRvbmx5IGxpc3RlbmVyOiBJQXBwbGljYXRpb25MaXN0ZW5lcjtcbiAgcmVhZG9ubHkgZG9tYWluTmFtZT86IERvbWFpbk5hbWU7XG4gIHJlYWRvbmx5IHJvdXRlNTNSZWNvcmQ/OiBBUmVjb3JkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFuZGFyZEFwcGxpY2F0aW9uRmFyZ2F0ZVNlcnZpY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbGV0IHN0aWNraW5lc3NDb29raWVEdXJhdGlvbjogRHVyYXRpb24gfCB1bmRlZmluZWQgPSBwcm9wcy5zdGlja2luZXNzQ29va2llRHVyYXRpb24gPz8gRHVyYXRpb24uZGF5cygxKTtcbiAgICBpZiAoc3RpY2tpbmVzc0Nvb2tpZUR1cmF0aW9uLnRvU2Vjb25kcygpID09PSAwKSB7XG4gICAgICBzdGlja2luZXNzQ29va2llRHVyYXRpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbGV0IHN0aWNraW5lc3NDb29raWVOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHN0aWNraW5lc3NDb29raWVEdXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdGlja2luZXNzQ29va2llTmFtZSA9IHByb3BzLnN0aWNraW5lc3NDb29raWVOYW1lID8/IFwibGJfYWZmaW5pdHlcIlxuICAgIH1cblxuICAgIGxldCBzbG93U3RhcnQ6IER1cmF0aW9uIHwgdW5kZWZpbmVkID0gcHJvcHMuc2xvd1N0YXJ0ID8/IER1cmF0aW9uLnNlY29uZHMoMzApO1xuICAgIGlmIChzbG93U3RhcnQudG9TZWNvbmRzKCkgPT09IDApIHtcbiAgICAgIHNsb3dTdGFydCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRHcm91cCA9IG5ldyBBcHBsaWNhdGlvblRhcmdldEdyb3VwKHRoaXMsIFwiVGFyZ2V0R3JvdXBcIiwge1xuICAgICAgdGFyZ2V0czogW3RoaXMuc2VydmljZV0sXG4gICAgICB2cGM6IHByb3BzLmNsdXN0ZXIudnBjLFxuICAgICAgcG9ydDogdGhpcy5wb3J0LFxuICAgICAgcHJvdG9jb2w6IHByb3BzLmFwcGxpY2F0aW9uUHJvdG9jb2wgPz8gQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQLFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogcHJvcHMuZGVyZWdpc3RyYXRpb25EZWxheSA/PyBEdXJhdGlvbi5zZWNvbmRzKDEwKSxcbiAgICAgIHNsb3dTdGFydCxcbiAgICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgIGludGVydmFsOiBwcm9wcy5oZWFsdGhDaGVja0ludGVydmFsID8/IER1cmF0aW9uLnNlY29uZHMoMTApLFxuICAgICAgICBwYXRoOiBwcm9wcy5oZWFsdGhDaGVja1BhdGggPz8gXCIvaGVhbHRoXCIsXG4gICAgICAgIHRpbWVvdXQ6IHByb3BzLmhlYWx0aENoZWNrVGltZW91dCA/PyBEdXJhdGlvbi5zZWNvbmRzKDMpLFxuICAgICAgICBoZWFsdGh5VGhyZXNob2xkQ291bnQ6IHByb3BzLmhlYWx0aHlUaHJlc2hvbGRDb3VudCA/PyAyLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogcHJvcHMudW5oZWFsdGh5VGhyZXNob2xkQ291bnQgPz8gMixcbiAgICAgICAgaGVhbHRoeUh0dHBDb2RlczogcHJvcHMuaGVhbHRoeUh0dHBDb2RlcyA/PyBcIjIwMC0yOTlcIlxuICAgICAgfSxcbiAgICAgIHN0aWNraW5lc3NDb29raWVOYW1lLFxuICAgICAgc3RpY2tpbmVzc0Nvb2tpZUR1cmF0aW9uLFxuICAgICAgbG9hZEJhbGFuY2luZ0FsZ29yaXRobVR5cGU6IHByb3BzLmxvYWRCYWxhbmNpbmdBbGdvcml0aG1UeXBlID8/IFRhcmdldEdyb3VwTG9hZEJhbGFuY2luZ0FsZ29yaXRobVR5cGUuUk9VTkRfUk9CSU5cbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5zY2FsZVJlcXVlc3RQZXJUYXJnZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zY2FsaW5nLnNjYWxlT25SZXF1ZXN0Q291bnQoXCJSZXF1ZXN0Q291bnRTY2FsaW5nXCIsIHtcbiAgICAgICAgc2NhbGVJbkNvb2xkb3duOiB0aGlzLnNjYWxlSW5Db29sZG93bixcbiAgICAgICAgc2NhbGVPdXRDb29sZG93bjogdGhpcy5zY2FsZU91dENvb2xkb3duLFxuICAgICAgICB0YXJnZXRHcm91cCxcbiAgICAgICAgcmVxdWVzdHNQZXJUYXJnZXQ6IHByb3BzLnNjYWxlUmVxdWVzdFBlclRhcmdldCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldEdyb3VwQ29uZGl0aW9uczogTGlzdGVuZXJDb25kaXRpb25bXSA9IFtdO1xuICAgIHRhcmdldEdyb3VwQ29uZGl0aW9ucy5wdXNoKExpc3RlbmVyQ29uZGl0aW9uLnBhdGhQYXR0ZXJucyhwcm9wcy5wYXRoUGF0dGVybiA/PyBbXCIvKlwiXSkpO1xuICAgIGlmIChwcm9wcy5kb21haW5OYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRhcmdldEdyb3VwQ29uZGl0aW9ucy5wdXNoKExpc3RlbmVyQ29uZGl0aW9uLmhvc3RIZWFkZXJzKFtwcm9wcy5kb21haW5OYW1lLCAuLi5wcm9wcy5kb21haW5OYW1lcyA/PyBbXV0pKTtcbiAgICB9XG5cbiAgICBsZXQgbG9hZEJhbGFuY2VyOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gICAgaWYgKHR5cGVvZiBwcm9wcy5sb2FkQmFsYW5jZXIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGlmIChwcm9wcy5sb2FkQmFsYW5jZXIuc3RhcnRzV2l0aChcImFybjpcIikpIHtcbiAgICAgICAgbG9hZEJhbGFuY2VyID0gQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIuZnJvbUxvb2t1cCh0aGlzLCBcIkxvYWRCYWxhbmNlclwiLCB7XG4gICAgICAgICAgbG9hZEJhbGFuY2VyQXJuOiBwcm9wcy5sb2FkQmFsYW5jZXJcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2FkQmFsYW5jZXIgPSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlci5mcm9tTG9va3VwKHRoaXMsIFwiTG9hZEJhbGFuY2VyXCIsIHtcbiAgICAgICAgICBsb2FkQmFsYW5jZXJUYWdzOiB7XG4gICAgICAgICAgICBOYW1lOiBwcm9wcy5sb2FkQmFsYW5jZXJcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkQmFsYW5jZXIgPSBwcm9wcy5sb2FkQmFsYW5jZXI7XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdGVuZXIgPSBBcHBsaWNhdGlvbkxpc3RlbmVyLmZyb21Mb29rdXAodGhpcywgXCJMaXN0ZW5lclwiLCB7XG4gICAgICBsb2FkQmFsYW5jZXJBcm46IGxvYWRCYWxhbmNlci5sb2FkQmFsYW5jZXJBcm4sXG4gICAgICBsaXN0ZW5lclByb3RvY29sOiBwcm9wcy5saXN0ZW5lclByb3RvY29sID8/IEFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFNcbiAgICB9KTtcblxuICAgIGxpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgJHtpZH1UYXJnZXRHcm91cHNgLCB7XG4gICAgICB0YXJnZXRHcm91cHM6IFt0YXJnZXRHcm91cF0sXG4gICAgICBjb25kaXRpb25zOiB0YXJnZXRHcm91cENvbmRpdGlvbnMsXG4gICAgICBwcmlvcml0eTogcHJvcHMudGFyZ2V0R3JvdXBQcmlvcml0eSA/PyAxXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuZG9tYWluTmFtZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRvbWFpblpvbmUgIT09IHVuZGVmaW5lZCAmJiAhcHJvcHMuc2tpcENyZWF0ZVJvdXRlNTNSZWNvcmRzKSB7XG4gICAgICB0aGlzLmRvbWFpbk5hbWUgPSBEb21haW5OYW1lLmZyb21GcWRuKHByb3BzLmRvbWFpbk5hbWUsIHByb3BzLmRvbWFpblpvbmUpO1xuICAgICAgdGhpcy5yb3V0ZTUzUmVjb3JkID0gdGhpcy5kb21haW5OYW1lLmNyZWF0ZUFSZWNvcmQodGhpcyxcbiAgICAgICAgUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhuZXcgTG9hZEJhbGFuY2VyVGFyZ2V0KGxvYWRCYWxhbmNlcikpKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRCYWxhbmNlciA9IGxvYWRCYWxhbmNlcjtcbiAgICB0aGlzLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIH1cbn1cbiJdfQ==
@@ -4,6 +4,8 @@ import { OriginAccessIdentity } from "aws-cdk-lib/aws-cloudfront";
4
4
  import { BucketDeployment, ISource } from "aws-cdk-lib/aws-s3-deployment";
5
5
  import { Duration, RemovalPolicy } from "aws-cdk-lib";
6
6
  import { ExtendedConstruct, ExtendedConstructProps } from "../../aws-cdk";
7
+ import { S3Origin } from "aws-cdk-lib/aws-cloudfront-origins";
8
+ import { Grant, IGrantable } from "aws-cdk-lib/aws-iam";
7
9
  /**
8
10
  * Properties for CloudFrontBucket.
9
11
  */
@@ -48,7 +50,7 @@ export declare class CloudFrontBucket extends ExtendedConstruct {
48
50
  readonly originAccessIdentity: OriginAccessIdentity;
49
51
  readonly originAccessIdentityId: string;
50
52
  private nextDeployCount;
51
- constructor(scope: Construct, id: string, props: CloudFrontBucketProps);
53
+ constructor(scope: Construct, id: string, props?: CloudFrontBucketProps);
52
54
  /**
53
55
  * Helper method to deploy local assets to the created bucket. Ths function assumes
54
56
  * CloudFront invalidation requests will be sent for mutable files to serve new content.
@@ -93,4 +95,85 @@ export declare class CloudFrontBucket extends ExtendedConstruct {
93
95
  * @param prune true to prune old files; default is false
94
96
  */
95
97
  deploySource(source: ISource, maxAge?: Duration, sMaxAge?: Duration, prune?: boolean): BucketDeployment;
98
+ /**
99
+ * Helper method to return a CloudFront Origin for this bucket.
100
+ */
101
+ toOrigin(): S3Origin;
102
+ /**
103
+ * Grant read permissions for this bucket and it's contents to an IAM
104
+ * principal (Role/Group/User).
105
+ *
106
+ * If encryption is used, permission to use the key to decrypt the contents
107
+ * of the bucket will also be granted to the same principal.
108
+ *
109
+ * @param identity The principal
110
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
111
+ */
112
+ grantRead(identity: IGrantable, objectsKeyPattern?: any): Grant;
113
+ /**
114
+ * Grant write permissions to this bucket to an IAM principal.
115
+ *
116
+ * If encryption is used, permission to use the key to encrypt the contents
117
+ * of written files will also be granted to the same principal.
118
+ *
119
+ * Before CDK version 1.85.0, this method granted the `s3:PutObject*` permission that included `s3:PutObjectAcl`,
120
+ * which could be used to grant read/write object access to IAM principals in other accounts.
121
+ * If you want to get rid of that behavior, update your CDK version to 1.85.0 or later,
122
+ * and make sure the `@aws-cdk/aws-s3:grantWriteWithoutAcl` feature flag is set to `true`
123
+ * in the `context` key of your cdk.json file.
124
+ * If you've already updated, but still need the principal to have permissions to modify the ACLs,
125
+ * use the `grantPutAcl` method.
126
+ *
127
+ * @param identity The principal
128
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
129
+ * @param allowedActionPatterns Restrict the permissions to certain list of action patterns
130
+ */
131
+ grantWrite(identity: IGrantable, objectsKeyPattern?: any, allowedActionPatterns?: string[]): Grant;
132
+ /**
133
+ * Grants s3:PutObject* and s3:Abort* permissions for this bucket to an IAM principal.
134
+ *
135
+ * If encryption is used, permission to use the key to encrypt the contents
136
+ * of written files will also be granted to the same principal.
137
+ * @param identity The principal
138
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
139
+ */
140
+ grantPut(identity: IGrantable, objectsKeyPattern?: any): Grant;
141
+ /**
142
+ * Grant the given IAM identity permissions to modify the ACLs of objects in the given Bucket.
143
+ *
144
+ * If your application has the '@aws-cdk/aws-s3:grantWriteWithoutAcl' feature flag set,
145
+ * calling `grantWrite` or `grantReadWrite` no longer grants permissions to modify the ACLs of the objects;
146
+ * in this case, if you need to modify object ACLs, call this method explicitly.
147
+ *
148
+ * @param identity The principal
149
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
150
+ */
151
+ grantPutAcl(identity: IGrantable, objectsKeyPattern?: string): Grant;
152
+ /**
153
+ * Grants s3:DeleteObject* permission to an IAM principal for objects
154
+ * in this bucket.
155
+ *
156
+ * @param identity The principal
157
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
158
+ */
159
+ grantDelete(identity: IGrantable, objectsKeyPattern?: any): Grant;
160
+ /**
161
+ * Grants read/write permissions for this bucket and it's contents to an IAM
162
+ * principal (Role/Group/User).
163
+ *
164
+ * If an encryption key is used, permission to use the key for
165
+ * encrypt/decrypt will also be granted.
166
+ *
167
+ * Before CDK version 1.85.0, this method granted the `s3:PutObject*` permission that included `s3:PutObjectAcl`,
168
+ * which could be used to grant read/write object access to IAM principals in other accounts.
169
+ * If you want to get rid of that behavior, update your CDK version to 1.85.0 or later,
170
+ * and make sure the `@aws-cdk/aws-s3:grantWriteWithoutAcl` feature flag is set to `true`
171
+ * in the `context` key of your cdk.json file.
172
+ * If you've already updated, but still need the principal to have permissions to modify the ACLs,
173
+ * use the `grantPutAcl` method.
174
+ *
175
+ * @param identity The principal
176
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
177
+ */
178
+ grantReadWrite(identity: IGrantable, objectsKeyPattern?: any): Grant;
96
179
  }
@@ -7,24 +7,25 @@ const aws_s3_deployment_1 = require("aws-cdk-lib/aws-s3-deployment");
7
7
  const aws_cdk_lib_1 = require("aws-cdk-lib");
8
8
  const aws_cdk_1 = require("../../aws-cdk");
9
9
  const truemark_1 = require("../../truemark");
10
+ const aws_cloudfront_origins_1 = require("aws-cdk-lib/aws-cloudfront-origins");
10
11
  /**
11
12
  * Simple Construct for creating buckets that will be accessed directly by CloudFront as an Origin.
12
13
  */
13
14
  class CloudFrontBucket extends aws_cdk_1.ExtendedConstruct {
14
15
  constructor(scope, id, props) {
15
16
  var _a, _b, _c, _d;
16
- super(scope, id, { standardTags: aws_cdk_1.StandardTags.merge(props.standardTags, truemark_1.LibStandardTags) });
17
+ super(scope, id, { standardTags: aws_cdk_1.StandardTags.merge(props === null || props === void 0 ? void 0 : props.standardTags, truemark_1.LibStandardTags) });
17
18
  this.deployCount = 0;
18
- const removalPolicy = (_a = props.removalPolicy) !== null && _a !== void 0 ? _a : aws_cdk_lib_1.RemovalPolicy.RETAIN;
19
- const autoDeleteObjects = ((_b = props.autoDeleteObjects) !== null && _b !== void 0 ? _b : false) && removalPolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY;
19
+ const removalPolicy = (_a = props === null || props === void 0 ? void 0 : props.removalPolicy) !== null && _a !== void 0 ? _a : aws_cdk_lib_1.RemovalPolicy.RETAIN;
20
+ const autoDeleteObjects = ((_b = props === null || props === void 0 ? void 0 : props.autoDeleteObjects) !== null && _b !== void 0 ? _b : false) && removalPolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY;
20
21
  this.bucket = new aws_s3_1.Bucket(this, "Default", {
21
22
  encryption: aws_s3_1.BucketEncryption.S3_MANAGED,
22
23
  blockPublicAccess: aws_s3_1.BlockPublicAccess.BLOCK_ALL,
23
24
  removalPolicy,
24
25
  autoDeleteObjects,
25
- versioned: (_c = props.versioned) !== null && _c !== void 0 ? _c : false,
26
- transferAcceleration: (_d = props.transferAcceleration) !== null && _d !== void 0 ? _d : false,
27
- bucketName: props.bucketName
26
+ versioned: (_c = props === null || props === void 0 ? void 0 : props.versioned) !== null && _c !== void 0 ? _c : false,
27
+ transferAcceleration: (_d = props === null || props === void 0 ? void 0 : props.transferAcceleration) !== null && _d !== void 0 ? _d : false,
28
+ bucketName: props === null || props === void 0 ? void 0 : props.bucketName
28
29
  });
29
30
  this.bucketName = this.bucket.bucketName;
30
31
  this.bucketArn = this.bucket.bucketArn;
@@ -108,6 +109,103 @@ class CloudFrontBucket extends aws_cdk_1.ExtendedConstruct {
108
109
  deploySource(source, maxAge, sMaxAge, prune) {
109
110
  return this.deploySources([source], maxAge, sMaxAge, prune);
110
111
  }
112
+ /**
113
+ * Helper method to return a CloudFront Origin for this bucket.
114
+ */
115
+ toOrigin() {
116
+ return new aws_cloudfront_origins_1.S3Origin(this.bucket, {
117
+ originAccessIdentity: this.originAccessIdentity
118
+ });
119
+ }
120
+ /**
121
+ * Grant read permissions for this bucket and it's contents to an IAM
122
+ * principal (Role/Group/User).
123
+ *
124
+ * If encryption is used, permission to use the key to decrypt the contents
125
+ * of the bucket will also be granted to the same principal.
126
+ *
127
+ * @param identity The principal
128
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
129
+ */
130
+ grantRead(identity, objectsKeyPattern) {
131
+ return this.bucket.grantRead(identity, objectsKeyPattern);
132
+ }
133
+ /**
134
+ * Grant write permissions to this bucket to an IAM principal.
135
+ *
136
+ * If encryption is used, permission to use the key to encrypt the contents
137
+ * of written files will also be granted to the same principal.
138
+ *
139
+ * Before CDK version 1.85.0, this method granted the `s3:PutObject*` permission that included `s3:PutObjectAcl`,
140
+ * which could be used to grant read/write object access to IAM principals in other accounts.
141
+ * If you want to get rid of that behavior, update your CDK version to 1.85.0 or later,
142
+ * and make sure the `@aws-cdk/aws-s3:grantWriteWithoutAcl` feature flag is set to `true`
143
+ * in the `context` key of your cdk.json file.
144
+ * If you've already updated, but still need the principal to have permissions to modify the ACLs,
145
+ * use the `grantPutAcl` method.
146
+ *
147
+ * @param identity The principal
148
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
149
+ * @param allowedActionPatterns Restrict the permissions to certain list of action patterns
150
+ */
151
+ grantWrite(identity, objectsKeyPattern, allowedActionPatterns) {
152
+ return this.bucket.grantWrite(identity, objectsKeyPattern, allowedActionPatterns);
153
+ }
154
+ /**
155
+ * Grants s3:PutObject* and s3:Abort* permissions for this bucket to an IAM principal.
156
+ *
157
+ * If encryption is used, permission to use the key to encrypt the contents
158
+ * of written files will also be granted to the same principal.
159
+ * @param identity The principal
160
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
161
+ */
162
+ grantPut(identity, objectsKeyPattern) {
163
+ return this.bucket.grantPut(identity, objectsKeyPattern);
164
+ }
165
+ /**
166
+ * Grant the given IAM identity permissions to modify the ACLs of objects in the given Bucket.
167
+ *
168
+ * If your application has the '@aws-cdk/aws-s3:grantWriteWithoutAcl' feature flag set,
169
+ * calling `grantWrite` or `grantReadWrite` no longer grants permissions to modify the ACLs of the objects;
170
+ * in this case, if you need to modify object ACLs, call this method explicitly.
171
+ *
172
+ * @param identity The principal
173
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
174
+ */
175
+ grantPutAcl(identity, objectsKeyPattern) {
176
+ return this.bucket.grantPutAcl(identity, objectsKeyPattern);
177
+ }
178
+ /**
179
+ * Grants s3:DeleteObject* permission to an IAM principal for objects
180
+ * in this bucket.
181
+ *
182
+ * @param identity The principal
183
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
184
+ */
185
+ grantDelete(identity, objectsKeyPattern) {
186
+ return this.bucket.grantDelete(identity, objectsKeyPattern);
187
+ }
188
+ /**
189
+ * Grants read/write permissions for this bucket and it's contents to an IAM
190
+ * principal (Role/Group/User).
191
+ *
192
+ * If an encryption key is used, permission to use the key for
193
+ * encrypt/decrypt will also be granted.
194
+ *
195
+ * Before CDK version 1.85.0, this method granted the `s3:PutObject*` permission that included `s3:PutObjectAcl`,
196
+ * which could be used to grant read/write object access to IAM principals in other accounts.
197
+ * If you want to get rid of that behavior, update your CDK version to 1.85.0 or later,
198
+ * and make sure the `@aws-cdk/aws-s3:grantWriteWithoutAcl` feature flag is set to `true`
199
+ * in the `context` key of your cdk.json file.
200
+ * If you've already updated, but still need the principal to have permissions to modify the ACLs,
201
+ * use the `grantPutAcl` method.
202
+ *
203
+ * @param identity The principal
204
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
205
+ */
206
+ grantReadWrite(identity, objectsKeyPattern) {
207
+ return this.bucket.grantReadWrite(identity, objectsKeyPattern);
208
+ }
111
209
  }
112
210
  exports.CloudFrontBucket = CloudFrontBucket;
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtZnJvbnQtYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2xvdWQtZnJvbnQtYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLCtDQUF3RjtBQUN4RiwrREFBZ0U7QUFDaEUscUVBQThGO0FBQzlGLDZDQUFvRDtBQUNwRCwyQ0FBc0Y7QUFDdEYsNkNBQStDO0FBeUMvQzs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsMkJBQWlCO0lBZXJELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7O1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUMsWUFBWSxFQUFFLHNCQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsMEJBQWUsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQWRwRixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQWdCOUIsTUFBTSxhQUFhLFNBQUcsS0FBSyxDQUFDLGFBQWEsbUNBQUksMkJBQWEsQ0FBQyxNQUFNLENBQUM7UUFDbEUsTUFBTSxpQkFBaUIsR0FBRyxPQUFDLEtBQUssQ0FBQyxpQkFBaUIsbUNBQUksS0FBSyxDQUFDLElBQUksYUFBYSxLQUFLLDJCQUFhLENBQUMsT0FBTyxDQUFDO1FBRXhHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUN4QyxVQUFVLEVBQUUseUJBQWdCLENBQUMsVUFBVTtZQUN2QyxpQkFBaUIsRUFBRSwwQkFBaUIsQ0FBQyxTQUFTO1lBQzlDLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsU0FBUyxRQUFFLEtBQUssQ0FBQyxTQUFTLG1DQUFJLEtBQUs7WUFDbkMsb0JBQW9CLFFBQUUsS0FBSyxDQUFDLG9CQUFvQixtQ0FBSSxLQUFLO1lBQ3pELFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtTQUM3QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLElB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QUUsTUFBaUIsRUFBRSxPQUFrQixFQUFFLEtBQWU7UUFDbEYsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5RCxDQUFDO0NBQ0Y7QUFoSEQsNENBZ0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0Jsb2NrUHVibGljQWNjZXNzLCBCdWNrZXQsIEJ1Y2tldEVuY3J5cHRpb24sIElCdWNrZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7T3JpZ2luQWNjZXNzSWRlbnRpdHl9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udFwiO1xuaW1wb3J0IHtCdWNrZXREZXBsb3ltZW50LCBDYWNoZUNvbnRyb2wsIElTb3VyY2UsIFNvdXJjZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zMy1kZXBsb3ltZW50XCI7XG5pbXBvcnQge0R1cmF0aW9uLCBSZW1vdmFsUG9saWN5fSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7RXh0ZW5kZWRDb25zdHJ1Y3QsIEV4dGVuZGVkQ29uc3RydWN0UHJvcHMsIFN0YW5kYXJkVGFnc30gZnJvbSBcIi4uLy4uL2F3cy1jZGtcIjtcbmltcG9ydCB7TGliU3RhbmRhcmRUYWdzfSBmcm9tIFwiLi4vLi4vdHJ1ZW1hcmtcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBDbG91ZEZyb250QnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRnJvbnRCdWNrZXRQcm9wcyBleHRlbmRzIEV4dGVuZGVkQ29uc3RydWN0UHJvcHMge1xuXG4gIC8qKlxuICAgKiBQb2xpY3kgdG8gYXBwbHkgd2hlbiB0aGUgYnVja2V0IGlzIHJlbW92ZWQgZnJvbSB0aGlzIHN0YWNrLlxuICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYWxsIG9iamVjdHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZGVsZXRlZCB3aGVuIHRoZSBidWNrZXQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFjayBvciB3aGVuIHRoZSBzdGFjayBpcyBkZWxldGVkLlxuICAgKiBSZXF1aXJlcyB0aGUgcmVtb3ZhbFBvbGljeSB0byBiZSBzZXQgdG8gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLiBEZWZhdWx0IGlzIGZhbHNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0RlbGV0ZU9iamVjdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgYnVja2V0IHNob3VsZCBoYXZlIHZlcnNpb25pbmcgdHVybmVkIG9uIG9yIG5vdC4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25lZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBidWNrZXQgc2hvdWxkIGhhdmUgdHJhbnNmZXIgYWNjZWxlcmF0aW9uIHR1cm5lZCBvbiBvciBub3QuIERlZmF1bHQgaXMgZmFsc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB0cmFuc2ZlckFjY2VsZXJhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGJ1Y2tldCBuYW1lLiBJZiBub3QgcHJvdmlkZWQsIGEgbmFtZSB3aWxsIGJlIGdlbmVyYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldE5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU2ltcGxlIENvbnN0cnVjdCBmb3IgY3JlYXRpbmcgYnVja2V0cyB0aGF0IHdpbGwgYmUgYWNjZXNzZWQgZGlyZWN0bHkgYnkgQ2xvdWRGcm9udCBhcyBhbiBPcmlnaW4uXG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZEZyb250QnVja2V0IGV4dGVuZHMgRXh0ZW5kZWRDb25zdHJ1Y3Qge1xuXG4gIHByaXZhdGUgZGVwbG95Q291bnQ6IG51bWJlciA9IDA7XG5cbiAgcmVhZG9ubHkgYnVja2V0OiBCdWNrZXQ7XG4gIHJlYWRvbmx5IGJ1Y2tldE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYnVja2V0QXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9yaWdpbkFjY2Vzc0lkZW50aXR5OiBPcmlnaW5BY2Nlc3NJZGVudGl0eTtcbiAgcmVhZG9ubHkgb3JpZ2luQWNjZXNzSWRlbnRpdHlJZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgbmV4dERlcGxveUNvdW50KCk6IHN0cmluZyB7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmRlcGxveUNvdW50Kys7XG4gICAgcmV0dXJuIGN1cnJlbnQgPT09IDAgPyAnJyA6IGAke2N1cnJlbnR9YDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDbG91ZEZyb250QnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtzdGFuZGFyZFRhZ3M6IFN0YW5kYXJkVGFncy5tZXJnZShwcm9wcy5zdGFuZGFyZFRhZ3MsIExpYlN0YW5kYXJkVGFncyl9KTtcblxuICAgIGNvbnN0IHJlbW92YWxQb2xpY3kgPSBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuUkVUQUlOO1xuICAgIGNvbnN0IGF1dG9EZWxldGVPYmplY3RzID0gKHByb3BzLmF1dG9EZWxldGVPYmplY3RzID8/IGZhbHNlKSAmJiByZW1vdmFsUG9saWN5ID09PSBSZW1vdmFsUG9saWN5LkRFU1RST1k7XG5cbiAgICB0aGlzLmJ1Y2tldCA9IG5ldyBCdWNrZXQodGhpcywgXCJEZWZhdWx0XCIsIHtcbiAgICAgIGVuY3J5cHRpb246IEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCwgLy8gQ2xvdWRGcm9udCBjYW5ub3QgdXNlIEtNUyB3aXRoIFMzXG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgcmVtb3ZhbFBvbGljeSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzLFxuICAgICAgdmVyc2lvbmVkOiBwcm9wcy52ZXJzaW9uZWQgPz8gZmFsc2UsXG4gICAgICB0cmFuc2ZlckFjY2VsZXJhdGlvbjogcHJvcHMudHJhbnNmZXJBY2NlbGVyYXRpb24gPz8gZmFsc2UsXG4gICAgICBidWNrZXROYW1lOiBwcm9wcy5idWNrZXROYW1lXG4gICAgfSk7XG4gICAgdGhpcy5idWNrZXROYW1lID0gdGhpcy5idWNrZXQuYnVja2V0TmFtZTtcbiAgICB0aGlzLmJ1Y2tldEFybiA9IHRoaXMuYnVja2V0LmJ1Y2tldEFybjtcbiAgICB0aGlzLm9yaWdpbkFjY2Vzc0lkZW50aXR5ID0gbmV3IE9yaWdpbkFjY2Vzc0lkZW50aXR5KHRoaXMsIFwiQWNjZXNzXCIsIHtcbiAgICAgIGNvbW1lbnQ6IGBTMyBidWNrZXQgJHt0aGlzLmJ1Y2tldC5idWNrZXROYW1lfWBcbiAgICB9KTtcbiAgICB0aGlzLm9yaWdpbkFjY2Vzc0lkZW50aXR5SWQgPSB0aGlzLm9yaWdpbkFjY2Vzc0lkZW50aXR5Lm9yaWdpbkFjY2Vzc0lkZW50aXR5SWQ7XG4gICAgdGhpcy5idWNrZXQuZ3JhbnRSZWFkKHRoaXMub3JpZ2luQWNjZXNzSWRlbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZGVwbG95IGxvY2FsIGFzc2V0cyB0byB0aGUgY3JlYXRlZCBidWNrZXQuIFRocyBmdW5jdGlvbiBhc3N1bWVzXG4gICAqIENsb3VkRnJvbnQgaW52YWxpZGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgc2VudCBmb3IgbXV0YWJsZSBmaWxlcyB0byBzZXJ2ZSBuZXcgY29udGVudC5cbiAgICogRm9yIG1vcmUgY29tcGxpY2F0ZWQgZGVwbG95bWVudHMsIHVzZSBCdWNrZXREZXBsb3ltZW50IGRpcmVjdGx5LlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aHMgdGhlIHBhdGhzIHRvIHRoZSBsb2NhbCBhc3NldHNcbiAgICogQHBhcmFtIG1heEFnZSB0aGUgbGVuZ3RoIG9mIHRpbWUgdG8gYnJvd3NlcnMgd2lsbCBjYWNoZSBmaWxlczsgZGVmYXVsdCBpcyBEdXJhdGlvbi5taW51dGVzKDE1KVxuICAgKiBAcGFyYW0gc01heEFnZSB0aGUgbGVuZ3RoIG9mIHRpbWUgQ2xvdWRGcm9udCB3aWxsIGNhY2hlIGZpbGVzOyBkZWZhdWx0IGlzIER1cmF0aW9uLmRheXMoNylcbiAgICogQHBhcmFtIHBydW5lIHRydWUgdG8gcHJ1bmUgb2xkIGZpbGVzOyBkZWZhdWx0IGlzIGZhbHNlXG4gICAqL1xuICBkZXBsb3lQYXRocyhwYXRoczogc3RyaW5nW10sIG1heEFnZT86IER1cmF0aW9uLCBzTWF4QWdlPzogRHVyYXRpb24sIHBydW5lPzogYm9vbGVhbik6IEJ1Y2tldERlcGxveW1lbnQge1xuICAgIHJldHVybiBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLCBgRGVwbG95JHt0aGlzLm5leHREZXBsb3lDb3VudCgpfWAsIHtcbiAgICAgIHNvdXJjZXM6IHBhdGhzLm1hcChwYXRoID0+IFNvdXJjZS5hc3NldChwYXRoKSksXG4gICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogdGhpcy5idWNrZXQsXG4gICAgICBwcnVuZTogcHJ1bmUgPz8gZmFsc2UsXG4gICAgICBjYWNoZUNvbnRyb2w6IFtcbiAgICAgICAgQ2FjaGVDb250cm9sLnNldFB1YmxpYygpLFxuICAgICAgICBDYWNoZUNvbnRyb2wubWF4QWdlKG1heEFnZSA/PyBEdXJhdGlvbi5taW51dGVzKDE1KSksXG4gICAgICAgIENhY2hlQ29udHJvbC5zTWF4QWdlKHNNYXhBZ2UgPz8gRHVyYXRpb24uZGF5cyg3KSlcbiAgICAgIF1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGRlcGxveSBsb2NhbCBhc3NldHMgdG8gdGhlIGNyZWF0ZWQgYnVja2V0LiBUaHMgZnVuY3Rpb24gYXNzdW1lc1xuICAgKiBDbG91ZEZyb250IGludmFsaWRhdGlvbiByZXF1ZXN0cyB3aWxsIGJlIHNlbnQgZm9yIG11dGFibGUgZmlsZXMgdG8gc2VydmUgbmV3IGNvbnRlbnQuXG4gICAqIEZvciBtb3JlIGNvbXBsaWNhdGVkIGRlcGxveW1lbnRzLCB1c2UgQnVja2V0RGVwbG95bWVudCBkaXJlY3RseS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggdGhlIHBhdGggdG8gdGhlIGxvY2FsIGFzc2V0c1xuICAgKiBAcGFyYW0gbWF4QWdlIHRoZSBsZW5ndGggb2YgdGltZSB0byBicm93c2VycyB3aWxsIGNhY2hlIGZpbGVzOyBkZWZhdWx0IGlzIER1cmF0aW9uLm1pbnV0ZXMoMTUpXG4gICAqIEBwYXJhbSBzTWF4QWdlIHRoZSBsZW5ndGggb2YgdGltZSBDbG91ZEZyb250IHdpbGwgY2FjaGUgZmlsZXM7IGRlZmF1bHQgaXMgRHVyYXRpb24uZGF5cyg3KVxuICAgKiBAcGFyYW0gcHJ1bmUgdHJ1ZSB0byBwcnVuZSBvbGQgZmlsZXM7IGRlZmF1bHQgaXMgZmFsc2VcbiAgICovXG4gIGRlcGxveVBhdGgocGF0aDogc3RyaW5nLCBtYXhBZ2U/OiBEdXJhdGlvbiwgc01heEFnZT86IER1cmF0aW9uLCBwcnVuZT86IGJvb2xlYW4pOiBCdWNrZXREZXBsb3ltZW50IHtcbiAgICByZXR1cm4gdGhpcy5kZXBsb3lQYXRocyhbcGF0aF0sIG1heEFnZSwgc01heEFnZSwgcHJ1bmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gYXNzZXRzIHRvIHRoZSBjcmVhdGVkIGJ1Y2tldC4gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIENsb3VkRnJvbnQgaW52YWxpZGF0aW9uXG4gICAqIHJlcXVlc3RzIHdpbGwgYmUgc2VudCBmb3IgbXV0YWJsZSBmaWxlcyB0byBzZXJ2ZSBuZXcgY29udGVudC5cbiAgICogRm9yIG1vcmUgY29tcGxpY2F0ZWQgZGVwbG95bWVudHMsIHVzZSBCdWNrZXREZXBsb3ltZW50IGRpcmVjdGx5LlxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlcyB0aGUgc291cmNlcyB0byBkZXBsb3lcbiAgICogQHBhcmFtIG1heEFnZSB0aGUgbGVuZ3RoIG9mIHRpbWUgdG8gYnJvd3NlcnMgd2lsbCBjYWNoZSBmaWxlczsgZGVmYXVsdCBpcyBEdXJhdGlvbi5taW51dGVzKDE1KVxuICAgKiBAcGFyYW0gc01heEFnZSB0aGUgbGVuZ3RoIG9mIHRpbWUgQ2xvdWRGcm9udCB3aWxsIGNhY2hlIGZpbGVzOyBkZWZhdWx0IGlzIER1cmF0aW9uLmRheXMoNylcbiAgICogQHBhcmFtIHBydW5lIHRydWUgdG8gcHJ1bmUgb2xkIGZpbGVzOyBkZWZhdWx0IGlzIGZhbHNlXG4gICAqL1xuICBkZXBsb3lTb3VyY2VzKHNvdXJjZXM6IElTb3VyY2VbXSwgbWF4QWdlPzogRHVyYXRpb24sIHNNYXhBZ2U/OiBEdXJhdGlvbiwgcHJ1bmU/OiBib29sZWFuKTogQnVja2V0RGVwbG95bWVudCB7XG4gICAgcmV0dXJuIG5ldyBCdWNrZXREZXBsb3ltZW50KHRoaXMsIGBEZXBsb3kke3RoaXMubmV4dERlcGxveUNvdW50KCl9YCwge1xuICAgICAgc291cmNlczogc291cmNlcyxcbiAgICAgIGRlc3RpbmF0aW9uQnVja2V0OiB0aGlzLmJ1Y2tldCxcbiAgICAgIHBydW5lOiBwcnVuZSA/PyBmYWxzZSxcbiAgICAgIGNhY2hlQ29udHJvbDogW1xuICAgICAgICBDYWNoZUNvbnRyb2wuc2V0UHVibGljKCksXG4gICAgICAgIENhY2hlQ29udHJvbC5tYXhBZ2UobWF4QWdlID8/IER1cmF0aW9uLm1pbnV0ZXMoMTUpKSxcbiAgICAgICAgQ2FjaGVDb250cm9sLnNNYXhBZ2Uoc01heEFnZSA/PyBEdXJhdGlvbi5kYXlzKDcpKVxuICAgICAgXVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gYXNzZXRzIHRvIHRoZSBjcmVhdGVkIGJ1Y2tldC4gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIENsb3VkRnJvbnQgaW52YWxpZGF0aW9uXG4gICAqIHJlcXVlc3RzIHdpbGwgYmUgc2VudCBmb3IgbXV0YWJsZSBmaWxlcyB0byBzZXJ2ZSBuZXcgY29udGVudC5cbiAgICogRm9yIG1vcmUgY29tcGxpY2F0ZWQgZGVwbG95bWVudHMsIHVzZSBCdWNrZXREZXBsb3ltZW50IGRpcmVjdGx5LlxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlIHRoZSBzb3VyY2UgdG8gZGVwbG95XG4gICAqIEBwYXJhbSBtYXhBZ2UgdGhlIGxlbmd0aCBvZiB0aW1lIHRvIGJyb3dzZXJzIHdpbGwgY2FjaGUgZmlsZXM7IGRlZmF1bHQgaXMgRHVyYXRpb24ubWludXRlcygxNSlcbiAgICogQHBhcmFtIHNNYXhBZ2UgdGhlIGxlbmd0aCBvZiB0aW1lIENsb3VkRnJvbnQgd2lsbCBjYWNoZSBmaWxlczsgZGVmYXVsdCBpcyBEdXJhdGlvbi5kYXlzKDcpXG4gICAqIEBwYXJhbSBwcnVuZSB0cnVlIHRvIHBydW5lIG9sZCBmaWxlczsgZGVmYXVsdCBpcyBmYWxzZVxuICAgKi9cbiAgZGVwbG95U291cmNlKHNvdXJjZTogSVNvdXJjZSwgbWF4QWdlPzogRHVyYXRpb24sIHNNYXhBZ2U/OiBEdXJhdGlvbiwgcHJ1bmU/OiBib29sZWFuKTogQnVja2V0RGVwbG95bWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZGVwbG95U291cmNlcyhbc291cmNlXSwgbWF4QWdlLCBzTWF4QWdlLCBwcnVuZSk7XG4gIH1cbn1cbiJdfQ==
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtZnJvbnQtYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2xvdWQtZnJvbnQtYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLCtDQUErRTtBQUMvRSwrREFBZ0U7QUFDaEUscUVBQThGO0FBQzlGLDZDQUFvRDtBQUNwRCwyQ0FBc0Y7QUFDdEYsNkNBQStDO0FBQy9DLCtFQUE0RDtBQTJDNUQ7O0dBRUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLDJCQUFpQjtJQWVyRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCOztRQUNyRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFDLFlBQVksRUFBRSxzQkFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsWUFBWSxFQUFFLDBCQUFlLENBQUMsRUFBQyxDQUFDLENBQUM7UUFkckYsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFnQjlCLE1BQU0sYUFBYSxTQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxhQUFhLG1DQUFJLDJCQUFhLENBQUMsTUFBTSxDQUFDO1FBQ25FLE1BQU0saUJBQWlCLEdBQUcsT0FBQyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsaUJBQWlCLG1DQUFJLEtBQUssQ0FBQyxJQUFJLGFBQWEsS0FBSywyQkFBYSxDQUFDLE9BQU8sQ0FBQztRQUV6RyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDeEMsVUFBVSxFQUFFLHlCQUFnQixDQUFDLFVBQVU7WUFDdkMsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztZQUM5QyxhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLFNBQVMsUUFBRSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsU0FBUyxtQ0FBSSxLQUFLO1lBQ3BDLG9CQUFvQixRQUFFLEtBQUss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VyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQUMsUUFBb0IsRUFBRSxpQkFBdUI7UUFDdkQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0gsY0FBYyxDQUFDLFFBQW9CLEVBQUUsaUJBQXVCO1FBQzFELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDakUsQ0FBQztDQUVGO0FBek5ELDRDQXlOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtCbG9ja1B1YmxpY0FjY2VzcywgQnVja2V0LCBCdWNrZXRFbmNyeXB0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQge09yaWdpbkFjY2Vzc0lkZW50aXR5fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7QnVja2V0RGVwbG95bWVudCwgQ2FjaGVDb250cm9sLCBJU291cmNlLCBTb3VyY2V9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczMtZGVwbG95bWVudFwiO1xuaW1wb3J0IHtEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeX0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge0V4dGVuZGVkQ29uc3RydWN0LCBFeHRlbmRlZENvbnN0cnVjdFByb3BzLCBTdGFuZGFyZFRhZ3N9IGZyb20gXCIuLi8uLi9hd3MtY2RrXCI7XG5pbXBvcnQge0xpYlN0YW5kYXJkVGFnc30gZnJvbSBcIi4uLy4uL3RydWVtYXJrXCI7XG5pbXBvcnQge1MzT3JpZ2lufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQtb3JpZ2luc1wiO1xuaW1wb3J0IHtHcmFudCwgSUdyYW50YWJsZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIENsb3VkRnJvbnRCdWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGcm9udEJ1Y2tldFByb3BzIGV4dGVuZHMgRXh0ZW5kZWRDb25zdHJ1Y3RQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFBvbGljeSB0byBhcHBseSB3aGVuIHRoZSBidWNrZXQgaXMgcmVtb3ZlZCBmcm9tIHRoaXMgc3RhY2suXG4gICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcblxuICAvKipcbiAgICogV2hldGhlciBhbGwgb2JqZWN0cyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBkZWxldGVkIHdoZW4gdGhlIGJ1Y2tldCBpcyByZW1vdmVkIGZyb20gdGhlIHN0YWNrIG9yIHdoZW4gdGhlIHN0YWNrIGlzIGRlbGV0ZWQuXG4gICAqIFJlcXVpcmVzIHRoZSByZW1vdmFsUG9saWN5IHRvIGJlIHNldCB0byBSZW1vdmFsUG9saWN5LkRFU1RST1kuIERlZmF1bHQgaXMgZmFsc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhdXRvRGVsZXRlT2JqZWN0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBidWNrZXQgc2hvdWxkIGhhdmUgdmVyc2lvbmluZyB0dXJuZWQgb24gb3Igbm90LiBEZWZhdWx0IGlzIGZhbHNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbmVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGJ1Y2tldCBzaG91bGQgaGF2ZSB0cmFuc2ZlciBhY2NlbGVyYXRpb24gdHVybmVkIG9uIG9yIG5vdC4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zZmVyQWNjZWxlcmF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgYnVja2V0IG5hbWUuIElmIG5vdCBwcm92aWRlZCwgYSBuYW1lIHdpbGwgYmUgZ2VuZXJhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTaW1wbGUgQ29uc3RydWN0IGZvciBjcmVhdGluZyBidWNrZXRzIHRoYXQgd2lsbCBiZSBhY2Nlc3NlZCBkaXJlY3RseSBieSBDbG91ZEZyb250IGFzIGFuIE9yaWdpbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENsb3VkRnJvbnRCdWNrZXQgZXh0ZW5kcyBFeHRlbmRlZENvbnN0cnVjdCB7XG5cbiAgcHJpdmF0ZSBkZXBsb3lDb3VudDogbnVtYmVyID0gMDtcblxuICByZWFkb25seSBidWNrZXQ6IEJ1Y2tldDtcbiAgcmVhZG9ubHkgYnVja2V0TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBidWNrZXRBcm46IHN0cmluZztcbiAgcmVhZG9ubHkgb3JpZ2luQWNjZXNzSWRlbnRpdHk6IE9yaWdpbkFjY2Vzc0lkZW50aXR5O1xuICByZWFkb25seSBvcmlnaW5BY2Nlc3NJZGVudGl0eUlkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBuZXh0RGVwbG95Q291bnQoKTogc3RyaW5nIHtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuZGVwbG95Q291bnQrKztcbiAgICByZXR1cm4gY3VycmVudCA9PT0gMCA/ICcnIDogYCR7Y3VycmVudH1gO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBDbG91ZEZyb250QnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtzdGFuZGFyZFRhZ3M6IFN0YW5kYXJkVGFncy5tZXJnZShwcm9wcz8uc3RhbmRhcmRUYWdzLCBMaWJTdGFuZGFyZFRhZ3MpfSk7XG5cbiAgICBjb25zdCByZW1vdmFsUG9saWN5ID0gcHJvcHM/LnJlbW92YWxQb2xpY3kgPz8gUmVtb3ZhbFBvbGljeS5SRVRBSU47XG4gICAgY29uc3QgYXV0b0RlbGV0ZU9iamVjdHMgPSAocHJvcHM/LmF1dG9EZWxldGVPYmplY3RzID8/IGZhbHNlKSAmJiByZW1vdmFsUG9saWN5ID09PSBSZW1vdmFsUG9saWN5LkRFU1RST1k7XG5cbiAgICB0aGlzLmJ1Y2tldCA9IG5ldyBCdWNrZXQodGhpcywgXCJEZWZhdWx0XCIsIHtcbiAgICAgIGVuY3J5cHRpb246IEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCwgLy8gQ2xvdWRGcm9udCBjYW5ub3QgdXNlIEtNUyB3aXRoIFMzXG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgcmVtb3ZhbFBvbGljeSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzLFxuICAgICAgdmVyc2lvbmVkOiBwcm9wcz8udmVyc2lvbmVkID8/IGZhbHNlLFxuICAgICAgdHJhbnNmZXJBY2NlbGVyYXRpb246IHByb3BzPy50cmFuc2ZlckFjY2VsZXJhdGlvbiA/PyBmYWxzZSxcbiAgICAgIGJ1Y2tldE5hbWU6IHByb3BzPy5idWNrZXROYW1lXG4gICAgfSk7XG4gICAgdGhpcy5idWNrZXROYW1lID0gdGhpcy5idWNrZXQuYnVja2V0TmFtZTtcbiAgICB0aGlzLmJ1Y2tldEFybiA9IHRoaXMuYnVja2V0LmJ1Y2tldEFybjtcbiAgICB0aGlzLm9yaWdpbkFjY2Vzc0lkZW50aXR5ID0gbmV3IE9yaWdpbkFjY2Vzc0lkZW50aXR5KHRoaXMsIFwiQWNjZXNzXCIsIHtcbiAgICAgIGNvbW1lbnQ6IGBTMyBidWNrZXQgJHt0aGlzLmJ1Y2tldC5idWNrZXROYW1lfWBcbiAgICB9KTtcbiAgICB0aGlzLm9yaWdpbkFjY2Vzc0lkZW50aXR5SWQgPSB0aGlzLm9yaWdpbkFjY2Vzc0lkZW50aXR5Lm9yaWdpbkFjY2Vzc0lkZW50aXR5SWQ7XG4gICAgdGhpcy5idWNrZXQuZ3JhbnRSZWFkKHRoaXMub3JpZ2luQWNjZXNzSWRlbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZGVwbG95IGxvY2FsIGFzc2V0cyB0byB0aGUgY3JlYXRlZCBidWNrZXQuIFRocyBmdW5jdGlvbiBhc3N1bWVzXG4gICAqIENsb3VkRnJvbnQgaW52YWxpZGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgc2VudCBmb3IgbXV0YWJsZSBmaWxlcyB0byBzZXJ2ZSBuZXcgY29udGVudC5cbiAgICogRm9yIG1vcmUgY29tcGxpY2F0ZWQgZGVwbG95bWVudHMsIHVzZSBCdWNrZXREZXBsb3ltZW50IGRpcmVjdGx5LlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aHMgdGhlIHBhdGhzIHRvIHRoZSBsb2NhbCBhc3NldHNcbiAgICogQHBhcmFtIG1heEFnZSB0aGUgbGVuZ3RoIG9mIHRpbWUgdG8gYnJvd3NlcnMgd2lsbCBjYWNoZSBmaWxlczsgZGVmYXVsdCBpcyBEdXJhdGlvbi5taW51dGVzKDE1KVxuICAgKiBAcGFyYW0gc01heEFnZSB0aGUgbGVuZ3RoIG9mIHRpbWUgQ2xvdWRGcm9udCB3aWxsIGNhY2hlIGZpbGVzOyBkZWZhdWx0IGlzIER1cmF0aW9uLmRheXMoNylcbiAgICogQHBhcmFtIHBydW5lIHRydWUgdG8gcHJ1bmUgb2xkIGZpbGVzOyBkZWZhdWx0IGlzIGZhbHNlXG4gICAqL1xuICBkZXBsb3lQYXRocyhwYXRoczogc3RyaW5nW10sIG1heEFnZT86IER1cmF0aW9uLCBzTWF4QWdlPzogRHVyYXRpb24sIHBydW5lPzogYm9vbGVhbik6IEJ1Y2tldERlcGxveW1lbnQge1xuICAgIHJldHVybiBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLCBgRGVwbG95JHt0aGlzLm5leHREZXBsb3lDb3VudCgpfWAsIHtcbiAgICAgIHNvdXJjZXM6IHBhdGhzLm1hcChwYXRoID0+IFNvdXJjZS5hc3NldChwYXRoKSksXG4gICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogdGhpcy5idWNrZXQsXG4gICAgICBwcnVuZTogcHJ1bmUgPz8gZmFsc2UsXG4gICAgICBjYWNoZUNvbnRyb2w6IFtcbiAgICAgICAgQ2FjaGVDb250cm9sLnNldFB1YmxpYygpLFxuICAgICAgICBDYWNoZUNvbnRyb2wubWF4QWdlKG1heEFnZSA/PyBEdXJhdGlvbi5taW51dGVzKDE1KSksXG4gICAgICAgIENhY2hlQ29udHJvbC5zTWF4QWdlKHNNYXhBZ2UgPz8gRHVyYXRpb24uZGF5cyg3KSlcbiAgICAgIF1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGRlcGxveSBsb2NhbCBhc3NldHMgdG8gdGhlIGNyZWF0ZWQgYnVja2V0LiBUaHMgZnVuY3Rpb24gYXNzdW1lc1xuICAgKiBDbG91ZEZyb250IGludmFsaWRhdGlvbiByZXF1ZXN0cyB3aWxsIGJlIHNlbnQgZm9yIG11dGFibGUgZmlsZXMgdG8gc2VydmUgbmV3IGNvbnRlbnQuXG4gICAqIEZvciBtb3JlIGNvbXBsaWNhdGVkIGRlcGxveW1lbnRzLCB1c2UgQnVja2V0RGVwbG95bWVudCBkaXJlY3RseS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggdGhlIHBhdGggdG8gdGhlIGxvY2FsIGFzc2V0c1xuICAgKiBAcGFyYW0gbWF4QWdlIHRoZSBsZW5ndGggb2YgdGltZSB0byBicm93c2VycyB3aWxsIGNhY2hlIGZpbGVzOyBkZWZhdWx0IGlzIER1cmF0aW9uLm1pbnV0ZXMoMTUpXG4gICAqIEBwYXJhbSBzTWF4QWdlIHRoZSBsZW5ndGggb2YgdGltZSBDbG91ZEZyb250IHdpbGwgY2FjaGUgZmlsZXM7IGRlZmF1bHQgaXMgRHVyYXRpb24uZGF5cyg3KVxuICAgKiBAcGFyYW0gcHJ1bmUgdHJ1ZSB0byBwcnVuZSBvbGQgZmlsZXM7IGRlZmF1bHQgaXMgZmFsc2VcbiAgICovXG4gIGRlcGxveVBhdGgocGF0aDogc3RyaW5nLCBtYXhBZ2U/OiBEdXJhdGlvbiwgc01heEFnZT86IER1cmF0aW9uLCBwcnVuZT86IGJvb2xlYW4pOiBCdWNrZXREZXBsb3ltZW50IHtcbiAgICByZXR1cm4gdGhpcy5kZXBsb3lQYXRocyhbcGF0aF0sIG1heEFnZSwgc01heEFnZSwgcHJ1bmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gYXNzZXRzIHRvIHRoZSBjcmVhdGVkIGJ1Y2tldC4gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIENsb3VkRnJvbnQgaW52YWxpZGF0aW9uXG4gICAqIHJlcXVlc3RzIHdpbGwgYmUgc2VudCBmb3IgbXV0YWJsZSBmaWxlcyB0byBzZXJ2ZSBuZXcgY29udGVudC5cbiAgICogRm9yIG1vcmUgY29tcGxpY2F0ZWQgZGVwbG95bWVudHMsIHVzZSBCdWNrZXREZXBsb3ltZW50IGRpcmVjdGx5LlxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlcyB0aGUgc291cmNlcyB0byBkZXBsb3lcbiAgICogQHBhcmFtIG1heEFnZSB0aGUgbGVuZ3RoIG9mIHRpbWUgdG8gYnJvd3NlcnMgd2lsbCBjYWNoZSBmaWxlczsgZGVmYXVsdCBpcyBEdXJhdGlvbi5taW51dGVzKDE1KVxuICAgKiBAcGFyYW0gc01heEFnZSB0aGUgbGVuZ3RoIG9mIHRpbWUgQ2xvdWRGcm9udCB3aWxsIGNhY2hlIGZpbGVzOyBkZWZhdWx0IGlzIER1cmF0aW9uLmRheXMoNylcbiAgICogQHBhcmFtIHBydW5lIHRydWUgdG8gcHJ1bmUgb2xkIGZpbGVzOyBkZWZhdWx0IGlzIGZhbHNlXG4gICAqL1xuICBkZXBsb3lTb3VyY2VzKHNvdXJjZXM6IElTb3VyY2VbXSwgbWF4QWdlPzogRHVyYXRpb24sIHNNYXhBZ2U/OiBEdXJhdGlvbiwgcHJ1bmU/OiBib29sZWFuKTogQnVja2V0RGVwbG95bWVudCB7XG4gICAgcmV0dXJuIG5ldyBCdWNrZXREZXBsb3ltZW50KHRoaXMsIGBEZXBsb3kke3RoaXMubmV4dERlcGxveUNvdW50KCl9YCwge1xuICAgICAgc291cmNlczogc291cmNlcyxcbiAgICAgIGRlc3RpbmF0aW9uQnVja2V0OiB0aGlzLmJ1Y2tldCxcbiAgICAgIHBydW5lOiBwcnVuZSA/PyBmYWxzZSxcbiAgICAgIGNhY2hlQ29udHJvbDogW1xuICAgICAgICBDYWNoZUNvbnRyb2wuc2V0UHVibGljKCksXG4gICAgICAgIENhY2hlQ29udHJvbC5tYXhBZ2UobWF4QWdlID8/IER1cmF0aW9uLm1pbnV0ZXMoMTUpKSxcbiAgICAgICAgQ2FjaGVDb250cm9sLnNNYXhBZ2Uoc01heEFnZSA/PyBEdXJhdGlvbi5kYXlzKDcpKVxuICAgICAgXVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gYXNzZXRzIHRvIHRoZSBjcmVhdGVkIGJ1Y2tldC4gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIENsb3VkRnJvbnQgaW52YWxpZGF0aW9uXG4gICAqIHJlcXVlc3RzIHdpbGwgYmUgc2VudCBmb3IgbXV0YWJsZSBmaWxlcyB0byBzZXJ2ZSBuZXcgY29udGVudC5cbiAgICogRm9yIG1vcmUgY29tcGxpY2F0ZWQgZGVwbG95bWVudHMsIHVzZSBCdWNrZXREZXBsb3ltZW50IGRpcmVjdGx5LlxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlIHRoZSBzb3VyY2UgdG8gZGVwbG95XG4gICAqIEBwYXJhbSBtYXhBZ2UgdGhlIGxlbmd0aCBvZiB0aW1lIHRvIGJyb3dzZXJzIHdpbGwgY2FjaGUgZmlsZXM7IGRlZmF1bHQgaXMgRHVyYXRpb24ubWludXRlcygxNSlcbiAgICogQHBhcmFtIHNNYXhBZ2UgdGhlIGxlbmd0aCBvZiB0aW1lIENsb3VkRnJvbnQgd2lsbCBjYWNoZSBmaWxlczsgZGVmYXVsdCBpcyBEdXJhdGlvbi5kYXlzKDcpXG4gICAqIEBwYXJhbSBwcnVuZSB0cnVlIHRvIHBydW5lIG9sZCBmaWxlczsgZGVmYXVsdCBpcyBmYWxzZVxuICAgKi9cbiAgZGVwbG95U291cmNlKHNvdXJjZTogSVNvdXJjZSwgbWF4QWdlPzogRHVyYXRpb24sIHNNYXhBZ2U/OiBEdXJhdGlvbiwgcHJ1bmU/OiBib29sZWFuKTogQnVja2V0RGVwbG95bWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZGVwbG95U291cmNlcyhbc291cmNlXSwgbWF4QWdlLCBzTWF4QWdlLCBwcnVuZSk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byByZXR1cm4gYSBDbG91ZEZyb250IE9yaWdpbiBmb3IgdGhpcyBidWNrZXQuXG4gICAqL1xuICB0b09yaWdpbigpOiBTM09yaWdpbiB7XG4gICAgcmV0dXJuIG5ldyBTM09yaWdpbih0aGlzLmJ1Y2tldCwge1xuICAgICAgb3JpZ2luQWNjZXNzSWRlbnRpdHk6IHRoaXMub3JpZ2luQWNjZXNzSWRlbnRpdHlcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIGZvciB0aGlzIGJ1Y2tldCBhbmQgaXQncyBjb250ZW50cyB0byBhbiBJQU1cbiAgICogcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiBlbmNyeXB0aW9uIGlzIHVzZWQsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBrZXkgdG8gZGVjcnlwdCB0aGUgY29udGVudHNcbiAgICogb2YgdGhlIGJ1Y2tldCB3aWxsIGFsc28gYmUgZ3JhbnRlZCB0byB0aGUgc2FtZSBwcmluY2lwYWwuXG4gICAqXG4gICAqIEBwYXJhbSBpZGVudGl0eSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBvYmplY3RzS2V5UGF0dGVybiBSZXN0cmljdCB0aGUgcGVybWlzc2lvbiB0byBhIGNlcnRhaW4ga2V5IHBhdHRlcm4gKGRlZmF1bHQgJyonKVxuICAgKi9cbiAgZ3JhbnRSZWFkKGlkZW50aXR5OiBJR3JhbnRhYmxlLCBvYmplY3RzS2V5UGF0dGVybj86IGFueSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRSZWFkKGlkZW50aXR5LCBvYmplY3RzS2V5UGF0dGVybik7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgd3JpdGUgcGVybWlzc2lvbnMgdG8gdGhpcyBidWNrZXQgdG8gYW4gSUFNIHByaW5jaXBhbC5cbiAgICpcbiAgICogSWYgZW5jcnlwdGlvbiBpcyB1c2VkLCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUga2V5IHRvIGVuY3J5cHQgdGhlIGNvbnRlbnRzXG4gICAqIG9mIHdyaXR0ZW4gZmlsZXMgd2lsbCBhbHNvIGJlIGdyYW50ZWQgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBCZWZvcmUgQ0RLIHZlcnNpb24gMS44NS4wLCB0aGlzIG1ldGhvZCBncmFudGVkIHRoZSBgczM6UHV0T2JqZWN0KmAgcGVybWlzc2lvbiB0aGF0IGluY2x1ZGVkIGBzMzpQdXRPYmplY3RBY2xgLFxuICAgKiB3aGljaCBjb3VsZCBiZSB1c2VkIHRvIGdyYW50IHJlYWQvd3JpdGUgb2JqZWN0IGFjY2VzcyB0byBJQU0gcHJpbmNpcGFscyBpbiBvdGhlciBhY2NvdW50cy5cbiAgICogSWYgeW91IHdhbnQgdG8gZ2V0IHJpZCBvZiB0aGF0IGJlaGF2aW9yLCB1cGRhdGUgeW91ciBDREsgdmVyc2lvbiB0byAxLjg1LjAgb3IgbGF0ZXIsXG4gICAqIGFuZCBtYWtlIHN1cmUgdGhlIGBAYXdzLWNkay9hd3MtczM6Z3JhbnRXcml0ZVdpdGhvdXRBY2xgIGZlYXR1cmUgZmxhZyBpcyBzZXQgdG8gYHRydWVgXG4gICAqIGluIHRoZSBgY29udGV4dGAga2V5IG9mIHlvdXIgY2RrLmpzb24gZmlsZS5cbiAgICogSWYgeW91J3ZlIGFscmVhZHkgdXBkYXRlZCwgYnV0IHN0aWxsIG5lZWQgdGhlIHByaW5jaXBhbCB0byBoYXZlIHBlcm1pc3Npb25zIHRvIG1vZGlmeSB0aGUgQUNMcyxcbiAgICogdXNlIHRoZSBgZ3JhbnRQdXRBY2xgIG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIG9iamVjdHNLZXlQYXR0ZXJuIFJlc3RyaWN0IHRoZSBwZXJtaXNzaW9uIHRvIGEgY2VydGFpbiBrZXkgcGF0dGVybiAoZGVmYXVsdCAnKicpXG4gICAqIEBwYXJhbSBhbGxvd2VkQWN0aW9uUGF0dGVybnMgUmVzdHJpY3QgdGhlIHBlcm1pc3Npb25zIHRvIGNlcnRhaW4gbGlzdCBvZiBhY3Rpb24gcGF0dGVybnNcbiAgICovXG4gIGdyYW50V3JpdGUoaWRlbnRpdHk6IElHcmFudGFibGUsIG9iamVjdHNLZXlQYXR0ZXJuPzogYW55LCBhbGxvd2VkQWN0aW9uUGF0dGVybnM/OiBzdHJpbmdbXSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRXcml0ZShpZGVudGl0eSwgb2JqZWN0c0tleVBhdHRlcm4sIGFsbG93ZWRBY3Rpb25QYXR0ZXJucyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHMzOlB1dE9iamVjdCogYW5kIHMzOkFib3J0KiBwZXJtaXNzaW9ucyBmb3IgdGhpcyBidWNrZXQgdG8gYW4gSUFNIHByaW5jaXBhbC5cbiAgICpcbiAgICogSWYgZW5jcnlwdGlvbiBpcyB1c2VkLCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUga2V5IHRvIGVuY3J5cHQgdGhlIGNvbnRlbnRzXG4gICAqIG9mIHdyaXR0ZW4gZmlsZXMgd2lsbCBhbHNvIGJlIGdyYW50ZWQgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gb2JqZWN0c0tleVBhdHRlcm4gUmVzdHJpY3QgdGhlIHBlcm1pc3Npb24gdG8gYSBjZXJ0YWluIGtleSBwYXR0ZXJuIChkZWZhdWx0ICcqJylcbiAgICovXG4gIGdyYW50UHV0KGlkZW50aXR5OiBJR3JhbnRhYmxlLCBvYmplY3RzS2V5UGF0dGVybj86IGFueSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRQdXQoaWRlbnRpdHksIG9iamVjdHNLZXlQYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gSUFNIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIG1vZGlmeSB0aGUgQUNMcyBvZiBvYmplY3RzIGluIHRoZSBnaXZlbiBCdWNrZXQuXG4gICAqXG4gICAqIElmIHlvdXIgYXBwbGljYXRpb24gaGFzIHRoZSAnQGF3cy1jZGsvYXdzLXMzOmdyYW50V3JpdGVXaXRob3V0QWNsJyBmZWF0dXJlIGZsYWcgc2V0LFxuICAgKiBjYWxsaW5nIGBncmFudFdyaXRlYCBvciBgZ3JhbnRSZWFkV3JpdGVgIG5vIGxvbmdlciBncmFudHMgcGVybWlzc2lvbnMgdG8gbW9kaWZ5IHRoZSBBQ0xzIG9mIHRoZSBvYmplY3RzO1xuICAgKiBpbiB0aGlzIGNhc2UsIGlmIHlvdSBuZWVkIHRvIG1vZGlmeSBvYmplY3QgQUNMcywgY2FsbCB0aGlzIG1ldGhvZCBleHBsaWNpdGx5LlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gb2JqZWN0c0tleVBhdHRlcm4gUmVzdHJpY3QgdGhlIHBlcm1pc3Npb24gdG8gYSBjZXJ0YWluIGtleSBwYXR0ZXJuIChkZWZhdWx0ICcqJylcbiAgICovXG4gIGdyYW50UHV0QWNsKGlkZW50aXR5OiBJR3JhbnRhYmxlLCBvYmplY3RzS2V5UGF0dGVybj86IHN0cmluZyk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRQdXRBY2woaWRlbnRpdHksIG9iamVjdHNLZXlQYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgczM6RGVsZXRlT2JqZWN0KiBwZXJtaXNzaW9uIHRvIGFuIElBTSBwcmluY2lwYWwgZm9yIG9iamVjdHNcbiAgICogaW4gdGhpcyBidWNrZXQuXG4gICAqXG4gICAqIEBwYXJhbSBpZGVudGl0eSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBvYmplY3RzS2V5UGF0dGVybiBSZXN0cmljdCB0aGUgcGVybWlzc2lvbiB0byBhIGNlcnRhaW4ga2V5IHBhdHRlcm4gKGRlZmF1bHQgJyonKVxuICAgKi9cbiAgZ3JhbnREZWxldGUoaWRlbnRpdHk6IElHcmFudGFibGUsIG9iamVjdHNLZXlQYXR0ZXJuPzogYW55KTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmJ1Y2tldC5ncmFudERlbGV0ZShpZGVudGl0eSwgb2JqZWN0c0tleVBhdHRlcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyByZWFkL3dyaXRlIHBlcm1pc3Npb25zIGZvciB0aGlzIGJ1Y2tldCBhbmQgaXQncyBjb250ZW50cyB0byBhbiBJQU1cbiAgICogcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiBhbiBlbmNyeXB0aW9uIGtleSBpcyB1c2VkLCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUga2V5IGZvclxuICAgKiBlbmNyeXB0L2RlY3J5cHQgd2lsbCBhbHNvIGJlIGdyYW50ZWQuXG4gICAqXG4gICAqIEJlZm9yZSBDREsgdmVyc2lvbiAxLjg1LjAsIHRoaXMgbWV0aG9kIGdyYW50ZWQgdGhlIGBzMzpQdXRPYmplY3QqYCBwZXJtaXNzaW9uIHRoYXQgaW5jbHVkZWQgYHMzOlB1dE9iamVjdEFjbGAsXG4gICAqIHdoaWNoIGNvdWxkIGJlIHVzZWQgdG8gZ3JhbnQgcmVhZC93cml0ZSBvYmplY3QgYWNjZXNzIHRvIElBTSBwcmluY2lwYWxzIGluIG90aGVyIGFjY291bnRzLlxuICAgKiBJZiB5b3Ugd2FudCB0byBnZXQgcmlkIG9mIHRoYXQgYmVoYXZpb3IsIHVwZGF0ZSB5b3VyIENESyB2ZXJzaW9uIHRvIDEuODUuMCBvciBsYXRlcixcbiAgICogYW5kIG1ha2Ugc3VyZSB0aGUgYEBhd3MtY2RrL2F3cy1zMzpncmFudFdyaXRlV2l0aG91dEFjbGAgZmVhdHVyZSBmbGFnIGlzIHNldCB0byBgdHJ1ZWBcbiAgICogaW4gdGhlIGBjb250ZXh0YCBrZXkgb2YgeW91ciBjZGsuanNvbiBmaWxlLlxuICAgKiBJZiB5b3UndmUgYWxyZWFkeSB1cGRhdGVkLCBidXQgc3RpbGwgbmVlZCB0aGUgcHJpbmNpcGFsIHRvIGhhdmUgcGVybWlzc2lvbnMgdG8gbW9kaWZ5IHRoZSBBQ0xzLFxuICAgKiB1c2UgdGhlIGBncmFudFB1dEFjbGAgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gb2JqZWN0c0tleVBhdHRlcm4gUmVzdHJpY3QgdGhlIHBlcm1pc3Npb24gdG8gYSBjZXJ0YWluIGtleSBwYXR0ZXJuIChkZWZhdWx0ICcqJylcbiAgICovXG4gIGdyYW50UmVhZFdyaXRlKGlkZW50aXR5OiBJR3JhbnRhYmxlLCBvYmplY3RzS2V5UGF0dGVybj86IGFueSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRSZWFkV3JpdGUoaWRlbnRpdHksIG9iamVjdHNLZXlQYXR0ZXJuKTtcbiAgfVxuXG59XG4iXX0=
@@ -4,6 +4,7 @@ import { LatencyARecord, WeightedARecord } from "../../aws-route53";
4
4
  import { ARecord, IHostedZone } from "aws-cdk-lib/aws-route53";
5
5
  import { RemovalPolicy, Duration } from "aws-cdk-lib";
6
6
  import { BucketDeployment } from "aws-cdk-lib/aws-s3-deployment";
7
+ import { Grant, IGrantable } from "aws-cdk-lib/aws-iam";
7
8
  /**
8
9
  * Domain name properties for a bucket based website.
9
10
  */
@@ -46,7 +47,7 @@ export declare class WebsiteBucket extends Construct {
46
47
  readonly bucketWebsiteUrl: string;
47
48
  readonly bucketWebsiteDomainName: string;
48
49
  readonly record: ARecord | WeightedARecord | LatencyARecord;
49
- constructor(scope: Construct, id: string, props: WebsiteBucketProps);
50
+ constructor(scope: Construct, id: string, props?: WebsiteBucketProps);
50
51
  /**
51
52
  * Helper method to deploy local assets to the created bucket. Ths function assumes
52
53
  * CloudFront invalidation requests will be sent for mutable files to serve new content.
@@ -58,4 +59,81 @@ export declare class WebsiteBucket extends Construct {
58
59
  * @param prune
59
60
  */
60
61
  deploy(path: string, maxAge?: Duration, sMaxAge?: Duration, prune?: boolean): BucketDeployment;
62
+ /**
63
+ * Grant read permissions for this bucket and it's contents to an IAM
64
+ * principal (Role/Group/User).
65
+ *
66
+ * If encryption is used, permission to use the key to decrypt the contents
67
+ * of the bucket will also be granted to the same principal.
68
+ *
69
+ * @param identity The principal
70
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
71
+ */
72
+ grantRead(identity: IGrantable, objectsKeyPattern?: any): Grant;
73
+ /**
74
+ * Grant write permissions to this bucket to an IAM principal.
75
+ *
76
+ * If encryption is used, permission to use the key to encrypt the contents
77
+ * of written files will also be granted to the same principal.
78
+ *
79
+ * Before CDK version 1.85.0, this method granted the `s3:PutObject*` permission that included `s3:PutObjectAcl`,
80
+ * which could be used to grant read/write object access to IAM principals in other accounts.
81
+ * If you want to get rid of that behavior, update your CDK version to 1.85.0 or later,
82
+ * and make sure the `@aws-cdk/aws-s3:grantWriteWithoutAcl` feature flag is set to `true`
83
+ * in the `context` key of your cdk.json file.
84
+ * If you've already updated, but still need the principal to have permissions to modify the ACLs,
85
+ * use the `grantPutAcl` method.
86
+ *
87
+ * @param identity The principal
88
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
89
+ * @param allowedActionPatterns Restrict the permissions to certain list of action patterns
90
+ */
91
+ grantWrite(identity: IGrantable, objectsKeyPattern?: any, allowedActionPatterns?: string[]): Grant;
92
+ /**
93
+ * Grants s3:PutObject* and s3:Abort* permissions for this bucket to an IAM principal.
94
+ *
95
+ * If encryption is used, permission to use the key to encrypt the contents
96
+ * of written files will also be granted to the same principal.
97
+ * @param identity The principal
98
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
99
+ */
100
+ grantPut(identity: IGrantable, objectsKeyPattern?: any): Grant;
101
+ /**
102
+ * Grant the given IAM identity permissions to modify the ACLs of objects in the given Bucket.
103
+ *
104
+ * If your application has the '@aws-cdk/aws-s3:grantWriteWithoutAcl' feature flag set,
105
+ * calling `grantWrite` or `grantReadWrite` no longer grants permissions to modify the ACLs of the objects;
106
+ * in this case, if you need to modify object ACLs, call this method explicitly.
107
+ *
108
+ * @param identity The principal
109
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
110
+ */
111
+ grantPutAcl(identity: IGrantable, objectsKeyPattern?: string): Grant;
112
+ /**
113
+ * Grants s3:DeleteObject* permission to an IAM principal for objects
114
+ * in this bucket.
115
+ *
116
+ * @param identity The principal
117
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
118
+ */
119
+ grantDelete(identity: IGrantable, objectsKeyPattern?: any): Grant;
120
+ /**
121
+ * Grants read/write permissions for this bucket and it's contents to an IAM
122
+ * principal (Role/Group/User).
123
+ *
124
+ * If an encryption key is used, permission to use the key for
125
+ * encrypt/decrypt will also be granted.
126
+ *
127
+ * Before CDK version 1.85.0, this method granted the `s3:PutObject*` permission that included `s3:PutObjectAcl`,
128
+ * which could be used to grant read/write object access to IAM principals in other accounts.
129
+ * If you want to get rid of that behavior, update your CDK version to 1.85.0 or later,
130
+ * and make sure the `@aws-cdk/aws-s3:grantWriteWithoutAcl` feature flag is set to `true`
131
+ * in the `context` key of your cdk.json file.
132
+ * If you've already updated, but still need the principal to have permissions to modify the ACLs,
133
+ * use the `grantPutAcl` method.
134
+ *
135
+ * @param identity The principal
136
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
137
+ */
138
+ grantReadWrite(identity: IGrantable, objectsKeyPattern?: any): Grant;
61
139
  }
@@ -15,9 +15,9 @@ class WebsiteBucket extends constructs_1.Construct {
15
15
  constructor(scope, id, props) {
16
16
  var _a, _b, _c, _d, _e, _f, _g, _h;
17
17
  super(scope, id);
18
- const removalPolicy = (_a = props.removalPolicy) !== null && _a !== void 0 ? _a : aws_cdk_lib_1.RemovalPolicy.RETAIN;
19
- const autoDeleteObjects = ((_b = props.autoDeleteObjects) !== null && _b !== void 0 ? _b : false) && removalPolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY;
20
- const domainName = props.domainName === undefined ? undefined : new aws_route53_1.DomainName({
18
+ const removalPolicy = (_a = props === null || props === void 0 ? void 0 : props.removalPolicy) !== null && _a !== void 0 ? _a : aws_cdk_lib_1.RemovalPolicy.RETAIN;
19
+ const autoDeleteObjects = ((_b = props === null || props === void 0 ? void 0 : props.autoDeleteObjects) !== null && _b !== void 0 ? _b : false) && removalPolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY;
20
+ const domainName = (props === null || props === void 0 ? void 0 : props.domainName) === undefined ? undefined : new aws_route53_1.DomainName({
21
21
  prefix: props.domainName.prefix,
22
22
  zone: props.domainName.zone
23
23
  });
@@ -25,10 +25,10 @@ class WebsiteBucket extends constructs_1.Construct {
25
25
  bucketName: domainName === null || domainName === void 0 ? void 0 : domainName.toString(),
26
26
  encryption: aws_s3_1.BucketEncryption.S3_MANAGED,
27
27
  publicReadAccess: true,
28
- websiteIndexDocument: (_c = props.websiteIndexDocument) !== null && _c !== void 0 ? _c : "index.html",
29
- websiteErrorDocument: (_d = props.websiteErrorDocument) !== null && _d !== void 0 ? _d : "error.html",
30
- websiteRedirect: props.websiteRedirect,
31
- websiteRoutingRules: props.websiteRoutingRules,
28
+ websiteIndexDocument: (_c = props === null || props === void 0 ? void 0 : props.websiteIndexDocument) !== null && _c !== void 0 ? _c : "index.html",
29
+ websiteErrorDocument: (_d = props === null || props === void 0 ? void 0 : props.websiteErrorDocument) !== null && _d !== void 0 ? _d : "error.html",
30
+ websiteRedirect: props === null || props === void 0 ? void 0 : props.websiteRedirect,
31
+ websiteRoutingRules: props === null || props === void 0 ? void 0 : props.websiteRoutingRules,
32
32
  removalPolicy,
33
33
  autoDeleteObjects,
34
34
  });
@@ -36,13 +36,13 @@ class WebsiteBucket extends constructs_1.Construct {
36
36
  this.bucketArn = this.bucket.bucketArn;
37
37
  this.bucketWebsiteUrl = this.bucket.bucketWebsiteUrl;
38
38
  this.bucketWebsiteDomainName = this.bucket.bucketWebsiteDomainName;
39
- if (domainName !== undefined && ((_f = (_e = props.domainName) === null || _e === void 0 ? void 0 : _e.create) !== null && _f !== void 0 ? _f : true)) {
39
+ if (domainName !== undefined && ((_f = (_e = props === null || props === void 0 ? void 0 : props.domainName) === null || _e === void 0 ? void 0 : _e.create) !== null && _f !== void 0 ? _f : true)) {
40
40
  const target = aws_route53_2.RecordTarget.fromAlias(new aws_route53_targets_1.BucketWebsiteTarget(this.bucket));
41
41
  // TODO Evaluate
42
- if (((_g = props.domainName) === null || _g === void 0 ? void 0 : _g.latency) !== undefined) {
42
+ if (((_g = props === null || props === void 0 ? void 0 : props.domainName) === null || _g === void 0 ? void 0 : _g.latency) !== undefined) {
43
43
  this.record = domainName.createLatencyARecord(this, target);
44
44
  }
45
- else if (((_h = props.domainName) === null || _h === void 0 ? void 0 : _h.weight) !== undefined) {
45
+ else if (((_h = props === null || props === void 0 ? void 0 : props.domainName) === null || _h === void 0 ? void 0 : _h.weight) !== undefined) {
46
46
  this.record = domainName.createWeightedARecord(this, target, props.domainName.weight);
47
47
  }
48
48
  else {
@@ -73,6 +73,95 @@ class WebsiteBucket extends constructs_1.Construct {
73
73
  ]
74
74
  });
75
75
  }
76
+ /**
77
+ * Grant read permissions for this bucket and it's contents to an IAM
78
+ * principal (Role/Group/User).
79
+ *
80
+ * If encryption is used, permission to use the key to decrypt the contents
81
+ * of the bucket will also be granted to the same principal.
82
+ *
83
+ * @param identity The principal
84
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
85
+ */
86
+ grantRead(identity, objectsKeyPattern) {
87
+ return this.bucket.grantRead(identity, objectsKeyPattern);
88
+ }
89
+ /**
90
+ * Grant write permissions to this bucket to an IAM principal.
91
+ *
92
+ * If encryption is used, permission to use the key to encrypt the contents
93
+ * of written files will also be granted to the same principal.
94
+ *
95
+ * Before CDK version 1.85.0, this method granted the `s3:PutObject*` permission that included `s3:PutObjectAcl`,
96
+ * which could be used to grant read/write object access to IAM principals in other accounts.
97
+ * If you want to get rid of that behavior, update your CDK version to 1.85.0 or later,
98
+ * and make sure the `@aws-cdk/aws-s3:grantWriteWithoutAcl` feature flag is set to `true`
99
+ * in the `context` key of your cdk.json file.
100
+ * If you've already updated, but still need the principal to have permissions to modify the ACLs,
101
+ * use the `grantPutAcl` method.
102
+ *
103
+ * @param identity The principal
104
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
105
+ * @param allowedActionPatterns Restrict the permissions to certain list of action patterns
106
+ */
107
+ grantWrite(identity, objectsKeyPattern, allowedActionPatterns) {
108
+ return this.bucket.grantWrite(identity, objectsKeyPattern, allowedActionPatterns);
109
+ }
110
+ /**
111
+ * Grants s3:PutObject* and s3:Abort* permissions for this bucket to an IAM principal.
112
+ *
113
+ * If encryption is used, permission to use the key to encrypt the contents
114
+ * of written files will also be granted to the same principal.
115
+ * @param identity The principal
116
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
117
+ */
118
+ grantPut(identity, objectsKeyPattern) {
119
+ return this.bucket.grantPut(identity, objectsKeyPattern);
120
+ }
121
+ /**
122
+ * Grant the given IAM identity permissions to modify the ACLs of objects in the given Bucket.
123
+ *
124
+ * If your application has the '@aws-cdk/aws-s3:grantWriteWithoutAcl' feature flag set,
125
+ * calling `grantWrite` or `grantReadWrite` no longer grants permissions to modify the ACLs of the objects;
126
+ * in this case, if you need to modify object ACLs, call this method explicitly.
127
+ *
128
+ * @param identity The principal
129
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
130
+ */
131
+ grantPutAcl(identity, objectsKeyPattern) {
132
+ return this.bucket.grantPutAcl(identity, objectsKeyPattern);
133
+ }
134
+ /**
135
+ * Grants s3:DeleteObject* permission to an IAM principal for objects
136
+ * in this bucket.
137
+ *
138
+ * @param identity The principal
139
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
140
+ */
141
+ grantDelete(identity, objectsKeyPattern) {
142
+ return this.bucket.grantDelete(identity, objectsKeyPattern);
143
+ }
144
+ /**
145
+ * Grants read/write permissions for this bucket and it's contents to an IAM
146
+ * principal (Role/Group/User).
147
+ *
148
+ * If an encryption key is used, permission to use the key for
149
+ * encrypt/decrypt will also be granted.
150
+ *
151
+ * Before CDK version 1.85.0, this method granted the `s3:PutObject*` permission that included `s3:PutObjectAcl`,
152
+ * which could be used to grant read/write object access to IAM principals in other accounts.
153
+ * If you want to get rid of that behavior, update your CDK version to 1.85.0 or later,
154
+ * and make sure the `@aws-cdk/aws-s3:grantWriteWithoutAcl` feature flag is set to `true`
155
+ * in the `context` key of your cdk.json file.
156
+ * If you've already updated, but still need the principal to have permissions to modify the ACLs,
157
+ * use the `grantPutAcl` method.
158
+ *
159
+ * @param identity The principal
160
+ * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*')
161
+ */
162
+ grantReadWrite(identity, objectsKeyPattern) {
163
+ return this.bucket.grantReadWrite(identity, objectsKeyPattern);
164
+ }
76
165
  }
77
166
  exports.WebsiteBucket = WebsiteBucket;
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic2l0ZS1idWNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3ZWJzaXRlLWJ1Y2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBcUM7QUFDckMsK0NBQXlGO0FBQ3pGLG1EQUE4RTtBQUM5RSx5REFBMkU7QUFDM0UseUVBQW9FO0FBQ3BFLDZDQUFvRDtBQUNwRCxxRUFBcUY7QUFrRHJGOztHQUVHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsc0JBQVM7SUFTMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5Qjs7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLGFBQWEsU0FBRyxLQUFLLENBQUMsYUFBYSxtQ0FBSSwyQkFBYSxDQUFDLE1BQU0sQ0FBQztRQUNsRSxNQUFNLGlCQUFpQixHQUFHLE9BQUMsS0FBSyxDQUFDLGlCQUFpQixtQ0FBSSxLQUFLLENBQUMsSUFBSSxhQUFhLEtBQUssMkJBQWEsQ0FBQyxPQUFPLENBQUM7UUFFeEcsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSx3QkFBVSxDQUFDO1lBQzdFLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU07WUFDL0IsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSTtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDeEMsVUFBVSxFQUFFLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxRQUFRLEVBQUU7WUFDbEMsVUFBVSxFQUFFLHlCQUFnQixDQUFDLFVBQVU7WUFDdkMsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixvQkFBb0IsUUFBRSxLQUFLLENBQUMsb0JBQW9CLG1DQUFJLFlBQVk7WUFDaEUsb0JBQW9CLFFBQUUsS0FBSyxDQUFDLG9CQUFvQixtQ0FBSSxZQUFZO1lBQ2hFLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtZQUN0QyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsbUJBQW1CO1lBQzlDLGFBQWE7WUFDYixpQkFBaUI7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ3JELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDO1FBRW5FLElBQUksVUFBVSxLQUFLLFNBQVMsSUFBSSxhQUFDLEtBQUssQ0FBQyxVQUFVLDBDQUFFLE1BQU0sbUNBQUksSUFBSSxDQUFDLEVBQUU7WUFDbEUsTUFBTSxNQUFNLEdBQUcsMEJBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSx5Q0FBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUM1RSxnQkFBZ0I7WUFDaEIsSUFBSSxPQUFBLEtBQUssQ0FBQyxVQUFVLDBDQUFFLE9BQU8sTUFBSyxTQUFTLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQzthQUM3RDtpQkFBTSxJQUFJLE9BQUEsS0FBSyxDQUFDLFVBQVUsMENBQUUsTUFBTSxNQUFLLFNBQVMsRUFBRTtnQkFDakQsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3ZGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDdEQ7U0FDRjtJQUNILENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxNQUFNLENBQUMsSUFBWSxFQUFFLE1BQWlCLEVBQUUsT0FBa0IsRUFBRSxLQUFlO1FBQ3pFLE9BQU8sSUFBSSxvQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQzFDLE9BQU8sRUFBRSxDQUFDLDBCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxNQUFNO1lBQzlCLEtBQUssRUFBRSxLQUFLLGFBQUwsS0FBSyxjQUFMLEtBQUssR0FBSSxLQUFLO1lBQ3JCLFdBQVcsRUFBRSxHQUFHO1lBQ2hCLFlBQVksRUFBRTtnQkFDWixnQ0FBWSxDQUFDLFNBQVMsRUFBRTtnQkFDeEIsZ0NBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxhQUFOLE1BQU0sY0FBTixNQUFNLEdBQUksc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELGdDQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLHNCQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBeEVELHNDQXdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtCdWNrZXQsIEJ1Y2tldEVuY3J5cHRpb24sIFJlZGlyZWN0VGFyZ2V0LCBSb3V0aW5nUnVsZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHtEb21haW5OYW1lLCBMYXRlbmN5QVJlY29yZCwgV2VpZ2h0ZWRBUmVjb3JkfSBmcm9tIFwiLi4vLi4vYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7QVJlY29yZCwgSUhvc3RlZFpvbmUsIFJlY29yZFRhcmdldH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQge0J1Y2tldFdlYnNpdGVUYXJnZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1My10YXJnZXRzXCI7XG5pbXBvcnQge1JlbW92YWxQb2xpY3ksIER1cmF0aW9ufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7QnVja2V0RGVwbG95bWVudCwgQ2FjaGVDb250cm9sLCBTb3VyY2V9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczMtZGVwbG95bWVudFwiO1xuXG5cbi8qKlxuICogRG9tYWluIG5hbWUgcHJvcGVydGllcyBmb3IgYSBidWNrZXQgYmFzZWQgd2Vic2l0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJzaXRlRG9tYWluTmFtZVByb3BzIHtcblxuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgem9uZTogc3RyaW5nIHwgSUhvc3RlZFpvbmU7XG5cbiAgcmVhZG9ubHkgd2VpZ2h0PzogbnVtYmVyO1xuXG4gIHJlYWRvbmx5IGxhdGVuY3k/OiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGNyZWF0ZT86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBXZWJzaXRlQnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdlYnNpdGVCdWNrZXRQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFBvbGljeSB0byBhcHBseSB3aGVuIHRoZSBidWNrZXQgaXMgcmVtb3ZlZCBmcm9tIHRoaXMgc3RhY2suXG4gICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcblxuICAvKipcbiAgICogV2hldGhlciBhbGwgb2JqZWN0cyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBkZWxldGVkIHdoZW4gdGhlIGJ1Y2tldCBpcyByZW1vdmVkIGZyb20gdGhlIHN0YWNrIG9yIHdoZW4gdGhlIHN0YWNrIGlzIGRlbGV0ZWQuXG4gICAqIFJlcXVpcmVzIHRoZSByZW1vdmFsUG9saWN5IHRvIGJlIHNldCB0byBSZW1vdmFsUG9saWN5LkRFU1RST1kuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhdXRvRGVsZXRlT2JqZWN0cz86IGJvb2xlYW47XG5cbiAgcmVhZG9ubHkgZG9tYWluTmFtZT86IFdlYnNpdGVEb21haW5OYW1lUHJvcHM7XG5cbiAgcmVhZG9ubHkgd2Vic2l0ZUluZGV4RG9jdW1lbnQ/OiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgd2Vic2l0ZUVycm9yRG9jdW1lbnQ/OiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgd2Vic2l0ZVJlZGlyZWN0PzogUmVkaXJlY3RUYXJnZXQ7XG5cbiAgcmVhZG9ubHkgd2Vic2l0ZVJvdXRpbmdSdWxlcz86IFJvdXRpbmdSdWxlW107XG59XG5cbi8qKlxuICogU2ltcGxlIENvbnN0cnVjdCBmb3IgY3JlYXRpbmcgYnVja2V0cyB0aGF0IHdpbGwgYmUgYWNjZXNzZWQgZGlyZWN0bHkgYXMgYSB3ZWJzaXRlLlxuICovXG5leHBvcnQgY2xhc3MgV2Vic2l0ZUJ1Y2tldCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcmVhZG9ubHkgYnVja2V0OiBCdWNrZXQ7XG4gIHJlYWRvbmx5IGJ1Y2tldE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYnVja2V0QXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGJ1Y2tldFdlYnNpdGVVcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgYnVja2V0V2Vic2l0ZURvbWFpbk5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVjb3JkOiBBUmVjb3JkIHwgV2VpZ2h0ZWRBUmVjb3JkIHwgTGF0ZW5jeUFSZWNvcmQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFdlYnNpdGVCdWNrZXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCByZW1vdmFsUG9saWN5ID0gcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBSZW1vdmFsUG9saWN5LlJFVEFJTjtcbiAgICBjb25zdCBhdXRvRGVsZXRlT2JqZWN0cyA9IChwcm9wcy5hdXRvRGVsZXRlT2JqZWN0cyA/PyBmYWxzZSkgJiYgcmVtb3ZhbFBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZO1xuXG4gICAgY29uc3QgZG9tYWluTmFtZSA9IHByb3BzLmRvbWFpbk5hbWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG5ldyBEb21haW5OYW1lKHtcbiAgICAgIHByZWZpeDogcHJvcHMuZG9tYWluTmFtZS5wcmVmaXgsXG4gICAgICB6b25lOiBwcm9wcy5kb21haW5OYW1lLnpvbmVcbiAgICB9KTtcblxuICAgIHRoaXMuYnVja2V0ID0gbmV3IEJ1Y2tldCh0aGlzLCBcIkRlZmF1bHRcIiwge1xuICAgICAgYnVja2V0TmFtZTogZG9tYWluTmFtZT8udG9TdHJpbmcoKSxcbiAgICAgIGVuY3J5cHRpb246IEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICAgIHB1YmxpY1JlYWRBY2Nlc3M6IHRydWUsXG4gICAgICB3ZWJzaXRlSW5kZXhEb2N1bWVudDogcHJvcHMud2Vic2l0ZUluZGV4RG9jdW1lbnQgPz8gXCJpbmRleC5odG1sXCIsXG4gICAgICB3ZWJzaXRlRXJyb3JEb2N1bWVudDogcHJvcHMud2Vic2l0ZUVycm9yRG9jdW1lbnQgPz8gXCJlcnJvci5odG1sXCIsXG4gICAgICB3ZWJzaXRlUmVkaXJlY3Q6IHByb3BzLndlYnNpdGVSZWRpcmVjdCxcbiAgICAgIHdlYnNpdGVSb3V0aW5nUnVsZXM6IHByb3BzLndlYnNpdGVSb3V0aW5nUnVsZXMsXG4gICAgICByZW1vdmFsUG9saWN5LFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHMsXG4gICAgfSk7XG4gICAgdGhpcy5idWNrZXROYW1lID0gdGhpcy5idWNrZXQuYnVja2V0TmFtZTtcbiAgICB0aGlzLmJ1Y2tldEFybiA9IHRoaXMuYnVja2V0LmJ1Y2tldEFybjtcbiAgICB0aGlzLmJ1Y2tldFdlYnNpdGVVcmwgPSB0aGlzLmJ1Y2tldC5idWNrZXRXZWJzaXRlVXJsO1xuICAgIHRoaXMuYnVja2V0V2Vic2l0ZURvbWFpbk5hbWUgPSB0aGlzLmJ1Y2tldC5idWNrZXRXZWJzaXRlRG9tYWluTmFtZTtcblxuICAgIGlmIChkb21haW5OYW1lICE9PSB1bmRlZmluZWQgJiYgKHByb3BzLmRvbWFpbk5hbWU/LmNyZWF0ZSA/PyB0cnVlKSkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhuZXcgQnVja2V0V2Vic2l0ZVRhcmdldCh0aGlzLmJ1Y2tldCkpO1xuICAgICAgLy8gVE9ETyBFdmFsdWF0ZVxuICAgICAgaWYgKHByb3BzLmRvbWFpbk5hbWU/LmxhdGVuY3kgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnJlY29yZCA9IGRvbWFpbk5hbWUuY3JlYXRlTGF0ZW5jeUFSZWNvcmQodGhpcywgdGFyZ2V0KTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcHMuZG9tYWluTmFtZT8ud2VpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5yZWNvcmQgPSBkb21haW5OYW1lLmNyZWF0ZVdlaWdodGVkQVJlY29yZCh0aGlzLCB0YXJnZXQsIHByb3BzLmRvbWFpbk5hbWUud2VpZ2h0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVjb3JkID0gZG9tYWluTmFtZS5jcmVhdGVBUmVjb3JkKHRoaXMsIHRhcmdldCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZGVwbG95IGxvY2FsIGFzc2V0cyB0byB0aGUgY3JlYXRlZCBidWNrZXQuIFRocyBmdW5jdGlvbiBhc3N1bWVzXG4gICAqIENsb3VkRnJvbnQgaW52YWxpZGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgc2VudCBmb3IgbXV0YWJsZSBmaWxlcyB0byBzZXJ2ZSBuZXcgY29udGVudC5cbiAgICogRm9yIG1vcmUgY29tcGxpY2F0ZWQgZGVwbG95bWVudHMsIHVzZSBCdWNrZXREZXBsb3ltZW50IGRpcmVjdGx5LlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCB0aGUgcGF0aCB0byB0aGUgbG9jYWwgYXNzZXRzXG4gICAqIEBwYXJhbSBtYXhBZ2UgdGhlIGxlbmd0aCBvZiB0aW1lIHRvIGJyb3dzZXJzIHdpbGwgY2FjaGUgZmlsZXM7IGRlZmF1bHQgaXMgRHVyYXRpb24ubWludXRlcygxNSlcbiAgICogQHBhcmFtIHNNYXhBZ2UgdGhlIGxlbmd0aCBvZiB0aW1lIENsb3VkRnJvbnQgd2lsbCBjYWNoZSBmaWxlczsgZGVmYXVsdCBpcyBEdXJhdGlvbi5kYXlzKDcpXG4gICAqIEBwYXJhbSBwcnVuZVxuICAgKi9cbiAgZGVwbG95KHBhdGg6IHN0cmluZywgbWF4QWdlPzogRHVyYXRpb24sIHNNYXhBZ2U/OiBEdXJhdGlvbiwgcHJ1bmU/OiBib29sZWFuKTogQnVja2V0RGVwbG95bWVudCB7XG4gICAgcmV0dXJuIG5ldyBCdWNrZXREZXBsb3ltZW50KHRoaXMsIFwiRGVwbG95XCIsIHtcbiAgICAgIHNvdXJjZXM6IFtTb3VyY2UuYXNzZXQocGF0aCldLFxuICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHRoaXMuYnVja2V0LFxuICAgICAgcHJ1bmU6IHBydW5lID8/IGZhbHNlLFxuICAgICAgbWVtb3J5TGltaXQ6IDUxMixcbiAgICAgIGNhY2hlQ29udHJvbDogW1xuICAgICAgICBDYWNoZUNvbnRyb2wuc2V0UHVibGljKCksXG4gICAgICAgIENhY2hlQ29udHJvbC5tYXhBZ2UobWF4QWdlID8/IER1cmF0aW9uLm1pbnV0ZXMoMTUpKSxcbiAgICAgICAgQ2FjaGVDb250cm9sLnNNYXhBZ2Uoc01heEFnZSA/PyBEdXJhdGlvbi5kYXlzKDcpKVxuICAgICAgXVxuICAgIH0pO1xuICB9XG59XG4iXX0=
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic2l0ZS1idWNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3ZWJzaXRlLWJ1Y2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBcUM7QUFDckMsK0NBQXlGO0FBQ3pGLG1EQUE4RTtBQUM5RSx5REFBMkU7QUFDM0UseUVBQW9FO0FBQ3BFLDZDQUFvRDtBQUNwRCxxRUFBcUY7QUFtRHJGOztHQUVHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsc0JBQVM7SUFTMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjs7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLGFBQWEsU0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsYUFBYSxtQ0FBSSwyQkFBYSxDQUFDLE1BQU0sQ0FBQztRQUNuRSxNQUFNLGlCQUFpQixHQUFHLE9BQUMsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLGlCQUFpQixtQ0FBSSxLQUFLLENBQUMsSUFBSSxhQUFhLEtBQUssMkJBQWEsQ0FBQyxPQUFPLENBQUM7UUFFekcsTUFBTSxVQUFVLEdBQUcsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsVUFBVSxNQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLHdCQUFVLENBQUM7WUFDOUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTTtZQUMvQixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJO1NBQzVCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUN4QyxVQUFVLEVBQUUsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLFFBQVEsRUFBRTtZQUNsQyxVQUFVLEVBQUUseUJBQWdCLENBQUMsVUFBVTtZQUN2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Q0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNILFVBQVUsQ0FBQyxRQUFvQixFQUFFLGlCQUF1QixFQUFFLHFCQUFnQztRQUN4RixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsUUFBUSxDQUFDLFFBQW9CLEVBQUUsaUJBQXVCO1FBQ3BELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILFdBQVcsQ0FBQyxRQUFvQixFQUFFLGlCQUEwQjtRQUMxRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQUMsUUFBb0IsRUFBRSxpQkFBdUI7UUFDdkQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0gsY0FBYyxDQUFDLFFBQW9CLEVBQUUsaUJBQXVCO1FBQzFELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNGO0FBdktELHNDQXVLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtCdWNrZXQsIEJ1Y2tldEVuY3J5cHRpb24sIFJlZGlyZWN0VGFyZ2V0LCBSb3V0aW5nUnVsZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHtEb21haW5OYW1lLCBMYXRlbmN5QVJlY29yZCwgV2VpZ2h0ZWRBUmVjb3JkfSBmcm9tIFwiLi4vLi4vYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7QVJlY29yZCwgSUhvc3RlZFpvbmUsIFJlY29yZFRhcmdldH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQge0J1Y2tldFdlYnNpdGVUYXJnZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1My10YXJnZXRzXCI7XG5pbXBvcnQge1JlbW92YWxQb2xpY3ksIER1cmF0aW9ufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7QnVja2V0RGVwbG95bWVudCwgQ2FjaGVDb250cm9sLCBTb3VyY2V9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczMtZGVwbG95bWVudFwiO1xuaW1wb3J0IHtHcmFudCwgSUdyYW50YWJsZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcblxuXG4vKipcbiAqIERvbWFpbiBuYW1lIHByb3BlcnRpZXMgZm9yIGEgYnVja2V0IGJhc2VkIHdlYnNpdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Vic2l0ZURvbWFpbk5hbWVQcm9wcyB7XG5cbiAgcmVhZG9ubHkgcHJlZml4Pzogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IHpvbmU6IHN0cmluZyB8IElIb3N0ZWRab25lO1xuXG4gIHJlYWRvbmx5IHdlaWdodD86IG51bWJlcjtcblxuICByZWFkb25seSBsYXRlbmN5PzogYm9vbGVhbjtcblxuICByZWFkb25seSBjcmVhdGU/OiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgV2Vic2l0ZUJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJzaXRlQnVja2V0UHJvcHMge1xuXG4gIC8qKlxuICAgKiBQb2xpY3kgdG8gYXBwbHkgd2hlbiB0aGUgYnVja2V0IGlzIHJlbW92ZWQgZnJvbSB0aGlzIHN0YWNrLlxuICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYWxsIG9iamVjdHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZGVsZXRlZCB3aGVuIHRoZSBidWNrZXQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFjayBvciB3aGVuIHRoZSBzdGFjayBpcyBkZWxldGVkLlxuICAgKiBSZXF1aXJlcyB0aGUgcmVtb3ZhbFBvbGljeSB0byBiZSBzZXQgdG8gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0RlbGV0ZU9iamVjdHM/OiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU/OiBXZWJzaXRlRG9tYWluTmFtZVByb3BzO1xuXG4gIHJlYWRvbmx5IHdlYnNpdGVJbmRleERvY3VtZW50Pzogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IHdlYnNpdGVFcnJvckRvY3VtZW50Pzogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IHdlYnNpdGVSZWRpcmVjdD86IFJlZGlyZWN0VGFyZ2V0O1xuXG4gIHJlYWRvbmx5IHdlYnNpdGVSb3V0aW5nUnVsZXM/OiBSb3V0aW5nUnVsZVtdO1xufVxuXG4vKipcbiAqIFNpbXBsZSBDb25zdHJ1Y3QgZm9yIGNyZWF0aW5nIGJ1Y2tldHMgdGhhdCB3aWxsIGJlIGFjY2Vzc2VkIGRpcmVjdGx5IGFzIGEgd2Vic2l0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFdlYnNpdGVCdWNrZXQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIHJlYWRvbmx5IGJ1Y2tldDogQnVja2V0O1xuICByZWFkb25seSBidWNrZXROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGJ1Y2tldEFybjogc3RyaW5nO1xuICByZWFkb25seSBidWNrZXRXZWJzaXRlVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGJ1Y2tldFdlYnNpdGVEb21haW5OYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlY29yZDogQVJlY29yZCB8IFdlaWdodGVkQVJlY29yZCB8IExhdGVuY3lBUmVjb3JkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogV2Vic2l0ZUJ1Y2tldFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHJlbW92YWxQb2xpY3kgPSBwcm9wcz8ucmVtb3ZhbFBvbGljeSA/PyBSZW1vdmFsUG9saWN5LlJFVEFJTjtcbiAgICBjb25zdCBhdXRvRGVsZXRlT2JqZWN0cyA9IChwcm9wcz8uYXV0b0RlbGV0ZU9iamVjdHMgPz8gZmFsc2UpICYmIHJlbW92YWxQb2xpY3kgPT09IFJlbW92YWxQb2xpY3kuREVTVFJPWTtcblxuICAgIGNvbnN0IGRvbWFpbk5hbWUgPSBwcm9wcz8uZG9tYWluTmFtZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogbmV3IERvbWFpbk5hbWUoe1xuICAgICAgcHJlZml4OiBwcm9wcy5kb21haW5OYW1lLnByZWZpeCxcbiAgICAgIHpvbmU6IHByb3BzLmRvbWFpbk5hbWUuem9uZVxuICAgIH0pO1xuXG4gICAgdGhpcy5idWNrZXQgPSBuZXcgQnVja2V0KHRoaXMsIFwiRGVmYXVsdFwiLCB7XG4gICAgICBidWNrZXROYW1lOiBkb21haW5OYW1lPy50b1N0cmluZygpLFxuICAgICAgZW5jcnlwdGlvbjogQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgcHVibGljUmVhZEFjY2VzczogdHJ1ZSxcbiAgICAgIHdlYnNpdGVJbmRleERvY3VtZW50OiBwcm9wcz8ud2Vic2l0ZUluZGV4RG9jdW1lbnQgPz8gXCJpbmRleC5odG1sXCIsXG4gICAgICB3ZWJzaXRlRXJyb3JEb2N1bWVudDogcHJvcHM/LndlYnNpdGVFcnJvckRvY3VtZW50ID8/IFwiZXJyb3IuaHRtbFwiLFxuICAgICAgd2Vic2l0ZVJlZGlyZWN0OiBwcm9wcz8ud2Vic2l0ZVJlZGlyZWN0LFxuICAgICAgd2Vic2l0ZVJvdXRpbmdSdWxlczogcHJvcHM/LndlYnNpdGVSb3V0aW5nUnVsZXMsXG4gICAgICByZW1vdmFsUG9saWN5LFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHMsXG4gICAgfSk7XG4gICAgdGhpcy5idWNrZXROYW1lID0gdGhpcy5idWNrZXQuYnVja2V0TmFtZTtcbiAgICB0aGlzLmJ1Y2tldEFybiA9IHRoaXMuYnVja2V0LmJ1Y2tldEFybjtcbiAgICB0aGlzLmJ1Y2tldFdlYnNpdGVVcmwgPSB0aGlzLmJ1Y2tldC5idWNrZXRXZWJzaXRlVXJsO1xuICAgIHRoaXMuYnVja2V0V2Vic2l0ZURvbWFpbk5hbWUgPSB0aGlzLmJ1Y2tldC5idWNrZXRXZWJzaXRlRG9tYWluTmFtZTtcblxuICAgIGlmIChkb21haW5OYW1lICE9PSB1bmRlZmluZWQgJiYgKHByb3BzPy5kb21haW5OYW1lPy5jcmVhdGUgPz8gdHJ1ZSkpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IFJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IEJ1Y2tldFdlYnNpdGVUYXJnZXQodGhpcy5idWNrZXQpKTtcbiAgICAgIC8vIFRPRE8gRXZhbHVhdGVcbiAgICAgIGlmIChwcm9wcz8uZG9tYWluTmFtZT8ubGF0ZW5jeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucmVjb3JkID0gZG9tYWluTmFtZS5jcmVhdGVMYXRlbmN5QVJlY29yZCh0aGlzLCB0YXJnZXQpO1xuICAgICAgfSBlbHNlIGlmIChwcm9wcz8uZG9tYWluTmFtZT8ud2VpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5yZWNvcmQgPSBkb21haW5OYW1lLmNyZWF0ZVdlaWdodGVkQVJlY29yZCh0aGlzLCB0YXJnZXQsIHByb3BzLmRvbWFpbk5hbWUud2VpZ2h0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVjb3JkID0gZG9tYWluTmFtZS5jcmVhdGVBUmVjb3JkKHRoaXMsIHRhcmdldCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZGVwbG95IGxvY2FsIGFzc2V0cyB0byB0aGUgY3JlYXRlZCBidWNrZXQuIFRocyBmdW5jdGlvbiBhc3N1bWVzXG4gICAqIENsb3VkRnJvbnQgaW52YWxpZGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgc2VudCBmb3IgbXV0YWJsZSBmaWxlcyB0byBzZXJ2ZSBuZXcgY29udGVudC5cbiAgICogRm9yIG1vcmUgY29tcGxpY2F0ZWQgZGVwbG95bWVudHMsIHVzZSBCdWNrZXREZXBsb3ltZW50IGRpcmVjdGx5LlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCB0aGUgcGF0aCB0byB0aGUgbG9jYWwgYXNzZXRzXG4gICAqIEBwYXJhbSBtYXhBZ2UgdGhlIGxlbmd0aCBvZiB0aW1lIHRvIGJyb3dzZXJzIHdpbGwgY2FjaGUgZmlsZXM7IGRlZmF1bHQgaXMgRHVyYXRpb24ubWludXRlcygxNSlcbiAgICogQHBhcmFtIHNNYXhBZ2UgdGhlIGxlbmd0aCBvZiB0aW1lIENsb3VkRnJvbnQgd2lsbCBjYWNoZSBmaWxlczsgZGVmYXVsdCBpcyBEdXJhdGlvbi5kYXlzKDcpXG4gICAqIEBwYXJhbSBwcnVuZVxuICAgKi9cbiAgZGVwbG95KHBhdGg6IHN0cmluZywgbWF4QWdlPzogRHVyYXRpb24sIHNNYXhBZ2U/OiBEdXJhdGlvbiwgcHJ1bmU/OiBib29sZWFuKTogQnVja2V0RGVwbG95bWVudCB7XG4gICAgcmV0dXJuIG5ldyBCdWNrZXREZXBsb3ltZW50KHRoaXMsIFwiRGVwbG95XCIsIHtcbiAgICAgIHNvdXJjZXM6IFtTb3VyY2UuYXNzZXQocGF0aCldLFxuICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHRoaXMuYnVja2V0LFxuICAgICAgcHJ1bmU6IHBydW5lID8/IGZhbHNlLFxuICAgICAgbWVtb3J5TGltaXQ6IDUxMixcbiAgICAgIGNhY2hlQ29udHJvbDogW1xuICAgICAgICBDYWNoZUNvbnRyb2wuc2V0UHVibGljKCksXG4gICAgICAgIENhY2hlQ29udHJvbC5tYXhBZ2UobWF4QWdlID8/IER1cmF0aW9uLm1pbnV0ZXMoMTUpKSxcbiAgICAgICAgQ2FjaGVDb250cm9sLnNNYXhBZ2Uoc01heEFnZSA/PyBEdXJhdGlvbi5kYXlzKDcpKVxuICAgICAgXVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgZm9yIHRoaXMgYnVja2V0IGFuZCBpdCdzIGNvbnRlbnRzIHRvIGFuIElBTVxuICAgKiBwcmluY2lwYWwgKFJvbGUvR3JvdXAvVXNlcikuXG4gICAqXG4gICAqIElmIGVuY3J5cHRpb24gaXMgdXNlZCwgcGVybWlzc2lvbiB0byB1c2UgdGhlIGtleSB0byBkZWNyeXB0IHRoZSBjb250ZW50c1xuICAgKiBvZiB0aGUgYnVja2V0IHdpbGwgYWxzbyBiZSBncmFudGVkIHRvIHRoZSBzYW1lIHByaW5jaXBhbC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIG9iamVjdHNLZXlQYXR0ZXJuIFJlc3RyaWN0IHRoZSBwZXJtaXNzaW9uIHRvIGEgY2VydGFpbiBrZXkgcGF0dGVybiAoZGVmYXVsdCAnKicpXG4gICAqL1xuICBncmFudFJlYWQoaWRlbnRpdHk6IElHcmFudGFibGUsIG9iamVjdHNLZXlQYXR0ZXJuPzogYW55KTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmJ1Y2tldC5ncmFudFJlYWQoaWRlbnRpdHksIG9iamVjdHNLZXlQYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCB3cml0ZSBwZXJtaXNzaW9ucyB0byB0aGlzIGJ1Y2tldCB0byBhbiBJQU0gcHJpbmNpcGFsLlxuICAgKlxuICAgKiBJZiBlbmNyeXB0aW9uIGlzIHVzZWQsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBrZXkgdG8gZW5jcnlwdCB0aGUgY29udGVudHNcbiAgICogb2Ygd3JpdHRlbiBmaWxlcyB3aWxsIGFsc28gYmUgZ3JhbnRlZCB0byB0aGUgc2FtZSBwcmluY2lwYWwuXG4gICAqXG4gICAqIEJlZm9yZSBDREsgdmVyc2lvbiAxLjg1LjAsIHRoaXMgbWV0aG9kIGdyYW50ZWQgdGhlIGBzMzpQdXRPYmplY3QqYCBwZXJtaXNzaW9uIHRoYXQgaW5jbHVkZWQgYHMzOlB1dE9iamVjdEFjbGAsXG4gICAqIHdoaWNoIGNvdWxkIGJlIHVzZWQgdG8gZ3JhbnQgcmVhZC93cml0ZSBvYmplY3QgYWNjZXNzIHRvIElBTSBwcmluY2lwYWxzIGluIG90aGVyIGFjY291bnRzLlxuICAgKiBJZiB5b3Ugd2FudCB0byBnZXQgcmlkIG9mIHRoYXQgYmVoYXZpb3IsIHVwZGF0ZSB5b3VyIENESyB2ZXJzaW9uIHRvIDEuODUuMCBvciBsYXRlcixcbiAgICogYW5kIG1ha2Ugc3VyZSB0aGUgYEBhd3MtY2RrL2F3cy1zMzpncmFudFdyaXRlV2l0aG91dEFjbGAgZmVhdHVyZSBmbGFnIGlzIHNldCB0byBgdHJ1ZWBcbiAgICogaW4gdGhlIGBjb250ZXh0YCBrZXkgb2YgeW91ciBjZGsuanNvbiBmaWxlLlxuICAgKiBJZiB5b3UndmUgYWxyZWFkeSB1cGRhdGVkLCBidXQgc3RpbGwgbmVlZCB0aGUgcHJpbmNpcGFsIHRvIGhhdmUgcGVybWlzc2lvbnMgdG8gbW9kaWZ5IHRoZSBBQ0xzLFxuICAgKiB1c2UgdGhlIGBncmFudFB1dEFjbGAgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gb2JqZWN0c0tleVBhdHRlcm4gUmVzdHJpY3QgdGhlIHBlcm1pc3Npb24gdG8gYSBjZXJ0YWluIGtleSBwYXR0ZXJuIChkZWZhdWx0ICcqJylcbiAgICogQHBhcmFtIGFsbG93ZWRBY3Rpb25QYXR0ZXJucyBSZXN0cmljdCB0aGUgcGVybWlzc2lvbnMgdG8gY2VydGFpbiBsaXN0IG9mIGFjdGlvbiBwYXR0ZXJuc1xuICAgKi9cbiAgZ3JhbnRXcml0ZShpZGVudGl0eTogSUdyYW50YWJsZSwgb2JqZWN0c0tleVBhdHRlcm4/OiBhbnksIGFsbG93ZWRBY3Rpb25QYXR0ZXJucz86IHN0cmluZ1tdKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmJ1Y2tldC5ncmFudFdyaXRlKGlkZW50aXR5LCBvYmplY3RzS2V5UGF0dGVybiwgYWxsb3dlZEFjdGlvblBhdHRlcm5zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgczM6UHV0T2JqZWN0KiBhbmQgczM6QWJvcnQqIHBlcm1pc3Npb25zIGZvciB0aGlzIGJ1Y2tldCB0byBhbiBJQU0gcHJpbmNpcGFsLlxuICAgKlxuICAgKiBJZiBlbmNyeXB0aW9uIGlzIHVzZWQsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBrZXkgdG8gZW5jcnlwdCB0aGUgY29udGVudHNcbiAgICogb2Ygd3JpdHRlbiBmaWxlcyB3aWxsIGFsc28gYmUgZ3JhbnRlZCB0byB0aGUgc2FtZSBwcmluY2lwYWwuXG4gICAqIEBwYXJhbSBpZGVudGl0eSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBvYmplY3RzS2V5UGF0dGVybiBSZXN0cmljdCB0aGUgcGVybWlzc2lvbiB0byBhIGNlcnRhaW4ga2V5IHBhdHRlcm4gKGRlZmF1bHQgJyonKVxuICAgKi9cbiAgZ3JhbnRQdXQoaWRlbnRpdHk6IElHcmFudGFibGUsIG9iamVjdHNLZXlQYXR0ZXJuPzogYW55KTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmJ1Y2tldC5ncmFudFB1dChpZGVudGl0eSwgb2JqZWN0c0tleVBhdHRlcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBJQU0gaWRlbnRpdHkgcGVybWlzc2lvbnMgdG8gbW9kaWZ5IHRoZSBBQ0xzIG9mIG9iamVjdHMgaW4gdGhlIGdpdmVuIEJ1Y2tldC5cbiAgICpcbiAgICogSWYgeW91ciBhcHBsaWNhdGlvbiBoYXMgdGhlICdAYXdzLWNkay9hd3MtczM6Z3JhbnRXcml0ZVdpdGhvdXRBY2wnIGZlYXR1cmUgZmxhZyBzZXQsXG4gICAqIGNhbGxpbmcgYGdyYW50V3JpdGVgIG9yIGBncmFudFJlYWRXcml0ZWAgbm8gbG9uZ2VyIGdyYW50cyBwZXJtaXNzaW9ucyB0byBtb2RpZnkgdGhlIEFDTHMgb2YgdGhlIG9iamVjdHM7XG4gICAqIGluIHRoaXMgY2FzZSwgaWYgeW91IG5lZWQgdG8gbW9kaWZ5IG9iamVjdCBBQ0xzLCBjYWxsIHRoaXMgbWV0aG9kIGV4cGxpY2l0bHkuXG4gICAqXG4gICAqIEBwYXJhbSBpZGVudGl0eSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBvYmplY3RzS2V5UGF0dGVybiBSZXN0cmljdCB0aGUgcGVybWlzc2lvbiB0byBhIGNlcnRhaW4ga2V5IHBhdHRlcm4gKGRlZmF1bHQgJyonKVxuICAgKi9cbiAgZ3JhbnRQdXRBY2woaWRlbnRpdHk6IElHcmFudGFibGUsIG9iamVjdHNLZXlQYXR0ZXJuPzogc3RyaW5nKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmJ1Y2tldC5ncmFudFB1dEFjbChpZGVudGl0eSwgb2JqZWN0c0tleVBhdHRlcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBzMzpEZWxldGVPYmplY3QqIHBlcm1pc3Npb24gdG8gYW4gSUFNIHByaW5jaXBhbCBmb3Igb2JqZWN0c1xuICAgKiBpbiB0aGlzIGJ1Y2tldC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIG9iamVjdHNLZXlQYXR0ZXJuIFJlc3RyaWN0IHRoZSBwZXJtaXNzaW9uIHRvIGEgY2VydGFpbiBrZXkgcGF0dGVybiAoZGVmYXVsdCAnKicpXG4gICAqL1xuICBncmFudERlbGV0ZShpZGVudGl0eTogSUdyYW50YWJsZSwgb2JqZWN0c0tleVBhdHRlcm4/OiBhbnkpOiBHcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuYnVja2V0LmdyYW50RGVsZXRlKGlkZW50aXR5LCBvYmplY3RzS2V5UGF0dGVybik7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoaXMgYnVja2V0IGFuZCBpdCdzIGNvbnRlbnRzIHRvIGFuIElBTVxuICAgKiBwcmluY2lwYWwgKFJvbGUvR3JvdXAvVXNlcikuXG4gICAqXG4gICAqIElmIGFuIGVuY3J5cHRpb24ga2V5IGlzIHVzZWQsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBrZXkgZm9yXG4gICAqIGVuY3J5cHQvZGVjcnlwdCB3aWxsIGFsc28gYmUgZ3JhbnRlZC5cbiAgICpcbiAgICogQmVmb3JlIENESyB2ZXJzaW9uIDEuODUuMCwgdGhpcyBtZXRob2QgZ3JhbnRlZCB0aGUgYHMzOlB1dE9iamVjdCpgIHBlcm1pc3Npb24gdGhhdCBpbmNsdWRlZCBgczM6UHV0T2JqZWN0QWNsYCxcbiAgICogd2hpY2ggY291bGQgYmUgdXNlZCB0byBncmFudCByZWFkL3dyaXRlIG9iamVjdCBhY2Nlc3MgdG8gSUFNIHByaW5jaXBhbHMgaW4gb3RoZXIgYWNjb3VudHMuXG4gICAqIElmIHlvdSB3YW50IHRvIGdldCByaWQgb2YgdGhhdCBiZWhhdmlvciwgdXBkYXRlIHlvdXIgQ0RLIHZlcnNpb24gdG8gMS44NS4wIG9yIGxhdGVyLFxuICAgKiBhbmQgbWFrZSBzdXJlIHRoZSBgQGF3cy1jZGsvYXdzLXMzOmdyYW50V3JpdGVXaXRob3V0QWNsYCBmZWF0dXJlIGZsYWcgaXMgc2V0IHRvIGB0cnVlYFxuICAgKiBpbiB0aGUgYGNvbnRleHRgIGtleSBvZiB5b3VyIGNkay5qc29uIGZpbGUuXG4gICAqIElmIHlvdSd2ZSBhbHJlYWR5IHVwZGF0ZWQsIGJ1dCBzdGlsbCBuZWVkIHRoZSBwcmluY2lwYWwgdG8gaGF2ZSBwZXJtaXNzaW9ucyB0byBtb2RpZnkgdGhlIEFDTHMsXG4gICAqIHVzZSB0aGUgYGdyYW50UHV0QWNsYCBtZXRob2QuXG4gICAqXG4gICAqIEBwYXJhbSBpZGVudGl0eSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBvYmplY3RzS2V5UGF0dGVybiBSZXN0cmljdCB0aGUgcGVybWlzc2lvbiB0byBhIGNlcnRhaW4ga2V5IHBhdHRlcm4gKGRlZmF1bHQgJyonKVxuICAgKi9cbiAgZ3JhbnRSZWFkV3JpdGUoaWRlbnRpdHk6IElHcmFudGFibGUsIG9iamVjdHNLZXlQYXR0ZXJuPzogYW55KTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmJ1Y2tldC5ncmFudFJlYWRXcml0ZShpZGVudGl0eSwgb2JqZWN0c0tleVBhdHRlcm4pO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "truemark-cdk-lib",
3
- "version": "1.6.4",
3
+ "version": "1.6.6",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "scripts": {
@@ -72,5 +72,5 @@
72
72
  "publishConfig": {
73
73
  "access": "public"
74
74
  },
75
- "gitHead": "79866c786882fea797cbc43ce1d21a90e1a78c16"
75
+ "gitHead": "cfd8ebcfcea1904a6b70a7b5590c9991e5a8ad24"
76
76
  }