cdk-nextjs 0.5.3 → 0.5.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 (33) hide show
  1. package/.jsii +80 -6
  2. package/.jsii.tabl.json +1 -1
  3. package/CLAUDE.md +76 -0
  4. package/assets/lambdas/post-deploy/post-deploy.lambda/index.js +5 -1
  5. package/lib/adapter/adapter.mjs +5 -1
  6. package/lib/adapter/cache-handler.js +24 -21
  7. package/lib/adapter/cache-handler.mjs +15748 -17466
  8. package/lib/adapter/cache-handler.test.js +5 -2
  9. package/lib/adapter/local-file-cache-handler.js +6 -2
  10. package/lib/adapter/memory-cache-handler.js +63 -4
  11. package/lib/adapter/s3-cache-handler.js +10 -3
  12. package/lib/lambdas/post-deploy/post-deploy-function.js +36 -3
  13. package/lib/lambdas/post-deploy/post-deploy.lambda.js +5 -2
  14. package/lib/lambdas/post-deploy/prune-cache-bucket.js +5 -2
  15. package/lib/lambdas/post-deploy/prune-revalidation-table.js +5 -2
  16. package/lib/lambdas/post-deploy/prune-s3.js +5 -2
  17. package/lib/nextjs-api.js +10 -4
  18. package/lib/nextjs-build/nextjs-build.js +41 -5
  19. package/lib/nextjs-build/patch-fetch.js +1 -1
  20. package/lib/nextjs-build/patch-fetch.test.d.ts +1 -0
  21. package/lib/nextjs-build/patch-fetch.test.js +168 -0
  22. package/lib/nextjs-cache.js +7 -4
  23. package/lib/nextjs-compute/nextjs-containers.js +7 -4
  24. package/lib/nextjs-compute/nextjs-functions.js +5 -4
  25. package/lib/nextjs-distribution.js +34 -26
  26. package/lib/nextjs-post-deploy.js +5 -4
  27. package/lib/nextjs-static-assets.js +6 -4
  28. package/lib/root-constructs/nextjs-base-construct.js +9 -4
  29. package/lib/root-constructs/nextjs-global-containers.js +6 -4
  30. package/lib/root-constructs/nextjs-global-functions.js +6 -4
  31. package/lib/root-constructs/nextjs-regional-containers.js +5 -4
  32. package/lib/root-constructs/nextjs-regional-functions.js +6 -4
  33. package/package.json +21 -23
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const cache_handler_1 = require("./cache-handler");
6
+ const cache_handler_1 = __importDefault(require("./cache-handler"));
4
7
  // Mock AWS SDK clients
5
8
  jest.mock("@aws-sdk/client-s3");
6
9
  jest.mock("@aws-sdk/client-dynamodb");
@@ -112,4 +115,4 @@ describe("CdkNextjsCacheHandler - Orchestrator Pattern", () => {
112
115
  });
113
116
  });
114
117
  });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtaGFuZGxlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXIvY2FjaGUtaGFuZGxlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0EsbURBQW9EO0FBRXBELHVCQUF1QjtBQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBRXRDLFFBQVEsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7SUFDNUQsSUFBSSxZQUFtQyxDQUFDO0lBRXhDLE1BQU0saUJBQWlCLEdBQUcsR0FBd0IsRUFBRSxDQUFDLENBQUM7UUFDcEQsR0FBRyxFQUFFLEtBQUs7UUFDVixlQUFlLEVBQUUsRUFBRTtRQUNuQixlQUFlLEVBQUUsRUFBRTtLQUNwQixDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXpELE1BQU0sV0FBVyxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFDeEMsWUFBWSxHQUFHLElBQUksdUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixvQkFBb0I7UUFDcEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDO1FBQ2xELHNFQUFzRTtRQUN0RSw2Q0FBNkM7UUFDNUMsdUJBQTZCLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ3pELHVCQUE2QixDQUFDLHFCQUFx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RyxFQUFFO1lBQ2pFLDZCQUE2QjtZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyx3QkFBd0IsQ0FBQztZQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDO1lBRW5ELE1BQU0sV0FBVyxHQUFHLGlCQUFpQixFQUFFLENBQUM7WUFDeEMsTUFBTSxZQUFZLEdBQUcsSUFBSSx1QkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUU1RCxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFbkMsV0FBVztZQUNYLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDOUIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDJEQUEyRCxFQUFFLEdBQUcsRUFBRTtZQUNuRSw4REFBOEQ7WUFDOUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUU5QixNQUFNLFdBQVcsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sY0FBYyxHQUFHLElBQUksdUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFOUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IHsgQ2FjaGVIYW5kbGVyQ29udGV4dCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi9pbmNyZW1lbnRhbC1jYWNoZVwiO1xuaW1wb3J0IHtcbiAgSW5jcmVtZW50YWxDYWNoZVZhbHVlLFxuICBDYWNoZWRSb3V0ZUtpbmQsXG4gIEluY3JlbWVudGFsQ2FjaGVLaW5kLFxufSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yZXNwb25zZS1jYWNoZVwiO1xuaW1wb3J0IENka05leHRqc0NhY2hlSGFuZGxlciBmcm9tIFwiLi9jYWNoZS1oYW5kbGVyXCI7XG5cbi8vIE1vY2sgQVdTIFNESyBjbGllbnRzXG5qZXN0Lm1vY2soXCJAYXdzLXNkay9jbGllbnQtczNcIik7XG5qZXN0Lm1vY2soXCJAYXdzLXNkay9jbGllbnQtZHluYW1vZGJcIik7XG5cbmRlc2NyaWJlKFwiQ2RrTmV4dGpzQ2FjaGVIYW5kbGVyIC0gT3JjaGVzdHJhdG9yIFBhdHRlcm5cIiwgKCkgPT4ge1xuICBsZXQgY2FjaGVIYW5kbGVyOiBDZGtOZXh0anNDYWNoZUhhbmRsZXI7XG5cbiAgY29uc3QgY3JlYXRlTW9ja0NvbnRleHQgPSAoKTogQ2FjaGVIYW5kbGVyQ29udGV4dCA9PiAoe1xuICAgIGRldjogZmFsc2UsXG4gICAgcmV2YWxpZGF0ZWRUYWdzOiBbXSxcbiAgICBfcmVxdWVzdEhlYWRlcnM6IHt9LFxuICB9KTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAvLyBTdXBwcmVzcyBleHBlY3RlZCB3YXJuaW5ncyB3aGVuIGVudiB2YXJzIGFyZSBub3Qgc2V0XG4gICAgamVzdC5zcHlPbihjb25zb2xlLCBcIndhcm5cIikubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KTtcblxuICAgIGNvbnN0IG1vY2tDb250ZXh0ID0gY3JlYXRlTW9ja0NvbnRleHQoKTtcbiAgICBjYWNoZUhhbmRsZXIgPSBuZXcgQ2RrTmV4dGpzQ2FjaGVIYW5kbGVyKG1vY2tDb250ZXh0KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBqZXN0LmNsZWFyQWxsTW9ja3MoKTtcbiAgICBqZXN0LnJlc3RvcmVBbGxNb2NrcygpO1xuICAgIC8vIENsZWFuIHVwIGVudiB2YXJzXG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LkNES19ORVhUSlNfTUVNT1JZX0NBQ0hFX1RUTF9NUztcbiAgICAvLyBSZXNldCBzaW5nbGV0b24gaGFuZGxlcnMgYnkgYWNjZXNzaW5nIHRoZSBjbGFzcydzIHN0YXRpYyBwcm9wZXJ0aWVzXG4gICAgLy8gVGhpcyBlbnN1cmVzIGVhY2ggdGVzdCBnZXRzIGZyZXNoIGhhbmRsZXJzXG4gICAgKENka05leHRqc0NhY2hlSGFuZGxlciBhcyBhbnkpLnNoYXJlZE1lbW9yeUhhbmRsZXIgPSBudWxsO1xuICAgIChDZGtOZXh0anNDYWNoZUhhbmRsZXIgYXMgYW55KS5zaGFyZWRTM0R5bmFtb0hhbmRsZXIgPSBudWxsO1xuICB9KTtcblxuICBkZXNjcmliZShcIk9yY2hlc3RyYXRvciBQYXR0ZXJuICYgSW5pdGlhbGl6YXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGluaXRpYWxpemUgYXMgb3JjaGVzdHJhdG9yIHdpdGggcnVudGltZSBoYW5kbGVyc1wiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoY2FjaGVIYW5kbGVyKS50b0JlRGVmaW5lZCgpO1xuICAgICAgLy8gUnVudGltZSBtb2RlIC0gbWVtb3J5IGFuZCBTMy9EeW5hbW9EQiBoYW5kbGVycyBzaG91bGQgYmUgYXZhaWxhYmxlXG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiT3JjaGVzdHJhdG9yOiBNZW1vcnkgKyBTMy9EeW5hbW9EQlwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgd3JpdGUgdG8gYm90aCBtZW1vcnkgYW5kIFMzL0R5bmFtb0RCIG9uIHNldFwiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0ZXN0RGF0YTogSW5jcmVtZW50YWxDYWNoZVZhbHVlID0ge1xuICAgICAgICBraW5kOiBDYWNoZWRSb3V0ZUtpbmQuQVBQX1BBR0UsXG4gICAgICAgIGh0bWw6IFwiPGh0bWw+dGVzdDwvaHRtbD5cIixcbiAgICAgICAgcnNjRGF0YTogdW5kZWZpbmVkLFxuICAgICAgICBoZWFkZXJzOiB1bmRlZmluZWQsXG4gICAgICAgIHBvc3Rwb25lZDogdW5kZWZpbmVkLFxuICAgICAgICBzZWdtZW50RGF0YTogdW5kZWZpbmVkLFxuICAgICAgICBzdGF0dXM6IHVuZGVmaW5lZCxcbiAgICAgIH07XG5cbiAgICAgIC8vIFNldCBjYWNoZSBlbnRyeVxuICAgICAgYXdhaXQgY2FjaGVIYW5kbGVyLnNldChcInRlc3Qta2V5XCIsIHRlc3REYXRhLCB7XG4gICAgICAgIGZldGNoQ2FjaGU6IHRydWUgYXMgY29uc3QsXG4gICAgICAgIHRhZ3M6IFtdLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEdldCBzaG91bGQgcmV0dXJuIGZyb20gbWVtb3J5XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWNoZUhhbmRsZXIuZ2V0KFwidGVzdC1rZXlcIiwge1xuICAgICAgICBraW5kOiBJbmNyZW1lbnRhbENhY2hlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgaXNGYWxsYmFjazogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvQmVOdWxsKCk7XG4gICAgICBleHBlY3QocmVzdWx0Py52YWx1ZSkudG9FcXVhbCh0ZXN0RGF0YSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgY2FjaGUgbWlzc2VzIGdyYWNlZnVsbHlcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gR2V0IG5vbi1leGlzdGVudCBrZXlcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhY2hlSGFuZGxlci5nZXQoXCJtaXNzaW5nLWtleVwiLCB7XG4gICAgICAgIGtpbmQ6IEluY3JlbWVudGFsQ2FjaGVLaW5kLkFQUF9QQUdFLFxuICAgICAgICBpc0ZhbGxiYWNrOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTaG91bGQgcmV0dXJuIG51bGwgKGJvdGggbWVtb3J5IGFuZCBTMyBtaXNzKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3BhZ2F0ZSByZXNldFJlcXVlc3RDYWNoZSB0byBtZW1vcnkgbGF5ZXJcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdGVzdERhdGE6IEluY3JlbWVudGFsQ2FjaGVWYWx1ZSA9IHtcbiAgICAgICAga2luZDogQ2FjaGVkUm91dGVLaW5kLkFQUF9QQUdFLFxuICAgICAgICBodG1sOiBcIjxodG1sPnJlc2V0PC9odG1sPlwiLFxuICAgICAgICByc2NEYXRhOiB1bmRlZmluZWQsXG4gICAgICAgIGhlYWRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgcG9zdHBvbmVkOiB1bmRlZmluZWQsXG4gICAgICAgIHNlZ21lbnREYXRhOiB1bmRlZmluZWQsXG4gICAgICAgIHN0YXR1czogdW5kZWZpbmVkLFxuICAgICAgfTtcblxuICAgICAgLy8gQWRkIGVudHJ5XG4gICAgICBhd2FpdCBjYWNoZUhhbmRsZXIuc2V0KFwicmVzZXQta2V5XCIsIHRlc3REYXRhLCB7XG4gICAgICAgIGZldGNoQ2FjaGU6IHRydWUgYXMgY29uc3QsXG4gICAgICAgIHRhZ3M6IFtcInJlc2V0LXRhZ1wiXSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBSZXNldFxuICAgICAgYXdhaXQgY2FjaGVIYW5kbGVyLnJlc2V0UmVxdWVzdENhY2hlKCk7XG5cbiAgICAgIC8vIFZlcmlmeSBlbnRyeSBpcyBnb25lIGZyb20gbWVtb3J5XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWNoZUhhbmRsZXIuZ2V0KFwicmVzZXQta2V5XCIsIHtcbiAgICAgICAga2luZDogSW5jcmVtZW50YWxDYWNoZUtpbmQuQVBQX1BBR0UsXG4gICAgICAgIGlzRmFsbGJhY2s6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlTnVsbCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkJ1aWxkLXRpbWUgYmVoYXZpb3JcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGluaXRpYWxpemUgbG9jYWwgZmlsZSBjYWNoZSBoYW5kbGVyIGR1cmluZyBidWlsZFwiLCAoKSA9PiB7XG4gICAgICAvLyBTZXQgYnVpbGQtdGltZSBlbnZpcm9ubWVudFxuICAgICAgcHJvY2Vzcy5lbnYuTkVYVF9QSEFTRSA9IFwicGhhc2UtcHJvZHVjdGlvbi1idWlsZFwiO1xuICAgICAgcHJvY2Vzcy5lbnYuQ0RLX05FWFRKU19CVUlMRF9JRCA9IFwidGVzdC1idWlsZC0xMjNcIjtcblxuICAgICAgY29uc3QgbW9ja0NvbnRleHQgPSBjcmVhdGVNb2NrQ29udGV4dCgpO1xuICAgICAgY29uc3QgYnVpbGRIYW5kbGVyID0gbmV3IENka05leHRqc0NhY2hlSGFuZGxlcihtb2NrQ29udGV4dCk7XG5cbiAgICAgIGV4cGVjdChidWlsZEhhbmRsZXIpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICAgIC8vIENsZWFuIHVwXG4gICAgICBkZWxldGUgcHJvY2Vzcy5lbnYuTkVYVF9QSEFTRTtcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5DREtfTkVYVEpTX0JVSUxEX0lEO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaW5pdGlhbGl6ZSBydW50aW1lIGhhbmRsZXJzIHdoZW4gbm90IGluIGJ1aWxkIG1vZGVcIiwgKCkgPT4ge1xuICAgICAgLy8gUnVudGltZSBlbnZpcm9ubWVudCAoTkVYVF9QSEFTRSBub3Qgc2V0IG9yIGRpZmZlcmVudCB2YWx1ZSlcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5ORVhUX1BIQVNFO1xuXG4gICAgICBjb25zdCBtb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KCk7XG4gICAgICBjb25zdCBydW50aW1lSGFuZGxlciA9IG5ldyBDZGtOZXh0anNDYWNoZUhhbmRsZXIobW9ja0NvbnRleHQpO1xuXG4gICAgICBleHBlY3QocnVudGltZUhhbmRsZXIpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtaGFuZGxlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXIvY2FjaGUtaGFuZGxlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBT0Esb0VBQW9EO0FBRXBELHVCQUF1QjtBQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBRXRDLFFBQVEsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7SUFDNUQsSUFBSSxZQUFtQyxDQUFDO0lBRXhDLE1BQU0saUJBQWlCLEdBQUcsR0FBd0IsRUFBRSxDQUFDLENBQUM7UUFDcEQsR0FBRyxFQUFFLEtBQUs7UUFDVixlQUFlLEVBQUUsRUFBRTtRQUNuQixlQUFlLEVBQUUsRUFBRTtLQUNwQixDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXpELE1BQU0sV0FBVyxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFDeEMsWUFBWSxHQUFHLElBQUksdUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixvQkFBb0I7UUFDcEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDO1FBQ2xELHNFQUFzRTtRQUN0RSw2Q0FBNkM7UUFDNUMsdUJBQTZCLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ3pELHVCQUE2QixDQUFDLHFC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R0FBRyxFQUFFO1lBQ2pFLDZCQUE2QjtZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyx3QkFBd0IsQ0FBQztZQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDO1lBRW5ELE1BQU0sV0FBVyxHQUFHLGlCQUFpQixFQUFFLENBQUM7WUFDeEMsTUFBTSxZQUFZLEdBQUcsSUFBSSx1QkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUU1RCxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFbkMsV0FBVztZQUNYLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDOUIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDJEQUEyRCxFQUFFLEdBQUcsRUFBRTtZQUNuRSw4REFBOEQ7WUFDOUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUU5QixNQUFNLFdBQVcsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sY0FBYyxHQUFHLElBQUksdUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFOUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IHsgQ2FjaGVIYW5kbGVyQ29udGV4dCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi9pbmNyZW1lbnRhbC1jYWNoZVwiO1xuaW1wb3J0IHtcbiAgSW5jcmVtZW50YWxDYWNoZVZhbHVlLFxuICBDYWNoZWRSb3V0ZUtpbmQsXG4gIEluY3JlbWVudGFsQ2FjaGVLaW5kLFxufSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yZXNwb25zZS1jYWNoZVwiO1xuaW1wb3J0IENka05leHRqc0NhY2hlSGFuZGxlciBmcm9tIFwiLi9jYWNoZS1oYW5kbGVyXCI7XG5cbi8vIE1vY2sgQVdTIFNESyBjbGllbnRzXG5qZXN0Lm1vY2soXCJAYXdzLXNkay9jbGllbnQtczNcIik7XG5qZXN0Lm1vY2soXCJAYXdzLXNkay9jbGllbnQtZHluYW1vZGJcIik7XG5cbmRlc2NyaWJlKFwiQ2RrTmV4dGpzQ2FjaGVIYW5kbGVyIC0gT3JjaGVzdHJhdG9yIFBhdHRlcm5cIiwgKCkgPT4ge1xuICBsZXQgY2FjaGVIYW5kbGVyOiBDZGtOZXh0anNDYWNoZUhhbmRsZXI7XG5cbiAgY29uc3QgY3JlYXRlTW9ja0NvbnRleHQgPSAoKTogQ2FjaGVIYW5kbGVyQ29udGV4dCA9PiAoe1xuICAgIGRldjogZmFsc2UsXG4gICAgcmV2YWxpZGF0ZWRUYWdzOiBbXSxcbiAgICBfcmVxdWVzdEhlYWRlcnM6IHt9LFxuICB9KTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAvLyBTdXBwcmVzcyBleHBlY3RlZCB3YXJuaW5ncyB3aGVuIGVudiB2YXJzIGFyZSBub3Qgc2V0XG4gICAgamVzdC5zcHlPbihjb25zb2xlLCBcIndhcm5cIikubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KTtcblxuICAgIGNvbnN0IG1vY2tDb250ZXh0ID0gY3JlYXRlTW9ja0NvbnRleHQoKTtcbiAgICBjYWNoZUhhbmRsZXIgPSBuZXcgQ2RrTmV4dGpzQ2FjaGVIYW5kbGVyKG1vY2tDb250ZXh0KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBqZXN0LmNsZWFyQWxsTW9ja3MoKTtcbiAgICBqZXN0LnJlc3RvcmVBbGxNb2NrcygpO1xuICAgIC8vIENsZWFuIHVwIGVudiB2YXJzXG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LkNES19ORVhUSlNfTUVNT1JZX0NBQ0hFX1RUTF9NUztcbiAgICAvLyBSZXNldCBzaW5nbGV0b24gaGFuZGxlcnMgYnkgYWNjZXNzaW5nIHRoZSBjbGFzcydzIHN0YXRpYyBwcm9wZXJ0aWVzXG4gICAgLy8gVGhpcyBlbnN1cmVzIGVhY2ggdGVzdCBnZXRzIGZyZXNoIGhhbmRsZXJzXG4gICAgKENka05leHRqc0NhY2hlSGFuZGxlciBhcyBhbnkpLnNoYXJlZE1lbW9yeUhhbmRsZXIgPSBudWxsO1xuICAgIChDZGtOZXh0anNDYWNoZUhhbmRsZXIgYXMgYW55KS5zaGFyZWRTM0R5bmFtb0hhbmRsZXIgPSBudWxsO1xuICB9KTtcblxuICBkZXNjcmliZShcIk9yY2hlc3RyYXRvciBQYXR0ZXJuICYgSW5pdGlhbGl6YXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGluaXRpYWxpemUgYXMgb3JjaGVzdHJhdG9yIHdpdGggcnVudGltZSBoYW5kbGVyc1wiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoY2FjaGVIYW5kbGVyKS50b0JlRGVmaW5lZCgpO1xuICAgICAgLy8gUnVudGltZSBtb2RlIC0gbWVtb3J5IGFuZCBTMy9EeW5hbW9EQiBoYW5kbGVycyBzaG91bGQgYmUgYXZhaWxhYmxlXG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiT3JjaGVzdHJhdG9yOiBNZW1vcnkgKyBTMy9EeW5hbW9EQlwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgd3JpdGUgdG8gYm90aCBtZW1vcnkgYW5kIFMzL0R5bmFtb0RCIG9uIHNldFwiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0ZXN0RGF0YTogSW5jcmVtZW50YWxDYWNoZVZhbHVlID0ge1xuICAgICAgICBraW5kOiBDYWNoZWRSb3V0ZUtpbmQuQVBQX1BBR0UsXG4gICAgICAgIGh0bWw6IFwiPGh0bWw+dGVzdDwvaHRtbD5cIixcbiAgICAgICAgcnNjRGF0YTogdW5kZWZpbmVkLFxuICAgICAgICBoZWFkZXJzOiB1bmRlZmluZWQsXG4gICAgICAgIHBvc3Rwb25lZDogdW5kZWZpbmVkLFxuICAgICAgICBzZWdtZW50RGF0YTogdW5kZWZpbmVkLFxuICAgICAgICBzdGF0dXM6IHVuZGVmaW5lZCxcbiAgICAgIH07XG5cbiAgICAgIC8vIFNldCBjYWNoZSBlbnRyeVxuICAgICAgYXdhaXQgY2FjaGVIYW5kbGVyLnNldChcInRlc3Qta2V5XCIsIHRlc3REYXRhLCB7XG4gICAgICAgIGZldGNoQ2FjaGU6IHRydWUgYXMgY29uc3QsXG4gICAgICAgIHRhZ3M6IFtdLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEdldCBzaG91bGQgcmV0dXJuIGZyb20gbWVtb3J5XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWNoZUhhbmRsZXIuZ2V0KFwidGVzdC1rZXlcIiwge1xuICAgICAgICBraW5kOiBJbmNyZW1lbnRhbENhY2hlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgaXNGYWxsYmFjazogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvQmVOdWxsKCk7XG4gICAgICBleHBlY3QocmVzdWx0Py52YWx1ZSkudG9FcXVhbCh0ZXN0RGF0YSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgY2FjaGUgbWlzc2VzIGdyYWNlZnVsbHlcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gR2V0IG5vbi1leGlzdGVudCBrZXlcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhY2hlSGFuZGxlci5nZXQoXCJtaXNzaW5nLWtleVwiLCB7XG4gICAgICAgIGtpbmQ6IEluY3JlbWVudGFsQ2FjaGVLaW5kLkFQUF9QQUdFLFxuICAgICAgICBpc0ZhbGxiYWNrOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTaG91bGQgcmV0dXJuIG51bGwgKGJvdGggbWVtb3J5IGFuZCBTMyBtaXNzKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3BhZ2F0ZSByZXNldFJlcXVlc3RDYWNoZSB0byBtZW1vcnkgbGF5ZXJcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdGVzdERhdGE6IEluY3JlbWVudGFsQ2FjaGVWYWx1ZSA9IHtcbiAgICAgICAga2luZDogQ2FjaGVkUm91dGVLaW5kLkFQUF9QQUdFLFxuICAgICAgICBodG1sOiBcIjxodG1sPnJlc2V0PC9odG1sPlwiLFxuICAgICAgICByc2NEYXRhOiB1bmRlZmluZWQsXG4gICAgICAgIGhlYWRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgcG9zdHBvbmVkOiB1bmRlZmluZWQsXG4gICAgICAgIHNlZ21lbnREYXRhOiB1bmRlZmluZWQsXG4gICAgICAgIHN0YXR1czogdW5kZWZpbmVkLFxuICAgICAgfTtcblxuICAgICAgLy8gQWRkIGVudHJ5XG4gICAgICBhd2FpdCBjYWNoZUhhbmRsZXIuc2V0KFwicmVzZXQta2V5XCIsIHRlc3REYXRhLCB7XG4gICAgICAgIGZldGNoQ2FjaGU6IHRydWUgYXMgY29uc3QsXG4gICAgICAgIHRhZ3M6IFtcInJlc2V0LXRhZ1wiXSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBSZXNldFxuICAgICAgYXdhaXQgY2FjaGVIYW5kbGVyLnJlc2V0UmVxdWVzdENhY2hlKCk7XG5cbiAgICAgIC8vIFZlcmlmeSBlbnRyeSBpcyBnb25lIGZyb20gbWVtb3J5XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWNoZUhhbmRsZXIuZ2V0KFwicmVzZXQta2V5XCIsIHtcbiAgICAgICAga2luZDogSW5jcmVtZW50YWxDYWNoZUtpbmQuQVBQX1BBR0UsXG4gICAgICAgIGlzRmFsbGJhY2s6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlTnVsbCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkJ1aWxkLXRpbWUgYmVoYXZpb3JcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGluaXRpYWxpemUgbG9jYWwgZmlsZSBjYWNoZSBoYW5kbGVyIGR1cmluZyBidWlsZFwiLCAoKSA9PiB7XG4gICAgICAvLyBTZXQgYnVpbGQtdGltZSBlbnZpcm9ubWVudFxuICAgICAgcHJvY2Vzcy5lbnYuTkVYVF9QSEFTRSA9IFwicGhhc2UtcHJvZHVjdGlvbi1idWlsZFwiO1xuICAgICAgcHJvY2Vzcy5lbnYuQ0RLX05FWFRKU19CVUlMRF9JRCA9IFwidGVzdC1idWlsZC0xMjNcIjtcblxuICAgICAgY29uc3QgbW9ja0NvbnRleHQgPSBjcmVhdGVNb2NrQ29udGV4dCgpO1xuICAgICAgY29uc3QgYnVpbGRIYW5kbGVyID0gbmV3IENka05leHRqc0NhY2hlSGFuZGxlcihtb2NrQ29udGV4dCk7XG5cbiAgICAgIGV4cGVjdChidWlsZEhhbmRsZXIpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICAgIC8vIENsZWFuIHVwXG4gICAgICBkZWxldGUgcHJvY2Vzcy5lbnYuTkVYVF9QSEFTRTtcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5DREtfTkVYVEpTX0JVSUxEX0lEO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaW5pdGlhbGl6ZSBydW50aW1lIGhhbmRsZXJzIHdoZW4gbm90IGluIGJ1aWxkIG1vZGVcIiwgKCkgPT4ge1xuICAgICAgLy8gUnVudGltZSBlbnZpcm9ubWVudCAoTkVYVF9QSEFTRSBub3Qgc2V0IG9yIGRpZmZlcmVudCB2YWx1ZSlcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5ORVhUX1BIQVNFO1xuXG4gICAgICBjb25zdCBtb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KCk7XG4gICAgICBjb25zdCBydW50aW1lSGFuZGxlciA9IG5ldyBDZGtOZXh0anNDYWNoZUhhbmRsZXIobW9ja0NvbnRleHQpO1xuXG4gICAgICBleHBlY3QocnVudGltZUhhbmRsZXIpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.LocalFileCacheHandler = void 0;
