@liflig/cdk 2.21.2 → 2.21.4

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.
Files changed (46) hide show
  1. package/README.md +18 -2
  2. package/lib/cdk-pipelines/cloud-assembly-lookup-handler.d.ts +1 -1
  3. package/lib/cdk-pipelines/cloud-assembly-lookup-handler.js +46 -35
  4. package/lib/cdk-pipelines/liflig-cdk-pipeline.js +6 -6
  5. package/lib/index.d.ts +1 -4
  6. package/lib/index.js +2 -6
  7. package/lib/ses/configurationsetsnsdestination/handler.d.ts +1 -1
  8. package/lib/ses/configurationsetsnsdestination/handler.js +15 -25
  9. package/lib/ses/configurationsetsnsdestination/index.js +7 -7
  10. package/lib/ses/sesdomain/handler.d.ts +1 -1
  11. package/lib/ses/sesdomain/handler.js +31 -31
  12. package/lib/ses/sesdomain/index.js +6 -6
  13. package/lib/ses/sesverifyemail/handler.d.ts +1 -1
  14. package/lib/ses/sesverifyemail/handler.js +12 -10
  15. package/lib/ses/sesverifyemail/index.js +6 -6
  16. package/package.json +14 -3
  17. package/lib/cdk-deploy/cdk-deploy.d.ts +0 -63
  18. package/lib/cdk-deploy/cdk-deploy.js +0 -175
  19. package/lib/cdk-deploy/index.d.ts +0 -1
  20. package/lib/cdk-deploy/index.js +0 -6
  21. package/lib/cdk-deploy/start-deploy-handler.d.ts +0 -8
  22. package/lib/cdk-deploy/start-deploy-handler.js +0 -72
  23. package/lib/cdk-deploy/status-handler.d.ts +0 -6
  24. package/lib/cdk-deploy/status-handler.js +0 -83
  25. package/lib/ecs-update-image/artifact-status.d.ts +0 -39
  26. package/lib/ecs-update-image/artifact-status.js +0 -41
  27. package/lib/ecs-update-image/ecs-update-image.d.ts +0 -41
  28. package/lib/ecs-update-image/ecs-update-image.js +0 -98
  29. package/lib/ecs-update-image/index.d.ts +0 -3
  30. package/lib/ecs-update-image/index.js +0 -10
  31. package/lib/ecs-update-image/start-deploy-handler.d.ts +0 -6
  32. package/lib/ecs-update-image/start-deploy-handler.js +0 -104
  33. package/lib/ecs-update-image/status-handler.d.ts +0 -11
  34. package/lib/ecs-update-image/status-handler.js +0 -74
  35. package/lib/ecs-update-image/tag.d.ts +0 -47
  36. package/lib/ecs-update-image/tag.js +0 -67
  37. package/lib/pipelines/conventions.d.ts +0 -14
  38. package/lib/pipelines/conventions.js +0 -24
  39. package/lib/pipelines/deploy-env.d.ts +0 -18
  40. package/lib/pipelines/deploy-env.js +0 -96
  41. package/lib/pipelines/index.d.ts +0 -2
  42. package/lib/pipelines/index.js +0 -8
  43. package/lib/pipelines/liflig-cdk-deployer-deps.d.ts +0 -13
  44. package/lib/pipelines/liflig-cdk-deployer-deps.js +0 -35
  45. package/lib/pipelines/pipeline.d.ts +0 -78
  46. package/lib/pipelines/pipeline.js +0 -224
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sesDomainHandler = void 0;
4
- // This function is inline-compiled for the lambda.
5
- // It must be self-contained.
6
- const sesDomainHandler = async (event) => {
7
- const AWS = require("aws-sdk");
3
+ exports.handler = void 0;
4
+ const client_ses_1 = require("@aws-sdk/client-ses");
5
+ const client_sesv2_1 = require("@aws-sdk/client-sesv2");
6
+ const handler = async (event) => {
7
+ var _a;
8
+ const sesClient = new client_ses_1.SESClient();
9
+ const sesv2Client = new client_sesv2_1.SESv2Client();
8
10
  const ttl = "1800";
9
- const ses = new AWS.SES();
10
- const sesv2 = new AWS.SESV2();
11
11
  const domainName = event.ResourceProperties["DomainName"];
12
12
  const includeVerificationRecord = event.ResourceProperties["IncludeVerificationRecord"] == "true";
13
13
  const defaultConfigurationSetName = event.ResourceProperties["DefaultConfigurationSetName"];
@@ -36,39 +36,39 @@ const sesDomainHandler = async (event) => {
36
36
  }
37
37
  switch (event.RequestType) {
38
38
  case "Delete":
39
- const response = await ses
40
- .deleteIdentity({ Identity: domainName })
41
- .promise();
42
- console.log(`ses.deleteIdentity: ${JSON.stringify(response)}`);
39
+ const deleteIdentityResp = await sesClient.send(new client_ses_1.DeleteIdentityCommand({
40
+ Identity: domainName,
41
+ }));
42
+ console.log(`ses.deleteIdentity: ${JSON.stringify(deleteIdentityResp)}`);
43
43
  return {
44
44
  PhysicalResourceId: event.PhysicalResourceId,
45
45
  };
46
46
  case "Create":
47
47
  case "Update":
48
48
  // Idempotent.
49
- const response1 = await ses
50
- .verifyDomainIdentity({
49
+ const verifyDomainIdentityResp = await sesClient.send(new client_ses_1.VerifyDomainIdentityCommand({
51
50
  Domain: domainName,
52
- })
53
- .promise();
54
- console.log(`ses.verifyDomainIdentity: ${JSON.stringify(response1)}`);
55
- const verificationToken = response1["VerificationToken"];
51
+ }));
52
+ console.log(`ses.verifyDomainIdentity: ${JSON.stringify(verifyDomainIdentityResp)}`);
53
+ const verificationToken = verifyDomainIdentityResp.VerificationToken;
54
+ if (!verificationToken) {
55
+ throw new Error("Verification token not returned");
56
+ }
56
57
  // Idempotent.
57
- const response2 = await ses
58
- .verifyDomainDkim({ Domain: domainName })
59
- .promise();
60
- console.log(`ses.verifyDomainDkim: ${JSON.stringify(response2)}`);
61
- const dkimTokens = response2["DkimTokens"];
58
+ const verifyDomainDkimResp = await sesClient.send(new client_ses_1.VerifyDomainDkimCommand({
59
+ Domain: domainName,
60
+ }));
61
+ console.log(`ses.verifyDomainDkim: ${JSON.stringify(verifyDomainDkimResp)}`);
62
+ const dkimTokens = (_a = verifyDomainDkimResp.DkimTokens) !== null && _a !== void 0 ? _a : [];
63
+ if (!dkimTokens) {
64
+ throw new Error("DKIM tokens not returned");
65
+ }
62
66
  // Idempotent.
63
- const response3 = await sesv2
64
- .putEmailIdentityConfigurationSetAttributes({
67
+ const putEmailIdentityConfigResp = await sesv2Client.send(new client_sesv2_1.PutEmailIdentityConfigurationSetAttributesCommand({
65
68
  EmailIdentity: domainName,
66
- // ConfigurationSetName can be set to undefined to remove
67
- // the default configuration set from the identity.
68
69
  ConfigurationSetName: defaultConfigurationSetName,
69
- })
70
- .promise();
71
- console.log(`sesv2.putEmailIdentityConfigurationSetAttributes ${JSON.stringify(response3)}`);
70
+ }));
71
+ console.log(`sesv2.putEmailIdentityConfigurationSetAttributes ${JSON.stringify(putEmailIdentityConfigResp)}`);
72
72
  return {
73
73
  PhysicalResourceId: `SesDomain${domainName}`,
74
74
  Data: {
@@ -78,5 +78,5 @@ const sesDomainHandler = async (event) => {
78
78
  };
79
79
  }
80
80
  };
81
- exports.sesDomainHandler = sesDomainHandler;
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXMvc2VzZG9tYWluL2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBd0JBLG1EQUFtRDtBQUNuRCw2QkFBNkI7QUFDdEIsTUFBTSxnQkFBZ0IsR0FBbUIsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO0lBQzlELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUU5QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUE7SUFFbEIsTUFBTSxHQUFHLEdBQVksSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFjLENBQUE7SUFDOUMsTUFBTSxLQUFLLEdBQWMsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFnQixDQUFBO0lBRXRELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUN6RCxNQUFNLHlCQUF5QixHQUM3QixLQUFLLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsSUFBSSxNQUFNLENBQUE7SUFFakUsTUFBTSwyQkFBMkIsR0FDL0IsS0FBSyxDQUFDLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDLENBQUE7SUFFekQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRCxTQUFTLHVCQUF1QixDQUM5QixpQkFBeUIsRUFDekIsVUFBb0I7UUFFcEIsTUFBTSxPQUFPLEdBQXdCLEVBQUUsQ0FBQTtRQUV2QyxJQUFJLHlCQUF5QixFQUFFLENBQUM7WUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDWCxJQUFJLEVBQUUsY0FBYyxVQUFVLEdBQUc7Z0JBQ2pDLElBQUksRUFBRSxLQUFLO2dCQUNYLGVBQWUsRUFBRSxDQUFDLElBQUksaUJBQWlCLEdBQUcsQ0FBQztnQkFDM0MsR0FBRyxFQUFFLEdBQUc7YUFDVCxDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLElBQUksRUFBRSxHQUFHLEtBQUssZUFBZSxVQUFVLEdBQUc7Z0JBQzFDLElBQUksRUFBRSxPQUFPO2dCQUNiLGVBQWUsRUFBRSxDQUFDLEdBQUcsS0FBSyxzQkFBc0IsQ0FBQztnQkFDakQsR0FBRyxFQUFFLEdBQUc7YUFDVCxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELFFBQVEsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLEtBQUssUUFBUTtZQUNYLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRztpQkFDdkIsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDO2lCQUN4QyxPQUFPLEVBQUUsQ0FBQTtZQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBRTlELE9BQU87Z0JBQ0wsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjthQUM3QyxDQUFBO1FBRUgsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLFFBQVE7WUFDWCxjQUFjO1lBQ2QsTUFBTSxTQUFTLEdBQUcsTUFBTSxHQUFHO2lCQUN4QixvQkFBb0IsQ0FBQztnQkFDcEIsTUFBTSxFQUFFLFVBQVU7YUFDbkIsQ0FBQztpQkFDRCxPQUFPLEVBQUUsQ0FBQTtZQUVaLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ3JFLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUE7WUFFeEQsY0FBYztZQUNkLE1BQU0sU0FBUyxHQUFHLE1BQU0sR0FBRztpQkFDeEIsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUM7aUJBQ3hDLE9BQU8sRUFBRSxDQUFBO1lBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDakUsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBRTFDLGNBQWM7WUFDZCxNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUs7aUJBQzFCLDBDQUEwQyxDQUFDO2dCQUMxQyxhQUFhLEVBQUUsVUFBVTtnQkFDekIseURBQXlEO2dCQUN6RCxtREFBbUQ7Z0JBQ25ELG9CQUFvQixFQUFFLDJCQUEyQjthQUNsRCxDQUFDO2lCQUNELE9BQU8sRUFBRSxDQUFBO1lBQ1osT0FBTyxDQUFDLEdBQUcsQ0FDVCxvREFBb0QsSUFBSSxDQUFDLFNBQVMsQ0FDaEUsU0FBUyxDQUNWLEVBQUUsQ0FDSixDQUFBO1lBRUQsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxZQUFZLFVBQVUsRUFBRTtnQkFDNUMsSUFBSSxFQUFFO29CQUNKLGlCQUFpQixFQUFFLHVCQUF1QixDQUN4QyxpQkFBaUIsRUFDakIsVUFBVSxDQUNYO29CQUNELGlCQUFpQixFQUFFLGlCQUFpQjtpQkFDckM7YUFDRixDQUFBO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQTtBQXJHWSxRQUFBLGdCQUFnQixvQkFxRzVCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGwgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyAqL1xuaW1wb3J0IHR5cGUgKiBhcyBfQVdTIGZyb20gXCJhd3Mtc2RrXCJcblxudHlwZSBPbkV2ZW50SGFuZGxlciA9IChldmVudDoge1xuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmdcbiAgUmVxdWVzdFR5cGU6IFwiQ3JlYXRlXCIgfCBcIlVwZGF0ZVwiIHwgXCJEZWxldGVcIlxuICBSZXNvdXJjZVByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbn0pID0+IFByb21pc2U8e1xuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmdcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT5cbn0+XG5cbi8vIFR5cGUgdG8gbWFjaCBDbG91ZEZvcm1hdGlvbiBBV1M6OlJvdXRlNTM6OlJlY29yZFNldEdyb3VwIFJlY29yZFNldFxuaW50ZXJmYWNlIFJlY29yZFNldFByb3BlcnR5IHtcbiAgTmFtZTogc3RyaW5nXG4gIFR5cGU6IHN0cmluZ1xuICBSZXNvdXJjZVJlY29yZHM6IHN0cmluZ1tdXG4gIFRUTDogc3RyaW5nXG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgaW5saW5lLWNvbXBpbGVkIGZvciB0aGUgbGFtYmRhLlxuLy8gSXQgbXVzdCBiZSBzZWxmLWNvbnRhaW5lZC5cbmV4cG9ydCBjb25zdCBzZXNEb21haW5IYW5kbGVyOiBPbkV2ZW50SGFuZGxlciA9IGFzeW5jIChldmVudCkgPT4ge1xuICBjb25zdCBBV1MgPSByZXF1aXJlKFwiYXdzLXNka1wiKVxuXG4gIGNvbnN0IHR0bCA9IFwiMTgwMFwiXG5cbiAgY29uc3Qgc2VzOiBBV1MuU0VTID0gbmV3IEFXUy5TRVMoKSBhcyBfQVdTLlNFU1xuICBjb25zdCBzZXN2MjogQVdTLlNFU1YyID0gbmV3IEFXUy5TRVNWMigpIGFzIF9BV1MuU0VTVjJcblxuICBjb25zdCBkb21haW5OYW1lID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzW1wiRG9tYWluTmFtZVwiXVxuICBjb25zdCBpbmNsdWRlVmVyaWZpY2F0aW9uUmVjb3JkID1cbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXNbXCJJbmNsdWRlVmVyaWZpY2F0aW9uUmVjb3JkXCJdID09IFwidHJ1ZVwiXG5cbiAgY29uc3QgZGVmYXVsdENvbmZpZ3VyYXRpb25TZXROYW1lID1cbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXNbXCJEZWZhdWx0Q29uZmlndXJhdGlvblNldE5hbWVcIl1cblxuICBpZiAoIWluY2x1ZGVWZXJpZmljYXRpb25SZWNvcmQpIHtcbiAgICBjb25zb2xlLmxvZyhcIkV4Y2x1ZGluZyB2ZXJpZmljYXRpb24gVFhUIHJlY29yZFwiKVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUm91dGU1M1JlY29yZFNldHMoXG4gICAgdmVyaWZpY2F0aW9uVG9rZW46IHN0cmluZyxcbiAgICBka2ltVG9rZW5zOiBzdHJpbmdbXSxcbiAgKSB7XG4gICAgY29uc3QgcmVjb3JkczogUmVjb3JkU2V0UHJvcGVydHlbXSA9IFtdXG5cbiAgICBpZiAoaW5jbHVkZVZlcmlmaWNhdGlvblJlY29yZCkge1xuICAgICAgcmVjb3Jkcy5wdXNoKHtcbiAgICAgICAgTmFtZTogYF9hbWF6b25zZXMuJHtkb21haW5OYW1lfS5gLFxuICAgICAgICBUeXBlOiBcIlRYVFwiLFxuICAgICAgICBSZXNvdXJjZVJlY29yZHM6IFtgXCIke3ZlcmlmaWNhdGlvblRva2VufVwiYF0sXG4gICAgICAgIFRUTDogdHRsLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIGRraW1Ub2tlbnMpIHtcbiAgICAgIHJlY29yZHMucHVzaCh7XG4gICAgICAgIE5hbWU6IGAke3Rva2VufS5fZG9tYWlua2V5LiR7ZG9tYWluTmFtZX0uYCxcbiAgICAgICAgVHlwZTogXCJDTkFNRVwiLFxuICAgICAgICBSZXNvdXJjZVJlY29yZHM6IFtgJHt0b2tlbn0uZGtpbS5hbWF6b25zZXMuY29tLmBdLFxuICAgICAgICBUVEw6IHR0bCxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiByZWNvcmRzXG4gIH1cblxuICBzd2l0Y2ggKGV2ZW50LlJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSBcIkRlbGV0ZVwiOlxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZXNcbiAgICAgICAgLmRlbGV0ZUlkZW50aXR5KHsgSWRlbnRpdHk6IGRvbWFpbk5hbWUgfSlcbiAgICAgICAgLnByb21pc2UoKVxuICAgICAgY29uc29sZS5sb2coYHNlcy5kZWxldGVJZGVudGl0eTogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZSl9YClcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgUGh5c2ljYWxSZXNvdXJjZUlkOiBldmVudC5QaHlzaWNhbFJlc291cmNlSWQsXG4gICAgICB9XG5cbiAgICBjYXNlIFwiQ3JlYXRlXCI6XG4gICAgY2FzZSBcIlVwZGF0ZVwiOlxuICAgICAgLy8gSWRlbXBvdGVudC5cbiAgICAgIGNvbnN0IHJlc3BvbnNlMSA9IGF3YWl0IHNlc1xuICAgICAgICAudmVyaWZ5RG9tYWluSWRlbnRpdHkoe1xuICAgICAgICAgIERvbWFpbjogZG9tYWluTmFtZSxcbiAgICAgICAgfSlcbiAgICAgICAgLnByb21pc2UoKVxuXG4gICAgICBjb25zb2xlLmxvZyhgc2VzLnZlcmlmeURvbWFpbklkZW50aXR5OiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlMSl9YClcbiAgICAgIGNvbnN0IHZlcmlmaWNhdGlvblRva2VuID0gcmVzcG9uc2UxW1wiVmVyaWZpY2F0aW9uVG9rZW5cIl1cblxuICAgICAgLy8gSWRlbXBvdGVudC5cbiAgICAgIGNvbnN0IHJlc3BvbnNlMiA9IGF3YWl0IHNlc1xuICAgICAgICAudmVyaWZ5RG9tYWluRGtpbSh7IERvbWFpbjogZG9tYWluTmFtZSB9KVxuICAgICAgICAucHJvbWlzZSgpXG4gICAgICBjb25zb2xlLmxvZyhgc2VzLnZlcmlmeURvbWFpbkRraW06ICR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UyKX1gKVxuICAgICAgY29uc3QgZGtpbVRva2VucyA9IHJlc3BvbnNlMltcIkRraW1Ub2tlbnNcIl1cblxuICAgICAgLy8gSWRlbXBvdGVudC5cbiAgICAgIGNvbnN0IHJlc3BvbnNlMyA9IGF3YWl0IHNlc3YyXG4gICAgICAgIC5wdXRFbWFpbElkZW50aXR5Q29uZmlndXJhdGlvblNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgIEVtYWlsSWRlbnRpdHk6IGRvbWFpbk5hbWUsXG4gICAgICAgICAgLy8gQ29uZmlndXJhdGlvblNldE5hbWUgY2FuIGJlIHNldCB0byB1bmRlZmluZWQgdG8gcmVtb3ZlXG4gICAgICAgICAgLy8gdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBzZXQgZnJvbSB0aGUgaWRlbnRpdHkuXG4gICAgICAgICAgQ29uZmlndXJhdGlvblNldE5hbWU6IGRlZmF1bHRDb25maWd1cmF0aW9uU2V0TmFtZSxcbiAgICAgICAgfSlcbiAgICAgICAgLnByb21pc2UoKVxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBzZXN2Mi5wdXRFbWFpbElkZW50aXR5Q29uZmlndXJhdGlvblNldEF0dHJpYnV0ZXMgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICByZXNwb25zZTMsXG4gICAgICAgICl9YCxcbiAgICAgIClcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgUGh5c2ljYWxSZXNvdXJjZUlkOiBgU2VzRG9tYWluJHtkb21haW5OYW1lfWAsXG4gICAgICAgIERhdGE6IHtcbiAgICAgICAgICBSb3V0ZTUzUmVjb3JkU2V0czogY3JlYXRlUm91dGU1M1JlY29yZFNldHMoXG4gICAgICAgICAgICB2ZXJpZmljYXRpb25Ub2tlbixcbiAgICAgICAgICAgIGRraW1Ub2tlbnMsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBWZXJpZmljYXRpb25Ub2tlbjogdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgICAgIH0sXG4gICAgICB9XG4gIH1cbn1cbiJdfQ==
81
+ exports.handler = handler;
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXMvc2VzZG9tYWluL2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBSzRCO0FBRTVCLHdEQUc4QjtBQW9CdkIsTUFBTSxPQUFPLEdBQW1CLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTs7SUFDckQsTUFBTSxTQUFTLEdBQUcsSUFBSSxzQkFBUyxFQUFFLENBQUE7SUFDakMsTUFBTSxXQUFXLEdBQUcsSUFBSSwwQkFBVyxFQUFFLENBQUE7SUFFckMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFBO0lBRWxCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUN6RCxNQUFNLHlCQUF5QixHQUM3QixLQUFLLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsSUFBSSxNQUFNLENBQUE7SUFFakUsTUFBTSwyQkFBMkIsR0FDL0IsS0FBSyxDQUFDLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDLENBQUE7SUFFekQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRCxTQUFTLHVCQUF1QixDQUM5QixpQkFBeUIsRUFDekIsVUFBb0I7UUFFcEIsTUFBTSxPQUFPLEdBQXdCLEVBQUUsQ0FBQTtRQUV2QyxJQUFJLHlCQUF5QixFQUFFLENBQUM7WUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDWCxJQUFJLEVBQUUsY0FBYyxVQUFVLEdBQUc7Z0JBQ2pDLElBQUksRUFBRSxLQUFLO2dCQUNYLGVBQWUsRUFBRSxDQUFDLElBQUksaUJBQWlCLEdBQUcsQ0FBQztnQkFDM0MsR0FBRyxFQUFFLEdBQUc7YUFDVCxDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLElBQUksRUFBRSxHQUFHLEtBQUssZUFBZSxVQUFVLEdBQUc7Z0JBQzFDLElBQUksRUFBRSxPQUFPO2dCQUNiLGVBQWUsRUFBRSxDQUFDLEdBQUcsS0FBSyxzQkFBc0IsQ0FBQztnQkFDakQsR0FBRyxFQUFFLEdBQUc7YUFDVCxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELFFBQVEsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLEtBQUssUUFBUTtZQUNYLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUM3QyxJQUFJLGtDQUFxQixDQUFDO2dCQUN4QixRQUFRLEVBQUUsVUFBVTthQUNyQixDQUFDLENBQ0gsQ0FBQTtZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFeEUsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO2FBQzdDLENBQUE7UUFFSCxLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssUUFBUTtZQUNYLGNBQWM7WUFDZCxNQUFNLHdCQUF3QixHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDbkQsSUFBSSx3Q0FBMkIsQ0FBQztnQkFDOUIsTUFBTSxFQUFFLFVBQVU7YUFDbkIsQ0FBQyxDQUNILENBQUE7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUNULDZCQUE2QixJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FDeEUsQ0FBQTtZQUNELE1BQU0saUJBQWlCLEdBQUcsd0JBQXdCLENBQUMsaUJBQWlCLENBQUE7WUFDcEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtZQUNwRCxDQUFDO1lBRUQsY0FBYztZQUNkLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUMvQyxJQUFJLG9DQUF1QixDQUFDO2dCQUMxQixNQUFNLEVBQUUsVUFBVTthQUNuQixDQUFDLENBQ0gsQ0FBQTtZQUNELE9BQU8sQ0FBQyxHQUFHLENBQ1QseUJBQXlCLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUNoRSxDQUFBO1lBQ0QsTUFBTSxVQUFVLEdBQUcsTUFBQSxvQkFBb0IsQ0FBQyxVQUFVLG1DQUFJLEVBQUUsQ0FBQTtZQUN4RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtZQUM3QyxDQUFDO1lBRUQsY0FBYztZQUNkLE1BQU0sMEJBQTBCLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUN2RCxJQUFJLGdFQUFpRCxDQUFDO2dCQUNwRCxhQUFhLEVBQUUsVUFBVTtnQkFDekIsb0JBQW9CLEVBQUUsMkJBQTJCO2FBQ2xELENBQUMsQ0FDSCxDQUFBO1lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FDVCxvREFBb0QsSUFBSSxDQUFDLFNBQVMsQ0FDaEUsMEJBQTBCLENBQzNCLEVBQUUsQ0FDSixDQUFBO1lBRUQsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxZQUFZLFVBQVUsRUFBRTtnQkFDNUMsSUFBSSxFQUFFO29CQUNKLGlCQUFpQixFQUFFLHVCQUF1QixDQUN4QyxpQkFBaUIsRUFDakIsVUFBVSxDQUNYO29CQUNELGlCQUFpQixFQUFFLGlCQUFpQjtpQkFDckM7YUFDRixDQUFBO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQTtBQTlHWSxRQUFBLE9BQU8sV0E4R25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU0VTQ2xpZW50LFxuICBWZXJpZnlEb21haW5JZGVudGl0eUNvbW1hbmQsXG4gIFZlcmlmeURvbWFpbkRraW1Db21tYW5kLFxuICBEZWxldGVJZGVudGl0eUNvbW1hbmQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzXCJcblxuaW1wb3J0IHtcbiAgU0VTdjJDbGllbnQsXG4gIFB1dEVtYWlsSWRlbnRpdHlDb25maWd1cmF0aW9uU2V0QXR0cmlidXRlc0NvbW1hbmQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzdjJcIlxuXG50eXBlIE9uRXZlbnRIYW5kbGVyID0gKGV2ZW50OiB7XG4gIFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZ1xuICBSZXF1ZXN0VHlwZTogXCJDcmVhdGVcIiB8IFwiVXBkYXRlXCIgfCBcIkRlbGV0ZVwiXG4gIFJlc291cmNlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxufSkgPT4gUHJvbWlzZTx7XG4gIFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZ1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBEYXRhPzogUmVjb3JkPHN0cmluZywgYW55PlxufT5cblxuLy8gVHlwZSB0byBtYWNoIENsb3VkRm9ybWF0aW9uIEFXUzo6Um91dGU1Mzo6UmVjb3JkU2V0R3JvdXAgUmVjb3JkU2V0XG5pbnRlcmZhY2UgUmVjb3JkU2V0UHJvcGVydHkge1xuICBOYW1lOiBzdHJpbmdcbiAgVHlwZTogc3RyaW5nXG4gIFJlc291cmNlUmVjb3Jkczogc3RyaW5nW11cbiAgVFRMOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IGhhbmRsZXI6IE9uRXZlbnRIYW5kbGVyID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gIGNvbnN0IHNlc0NsaWVudCA9IG5ldyBTRVNDbGllbnQoKVxuICBjb25zdCBzZXN2MkNsaWVudCA9IG5ldyBTRVN2MkNsaWVudCgpXG5cbiAgY29uc3QgdHRsID0gXCIxODAwXCJcblxuICBjb25zdCBkb21haW5OYW1lID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzW1wiRG9tYWluTmFtZVwiXVxuICBjb25zdCBpbmNsdWRlVmVyaWZpY2F0aW9uUmVjb3JkID1cbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXNbXCJJbmNsdWRlVmVyaWZpY2F0aW9uUmVjb3JkXCJdID09IFwidHJ1ZVwiXG5cbiAgY29uc3QgZGVmYXVsdENvbmZpZ3VyYXRpb25TZXROYW1lID1cbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXNbXCJEZWZhdWx0Q29uZmlndXJhdGlvblNldE5hbWVcIl1cblxuICBpZiAoIWluY2x1ZGVWZXJpZmljYXRpb25SZWNvcmQpIHtcbiAgICBjb25zb2xlLmxvZyhcIkV4Y2x1ZGluZyB2ZXJpZmljYXRpb24gVFhUIHJlY29yZFwiKVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUm91dGU1M1JlY29yZFNldHMoXG4gICAgdmVyaWZpY2F0aW9uVG9rZW46IHN0cmluZyxcbiAgICBka2ltVG9rZW5zOiBzdHJpbmdbXSxcbiAgKSB7XG4gICAgY29uc3QgcmVjb3JkczogUmVjb3JkU2V0UHJvcGVydHlbXSA9IFtdXG5cbiAgICBpZiAoaW5jbHVkZVZlcmlmaWNhdGlvblJlY29yZCkge1xuICAgICAgcmVjb3Jkcy5wdXNoKHtcbiAgICAgICAgTmFtZTogYF9hbWF6b25zZXMuJHtkb21haW5OYW1lfS5gLFxuICAgICAgICBUeXBlOiBcIlRYVFwiLFxuICAgICAgICBSZXNvdXJjZVJlY29yZHM6IFtgXCIke3ZlcmlmaWNhdGlvblRva2VufVwiYF0sXG4gICAgICAgIFRUTDogdHRsLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIGRraW1Ub2tlbnMpIHtcbiAgICAgIHJlY29yZHMucHVzaCh7XG4gICAgICAgIE5hbWU6IGAke3Rva2VufS5fZG9tYWlua2V5LiR7ZG9tYWluTmFtZX0uYCxcbiAgICAgICAgVHlwZTogXCJDTkFNRVwiLFxuICAgICAgICBSZXNvdXJjZVJlY29yZHM6IFtgJHt0b2tlbn0uZGtpbS5hbWF6b25zZXMuY29tLmBdLFxuICAgICAgICBUVEw6IHR0bCxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiByZWNvcmRzXG4gIH1cblxuICBzd2l0Y2ggKGV2ZW50LlJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSBcIkRlbGV0ZVwiOlxuICAgICAgY29uc3QgZGVsZXRlSWRlbnRpdHlSZXNwID0gYXdhaXQgc2VzQ2xpZW50LnNlbmQoXG4gICAgICAgIG5ldyBEZWxldGVJZGVudGl0eUNvbW1hbmQoe1xuICAgICAgICAgIElkZW50aXR5OiBkb21haW5OYW1lLFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIGNvbnNvbGUubG9nKGBzZXMuZGVsZXRlSWRlbnRpdHk6ICR7SlNPTi5zdHJpbmdpZnkoZGVsZXRlSWRlbnRpdHlSZXNwKX1gKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICAgIH1cblxuICAgIGNhc2UgXCJDcmVhdGVcIjpcbiAgICBjYXNlIFwiVXBkYXRlXCI6XG4gICAgICAvLyBJZGVtcG90ZW50LlxuICAgICAgY29uc3QgdmVyaWZ5RG9tYWluSWRlbnRpdHlSZXNwID0gYXdhaXQgc2VzQ2xpZW50LnNlbmQoXG4gICAgICAgIG5ldyBWZXJpZnlEb21haW5JZGVudGl0eUNvbW1hbmQoe1xuICAgICAgICAgIERvbWFpbjogZG9tYWluTmFtZSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHNlcy52ZXJpZnlEb21haW5JZGVudGl0eTogJHtKU09OLnN0cmluZ2lmeSh2ZXJpZnlEb21haW5JZGVudGl0eVJlc3ApfWAsXG4gICAgICApXG4gICAgICBjb25zdCB2ZXJpZmljYXRpb25Ub2tlbiA9IHZlcmlmeURvbWFpbklkZW50aXR5UmVzcC5WZXJpZmljYXRpb25Ub2tlblxuICAgICAgaWYgKCF2ZXJpZmljYXRpb25Ub2tlbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJWZXJpZmljYXRpb24gdG9rZW4gbm90IHJldHVybmVkXCIpXG4gICAgICB9XG5cbiAgICAgIC8vIElkZW1wb3RlbnQuXG4gICAgICBjb25zdCB2ZXJpZnlEb21haW5Ea2ltUmVzcCA9IGF3YWl0IHNlc0NsaWVudC5zZW5kKFxuICAgICAgICBuZXcgVmVyaWZ5RG9tYWluRGtpbUNvbW1hbmQoe1xuICAgICAgICAgIERvbWFpbjogZG9tYWluTmFtZSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHNlcy52ZXJpZnlEb21haW5Ea2ltOiAke0pTT04uc3RyaW5naWZ5KHZlcmlmeURvbWFpbkRraW1SZXNwKX1gLFxuICAgICAgKVxuICAgICAgY29uc3QgZGtpbVRva2VucyA9IHZlcmlmeURvbWFpbkRraW1SZXNwLkRraW1Ub2tlbnMgPz8gW11cbiAgICAgIGlmICghZGtpbVRva2Vucykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJES0lNIHRva2VucyBub3QgcmV0dXJuZWRcIilcbiAgICAgIH1cblxuICAgICAgLy8gSWRlbXBvdGVudC5cbiAgICAgIGNvbnN0IHB1dEVtYWlsSWRlbnRpdHlDb25maWdSZXNwID0gYXdhaXQgc2VzdjJDbGllbnQuc2VuZChcbiAgICAgICAgbmV3IFB1dEVtYWlsSWRlbnRpdHlDb25maWd1cmF0aW9uU2V0QXR0cmlidXRlc0NvbW1hbmQoe1xuICAgICAgICAgIEVtYWlsSWRlbnRpdHk6IGRvbWFpbk5hbWUsXG4gICAgICAgICAgQ29uZmlndXJhdGlvblNldE5hbWU6IGRlZmF1bHRDb25maWd1cmF0aW9uU2V0TmFtZSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHNlc3YyLnB1dEVtYWlsSWRlbnRpdHlDb25maWd1cmF0aW9uU2V0QXR0cmlidXRlcyAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHB1dEVtYWlsSWRlbnRpdHlDb25maWdSZXNwLFxuICAgICAgICApfWAsXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogYFNlc0RvbWFpbiR7ZG9tYWluTmFtZX1gLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgUm91dGU1M1JlY29yZFNldHM6IGNyZWF0ZVJvdXRlNTNSZWNvcmRTZXRzKFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgICAgICAgICBka2ltVG9rZW5zLFxuICAgICAgICAgICksXG4gICAgICAgICAgVmVyaWZpY2F0aW9uVG9rZW46IHZlcmlmaWNhdGlvblRva2VuLFxuICAgICAgICB9LFxuICAgICAgfVxuICB9XG59XG4iXX0=
@@ -7,7 +7,7 @@ const lambda = require("aws-cdk-lib/aws-lambda");
7
7
  const r53 = require("aws-cdk-lib/aws-route53");
8
8
  const cdk = require("aws-cdk-lib");
9
9
  const cr = require("aws-cdk-lib/custom-resources");
10
- const handler_1 = require("./handler");
10
+ const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
11
11
  class SesDomain extends constructs.Construct {
12
12
  constructor(scope, id, props) {
13
13
  var _a, _b, _c, _d;
@@ -65,11 +65,11 @@ class SesDomainProvider extends constructs.Construct {
65
65
  constructor(scope, id) {
66
66
  super(scope, id);
67
67
  this.provider = new cr.Provider(this, "Provider", {
68
- onEventHandler: new lambda.Function(this, "Function", {
69
- code: new lambda.InlineCode(`exports.handler = ${handler_1.sesDomainHandler.toString()};`),
70
- handler: "index.handler",
71
- runtime: lambda.Runtime.NODEJS_16_X,
68
+ onEventHandler: new aws_lambda_nodejs_1.NodejsFunction(this, "Function", {
69
+ entry: require.resolve("./handler"),
70
+ runtime: lambda.Runtime.NODEJS_18_X,
72
71
  timeout: cdk.Duration.minutes(5),
72
+ awsSdkConnectionReuse: false,
73
73
  initialPolicy: [
74
74
  new iam.PolicyStatement({
75
75
  actions: [
@@ -91,4 +91,4 @@ class SesDomainProvider extends constructs.Construct {
91
91
  this.serviceToken = this.provider.serviceToken;
92
92
  }
93
93
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VzL3Nlc2RvbWFpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBd0M7QUFDeEMsMkNBQTBDO0FBQzFDLGlEQUFnRDtBQUNoRCwrQ0FBOEM7QUFDOUMsbUNBQWtDO0FBQ2xDLG1EQUFrRDtBQUNsRCx1Q0FBNEM7QUFtRDVDLE1BQWEsU0FBVSxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBSWpELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBWTs7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN4RCxZQUFZLEVBQUUsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVk7WUFDOUQsVUFBVSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtnQkFDNUIseUJBQXlCLEVBQUUsQ0FDekIsTUFBQSxLQUFLLENBQUMseUJBQXlCLG1DQUFJLElBQUksQ0FDeEMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ1osMkJBQTJCLEVBQUUsS0FBSyxDQUFDLDJCQUEyQjtnQkFDOUQsMkRBQTJEO2dCQUMzRCxnQkFBZ0I7Z0JBQ2hCLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7U0FDRixDQUFDLENBQUE7UUFFRixNQUFNLGdCQUFnQixHQUNwQixDQUFBLE1BQUEsTUFBQSxLQUFLLENBQUMsU0FBUywwQ0FBRSxPQUFPLG1DQUFJLElBQUk7WUFDOUIsQ0FBQyxDQUFDO2dCQUNFO29CQUNFLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVTtvQkFDdEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRztvQkFDeEIsR0FBRyxFQUFFLElBQUk7b0JBQ1QsZUFBZSxFQUFFO3dCQUNmLElBQUksQ0FBQyxTQUFTLENBQ1osQ0FBQSxNQUFBLEtBQUssQ0FBQyxTQUFTLDBDQUFFLEtBQUssS0FBSSxtQ0FBbUMsQ0FDOUQ7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFUixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQzdELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFFbkUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUNoRCxZQUFZLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUFZO2dCQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjthQUNuQyxDQUFDLENBQUE7WUFDRixJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM1QixJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7b0JBQ3RELFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQVk7b0JBQzNDLFVBQVUsRUFBRSxnQkFBZ0I7aUJBQzdCLENBQUMsQ0FBQTtZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBckRELDhCQXFEQztBQUVELE1BQU0saUJBQWtCLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFDbEQ7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQTJCO1FBQ25ELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2pDLE1BQU0sRUFBRSxHQUFHLGdDQUFnQyxDQUFBO1FBQzNDLE9BQU8sQ0FDSixLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQXVCO1lBQ2xELElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUNqQyxDQUFBO0lBQ0gsQ0FBQztJQUtELFlBQVksS0FBMkIsRUFBRSxFQUFVO1FBQ2pELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNoRCxjQUFjLEVBQUUsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ3BELElBQUksRUFBRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQ3pCLHFCQUFxQiwwQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUNwRDtnQkFDRCxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDbkMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsYUFBYSxFQUFFO29CQUNiLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzt3QkFDdEIsT0FBTyxFQUFFOzRCQUNQLG9CQUFvQjs0QkFDcEIsK0JBQStCOzRCQUMvQix5Q0FBeUM7NEJBQ3pDLHVDQUF1Qzs0QkFDdkMsNEJBQTRCOzRCQUM1QiwrQkFBK0I7NEJBQy9CLHNCQUFzQjs0QkFDdEIsMEJBQTBCOzRCQUMxQixnREFBZ0Q7eUJBQ2pEO3dCQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztxQkFDakIsQ0FBQztpQkFDSDthQUNGLENBQUM7U0FDSCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFBO0lBQ2hELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyByNTMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCJcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0ICogYXMgY3IgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIlxuaW1wb3J0IHsgc2VzRG9tYWluSGFuZGxlciB9IGZyb20gXCIuL2hhbmRsZXJcIlxuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIHRvIHJlZ2lzdGVyIGluIFNFUy5cbiAgICovXG4gIGRvbWFpbk5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogSG9zdGVkIFpvbmUgdG8gYXR0YWNoIEROUyByZWNvcmRzLiBJZiBub3QgZ2l2ZW4gaXQgbXVzdFxuICAgKiBiZSBwZXJmb3JtZWQgbWFudWFsbHkuXG4gICAqL1xuICBob3N0ZWRab25lPzogcjUzLklIb3N0ZWRab25lXG4gIC8qKlxuICAgKiBJbmNsdWRlIG9yIGV4Y2x1ZGUgdmVyaWZpY2F0aW9uIFRYVCByZWNvcmQuXG4gICAqXG4gICAqIENOQU1FIHJlY29yZHMgZm9yIERLSU0gdG9rZW5zIHdpbGwgc3RpbGwgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogUm91dGUgNTMgd2lsbCBub3QgYWxsb3cgbXVsdGlwbGUgVFhUIHJlY29yZHMgd2l0aCB0aGUgc2FtZSBuYW1lLlxuICAgKiBUaGlzIG9wdGlvbiBhbGxvd3MgdG8gXCJvcHQtb3V0XCIgb2YgdGhlIHJlY29yZHMgYW5kIGxlYXZpbmdcbiAgICogdGhlIGNhbGxlciByZXNwb25zaWJsZSBvZiBoYW5kbGluZyBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW5jbHVkZVZlcmlmaWNhdGlvblJlY29yZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIERlZmF1bHQgY29uZmlndXJhdGlvbiBzZXQgZm9yIGVtYWlscyBzZW50IGZyb20gdGhpcyBkb21haW4uXG4gICAqL1xuICBkZWZhdWx0Q29uZmlndXJhdGlvblNldE5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGFuIFNQRiByZWNvcmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gU1BGIHJlY29yZCB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBpcyBjcmVhdGVkLlxuICAgKi9cbiAgc3BmUmVjb3JkPzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gY3JlYXRlIHRoZSByZWNvcmQgb3Igbm90LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGluY2x1ZGU/OiBib29sZWFuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSBTUEYgcmVjb3JkLlxuICAgICAqXG4gICAgICogTk9URTogVGhlIHZhbHVlIHdpbGwgYmUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyBmb3IgeW91LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJ2PXNwZjEgaW5jbHVkZTphbWF6b25zZXMuY29tIH5hbGxcIlxuICAgICAqL1xuICAgIHZhbHVlPzogc3RyaW5nXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlc0RvbWFpbiBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgcHVibGljIHJvdXRlNTNSZWNvcmRTZXRzOiBjZGsuSVJlc29sdmFibGVcbiAgcHVibGljIHZlcmlmaWNhdGlvblRva2VuOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogU2VzRG9tYWluUHJvdmlkZXIuZ2V0T3JDcmVhdGUodGhpcykuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBEb21haW5OYW1lOiBwcm9wcy5kb21haW5OYW1lLFxuICAgICAgICBJbmNsdWRlVmVyaWZpY2F0aW9uUmVjb3JkOiAoXG4gICAgICAgICAgcHJvcHMuaW5jbHVkZVZlcmlmaWNhdGlvblJlY29yZCA/PyB0cnVlXG4gICAgICAgICkudG9TdHJpbmcoKSxcbiAgICAgICAgRGVmYXVsdENvbmZpZ3VyYXRpb25TZXROYW1lOiBwcm9wcy5kZWZhdWx0Q29uZmlndXJhdGlvblNldE5hbWUsXG4gICAgICAgIC8vIEJ1bXAgdGhpcyBpZiBjaGFuZ2luZyBsb2dpYyBpbiB0aGUgbGFtYmRhIHRoYXQgc2hvdWxkIGJlXG4gICAgICAgIC8vIHJlLWV2YWx1YXRlZC5cbiAgICAgICAgU2VyaWFsOiAxLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3Qgc3RhdGljUmVjb3JkU2V0czogcjUzLkNmblJlY29yZFNldEdyb3VwLlJlY29yZFNldFByb3BlcnR5W10gPVxuICAgICAgcHJvcHMuc3BmUmVjb3JkPy5pbmNsdWRlID8/IHRydWVcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICAgICAgICAgIHR5cGU6IHI1My5SZWNvcmRUeXBlLlRYVCxcbiAgICAgICAgICAgICAgdHRsOiBcIjYwXCIsXG4gICAgICAgICAgICAgIHJlc291cmNlUmVjb3JkczogW1xuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgICAgcHJvcHMuc3BmUmVjb3JkPy52YWx1ZSB8fCBcInY9c3BmMSBpbmNsdWRlOmFtYXpvbnNlcy5jb20gfmFsbFwiLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXVxuXG4gICAgdGhpcy5yb3V0ZTUzUmVjb3JkU2V0cyA9IHJlc291cmNlLmdldEF0dChcIlJvdXRlNTNSZWNvcmRTZXRzXCIpXG4gICAgdGhpcy52ZXJpZmljYXRpb25Ub2tlbiA9IHJlc291cmNlLmdldEF0dFN0cmluZyhcIlZlcmlmaWNhdGlvblRva2VuXCIpXG5cbiAgICBpZiAocHJvcHMuaG9zdGVkWm9uZSkge1xuICAgICAgbmV3IHI1My5DZm5SZWNvcmRTZXRHcm91cCh0aGlzLCBcIlJlY29yZFNldEdyb3VwXCIsIHtcbiAgICAgICAgaG9zdGVkWm9uZUlkOiBwcm9wcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZCxcbiAgICAgICAgcmVjb3JkU2V0czogdGhpcy5yb3V0ZTUzUmVjb3JkU2V0cyxcbiAgICAgIH0pXG4gICAgICBpZiAoc3RhdGljUmVjb3JkU2V0cy5sZW5ndGgpIHtcbiAgICAgICAgbmV3IHI1My5DZm5SZWNvcmRTZXRHcm91cCh0aGlzLCBcIlN0YXRpY1JlY29yZFNldEdyb3VwXCIsIHtcbiAgICAgICAgICBob3N0ZWRab25lSWQ6IHByb3BzLmhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkLFxuICAgICAgICAgIHJlY29yZFNldHM6IHN0YXRpY1JlY29yZFNldHMsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFNlc0RvbWFpblByb3ZpZGVyIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIHByb3ZpZGVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpIHtcbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZihzY29wZSlcbiAgICBjb25zdCBpZCA9IFwibGlmbGlnLWNkay5zZXMtZG9tYWluLnByb3ZpZGVyXCJcbiAgICByZXR1cm4gKFxuICAgICAgKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKGlkKSBhcyBTZXNEb21haW5Qcm92aWRlcikgfHxcbiAgICAgIG5ldyBTZXNEb21haW5Qcm92aWRlcihzdGFjaywgaWQpXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlcjogY3IuUHJvdmlkZXJcbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VUb2tlbjogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5wcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCBcIlByb3ZpZGVyXCIsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiRnVuY3Rpb25cIiwge1xuICAgICAgICBjb2RlOiBuZXcgbGFtYmRhLklubGluZUNvZGUoXG4gICAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7c2VzRG9tYWluSGFuZGxlci50b1N0cmluZygpfTtgLFxuICAgICAgICApLFxuICAgICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICBpbml0aWFsUG9saWN5OiBbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICBcInNlczpEZWxldGVJZGVudGl0eVwiLFxuICAgICAgICAgICAgICBcInNlczpHZXRJZGVudGl0eURraW1BdHRyaWJ1dGVzXCIsXG4gICAgICAgICAgICAgIFwic2VzOkdldElkZW50aXR5TWFpbEZyb21Eb21haW5BdHRyaWJ1dGVzXCIsXG4gICAgICAgICAgICAgIFwic2VzOkdldElkZW50aXR5VmVyaWZpY2F0aW9uQXR0cmlidXRlc1wiLFxuICAgICAgICAgICAgICBcInNlczpTZXRJZGVudGl0eURraW1FbmFibGVkXCIsXG4gICAgICAgICAgICAgIFwic2VzOlNldElkZW50aXR5TWFpbEZyb21Eb21haW5cIixcbiAgICAgICAgICAgICAgXCJzZXM6VmVyaWZ5RG9tYWluRGtpbVwiLFxuICAgICAgICAgICAgICBcInNlczpWZXJpZnlEb21haW5JZGVudGl0eVwiLFxuICAgICAgICAgICAgICBcInNlczpQdXRFbWFpbElkZW50aXR5Q29uZmlndXJhdGlvblNldEF0dHJpYnV0ZXNcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICB9KVxuXG4gICAgdGhpcy5zZXJ2aWNlVG9rZW4gPSB0aGlzLnByb3ZpZGVyLnNlcnZpY2VUb2tlblxuICB9XG59XG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VzL3Nlc2RvbWFpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBd0M7QUFDeEMsMkNBQTBDO0FBQzFDLGlEQUFnRDtBQUNoRCwrQ0FBOEM7QUFDOUMsbUNBQWtDO0FBQ2xDLG1EQUFrRDtBQUNsRCxxRUFBOEQ7QUFtRDlELE1BQWEsU0FBVSxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBSWpELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBWTs7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN4RCxZQUFZLEVBQUUsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVk7WUFDOUQsVUFBVSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtnQkFDNUIseUJBQXlCLEVBQUUsQ0FDekIsTUFBQSxLQUFLLENBQUMseUJBQXlCLG1DQUFJLElBQUksQ0FDeEMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ1osMkJBQTJCLEVBQUUsS0FBSyxDQUFDLDJCQUEyQjtnQkFDOUQsMkRBQTJEO2dCQUMzRCxnQkFBZ0I7Z0JBQ2hCLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7U0FDRixDQUFDLENBQUE7UUFFRixNQUFNLGdCQUFnQixHQUNwQixDQUFBLE1BQUEsTUFBQSxLQUFLLENBQUMsU0FBUywwQ0FBRSxPQUFPLG1DQUFJLElBQUk7WUFDOUIsQ0FBQyxDQUFDO2dCQUNFO29CQUNFLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVTtvQkFDdEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRztvQkFDeEIsR0FBRyxFQUFFLElBQUk7b0JBQ1QsZUFBZSxFQUFFO3dCQUNmLElBQUksQ0FBQyxTQUFTLENBQ1osQ0FBQSxNQUFBLEtBQUssQ0FBQyxTQUFTLDBDQUFFLEtBQUssS0FBSSxtQ0FBbUMsQ0FDOUQ7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFUixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQzdELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFFbkUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUNoRCxZQUFZLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUFZO2dCQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjthQUNuQyxDQUFDLENBQUE7WUFDRixJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM1QixJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7b0JBQ3RELFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQVk7b0JBQzNDLFVBQVUsRUFBRSxnQkFBZ0I7aUJBQzdCLENBQUMsQ0FBQTtZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBckRELDhCQXFEQztBQUVELE1BQU0saUJBQWtCLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFDbEQ7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQTJCO1FBQ25ELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2pDLE1BQU0sRUFBRSxHQUFHLGdDQUFnQyxDQUFBO1FBQzNDLE9BQU8sQ0FDSixLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQXVCO1lBQ2xELElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUNqQyxDQUFBO0lBQ0gsQ0FBQztJQUtELFlBQVksS0FBMkIsRUFBRSxFQUFVO1FBQ2pELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNoRCxjQUFjLEVBQUUsSUFBSSxrQ0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ25ELEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztnQkFDbkMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDbkMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDaEMscUJBQXFCLEVBQUUsS0FBSztnQkFDNUIsYUFBYSxFQUFFO29CQUNiLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzt3QkFDdEIsT0FBTyxFQUFFOzRCQUNQLG9CQUFvQjs0QkFDcEIsK0JBQStCOzRCQUMvQix5Q0FBeUM7NEJBQ3pDLHVDQUF1Qzs0QkFDdkMsNEJBQTRCOzRCQUM1QiwrQkFBK0I7NEJBQy9CLHNCQUFzQjs0QkFDdEIsMEJBQTBCOzRCQUMxQixnREFBZ0Q7eUJBQ2pEO3dCQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztxQkFDakIsQ0FBQztpQkFDSDthQUNGLENBQUM7U0FDSCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFBO0lBQ2hELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyByNTMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCJcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0ICogYXMgY3IgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIlxuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIlxuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIHRvIHJlZ2lzdGVyIGluIFNFUy5cbiAgICovXG4gIGRvbWFpbk5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogSG9zdGVkIFpvbmUgdG8gYXR0YWNoIEROUyByZWNvcmRzLiBJZiBub3QgZ2l2ZW4gaXQgbXVzdFxuICAgKiBiZSBwZXJmb3JtZWQgbWFudWFsbHkuXG4gICAqL1xuICBob3N0ZWRab25lPzogcjUzLklIb3N0ZWRab25lXG4gIC8qKlxuICAgKiBJbmNsdWRlIG9yIGV4Y2x1ZGUgdmVyaWZpY2F0aW9uIFRYVCByZWNvcmQuXG4gICAqXG4gICAqIENOQU1FIHJlY29yZHMgZm9yIERLSU0gdG9rZW5zIHdpbGwgc3RpbGwgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogUm91dGUgNTMgd2lsbCBub3QgYWxsb3cgbXVsdGlwbGUgVFhUIHJlY29yZHMgd2l0aCB0aGUgc2FtZSBuYW1lLlxuICAgKiBUaGlzIG9wdGlvbiBhbGxvd3MgdG8gXCJvcHQtb3V0XCIgb2YgdGhlIHJlY29yZHMgYW5kIGxlYXZpbmdcbiAgICogdGhlIGNhbGxlciByZXNwb25zaWJsZSBvZiBoYW5kbGluZyBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW5jbHVkZVZlcmlmaWNhdGlvblJlY29yZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIERlZmF1bHQgY29uZmlndXJhdGlvbiBzZXQgZm9yIGVtYWlscyBzZW50IGZyb20gdGhpcyBkb21haW4uXG4gICAqL1xuICBkZWZhdWx0Q29uZmlndXJhdGlvblNldE5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGFuIFNQRiByZWNvcmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gU1BGIHJlY29yZCB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBpcyBjcmVhdGVkLlxuICAgKi9cbiAgc3BmUmVjb3JkPzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gY3JlYXRlIHRoZSByZWNvcmQgb3Igbm90LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGluY2x1ZGU/OiBib29sZWFuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSBTUEYgcmVjb3JkLlxuICAgICAqXG4gICAgICogTk9URTogVGhlIHZhbHVlIHdpbGwgYmUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyBmb3IgeW91LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJ2PXNwZjEgaW5jbHVkZTphbWF6b25zZXMuY29tIH5hbGxcIlxuICAgICAqL1xuICAgIHZhbHVlPzogc3RyaW5nXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlc0RvbWFpbiBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgcHVibGljIHJvdXRlNTNSZWNvcmRTZXRzOiBjZGsuSVJlc29sdmFibGVcbiAgcHVibGljIHZlcmlmaWNhdGlvblRva2VuOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogU2VzRG9tYWluUHJvdmlkZXIuZ2V0T3JDcmVhdGUodGhpcykuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBEb21haW5OYW1lOiBwcm9wcy5kb21haW5OYW1lLFxuICAgICAgICBJbmNsdWRlVmVyaWZpY2F0aW9uUmVjb3JkOiAoXG4gICAgICAgICAgcHJvcHMuaW5jbHVkZVZlcmlmaWNhdGlvblJlY29yZCA/PyB0cnVlXG4gICAgICAgICkudG9TdHJpbmcoKSxcbiAgICAgICAgRGVmYXVsdENvbmZpZ3VyYXRpb25TZXROYW1lOiBwcm9wcy5kZWZhdWx0Q29uZmlndXJhdGlvblNldE5hbWUsXG4gICAgICAgIC8vIEJ1bXAgdGhpcyBpZiBjaGFuZ2luZyBsb2dpYyBpbiB0aGUgbGFtYmRhIHRoYXQgc2hvdWxkIGJlXG4gICAgICAgIC8vIHJlLWV2YWx1YXRlZC5cbiAgICAgICAgU2VyaWFsOiAxLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3Qgc3RhdGljUmVjb3JkU2V0czogcjUzLkNmblJlY29yZFNldEdyb3VwLlJlY29yZFNldFByb3BlcnR5W10gPVxuICAgICAgcHJvcHMuc3BmUmVjb3JkPy5pbmNsdWRlID8/IHRydWVcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICAgICAgICAgIHR5cGU6IHI1My5SZWNvcmRUeXBlLlRYVCxcbiAgICAgICAgICAgICAgdHRsOiBcIjYwXCIsXG4gICAgICAgICAgICAgIHJlc291cmNlUmVjb3JkczogW1xuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgICAgcHJvcHMuc3BmUmVjb3JkPy52YWx1ZSB8fCBcInY9c3BmMSBpbmNsdWRlOmFtYXpvbnNlcy5jb20gfmFsbFwiLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXVxuXG4gICAgdGhpcy5yb3V0ZTUzUmVjb3JkU2V0cyA9IHJlc291cmNlLmdldEF0dChcIlJvdXRlNTNSZWNvcmRTZXRzXCIpXG4gICAgdGhpcy52ZXJpZmljYXRpb25Ub2tlbiA9IHJlc291cmNlLmdldEF0dFN0cmluZyhcIlZlcmlmaWNhdGlvblRva2VuXCIpXG5cbiAgICBpZiAocHJvcHMuaG9zdGVkWm9uZSkge1xuICAgICAgbmV3IHI1My5DZm5SZWNvcmRTZXRHcm91cCh0aGlzLCBcIlJlY29yZFNldEdyb3VwXCIsIHtcbiAgICAgICAgaG9zdGVkWm9uZUlkOiBwcm9wcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZCxcbiAgICAgICAgcmVjb3JkU2V0czogdGhpcy5yb3V0ZTUzUmVjb3JkU2V0cyxcbiAgICAgIH0pXG4gICAgICBpZiAoc3RhdGljUmVjb3JkU2V0cy5sZW5ndGgpIHtcbiAgICAgICAgbmV3IHI1My5DZm5SZWNvcmRTZXRHcm91cCh0aGlzLCBcIlN0YXRpY1JlY29yZFNldEdyb3VwXCIsIHtcbiAgICAgICAgICBob3N0ZWRab25lSWQ6IHByb3BzLmhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkLFxuICAgICAgICAgIHJlY29yZFNldHM6IHN0YXRpY1JlY29yZFNldHMsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFNlc0RvbWFpblByb3ZpZGVyIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIHByb3ZpZGVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpIHtcbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZihzY29wZSlcbiAgICBjb25zdCBpZCA9IFwibGlmbGlnLWNkay5zZXMtZG9tYWluLnByb3ZpZGVyXCJcbiAgICByZXR1cm4gKFxuICAgICAgKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKGlkKSBhcyBTZXNEb21haW5Qcm92aWRlcikgfHxcbiAgICAgIG5ldyBTZXNEb21haW5Qcm92aWRlcihzdGFjaywgaWQpXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlcjogY3IuUHJvdmlkZXJcbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VUb2tlbjogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5wcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCBcIlByb3ZpZGVyXCIsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBuZXcgTm9kZWpzRnVuY3Rpb24odGhpcywgXCJGdW5jdGlvblwiLCB7XG4gICAgICAgIGVudHJ5OiByZXF1aXJlLnJlc29sdmUoXCIuL2hhbmRsZXJcIiksXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgYXdzU2RrQ29ubmVjdGlvblJldXNlOiBmYWxzZSxcbiAgICAgICAgaW5pdGlhbFBvbGljeTogW1xuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJzZXM6RGVsZXRlSWRlbnRpdHlcIixcbiAgICAgICAgICAgICAgXCJzZXM6R2V0SWRlbnRpdHlEa2ltQXR0cmlidXRlc1wiLFxuICAgICAgICAgICAgICBcInNlczpHZXRJZGVudGl0eU1haWxGcm9tRG9tYWluQXR0cmlidXRlc1wiLFxuICAgICAgICAgICAgICBcInNlczpHZXRJZGVudGl0eVZlcmlmaWNhdGlvbkF0dHJpYnV0ZXNcIixcbiAgICAgICAgICAgICAgXCJzZXM6U2V0SWRlbnRpdHlEa2ltRW5hYmxlZFwiLFxuICAgICAgICAgICAgICBcInNlczpTZXRJZGVudGl0eU1haWxGcm9tRG9tYWluXCIsXG4gICAgICAgICAgICAgIFwic2VzOlZlcmlmeURvbWFpbkRraW1cIixcbiAgICAgICAgICAgICAgXCJzZXM6VmVyaWZ5RG9tYWluSWRlbnRpdHlcIixcbiAgICAgICAgICAgICAgXCJzZXM6UHV0RW1haWxJZGVudGl0eUNvbmZpZ3VyYXRpb25TZXRBdHRyaWJ1dGVzXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgfSlcblxuICAgIHRoaXMuc2VydmljZVRva2VuID0gdGhpcy5wcm92aWRlci5zZXJ2aWNlVG9rZW5cbiAgfVxufVxuIl19
@@ -5,5 +5,5 @@ type OnEventHandler = (event: {
5
5
  }) => Promise<{
6
6
  PhysicalResourceId?: string;
7
7
  }>;
8
- export declare const sesVerifyEmailHandler: OnEventHandler;
8
+ export declare const handler: OnEventHandler;
9
9
  export {};
@@ -1,25 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sesVerifyEmailHandler = void 0;
4
- // This function is inline-compiled for the lambda.
5
- // It must be self-contained.
6
- const sesVerifyEmailHandler = async (event) => {
7
- const AWS = require("aws-sdk");
8
- const ses = new AWS.SES();
3
+ exports.handler = void 0;
4
+ const client_ses_1 = require("@aws-sdk/client-ses");
5
+ const handler = async (event) => {
6
+ const sesClient = new client_ses_1.SESClient();
9
7
  const emailAddress = event.ResourceProperties["EmailAddress"];
10
8
  switch (event.RequestType) {
11
9
  case "Delete":
12
- await ses.deleteIdentity({ Identity: emailAddress }).promise();
10
+ await sesClient.send(new client_ses_1.DeleteIdentityCommand({
11
+ Identity: emailAddress,
12
+ }));
13
13
  return {
14
14
  PhysicalResourceId: event.PhysicalResourceId,
15
15
  };
16
16
  case "Create":
17
17
  case "Update":
18
- await ses.verifyEmailIdentity({ EmailAddress: emailAddress }).promise();
18
+ await sesClient.send(new client_ses_1.VerifyEmailIdentityCommand({
19
+ EmailAddress: emailAddress,
20
+ }));
19
21
  return {
20
22
  PhysicalResourceId: `SesVerifyEmail:${emailAddress}`,
21
23
  };
22
24
  }
23
25
  };
24
- exports.sesVerifyEmailHandler = sesVerifyEmailHandler;
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXMvc2VzdmVyaWZ5ZW1haWwvaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFjQSxtREFBbUQ7QUFDbkQsNkJBQTZCO0FBQ3RCLE1BQU0scUJBQXFCLEdBQW1CLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUNuRSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFOUIsTUFBTSxHQUFHLEdBQVksSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFjLENBQUE7SUFFOUMsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBRTdELFFBQVEsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLEtBQUssUUFBUTtZQUNYLE1BQU0sR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBRTlELE9BQU87Z0JBQ0wsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjthQUM3QyxDQUFBO1FBRUgsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLFFBQVE7WUFDWCxNQUFNLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBRXZFLE9BQU87Z0JBQ0wsa0JBQWtCLEVBQUUsa0JBQWtCLFlBQVksRUFBRTthQUNyRCxDQUFBO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQTtBQXZCWSxRQUFBLHFCQUFxQix5QkF1QmpDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGwgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyAqL1xuaW1wb3J0IHR5cGUgKiBhcyBfQVdTIGZyb20gXCJhd3Mtc2RrXCJcblxudHlwZSBPbkV2ZW50SGFuZGxlciA9IChldmVudDoge1xuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmdcbiAgUmVxdWVzdFR5cGU6IFwiQ3JlYXRlXCIgfCBcIlVwZGF0ZVwiIHwgXCJEZWxldGVcIlxuICBSZXNvdXJjZVByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbn0pID0+IFByb21pc2U8e1xuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmdcbn0+XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgaW5saW5lLWNvbXBpbGVkIGZvciB0aGUgbGFtYmRhLlxuLy8gSXQgbXVzdCBiZSBzZWxmLWNvbnRhaW5lZC5cbmV4cG9ydCBjb25zdCBzZXNWZXJpZnlFbWFpbEhhbmRsZXI6IE9uRXZlbnRIYW5kbGVyID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gIGNvbnN0IEFXUyA9IHJlcXVpcmUoXCJhd3Mtc2RrXCIpXG5cbiAgY29uc3Qgc2VzOiBBV1MuU0VTID0gbmV3IEFXUy5TRVMoKSBhcyBfQVdTLlNFU1xuXG4gIGNvbnN0IGVtYWlsQWRkcmVzcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllc1tcIkVtYWlsQWRkcmVzc1wiXVxuXG4gIHN3aXRjaCAoZXZlbnQuUmVxdWVzdFR5cGUpIHtcbiAgICBjYXNlIFwiRGVsZXRlXCI6XG4gICAgICBhd2FpdCBzZXMuZGVsZXRlSWRlbnRpdHkoeyBJZGVudGl0eTogZW1haWxBZGRyZXNzIH0pLnByb21pc2UoKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICAgIH1cblxuICAgIGNhc2UgXCJDcmVhdGVcIjpcbiAgICBjYXNlIFwiVXBkYXRlXCI6XG4gICAgICBhd2FpdCBzZXMudmVyaWZ5RW1haWxJZGVudGl0eSh7IEVtYWlsQWRkcmVzczogZW1haWxBZGRyZXNzIH0pLnByb21pc2UoKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGBTZXNWZXJpZnlFbWFpbDoke2VtYWlsQWRkcmVzc31gLFxuICAgICAgfVxuICB9XG59XG4iXX0=
26
+ exports.handler = handler;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXMvc2VzdmVyaWZ5ZW1haWwvaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFJNEI7QUFVckIsTUFBTSxPQUFPLEdBQW1CLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLHNCQUFTLEVBQUUsQ0FBQTtJQUNqQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUE7SUFFN0QsUUFBUSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUIsS0FBSyxRQUFRO1lBQ1gsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUNsQixJQUFJLGtDQUFxQixDQUFDO2dCQUN4QixRQUFRLEVBQUUsWUFBWTthQUN2QixDQUFDLENBQ0gsQ0FBQTtZQUVELE9BQU87Z0JBQ0wsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjthQUM3QyxDQUFBO1FBRUgsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLFFBQVE7WUFDWCxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQ2xCLElBQUksdUNBQTBCLENBQUM7Z0JBQzdCLFlBQVksRUFBRSxZQUFZO2FBQzNCLENBQUMsQ0FDSCxDQUFBO1lBRUQsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxrQkFBa0IsWUFBWSxFQUFFO2FBQ3JELENBQUE7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBNUJZLFFBQUEsT0FBTyxXQTRCbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEZWxldGVJZGVudGl0eUNvbW1hbmQsXG4gIFNFU0NsaWVudCxcbiAgVmVyaWZ5RW1haWxJZGVudGl0eUNvbW1hbmQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzXCJcblxudHlwZSBPbkV2ZW50SGFuZGxlciA9IChldmVudDoge1xuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmdcbiAgUmVxdWVzdFR5cGU6IFwiQ3JlYXRlXCIgfCBcIlVwZGF0ZVwiIHwgXCJEZWxldGVcIlxuICBSZXNvdXJjZVByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbn0pID0+IFByb21pc2U8e1xuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmdcbn0+XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyOiBPbkV2ZW50SGFuZGxlciA9IGFzeW5jIChldmVudCkgPT4ge1xuICBjb25zdCBzZXNDbGllbnQgPSBuZXcgU0VTQ2xpZW50KClcbiAgY29uc3QgZW1haWxBZGRyZXNzID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzW1wiRW1haWxBZGRyZXNzXCJdXG5cbiAgc3dpdGNoIChldmVudC5SZXF1ZXN0VHlwZSkge1xuICAgIGNhc2UgXCJEZWxldGVcIjpcbiAgICAgIGF3YWl0IHNlc0NsaWVudC5zZW5kKFxuICAgICAgICBuZXcgRGVsZXRlSWRlbnRpdHlDb21tYW5kKHtcbiAgICAgICAgICBJZGVudGl0eTogZW1haWxBZGRyZXNzLFxuICAgICAgICB9KSxcbiAgICAgIClcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgUGh5c2ljYWxSZXNvdXJjZUlkOiBldmVudC5QaHlzaWNhbFJlc291cmNlSWQsXG4gICAgICB9XG5cbiAgICBjYXNlIFwiQ3JlYXRlXCI6XG4gICAgY2FzZSBcIlVwZGF0ZVwiOlxuICAgICAgYXdhaXQgc2VzQ2xpZW50LnNlbmQoXG4gICAgICAgIG5ldyBWZXJpZnlFbWFpbElkZW50aXR5Q29tbWFuZCh7XG4gICAgICAgICAgRW1haWxBZGRyZXNzOiBlbWFpbEFkZHJlc3MsXG4gICAgICAgIH0pLFxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGBTZXNWZXJpZnlFbWFpbDoke2VtYWlsQWRkcmVzc31gLFxuICAgICAgfVxuICB9XG59XG4iXX0=
@@ -6,7 +6,7 @@ const iam = require("aws-cdk-lib/aws-iam");
6
6
  const lambda = require("aws-cdk-lib/aws-lambda");
7
7
  const cdk = require("aws-cdk-lib");
8
8
  const cr = require("aws-cdk-lib/custom-resources");
9
- const handler_1 = require("./handler");
9
+ const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
10
10
  class SesVerifyEmail extends constructs.Construct {
11
11
  constructor(scope, id, props) {
12
12
  super(scope, id);
@@ -32,11 +32,11 @@ class SesVerifyEmailProvider extends constructs.Construct {
32
32
  constructor(scope, id) {
33
33
  super(scope, id);
34
34
  this.provider = new cr.Provider(this, "Provider", {
35
- onEventHandler: new lambda.Function(this, "Function", {
36
- code: new lambda.InlineCode(`exports.handler = ${handler_1.sesVerifyEmailHandler.toString()};`),
37
- handler: "index.handler",
38
- runtime: lambda.Runtime.NODEJS_16_X,
35
+ onEventHandler: new aws_lambda_nodejs_1.NodejsFunction(this, "Function", {
36
+ entry: require.resolve("./handler"),
37
+ runtime: lambda.Runtime.NODEJS_18_X,
39
38
  timeout: cdk.Duration.minutes(5),
39
+ awsSdkConnectionReuse: false,
40
40
  initialPolicy: [
41
41
  new iam.PolicyStatement({
42
42
  actions: ["ses:DeleteIdentity", "ses:VerifyEmailIdentity"],
@@ -48,4 +48,4 @@ class SesVerifyEmailProvider extends constructs.Construct {
48
48
  this.serviceToken = this.provider.serviceToken;
49
49
  }
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VzL3Nlc3ZlcmlmeWVtYWlsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF3QztBQUN4QywyQ0FBMEM7QUFDMUMsaURBQWdEO0FBQ2hELG1DQUFrQztBQUNsQyxtREFBa0Q7QUFDbEQsdUNBQWlEO0FBU2pELE1BQWEsY0FBZSxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBR3RELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBWTtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3ZDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWTtZQUNuRSxVQUFVLEVBQUU7Z0JBQ1YsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO2FBQ2pDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGO0FBYkQsd0NBYUM7QUFFRCxNQUFNLHNCQUF1QixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQ3ZEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUEyQjtRQUNuRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNqQyxNQUFNLEVBQUUsR0FBRyxzQ0FBc0MsQ0FBQTtRQUNqRCxPQUFPLENBQ0osS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUE0QjtZQUN2RCxJQUFJLHNCQUFzQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDdEMsQ0FBQTtJQUNILENBQUM7SUFLRCxZQUFZLEtBQTJCLEVBQUUsRUFBVTtRQUNqRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDaEQsY0FBYyxFQUFFLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNwRCxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUN6QixxQkFBcUIsK0JBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FDekQ7Z0JBQ0QsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7Z0JBQ25DLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLGFBQWEsRUFBRTtvQkFDYixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ3RCLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLHlCQUF5QixDQUFDO3dCQUMxRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7cUJBQ2pCLENBQUM7aUJBQ0g7YUFDRixDQUFDO1NBQ0gsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQTtJQUNoRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBjciBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiXG5pbXBvcnQgeyBzZXNWZXJpZnlFbWFpbEhhbmRsZXIgfSBmcm9tIFwiLi9oYW5kbGVyXCJcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBlbWFpbCBhZGRyZXNzIHRvIGFkZCBhcyBhIHZlcmlmaWVkIGVtYWlsIGluIFNFUy5cbiAgICovXG4gIGVtYWlsQWRkcmVzczogc3RyaW5nXG59XG5cbmV4cG9ydCBjbGFzcyBTZXNWZXJpZnlFbWFpbCBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgcHVibGljIHJvdXRlNTNSZWNvcmRTZXRzOiBjZGsuSVJlc29sdmFibGVcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IFNlc1ZlcmlmeUVtYWlsUHJvdmlkZXIuZ2V0T3JDcmVhdGUodGhpcykuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBFbWFpbEFkZHJlc3M6IHByb3BzLmVtYWlsQWRkcmVzcyxcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxufVxuXG5jbGFzcyBTZXNWZXJpZnlFbWFpbFByb3ZpZGVyIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIHByb3ZpZGVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpIHtcbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZihzY29wZSlcbiAgICBjb25zdCBpZCA9IFwibGlmbGlnLWNkay5zZXMtdmVyaWZ5LWVtYWlsLnByb3ZpZGVyXCJcbiAgICByZXR1cm4gKFxuICAgICAgKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKGlkKSBhcyBTZXNWZXJpZnlFbWFpbFByb3ZpZGVyKSB8fFxuICAgICAgbmV3IFNlc1ZlcmlmeUVtYWlsUHJvdmlkZXIoc3RhY2ssIGlkKVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvdmlkZXI6IGNyLlByb3ZpZGVyXG4gIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlVG9rZW46IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIHRoaXMucHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIodGhpcywgXCJQcm92aWRlclwiLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBcIkZ1bmN0aW9uXCIsIHtcbiAgICAgICAgY29kZTogbmV3IGxhbWJkYS5JbmxpbmVDb2RlKFxuICAgICAgICAgIGBleHBvcnRzLmhhbmRsZXIgPSAke3Nlc1ZlcmlmeUVtYWlsSGFuZGxlci50b1N0cmluZygpfTtgLFxuICAgICAgICApLFxuICAgICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICBpbml0aWFsUG9saWN5OiBbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1wic2VzOkRlbGV0ZUlkZW50aXR5XCIsIFwic2VzOlZlcmlmeUVtYWlsSWRlbnRpdHlcIl0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICB9KVxuXG4gICAgdGhpcy5zZXJ2aWNlVG9rZW4gPSB0aGlzLnByb3ZpZGVyLnNlcnZpY2VUb2tlblxuICB9XG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VzL3Nlc3ZlcmlmeWVtYWlsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF3QztBQUN4QywyQ0FBMEM7QUFDMUMsaURBQWdEO0FBQ2hELG1DQUFrQztBQUNsQyxtREFBa0Q7QUFDbEQscUVBQThEO0FBUzlELE1BQWEsY0FBZSxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBR3RELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBWTtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3ZDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWTtZQUNuRSxVQUFVLEVBQUU7Z0JBQ1YsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO2FBQ2pDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGO0FBYkQsd0NBYUM7QUFFRCxNQUFNLHNCQUF1QixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQ3ZEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUEyQjtRQUNuRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNqQyxNQUFNLEVBQUUsR0FBRyxzQ0FBc0MsQ0FBQTtRQUNqRCxPQUFPLENBQ0osS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUE0QjtZQUN2RCxJQUFJLHNCQUFzQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDdEMsQ0FBQTtJQUNILENBQUM7SUFLRCxZQUFZLEtBQTJCLEVBQUUsRUFBVTtRQUNqRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDaEQsY0FBYyxFQUFFLElBQUksa0NBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNuRCxLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7Z0JBQ25DLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7Z0JBQ25DLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLHFCQUFxQixFQUFFLEtBQUs7Z0JBQzVCLGFBQWEsRUFBRTtvQkFDYixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ3RCLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLHlCQUF5QixDQUFDO3dCQUMxRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7cUJBQ2pCLENBQUM7aUJBQ0g7YUFDRixDQUFDO1NBQ0gsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQTtJQUNoRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBjciBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiXG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiXG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZW1haWwgYWRkcmVzcyB0byBhZGQgYXMgYSB2ZXJpZmllZCBlbWFpbCBpbiBTRVMuXG4gICAqL1xuICBlbWFpbEFkZHJlc3M6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgU2VzVmVyaWZ5RW1haWwgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByb3V0ZTUzUmVjb3JkU2V0czogY2RrLklSZXNvbHZhYmxlXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgc2VydmljZVRva2VuOiBTZXNWZXJpZnlFbWFpbFByb3ZpZGVyLmdldE9yQ3JlYXRlKHRoaXMpLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgRW1haWxBZGRyZXNzOiBwcm9wcy5lbWFpbEFkZHJlc3MsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cbn1cblxuY2xhc3MgU2VzVmVyaWZ5RW1haWxQcm92aWRlciBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBwcm92aWRlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0T3JDcmVhdGUoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0KSB7XG4gICAgY29uc3Qgc3RhY2sgPSBjZGsuU3RhY2sub2Yoc2NvcGUpXG4gICAgY29uc3QgaWQgPSBcImxpZmxpZy1jZGsuc2VzLXZlcmlmeS1lbWFpbC5wcm92aWRlclwiXG4gICAgcmV0dXJuIChcbiAgICAgIChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChpZCkgYXMgU2VzVmVyaWZ5RW1haWxQcm92aWRlcikgfHxcbiAgICAgIG5ldyBTZXNWZXJpZnlFbWFpbFByb3ZpZGVyKHN0YWNrLCBpZClcbiAgICApXG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBjci5Qcm92aWRlclxuICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZVRva2VuOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICB0aGlzLnByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsIFwiUHJvdmlkZXJcIiwge1xuICAgICAgb25FdmVudEhhbmRsZXI6IG5ldyBOb2RlanNGdW5jdGlvbih0aGlzLCBcIkZ1bmN0aW9uXCIsIHtcbiAgICAgICAgZW50cnk6IHJlcXVpcmUucmVzb2x2ZShcIi4vaGFuZGxlclwiKSxcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICBhd3NTZGtDb25uZWN0aW9uUmV1c2U6IGZhbHNlLFxuICAgICAgICBpbml0aWFsUG9saWN5OiBbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1wic2VzOkRlbGV0ZUlkZW50aXR5XCIsIFwic2VzOlZlcmlmeUVtYWlsSWRlbnRpdHlcIl0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICB9KVxuXG4gICAgdGhpcy5zZXJ2aWNlVG9rZW4gPSB0aGlzLnByb3ZpZGVyLnNlcnZpY2VUb2tlblxuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liflig/cdk",
3
- "version": "2.21.2",
3
+ "version": "2.21.4",
4
4
  "description": "CDK library for Liflig",
5
5
  "repository": {
6
6
  "type": "git",
@@ -40,23 +40,34 @@
40
40
  },
41
41
  "devDependencies": {
42
42
  "@aws-cdk/assert": "2.68.0",
43
+ "@aws-sdk/client-cloudwatch-logs": "3.588.0",
44
+ "@aws-sdk/client-codebuild": "3.588.0",
45
+ "@aws-sdk/client-codepipeline": "3.588.0",
46
+ "@aws-sdk/client-ecs": "3.588.0",
47
+ "@aws-sdk/client-s3": "3.588.0",
48
+ "@aws-sdk/client-secrets-manager": "3.588.0",
49
+ "@aws-sdk/client-ses": "3.588.0",
50
+ "@aws-sdk/client-sesv2": "3.588.0",
51
+ "@aws-sdk/client-sfn": "3.588.0",
52
+ "@aws-sdk/lib-storage": "3.588.0",
43
53
  "@commitlint/cli": "19.3.0",
44
54
  "@commitlint/config-conventional": "19.2.2",
45
55
  "@types/aws-lambda": "8.10.138",
46
56
  "@types/jest": "29.5.12",
47
- "@types/node": "20.12.12",
57
+ "@types/node": "20.14.0",
48
58
  "@typescript-eslint/eslint-plugin": "5.62.0",
49
59
  "@typescript-eslint/parser": "5.62.0",
50
60
  "aws-cdk": "2.141.0",
51
61
  "aws-cdk-lib": "2.141.0",
52
62
  "constructs": "10.3.0",
63
+ "esbuild": "0.21.4",
53
64
  "eslint": "8.57.0",
54
65
  "eslint-config-prettier": "9.1.0",
55
66
  "eslint-plugin-prettier": "5.1.3",
56
67
  "husky": "9.0.11",
57
68
  "jest": "29.7.0",
58
69
  "jest-cdk-snapshot": "2.2.1",
59
- "prettier": "3.2.5",
70
+ "prettier": "3.3.0",
60
71
  "semantic-release": "23.1.1",
61
72
  "ts-jest": "29.1.4",
62
73
  "ts-node": "10.9.2",
@@ -1,63 +0,0 @@
1
- import * as constructs from "constructs";
2
- import * as cdk from "aws-cdk-lib";
3
- interface Props extends cdk.StackProps {
4
- /**
5
- * The role that will be granted permission to assume the deploy
6
- * role. This role must have permission to assume the deploy role.
7
- */
8
- callerRoleArn: string;
9
- /**
10
- * The name that will be used for the deploy role. This is the role
11
- * that the caller will assume in order to have permission to invoke
12
- * the Lambda Functions.
13
- */
14
- roleName: string;
15
- /**
16
- * The bucket used for storing artifacts. This is used to grant
17
- * permission to the role to read artifact. If the bucket is in
18
- * another account, it must have a policy which allows the target
19
- * account to use IAM permissions from target account.
20
- */
21
- artifactsBucketName: string;
22
- startDeployFunctionName: string;
23
- statusFunctionName: string;
24
- /**
25
- * This is the stack name used with `cdk bootstrap` and can e
26
- * found in cdk.json as "toolkitStackName".
27
- */
28
- cdkToolkitStackName: string;
29
- /**
30
- * We pass the CDK context values as they contain feature flags
31
- * used by the CDK CLI.
32
- */
33
- cdkContext: Record<string, string | string[]>;
34
- /**
35
- * The secret containing username and password (or access token)
36
- * for a valid docker user. This is used to access private
37
- * repositories or to handle docker hub's pull rate limiting.
38
- */
39
- dockerCredentialsSecretName?: string;
40
- }
41
- /**
42
- * This construct is responsible for the privileges and logic of
43
- * automatically deploying stack resources in an account.
44
- * Its resources are used from a deployment pipeline.
45
- *
46
- * The deployment is performed by invoking the "start deploy"
47
- * lambda with details of what should be deployed. As this is
48
- * responsible for deploying infrastructure, the principal invoking
49
- * might be able to cause privilege escalation. The principal invoking
50
- * should be assumed to have full administrator access.
51
- *
52
- * The process deploying the infrastructure is locked down so this
53
- * is only possibly by deployment through CloudFormation, and as
54
- * such removes a lot of possible escalation paths (e.g. no role
55
- * can be created by direct API call).
56
- *
57
- * The "status" lambda can be used to poll for completion, and will
58
- * also return logs from the job upon completion.
59
- */
60
- export declare class CdkDeploy extends constructs.Construct {
61
- constructor(scope: constructs.Construct, id: string, props: Props);
62
- }
63
- export {};
@@ -1,175 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CdkDeploy = void 0;
4
- const constructs = require("constructs");
5
- const codebuild = require("aws-cdk-lib/aws-codebuild");
6
- const iam = require("aws-cdk-lib/aws-iam");
7
- const lambda = require("aws-cdk-lib/aws-lambda");
8
- const s3 = require("aws-cdk-lib/aws-s3");
9
- const cdk = require("aws-cdk-lib");
10
- const secretsmanager = require("aws-cdk-lib/aws-secretsmanager");
11
- const start_deploy_handler_1 = require("./start-deploy-handler");
12
- const status_handler_1 = require("./status-handler");
13
- /**
14
- * This construct is responsible for the privileges and logic of
15
- * automatically deploying stack resources in an account.
16
- * Its resources are used from a deployment pipeline.
17
- *
18
- * The deployment is performed by invoking the "start deploy"
19
- * lambda with details of what should be deployed. As this is
20
- * responsible for deploying infrastructure, the principal invoking
21
- * might be able to cause privilege escalation. The principal invoking
22
- * should be assumed to have full administrator access.
23
- *
24
- * The process deploying the infrastructure is locked down so this
25
- * is only possibly by deployment through CloudFormation, and as
26
- * such removes a lot of possible escalation paths (e.g. no role
27
- * can be created by direct API call).
28
- *
29
- * The "status" lambda can be used to poll for completion, and will
30
- * also return logs from the job upon completion.
31
- */
32
- class CdkDeploy extends constructs.Construct {
33
- constructor(scope, id, props) {
34
- super(scope, id);
35
- const account = cdk.Stack.of(this).account;
36
- const region = cdk.Stack.of(this).region;
37
- const artifactsBucket = s3.Bucket.fromBucketName(this, "ArtifactsBucket", props.artifactsBucketName);
38
- const roleToBeAssumed = new iam.Role(this, "Role", {
39
- roleName: props.roleName,
40
- assumedBy: new iam.ArnPrincipal(props.callerRoleArn),
41
- });
42
- // Bucked used for input to CodeBuild.
43
- // We let CloudFormation manage the bucket name.
44
- const codebuildBucket = new s3.Bucket(this, "CodebuildSourceBucket", {
45
- encryption: s3.BucketEncryption.S3_MANAGED,
46
- blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
47
- lifecycleRules: [
48
- {
49
- expiration: cdk.Duration.days(5),
50
- },
51
- ],
52
- });
53
- // The role used for CloudFormation deployment.
54
- const cloudFormationRole = new iam.Role(this, "CloudFormationRole", {
55
- assumedBy: new iam.ServicePrincipal("cloudformation.amazonaws.com"),
56
- managedPolicies: [
57
- // TODO: Can we restrict this a bit more? E.g. look into how Griid has
58
- // limited what the individual stack deployments have permissions to do.
59
- iam.ManagedPolicy.fromAwsManagedPolicyName("AdministratorAccess"),
60
- ],
61
- });
62
- // Replace CodeBuild with ECS task?
63
- // See https://aws.amazon.com/blogs/devops/using-aws-codebuild-to-execute-administrative-tasks/
64
- const codebuildProject = new codebuild.Project(this, "CodebuildProject", {
65
- environment: {
66
- buildImage: props.dockerCredentialsSecretName == null
67
- ? codebuild.LinuxBuildImage.fromDockerRegistry("node:16")
68
- : codebuild.LinuxBuildImage.fromDockerRegistry("node:16", {
69
- secretsManagerCredentials: secretsmanager.Secret.fromSecretNameV2(this, "dockerCredentialsSecretName", props.dockerCredentialsSecretName),
70
- }),
71
- },
72
- buildSpec: codebuild.BuildSpec.fromObject({
73
- version: "0.2",
74
- env: {
75
- variables: {
76
- CDK_DEPLOY_ROLE_ARN: cloudFormationRole.roleArn,
77
- CDK_TOOLKIT_STACK_NAME: props.cdkToolkitStackName,
78
- },
79
- },
80
- phases: {
81
- build: {
82
- commands: [
83
- "npm install -g aws-cdk",
84
- 'cdk --app "$CODEBUILD_SRC_DIR_CLOUDASSEMBLY" --role-arn "$CDK_DEPLOY_ROLE_ARN" --toolkit-stack-name "$CDK_TOOLKIT_STACK_NAME" --require-approval never deploy --exclusively $(cat stack-names.txt)',
85
- ],
86
- },
87
- },
88
- }),
89
- timeout: cdk.Duration.hours(4),
90
- });
91
- // Grant access to CloudFormation.
92
- codebuildProject.addToRolePolicy(new iam.PolicyStatement({
93
- actions: [
94
- // For diff.
95
- "cloudformation:DescribeStacks",
96
- "cloudformation:GetTemplate",
97
- // For deploy.
98
- "cloudformation:CreateChangeSet",
99
- "cloudformation:DeleteStack",
100
- "cloudformation:DescribeChangeSet",
101
- "cloudformation:ExecuteChangeSet",
102
- "cloudformation:DescribeStackEvents",
103
- "cloudformation:DeleteChangeSet",
104
- ],
105
- resources: ["*"],
106
- }));
107
- // Grant access to the CDK Toolkit bucket.
108
- codebuildProject.addToRolePolicy(new iam.PolicyStatement({
109
- actions: [
110
- "s3:GetObject*",
111
- "s3:GetBucket*",
112
- "s3:List*",
113
- "s3:PutObject*",
114
- "s3:Abort*",
115
- "s3:DeleteObject*",
116
- ],
117
- resources: [
118
- `arn:aws:s3:::${props.cdkToolkitStackName.toLowerCase()}-stagingbucket-*`,
119
- ],
120
- }));
121
- artifactsBucket.grantRead(codebuildProject);
122
- cloudFormationRole.grantPassRole(codebuildProject.role);
123
- codebuildBucket.grantReadWrite(codebuildProject);
124
- const startDeployFn = new lambda.Function(this, "StartDeployFunction", {
125
- code: new lambda.InlineCode(`exports.handler = ${start_deploy_handler_1.startDeployHandler.toString()};`),
126
- runtime: lambda.Runtime.NODEJS_16_X,
127
- handler: "index.handler",
128
- functionName: props.startDeployFunctionName,
129
- environment: {
130
- PROJECT_NAME: codebuildProject.projectName,
131
- BUCKET_NAME: codebuildBucket.bucketName,
132
- CDK_CONTEXT: JSON.stringify(props.cdkContext),
133
- },
134
- timeout: cdk.Duration.seconds(30),
135
- });
136
- startDeployFn.grantInvoke(roleToBeAssumed);
137
- codebuildBucket.grantReadWrite(startDeployFn);
138
- startDeployFn.addToRolePolicy(new iam.PolicyStatement({
139
- actions: ["codebuild:StartBuild", "codebuild:BatchGetBuilds"],
140
- resources: [codebuildProject.projectArn],
141
- }));
142
- const statusFn = new lambda.Function(this, "StatusFunction", {
143
- code: new lambda.InlineCode(`exports.handler = ${status_handler_1.statusHandler.toString()};`),
144
- runtime: lambda.Runtime.NODEJS_16_X,
145
- handler: "index.handler",
146
- functionName: props.statusFunctionName,
147
- environment: {
148
- PROJECT_NAME: codebuildProject.projectName,
149
- },
150
- timeout: cdk.Duration.seconds(30),
151
- });
152
- statusFn.grantInvoke(roleToBeAssumed);
153
- statusFn.addToRolePolicy(new iam.PolicyStatement({
154
- actions: ["codebuild:BatchGetBuilds"],
155
- resources: [codebuildProject.projectArn],
156
- }));
157
- statusFn.addToRolePolicy(new iam.PolicyStatement({
158
- actions: ["logs:GetLogEvents"],
159
- resources: [
160
- `arn:aws:logs:${region}:${account}:log-group:/aws/codebuild/${codebuildProject.projectName}:log-stream:*`,
161
- ],
162
- }));
163
- new cdk.CfnOutput(this, "RoleToBeAssumedArn", {
164
- value: roleToBeAssumed.roleArn,
165
- });
166
- new cdk.CfnOutput(this, "StatusFunctionArn", {
167
- value: statusFn.functionArn,
168
- });
169
- new cdk.CfnOutput(this, "StartDeployFunctionArn", {
170
- value: startDeployFn.functionArn,
171
- });
172
- }
173
- }
174
- exports.CdkDeploy = CdkDeploy;
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGstZGVwbG95L2Nkay1kZXBsb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBQ3hDLHVEQUFzRDtBQUN0RCwyQ0FBMEM7QUFDMUMsaURBQWdEO0FBQ2hELHlDQUF3QztBQUN4QyxtQ0FBa0M7QUFDbEMsaUVBQWdFO0FBQ2hFLGlFQUEyRDtBQUMzRCxxREFBZ0Q7QUF5Q2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLFNBQVUsU0FBUSxVQUFVLENBQUMsU0FBUztJQUNqRCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQVk7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDMUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFBO1FBRXhDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUM5QyxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLEtBQUssQ0FBQyxtQkFBbUIsQ0FDMUIsQ0FBQTtRQUVELE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7U0FDckQsQ0FBQyxDQUFBO1FBRUYsc0NBQXNDO1FBQ3RDLGdEQUFnRDtRQUNoRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLHVCQUF1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LENBQUM7Q0FDRjtBQXhMRCw4QkF3TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGNvZGVidWlsZCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZFwiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIlxuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCJcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCJcbmltcG9ydCB7IHN0YXJ0RGVwbG95SGFuZGxlciB9IGZyb20gXCIuL3N0YXJ0LWRlcGxveS1oYW5kbGVyXCJcbmltcG9ydCB7IHN0YXR1c0hhbmRsZXIgfSBmcm9tIFwiLi9zdGF0dXMtaGFuZGxlclwiXG5cbmludGVyZmFjZSBQcm9wcyBleHRlbmRzIGNkay5TdGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgd2lsbCBiZSBncmFudGVkIHBlcm1pc3Npb24gdG8gYXNzdW1lIHRoZSBkZXBsb3lcbiAgICogcm9sZS4gVGhpcyByb2xlIG11c3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgZGVwbG95IHJvbGUuXG4gICAqL1xuICBjYWxsZXJSb2xlQXJuOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZGVwbG95IHJvbGUuIFRoaXMgaXMgdGhlIHJvbGVcbiAgICogdGhhdCB0aGUgY2FsbGVyIHdpbGwgYXNzdW1lIGluIG9yZGVyIHRvIGhhdmUgcGVybWlzc2lvbiB0byBpbnZva2VcbiAgICogdGhlIExhbWJkYSBGdW5jdGlvbnMuXG4gICAqL1xuICByb2xlTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IHVzZWQgZm9yIHN0b3JpbmcgYXJ0aWZhY3RzLiBUaGlzIGlzIHVzZWQgdG8gZ3JhbnRcbiAgICogcGVybWlzc2lvbiB0byB0aGUgcm9sZSB0byByZWFkIGFydGlmYWN0LiBJZiB0aGUgYnVja2V0IGlzIGluXG4gICAqIGFub3RoZXIgYWNjb3VudCwgaXQgbXVzdCBoYXZlIGEgcG9saWN5IHdoaWNoIGFsbG93cyB0aGUgdGFyZ2V0XG4gICAqIGFjY291bnQgdG8gdXNlIElBTSBwZXJtaXNzaW9ucyBmcm9tIHRhcmdldCBhY2NvdW50LlxuICAgKi9cbiAgYXJ0aWZhY3RzQnVja2V0TmFtZTogc3RyaW5nXG4gIHN0YXJ0RGVwbG95RnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgc3RhdHVzRnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIHN0YWNrIG5hbWUgdXNlZCB3aXRoIGBjZGsgYm9vdHN0cmFwYCBhbmQgY2FuIGVcbiAgICogZm91bmQgaW4gY2RrLmpzb24gYXMgXCJ0b29sa2l0U3RhY2tOYW1lXCIuXG4gICAqL1xuICBjZGtUb29sa2l0U3RhY2tOYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFdlIHBhc3MgdGhlIENESyBjb250ZXh0IHZhbHVlcyBhcyB0aGV5IGNvbnRhaW4gZmVhdHVyZSBmbGFnc1xuICAgKiB1c2VkIGJ5IHRoZSBDREsgQ0xJLlxuICAgKi9cbiAgY2RrQ29udGV4dDogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+XG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IGNvbnRhaW5pbmcgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIChvciBhY2Nlc3MgdG9rZW4pXG4gICAqIGZvciBhIHZhbGlkIGRvY2tlciB1c2VyLiBUaGlzIGlzIHVzZWQgdG8gYWNjZXNzIHByaXZhdGVcbiAgICogcmVwb3NpdG9yaWVzIG9yIHRvIGhhbmRsZSBkb2NrZXIgaHViJ3MgcHVsbCByYXRlIGxpbWl0aW5nLlxuICAgKi9cbiAgZG9ja2VyQ3JlZGVudGlhbHNTZWNyZXROYW1lPzogc3RyaW5nXG59XG5cbi8qKlxuICogVGhpcyBjb25zdHJ1Y3QgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBwcml2aWxlZ2VzIGFuZCBsb2dpYyBvZlxuICogYXV0b21hdGljYWxseSBkZXBsb3lpbmcgc3RhY2sgcmVzb3VyY2VzIGluIGFuIGFjY291bnQuXG4gKiBJdHMgcmVzb3VyY2VzIGFyZSB1c2VkIGZyb20gYSBkZXBsb3ltZW50IHBpcGVsaW5lLlxuICpcbiAqIFRoZSBkZXBsb3ltZW50IGlzIHBlcmZvcm1lZCBieSBpbnZva2luZyB0aGUgXCJzdGFydCBkZXBsb3lcIlxuICogbGFtYmRhIHdpdGggZGV0YWlscyBvZiB3aGF0IHNob3VsZCBiZSBkZXBsb3llZC4gQXMgdGhpcyBpc1xuICogcmVzcG9uc2libGUgZm9yIGRlcGxveWluZyBpbmZyYXN0cnVjdHVyZSwgdGhlIHByaW5jaXBhbCBpbnZva2luZ1xuICogbWlnaHQgYmUgYWJsZSB0byBjYXVzZSBwcml2aWxlZ2UgZXNjYWxhdGlvbi4gVGhlIHByaW5jaXBhbCBpbnZva2luZ1xuICogc2hvdWxkIGJlIGFzc3VtZWQgdG8gaGF2ZSBmdWxsIGFkbWluaXN0cmF0b3IgYWNjZXNzLlxuICpcbiAqIFRoZSBwcm9jZXNzIGRlcGxveWluZyB0aGUgaW5mcmFzdHJ1Y3R1cmUgaXMgbG9ja2VkIGRvd24gc28gdGhpc1xuICogaXMgb25seSBwb3NzaWJseSBieSBkZXBsb3ltZW50IHRocm91Z2ggQ2xvdWRGb3JtYXRpb24sIGFuZCBhc1xuICogc3VjaCByZW1vdmVzIGEgbG90IG9mIHBvc3NpYmxlIGVzY2FsYXRpb24gcGF0aHMgKGUuZy4gbm8gcm9sZVxuICogY2FuIGJlIGNyZWF0ZWQgYnkgZGlyZWN0IEFQSSBjYWxsKS5cbiAqXG4gKiBUaGUgXCJzdGF0dXNcIiBsYW1iZGEgY2FuIGJlIHVzZWQgdG8gcG9sbCBmb3IgY29tcGxldGlvbiwgYW5kIHdpbGxcbiAqIGFsc28gcmV0dXJuIGxvZ3MgZnJvbSB0aGUgam9iIHVwb24gY29tcGxldGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENka0RlcGxveSBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBhY2NvdW50ID0gY2RrLlN0YWNrLm9mKHRoaXMpLmFjY291bnRcbiAgICBjb25zdCByZWdpb24gPSBjZGsuU3RhY2sub2YodGhpcykucmVnaW9uXG5cbiAgICBjb25zdCBhcnRpZmFjdHNCdWNrZXQgPSBzMy5CdWNrZXQuZnJvbUJ1Y2tldE5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgXCJBcnRpZmFjdHNCdWNrZXRcIixcbiAgICAgIHByb3BzLmFydGlmYWN0c0J1Y2tldE5hbWUsXG4gICAgKVxuXG4gICAgY29uc3Qgcm9sZVRvQmVBc3N1bWVkID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiUm9sZVwiLCB7XG4gICAgICByb2xlTmFtZTogcHJvcHMucm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQXJuUHJpbmNpcGFsKHByb3BzLmNhbGxlclJvbGVBcm4pLFxuICAgIH0pXG5cbiAgICAvLyBCdWNrZWQgdXNlZCBmb3IgaW5wdXQgdG8gQ29kZUJ1aWxkLlxuICAgIC8vIFdlIGxldCBDbG91ZEZvcm1hdGlvbiBtYW5hZ2UgdGhlIGJ1Y2tldCBuYW1lLlxuICAgIGNvbnN0IGNvZGVidWlsZEJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgXCJDb2RlYnVpbGRTb3VyY2VCdWNrZXRcIiwge1xuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IHMzLkJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBleHBpcmF0aW9uOiBjZGsuRHVyYXRpb24uZGF5cyg1KSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIC8vIFRoZSByb2xlIHVzZWQgZm9yIENsb3VkRm9ybWF0aW9uIGRlcGxveW1lbnQuXG4gICAgY29uc3QgY2xvdWRGb3JtYXRpb25Sb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiQ2xvdWRGb3JtYXRpb25Sb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiY2xvdWRmb3JtYXRpb24uYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICAvLyBUT0RPOiBDYW4gd2UgcmVzdHJpY3QgdGhpcyBhIGJpdCBtb3JlPyBFLmcuIGxvb2sgaW50byBob3cgR3JpaWQgaGFzXG4gICAgICAgIC8vICBsaW1pdGVkIHdoYXQgdGhlIGluZGl2aWR1YWwgc3RhY2sgZGVwbG95bWVudHMgaGF2ZSBwZXJtaXNzaW9ucyB0byBkby5cbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFwiQWRtaW5pc3RyYXRvckFjY2Vzc1wiKSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIC8vIFJlcGxhY2UgQ29kZUJ1aWxkIHdpdGggRUNTIHRhc2s/XG4gICAgLy8gU2VlIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vYmxvZ3MvZGV2b3BzL3VzaW5nLWF3cy1jb2RlYnVpbGQtdG8tZXhlY3V0ZS1hZG1pbmlzdHJhdGl2ZS10YXNrcy9cbiAgICBjb25zdCBjb2RlYnVpbGRQcm9qZWN0ID0gbmV3IGNvZGVidWlsZC5Qcm9qZWN0KHRoaXMsIFwiQ29kZWJ1aWxkUHJvamVjdFwiLCB7XG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBidWlsZEltYWdlOlxuICAgICAgICAgIHByb3BzLmRvY2tlckNyZWRlbnRpYWxzU2VjcmV0TmFtZSA9PSBudWxsXG4gICAgICAgICAgICA/IGNvZGVidWlsZC5MaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KFwibm9kZToxNlwiKVxuICAgICAgICAgICAgOiBjb2RlYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShcIm5vZGU6MTZcIiwge1xuICAgICAgICAgICAgICAgIHNlY3JldHNNYW5hZ2VyQ3JlZGVudGlhbHM6XG4gICAgICAgICAgICAgICAgICBzZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgXCJkb2NrZXJDcmVkZW50aWFsc1NlY3JldE5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuZG9ja2VyQ3JlZGVudGlhbHNTZWNyZXROYW1lLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAgYnVpbGRTcGVjOiBjb2RlYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3Qoe1xuICAgICAgICB2ZXJzaW9uOiBcIjAuMlwiLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIENES19ERVBMT1lfUk9MRV9BUk46IGNsb3VkRm9ybWF0aW9uUm9sZS5yb2xlQXJuLFxuICAgICAgICAgICAgQ0RLX1RPT0xLSVRfU1RBQ0tfTkFNRTogcHJvcHMuY2RrVG9vbGtpdFN0YWNrTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwaGFzZXM6IHtcbiAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgICAgXCJucG0gaW5zdGFsbCAtZyBhd3MtY2RrXCIsXG4gICAgICAgICAgICAgICdjZGsgLS1hcHAgXCIkQ09ERUJVSUxEX1NSQ19ESVJfQ0xPVURBU1NFTUJMWVwiIC0tcm9sZS1hcm4gXCIkQ0RLX0RFUExPWV9ST0xFX0FSTlwiIC0tdG9vbGtpdC1zdGFjay1uYW1lIFwiJENES19UT09MS0lUX1NUQUNLX05BTUVcIiAtLXJlcXVpcmUtYXBwcm92YWwgbmV2ZXIgZGVwbG95IC0tZXhjbHVzaXZlbHkgJChjYXQgc3RhY2stbmFtZXMudHh0KScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5ob3Vycyg0KSxcbiAgICB9KVxuXG4gICAgLy8gR3JhbnQgYWNjZXNzIHRvIENsb3VkRm9ybWF0aW9uLlxuICAgIGNvZGVidWlsZFByb2plY3QuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgLy8gRm9yIGRpZmYuXG4gICAgICAgICAgXCJjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrc1wiLFxuICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246R2V0VGVtcGxhdGVcIixcbiAgICAgICAgICAvLyBGb3IgZGVwbG95LlxuICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0XCIsXG4gICAgICAgICAgXCJjbG91ZGZvcm1hdGlvbjpEZWxldGVTdGFja1wiLFxuICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246RGVzY3JpYmVDaGFuZ2VTZXRcIixcbiAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkV4ZWN1dGVDaGFuZ2VTZXRcIixcbiAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tFdmVudHNcIixcbiAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldFwiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICB9KSxcbiAgICApXG5cbiAgICAvLyBHcmFudCBhY2Nlc3MgdG8gdGhlIENESyBUb29sa2l0IGJ1Y2tldC5cbiAgICBjb2RlYnVpbGRQcm9qZWN0LmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwiczM6R2V0T2JqZWN0KlwiLFxuICAgICAgICAgIFwiczM6R2V0QnVja2V0KlwiLFxuICAgICAgICAgIFwiczM6TGlzdCpcIixcbiAgICAgICAgICBcInMzOlB1dE9iamVjdCpcIixcbiAgICAgICAgICBcInMzOkFib3J0KlwiLFxuICAgICAgICAgIFwiczM6RGVsZXRlT2JqZWN0KlwiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBgYXJuOmF3czpzMzo6OiR7cHJvcHMuY2RrVG9vbGtpdFN0YWNrTmFtZS50b0xvd2VyQ2FzZSgpfS1zdGFnaW5nYnVja2V0LSpgLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKVxuXG4gICAgYXJ0aWZhY3RzQnVja2V0LmdyYW50UmVhZChjb2RlYnVpbGRQcm9qZWN0KVxuXG4gICAgY2xvdWRGb3JtYXRpb25Sb2xlLmdyYW50UGFzc1JvbGUoY29kZWJ1aWxkUHJvamVjdC5yb2xlISlcblxuICAgIGNvZGVidWlsZEJ1Y2tldC5ncmFudFJlYWRXcml0ZShjb2RlYnVpbGRQcm9qZWN0KVxuXG4gICAgY29uc3Qgc3RhcnREZXBsb3lGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJTdGFydERlcGxveUZ1bmN0aW9uXCIsIHtcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuSW5saW5lQ29kZShcbiAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7c3RhcnREZXBsb3lIYW5kbGVyLnRvU3RyaW5nKCl9O2AsXG4gICAgICApLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHMuc3RhcnREZXBsb3lGdW5jdGlvbk5hbWUsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBQUk9KRUNUX05BTUU6IGNvZGVidWlsZFByb2plY3QucHJvamVjdE5hbWUsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBjb2RlYnVpbGRCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgQ0RLX0NPTlRFWFQ6IEpTT04uc3RyaW5naWZ5KHByb3BzLmNka0NvbnRleHQpLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICB9KVxuXG4gICAgc3RhcnREZXBsb3lGbi5ncmFudEludm9rZShyb2xlVG9CZUFzc3VtZWQpXG4gICAgY29kZWJ1aWxkQnVja2V0LmdyYW50UmVhZFdyaXRlKHN0YXJ0RGVwbG95Rm4pXG5cbiAgICBzdGFydERlcGxveUZuLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wiY29kZWJ1aWxkOlN0YXJ0QnVpbGRcIiwgXCJjb2RlYnVpbGQ6QmF0Y2hHZXRCdWlsZHNcIl0sXG4gICAgICAgIHJlc291cmNlczogW2NvZGVidWlsZFByb2plY3QucHJvamVjdEFybl0sXG4gICAgICB9KSxcbiAgICApXG5cbiAgICBjb25zdCBzdGF0dXNGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJTdGF0dXNGdW5jdGlvblwiLCB7XG4gICAgICBjb2RlOiBuZXcgbGFtYmRhLklubGluZUNvZGUoXG4gICAgICAgIGBleHBvcnRzLmhhbmRsZXIgPSAke3N0YXR1c0hhbmRsZXIudG9TdHJpbmcoKX07YCxcbiAgICAgICksXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgZnVuY3Rpb25OYW1lOiBwcm9wcy5zdGF0dXNGdW5jdGlvbk5hbWUsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBQUk9KRUNUX05BTUU6IGNvZGVidWlsZFByb2plY3QucHJvamVjdE5hbWUsXG4gICAgICB9LFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgIH0pXG5cbiAgICBzdGF0dXNGbi5ncmFudEludm9rZShyb2xlVG9CZUFzc3VtZWQpXG5cbiAgICBzdGF0dXNGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcImNvZGVidWlsZDpCYXRjaEdldEJ1aWxkc1wiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbY29kZWJ1aWxkUHJvamVjdC5wcm9qZWN0QXJuXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIHN0YXR1c0ZuLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wibG9nczpHZXRMb2dFdmVudHNcIl0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGBhcm46YXdzOmxvZ3M6JHtyZWdpb259OiR7YWNjb3VudH06bG9nLWdyb3VwOi9hd3MvY29kZWJ1aWxkLyR7Y29kZWJ1aWxkUHJvamVjdC5wcm9qZWN0TmFtZX06bG9nLXN0cmVhbToqYCxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwiUm9sZVRvQmVBc3N1bWVkQXJuXCIsIHtcbiAgICAgIHZhbHVlOiByb2xlVG9CZUFzc3VtZWQucm9sZUFybixcbiAgICB9KVxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwiU3RhdHVzRnVuY3Rpb25Bcm5cIiwge1xuICAgICAgdmFsdWU6IHN0YXR1c0ZuLmZ1bmN0aW9uQXJuLFxuICAgIH0pXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgXCJTdGFydERlcGxveUZ1bmN0aW9uQXJuXCIsIHtcbiAgICAgIHZhbHVlOiBzdGFydERlcGxveUZuLmZ1bmN0aW9uQXJuLFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==