4
7
  /*
@@ -11,7 +14,7 @@ exports.LocalFileCacheHandler = void 0;
11
14
  /* eslint-disable import/no-extraneous-dependencies */
12
15
  const fs_1 = require("fs");
13
16
  const path_1 = require("path");
14
- const debug_1 = require("debug");
17
+ const debug_1 = __importDefault(require("debug"));
15
18
  const cache_utils_1 = require("./cache-utils");
16
19
  const debug = (0, debug_1.default)("cdk-nextjs:cache-handler:local-file");
17
20
  /**
@@ -19,6 +22,7 @@ const debug = (0, debug_1.default)("cdk-nextjs:cache-handler:local-file");
19
22
  * to be deployed to S3 later via BucketDeployment
20
23
  */
21
24
  class LocalFileCacheHandler {
25
+ cacheDir;
22
26
  constructor() {
23
27
  // Read cache directory from environment variable set by NextjsBuild
24
28
  // Falls back to default location for backward compatibility
@@ -80,4 +84,4 @@ class LocalFileCacheHandler {
80
84
  }
81
85
  }
82
86
  exports.LocalFileCacheHandler = LocalFileCacheHandler;
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZmlsZS1jYWNoZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXIvbG9jYWwtZmlsZS1jYWNoZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7RUFNRTtBQUNGLHNEQUFzRDtBQUN0RCwyQkFBMEQ7QUFDMUQsK0JBQXFDO0FBQ3JDLGlDQUE2QjtBQUc3QiwrQ0FBb0Q7QUFFcEQsTUFBTSxLQUFLLEdBQUcsSUFBQSxlQUFRLEVBQUMscUNBQXFDLENBQUMsQ0FBQztBQUU5RDs7O0dBR0c7QUFDSCxNQUFhLHFCQUFxQjtJQUdoQztRQUNFLG9FQUFvRTtRQUNwRSw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QjtZQUNuRCxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUI7WUFDdkMsQ0FBQyxDQUFDLElBQUEsV0FBSSxFQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUUxRCw0RkFBNEY7UUFDNUYsSUFBQSxjQUFTLEVBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLEtBQUssQ0FBQyxrQ0FBa0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGFBQWEsQ0FBQyxRQUFnQjtRQUNwQyxNQUFNLFFBQVEsR0FBRyxJQUFBLFdBQUksRUFBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsUUFBUSxPQUFPLENBQUMsQ0FBQztRQUN6RCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUNQLFFBQWdCLEVBQ2hCLElBQWtDLEVBQ2xDLElBQWU7UUFFZixJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTlDLHVDQUF1QztZQUN2QyxNQUFNLEdBQUcsR0FBRyxJQUFBLGNBQU8sRUFBQyxRQUFRLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsSUFBQSxlQUFVLEVBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDckIsSUFBQSxjQUFTLEVBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUVELCtDQUErQztZQUMvQyxNQUFNLGlCQUFpQixHQUFzQjtnQkFDM0MsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hCLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQztZQUVGLDRDQUE0QztZQUM1QyxNQUFNLFlBQVksR0FBRztnQkFDbkIsR0FBRyxpQkFBaUI7Z0JBQ3BCLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTthQUNqQixDQUFDO1lBRUYsNkRBQTZEO1lBQzdELE1BQU0sVUFBVSxHQUFHLElBQUEsaUNBQW1CLEVBQUMsWUFBWSxDQUFDLENBQUM7WUFFckQsZ0JBQWdCO1lBQ2hCLElBQUEsa0JBQWEsRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRTdDLEtBQUssQ0FBQywyQkFBMkIsUUFBUSxPQUFPLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxRQUFRLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RSw0REFBNEQ7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBNUVELHNEQTRFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gIExvY2FsIEZpbGUgQ2FjaGUgSGFuZGxlciBmb3IgTmV4dC5qcyBidWlsZC10aW1lIHByZS1jYWNoaW5nXG4gIFxuICBXcml0ZXMgY2FjaGUgZW50cmllcyB0byAubmV4dC9jZGstbmV4dGpzLWNhY2hlLWhhbmRsZXIve2NhY2hlS2V5fS5qc29uXG4gIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyBzbyB0aGV5IGNhbiBiZSBkZXBsb3llZCB0byBTMyB2aWEgQnVja2V0RGVwbG95bWVudC5cbiAgQnVja2V0RGVwbG95bWVudCB3aWxsIGFkZCB0aGUgYnVpbGRJZCBwcmVmaXggd2hlbiB1cGxvYWRpbmcgdG8gUzMuXG4qL1xuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGdldERlYnVnIGZyb20gXCJkZWJ1Z1wiO1xuaW1wb3J0IHsgQ2FjaGVIYW5kbGVyVmFsdWUgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9saWIvaW5jcmVtZW50YWwtY2FjaGVcIjtcbmltcG9ydCB0eXBlIHsgSW5jcmVtZW50YWxDYWNoZVZhbHVlIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcmVzcG9uc2UtY2FjaGVcIjtcbmltcG9ydCB7IHNlcmlhbGl6ZUNhY2hlVmFsdWUgfSBmcm9tIFwiLi9jYWNoZS11dGlsc1wiO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKFwiY2RrLW5leHRqczpjYWNoZS1oYW5kbGVyOmxvY2FsLWZpbGVcIik7XG5cbi8qKlxuICogTG9jYWwgZmlsZSBjYWNoZSBoYW5kbGVyIHRoYXQgd3JpdGVzIGNhY2hlIGVudHJpZXMgZHVyaW5nIE5leHQuanMgYnVpbGRcbiAqIHRvIGJlIGRlcGxveWVkIHRvIFMzIGxhdGVyIHZpYSBCdWNrZXREZXBsb3ltZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBMb2NhbEZpbGVDYWNoZUhhbmRsZXIge1xuICBwcml2YXRlIGNhY2hlRGlyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gUmVhZCBjYWNoZSBkaXJlY3RvcnkgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZSBzZXQgYnkgTmV4dGpzQnVpbGRcbiAgICAvLyBGYWxscyBiYWNrIHRvIGRlZmF1bHQgbG9jYXRpb24gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICB0aGlzLmNhY2hlRGlyID0gcHJvY2Vzcy5lbnYuQ0RLX05FWFRKU19JTklUX0NBQ0hFX0RJUlxuICAgICAgPyBwcm9jZXNzLmVudi5DREtfTkVYVEpTX0lOSVRfQ0FDSEVfRElSXG4gICAgICA6IGpvaW4ocHJvY2Vzcy5jd2QoKSwgXCIubmV4dFwiLCBcImNkay1uZXh0anMtaW5pdC1jYWNoZVwiKTtcblxuICAgIC8vIENyZWF0ZSBmcmVzaCBjYWNoZSBkaXJlY3Rvcnk7IGNhY2hlIGRpcmVjdG9yeSBpcyBjbGVhbmVkIGJlZm9yZSBlYWNoIGJ1aWxkIGluIE5leHRqc0J1aWxkXG4gICAgbWtkaXJTeW5jKHRoaXMuY2FjaGVEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGRlYnVnKGBDcmVhdGVkIGxvY2FsIGNhY2hlIGRpcmVjdG9yeTogJHt0aGlzLmNhY2hlRGlyfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGZpbGUgcGF0aCBmb3IgY2FjaGUgZW50cnlcbiAgICogU3RydWN0dXJlOiB7Y2FjaGVLZXl9Lmpzb24gKEJ1Y2tldERlcGxveW1lbnQgd2lsbCBhZGQgYnVpbGRJZCBwcmVmaXgpXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkRmlsZVBhdGgoY2FjaGVLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBqb2luKHRoaXMuY2FjaGVEaXIsIGAke2NhY2hlS2V5fS5qc29uYCk7XG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIGNhY2hlIGVudHJ5IHRvIGxvY2FsIGZpbGVcbiAgICovXG4gIGFzeW5jIHNldChcbiAgICBjYWNoZUtleTogc3RyaW5nLFxuICAgIGRhdGE6IEluY3JlbWVudGFsQ2FjaGVWYWx1ZSB8IG51bGwsXG4gICAgdGFncz86IHN0cmluZ1tdLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmJ1aWxkRmlsZVBhdGgoY2FjaGVLZXkpO1xuXG4gICAgICAvLyBDcmVhdGUgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgIGNvbnN0IGRpciA9IGRpcm5hbWUoZmlsZVBhdGgpO1xuICAgICAgaWYgKCFleGlzdHNTeW5jKGRpcikpIHtcbiAgICAgICAgbWtkaXJTeW5jKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIENyZWF0ZSBDYWNoZUhhbmRsZXJWYWx1ZSBzdHJ1Y3R1cmUgd2l0aCB0YWdzXG4gICAgICBjb25zdCBjYWNoZUhhbmRsZXJWYWx1ZTogQ2FjaGVIYW5kbGVyVmFsdWUgPSB7XG4gICAgICAgIGxhc3RNb2RpZmllZDogRGF0ZS5ub3coKSxcbiAgICAgICAgdmFsdWU6IGRhdGEsXG4gICAgICB9O1xuXG4gICAgICAvLyBTdG9yZSB3aXRoIHRhZ3MgZm9yIHJldmFsaWRhdGlvbiBjaGVja2luZ1xuICAgICAgY29uc3Qgc3RvcmFnZVZhbHVlID0ge1xuICAgICAgICAuLi5jYWNoZUhhbmRsZXJWYWx1ZSxcbiAgICAgICAgdGFnczogdGFncyB8fCBbXSxcbiAgICAgIH07XG5cbiAgICAgIC8vIFNlcmlhbGl6ZSB0byBKU09OIHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgTWFwIGFuZCBCdWZmZXJcbiAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBzZXJpYWxpemVDYWNoZVZhbHVlKHN0b3JhZ2VWYWx1ZSk7XG5cbiAgICAgIC8vIFdyaXRlIHRvIGZpbGVcbiAgICAgIHdyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGpzb25TdHJpbmcsIFwidXRmLThcIik7XG5cbiAgICAgIGRlYnVnKGBMT0NBTCBGSUxFIENBQ0hFIFdSSVRFOiAke2NhY2hlS2V5fSAtPiAke2ZpbGVQYXRofWApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBFcnJvciB3cml0aW5nIGxvY2FsIGNhY2hlIGZpbGUgZm9yICR7Y2FjaGVLZXl9OmAsIGVycm9yKTtcbiAgICAgIC8vIERvbid0IHRocm93IC0gYnVpbGQgc2hvdWxkIGNvbnRpbnVlIGV2ZW4gaWYgY2FjaGluZyBmYWlsc1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY2FjaGUgZGlyZWN0b3J5IHBhdGhcbiAgICovXG4gIGdldENhY2hlRGlyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVEaXI7XG4gIH1cbn1cbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZmlsZS1jYWNoZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXIvbG9jYWwtZmlsZS1jYWNoZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7Ozs7RUFNRTtBQUNGLHNEQUFzRDtBQUN0RCwyQkFBMEQ7QUFDMUQsK0JBQXFDO0FBQ3JDLGtEQUE2QjtBQUc3QiwrQ0FBb0Q7QUFFcEQsTUFBTSxLQUFLLEdBQUcsSUFBQSxlQUFRLEVBQUMscUNBQXFDLENBQUMsQ0FBQztBQUU5RDs7O0dBR0c7QUFDSCxNQUFhLHFCQUFxQjtJQUN4QixRQUFRLENBQVM7SUFFekI7UUFDRSxvRUFBb0U7UUFDcEUsNERBQTREO1FBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUI7WUFDbkQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCO1lBQ3ZDLENBQUMsQ0FBQyxJQUFBLFdBQUksRUFBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFMUQsNEZBQTRGO1FBQzVGLElBQUEsY0FBUyxFQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5QyxLQUFLLENBQUMsa0NBQWtDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7O09BR0c7SUFDSyxhQUFhLENBQUMsUUFBZ0I7UUFDcEMsTUFBTSxRQUFRLEdBQUcsSUFBQSxXQUFJLEVBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLFFBQVEsT0FBTyxDQUFDLENBQUM7UUFDekQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FDUCxRQUFnQixFQUNoQixJQUFrQyxFQUNsQyxJQUFlO1FBRWYsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUU5Qyx1Q0FBdUM7WUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBQSxjQUFPLEVBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLElBQUEsZUFBVSxFQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLElBQUEsY0FBUyxFQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7WUFFRCwrQ0FBK0M7WUFDL0MsTUFBTSxpQkFBaUIsR0FBc0I7Z0JBQzNDLFlBQVksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUN4QixLQUFLLEVBQUUsSUFBSTthQUNaLENBQUM7WUFFRiw0Q0FBNEM7WUFDNUMsTUFBTSxZQUFZLEdBQUc7Z0JBQ25CLEdBQUcsaUJBQWlCO2dCQUNwQixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7YUFDakIsQ0FBQztZQUVGLDZEQUE2RDtZQUM3RCxNQUFNLFVBQVUsR0FBRyxJQUFBLGlDQUFtQixFQUFDLFlBQVksQ0FBQyxDQUFDO1lBRXJELGdCQUFnQjtZQUNoQixJQUFBLGtCQUFhLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUU3QyxLQUFLLENBQUMsMkJBQTJCLFFBQVEsT0FBTyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsUUFBUSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEUsNERBQTREO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQTVFRCxzREE0RUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBMb2NhbCBGaWxlIENhY2hlIEhhbmRsZXIgZm9yIE5leHQuanMgYnVpbGQtdGltZSBwcmUtY2FjaGluZ1xuICBcbiAgV3JpdGVzIGNhY2hlIGVudHJpZXMgdG8gLm5leHQvY2RrLW5leHRqcy1jYWNoZS1oYW5kbGVyL3tjYWNoZUtleX0uanNvblxuICBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3Mgc28gdGhleSBjYW4gYmUgZGVwbG95ZWQgdG8gUzMgdmlhIEJ1Y2tldERlcGxveW1lbnQuXG4gIEJ1Y2tldERlcGxveW1lbnQgd2lsbCBhZGQgdGhlIGJ1aWxkSWQgcHJlZml4IHdoZW4gdXBsb2FkaW5nIHRvIFMzLlxuKi9cbi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCBnZXREZWJ1ZyBmcm9tIFwiZGVidWdcIjtcbmltcG9ydCB7IENhY2hlSGFuZGxlclZhbHVlIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL2luY3JlbWVudGFsLWNhY2hlXCI7XG5pbXBvcnQgdHlwZSB7IEluY3JlbWVudGFsQ2FjaGVWYWx1ZSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3Jlc3BvbnNlLWNhY2hlXCI7XG5pbXBvcnQgeyBzZXJpYWxpemVDYWNoZVZhbHVlIH0gZnJvbSBcIi4vY2FjaGUtdXRpbHNcIjtcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZyhcImNkay1uZXh0anM6Y2FjaGUtaGFuZGxlcjpsb2NhbC1maWxlXCIpO1xuXG4vKipcbiAqIExvY2FsIGZpbGUgY2FjaGUgaGFuZGxlciB0aGF0IHdyaXRlcyBjYWNoZSBlbnRyaWVzIGR1cmluZyBOZXh0LmpzIGJ1aWxkXG4gKiB0byBiZSBkZXBsb3llZCB0byBTMyBsYXRlciB2aWEgQnVja2V0RGVwbG95bWVudFxuICovXG5leHBvcnQgY2xhc3MgTG9jYWxGaWxlQ2FjaGVIYW5kbGVyIHtcbiAgcHJpdmF0ZSBjYWNoZURpcjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIFJlYWQgY2FjaGUgZGlyZWN0b3J5IGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGUgc2V0IGJ5IE5leHRqc0J1aWxkXG4gICAgLy8gRmFsbHMgYmFjayB0byBkZWZhdWx0IGxvY2F0aW9uIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgdGhpcy5jYWNoZURpciA9IHByb2Nlc3MuZW52LkNES19ORVhUSlNfSU5JVF9DQUNIRV9ESVJcbiAgICAgID8gcHJvY2Vzcy5lbnYuQ0RLX05FWFRKU19JTklUX0NBQ0hFX0RJUlxuICAgICAgOiBqb2luKHByb2Nlc3MuY3dkKCksIFwiLm5leHRcIiwgXCJjZGstbmV4dGpzLWluaXQtY2FjaGVcIik7XG5cbiAgICAvLyBDcmVhdGUgZnJlc2ggY2FjaGUgZGlyZWN0b3J5OyBjYWNoZSBkaXJlY3RvcnkgaXMgY2xlYW5lZCBiZWZvcmUgZWFjaCBidWlsZCBpbiBOZXh0anNCdWlsZFxuICAgIG1rZGlyU3luYyh0aGlzLmNhY2hlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBkZWJ1ZyhgQ3JlYXRlZCBsb2NhbCBjYWNoZSBkaXJlY3Rvcnk6ICR7dGhpcy5jYWNoZURpcn1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBmaWxlIHBhdGggZm9yIGNhY2hlIGVudHJ5XG4gICAqIFN0cnVjdHVyZToge2NhY2hlS2V5fS5qc29uIChCdWNrZXREZXBsb3ltZW50IHdpbGwgYWRkIGJ1aWxkSWQgcHJlZml4KVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEZpbGVQYXRoKGNhY2hlS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gam9pbih0aGlzLmNhY2hlRGlyLCBgJHtjYWNoZUtleX0uanNvbmApO1xuICAgIHJldHVybiBmaWxlUGF0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSBjYWNoZSBlbnRyeSB0byBsb2NhbCBmaWxlXG4gICAqL1xuICBhc3luYyBzZXQoXG4gICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICBkYXRhOiBJbmNyZW1lbnRhbENhY2hlVmFsdWUgfCBudWxsLFxuICAgIHRhZ3M/OiBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghZGF0YSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5idWlsZEZpbGVQYXRoKGNhY2hlS2V5KTtcblxuICAgICAgLy8gQ3JlYXRlIGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICBjb25zdCBkaXIgPSBkaXJuYW1lKGZpbGVQYXRoKTtcbiAgICAgIGlmICghZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgICAgIG1rZGlyU3luYyhkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgQ2FjaGVIYW5kbGVyVmFsdWUgc3RydWN0dXJlIHdpdGggdGFnc1xuICAgICAgY29uc3QgY2FjaGVIYW5kbGVyVmFsdWU6IENhY2hlSGFuZGxlclZhbHVlID0ge1xuICAgICAgICBsYXN0TW9kaWZpZWQ6IERhdGUubm93KCksXG4gICAgICAgIHZhbHVlOiBkYXRhLFxuICAgICAgfTtcblxuICAgICAgLy8gU3RvcmUgd2l0aCB0YWdzIGZvciByZXZhbGlkYXRpb24gY2hlY2tpbmdcbiAgICAgIGNvbnN0IHN0b3JhZ2VWYWx1ZSA9IHtcbiAgICAgICAgLi4uY2FjaGVIYW5kbGVyVmFsdWUsXG4gICAgICAgIHRhZ3M6IHRhZ3MgfHwgW10sXG4gICAgICB9O1xuXG4gICAgICAvLyBTZXJpYWxpemUgdG8gSlNPTiB3aXRoIHNwZWNpYWwgaGFuZGxpbmcgZm9yIE1hcCBhbmQgQnVmZmVyXG4gICAgICBjb25zdCBqc29uU3RyaW5nID0gc2VyaWFsaXplQ2FjaGVWYWx1ZShzdG9yYWdlVmFsdWUpO1xuXG4gICAgICAvLyBXcml0ZSB0byBmaWxlXG4gICAgICB3cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBqc29uU3RyaW5nLCBcInV0Zi04XCIpO1xuXG4gICAgICBkZWJ1ZyhgTE9DQUwgRklMRSBDQUNIRSBXUklURTogJHtjYWNoZUtleX0gLT4gJHtmaWxlUGF0aH1gKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihgRXJyb3Igd3JpdGluZyBsb2NhbCBjYWNoZSBmaWxlIGZvciAke2NhY2hlS2V5fTpgLCBlcnJvcik7XG4gICAgICAvLyBEb24ndCB0aHJvdyAtIGJ1aWxkIHNob3VsZCBjb250aW51ZSBldmVuIGlmIGNhY2hpbmcgZmFpbHNcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNhY2hlIGRpcmVjdG9yeSBwYXRoXG4gICAqL1xuICBnZXRDYWNoZURpcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNhY2hlRGlyO1xuICB9XG59XG4iXX0=
@@ -1,15 +1,74 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.MemoryCacheHandler = void 0;
4
7
  /*
5
8
  In-memory cache handler with tag management
6
9
  */
7
10
  /* eslint-disable import/no-extraneous-dependencies */
8
- const debug_1 = require("debug");
11
+ const debug_1 = __importDefault(require("debug"));
9
12
  class MemoryCacheHandler {
13
+ inMemoryCache = new Map();
14
+ debug = (0, debug_1.default)("cdk-nextjs:cache-handler:memory");
15
+ /**
16
+ * Time to live in milliseconds for cache entries.
17
+ * After this duration, entries expire and are removed from the cache.
18
+ *
19
+ * **Important**: Due to the distributed nature of compute instances (Lambda functions,
20
+ * ECS Fargate containers, etc.), this cache only provides eventual consistency across
21
+ * instances. Tag revalidations will clear the cache on the instance that processes
22
+ * the revalidation, but other instances may serve stale data until their cache entries expire.
23
+ *
24
+ * @example
25
+ * // Short TTL (5 minutes) - for frequently changing data
26
+ * ttlMs = 5 * 60 * 1000;
27
+ *
28
+ * @example
29
+ * // Medium TTL (1 hour) - balanced between freshness and performance
30
+ * ttlMs = 60 * 60 * 1000;
31
+ *
32
+ * @example
33
+ * // Long TTL (24 hours) - for mostly static content
34
+ * ttlMs = 24 * 60 * 60 * 1000;
35
+ *
36
+ * **Why adjust this?**
37
+ * - Lower values: More cache misses, fresher data, higher S3/DynamoDB costs
38
+ * - Higher values: Fewer cache misses, better performance, but longer stale data windows
39
+ *
40
+ * Set via environment variable: `CDK_NEXTJS_MEMORY_CACHE_TTL_MS`
41
+ */
42
+ ttlMs;
43
+ /**
44
+ * Maximum number of cache entries to store in memory.
45
+ * When this limit is reached, the least recently used (LRU) entry is evicted.
46
+ *
47
+ * @example
48
+ * // Small cache (100 entries) - minimal memory footprint for simple apps
49
+ * maxEntries = 100;
50
+ *
51
+ * @example
52
+ * // Medium cache (1000 entries) - good balance for typical applications
53
+ * maxEntries = 1000;
54
+ *
55
+ * @example
56
+ * // Large cache (10000 entries) - for high-traffic apps with many unique pages
57
+ * maxEntries = 10000;
58
+ *
59
+ * **Why adjust this?**
60
+ * - Lower values: Less memory usage, more cache evictions
61
+ * - Higher values: More memory usage, fewer cache evictions, better hit rates
62
+ *
63
+ * **Memory considerations**: Each entry stores the full cache value (HTML, JSON, etc.)
64
+ * A typical page cache might be 10-100KB, so 1000 entries ≈ 10-100MB of memory.
65
+ * Consider your compute environment's memory limits (Lambda: 128MB-10GB, Fargate: 512MB-30GB)
66
+ * and size accordingly.
67
+ *
68
+ * Set via environment variable: `CDK_NEXTJS_MEMORY_CACHE_MAX_ENTRIES`
69
+ */
70
+ maxEntries;
10
71
  constructor(options) {
11
- this.inMemoryCache = new Map();
12
- this.debug = (0, debug_1.default)("cdk-nextjs:cache-handler:memory");
13
72
  // Read configuration from environment variables with fallback defaults
14
73
  const ttlFromEnv = process.env.CDK_NEXTJS_MEMORY_CACHE_TTL_MS;
15
74
  const maxEntriesFromEnv = process.env.CDK_NEXTJS_MEMORY_CACHE_MAX_ENTRIES;
@@ -127,4 +186,4 @@ class MemoryCacheHandler {
127
186
  }
128
187
  }
129
188
  exports.MemoryCacheHandler = MemoryCacheHandler;
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWNhY2hlLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRhcHRlci9tZW1vcnktY2FjaGUtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7RUFFRTtBQUNGLHNEQUFzRDtBQUN0RCxpQ0FBNkI7QUF1QjdCLE1BQWEsa0JBQWtCO0lBOEQ3QixZQUFZLE9BQWtDO1FBN0R0QyxrQkFBYSxHQUFrQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3pELFVBQUssR0FBRyxJQUFBLGVBQVEsRUFBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBNkQxRCx1RUFBdUU7UUFDdkUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQztRQUM5RCxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUM7UUFFMUUsNkNBQTZDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFNBQVM7UUFDOUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxpQkFBaUI7WUFDakMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVULG1GQUFtRjtRQUNuRixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLG1CQUFtQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsS0FB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YSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELDRDQUE0QztJQUNyQyxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQWxORCxnREFrTkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBJbi1tZW1vcnkgY2FjaGUgaGFuZGxlciB3aXRoIHRhZyBtYW5hZ2VtZW50XG4qL1xuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgZ2V0RGVidWcgZnJvbSBcImRlYnVnXCI7XG5pbXBvcnQge1xuICBDYWNoZUhhbmRsZXIsXG4gIENhY2hlSGFuZGxlclZhbHVlLFxuICBDYWNoZUhhbmRsZXJDb250ZXh0LFxufSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9saWIvaW5jcmVtZW50YWwtY2FjaGVcIjtcbmltcG9ydCB7XG4gIEluY3JlbWVudGFsQ2FjaGVWYWx1ZSxcbiAgR2V0SW5jcmVtZW50YWxGZXRjaENhY2hlQ29udGV4dCxcbiAgR2V0SW5jcmVtZW50YWxSZXNwb25zZUNhY2hlQ29udGV4dCxcbiAgU2V0SW5jcmVtZW50YWxSZXNwb25zZUNhY2hlQ29udGV4dCxcbiAgU2V0SW5jcmVtZW50YWxGZXRjaENhY2hlQ29udGV4dCxcbn0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcmVzcG9uc2UtY2FjaGVcIjtcblxuaW50ZXJmYWNlIE1lbW9yeUNhY2hlRW50cnkge1xuICB2YWx1ZTogQ2FjaGVIYW5kbGVyVmFsdWU7XG4gIGV4cGlyZXNBdDogbnVtYmVyOyAvLyBUaW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVtb3J5Q2FjaGVIYW5kbGVyT3B0aW9ucyB7XG4gIGNvbnRleHQ6IENhY2hlSGFuZGxlckNvbnRleHQ7XG59XG5cbmV4cG9ydCBjbGFzcyBNZW1vcnlDYWNoZUhhbmRsZXIgaW1wbGVtZW50cyBDYWNoZUhhbmRsZXIge1xuICBwcml2YXRlIGluTWVtb3J5Q2FjaGU6IE1hcDxzdHJpbmcsIE1lbW9yeUNhY2hlRW50cnk+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGRlYnVnID0gZ2V0RGVidWcoXCJjZGstbmV4dGpzOmNhY2hlLWhhbmRsZXI6bWVtb3J5XCIpO1xuXG4gIC8qKlxuICAgKiBUaW1lIHRvIGxpdmUgaW4gbWlsbGlzZWNvbmRzIGZvciBjYWNoZSBlbnRyaWVzLlxuICAgKiBBZnRlciB0aGlzIGR1cmF0aW9uLCBlbnRyaWVzIGV4cGlyZSBhbmQgYXJlIHJlbW92ZWQgZnJvbSB0aGUgY2FjaGUuXG4gICAqXG4gICAqICoqSW1wb3J0YW50Kio6IER1ZSB0byB0aGUgZGlzdHJpYnV0ZWQgbmF0dXJlIG9mIGNvbXB1dGUgaW5zdGFuY2VzIChMYW1iZGEgZnVuY3Rpb25zLFxuICAgKiBFQ1MgRmFyZ2F0ZSBjb250YWluZXJzLCBldGMuKSwgdGhpcyBjYWNoZSBvbmx5IHByb3ZpZGVzIGV2ZW50dWFsIGNvbnNpc3RlbmN5IGFjcm9zc1xuICAgKiBpbnN0YW5jZXMuIFRhZyByZXZhbGlkYXRpb25zIHdpbGwgY2xlYXIgdGhlIGNhY2hlIG9uIHRoZSBpbnN0YW5jZSB0aGF0IHByb2Nlc3Nlc1xuICAgKiB0aGUgcmV2YWxpZGF0aW9uLCBidXQgb3RoZXIgaW5zdGFuY2VzIG1heSBzZXJ2ZSBzdGFsZSBkYXRhIHVudGlsIHRoZWlyIGNhY2hlIGVudHJpZXMgZXhwaXJlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBTaG9ydCBUVEwgKDUgbWludXRlcykgLSBmb3IgZnJlcXVlbnRseSBjaGFuZ2luZyBkYXRhXG4gICAqIHR0bE1zID0gNSAqIDYwICogMTAwMDtcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gTWVkaXVtIFRUTCAoMSBob3VyKSAtIGJhbGFuY2VkIGJldHdlZW4gZnJlc2huZXNzIGFuZCBwZXJmb3JtYW5jZVxuICAgKiB0dGxNcyA9IDYwICogNjAgKiAxMDAwO1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBMb25nIFRUTCAoMjQgaG91cnMpIC0gZm9yIG1vc3RseSBzdGF0aWMgY29udGVudFxuICAgKiB0dGxNcyA9IDI0ICogNjAgKiA2MCAqIDEwMDA7XG4gICAqXG4gICAqICoqV2h5IGFkanVzdCB0aGlzPyoqXG4gICAqIC0gTG93ZXIgdmFsdWVzOiBNb3JlIGNhY2hlIG1pc3NlcywgZnJlc2hlciBkYXRhLCBoaWdoZXIgUzMvRHluYW1vREIgY29zdHNcbiAgICogLSBIaWdoZXIgdmFsdWVzOiBGZXdlciBjYWNoZSBtaXNzZXMsIGJldHRlciBwZXJmb3JtYW5jZSwgYnV0IGxvbmdlciBzdGFsZSBkYXRhIHdpbmRvd3NcbiAgICpcbiAgICogU2V0IHZpYSBlbnZpcm9ubWVudCB2YXJpYWJsZTogYENES19ORVhUSlNfTUVNT1JZX0NBQ0hFX1RUTF9NU2BcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdHRsTXM6IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgY2FjaGUgZW50cmllcyB0byBzdG9yZSBpbiBtZW1vcnkuXG4gICAqIFdoZW4gdGhpcyBsaW1pdCBpcyByZWFjaGVkLCB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCAoTFJVKSBlbnRyeSBpcyBldmljdGVkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBTbWFsbCBjYWNoZSAoMTAwIGVudHJpZXMpIC0gbWluaW1hbCBtZW1vcnkgZm9vdHByaW50IGZvciBzaW1wbGUgYXBwc1xuICAgKiBtYXhFbnRyaWVzID0gMTAwO1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBNZWRpdW0gY2FjaGUgKDEwMDAgZW50cmllcykgLSBnb29kIGJhbGFuY2UgZm9yIHR5cGljYWwgYXBwbGljYXRpb25zXG4gICAqIG1heEVudHJpZXMgPSAxMDAwO1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBMYXJnZSBjYWNoZSAoMTAwMDAgZW50cmllcykgLSBmb3IgaGlnaC10cmFmZmljIGFwcHMgd2l0aCBtYW55IHVuaXF1ZSBwYWdlc1xuICAgKiBtYXhFbnRyaWVzID0gMTAwMDA7XG4gICAqXG4gICAqICoqV2h5IGFkanVzdCB0aGlzPyoqXG4gICAqIC0gTG93ZXIgdmFsdWVzOiBMZXNzIG1lbW9yeSB1c2FnZSwgbW9yZSBjYWNoZSBldmljdGlvbnNcbiAgICogLSBIaWdoZXIgdmFsdWVzOiBNb3JlIG1lbW9yeSB1c2FnZSwgZmV3ZXIgY2FjaGUgZXZpY3Rpb25zLCBiZXR0ZXIgaGl0IHJhdGVzXG4gICAqXG4gICAqICoqTWVtb3J5IGNvbnNpZGVyYXRpb25zKio6IEVhY2ggZW50cnkgc3RvcmVzIHRoZSBmdWxsIGNhY2hlIHZhbHVlIChIVE1MLCBKU09OLCBldGMuKVxuICAgKiBBIHR5cGljYWwgcGFnZSBjYWNoZSBtaWdodCBiZSAxMC0xMDBLQiwgc28gMTAwMCBlbnRyaWVzIOKJiCAxMC0xMDBNQiBvZiBtZW1vcnkuXG4gICAqIENvbnNpZGVyIHlvdXIgY29tcHV0ZSBlbnZpcm9ubWVudCdzIG1lbW9yeSBsaW1pdHMgKExhbWJkYTogMTI4TUItMTBHQiwgRmFyZ2F0ZTogNTEyTUItMzBHQilcbiAgICogYW5kIHNpemUgYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIFNldCB2aWEgZW52aXJvbm1lbnQgdmFyaWFibGU6IGBDREtfTkVYVEpTX01FTU9SWV9DQUNIRV9NQVhfRU5UUklFU2BcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4RW50cmllczogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE1lbW9yeUNhY2hlSGFuZGxlck9wdGlvbnMpIHtcbiAgICAvLyBSZWFkIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBmYWxsYmFjayBkZWZhdWx0c1xuICAgIGNvbnN0IHR0bEZyb21FbnYgPSBwcm9jZXNzLmVudi5DREtfTkVYVEpTX01FTU9SWV9DQUNIRV9UVExfTVM7XG4gICAgY29uc3QgbWF4RW50cmllc0Zyb21FbnYgPSBwcm9jZXNzLmVudi5DREtfTkVYVEpTX01FTU9SWV9DQUNIRV9NQVhfRU5UUklFUztcblxuICAgIC8vIERlZmF1bHQgdG8gMSBob3VyIFRUTCBhbmQgMTAwMCBtYXggZW50cmllc1xuICAgIHRoaXMudHRsTXMgPSB0dGxGcm9tRW52ID8gcGFyc2VJbnQodHRsRnJvbUVudiwgMTApIDogNjAgKiA2MCAqIDEwMDA7IC8vIDEgaG91clxuICAgIHRoaXMubWF4RW50cmllcyA9IG1heEVudHJpZXNGcm9tRW52XG4gICAgICA/IHBhcnNlSW50KG1heEVudHJpZXNGcm9tRW52LCAxMClcbiAgICAgIDogMTAwMDtcblxuICAgIC8vIExvZyB0aGUgb3B0aW9ucyBmb3IgZGVidWdnaW5nIChvcHRpb25hbCB1c2FnZSB0byBhdm9pZCB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcpXG4gICAgaWYgKG9wdGlvbnMuY29udGV4dC5kZXYpIHtcbiAgICAgIHRoaXMuZGVidWcoXCJNZW1vcnlDYWNoZUhhbmRsZXIgaW5pdGlhbGl6ZWQgaW4gZGV2ZWxvcG1lbnQgbW9kZVwiKTtcbiAgICB9XG4gICAgdGhpcy5kZWJ1ZyhgVFRMOiAke3RoaXMudHRsTXMgLyAxMDAwfXMsIE1heCBlbnRyaWVzOiAke3RoaXMubWF4RW50cmllc31gKTtcbiAgfVxuXG4gIGFzeW5jIGdldChcbiAgICBjYWNoZUtleTogc3RyaW5nLFxuICAgIGN0eDogR2V0SW5jcmVtZW50YWxGZXRjaENhY2hlQ29udGV4dCB8IEdldEluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUNvbnRleHQsXG4gICk6IFByb21pc2U8Q2FjaGVIYW5kbGVyVmFsdWUgfCBudWxsPiB7XG4gICAgLy8gTG9nIGNvbnRleHQgZm9yIGRlYnVnZ2luZyAob3B0aW9uYWwgdXNhZ2UgdG8gYXZvaWQgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nKVxuICAgIGlmIChjdHgua2luZCkge1xuICAgICAgdGhpcy5kZWJ1ZyhcbiAgICAgICAgYE1lbW9yeSBjYWNoZSBnZXQgb3BlcmF0aW9uIGZvciAke2NhY2hlS2V5fSB3aXRoIGtpbmQ6ICR7Y3R4LmtpbmR9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaW4tbWVtb3J5IGNhY2hlXG4gICAgY29uc3QgbWVtb3J5RW50cnkgPSB0aGlzLmluTWVtb3J5Q2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICBpZiAobWVtb3J5RW50cnkpIHtcbiAgICAgIC8vIENoZWNrIGlmIGV4cGlyZWRcbiAgICAgIGlmIChEYXRlLm5vdygpID4gbWVtb3J5RW50cnkuZXhwaXJlc0F0KSB7XG4gICAgICAgIHRoaXMuZGVidWcoYE1FTU9SWSBDQUNIRSBFWFBJUkVEOiAke2NhY2hlS2V5fWApO1xuICAgICAgICB0aGlzLmluTWVtb3J5Q2FjaGUuZGVsZXRlKGNhY2hlS2V5KTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIE1vdmUgdG8gZW5kIChtb3N0IHJlY2VudGx5IHVzZWQpIGJ5IGRlbGV0aW5nIGFuZCByZS1pbnNlcnRpbmdcbiAgICAgIHRoaXMuaW5NZW1vcnlDYWNoZS5kZWxldGUoY2FjaGVLZXkpO1xuICAgICAgdGhpcy5pbk1lbW9yeUNhY2hlLnNldChjYWNoZUtleSwgbWVtb3J5RW50cnkpO1xuXG4gICAgICB0aGlzLmRlYnVnKGBNRU1PUlkgQ0FDSEUgSElUOiAke2NhY2hlS2V5fWApO1xuICAgICAgcmV0dXJuIG1lbW9yeUVudHJ5LnZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuZGVidWcoYE1FTU9SWSBDQUNIRSBNSVNTOiAke2NhY2hlS2V5fWApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgc2V0KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgZGF0YTogSW5jcmVtZW50YWxDYWNoZVZhbHVlIHwgbnVsbCxcbiAgICBfY3R4OiBTZXRJbmNyZW1lbnRhbEZldGNoQ2FjaGVDb250ZXh0IHwgU2V0SW5jcmVtZW50YWxSZXNwb25zZUNhY2hlQ29udGV4dCxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICAvLyBEZWxldGUgZnJvbSBtZW1vcnkgY2FjaGVcbiAgICAgIHRoaXMuZGVidWcoYE1FTU9SWSBDQUNIRSBERUxFVEU6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICB0aGlzLmluTWVtb3J5Q2FjaGUuZGVsZXRlKGNhY2hlS2V5KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEZWJ1ZyBsb2dnaW5nIGZvciBtZW1vcnkgY2FjaGUgc2V0XG4gICAgdGhpcy5kZWJ1ZyhgTUVNT1JZIENBQ0hFIFNFVDogJHtjYWNoZUtleX0gKCR7ZGF0YS5raW5kfSlgKTtcblxuICAgIC8vIFN0b3JlIGluIG1lbW9yeSBjYWNoZSB3aXRoIHByb3BlciBDYWNoZUhhbmRsZXJWYWx1ZSBzdHJ1Y3R1cmVcbiAgICBjb25zdCBjYWNoZUhhbmRsZXJWYWx1ZTogQ2FjaGVIYW5kbGVyVmFsdWUgPSB7XG4gICAgICBsYXN0TW9kaWZpZWQ6IERhdGUubm93KCksXG4gICAgICB2YWx1ZTogZGF0YSxcbiAgICB9O1xuXG4gICAgY29uc3QgZW50cnk6IE1lbW9yeUNhY2hlRW50cnkgPSB7XG4gICAgICB2YWx1ZTogY2FjaGVIYW5kbGVyVmFsdWUsXG4gICAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyB0aGlzLnR0bE1zLFxuICAgIH07XG5cbiAgICAvLyBDbGVhbiB1cCBleHBpcmVkIGVudHJpZXMgYmVmb3JlIGFkZGluZyBuZXcgb25lXG4gICAgdGhpcy5jbGVhbnVwRXhwaXJlZCgpO1xuXG4gICAgLy8gSWYgd2UncmUgYXQgbWF4IGNhcGFjaXR5LCBldmljdCBvbGRlc3QgZW50cnlcbiAgICBpZiAodGhpcy5pbk1lbW9yeUNhY2hlLnNpemUgPj0gdGhpcy5tYXhFbnRyaWVzKSB7XG4gICAgICB0aGlzLmV2aWN0T2xkZXN0KCk7XG4gICAgfVxuXG4gICAgLy8gQWRkIG5ldyBlbnRyeVxuICAgIHRoaXMuaW5NZW1vcnlDYWNoZS5zZXQoY2FjaGVLZXksIGVudHJ5KTtcblxuICAgIHRoaXMuZGVidWcoYENhY2hlIGVudHJpZXM6ICR7dGhpcy5pbk1lbW9yeUNhY2hlLnNpemV9LyR7dGhpcy5tYXhFbnRyaWVzfWApO1xuICB9XG5cbiAgYXN5bmMgcmV2YWxpZGF0ZVRhZyh0YWc6IHN0cmluZyB8IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdGFncyA9IEFycmF5LmlzQXJyYXkodGFnKSA/IHRhZyA6IFt0YWddO1xuICAgIHRoaXMuZGVidWcoYE1FTU9SWSBSRVZBTElEQVRFIFRBR1MgKG5vLW9wKTogWyR7dGFncy5qb2luKFwiLCBcIil9XWApO1xuICAgIC8vIE1lbW9yeSBjYWNoZSBkb2VzIG5vdCB0cmFjayB0YWdzIGJlY2F1c2U6XG4gICAgLy8gMS4gSW4gZGlzdHJpYnV0ZWQgZW52aXJvbm1lbnRzIChtdWx0aXBsZSBMYW1iZGEgZnVuY3Rpb25zIG9yIEZhcmdhdGUgY29udGFpbmVycyksXG4gICAgLy8gICAgdGFnIHJldmFsaWRhdGlvbiBvbmx5IGNsZWFycyBjYWNoZSBvbiB0aGUgY3VycmVudCBpbnN0YW5jZS4gT3RoZXIgaW5zdGFuY2VzXG4gICAgLy8gICAgd291bGQgY29udGludWUgc2VydmluZyBzdGFsZSBkYXRhIHVudGlsIHRoZWlyIFRUTCBleHBpcmVzIGFueXdheS5cbiAgICAvLyAyLiBUaGUgUzMgY2FjaGUgaGFuZGxlciB3aXRoIER5bmFtb0RCIHByb3ZpZGVzIHRoZSBhdXRob3JpdGF0aXZlIHNvdXJjZSBvZiB0cnV0aFxuICAgIC8vICAgIGZvciB0YWcgcmV2YWxpZGF0aW9ucyBhY3Jvc3MgYWxsIGluc3RhbmNlcy5cbiAgICAvLyAzLiBNZW1vcnkgY2FjaGUgcmVsaWVzIG9uIFRUTC1iYXNlZCBleHBpcmF0aW9uIGZvciBzaW1wbGljaXR5IGFuZCBjb25zaXN0ZW5jeS5cbiAgICAvLyAgICBJZiBzdHJvbmcgY29uc2lzdGVuY3kgaXMgcmVxdWlyZWQsIHNldCBDREtfTkVYVEpTX01FTU9SWV9DQUNIRV9UVExfTVM9MC5cbiAgfVxuXG4gIGFzeW5jIHJlc2V0UmVxdWVzdENhY2hlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIENsZWFyIGluLW1lbW9yeSBjYWNoZVxuICAgIHRoaXMuaW5NZW1vcnlDYWNoZS5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgZXhwaXJlZCBjYWNoZSBlbnRyaWVzXG4gICAqL1xuICBwcml2YXRlIGNsZWFudXBFeHBpcmVkKCk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgbGV0IGV4cGlyZWRDb3VudCA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGVudHJ5XSBvZiB0aGlzLmluTWVtb3J5Q2FjaGUuZW50cmllcygpKSB7XG4gICAgICBpZiAobm93ID4gZW50cnkuZXhwaXJlc0F0KSB7XG4gICAgICAgIHRoaXMuaW5NZW1vcnlDYWNoZS5kZWxldGUoa2V5KTtcbiAgICAgICAgZXhwaXJlZENvdW50Kys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV4cGlyZWRDb3VudCA+IDApIHtcbiAgICAgIHRoaXMuZGVidWcoYENsZWFuZWQgdXAgJHtleHBpcmVkQ291bnR9IGV4cGlyZWQgZW50cmllc2ApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFdmljdCB0aGUgb2xkZXN0IChsZWFzdCByZWNlbnRseSB1c2VkKSBjYWNoZSBlbnRyeVxuICAgKiBNYXAgbWFpbnRhaW5zIGluc2VydGlvbiBvcmRlciwgc28gZmlyc3QgZW50cnkgaXMgb2xkZXN0XG4gICAqL1xuICBwcml2YXRlIGV2aWN0T2xkZXN0KCk6IHZvaWQge1xuICAgIGNvbnN0IGZpcnN0S2V5ID0gdGhpcy5pbk1lbW9yeUNhY2hlLmtleXMoKS5uZXh0KCkudmFsdWU7XG4gICAgaWYgKGZpcnN0S2V5KSB7XG4gICAgICB0aGlzLmRlYnVnKGBNQVggQ0FQQUNJVFkgRVZJQ1QgKExSVSk6ICR7Zmlyc3RLZXl9YCk7XG4gICAgICB0aGlzLmluTWVtb3J5Q2FjaGUuZGVsZXRlKGZpcnN0S2V5KTtcbiAgICB9XG4gIH1cblxuICAvLyBQdWJsaWMgbWV0aG9kcyBmb3IgdGVzdGluZyBhbmQgbW9uaXRvcmluZ1xuICBwdWJsaWMgZ2V0Q2FjaGVTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5NZW1vcnlDYWNoZS5zaXplO1xuICB9XG5cbiAgcHVibGljIGNsZWFyQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5pbk1lbW9yeUNhY2hlLmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWNhY2hlLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRhcHRlci9tZW1vcnktY2FjaGUtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7RUFFRTtBQUNGLHNEQUFzRDtBQUN0RCxrREFBNkI7QUF1QjdCLE1BQWEsa0JBQWtCO0lBQ3JCLGFBQWEsR0FBa0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN6RCxLQUFLLEdBQUcsSUFBQSxlQUFRLEVBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUU1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EwQkc7SUFDYyxLQUFLLENBQVM7SUFFL0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMEJHO0lBQ2MsVUFBVSxDQUFTO0lBRXBDLFlBQVksT0FBa0M7UUFDNUMsdUVBQXVFO1FBQ3ZFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUM7UUFDOUQsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDO1FBRTFFLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxTQUFTO1FBQzlFLElBQUksQ0FBQyxVQUFVLEdBQUcsaUJBQWlCO1lBQ2pDLENBQUMsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFVCxtRkFBbUY7UUFDbkYsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxtQkFBbUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQ1AsUUFBZ0IsRUFDaEIsR0FBeUU7UUFFekUsK0VBQStFO1FBQy9FLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLEtBQUssQ0FDUixrQ0FBa0MsUUFBUSxlQUFlLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FDcEUsQ0FBQztRQUNKLENBQUM7UUFFRCx3QkFBd0I7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixtQkFBbUI7WUFDbkIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEMsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsZ0VBQWdFO1lBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUU5QyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUNQLFFBQWdCLEVBQ2hCLElBQWtDLEVBQ2xDLElBQTBFO1FBRTFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLDJCQUEyQjtZQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BDLE9BQU87UUFDVCxDQUFDO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLFFBQVEsS0FBSyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUUzRCxnRUFBZ0U7UUFDaEUsTUFBTSxpQkFBaUIsR0FBc0I7WUFDM0MsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDeEIsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQXFCO1lBQzlCLEtBQUssRUFBRSxpQkFBaUI7WUFDeEIsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSztTQUNuQyxDQUFDO1FBRUYsaURBQWlEO1FBQ2pELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QiwrQ0FBK0M7UUFDL0MsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFFRCxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQXNCO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRSw0Q0FBNEM7UUFDNUMsb0ZBQW9GO1FBQ3BGLGlGQUFpRjtRQUNqRix1RUFBdUU7UUFDdkUsbUZBQW1GO1FBQ25GLGlEQUFpRDtRQUNqRCxpRkFBaUY7UUFDakYsOEVBQThFO0lBQ2hGLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCO1FBQ3JCLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNLLGNBQWM7UUFDcEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztRQUVyQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3hELElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLFlBQVksRUFBRSxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLFlBQVksa0JBQWtCLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFdBQVc7UUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDeEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsNkJBQTZCLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFRCw0Q0FBNEM7SUFDckMsWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFsTkQsZ0RBa05DIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgSW4tbWVtb3J5IGNhY2hlIGhhbmRsZXIgd2l0aCB0YWcgbWFuYWdlbWVudFxuKi9cbi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IGdldERlYnVnIGZyb20gXCJkZWJ1Z1wiO1xuaW1wb3J0IHtcbiAgQ2FjaGVIYW5kbGVyLFxuICBDYWNoZUhhbmRsZXJWYWx1ZSxcbiAgQ2FjaGVIYW5kbGVyQ29udGV4dCxcbn0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL2luY3JlbWVudGFsLWNhY2hlXCI7XG5pbXBvcnQge1xuICBJbmNyZW1lbnRhbENhY2hlVmFsdWUsXG4gIEdldEluY3JlbWVudGFsRmV0Y2hDYWNoZUNvbnRleHQsXG4gIEdldEluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUNvbnRleHQsXG4gIFNldEluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUNvbnRleHQsXG4gIFNldEluY3JlbWVudGFsRmV0Y2hDYWNoZUNvbnRleHQsXG59IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3Jlc3BvbnNlLWNhY2hlXCI7XG5cbmludGVyZmFjZSBNZW1vcnlDYWNoZUVudHJ5IHtcbiAgdmFsdWU6IENhY2hlSGFuZGxlclZhbHVlO1xuICBleHBpcmVzQXQ6IG51bWJlcjsgLy8gVGltZXN0YW1wIGluIG1pbGxpc2Vjb25kc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeUNhY2hlSGFuZGxlck9wdGlvbnMge1xuICBjb250ZXh0OiBDYWNoZUhhbmRsZXJDb250ZXh0O1xufVxuXG5leHBvcnQgY2xhc3MgTWVtb3J5Q2FjaGVIYW5kbGVyIGltcGxlbWVudHMgQ2FjaGVIYW5kbGVyIHtcbiAgcHJpdmF0ZSBpbk1lbW9yeUNhY2hlOiBNYXA8c3RyaW5nLCBNZW1vcnlDYWNoZUVudHJ5PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBkZWJ1ZyA9IGdldERlYnVnKFwiY2RrLW5leHRqczpjYWNoZS1oYW5kbGVyOm1lbW9yeVwiKTtcblxuICAvKipcbiAgICogVGltZSB0byBsaXZlIGluIG1pbGxpc2Vjb25kcyBmb3IgY2FjaGUgZW50cmllcy5cbiAgICogQWZ0ZXIgdGhpcyBkdXJhdGlvbiwgZW50cmllcyBleHBpcmUgYW5kIGFyZSByZW1vdmVkIGZyb20gdGhlIGNhY2hlLlxuICAgKlxuICAgKiAqKkltcG9ydGFudCoqOiBEdWUgdG8gdGhlIGRpc3RyaWJ1dGVkIG5hdHVyZSBvZiBjb21wdXRlIGluc3RhbmNlcyAoTGFtYmRhIGZ1bmN0aW9ucyxcbiAgICogRUNTIEZhcmdhdGUgY29udGFpbmVycywgZXRjLiksIHRoaXMgY2FjaGUgb25seSBwcm92aWRlcyBldmVudHVhbCBjb25zaXN0ZW5jeSBhY3Jvc3NcbiAgICogaW5zdGFuY2VzLiBUYWcgcmV2YWxpZGF0aW9ucyB3aWxsIGNsZWFyIHRoZSBjYWNoZSBvbiB0aGUgaW5zdGFuY2UgdGhhdCBwcm9jZXNzZXNcbiAgICogdGhlIHJldmFsaWRhdGlvbiwgYnV0IG90aGVyIGluc3RhbmNlcyBtYXkgc2VydmUgc3RhbGUgZGF0YSB1bnRpbCB0aGVpciBjYWNoZSBlbnRyaWVzIGV4cGlyZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gU2hvcnQgVFRMICg1IG1pbnV0ZXMpIC0gZm9yIGZyZXF1ZW50bHkgY2hhbmdpbmcgZGF0YVxuICAgKiB0dGxNcyA9IDUgKiA2MCAqIDEwMDA7XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIE1lZGl1bSBUVEwgKDEgaG91cikgLSBiYWxhbmNlZCBiZXR3ZWVuIGZyZXNobmVzcyBhbmQgcGVyZm9ybWFuY2VcbiAgICogdHRsTXMgPSA2MCAqIDYwICogMTAwMDtcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gTG9uZyBUVEwgKDI0IGhvdXJzKSAtIGZvciBtb3N0bHkgc3RhdGljIGNvbnRlbnRcbiAgICogdHRsTXMgPSAyNCAqIDYwICogNjAgKiAxMDAwO1xuICAgKlxuICAgKiAqKldoeSBhZGp1c3QgdGhpcz8qKlxuICAgKiAtIExvd2VyIHZhbHVlczogTW9yZSBjYWNoZSBtaXNzZXMsIGZyZXNoZXIgZGF0YSwgaGlnaGVyIFMzL0R5bmFtb0RCIGNvc3RzXG4gICAqIC0gSGlnaGVyIHZhbHVlczogRmV3ZXIgY2FjaGUgbWlzc2VzLCBiZXR0ZXIgcGVyZm9ybWFuY2UsIGJ1dCBsb25nZXIgc3RhbGUgZGF0YSB3aW5kb3dzXG4gICAqXG4gICAqIFNldCB2aWEgZW52aXJvbm1lbnQgdmFyaWFibGU6IGBDREtfTkVYVEpTX01FTU9SWV9DQUNIRV9UVExfTVNgXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHR0bE1zOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIGNhY2hlIGVudHJpZXMgdG8gc3RvcmUgaW4gbWVtb3J5LlxuICAgKiBXaGVuIHRoaXMgbGltaXQgaXMgcmVhY2hlZCwgdGhlIGxlYXN0IHJlY2VudGx5IHVzZWQgKExSVSkgZW50cnkgaXMgZXZpY3RlZC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gU21hbGwgY2FjaGUgKDEwMCBlbnRyaWVzKSAtIG1pbmltYWwgbWVtb3J5IGZvb3RwcmludCBmb3Igc2ltcGxlIGFwcHNcbiAgICogbWF4RW50cmllcyA9IDEwMDtcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gTWVkaXVtIGNhY2hlICgxMDAwIGVudHJpZXMpIC0gZ29vZCBiYWxhbmNlIGZvciB0eXBpY2FsIGFwcGxpY2F0aW9uc1xuICAgKiBtYXhFbnRyaWVzID0gMTAwMDtcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gTGFyZ2UgY2FjaGUgKDEwMDAwIGVudHJpZXMpIC0gZm9yIGhpZ2gtdHJhZmZpYyBhcHBzIHdpdGggbWFueSB1bmlxdWUgcGFnZXNcbiAgICogbWF4RW50cmllcyA9IDEwMDAwO1xuICAgKlxuICAgKiAqKldoeSBhZGp1c3QgdGhpcz8qKlxuICAgKiAtIExvd2VyIHZhbHVlczogTGVzcyBtZW1vcnkgdXNhZ2UsIG1vcmUgY2FjaGUgZXZpY3Rpb25zXG4gICAqIC0gSGlnaGVyIHZhbHVlczogTW9yZSBtZW1vcnkgdXNhZ2UsIGZld2VyIGNhY2hlIGV2aWN0aW9ucywgYmV0dGVyIGhpdCByYXRlc1xuICAgKlxuICAgKiAqKk1lbW9yeSBjb25zaWRlcmF0aW9ucyoqOiBFYWNoIGVudHJ5IHN0b3JlcyB0aGUgZnVsbCBjYWNoZSB2YWx1ZSAoSFRNTCwgSlNPTiwgZXRjLilcbiAgICogQSB0eXBpY2FsIHBhZ2UgY2FjaGUgbWlnaHQgYmUgMTAtMTAwS0IsIHNvIDEwMDAgZW50cmllcyDiiYggMTAtMTAwTUIgb2YgbWVtb3J5LlxuICAgKiBDb25zaWRlciB5b3VyIGNvbXB1dGUgZW52aXJvbm1lbnQncyBtZW1vcnkgbGltaXRzIChMYW1iZGE6IDEyOE1CLTEwR0IsIEZhcmdhdGU6IDUxMk1CLTMwR0IpXG4gICAqIGFuZCBzaXplIGFjY29yZGluZ2x5LlxuICAgKlxuICAgKiBTZXQgdmlhIGVudmlyb25tZW50IHZhcmlhYmxlOiBgQ0RLX05FWFRKU19NRU1PUllfQ0FDSEVfTUFYX0VOVFJJRVNgXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IG1heEVudHJpZXM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBNZW1vcnlDYWNoZUhhbmRsZXJPcHRpb25zKSB7XG4gICAgLy8gUmVhZCBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggZmFsbGJhY2sgZGVmYXVsdHNcbiAgICBjb25zdCB0dGxGcm9tRW52ID0gcHJvY2Vzcy5lbnYuQ0RLX05FWFRKU19NRU1PUllfQ0FDSEVfVFRMX01TO1xuICAgIGNvbnN0IG1heEVudHJpZXNGcm9tRW52ID0gcHJvY2Vzcy5lbnYuQ0RLX05FWFRKU19NRU1PUllfQ0FDSEVfTUFYX0VOVFJJRVM7XG5cbiAgICAvLyBEZWZhdWx0IHRvIDEgaG91ciBUVEwgYW5kIDEwMDAgbWF4IGVudHJpZXNcbiAgICB0aGlzLnR0bE1zID0gdHRsRnJvbUVudiA/IHBhcnNlSW50KHR0bEZyb21FbnYsIDEwKSA6IDYwICogNjAgKiAxMDAwOyAvLyAxIGhvdXJcbiAgICB0aGlzLm1heEVudHJpZXMgPSBtYXhFbnRyaWVzRnJvbUVudlxuICAgICAgPyBwYXJzZUludChtYXhFbnRyaWVzRnJvbUVudiwgMTApXG4gICAgICA6IDEwMDA7XG5cbiAgICAvLyBMb2cgdGhlIG9wdGlvbnMgZm9yIGRlYnVnZ2luZyAob3B0aW9uYWwgdXNhZ2UgdG8gYXZvaWQgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nKVxuICAgIGlmIChvcHRpb25zLmNvbnRleHQuZGV2KSB7XG4gICAgICB0aGlzLmRlYnVnKFwiTWVtb3J5Q2FjaGVIYW5kbGVyIGluaXRpYWxpemVkIGluIGRldmVsb3BtZW50IG1vZGVcIik7XG4gICAgfVxuICAgIHRoaXMuZGVidWcoYFRUTDogJHt0aGlzLnR0bE1zIC8gMTAwMH1zLCBNYXggZW50cmllczogJHt0aGlzLm1heEVudHJpZXN9YCk7XG4gIH1cblxuICBhc3luYyBnZXQoXG4gICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICBjdHg6IEdldEluY3JlbWVudGFsRmV0Y2hDYWNoZUNvbnRleHQgfCBHZXRJbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVDb250ZXh0LFxuICApOiBQcm9taXNlPENhY2hlSGFuZGxlclZhbHVlIHwgbnVsbD4ge1xuICAgIC8vIExvZyBjb250ZXh0IGZvciBkZWJ1Z2dpbmcgKG9wdGlvbmFsIHVzYWdlIHRvIGF2b2lkIHVudXNlZCBwYXJhbWV0ZXIgd2FybmluZylcbiAgICBpZiAoY3R4LmtpbmQpIHtcbiAgICAgIHRoaXMuZGVidWcoXG4gICAgICAgIGBNZW1vcnkgY2FjaGUgZ2V0IG9wZXJhdGlvbiBmb3IgJHtjYWNoZUtleX0gd2l0aCBraW5kOiAke2N0eC5raW5kfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGluLW1lbW9yeSBjYWNoZVxuICAgIGNvbnN0IG1lbW9yeUVudHJ5ID0gdGhpcy5pbk1lbW9yeUNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgaWYgKG1lbW9yeUVudHJ5KSB7XG4gICAgICAvLyBDaGVjayBpZiBleHBpcmVkXG4gICAgICBpZiAoRGF0ZS5ub3coKSA+IG1lbW9yeUVudHJ5LmV4cGlyZXNBdCkge1xuICAgICAgICB0aGlzLmRlYnVnKGBNRU1PUlkgQ0FDSEUgRVhQSVJFRDogJHtjYWNoZUtleX1gKTtcbiAgICAgICAgdGhpcy5pbk1lbW9yeUNhY2hlLmRlbGV0ZShjYWNoZUtleSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBNb3ZlIHRvIGVuZCAobW9zdCByZWNlbnRseSB1c2VkKSBieSBkZWxldGluZyBhbmQgcmUtaW5zZXJ0aW5nXG4gICAgICB0aGlzLmluTWVtb3J5Q2FjaGUuZGVsZXRlKGNhY2hlS2V5KTtcbiAgICAgIHRoaXMuaW5NZW1vcnlDYWNoZS5zZXQoY2FjaGVLZXksIG1lbW9yeUVudHJ5KTtcblxuICAgICAgdGhpcy5kZWJ1ZyhgTUVNT1JZIENBQ0hFIEhJVDogJHtjYWNoZUtleX1gKTtcbiAgICAgIHJldHVybiBtZW1vcnlFbnRyeS52YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmRlYnVnKGBNRU1PUlkgQ0FDSEUgTUlTUzogJHtjYWNoZUtleX1gKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHNldChcbiAgICBjYWNoZUtleTogc3RyaW5nLFxuICAgIGRhdGE6IEluY3JlbWVudGFsQ2FjaGVWYWx1ZSB8IG51bGwsXG4gICAgX2N0eDogU2V0SW5jcmVtZW50YWxGZXRjaENhY2hlQ29udGV4dCB8IFNldEluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUNvbnRleHQsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghZGF0YSkge1xuICAgICAgLy8gRGVsZXRlIGZyb20gbWVtb3J5IGNhY2hlXG4gICAgICB0aGlzLmRlYnVnKGBNRU1PUlkgQ0FDSEUgREVMRVRFOiAke2NhY2hlS2V5fWApO1xuICAgICAgdGhpcy5pbk1lbW9yeUNhY2hlLmRlbGV0ZShjYWNoZUtleSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRGVidWcgbG9nZ2luZyBmb3IgbWVtb3J5IGNhY2hlIHNldFxuICAgIHRoaXMuZGVidWcoYE1FTU9SWSBDQUNIRSBTRVQ6ICR7Y2FjaGVLZXl9ICgke2RhdGEua2luZH0pYCk7XG5cbiAgICAvLyBTdG9yZSBpbiBtZW1vcnkgY2FjaGUgd2l0aCBwcm9wZXIgQ2FjaGVIYW5kbGVyVmFsdWUgc3RydWN0dXJlXG4gICAgY29uc3QgY2FjaGVIYW5kbGVyVmFsdWU6IENhY2hlSGFuZGxlclZhbHVlID0ge1xuICAgICAgbGFzdE1vZGlmaWVkOiBEYXRlLm5vdygpLFxuICAgICAgdmFsdWU6IGRhdGEsXG4gICAgfTtcblxuICAgIGNvbnN0IGVudHJ5OiBNZW1vcnlDYWNoZUVudHJ5ID0ge1xuICAgICAgdmFsdWU6IGNhY2hlSGFuZGxlclZhbHVlLFxuICAgICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgdGhpcy50dGxNcyxcbiAgICB9O1xuXG4gICAgLy8gQ2xlYW4gdXAgZXhwaXJlZCBlbnRyaWVzIGJlZm9yZSBhZGRpbmcgbmV3IG9uZVxuICAgIHRoaXMuY2xlYW51cEV4cGlyZWQoKTtcblxuICAgIC8vIElmIHdlJ3JlIGF0IG1heCBjYXBhY2l0eSwgZXZpY3Qgb2xkZXN0IGVudHJ5XG4gICAgaWYgKHRoaXMuaW5NZW1vcnlDYWNoZS5zaXplID49IHRoaXMubWF4RW50cmllcykge1xuICAgICAgdGhpcy5ldmljdE9sZGVzdCgpO1xuICAgIH1cblxuICAgIC8vIEFkZCBuZXcgZW50cnlcbiAgICB0aGlzLmluTWVtb3J5Q2FjaGUuc2V0KGNhY2hlS2V5LCBlbnRyeSk7XG5cbiAgICB0aGlzLmRlYnVnKGBDYWNoZSBlbnRyaWVzOiAke3RoaXMuaW5NZW1vcnlDYWNoZS5zaXplfS8ke3RoaXMubWF4RW50cmllc31gKTtcbiAgfVxuXG4gIGFzeW5jIHJldmFsaWRhdGVUYWcodGFnOiBzdHJpbmcgfCBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRhZ3MgPSBBcnJheS5pc0FycmF5KHRhZykgPyB0YWcgOiBbdGFnXTtcbiAgICB0aGlzLmRlYnVnKGBNRU1PUlkgUkVWQUxJREFURSBUQUdTIChuby1vcCk6IFske3RhZ3Muam9pbihcIiwgXCIpfV1gKTtcbiAgICAvLyBNZW1vcnkgY2FjaGUgZG9lcyBub3QgdHJhY2sgdGFncyBiZWNhdXNlOlxuICAgIC8vIDEuIEluIGRpc3RyaWJ1dGVkIGVudmlyb25tZW50cyAobXVsdGlwbGUgTGFtYmRhIGZ1bmN0aW9ucyBvciBGYXJnYXRlIGNvbnRhaW5lcnMpLFxuICAgIC8vICAgIHRhZyByZXZhbGlkYXRpb24gb25seSBjbGVhcnMgY2FjaGUgb24gdGhlIGN1cnJlbnQgaW5zdGFuY2UuIE90aGVyIGluc3RhbmNlc1xuICAgIC8vICAgIHdvdWxkIGNvbnRpbnVlIHNlcnZpbmcgc3RhbGUgZGF0YSB1bnRpbCB0aGVpciBUVEwgZXhwaXJlcyBhbnl3YXkuXG4gICAgLy8gMi4gVGhlIFMzIGNhY2hlIGhhbmRsZXIgd2l0aCBEeW5hbW9EQiBwcm92aWRlcyB0aGUgYXV0aG9yaXRhdGl2ZSBzb3VyY2Ugb2YgdHJ1dGhcbiAgICAvLyAgICBmb3IgdGFnIHJldmFsaWRhdGlvbnMgYWNyb3NzIGFsbCBpbnN0YW5jZXMuXG4gICAgLy8gMy4gTWVtb3J5IGNhY2hlIHJlbGllcyBvbiBUVEwtYmFzZWQgZXhwaXJhdGlvbiBmb3Igc2ltcGxpY2l0eSBhbmQgY29uc2lzdGVuY3kuXG4gICAgLy8gICAgSWYgc3Ryb25nIGNvbnNpc3RlbmN5IGlzIHJlcXVpcmVkLCBzZXQgQ0RLX05FWFRKU19NRU1PUllfQ0FDSEVfVFRMX01TPTAuXG4gIH1cblxuICBhc3luYyByZXNldFJlcXVlc3RDYWNoZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBDbGVhciBpbi1tZW1vcnkgY2FjaGVcbiAgICB0aGlzLmluTWVtb3J5Q2FjaGUuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYWxsIGV4cGlyZWQgY2FjaGUgZW50cmllc1xuICAgKi9cbiAgcHJpdmF0ZSBjbGVhbnVwRXhwaXJlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGxldCBleHBpcmVkQ291bnQgPSAwO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCBlbnRyeV0gb2YgdGhpcy5pbk1lbW9yeUNhY2hlLmVudHJpZXMoKSkge1xuICAgICAgaWYgKG5vdyA+IGVudHJ5LmV4cGlyZXNBdCkge1xuICAgICAgICB0aGlzLmluTWVtb3J5Q2FjaGUuZGVsZXRlKGtleSk7XG4gICAgICAgIGV4cGlyZWRDb3VudCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleHBpcmVkQ291bnQgPiAwKSB7XG4gICAgICB0aGlzLmRlYnVnKGBDbGVhbmVkIHVwICR7ZXhwaXJlZENvdW50fSBleHBpcmVkIGVudHJpZXNgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXZpY3QgdGhlIG9sZGVzdCAobGVhc3QgcmVjZW50bHkgdXNlZCkgY2FjaGUgZW50cnlcbiAgICogTWFwIG1haW50YWlucyBpbnNlcnRpb24gb3JkZXIsIHNvIGZpcnN0IGVudHJ5IGlzIG9sZGVzdFxuICAgKi9cbiAgcHJpdmF0ZSBldmljdE9sZGVzdCgpOiB2b2lkIHtcbiAgICBjb25zdCBmaXJzdEtleSA9IHRoaXMuaW5NZW1vcnlDYWNoZS5rZXlzKCkubmV4dCgpLnZhbHVlO1xuICAgIGlmIChmaXJzdEtleSkge1xuICAgICAgdGhpcy5kZWJ1ZyhgTUFYIENBUEFDSVRZIEVWSUNUIChMUlUpOiAke2ZpcnN0S2V5fWApO1xuICAgICAgdGhpcy5pbk1lbW9yeUNhY2hlLmRlbGV0ZShmaXJzdEtleSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHVibGljIG1ldGhvZHMgZm9yIHRlc3RpbmcgYW5kIG1vbml0b3JpbmdcbiAgcHVibGljIGdldENhY2hlU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmluTWVtb3J5Q2FjaGUuc2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckNhY2hlKCk6IHZvaWQge1xuICAgIHRoaXMuaW5NZW1vcnlDYWNoZS5jbGVhcigpO1xuICB9XG59XG4iXX0=
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.S3CacheHandler = void 0;
4
7
  /*
@@ -8,11 +11,15 @@ exports.S3CacheHandler = void 0;
8
11
  const node_path_1 = require("node:path");
9
12
  const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
10
13
  const client_s3_1 = require("@aws-sdk/client-s3");
11
- const debug_1 = require("debug");
14
+ const debug_1 = __importDefault(require("debug"));
12
15
  const cache_utils_1 = require("./cache-utils");
13
16
  class S3CacheHandler {
17
+ s3Client;
18
+ dynamoClient;
19
+ s3Config;
20
+ dynamoConfig;
21
+ debug = (0, debug_1.default)("cdk-nextjs:cache-handler:s3");
14
22
  constructor(options) {
15
- this.debug = (0, debug_1.default)("cdk-nextjs:cache-handler:s3");
16
23
  const buildId = process.env.CDK_NEXTJS_BUILD_ID || "";
17
24
  // Initialize S3 configuration from environment variables and options
18
25
  this.s3Config = {
@@ -347,4 +354,4 @@ class S3CacheHandler {
347
354
  }
348
355
  }
349
356
  exports.S3CacheHandler = S3CacheHandler;
350
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtY2FjaGUtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyL3MzLWNhY2hlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0VBRUU7QUFDRixzREFBc0Q7QUFDdEQseUNBQWlDO0FBQ2pDLDhEQUlrQztBQUNsQyxrREFNNEI7QUFDNUIsaUNBQTZCO0FBYTdCLCtDQUE4RTtBQW9COUUsTUFBYSxjQUFjO0lBT3pCLFlBQVksT0FBOEI7UUFGbEMsVUFBSyxHQUFHLElBQUEsZUFBUSxFQUFDLDZCQUE2QixDQUFDLENBQUM7UUFHdEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7UUFFdEQscUVBQXFFO1FBQ3JFLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxVQUFVLEVBQ1IsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVO2dCQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QjtnQkFDeEMsRUFBRTtZQUNKLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxXQUFXO1lBQ3pFLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sSUFBSSxPQUFPO1NBQzlDLENBQUM7UUFFRiwyRUFBMkU7UUFDM0UsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixTQUFTLEVBQ1AsT0FBTyxDQUFDLFlBQVksRUFBRSxTQUFTO2dCQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQztnQkFDOUMsRUFBRTtZQUNKLE1BQU0sRUFDSixPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxXQUFXO1lBQ3ZFLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLE9BQU8sSUFBSSxPQUFPO1NBQ2xELENB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Q0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZix1REFBdUQ7WUFDdkQsT0FBTyxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsS0FBSyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTNhRCx3Q0EyYUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBTMyBhbmQgRHluYW1vREIgY2FjaGUgaGFuZGxlciBmb3IgTmV4dC5qcyBpbmNyZW1lbnRhbCBjYWNoZVxuKi9cbi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7XG4gIER5bmFtb0RCQ2xpZW50LFxuICBRdWVyeUNvbW1hbmQsXG4gIFVwZGF0ZUl0ZW1Db21tYW5kLFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWR5bmFtb2RiXCI7XG5pbXBvcnQge1xuICBTM0NsaWVudCxcbiAgR2V0T2JqZWN0Q29tbWFuZCxcbiAgUHV0T2JqZWN0Q29tbWFuZCxcbiAgRGVsZXRlT2JqZWN0Q29tbWFuZCxcbiAgTm9TdWNoS2V5LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCI7XG5pbXBvcnQgZ2V0RGVidWcgZnJvbSBcImRlYnVnXCI7XG5pbXBvcnQge1xuICBDYWNoZUhhbmRsZXIsXG4gIENhY2hlSGFuZGxlclZhbHVlLFxuICBDYWNoZUhhbmRsZXJDb250ZXh0LFxufSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9saWIvaW5jcmVtZW50YWwtY2FjaGVcIjtcbmltcG9ydCB7XG4gIEluY3JlbWVudGFsQ2FjaGVWYWx1ZSxcbiAgR2V0SW5jcmVtZW50YWxGZXRjaENhY2hlQ29udGV4dCxcbiAgR2V0SW5jcmVtZW50YWxSZXNwb25zZUNhY2hlQ29udGV4dCxcbiAgU2V0SW5jcmVtZW50YWxGZXRjaENhY2hlQ29udGV4dCxcbiAgU2V0SW5jcmVtZW50YWxSZXNwb25zZUNhY2hlQ29udGV4dCxcbn0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcmVzcG9uc2UtY2FjaGVcIjtcbmltcG9ydCB7IHNlcmlhbGl6ZUNhY2hlVmFsdWUsIHBhcnNlQ2FjaGVWYWx1ZSwgZ2V0VGFncyB9IGZyb20gXCIuL2NhY2hlLXV0aWxzXCI7XG5cbmludGVyZmFjZSBTM0NhY2hlQ29uZmlnIHtcbiAgYnVja2V0TmFtZTogc3RyaW5nO1xuICByZWdpb246IHN0cmluZztcbiAgYnVpbGRJZDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRHluYW1vREJSZXZhbGlkYXRpb25Db25maWcge1xuICB0YWJsZU5hbWU6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIGJ1aWxkSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTM0NhY2hlSGFuZGxlck9wdGlvbnMge1xuICBjb250ZXh0OiBDYWNoZUhhbmRsZXJDb250ZXh0O1xuICBzM0NvbmZpZz86IFBhcnRpYWw8UzNDYWNoZUNvbmZpZz47XG4gIGR5bmFtb0NvbmZpZz86IFBhcnRpYWw8RHluYW1vREJSZXZhbGlkYXRpb25Db25maWc+O1xufVxuXG5leHBvcnQgY2xhc3MgUzNDYWNoZUhhbmRsZXIgaW1wbGVtZW50cyBDYWNoZUhhbmRsZXIge1xuICBwcml2YXRlIHMzQ2xpZW50OiBTM0NsaWVudDtcbiAgcHJpdmF0ZSBkeW5hbW9DbGllbnQ6IER5bmFtb0RCQ2xpZW50O1xuICBwcml2YXRlIHMzQ29uZmlnOiBTM0NhY2hlQ29uZmlnO1xuICBwcml2YXRlIGR5bmFtb0NvbmZpZzogRHluYW1vREJSZXZhbGlkYXRpb25Db25maWc7XG4gIHByaXZhdGUgZGVidWcgPSBnZXREZWJ1ZyhcImNkay1uZXh0anM6Y2FjaGUtaGFuZGxlcjpzM1wiKTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTM0NhY2hlSGFuZGxlck9wdGlvbnMpIHtcbiAgICBjb25zdCBidWlsZElkID0gcHJvY2Vzcy5lbnYuQ0RLX05FWFRKU19CVUlMRF9JRCB8fCBcIlwiO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBTMyBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZCBvcHRpb25zXG4gICAgdGhpcy5zM0NvbmZpZyA9IHtcbiAgICAgIGJ1Y2tldE5hbWU6XG4gICAgICAgIG9wdGlvbnMuczNDb25maWc/LmJ1Y2tldE5hbWUgfHxcbiAgICAgICAgcHJvY2Vzcy5lbnYuQ0RLX05FWFRKU19DQUNIRV9CVUNLRVRfTkFNRSB8fFxuICAgICAgICBcIlwiLFxuICAgICAgcmVnaW9uOiBvcHRpb25zLnMzQ29uZmlnPy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBcInVzLWVhc3QtMVwiLFxuICAgICAgYnVpbGRJZDogb3B0aW9ucy5zM0NvbmZpZz8uYnVpbGRJZCB8fCBidWlsZElkLFxuICAgIH07XG5cbiAgICAvLyBJbml0aWFsaXplIER5bmFtb0RCIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIG9wdGlvbnNcbiAgICB0aGlzLmR5bmFtb0NvbmZpZyA9IHtcbiAgICAgIHRhYmxlTmFtZTpcbiAgICAgICAgb3B0aW9ucy5keW5hbW9Db25maWc/LnRhYmxlTmFtZSB8fFxuICAgICAgICBwcm9jZXNzLmVudi5DREtfTkVYVEpTX1JFVkFMSURBVElPTl9UQUJMRV9OQU1FIHx8XG4gICAgICAgIFwiXCIsXG4gICAgICByZWdpb246XG4gICAgICAgIG9wdGlvbnMuZHluYW1vQ29uZmlnPy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBcInVzLWVhc3QtMVwiLFxuICAgICAgYnVpbGRJZDogb3B0aW9ucy5keW5hbW9Db25maWc/LmJ1aWxkSWQgfHwgYnVpbGRJZCxcbiAgICB9O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBBV1MgY2xpZW50c1xuICAgIHRoaXMuczNDbGllbnQgPSBuZXcgUzNDbGllbnQoeyByZWdpb246IHRoaXMuczNDb25maWcucmVnaW9uIH0pO1xuICAgIHRoaXMuZHluYW1vQ2xpZW50ID0gbmV3IER5bmFtb0RCQ2xpZW50KHtcbiAgICAgIHJlZ2lvbjogdGhpcy5keW5hbW9Db25maWcucmVnaW9uLFxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLnMzQ29uZmlnLmJ1Y2tldE5hbWUpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJDREtfTkVYVEpTX0NBQ0hFX0JVQ0tFVF9OQU1FIGVudmlyb25tZW50IHZhcmlhYmxlIG5vdCBzZXQsIFMzIGNhY2hlIGRpc2FibGVkXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5keW5hbW9Db25maWcudGFibGVOYW1lKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiQ0RLX05FWFRKU19SRVZBTElEQVRJT05fVEFCTEVfTkFNRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBub3Qgc2V0LCByZXZhbGlkYXRpb24gdHJhY2tpbmcgZGlzYWJsZWRcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFidWlsZElkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiQ0RLX05FWFRKU19CVUlMRF9JRCBlbnZpcm9ubWVudCB2YXJpYWJsZSBub3Qgc2V0LCBjYWNoZSBpc29sYXRpb24gbWF5IG5vdCB3b3JrIGNvcnJlY3RseVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBMb2cgdGhlIG9wdGlvbnMgZm9yIGRlYnVnZ2luZyAob3B0aW9uYWwgdXNhZ2UgdG8gYXZvaWQgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nKVxuICAgIGlmIChvcHRpb25zLmNvbnRleHQuZGV2KSB7XG4gICAgICB0aGlzLmRlYnVnKFwiUzNEeW5hbW9DYWNoZUhhbmRsZXIgaW5pdGlhbGl6ZWQgaW4gZGV2ZWxvcG1lbnQgbW9kZVwiKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXQoXG4gICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICBjdHg6IEdldEluY3JlbWVudGFsRmV0Y2hDYWNoZUNvbnRleHQgfCBHZXRJbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVDb250ZXh0LFxuICApOiBQcm9taXNlPENhY2hlSGFuZGxlclZhbHVlIHwgbnVsbD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBMb2cgY29udGV4dCBmb3IgZGVidWdnaW5nIChvcHRpb25hbCB1c2FnZSB0byBhdm9pZCB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcpXG4gICAgICBpZiAoY3R4LmtpbmQpIHtcbiAgICAgICAgdGhpcy5kZWJ1ZyhcbiAgICAgICAgICBgUzMgY2FjaGUgZ2V0IG9wZXJhdGlvbiBmb3IgJHtjYWNoZUtleX0gd2l0aCBraW5kOiAke2N0eC5raW5kfWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5zM0NvbmZpZy5idWNrZXROYW1lKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzM0tleSA9IHRoaXMuYnVpbGRTM0tleShjYWNoZUtleSk7XG5cbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgR2V0T2JqZWN0Q29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogdGhpcy5zM0NvbmZpZy5idWNrZXROYW1lLFxuICAgICAgICBLZXk6IHMzS2V5LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zM0NsaWVudC5zZW5kKGNvbW1hbmQpO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLkJvZHkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBkaWZmZXJlbnQgY29udGVudCB0eXBlcyBhcHByb3ByaWF0ZWx5IGZvciBkb2N1bWVudGVkIGZvcm1hdHNcbiAgICAgIGxldCBjYWNoZVZhbHVlOiBDYWNoZUhhbmRsZXJWYWx1ZTtcbiAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuQ29udGVudFR5cGUgfHwgXCJhcHBsaWNhdGlvbi9qc29uXCI7XG5cbiAgICAgIC8vIEhhbmRsZSB0ZXh0LWJhc2VkIGRhdGEgKEpTT04sIEhUTUwsIHBsYWluIHRleHQpIC0gYWxsIGRvY3VtZW50ZWQgZm9ybWF0cyBhcmUgdGV4dC1iYXNlZFxuICAgICAgY29uc3QgYm9keVN0cmluZyA9IGF3YWl0IHJlc3BvbnNlLkJvZHkudHJhbnNmb3JtVG9TdHJpbmcoXCJ1dGYtOFwiKTtcblxuICAgICAgaWYgKGNvbnRlbnRUeXBlLmluY2x1ZGVzKFwiYXBwbGljYXRpb24vanNvblwiKSkge1xuICAgICAgICAvLyBQYXJzZSB0aGUgc3RvcmVkIENhY2hlSGFuZGxlclZhbHVlIGRpcmVjdGx5XG4gICAgICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gcGFyc2VDYWNoZVZhbHVlKGJvZHlTdHJpbmcpO1xuXG4gICAgICAgIC8vIEV4dHJhY3QgdGhlIGFjdHVhbCBDYWNoZUhhbmRsZXJWYWx1ZSAod2l0aG91dCB0YWdzKSBmb3IgcmV0dXJuXG4gICAgICAgIGNhY2hlVmFsdWUgPSB7XG4gICAgICAgICAgbGFzdE1vZGlmaWVkOiBwYXJzZWRWYWx1ZS5sYXN0TW9kaWZpZWQsXG4gICAgICAgICAgdmFsdWU6IHBhcnNlZFZhbHVlLnZhbHVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGNhY2hlIGhhcyBiZWVuIGludmFsaWRhdGVkIGJ5IHRhZyByZXZhbGlkYXRpb25cbiAgICAgICAgY29uc3Qgc3RvcmVkVGFncyA9IHBhcnNlZFZhbHVlLnRhZ3MgfHwgW107XG4gICAgICAgIGlmIChzdG9yZWRUYWdzLmxlbmd0aCA+IDAgJiYgdGhpcy5keW5hbW9Db25maWcudGFibGVOYW1lKSB7XG4gICAgICAgICAgY29uc3QgaXNJbnZhbGlkYXRlZCA9IGF3YWl0IHRoaXMuY2hlY2tJZlJldmFsaWRhdGVkKFxuICAgICAgICAgICAgY2FjaGVWYWx1ZS5sYXN0TW9kaWZpZWQsXG4gICAgICAgICAgICBzdG9yZWRUYWdzLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGlzSW52YWxpZGF0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGVidWcoYFMzIENBQ0hFIElOVkFMSURBVEVEIEJZIFRBRzogJHtjYWNoZUtleX1gKTtcbiAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgc3RhbGUgUzMgZW50cnlcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlUzNFbnRyeShzM0tleSk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJbnZhbGlkIGNvbnRlbnQgdHlwZTogJHtjb250ZW50VHlwZX1gKTtcbiAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIHNpbmNlIHdlIGFsd2F5cyBzdG9yZSBhcyBKU09OIG5vd1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kZWJ1ZyhgUzMgQ0FDSEUgSElUOiAke2NhY2hlS2V5fSAoJHtzM0tleX0pYCk7XG5cbiAgICAgIHJldHVybiBjYWNoZVZhbHVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBOb1N1Y2hLZXkpIHtcbiAgICAgICAgdGhpcy5kZWJ1ZyhgUzMgQ0FDSEUgTUlTUzogJHtjYWNoZUtleX1gKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIExvZyBhY3R1YWwgZXJyb3JzIChub3QgY2FjaGUgbWlzc2VzKVxuICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgcmV0cmlldmluZyBjYWNoZSBmcm9tIFMzOmAsIGVycm9yKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNldChcbiAgICBjYWNoZUtleTogc3RyaW5nLFxuICAgIGRhdGE6IEluY3JlbWVudGFsQ2FjaGVWYWx1ZSB8IG51bGwsXG4gICAgY3R4OiBTZXRJbmNyZW1lbnRhbEZldGNoQ2FjaGVDb250ZXh0IHwgU2V0SW5jcmVtZW50YWxSZXNwb25zZUNhY2hlQ29udGV4dCxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAvLyBEZWxldGUgZnJvbSBTMyBhbmQgRHluYW1vREJcbiAgICAgICAgdGhpcy5kZWJ1ZyhgUzMgQ0FDSEUgREVMRVRFOiAke2NhY2hlS2V5fWApO1xuXG4gICAgICAgIGlmICghdGhpcy5zM0NvbmZpZy5idWNrZXROYW1lKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQnVpbGQgUzMga2V5IHdpdGhvdXQgbmVlZGluZyB0byBrbm93IHRoZSBraW5kXG4gICAgICAgIGNvbnN0IHMzS2V5ID0gdGhpcy5idWlsZFMzS2V5KGNhY2hlS2V5KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRlbGV0ZUNvbW1hbmQgPSBuZXcgRGVsZXRlT2JqZWN0Q29tbWFuZCh7XG4gICAgICAgICAgICBCdWNrZXQ6IHRoaXMuczNDb25maWcuYnVja2V0TmFtZSxcbiAgICAgICAgICAgIEtleTogczNLZXksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zM0NsaWVudC5zZW5kKGRlbGV0ZUNvbW1hbmQpO1xuICAgICAgICAgIHRoaXMuZGVidWcoYFMzIENBQ0hFIERFTEVURUQ6ICR7czNLZXl9YCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgTm9TdWNoS2V5KSB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnKGBGYWlsZWQgdG8gZGVsZXRlIFMzIGtleSAke3MzS2V5fTpgLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogQWxzbyBkZWxldGUgdGFnIGFzc29jaWF0aW9ucyBmcm9tIER5bmFtb0RCIGlmIG5lZWRlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIERlYnVnIGxvZ2dpbmcgdG8gdW5kZXJzdGFuZCB3aGF0IGRhdGEgaXMgYmVpbmcgY2FjaGVkXG4gICAgICBjb25zdCB0YWdzID0gZ2V0VGFncyhjdHgpO1xuICAgICAgdGhpcy5kZWJ1ZyhgUzMgQ0FDSEUgU0VUOiBLZXk6ICR7Y2FjaGVLZXl9LCB0YWdzOiAke3RhZ3MgfHwgXCJub25lXCJ9YCk7XG5cbiAgICAgIC8vIE5vdGU6IGN0eC50YWdzIGFyZSBhdmFpbGFibGUgYnV0IHJldmFsaWRhdGlvbiBpcyBoYW5kbGVkIHNlcGFyYXRlbHkgaW4gcmV2YWxpZGF0ZVRhZyBtZXRob2RcbiAgICAgIC8vIExvZyB0YWdzIGZvciBkZWJ1Z2dpbmcgaWYgcHJlc2VudCAob25seSBpbiBTZXRJbmNyZW1lbnRhbEZldGNoQ2FjaGVDb250ZXh0KVxuICAgICAgaWYgKHRhZ3MgJiYgdGFncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZGVidWcoYFMzIGNhY2hlIGVudHJ5IGZvciAke2NhY2hlS2V5fSBoYXMgdGFnczpgLCB0YWdzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLnMzQ29uZmlnLmJ1Y2tldE5hbWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzM0tleSA9IHRoaXMuYnVpbGRTM0tleShjYWNoZUtleSk7XG5cbiAgICAgIC8vIENyZWF0ZSBDYWNoZUhhbmRsZXJWYWx1ZSBzdHJ1Y3R1cmUgZm9yIFMzIHN0b3JhZ2Ugd2l0aCB0YWdzXG4gICAgICBjb25zdCBjYWNoZUhhbmRsZXJWYWx1ZTogQ2FjaGVIYW5kbGVyVmFsdWUgPSB7XG4gICAgICAgIGxhc3RNb2RpZmllZDogRGF0ZS5ub3coKSxcbiAgICAgICAgdmFsdWU6IGRhdGEsXG4gICAgICB9O1xuXG4gICAgICAvLyBTdG9yZSB0YWdzIHdpdGggdGhlIGNhY2hlIGVudHJ5IGZvciByZXZhbGlkYXRpb24gY2hlY2tpbmdcbiAgICAgIGNvbnN0IGNhY2hlRW50cnlXaXRoVGFncyA9IHtcbiAgICAgICAgLi4uY2FjaGVIYW5kbGVyVmFsdWUsXG4gICAgICAgIHRhZ3M6IHRhZ3MgfHwgW10sXG4gICAgICB9O1xuXG4gICAgICAvLyBTZXJpYWxpemUgd2l0aCBjdXN0b20gaGFuZGxpbmcgZm9yIE1hcCBhbmQgQnVmZmVyIG9iamVjdHNcbiAgICAgIGNvbnN0IGJvZHkgPSBzZXJpYWxpemVDYWNoZVZhbHVlKGNhY2hlRW50cnlXaXRoVGFncyk7XG5cbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgUHV0T2JqZWN0Q29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogdGhpcy5zM0NvbmZpZy5idWNrZXROYW1lLFxuICAgICAgICBLZXk6IHMzS2V5LFxuICAgICAgICBCb2R5OiBib2R5LFxuICAgICAgICBDb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04XCIsIC8vIEFsd2F5cyBKU09OIHNpbmNlIHdlIHN0b3JlIENhY2hlSGFuZGxlclZhbHVlXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgdGhpcy5zM0NsaWVudC5zZW5kKGNvbW1hbmQpO1xuXG4gICAgICB0aGlzLmRlYnVnKGBTMyBDQUNIRSBTVE9SRUQ6ICR7Y2FjaGVLZXl9ICgke2RhdGEua2luZH0pYCk7XG5cbiAgICAgIC8vIFN0b3JlIHRhZy10by1jYWNoZS1rZXkgbWFwcGluZ3MgaW4gRHluYW1vREIgZm9yIHJldmFsaWRhdGlvblxuICAgICAgaWYgKHRhZ3MgJiYgdGFncy5sZW5ndGggPiAwICYmIHRoaXMuZHluYW1vQ29uZmlnLnRhYmxlTmFtZSkge1xuICAgICAgICB0aGlzLmRlYnVnKGBTVE9SSU5HIFRBR1M6ICR7Y2FjaGVLZXl9IC0+IFske3RhZ3Muam9pbihcIiwgXCIpfV1gKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yZUR5bmFtb0RCVGFnTWFwcGluZ3MoczNLZXksIHRhZ3MpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igc3RvcmluZyBjYWNoZSB0byBTMzpcIiwgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJldmFsaWRhdGVUYWcodGFnOiBzdHJpbmcgfCBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRhZ3MgPSBBcnJheS5pc0FycmF5KHRhZykgPyB0YWcgOiBbdGFnXTtcbiAgICB0aGlzLmRlYnVnKGBSRVZBTElEQVRJTkcgVEFHUzogWyR7dGFncy5qb2luKFwiLCBcIil9XWApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghdGhpcy5keW5hbW9Db25maWcudGFibGVOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyBhbGwgdGFncyBpbiBwYXJhbGxlbCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbCh0YWdzLm1hcCgodCkgPT4gdGhpcy5yZXZhbGlkYXRlU2luZ2xlVGFnKHQpKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB1cGRhdGluZyByZXZhbGlkYXRpb24gbWV0YWRhdGE6XCIsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJldmFsaWRhdGVTaW5nbGVUYWcodGFnOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBRdWVyeSBhbGwgcGF0aHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFnXG4gICAgY29uc3QgcXVlcnlDb21tYW5kID0gbmV3IFF1ZXJ5Q29tbWFuZCh7XG4gICAgICBUYWJsZU5hbWU6IHRoaXMuZHluYW1vQ29uZmlnLnRhYmxlTmFtZSxcbiAgICAgIEtleUNvbmRpdGlvbkV4cHJlc3Npb246IFwicGsgPSA6cGsgQU5EIGJlZ2luc193aXRoKHNrLCA6c2tQcmVmaXgpXCIsXG4gICAgICBFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzOiB7XG4gICAgICAgIFwiOnBrXCI6IHsgUzogdGhpcy5keW5hbW9Db25maWcuYnVpbGRJZCB9LFxuICAgICAgICBcIjpza1ByZWZpeFwiOiB7IFM6IGAke3RhZ30jYCB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHF1ZXJ5UmVzcG9uc2UgPSBhd2FpdCB0aGlzLmR5bmFtb0NsaWVudC5zZW5kKHF1ZXJ5Q29tbWFuZCk7XG5cbiAgICBpZiAocXVlcnlSZXNwb25zZS5JdGVtcykge1xuICAgICAgLy8gRXh0cmFjdCBTMyBrZXlzIGZyb20gc29ydCBrZXlzIChmb3JtYXQ6IFwidGFnI3MzS2V5XCIpXG4gICAgICBjb25zdCBjYWNoZUtleXMgPSBxdWVyeVJlc3BvbnNlLkl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBzayA9IGl0ZW0uc2s/LlM7XG4gICAgICAgIGlmIChzaykge1xuICAgICAgICAgIGNvbnN0IGhhc2hJbmRleCA9IHNrLmluZGV4T2YoXCIjXCIpO1xuICAgICAgICAgIHJldHVybiBoYXNoSW5kZXggIT09IC0xID8gc2suc3Vic3RyaW5nKGhhc2hJbmRleCArIDEpIDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgdGhpcy5kZWJ1ZyhcbiAgICAgICAgYFRBRyAke3RhZ306IEZvdW5kICR7Y2FjaGVLZXlzLmxlbmd0aH0gY2FjaGUgZW50cmllcyB0byBpbnZhbGlkYXRlYCxcbiAgICAgICk7XG5cbiAgICAgIC8vIFVwZGF0ZSByZXZhbGlkYXRpb24gdGltZXN0YW1wIGZvciBhbGwgY2FjaGUga2V5cyB3aXRoIHRoaXMgdGFnXG4gICAgICBjb25zdCB1cGRhdGVQcm9taXNlcyA9IHF1ZXJ5UmVzcG9uc2UuSXRlbXMubWFwKGFzeW5jIChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHNrID0gaXRlbS5zaz8uUztcbiAgICAgICAgaWYgKHNrKSB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlQ29tbWFuZCA9IG5ldyBVcGRhdGVJdGVtQ29tbWFuZCh7XG4gICAgICAgICAgICBUYWJsZU5hbWU6IHRoaXMuZHluYW1vQ29uZmlnLnRhYmxlTmFtZSxcbiAgICAgICAgICAgIEtleToge1xuICAgICAgICAgICAgICBwazogeyBTOiB0aGlzLmR5bmFtb0NvbmZpZy5idWlsZElkIH0sXG4gICAgICAgICAgICAgIHNrOiB7IFM6IHNrIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgVXBkYXRlRXhwcmVzc2lvbjogXCJTRVQgcmV2YWxpZGF0ZWRBdCA9IDp0aW1lc3RhbXBcIixcbiAgICAgICAgICAgIEV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAgICAgXCI6dGltZXN0YW1wXCI6IHsgTjogRGF0ZS5ub3coKS50b1N0cmluZygpIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZHluYW1vQ2xpZW50LnNlbmQodXBkYXRlQ29tbWFuZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHVwZGF0ZVByb21pc2VzLmZpbHRlcihCb29sZWFuKSk7XG5cbiAgICAgIC8vIERlbGV0ZSB0aGUgY29ycmVzcG9uZGluZyBTMyBjYWNoZSBlbnRyaWVzIHRvIGludmFsaWRhdGUgdGhlbVxuICAgICAgaWYgKHRoaXMuczNDb25maWcuYnVja2V0TmFtZSkge1xuICAgICAgICBjb25zdCBkZWxldGVQcm9taXNlcyA9IGNhY2hlS2V5cy5tYXAoYXN5bmMgKHMzS2V5KSA9PiB7XG4gICAgICAgICAgaWYgKHMzS2V5KSB7XG4gICAgICAgICAgICBjb25zdCBkZWxldGVDb21tYW5kID0gbmV3IERlbGV0ZU9iamVjdENvbW1hbmQoe1xuICAgICAgICAgICAgICBCdWNrZXQ6IHRoaXMuczNDb25maWcuYnVja2V0TmFtZSxcbiAgICAgICAgICAgICAgS2V5OiBzM0tleSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnMzQ2xpZW50LnNlbmQoZGVsZXRlQ29tbWFuZCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAvLyBMb2cgYnV0IGRvbid0IGZhaWwgLSB0aGUgZW50cnkgbWlnaHQgbm90IGV4aXN0IGluIFMzXG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIGRlbGV0ZSBTMyBjYWNoZSBlbnRyeSAke3MzS2V5fTpgLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChkZWxldGVQcm9taXNlcy5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlc2V0UmVxdWVzdENhY2hlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFRoaXMgaGFuZGxlciBkb2Vzbid0IG1haW50YWluIHJlcXVlc3QtbGV2ZWwgY2FjaGUgc3RhdGVcbiAgICAvLyBUaGUgYWN0dWFsIGNhY2hlIGNsZWFyaW5nIGlzIGhhbmRsZWQgYnkgdGhlIG1lbW9yeSBjYWNoZSBoYW5kbGVyXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUzNLZXkoY2FjaGVLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVXNlIEJVSUxEX0lEIHByZWZpeGluZzoge2J1aWxkSWR9L3tjYWNoZUtleX0uanNvblxuXG4gICAgLy8gSGFuZGxlIGVkZ2UgY2FzZXM6XG4gICAgLy8gLSBSb290IHBhdGggXCIvXCIgc2hvdWxkIGJlY29tZSBcImluZGV4XCIgb3Igc2ltaWxhclxuICAgIC8vIC0gUmVtb3ZlIGxlYWRpbmcgc2xhc2hlcyB0byBwcmV2ZW50IGVtcHR5IGZvbGRlcnNcbiAgICBsZXQgY2xlYW5DYWNoZUtleSA9IGNhY2hlS2V5O1xuXG4gICAgaWYgKGNhY2hlS2V5ID09PSBcIi9cIiB8fCBjYWNoZUtleSA9PT0gXCJcIikge1xuICAgICAgY2xlYW5DYWNoZUtleSA9IFwiaW5kZXhcIjtcbiAgICB9IGVsc2UgaWYgKGNhY2hlS2V5LnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICBjbGVhbkNhY2hlS2V5ID0gY2FjaGVLZXkuc2xpY2UoMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpvaW4odGhpcy5zM0NvbmZpZy5idWlsZElkLCBgJHtjbGVhbkNhY2hlS2V5fS5qc29uYCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN0b3JlRHluYW1vREJUYWdNYXBwaW5ncyhcbiAgICBzM0tleTogc3RyaW5nLFxuICAgIHRhZ3M6IHN0cmluZ1tdLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXBkYXRlUHJvbWlzZXMgPSB0YWdzLm1hcChhc3luYyAodGFnKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhZ0NhY2hlS2V5ID0gYCR7dGFnfSMke3MzS2V5fWA7XG4gICAgICAgIGNvbnN0IHVwZGF0ZUNvbW1hbmQgPSBuZXcgVXBkYXRlSXRlbUNvbW1hbmQoe1xuICAgICAgICAgIFRhYmxlTmFtZTogdGhpcy5keW5hbW9Db25maWcudGFibGVOYW1lLFxuICAgICAgICAgIEtleToge1xuICAgICAgICAgICAgcGs6IHsgUzogdGhpcy5keW5hbW9Db25maWcuYnVpbGRJZCB9LFxuICAgICAgICAgICAgc2s6IHsgUzogdGFnQ2FjaGVLZXkgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFVwZGF0ZUV4cHJlc3Npb246XG4gICAgICAgICAgICBcIlNFVCBjcmVhdGVkQXQgPSBpZl9ub3RfZXhpc3RzKGNyZWF0ZWRBdCwgOm5vdyksIHJldmFsaWRhdGVkQXQgPSA6bm93XCIsXG4gICAgICAgICAgRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlczoge1xuICAgICAgICAgICAgXCI6bm93XCI6IHsgTjogRGF0ZS5ub3coKS50b1N0cmluZygpIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5keW5hbW9DbGllbnQuc2VuZCh1cGRhdGVDb21tYW5kKTtcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbCh1cGRhdGVQcm9taXNlcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBzdG9yaW5nIER5bmFtb0RCIHRhZyBtYXBwaW5nczpcIiwgZXJyb3IpO1xuICAgICAgLy8gRG9uJ3QgdGhyb3cgLSBjYWNoZSBzdG9yYWdlIHNob3VsZCBjb250aW51ZSBldmVuIGlmIHRhZyBtYXBwaW5nIGZhaWxzXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja0lmUmV2YWxpZGF0ZWQoXG4gICAgY2FjaGVMYXN0TW9kaWZpZWQ6IG51bWJlcixcbiAgICB0YWdzOiBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENoZWNrIGVhY2ggdGFnIHRvIHNlZSBpZiBpdCBoYXMgYmVlbiByZXZhbGlkYXRlZCBhZnRlciB0aGUgY2FjaGUgd2FzIGNyZWF0ZWRcbiAgICAgIGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcbiAgICAgICAgY29uc3QgcXVlcnlDb21tYW5kID0gbmV3IFF1ZXJ5Q29tbWFuZCh7XG4gICAgICAgICAgVGFibGVOYW1lOiB0aGlzLmR5bmFtb0NvbmZpZy50YWJsZU5hbWUsXG4gICAgICAgICAgS2V5Q29uZGl0aW9uRXhwcmVzc2lvbjogXCJwayA9IDpwayBBTkQgYmVnaW5zX3dpdGgoc2ssIDpza1ByZWZpeClcIixcbiAgICAgICAgICBFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzOiB7XG4gICAgICAgICAgICBcIjpwa1wiOiB7IFM6IHRoaXMuZHluYW1vQ29uZmlnLmJ1aWxkSWQgfSxcbiAgICAgICAgICAgIFwiOnNrUHJlZml4XCI6IHsgUzogYCR7dGFnfSNgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBQcm9qZWN0aW9uRXhwcmVzc2lvbjogXCJyZXZhbGlkYXRlZEF0XCIsXG4gICAgICAgICAgTGltaXQ6IDEsIC8vIFdlIG9ubHkgbmVlZCB0byBjaGVjayBpZiBhbnkgZW50cnkgZXhpc3RzIHdpdGggdGhpcyB0YWdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcXVlcnlSZXNwb25zZSA9IGF3YWl0IHRoaXMuZHluYW1vQ2xpZW50LnNlbmQocXVlcnlDb21tYW5kKTtcblxuICAgICAgICBpZiAocXVlcnlSZXNwb25zZS5JdGVtcyAmJiBxdWVyeVJlc3BvbnNlLkl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCByZXZhbGlkYXRlZEF0ID0gcXVlcnlSZXNwb25zZS5JdGVtc1swXS5yZXZhbGlkYXRlZEF0Py5OO1xuICAgICAgICAgIGlmIChyZXZhbGlkYXRlZEF0ICYmIHBhcnNlSW50KHJldmFsaWRhdGVkQXQpID4gY2FjaGVMYXN0TW9kaWZpZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGVidWcoXG4gICAgICAgICAgICAgIGBUYWcgJHt0YWd9IHdhcyByZXZhbGlkYXRlZCBhdCAke3JldmFsaWRhdGVkQXR9LCBjYWNoZSBjcmVhdGVkIGF0ICR7Y2FjaGVMYXN0TW9kaWZpZWR9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gQ2FjaGUgaXMgaW52YWxpZGF0ZWRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlOyAvLyBDYWNoZSBpcyBzdGlsbCB2YWxpZFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgY2hlY2tpbmcgY2FjaGUgcmV2YWxpZGF0aW9uOlwiLCBlcnJvcik7XG4gICAgICAvLyBPbiBlcnJvciwgYXNzdW1lIGNhY2hlIGlzIHZhbGlkIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGNhY2hlIG1pc3Nlc1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGVsZXRlUzNFbnRyeShzM0tleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghdGhpcy5zM0NvbmZpZy5idWNrZXROYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVsZXRlQ29tbWFuZCA9IG5ldyBEZWxldGVPYmplY3RDb21tYW5kKHtcbiAgICAgICAgQnVja2V0OiB0aGlzLnMzQ29uZmlnLmJ1Y2tldE5hbWUsXG4gICAgICAgIEtleTogczNLZXksXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgdGhpcy5zM0NsaWVudC5zZW5kKGRlbGV0ZUNvbW1hbmQpO1xuICAgICAgdGhpcy5kZWJ1ZyhgRGVsZXRlZCBzdGFsZSBTMyBjYWNoZSBlbnRyeTogJHtzM0tleX1gKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gTG9nIGJ1dCBkb24ndCBmYWlsIC0gdGhlIGVudHJ5IG1pZ2h0IG5vdCBleGlzdCBpbiBTM1xuICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gZGVsZXRlIHN0YWxlIFMzIGNhY2hlIGVudHJ5ICR7czNLZXl9OmAsIGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
357
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtY2FjaGUtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyL3MzLWNhY2hlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0VBRUU7QUFDRixzREFBc0Q7QUFDdEQseUNBQWlDO0FBQ2pDLDhEQUlrQztBQUNsQyxrREFNNEI7QUFDNUIsa0RBQTZCO0FBYTdCLCtDQUE4RTtBQW9COUUsTUFBYSxjQUFjO0lBQ2pCLFFBQVEsQ0FBVztJQUNuQixZQUFZLENBQWlCO0lBQzdCLFFBQVEsQ0FBZ0I7SUFDeEIsWUFBWSxDQUE2QjtJQUN6QyxLQUFLLEdBQUcsSUFBQSxlQUFRLEVBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUV4RCxZQUFZLE9BQThCO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDO1FBRXRELHFFQUFxRTtRQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsVUFBVSxFQUNSLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVTtnQkFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEI7Z0JBQ3hDLEVBQUU7WUFDSixNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksV0FBVztZQUN6RSxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLElBQUksT0FBTztTQUM5QyxDQUFDO1FBRUYsMkVBQTJFO1FBQzNFLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsU0FBUyxFQUNQLE9BQU8sQ0FBQyxZQUFZLEVBQUUsU0FBUztnQkFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0M7Z0JBQzlDLEVBQUU7WUFDSixNQUFNLEVBQ0osT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFV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RUFBRSxLQUFLO2FBQ1gsQ0FBQyxDQUFDO1lBRUgsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsdURBQXVEO1lBQ3ZELE9BQU8sQ0FBQyxJQUFJLENBQUMseUNBQXlDLEtBQUssR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUEzYUQsd0NBMmFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgUzMgYW5kIER5bmFtb0RCIGNhY2hlIGhhbmRsZXIgZm9yIE5leHQuanMgaW5jcmVtZW50YWwgY2FjaGVcbiovXG4vKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQge1xuICBEeW5hbW9EQkNsaWVudCxcbiAgUXVlcnlDb21tYW5kLFxuICBVcGRhdGVJdGVtQ29tbWFuZCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1keW5hbW9kYlwiO1xuaW1wb3J0IHtcbiAgUzNDbGllbnQsXG4gIEdldE9iamVjdENvbW1hbmQsXG4gIFB1dE9iamVjdENvbW1hbmQsXG4gIERlbGV0ZU9iamVjdENvbW1hbmQsXG4gIE5vU3VjaEtleSxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zM1wiO1xuaW1wb3J0IGdldERlYnVnIGZyb20gXCJkZWJ1Z1wiO1xuaW1wb3J0IHtcbiAgQ2FjaGVIYW5kbGVyLFxuICBDYWNoZUhhbmRsZXJWYWx1ZSxcbiAgQ2FjaGVIYW5kbGVyQ29udGV4dCxcbn0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL2luY3JlbWVudGFsLWNhY2hlXCI7XG5pbXBvcnQge1xuICBJbmNyZW1lbnRhbENhY2hlVmFsdWUsXG4gIEdldEluY3JlbWVudGFsRmV0Y2hDYWNoZUNvbnRleHQsXG4gIEdldEluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUNvbnRleHQsXG4gIFNldEluY3JlbWVudGFsRmV0Y2hDYWNoZUNvbnRleHQsXG4gIFNldEluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUNvbnRleHQsXG59IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3Jlc3BvbnNlLWNhY2hlXCI7XG5pbXBvcnQgeyBzZXJpYWxpemVDYWNoZVZhbHVlLCBwYXJzZUNhY2hlVmFsdWUsIGdldFRhZ3MgfSBmcm9tIFwiLi9jYWNoZS11dGlsc1wiO1xuXG5pbnRlcmZhY2UgUzNDYWNoZUNvbmZpZyB7XG4gIGJ1Y2tldE5hbWU6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIGJ1aWxkSWQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIER5bmFtb0RCUmV2YWxpZGF0aW9uQ29uZmlnIHtcbiAgdGFibGVOYW1lOiBzdHJpbmc7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICBidWlsZElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUzNDYWNoZUhhbmRsZXJPcHRpb25zIHtcbiAgY29udGV4dDogQ2FjaGVIYW5kbGVyQ29udGV4dDtcbiAgczNDb25maWc/OiBQYXJ0aWFsPFMzQ2FjaGVDb25maWc+O1xuICBkeW5hbW9Db25maWc/OiBQYXJ0aWFsPER5bmFtb0RCUmV2YWxpZGF0aW9uQ29uZmlnPjtcbn1cblxuZXhwb3J0IGNsYXNzIFMzQ2FjaGVIYW5kbGVyIGltcGxlbWVudHMgQ2FjaGVIYW5kbGVyIHtcbiAgcHJpdmF0ZSBzM0NsaWVudDogUzNDbGllbnQ7XG4gIHByaXZhdGUgZHluYW1vQ2xpZW50OiBEeW5hbW9EQkNsaWVudDtcbiAgcHJpdmF0ZSBzM0NvbmZpZzogUzNDYWNoZUNvbmZpZztcbiAgcHJpdmF0ZSBkeW5hbW9Db25maWc6IER5bmFtb0RCUmV2YWxpZGF0aW9uQ29uZmlnO1xuICBwcml2YXRlIGRlYnVnID0gZ2V0RGVidWcoXCJjZGstbmV4dGpzOmNhY2hlLWhhbmRsZXI6czNcIik7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUzNDYWNoZUhhbmRsZXJPcHRpb25zKSB7XG4gICAgY29uc3QgYnVpbGRJZCA9IHByb2Nlc3MuZW52LkNES19ORVhUSlNfQlVJTERfSUQgfHwgXCJcIjtcblxuICAgIC8vIEluaXRpYWxpemUgUzMgY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcyBhbmQgb3B0aW9uc1xuICAgIHRoaXMuczNDb25maWcgPSB7XG4gICAgICBidWNrZXROYW1lOlxuICAgICAgICBvcHRpb25zLnMzQ29uZmlnPy5idWNrZXROYW1lIHx8XG4gICAgICAgIHByb2Nlc3MuZW52LkNES19ORVhUSlNfQ0FDSEVfQlVDS0VUX05BTUUgfHxcbiAgICAgICAgXCJcIixcbiAgICAgIHJlZ2lvbjogb3B0aW9ucy5zM0NvbmZpZz8ucmVnaW9uIHx8IHByb2Nlc3MuZW52LkFXU19SRUdJT04gfHwgXCJ1cy1lYXN0LTFcIixcbiAgICAgIGJ1aWxkSWQ6IG9wdGlvbnMuczNDb25maWc/LmJ1aWxkSWQgfHwgYnVpbGRJZCxcbiAgICB9O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBEeW5hbW9EQiBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZCBvcHRpb25zXG4gICAgdGhpcy5keW5hbW9Db25maWcgPSB7XG4gICAgICB0YWJsZU5hbWU6XG4gICAgICAgIG9wdGlvbnMuZHluYW1vQ29uZmlnPy50YWJsZU5hbWUgfHxcbiAgICAgICAgcHJvY2Vzcy5lbnYuQ0RLX05FWFRKU19SRVZBTElEQVRJT05fVEFCTEVfTkFNRSB8fFxuICAgICAgICBcIlwiLFxuICAgICAgcmVnaW9uOlxuICAgICAgICBvcHRpb25zLmR5bmFtb0NvbmZpZz8ucmVnaW9uIHx8IHByb2Nlc3MuZW52LkFXU19SRUdJT04gfHwgXCJ1cy1lYXN0LTFcIixcbiAgICAgIGJ1aWxkSWQ6IG9wdGlvbnMuZHluYW1vQ29uZmlnPy5idWlsZElkIHx8IGJ1aWxkSWQsXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgQVdTIGNsaWVudHNcbiAgICB0aGlzLnMzQ2xpZW50ID0gbmV3IFMzQ2xpZW50KHsgcmVnaW9uOiB0aGlzLnMzQ29uZmlnLnJlZ2lvbiB9KTtcbiAgICB0aGlzLmR5bmFtb0NsaWVudCA9IG5ldyBEeW5hbW9EQkNsaWVudCh7XG4gICAgICByZWdpb246IHRoaXMuZHluYW1vQ29uZmlnLnJlZ2lvbixcbiAgICB9KTtcblxuICAgIGlmICghdGhpcy5zM0NvbmZpZy5idWNrZXROYW1lKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiQ0RLX05FWFRKU19DQUNIRV9CVUNLRVRfTkFNRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBub3Qgc2V0LCBTMyBjYWNoZSBkaXNhYmxlZFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZHluYW1vQ29uZmlnLnRhYmxlTmFtZSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIkNES19ORVhUSlNfUkVWQUxJREFUSU9OX1RBQkxFX05BTUUgZW52aXJvbm1lbnQgdmFyaWFibGUgbm90IHNldCwgcmV2YWxpZGF0aW9uIHRyYWNraW5nIGRpc2FibGVkXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghYnVpbGRJZCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIkNES19ORVhUSlNfQlVJTERfSUQgZW52aXJvbm1lbnQgdmFyaWFibGUgbm90IHNldCwgY2FjaGUgaXNvbGF0aW9uIG1heSBub3Qgd29yayBjb3JyZWN0bHlcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gTG9nIHRoZSBvcHRpb25zIGZvciBkZWJ1Z2dpbmcgKG9wdGlvbmFsIHVzYWdlIHRvIGF2b2lkIHVudXNlZCBwYXJhbWV0ZXIgd2FybmluZylcbiAgICBpZiAob3B0aW9ucy5jb250ZXh0LmRldikge1xuICAgICAgdGhpcy5kZWJ1ZyhcIlMzRHluYW1vQ2FjaGVIYW5kbGVyIGluaXRpYWxpemVkIGluIGRldmVsb3BtZW50IG1vZGVcIik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgY3R4OiBHZXRJbmNyZW1lbnRhbEZldGNoQ2FjaGVDb250ZXh0IHwgR2V0SW5jcmVtZW50YWxSZXNwb25zZUNhY2hlQ29udGV4dCxcbiAgKTogUHJvbWlzZTxDYWNoZUhhbmRsZXJWYWx1ZSB8IG51bGw+IHtcbiAgICB0cnkge1xuICAgICAgLy8gTG9nIGNvbnRleHQgZm9yIGRlYnVnZ2luZyAob3B0aW9uYWwgdXNhZ2UgdG8gYXZvaWQgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nKVxuICAgICAgaWYgKGN0eC5raW5kKSB7XG4gICAgICAgIHRoaXMuZGVidWcoXG4gICAgICAgICAgYFMzIGNhY2hlIGdldCBvcGVyYXRpb24gZm9yICR7Y2FjaGVLZXl9IHdpdGgga2luZDogJHtjdHgua2luZH1gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuczNDb25maWcuYnVja2V0TmFtZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgczNLZXkgPSB0aGlzLmJ1aWxkUzNLZXkoY2FjaGVLZXkpO1xuXG4gICAgICBjb25zdCBjb21tYW5kID0gbmV3IEdldE9iamVjdENvbW1hbmQoe1xuICAgICAgICBCdWNrZXQ6IHRoaXMuczNDb25maWcuYnVja2V0TmFtZSxcbiAgICAgICAgS2V5OiBzM0tleSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuczNDbGllbnQuc2VuZChjb21tYW5kKTtcblxuICAgICAgaWYgKCFyZXNwb25zZS5Cb2R5KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgZGlmZmVyZW50IGNvbnRlbnQgdHlwZXMgYXBwcm9wcmlhdGVseSBmb3IgZG9jdW1lbnRlZCBmb3JtYXRzXG4gICAgICBsZXQgY2FjaGVWYWx1ZTogQ2FjaGVIYW5kbGVyVmFsdWU7XG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlc3BvbnNlLkNvbnRlbnRUeXBlIHx8IFwiYXBwbGljYXRpb24vanNvblwiO1xuXG4gICAgICAvLyBIYW5kbGUgdGV4dC1iYXNlZCBkYXRhIChKU09OLCBIVE1MLCBwbGFpbiB0ZXh0KSAtIGFsbCBkb2N1bWVudGVkIGZvcm1hdHMgYXJlIHRleHQtYmFzZWRcbiAgICAgIGNvbnN0IGJvZHlTdHJpbmcgPSBhd2FpdCByZXNwb25zZS5Cb2R5LnRyYW5zZm9ybVRvU3RyaW5nKFwidXRmLThcIik7XG5cbiAgICAgIGlmIChjb250ZW50VHlwZS5pbmNsdWRlcyhcImFwcGxpY2F0aW9uL2pzb25cIikpIHtcbiAgICAgICAgLy8gUGFyc2UgdGhlIHN0b3JlZCBDYWNoZUhhbmRsZXJWYWx1ZSBkaXJlY3RseVxuICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHBhcnNlQ2FjaGVWYWx1ZShib2R5U3RyaW5nKTtcblxuICAgICAgICAvLyBFeHRyYWN0IHRoZSBhY3R1YWwgQ2FjaGVIYW5kbGVyVmFsdWUgKHdpdGhvdXQgdGFncykgZm9yIHJldHVyblxuICAgICAgICBjYWNoZVZhbHVlID0ge1xuICAgICAgICAgIGxhc3RNb2RpZmllZDogcGFyc2VkVmFsdWUubGFzdE1vZGlmaWVkLFxuICAgICAgICAgIHZhbHVlOiBwYXJzZWRWYWx1ZS52YWx1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBDaGVjayBpZiBjYWNoZSBoYXMgYmVlbiBpbnZhbGlkYXRlZCBieSB0YWcgcmV2YWxpZGF0aW9uXG4gICAgICAgIGNvbnN0IHN0b3JlZFRhZ3MgPSBwYXJzZWRWYWx1ZS50YWdzIHx8IFtdO1xuICAgICAgICBpZiAoc3RvcmVkVGFncy5sZW5ndGggPiAwICYmIHRoaXMuZHluYW1vQ29uZmlnLnRhYmxlTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGlzSW52YWxpZGF0ZWQgPSBhd2FpdCB0aGlzLmNoZWNrSWZSZXZhbGlkYXRlZChcbiAgICAgICAgICAgIGNhY2hlVmFsdWUubGFzdE1vZGlmaWVkLFxuICAgICAgICAgICAgc3RvcmVkVGFncyxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChpc0ludmFsaWRhdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnKGBTMyBDQUNIRSBJTlZBTElEQVRFRCBCWSBUQUc6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICAgICAgICAvLyBEZWxldGUgdGhlIHN0YWxlIFMzIGVudHJ5XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZVMzRW50cnkoczNLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhgSW52YWxpZCBjb250ZW50IHR5cGU6ICR7Y29udGVudFR5cGV9YCk7XG4gICAgICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBzaW5jZSB3ZSBhbHdheXMgc3RvcmUgYXMgSlNPTiBub3dcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGVidWcoYFMzIENBQ0hFIEhJVDogJHtjYWNoZUtleX0gKCR7czNLZXl9KWApO1xuXG4gICAgICByZXR1cm4gY2FjaGVWYWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgTm9TdWNoS2V5KSB7XG4gICAgICAgIHRoaXMuZGVidWcoYFMzIENBQ0hFIE1JU1M6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBMb2cgYWN0dWFsIGVycm9ycyAobm90IGNhY2hlIG1pc3NlcylcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIHJldHJpZXZpbmcgY2FjaGUgZnJvbSBTMzpgLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzZXQoXG4gICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICBkYXRhOiBJbmNyZW1lbnRhbENhY2hlVmFsdWUgfCBudWxsLFxuICAgIGN0eDogU2V0SW5jcmVtZW50YWxGZXRjaENhY2hlQ29udGV4dCB8IFNldEluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUNvbnRleHQsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgLy8gRGVsZXRlIGZyb20gUzMgYW5kIER5bmFtb0RCXG4gICAgICAgIHRoaXMuZGVidWcoYFMzIENBQ0hFIERFTEVURTogJHtjYWNoZUtleX1gKTtcblxuICAgICAgICBpZiAoIXRoaXMuczNDb25maWcuYnVja2V0TmFtZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJ1aWxkIFMzIGtleSB3aXRob3V0IG5lZWRpbmcgdG8ga25vdyB0aGUga2luZFxuICAgICAgICBjb25zdCBzM0tleSA9IHRoaXMuYnVpbGRTM0tleShjYWNoZUtleSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkZWxldGVDb21tYW5kID0gbmV3IERlbGV0ZU9iamVjdENvbW1hbmQoe1xuICAgICAgICAgICAgQnVja2V0OiB0aGlzLnMzQ29uZmlnLmJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBLZXk6IHMzS2V5LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGF3YWl0IHRoaXMuczNDbGllbnQuc2VuZChkZWxldGVDb21tYW5kKTtcbiAgICAgICAgICB0aGlzLmRlYnVnKGBTMyBDQUNIRSBERUxFVEVEOiAke3MzS2V5fWApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIE5vU3VjaEtleSkge1xuICAgICAgICAgICAgdGhpcy5kZWJ1ZyhgRmFpbGVkIHRvIGRlbGV0ZSBTMyBrZXkgJHtzM0tleX06YCwgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRPRE86IEFsc28gZGVsZXRlIHRhZyBhc3NvY2lhdGlvbnMgZnJvbSBEeW5hbW9EQiBpZiBuZWVkZWRcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBEZWJ1ZyBsb2dnaW5nIHRvIHVuZGVyc3RhbmQgd2hhdCBkYXRhIGlzIGJlaW5nIGNhY2hlZFxuICAgICAgY29uc3QgdGFncyA9IGdldFRhZ3MoY3R4KTtcbiAgICAgIHRoaXMuZGVidWcoYFMzIENBQ0hFIFNFVDogS2V5OiAke2NhY2hlS2V5fSwgdGFnczogJHt0YWdzIHx8IFwibm9uZVwifWApO1xuXG4gICAgICAvLyBOb3RlOiBjdHgudGFncyBhcmUgYXZhaWxhYmxlIGJ1dCByZXZhbGlkYXRpb24gaXMgaGFuZGxlZCBzZXBhcmF0ZWx5IGluIHJldmFsaWRhdGVUYWcgbWV0aG9kXG4gICAgICAvLyBMb2cgdGFncyBmb3IgZGVidWdnaW5nIGlmIHByZXNlbnQgKG9ubHkgaW4gU2V0SW5jcmVtZW50YWxGZXRjaENhY2hlQ29udGV4dClcbiAgICAgIGlmICh0YWdzICYmIHRhZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmRlYnVnKGBTMyBjYWNoZSBlbnRyeSBmb3IgJHtjYWNoZUtleX0gaGFzIHRhZ3M6YCwgdGFncyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5zM0NvbmZpZy5idWNrZXROYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgczNLZXkgPSB0aGlzLmJ1aWxkUzNLZXkoY2FjaGVLZXkpO1xuXG4gICAgICAvLyBDcmVhdGUgQ2FjaGVIYW5kbGVyVmFsdWUgc3RydWN0dXJlIGZvciBTMyBzdG9yYWdlIHdpdGggdGFnc1xuICAgICAgY29uc3QgY2FjaGVIYW5kbGVyVmFsdWU6IENhY2hlSGFuZGxlclZhbHVlID0ge1xuICAgICAgICBsYXN0TW9kaWZpZWQ6IERhdGUubm93KCksXG4gICAgICAgIHZhbHVlOiBkYXRhLFxuICAgICAgfTtcblxuICAgICAgLy8gU3RvcmUgdGFncyB3aXRoIHRoZSBjYWNoZSBlbnRyeSBmb3IgcmV2YWxpZGF0aW9uIGNoZWNraW5nXG4gICAgICBjb25zdCBjYWNoZUVudHJ5V2l0aFRhZ3MgPSB7XG4gICAgICAgIC4uLmNhY2hlSGFuZGxlclZhbHVlLFxuICAgICAgICB0YWdzOiB0YWdzIHx8IFtdLFxuICAgICAgfTtcblxuICAgICAgLy8gU2VyaWFsaXplIHdpdGggY3VzdG9tIGhhbmRsaW5nIGZvciBNYXAgYW5kIEJ1ZmZlciBvYmplY3RzXG4gICAgICBjb25zdCBib2R5ID0gc2VyaWFsaXplQ2FjaGVWYWx1ZShjYWNoZUVudHJ5V2l0aFRhZ3MpO1xuXG4gICAgICBjb25zdCBjb21tYW5kID0gbmV3IFB1dE9iamVjdENvbW1hbmQoe1xuICAgICAgICBCdWNrZXQ6IHRoaXMuczNDb25maWcuYnVja2V0TmFtZSxcbiAgICAgICAgS2V5OiBzM0tleSxcbiAgICAgICAgQm9keTogYm9keSxcbiAgICAgICAgQ29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOFwiLCAvLyBBbHdheXMgSlNPTiBzaW5jZSB3ZSBzdG9yZSBDYWNoZUhhbmRsZXJWYWx1ZVxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHRoaXMuczNDbGllbnQuc2VuZChjb21tYW5kKTtcblxuICAgICAgdGhpcy5kZWJ1ZyhgUzMgQ0FDSEUgU1RPUkVEOiAke2NhY2hlS2V5fSAoJHtkYXRhLmtpbmR9KWApO1xuXG4gICAgICAvLyBTdG9yZSB0YWctdG8tY2FjaGUta2V5IG1hcHBpbmdzIGluIER5bmFtb0RCIGZvciByZXZhbGlkYXRpb25cbiAgICAgIGlmICh0YWdzICYmIHRhZ3MubGVuZ3RoID4gMCAmJiB0aGlzLmR5bmFtb0NvbmZpZy50YWJsZU5hbWUpIHtcbiAgICAgICAgdGhpcy5kZWJ1ZyhgU1RPUklORyBUQUdTOiAke2NhY2hlS2V5fSAtPiBbJHt0YWdzLmpvaW4oXCIsIFwiKX1dYCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmVEeW5hbW9EQlRhZ01hcHBpbmdzKHMzS2V5LCB0YWdzKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHN0b3JpbmcgY2FjaGUgdG8gUzM6XCIsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZXZhbGlkYXRlVGFnKHRhZzogc3RyaW5nIHwgc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0YWdzID0gQXJyYXkuaXNBcnJheSh0YWcpID8gdGFnIDogW3RhZ107XG4gICAgdGhpcy5kZWJ1ZyhgUkVWQUxJREFUSU5HIFRBR1M6IFske3RhZ3Muam9pbihcIiwgXCIpfV1gKTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoIXRoaXMuZHluYW1vQ29uZmlnLnRhYmxlTmFtZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2Nlc3MgYWxsIHRhZ3MgaW4gcGFyYWxsZWwgZm9yIGJldHRlciBwZXJmb3JtYW5jZVxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodGFncy5tYXAoKHQpID0+IHRoaXMucmV2YWxpZGF0ZVNpbmdsZVRhZyh0KSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgdXBkYXRpbmcgcmV2YWxpZGF0aW9uIG1ldGFkYXRhOlwiLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXZhbGlkYXRlU2luZ2xlVGFnKHRhZzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gUXVlcnkgYWxsIHBhdGhzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhZ1xuICAgIGNvbnN0IHF1ZXJ5Q29tbWFuZCA9IG5ldyBRdWVyeUNvbW1hbmQoe1xuICAgICAgVGFibGVOYW1lOiB0aGlzLmR5bmFtb0NvbmZpZy50YWJsZU5hbWUsXG4gICAgICBLZXlDb25kaXRpb25FeHByZXNzaW9uOiBcInBrID0gOnBrIEFORCBiZWdpbnNfd2l0aChzaywgOnNrUHJlZml4KVwiLFxuICAgICAgRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlczoge1xuICAgICAgICBcIjpwa1wiOiB7IFM6IHRoaXMuZHluYW1vQ29uZmlnLmJ1aWxkSWQgfSxcbiAgICAgICAgXCI6c2tQcmVmaXhcIjogeyBTOiBgJHt0YWd9I2AgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBxdWVyeVJlc3BvbnNlID0gYXdhaXQgdGhpcy5keW5hbW9DbGllbnQuc2VuZChxdWVyeUNvbW1hbmQpO1xuXG4gICAgaWYgKHF1ZXJ5UmVzcG9uc2UuSXRlbXMpIHtcbiAgICAgIC8vIEV4dHJhY3QgUzMga2V5cyBmcm9tIHNvcnQga2V5cyAoZm9ybWF0OiBcInRhZyNzM0tleVwiKVxuICAgICAgY29uc3QgY2FjaGVLZXlzID0gcXVlcnlSZXNwb25zZS5JdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3Qgc2sgPSBpdGVtLnNrPy5TO1xuICAgICAgICBpZiAoc2spIHtcbiAgICAgICAgICBjb25zdCBoYXNoSW5kZXggPSBzay5pbmRleE9mKFwiI1wiKTtcbiAgICAgICAgICByZXR1cm4gaGFzaEluZGV4ICE9PSAtMSA/IHNrLnN1YnN0cmluZyhoYXNoSW5kZXggKyAxKSA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgIHRoaXMuZGVidWcoXG4gICAgICAgIGBUQUcgJHt0YWd9OiBGb3VuZCAke2NhY2hlS2V5cy5sZW5ndGh9IGNhY2hlIGVudHJpZXMgdG8gaW52YWxpZGF0ZWAsXG4gICAgICApO1xuXG4gICAgICAvLyBVcGRhdGUgcmV2YWxpZGF0aW9uIHRpbWVzdGFtcCBmb3IgYWxsIGNhY2hlIGtleXMgd2l0aCB0aGlzIHRhZ1xuICAgICAgY29uc3QgdXBkYXRlUHJvbWlzZXMgPSBxdWVyeVJlc3BvbnNlLkl0ZW1zLm1hcChhc3luYyAoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBzayA9IGl0ZW0uc2s/LlM7XG4gICAgICAgIGlmIChzaykge1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZUNvbW1hbmQgPSBuZXcgVXBkYXRlSXRlbUNvbW1hbmQoe1xuICAgICAgICAgICAgVGFibGVOYW1lOiB0aGlzLmR5bmFtb0NvbmZpZy50YWJsZU5hbWUsXG4gICAgICAgICAgICBLZXk6IHtcbiAgICAgICAgICAgICAgcGs6IHsgUzogdGhpcy5keW5hbW9Db25maWcuYnVpbGRJZCB9LFxuICAgICAgICAgICAgICBzazogeyBTOiBzayB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFVwZGF0ZUV4cHJlc3Npb246IFwiU0VUIHJldmFsaWRhdGVkQXQgPSA6dGltZXN0YW1wXCIsXG4gICAgICAgICAgICBFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzOiB7XG4gICAgICAgICAgICAgIFwiOnRpbWVzdGFtcFwiOiB7IE46IERhdGUubm93KCkudG9TdHJpbmcoKSB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLmR5bmFtb0NsaWVudC5zZW5kKHVwZGF0ZUNvbW1hbmQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbCh1cGRhdGVQcm9taXNlcy5maWx0ZXIoQm9vbGVhbikpO1xuXG4gICAgICAvLyBEZWxldGUgdGhlIGNvcnJlc3BvbmRpbmcgUzMgY2FjaGUgZW50cmllcyB0byBpbnZhbGlkYXRlIHRoZW1cbiAgICAgIGlmICh0aGlzLnMzQ29uZmlnLmJ1Y2tldE5hbWUpIHtcbiAgICAgICAgY29uc3QgZGVsZXRlUHJvbWlzZXMgPSBjYWNoZUtleXMubWFwKGFzeW5jIChzM0tleSkgPT4ge1xuICAgICAgICAgIGlmIChzM0tleSkge1xuICAgICAgICAgICAgY29uc3QgZGVsZXRlQ29tbWFuZCA9IG5ldyBEZWxldGVPYmplY3RDb21tYW5kKHtcbiAgICAgICAgICAgICAgQnVja2V0OiB0aGlzLnMzQ29uZmlnLmJ1Y2tldE5hbWUsXG4gICAgICAgICAgICAgIEtleTogczNLZXksXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zM0NsaWVudC5zZW5kKGRlbGV0ZUNvbW1hbmQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgLy8gTG9nIGJ1dCBkb24ndCBmYWlsIC0gdGhlIGVudHJ5IG1pZ2h0IG5vdCBleGlzdCBpbiBTM1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEZhaWxlZCB0byBkZWxldGUgUzMgY2FjaGUgZW50cnkgJHtzM0tleX06YCwgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoZGVsZXRlUHJvbWlzZXMuZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyByZXNldFJlcXVlc3RDYWNoZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBUaGlzIGhhbmRsZXIgZG9lc24ndCBtYWludGFpbiByZXF1ZXN0LWxldmVsIGNhY2hlIHN0YXRlXG4gICAgLy8gVGhlIGFjdHVhbCBjYWNoZSBjbGVhcmluZyBpcyBoYW5kbGVkIGJ5IHRoZSBtZW1vcnkgY2FjaGUgaGFuZGxlclxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFMzS2V5KGNhY2hlS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFVzZSBCVUlMRF9JRCBwcmVmaXhpbmc6IHtidWlsZElkfS97Y2FjaGVLZXl9Lmpzb25cblxuICAgIC8vIEhhbmRsZSBlZGdlIGNhc2VzOlxuICAgIC8vIC0gUm9vdCBwYXRoIFwiL1wiIHNob3VsZCBiZWNvbWUgXCJpbmRleFwiIG9yIHNpbWlsYXJcbiAgICAvLyAtIFJlbW92ZSBsZWFkaW5nIHNsYXNoZXMgdG8gcHJldmVudCBlbXB0eSBmb2xkZXJzXG4gICAgbGV0IGNsZWFuQ2FjaGVLZXkgPSBjYWNoZUtleTtcblxuICAgIGlmIChjYWNoZUtleSA9PT0gXCIvXCIgfHwgY2FjaGVLZXkgPT09IFwiXCIpIHtcbiAgICAgIGNsZWFuQ2FjaGVLZXkgPSBcImluZGV4XCI7XG4gICAgfSBlbHNlIGlmIChjYWNoZUtleS5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgY2xlYW5DYWNoZUtleSA9IGNhY2hlS2V5LnNsaWNlKDEpO1xuICAgIH1cblxuICAgIHJldHVybiBqb2luKHRoaXMuczNDb25maWcuYnVpbGRJZCwgYCR7Y2xlYW5DYWNoZUtleX0uanNvbmApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzdG9yZUR5bmFtb0RCVGFnTWFwcGluZ3MoXG4gICAgczNLZXk6IHN0cmluZyxcbiAgICB0YWdzOiBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVwZGF0ZVByb21pc2VzID0gdGFncy5tYXAoYXN5bmMgKHRhZykgPT4ge1xuICAgICAgICBjb25zdCB0YWdDYWNoZUtleSA9IGAke3RhZ30jJHtzM0tleX1gO1xuICAgICAgICBjb25zdCB1cGRhdGVDb21tYW5kID0gbmV3IFVwZGF0ZUl0ZW1Db21tYW5kKHtcbiAgICAgICAgICBUYWJsZU5hbWU6IHRoaXMuZHluYW1vQ29uZmlnLnRhYmxlTmFtZSxcbiAgICAgICAgICBLZXk6IHtcbiAgICAgICAgICAgIHBrOiB7IFM6IHRoaXMuZHluYW1vQ29uZmlnLmJ1aWxkSWQgfSxcbiAgICAgICAgICAgIHNrOiB7IFM6IHRhZ0NhY2hlS2V5IH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBVcGRhdGVFeHByZXNzaW9uOlxuICAgICAgICAgICAgXCJTRVQgY3JlYXRlZEF0ID0gaWZfbm90X2V4aXN0cyhjcmVhdGVkQXQsIDpub3cpLCByZXZhbGlkYXRlZEF0ID0gOm5vd1wiLFxuICAgICAgICAgIEV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAgIFwiOm5vd1wiOiB7IE46IERhdGUubm93KCkudG9TdHJpbmcoKSB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuZHluYW1vQ2xpZW50LnNlbmQodXBkYXRlQ29tbWFuZCk7XG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodXBkYXRlUHJvbWlzZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igc3RvcmluZyBEeW5hbW9EQiB0YWcgbWFwcGluZ3M6XCIsIGVycm9yKTtcbiAgICAgIC8vIERvbid0IHRocm93IC0gY2FjaGUgc3RvcmFnZSBzaG91bGQgY29udGludWUgZXZlbiBpZiB0YWcgbWFwcGluZyBmYWlsc1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tJZlJldmFsaWRhdGVkKFxuICAgIGNhY2hlTGFzdE1vZGlmaWVkOiBudW1iZXIsXG4gICAgdGFnczogc3RyaW5nW10sXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBDaGVjayBlYWNoIHRhZyB0byBzZWUgaWYgaXQgaGFzIGJlZW4gcmV2YWxpZGF0ZWQgYWZ0ZXIgdGhlIGNhY2hlIHdhcyBjcmVhdGVkXG4gICAgICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5Q29tbWFuZCA9IG5ldyBRdWVyeUNvbW1hbmQoe1xuICAgICAgICAgIFRhYmxlTmFtZTogdGhpcy5keW5hbW9Db25maWcudGFibGVOYW1lLFxuICAgICAgICAgIEtleUNvbmRpdGlvbkV4cHJlc3Npb246IFwicGsgPSA6cGsgQU5EIGJlZ2luc193aXRoKHNrLCA6c2tQcmVmaXgpXCIsXG4gICAgICAgICAgRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlczoge1xuICAgICAgICAgICAgXCI6cGtcIjogeyBTOiB0aGlzLmR5bmFtb0NvbmZpZy5idWlsZElkIH0sXG4gICAgICAgICAgICBcIjpza1ByZWZpeFwiOiB7IFM6IGAke3RhZ30jYCB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgUHJvamVjdGlvbkV4cHJlc3Npb246IFwicmV2YWxpZGF0ZWRBdFwiLFxuICAgICAgICAgIExpbWl0OiAxLCAvLyBXZSBvbmx5IG5lZWQgdG8gY2hlY2sgaWYgYW55IGVudHJ5IGV4aXN0cyB3aXRoIHRoaXMgdGFnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UmVzcG9uc2UgPSBhd2FpdCB0aGlzLmR5bmFtb0NsaWVudC5zZW5kKHF1ZXJ5Q29tbWFuZCk7XG5cbiAgICAgICAgaWYgKHF1ZXJ5UmVzcG9uc2UuSXRlbXMgJiYgcXVlcnlSZXNwb25zZS5JdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgcmV2YWxpZGF0ZWRBdCA9IHF1ZXJ5UmVzcG9uc2UuSXRlbXNbMF0ucmV2YWxpZGF0ZWRBdD8uTjtcbiAgICAgICAgICBpZiAocmV2YWxpZGF0ZWRBdCAmJiBwYXJzZUludChyZXZhbGlkYXRlZEF0KSA+IGNhY2hlTGFzdE1vZGlmaWVkKSB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnKFxuICAgICAgICAgICAgICBgVGFnICR7dGFnfSB3YXMgcmV2YWxpZGF0ZWQgYXQgJHtyZXZhbGlkYXRlZEF0fSwgY2FjaGUgY3JlYXRlZCBhdCAke2NhY2hlTGFzdE1vZGlmaWVkfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIENhY2hlIGlzIGludmFsaWRhdGVkXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTsgLy8gQ2FjaGUgaXMgc3RpbGwgdmFsaWRcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGNoZWNraW5nIGNhY2hlIHJldmFsaWRhdGlvbjpcIiwgZXJyb3IpO1xuICAgICAgLy8gT24gZXJyb3IsIGFzc3VtZSBjYWNoZSBpcyB2YWxpZCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBjYWNoZSBtaXNzZXNcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlbGV0ZVMzRW50cnkoczNLZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXRoaXMuczNDb25maWcuYnVja2V0TmFtZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRlbGV0ZUNvbW1hbmQgPSBuZXcgRGVsZXRlT2JqZWN0Q29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogdGhpcy5zM0NvbmZpZy5idWNrZXROYW1lLFxuICAgICAgICBLZXk6IHMzS2V5LFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHRoaXMuczNDbGllbnQuc2VuZChkZWxldGVDb21tYW5kKTtcbiAgICAgIHRoaXMuZGVidWcoYERlbGV0ZWQgc3RhbGUgUzMgY2FjaGUgZW50cnk6ICR7czNLZXl9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIExvZyBidXQgZG9uJ3QgZmFpbCAtIHRoZSBlbnRyeSBtaWdodCBub3QgZXhpc3QgaW4gUzNcbiAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIGRlbGV0ZSBzdGFsZSBTMyBjYWNoZSBlbnRyeSAke3MzS2V5fTpgLCBlcnJvcik7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,9 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.PostDeployFunction = void 0;
4
37
  // ~~ Generated by projen. To modify, edit .projenrc.ts and run "pnpm dlx projen".
5
- const path = require("path");
6
- const lambda = require("aws-cdk-lib/aws-lambda");
38
+ const path = __importStar(require("path"));
39
+ const lambda = __importStar(require("aws-cdk-lib/aws-lambda"));
7
40
  /**
8
41
  * An AWS Lambda function which executes src/lambdas/post-deploy/post-deploy.
9
42
  */
@@ -19,4 +52,4 @@ class PostDeployFunction extends lambda.Function {
19
52
  }
20
53
  }
21
54
  exports.PostDeployFunction = PostDeployFunction;
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1kZXBsb3ktZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFtYmRhcy9wb3N0LWRlcGxveS9wb3N0LWRlcGxveS1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrRkFBa0Y7QUFDbEYsNkJBQTZCO0FBQzdCLGlEQUFpRDtBQVNqRDs7R0FFRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsTUFBTSxDQUFDLFFBQVE7SUFDckQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSwrQ0FBK0M7WUFDNUQsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDdEUsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHdEQUF3RCxDQUFDLENBQUM7U0FDNUcsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBVkQsZ0RBVUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wcyBmb3IgUG9zdERlcGxveUZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdERlcGxveUZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9sYW1iZGFzL3Bvc3QtZGVwbG95L3Bvc3QtZGVwbG95LlxuICovXG5leHBvcnQgY2xhc3MgUG9zdERlcGxveUZ1bmN0aW9uIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBQb3N0RGVwbG95RnVuY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgZGVzY3JpcHRpb246ICdzcmMvbGFtYmRhcy9wb3N0LWRlcGxveS9wb3N0LWRlcGxveS5sYW1iZGEudHMnLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBydW50aW1lOiBuZXcgbGFtYmRhLlJ1bnRpbWUoJ25vZGVqczI0LngnLCBsYW1iZGEuUnVudGltZUZhbWlseS5OT0RFSlMpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8uLi9hc3NldHMvbGFtYmRhcy9wb3N0LWRlcGxveS9wb3N0LWRlcGxveS5sYW1iZGEnKSksXG4gICAgfSk7XG4gIH1cbn0iXX0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1kZXBsb3ktZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFtYmRhcy9wb3N0LWRlcGxveS9wb3N0LWRlcGxveS1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrRkFBa0Y7QUFDbEYsMkNBQTZCO0FBQzdCLCtEQUFpRDtBQVNqRDs7R0FFRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsTUFBTSxDQUFDLFFBQVE7SUFDckQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSwrQ0FBK0M7WUFDNUQsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDdEUsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHdEQUF3RCxDQUFDLENBQUM7U0FDNUcsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBVkQsZ0RBVUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wcyBmb3IgUG9zdERlcGxveUZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdERlcGxveUZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9sYW1iZGFzL3Bvc3QtZGVwbG95L3Bvc3QtZGVwbG95LlxuICovXG5leHBvcnQgY2xhc3MgUG9zdERlcGxveUZ1bmN0aW9uIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBQb3N0RGVwbG95RnVuY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgZGVzY3JpcHRpb246ICdzcmMvbGFtYmRhcy9wb3N0LWRlcGxveS9wb3N0LWRlcGxveS5sYW1iZGEudHMnLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBydW50aW1lOiBuZXcgbGFtYmRhLlJ1bnRpbWUoJ25vZGVqczI0LngnLCBsYW1iZGEuUnVudGltZUZhbWlseS5OT0RFSlMpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8uLi9hc3NldHMvbGFtYmRhcy9wb3N0LWRlcGxveS9wb3N0LWRlcGxveS5sYW1iZGEnKSksXG4gICAgfSk7XG4gIH1cbn0iXX0=
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.handler = void 0;
4
- const debug_1 = require("debug");
7
+ const debug_1 = __importDefault(require("debug"));
5
8
  const create_invalidation_1 = require("./create-invalidation");
6
9
  const prune_cache_bucket_1 = require("./prune-cache-bucket");
7
10
  const prune_revalidation_table_1 = require("./prune-revalidation-table");
@@ -67,4 +70,4 @@ const handler = async (event, context) => {
67
70
  }
68
71
  };
69
72
  exports.handler = handler;
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1kZXBsb3kubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvcG9zdC1kZXBsb3kvcG9zdC1kZXBsb3kubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGlDQUE2QjtBQUM3QiwrREFBMkQ7QUFDM0QsNkRBQXdEO0FBQ3hELHlFQUFvRTtBQUNwRSx5Q0FBcUM7QUFFckMsb0NBQTBEO0FBRTFELE1BQU0sS0FBSyxHQUFHLElBQUEsZUFBUSxFQUFDLHdCQUF3QixDQUFDLENBQUM7QUFNakQ7Ozs7Ozs7R0FPRztBQUNJLE1BQU0sT0FBTyxHQUF3QyxLQUFLLEVBQy9ELEtBQUssRUFDTCxPQUFPLEVBQ1AsRUFBRTtJQUNGLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakIsSUFBSSxjQUFjLEdBQUcseUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQzlDLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxrQkFBbUMsQ0FBQztRQUN4RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckUsTUFBTSxFQUNKLE9BQU8sRUFDUCxlQUFlLEVBQ2YsOEJBQThCLEVBQzlCLEtBQUssRUFDTCxxQkFBcUIsRUFDckIsc0JBQXNCLEdBQ3ZCLEdBQUcsS0FBSyxDQUFDO1lBQ1YsTUFBTSxRQUFRLEdBQXVCLEVBQUUsQ0FBQztZQUN4QyxJQUFJLDhCQUE4QixFQUFFLENBQUM7Z0JBQ25DLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBQSx3Q0FBa0IsRUFBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUNELElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQ1gsSUFBQSxxQ0FBZ0IsRUFBQztvQkFDZixVQUFVLEVBQUUsZUFBZTtvQkFDM0IsY0FBYyxFQUFFLE9BQU87aUJBQ3hCLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUkscUJBQXFCLEVBQUUsQ0FBQztnQkFDMUIsUUFBUSxDQUFDLElBQUksQ0FDWCxJQUFBLGlEQUFzQixFQUFDO29CQUNyQixTQUFTLEVBQUUscUJBQXFCO29CQUNoQyxjQUFjLEVBQUUsT0FBTztpQkFDeEIsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO2dCQUMzQiw0QkFBNEI7Z0JBQzVCLFFBQVEsQ0FBQyxJQUFJLENBQ1gsSUFBQSxrQkFBTyxFQUFDO29CQUNOLFVBQVUsRUFBRSxzQkFBc0I7b0JBQ2xDLGNBQWMsRUFBRSxPQUFPO29CQUN2QixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQztpQkFDdkIsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVCLGNBQWMsR0FBRyx5QkFBaUIsQ0FBQyxPQUFPLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDTixjQUFjLEdBQUcseUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLElBQUEsbUJBQVcsRUFBQztZQUNoQixLQUFLO1lBQ0wsT0FBTztZQUNQLGNBQWM7WUFDZCxZQUFZLEVBQUUsRUFBRTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBOURXLFFBQUEsT0FBTyxXQThEbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VIYW5kbGVyIH0gZnJvbSBcImF3cy1sYW1iZGFcIjtcbmltcG9ydCBnZXREZWJ1ZyBmcm9tIFwiZGVidWdcIjtcbmltcG9ydCB7IGNyZWF0ZUludmFsaWRhdGlvbiB9IGZyb20gXCIuL2NyZWF0ZS1pbnZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHBydW5lQ2FjaGVCdWNrZXQgfSBmcm9tIFwiLi9wcnVuZS1jYWNoZS1idWNrZXRcIjtcbmltcG9ydCB7IHBydW5lUmV2YWxpZGF0aW9uVGFibGUgfSBmcm9tIFwiLi9wcnVuZS1yZXZhbGlkYXRpb24tdGFibGVcIjtcbmltcG9ydCB7IHBydW5lUzMgfSBmcm9tIFwiLi9wcnVuZS1zM1wiO1xuaW1wb3J0IHsgUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcyB9IGZyb20gXCIuLi8uLi9uZXh0anMtcG9zdC1kZXBsb3lcIjtcbmltcG9ydCB7IGNmblJlc3BvbnNlLCBDZm5SZXNwb25zZVN0YXR1cyB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKFwiY2RrLW5leHRqczpwb3N0LWRlcGxveVwiKTtcblxudHlwZSBSZXNvdXJjZVByb3BzID0gUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcyAmIHtcbiAgU2VydmljZVRva2VuOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFBlcmZvcm1zOlxuICogMS4gQ2xvdWRGcm9udCBJbnZhbGlkYXRpb25cbiAqIDIuIFBydW5lIGNhY2hlIGJ1Y2tldCBvZiBvbGQgQlVJTERfSUQgcHJlZml4ZWQgb2JqZWN0c1xuICogMy4gUHJ1bmUgRHluYW1vREIgcmV2YWxpZGF0aW9uIHRhYmxlIG9mIG9sZCBCVUlMRF9JRCBwcmVmaXhlZCBlbnRyaWVzXG4gKiA0LiBQcnVuZXMgb2JqZWN0cyBpbiBzdGF0aWMgYXNzZXRzIFMzIHRoYXQgZG8gbm90IGhhdmUgbWV0YWRhdGEgd2l0aCBjdXJyZW50IEJVSUxEX0lEIGFuZFxuICogd2VyZSBtb2RpZmllZCBvdmVyIGBtc1R0bGAgYWdvIChkZWZhdWx0IDMwIGRheXMpLlxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlcjogQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUhhbmRsZXIgPSBhc3luYyAoXG4gIGV2ZW50LFxuICBjb250ZXh0LFxuKSA9PiB7XG4gIGRlYnVnKHsgZXZlbnQgfSk7XG4gIGxldCByZXNwb25zZVN0YXR1cyA9IENmblJlc3BvbnNlU3RhdHVzLkZhaWxlZDtcbiAgdHJ5IHtcbiAgICBjb25zdCBwcm9wcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcyBhcyBSZXNvdXJjZVByb3BzO1xuICAgIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJDcmVhdGVcIiB8fCBldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJVcGRhdGVcIikge1xuICAgICAgY29uc3Qge1xuICAgICAgICBidWlsZElkLFxuICAgICAgICBjYWNoZUJ1Y2tldE5hbWUsXG4gICAgICAgIGNyZWF0ZUludmFsaWRhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICAgICAgbXNUdGwsXG4gICAgICAgIHJldmFsaWRhdGlvblRhYmxlTmFtZSxcbiAgICAgICAgc3RhdGljQXNzZXRzQnVja2V0TmFtZSxcbiAgICAgIH0gPSBwcm9wcztcbiAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHVua25vd24+W10gPSBbXTtcbiAgICAgIGlmIChjcmVhdGVJbnZhbGlkYXRpb25Db21tYW5kSW5wdXQpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChjcmVhdGVJbnZhbGlkYXRpb24oY3JlYXRlSW52YWxpZGF0aW9uQ29tbWFuZElucHV0KSk7XG4gICAgICB9XG4gICAgICBpZiAoY2FjaGVCdWNrZXROYW1lKSB7XG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgcHJ1bmVDYWNoZUJ1Y2tldCh7XG4gICAgICAgICAgICBidWNrZXROYW1lOiBjYWNoZUJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBjdXJyZW50QnVpbGRJZDogYnVpbGRJZCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXZhbGlkYXRpb25UYWJsZU5hbWUpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICBwcnVuZVJldmFsaWRhdGlvblRhYmxlKHtcbiAgICAgICAgICAgIHRhYmxlTmFtZTogcmV2YWxpZGF0aW9uVGFibGVOYW1lLFxuICAgICAgICAgICAgY3VycmVudEJ1aWxkSWQ6IGJ1aWxkSWQsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGljQXNzZXRzQnVja2V0TmFtZSkge1xuICAgICAgICAvLyB3aWxsIG5vdCBydW4gZm9yIHJlZ2lvbmFsXG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgcHJ1bmVTMyh7XG4gICAgICAgICAgICBidWNrZXROYW1lOiBzdGF0aWNBc3NldHNCdWNrZXROYW1lLFxuICAgICAgICAgICAgY3VycmVudEJ1aWxkSWQ6IGJ1aWxkSWQsXG4gICAgICAgICAgICBtc1R0bDogcGFyc2VJbnQobXNUdGwpLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgcmVzcG9uc2VTdGF0dXMgPSBDZm5SZXNwb25zZVN0YXR1cy5TdWNjZXNzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNwb25zZVN0YXR1cyA9IENmblJlc3BvbnNlU3RhdHVzLlN1Y2Nlc3M7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgY2ZuUmVzcG9uc2Uoe1xuICAgICAgZXZlbnQsXG4gICAgICBjb250ZXh0LFxuICAgICAgcmVzcG9uc2VTdGF0dXMsXG4gICAgICByZXNwb25zZURhdGE6IHt9LFxuICAgIH0pO1xuICB9XG59O1xuIl19
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1kZXBsb3kubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvcG9zdC1kZXBsb3kvcG9zdC1kZXBsb3kubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLGtEQUE2QjtBQUM3QiwrREFBMkQ7QUFDM0QsNkRBQXdEO0FBQ3hELHlFQUFvRTtBQUNwRSx5Q0FBcUM7QUFFckMsb0NBQTBEO0FBRTFELE1BQU0sS0FBSyxHQUFHLElBQUEsZUFBUSxFQUFDLHdCQUF3QixDQUFDLENBQUM7QUFNakQ7Ozs7Ozs7R0FPRztBQUNJLE1BQU0sT0FBTyxHQUF3QyxLQUFLLEVBQy9ELEtBQUssRUFDTCxPQUFPLEVBQ1AsRUFBRTtJQUNGLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakIsSUFBSSxjQUFjLEdBQUcseUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQzlDLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxrQkFBbUMsQ0FBQztRQUN4RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckUsTUFBTSxFQUNKLE9BQU8sRUFDUCxlQUFlLEVBQ2YsOEJBQThCLEVBQzlCLEtBQUssRUFDTCxxQkFBcUIsRUFDckIsc0JBQXNCLEdBQ3ZCLEdBQUcsS0FBSyxDQUFDO1lBQ1YsTUFBTSxRQUFRLEdBQXVCLEVBQUUsQ0FBQztZQUN4QyxJQUFJLDhCQUE4QixFQUFFLENBQUM7Z0JBQ25DLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBQSx3Q0FBa0IsRUFBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUNELElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQ1gsSUFBQSxxQ0FBZ0IsRUFBQztvQkFDZixVQUFVLEVBQUUsZUFBZTtvQkFDM0IsY0FBYyxFQUFFLE9BQU87aUJBQ3hCLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUkscUJBQXFCLEVBQUUsQ0FBQztnQkFDMUIsUUFBUSxDQUFDLElBQUksQ0FDWCxJQUFBLGlEQUFzQixFQUFDO29CQUNyQixTQUFTLEVBQUUscUJBQXFCO29CQUNoQyxjQUFjLEVBQUUsT0FBTztpQkFDeEIsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO2dCQUMzQiw0QkFBNEI7Z0JBQzVCLFFBQVEsQ0FBQyxJQUFJLENBQ1gsSUFBQSxrQkFBTyxFQUFDO29CQUNOLFVBQVUsRUFBRSxzQkFBc0I7b0JBQ2xDLGNBQWMsRUFBRSxPQUFPO29CQUN2QixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQztpQkFDdkIsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVCLGNBQWMsR0FBRyx5QkFBaUIsQ0FBQyxPQUFPLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDTixjQUFjLEdBQUcseUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLElBQUEsbUJBQVcsRUFBQztZQUNoQixLQUFLO1lBQ0wsT0FBTztZQUNQLGNBQWM7WUFDZCxZQUFZLEVBQUUsRUFBRTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBOURXLFFBQUEsT0FBTyxXQThEbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VIYW5kbGVyIH0gZnJvbSBcImF3cy1sYW1iZGFcIjtcbmltcG9ydCBnZXREZWJ1ZyBmcm9tIFwiZGVidWdcIjtcbmltcG9ydCB7IGNyZWF0ZUludmFsaWRhdGlvbiB9IGZyb20gXCIuL2NyZWF0ZS1pbnZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHBydW5lQ2FjaGVCdWNrZXQgfSBmcm9tIFwiLi9wcnVuZS1jYWNoZS1idWNrZXRcIjtcbmltcG9ydCB7IHBydW5lUmV2YWxpZGF0aW9uVGFibGUgfSBmcm9tIFwiLi9wcnVuZS1yZXZhbGlkYXRpb24tdGFibGVcIjtcbmltcG9ydCB7IHBydW5lUzMgfSBmcm9tIFwiLi9wcnVuZS1zM1wiO1xuaW1wb3J0IHsgUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcyB9IGZyb20gXCIuLi8uLi9uZXh0anMtcG9zdC1kZXBsb3lcIjtcbmltcG9ydCB7IGNmblJlc3BvbnNlLCBDZm5SZXNwb25zZVN0YXR1cyB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKFwiY2RrLW5leHRqczpwb3N0LWRlcGxveVwiKTtcblxudHlwZSBSZXNvdXJjZVByb3BzID0gUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcyAmIHtcbiAgU2VydmljZVRva2VuOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFBlcmZvcm1zOlxuICogMS4gQ2xvdWRGcm9udCBJbnZhbGlkYXRpb25cbiAqIDIuIFBydW5lIGNhY2hlIGJ1Y2tldCBvZiBvbGQgQlVJTERfSUQgcHJlZml4ZWQgb2JqZWN0c1xuICogMy4gUHJ1bmUgRHluYW1vREIgcmV2YWxpZGF0aW9uIHRhYmxlIG9mIG9sZCBCVUlMRF9JRCBwcmVmaXhlZCBlbnRyaWVzXG4gKiA0LiBQcnVuZXMgb2JqZWN0cyBpbiBzdGF0aWMgYXNzZXRzIFMzIHRoYXQgZG8gbm90IGhhdmUgbWV0YWRhdGEgd2l0aCBjdXJyZW50IEJVSUxEX0lEIGFuZFxuICogd2VyZSBtb2RpZmllZCBvdmVyIGBtc1R0bGAgYWdvIChkZWZhdWx0IDMwIGRheXMpLlxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlcjogQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUhhbmRsZXIgPSBhc3luYyAoXG4gIGV2ZW50LFxuICBjb250ZXh0LFxuKSA9PiB7XG4gIGRlYnVnKHsgZXZlbnQgfSk7XG4gIGxldCByZXNwb25zZVN0YXR1cyA9IENmblJlc3BvbnNlU3RhdHVzLkZhaWxlZDtcbiAgdHJ5IHtcbiAgICBjb25zdCBwcm9wcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcyBhcyBSZXNvdXJjZVByb3BzO1xuICAgIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJDcmVhdGVcIiB8fCBldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJVcGRhdGVcIikge1xuICAgICAgY29uc3Qge1xuICAgICAgICBidWlsZElkLFxuICAgICAgICBjYWNoZUJ1Y2tldE5hbWUsXG4gICAgICAgIGNyZWF0ZUludmFsaWRhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICAgICAgbXNUdGwsXG4gICAgICAgIHJldmFsaWRhdGlvblRhYmxlTmFtZSxcbiAgICAgICAgc3RhdGljQXNzZXRzQnVja2V0TmFtZSxcbiAgICAgIH0gPSBwcm9wcztcbiAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHVua25vd24+W10gPSBbXTtcbiAgICAgIGlmIChjcmVhdGVJbnZhbGlkYXRpb25Db21tYW5kSW5wdXQpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChjcmVhdGVJbnZhbGlkYXRpb24oY3JlYXRlSW52YWxpZGF0aW9uQ29tbWFuZElucHV0KSk7XG4gICAgICB9XG4gICAgICBpZiAoY2FjaGVCdWNrZXROYW1lKSB7XG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgcHJ1bmVDYWNoZUJ1Y2tldCh7XG4gICAgICAgICAgICBidWNrZXROYW1lOiBjYWNoZUJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBjdXJyZW50QnVpbGRJZDogYnVpbGRJZCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXZhbGlkYXRpb25UYWJsZU5hbWUpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICBwcnVuZVJldmFsaWRhdGlvblRhYmxlKHtcbiAgICAgICAgICAgIHRhYmxlTmFtZTogcmV2YWxpZGF0aW9uVGFibGVOYW1lLFxuICAgICAgICAgICAgY3VycmVudEJ1aWxkSWQ6IGJ1aWxkSWQsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGljQXNzZXRzQnVja2V0TmFtZSkge1xuICAgICAgICAvLyB3aWxsIG5vdCBydW4gZm9yIHJlZ2lvbmFsXG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgcHJ1bmVTMyh7XG4gICAgICAgICAgICBidWNrZXROYW1lOiBzdGF0aWNBc3NldHNCdWNrZXROYW1lLFxuICAgICAgICAgICAgY3VycmVudEJ1aWxkSWQ6IGJ1aWxkSWQsXG4gICAgICAgICAgICBtc1R0bDogcGFyc2VJbnQobXNUdGwpLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgcmVzcG9uc2VTdGF0dXMgPSBDZm5SZXNwb25zZVN0YXR1cy5TdWNjZXNzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNwb25zZVN0YXR1cyA9IENmblJlc3BvbnNlU3RhdHVzLlN1Y2Nlc3M7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgY2ZuUmVzcG9uc2Uoe1xuICAgICAgZXZlbnQsXG4gICAgICBjb250ZXh0LFxuICAgICAgcmVzcG9uc2VTdGF0dXMsXG4gICAgICByZXNwb25zZURhdGE6IHt9LFxuICAgIH0pO1xuICB9XG59O1xuIl19