cdk-nextjs 0.1.2 → 0.2.0
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.
- package/.jsii +154 -122
- package/API.md +63 -39
- package/assets/lambdas/assets-deployment/assets-deployment.lambda/assets-deployment.Dockerfile +1 -1
- package/assets/lambdas/assets-deployment/assets-deployment.lambda/index.js +18 -8
- package/assets/lambdas/assets-deployment/assets-deployment.lambda/patch-fetch.js +1 -0
- package/docs/breaking-changes.md +12 -0
- package/docs/notes.md +11 -9
- package/examples/README.md +2 -2
- package/lib/common.d.ts +10 -8
- package/lib/common.js +12 -10
- package/lib/generated-structs/OptionalNextjsAssetsDeploymentProps.d.ts +5 -0
- package/lib/generated-structs/OptionalNextjsAssetsDeploymentProps.js +1 -1
- package/lib/generated-structs/OptionalNextjsDistributionProps.d.ts +7 -7
- package/lib/generated-structs/OptionalNextjsDistributionProps.js +1 -1
- package/lib/lambdas/assets-deployment/assets-deployment.lambda.js +16 -8
- package/lib/lambdas/assets-deployment/fs-to-s3.d.ts +12 -1
- package/lib/lambdas/assets-deployment/fs-to-s3.js +16 -3
- package/lib/nextjs-assets-deployment.d.ts +7 -4
- package/lib/nextjs-assets-deployment.js +10 -7
- package/lib/nextjs-build/builder.Dockerfile +2 -2
- package/lib/nextjs-build/cache-handler.js +5 -1
- package/lib/nextjs-build/global-containers.Dockerfile +6 -5
- package/lib/nextjs-build/global-functions.Dockerfile +6 -5
- package/lib/nextjs-build/nextjs-build.d.ts +3 -1
- package/lib/nextjs-build/nextjs-build.js +12 -8
- package/lib/nextjs-build/regional-containers.Dockerfile +7 -4
- package/lib/nextjs-build/symlink.js +47 -0
- package/lib/nextjs-build/symlink.mjs +28 -0
- package/lib/nextjs-compute/nextjs-containers.js +1 -1
- package/lib/nextjs-compute/nextjs-functions.js +1 -1
- package/lib/nextjs-distribution.d.ts +9 -15
- package/lib/nextjs-distribution.js +15 -84
- package/lib/nextjs-file-system.js +5 -4
- package/lib/nextjs-invalidation.js +1 -1
- package/lib/nextjs-revalidation.js +1 -1
- package/lib/nextjs-static-assets.js +1 -1
- package/lib/nextjs-vpc.js +1 -1
- package/lib/root-constructs/nextjs-global-containers.js +5 -4
- package/lib/root-constructs/nextjs-global-functions.js +5 -5
- package/lib/root-constructs/nextjs-regional-containers.js +4 -3
- package/package.json +5 -8
- package/assets/lambdas/sign-fn-url/sign-fn-url.edge-lambda/index.js +0 -2024
- package/lib/lambdas/sign-fn-url/sign-fn-url-function.d.ts +0 -13
- package/lib/lambdas/sign-fn-url/sign-fn-url-function.js +0 -23
- package/lib/lambdas/sign-fn-url/sign-fn-url.edge-lambda.d.ts +0 -9
- package/lib/lambdas/sign-fn-url/sign-fn-url.edge-lambda.js +0 -35
- package/lib/lambdas/sign-fn-url/sign-request.d.ts +0 -28
- package/lib/lambdas/sign-fn-url/sign-request.js +0 -119
- package/lib/lambdas/sign-fn-url/sign-request.test.js +0 -129
- package/lib/nextjs-build/symlink-full-route-cache.d.ts +0 -1
- package/lib/nextjs-build/symlink-full-route-cache.js +0 -37
- package/lib/nextjs-build/symlink-full-route-cache.mjs +0 -23
- /package/lib/{lambdas/sign-fn-url/sign-request.test.d.ts → nextjs-build/symlink.d.ts} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handler = void 0;
|
|
4
|
-
const
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
5
|
const fs_to_fs_1 = require("./fs-to-fs");
|
|
6
6
|
const fs_to_s3_1 = require("./fs-to-s3");
|
|
7
7
|
const prune_s3_1 = require("./prune-s3");
|
|
@@ -9,17 +9,21 @@ const utils_1 = require("./utils");
|
|
|
9
9
|
const handler = async (event, context) => {
|
|
10
10
|
(0, utils_1.debug)({ event });
|
|
11
11
|
let responseStatus = utils_1.CfnResponseStatus.Failed;
|
|
12
|
+
/**
|
|
13
|
+
* Related to [Draft Mode](https://nextjs.org/docs/app/building-your-application/configuring/draft-mode)
|
|
14
|
+
* and required for `NextjsRevalidation` to do [on-demand revalidation](https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration#on-demand-revalidation-with-revalidatepath)
|
|
15
|
+
*/
|
|
12
16
|
let previewModeId = "";
|
|
13
17
|
try {
|
|
14
18
|
const props = event.ResourceProperties;
|
|
15
19
|
if (event.RequestType === "Create" || event.RequestType === "Update") {
|
|
16
|
-
const { actions } = props;
|
|
20
|
+
const { actions, nextjsType } = props;
|
|
17
21
|
for (const action of actions) {
|
|
18
22
|
if (action.type === "fs-to-fs") {
|
|
19
23
|
(0, fs_to_fs_1.fsToFs)(action);
|
|
20
24
|
}
|
|
21
25
|
else if (action.type === "fs-to-s3") {
|
|
22
|
-
await (0, fs_to_s3_1.fsToS3)(action);
|
|
26
|
+
await (0, fs_to_s3_1.fsToS3)(action, nextjsType);
|
|
23
27
|
}
|
|
24
28
|
else if (action.type === "prune-s3") {
|
|
25
29
|
await (0, prune_s3_1.pruneS3)(action);
|
|
@@ -46,10 +50,14 @@ const handler = async (event, context) => {
|
|
|
46
50
|
}
|
|
47
51
|
};
|
|
48
52
|
exports.handler = handler;
|
|
53
|
+
/**
|
|
54
|
+
* On first deployment there is no directory for images to be optimized into by
|
|
55
|
+
* Next.js so this creates directory for those images. Only runs once.
|
|
56
|
+
* This is unlike other cache directories which are created at build time.
|
|
57
|
+
*/
|
|
49
58
|
function initImageCache(imageCachePath) {
|
|
50
|
-
if (imageCachePath && !(0,
|
|
51
|
-
|
|
52
|
-
(0, fs_1.mkdirSync)(imageCachePath);
|
|
59
|
+
if (imageCachePath && !(0, node_fs_1.existsSync)(imageCachePath)) {
|
|
60
|
+
(0, node_fs_1.mkdirSync)(imageCachePath);
|
|
53
61
|
}
|
|
54
62
|
}
|
|
55
63
|
/**
|
|
@@ -57,7 +65,7 @@ function initImageCache(imageCachePath) {
|
|
|
57
65
|
* so we do it each time.
|
|
58
66
|
*/
|
|
59
67
|
function getPreviewModeId(prerenderManifestPath) {
|
|
60
|
-
const prerenderManifest = JSON.parse((0,
|
|
68
|
+
const prerenderManifest = JSON.parse((0, node_fs_1.readFileSync)(prerenderManifestPath, { encoding: "utf-8" }));
|
|
61
69
|
return prerenderManifest.preview.previewModeId;
|
|
62
70
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLWRlcGxveW1lbnQubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvYXNzZXRzLWRlcGxveW1lbnQvYXNzZXRzLWRlcGxveW1lbnQubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUE4RDtBQUU5RCx5Q0FBb0M7QUFDcEMseUNBQW9DO0FBQ3BDLHlDQUFxQztBQUNyQyxtQ0FBZ0U7QUFPekQsTUFBTSxPQUFPLEdBQXdDLEtBQUssRUFDL0QsS0FBSyxFQUNMLE9BQU8sRUFDUCxFQUFFO0lBQ0YsSUFBQSxhQUFLLEVBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLElBQUksY0FBYyxHQUFHLHlCQUFpQixDQUFDLE1BQU0sQ0FBQztJQUM5Qzs7O09BR0c7SUFDSCxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGtCQUFtQyxDQUFDO1FBQ3hELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNyRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztZQUN0QyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQy9CLElBQUEsaUJBQU0sRUFBQyxNQUFNLENBQUMsQ0FBQztnQkFDakIsQ0FBQztxQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3RDLE1BQU0sSUFBQSxpQkFBTSxFQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDbkMsQ0FBQztxQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3RDLE1BQU0sSUFBQSxrQkFBTyxFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQztZQUNELGNBQWMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckMsYUFBYSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzlELGNBQWMsR0FBRyx5QkFBaUIsQ0FBQyxPQUFPLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDTixjQUFjLEdBQUcseUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLElBQUEsbUJBQVcsRUFBQztZQUNoQixLQUFLO1lBQ0wsT0FBTztZQUNQLGNBQWM7WUFDZCxZQUFZLEVBQUUsRUFBRSxhQUFhLEVBQUU7U0FDaEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQztBQXhDVyxRQUFBLE9BQU8sV0F3Q2xCO0FBRUY7Ozs7R0FJRztBQUNILFNBQVMsY0FBYyxDQUFDLGNBQXNCO0lBQzVDLElBQUksY0FBYyxJQUFJLENBQUMsSUFBQSxvQkFBVSxFQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDbEQsSUFBQSxtQkFBUyxFQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxxQkFBNkI7SUFDckQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNsQyxJQUFBLHNCQUFZLEVBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FDM0QsQ0FBQztJQUNGLE9BQU8saUJBQWlCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlSGFuZGxlciB9IGZyb20gXCJhd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBmc1RvRnMgfSBmcm9tIFwiLi9mcy10by1mc1wiO1xuaW1wb3J0IHsgZnNUb1MzIH0gZnJvbSBcIi4vZnMtdG8tczNcIjtcbmltcG9ydCB7IHBydW5lUzMgfSBmcm9tIFwiLi9wcnVuZS1zM1wiO1xuaW1wb3J0IHsgY2ZuUmVzcG9uc2UsIENmblJlc3BvbnNlU3RhdHVzLCBkZWJ1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbVJlc291cmNlUHJvcGVydGllcyB9IGZyb20gXCIuLi8uLi9uZXh0anMtYXNzZXRzLWRlcGxveW1lbnRcIjtcblxudHlwZSBSZXNvdXJjZVByb3BzID0gQ3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzICYge1xuICBTZXJ2aWNlVG9rZW46IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyOiBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlSGFuZGxlciA9IGFzeW5jIChcbiAgZXZlbnQsXG4gIGNvbnRleHQsXG4pID0+IHtcbiAgZGVidWcoeyBldmVudCB9KTtcbiAgbGV0IHJlc3BvbnNlU3RhdHVzID0gQ2ZuUmVzcG9uc2VTdGF0dXMuRmFpbGVkO1xuICAvKipcbiAgICogUmVsYXRlZCB0byBbRHJhZnQgTW9kZV0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vY29uZmlndXJpbmcvZHJhZnQtbW9kZSlcbiAgICogYW5kIHJlcXVpcmVkIGZvciBgTmV4dGpzUmV2YWxpZGF0aW9uYCB0byBkbyBbb24tZGVtYW5kIHJldmFsaWRhdGlvbl0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vZGF0YS1mZXRjaGluZy9pbmNyZW1lbnRhbC1zdGF0aWMtcmVnZW5lcmF0aW9uI29uLWRlbWFuZC1yZXZhbGlkYXRpb24td2l0aC1yZXZhbGlkYXRlcGF0aClcbiAgICovXG4gIGxldCBwcmV2aWV3TW9kZUlkID0gXCJcIjtcbiAgdHJ5IHtcbiAgICBjb25zdCBwcm9wcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcyBhcyBSZXNvdXJjZVByb3BzO1xuICAgIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJDcmVhdGVcIiB8fCBldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJVcGRhdGVcIikge1xuICAgICAgY29uc3QgeyBhY3Rpb25zLCBuZXh0anNUeXBlIH0gPSBwcm9wcztcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBcImZzLXRvLWZzXCIpIHtcbiAgICAgICAgICBmc1RvRnMoYWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24udHlwZSA9PT0gXCJmcy10by1zM1wiKSB7XG4gICAgICAgICAgYXdhaXQgZnNUb1MzKGFjdGlvbiwgbmV4dGpzVHlwZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnR5cGUgPT09IFwicHJ1bmUtczNcIikge1xuICAgICAgICAgIGF3YWl0IHBydW5lUzMoYWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW5pdEltYWdlQ2FjaGUocHJvcHMuaW1hZ2VDYWNoZVBhdGgpO1xuICAgICAgcHJldmlld01vZGVJZCA9IGdldFByZXZpZXdNb2RlSWQocHJvcHMucHJlcmVuZGVyTWFuaWZlc3RQYXRoKTtcbiAgICAgIHJlc3BvbnNlU3RhdHVzID0gQ2ZuUmVzcG9uc2VTdGF0dXMuU3VjY2VzcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzcG9uc2VTdGF0dXMgPSBDZm5SZXNwb25zZVN0YXR1cy5TdWNjZXNzO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGNmblJlc3BvbnNlKHtcbiAgICAgIGV2ZW50LFxuICAgICAgY29udGV4dCxcbiAgICAgIHJlc3BvbnNlU3RhdHVzLFxuICAgICAgcmVzcG9uc2VEYXRhOiB7IHByZXZpZXdNb2RlSWQgfSxcbiAgICB9KTtcbiAgfVxufTtcblxuLyoqXG4gKiBPbiBmaXJzdCBkZXBsb3ltZW50IHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBmb3IgaW1hZ2VzIHRvIGJlIG9wdGltaXplZCBpbnRvIGJ5XG4gKiBOZXh0LmpzIHNvIHRoaXMgY3JlYXRlcyBkaXJlY3RvcnkgZm9yIHRob3NlIGltYWdlcy4gT25seSBydW5zIG9uY2UuXG4gKiBUaGlzIGlzIHVubGlrZSBvdGhlciBjYWNoZSBkaXJlY3RvcmllcyB3aGljaCBhcmUgY3JlYXRlZCBhdCBidWlsZCB0aW1lLlxuICovXG5mdW5jdGlvbiBpbml0SW1hZ2VDYWNoZShpbWFnZUNhY2hlUGF0aDogc3RyaW5nKSB7XG4gIGlmIChpbWFnZUNhY2hlUGF0aCAmJiAhZXhpc3RzU3luYyhpbWFnZUNhY2hlUGF0aCkpIHtcbiAgICBta2RpclN5bmMoaW1hZ2VDYWNoZVBhdGgpO1xuICB9XG59XG5cbi8qKlxuICogT25seSBuZWVkIHByZXZpZXcgbW9kZSBpZCBmb3IgYE5leHRqc0dsb2JhbEZ1bmN0aW9uc2AsIGJ1dCBlYXN5IHRvIGdldFxuICogc28gd2UgZG8gaXQgZWFjaCB0aW1lLlxuICovXG5mdW5jdGlvbiBnZXRQcmV2aWV3TW9kZUlkKHByZXJlbmRlck1hbmlmZXN0UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcHJlcmVuZGVyTWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgIHJlYWRGaWxlU3luYyhwcmVyZW5kZXJNYW5pZmVzdFBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KSxcbiAgKTtcbiAgcmV0dXJuIHByZXJlbmRlck1hbmlmZXN0LnByZXZpZXcucHJldmlld01vZGVJZDtcbn1cbiJdfQ==
|
|
@@ -1,2 +1,13 @@
|
|
|
1
|
+
import { NextjsType } from "../../common";
|
|
1
2
|
import type { FsToS3Action } from "../../nextjs-assets-deployment";
|
|
2
|
-
export declare function fsToS3(props: FsToS3Action): Promise<void>;
|
|
3
|
+
export declare function fsToS3(props: FsToS3Action, nextjsType?: NextjsType): Promise<void>;
|
|
4
|
+
interface CreateS3KeyProps {
|
|
5
|
+
keyPrefix?: string;
|
|
6
|
+
path: string;
|
|
7
|
+
basePath: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Create S3 Key given local path
|
|
11
|
+
*/
|
|
12
|
+
export declare function createS3Key({ keyPrefix, path, basePath }: CreateS3KeyProps): string;
|
|
13
|
+
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fsToS3 = fsToS3;
|
|
4
|
+
exports.createS3Key = createS3Key;
|
|
4
5
|
const node_fs_1 = require("node:fs");
|
|
5
6
|
const node_path_1 = require("node:path");
|
|
6
7
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
@@ -10,7 +11,8 @@ const mime = require("mime-types");
|
|
|
10
11
|
const common_1 = require("./common");
|
|
11
12
|
const s3_1 = require("./s3");
|
|
12
13
|
const utils_1 = require("./utils");
|
|
13
|
-
|
|
14
|
+
const common_2 = require("../../common");
|
|
15
|
+
async function fsToS3(props, nextjsType) {
|
|
14
16
|
const { destinationBucketName, destinationKeyPrefix, sourcePath } = props;
|
|
15
17
|
const sourceFilePaths = (0, common_1.listFilePaths)(sourcePath);
|
|
16
18
|
for await (const filePathChunk of (0, common_1.chunkArray)(sourceFilePaths, 100)) {
|
|
@@ -21,8 +23,19 @@ async function fsToS3(props) {
|
|
|
21
23
|
path,
|
|
22
24
|
basePath: sourcePath,
|
|
23
25
|
});
|
|
26
|
+
let body;
|
|
27
|
+
if (path.includes(".next/static/chunks/main-app-") &&
|
|
28
|
+
nextjsType === common_2.NextjsType.GLOBAL_FUNCTIONS) {
|
|
29
|
+
// see src/lambdas/asset-deployment/patch-fetch.js for why this is needed
|
|
30
|
+
const mainAppFileContent = (0, node_fs_1.readFileSync)(path);
|
|
31
|
+
const patchFetchContent = (0, node_fs_1.readFileSync)((0, node_path_1.join)(__dirname, "patch-fetch.js"));
|
|
32
|
+
body = patchFetchContent + "\n" + mainAppFileContent;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
body = (0, node_fs_1.createReadStream)(path);
|
|
36
|
+
}
|
|
24
37
|
return {
|
|
25
|
-
Body:
|
|
38
|
+
Body: body,
|
|
26
39
|
Bucket: destinationBucketName,
|
|
27
40
|
ContentType: contentType,
|
|
28
41
|
Key: key,
|
|
@@ -42,4 +55,4 @@ function createS3Key({ keyPrefix, path, basePath }) {
|
|
|
42
55
|
objectKeyParts.push((0, node_path_1.relative)(basePath, path));
|
|
43
56
|
return (0, node_path_1.join)(...objectKeyParts);
|
|
44
57
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtdG8tczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFtYmRhcy9hc3NldHMtZGVwbG95bWVudC9mcy10by1zMy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLHdCQXlDQztBQVVELGtDQUtDO0FBdEVELHFDQUFxRTtBQUNyRSx5Q0FBMkM7QUFHM0MsNkRBQTZEO0FBQzdELHNEQUE4QztBQUM5Qyw2REFBNkQ7QUFDN0QsbUNBQW1DO0FBQ25DLHFDQUFxRDtBQUNyRCw2QkFBMEI7QUFDMUIsbUNBQWdDO0FBQ2hDLHlDQUEwQztBQUduQyxLQUFLLFVBQVUsTUFBTSxDQUFDLEtBQW1CLEVBQUUsVUFBdUI7SUFDdkUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUMxRSxNQUFNLGVBQWUsR0FBRyxJQUFBLHNCQUFhLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEQsSUFBSSxLQUFLLEVBQUUsTUFBTSxhQUFhLElBQUksSUFBQSxtQkFBVSxFQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25FLE1BQU0sZUFBZSxHQUE0QixhQUFhLENBQUMsR0FBRyxDQUNoRSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1AsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUM7WUFDbkQsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDO2dCQUN0QixTQUFTLEVBQUUsb0JBQW9CO2dCQUMvQixJQUFJO2dCQUNKLFFBQVEsRUFBRSxVQUFVO2FBQ3JCLENBQUMsQ0FBQztZQUNILElBQUksSUFBeUIsQ0FBQztZQUM5QixJQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUM7Z0JBQzlDLFVBQVUsS0FBSyxtQkFBVSxDQUFDLGdCQUFnQixFQUMxQyxDQUFDO2dCQUNELHlFQUF5RTtnQkFDekUsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLHNCQUFZLEVBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlDLE1BQU0saUJBQWlCLEdBQUcsSUFBQSxzQkFBWSxFQUNwQyxJQUFBLGdCQUFJLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQ2xDLENBQUM7Z0JBQ0YsSUFBSSxHQUFHLGlCQUFpQixHQUFHLElBQUksR0FBRyxrQkFBa0IsQ0FBQztZQUN2RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxHQUFHLElBQUEsMEJBQWdCLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUNELE9BQU87Z0JBQ0wsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsTUFBTSxFQUFFLHFCQUFxQjtnQkFDN0IsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLEdBQUcsRUFBRSxHQUFHO2FBQ1QsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO1FBQ0YsSUFBQSxhQUFLLEVBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDNUIsSUFBSSxvQkFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDakQsQ0FDRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFPRDs7R0FFRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFvQjtJQUN6RSxNQUFNLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFDcEMsSUFBSSxTQUFTO1FBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUEsb0JBQVEsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QyxPQUFPLElBQUEsZ0JBQUksRUFBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtLCByZWFkRmlsZVN5bmMsIFJlYWRTdHJlYW0gfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgam9pbiwgcmVsYXRpdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBQdXRPYmplY3RDb21tYW5kSW5wdXQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBVcGxvYWQgfSBmcm9tIFwiQGF3cy1zZGsvbGliLXN0b3JhZ2VcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAqIGFzIG1pbWUgZnJvbSBcIm1pbWUtdHlwZXNcIjtcbmltcG9ydCB7IGNodW5rQXJyYXksIGxpc3RGaWxlUGF0aHMgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IHMzIH0gZnJvbSBcIi4vczNcIjtcbmltcG9ydCB7IGRlYnVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IE5leHRqc1R5cGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uXCI7XG5pbXBvcnQgdHlwZSB7IEZzVG9TM0FjdGlvbiB9IGZyb20gXCIuLi8uLi9uZXh0anMtYXNzZXRzLWRlcGxveW1lbnRcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZzVG9TMyhwcm9wczogRnNUb1MzQWN0aW9uLCBuZXh0anNUeXBlPzogTmV4dGpzVHlwZSkge1xuICBjb25zdCB7IGRlc3RpbmF0aW9uQnVja2V0TmFtZSwgZGVzdGluYXRpb25LZXlQcmVmaXgsIHNvdXJjZVBhdGggfSA9IHByb3BzO1xuICBjb25zdCBzb3VyY2VGaWxlUGF0aHMgPSBsaXN0RmlsZVBhdGhzKHNvdXJjZVBhdGgpO1xuICBmb3IgYXdhaXQgKGNvbnN0IGZpbGVQYXRoQ2h1bmsgb2YgY2h1bmtBcnJheShzb3VyY2VGaWxlUGF0aHMsIDEwMCkpIHtcbiAgICBjb25zdCBwdXRPYmplY3RJbnB1dHM6IFB1dE9iamVjdENvbW1hbmRJbnB1dFtdID0gZmlsZVBhdGhDaHVuay5tYXAoXG4gICAgICAocGF0aCkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWUubG9va3VwKHBhdGgpIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3Qga2V5ID0gY3JlYXRlUzNLZXkoe1xuICAgICAgICAgIGtleVByZWZpeDogZGVzdGluYXRpb25LZXlQcmVmaXgsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBiYXNlUGF0aDogc291cmNlUGF0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBib2R5OiBzdHJpbmcgfCBSZWFkU3RyZWFtO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcGF0aC5pbmNsdWRlcyhcIi5uZXh0L3N0YXRpYy9jaHVua3MvbWFpbi1hcHAtXCIpICYmXG4gICAgICAgICAgbmV4dGpzVHlwZSA9PT0gTmV4dGpzVHlwZS5HTE9CQUxfRlVOQ1RJT05TXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIHNlZSBzcmMvbGFtYmRhcy9hc3NldC1kZXBsb3ltZW50L3BhdGNoLWZldGNoLmpzIGZvciB3aHkgdGhpcyBpcyBuZWVkZWRcbiAgICAgICAgICBjb25zdCBtYWluQXBwRmlsZUNvbnRlbnQgPSByZWFkRmlsZVN5bmMocGF0aCk7XG4gICAgICAgICAgY29uc3QgcGF0Y2hGZXRjaENvbnRlbnQgPSByZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICBqb2luKF9fZGlybmFtZSwgXCJwYXRjaC1mZXRjaC5qc1wiKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGJvZHkgPSBwYXRjaEZldGNoQ29udGVudCArIFwiXFxuXCIgKyBtYWluQXBwRmlsZUNvbnRlbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYm9keSA9IGNyZWF0ZVJlYWRTdHJlYW0ocGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBCb2R5OiBib2R5LFxuICAgICAgICAgIEJ1Y2tldDogZGVzdGluYXRpb25CdWNrZXROYW1lLFxuICAgICAgICAgIENvbnRlbnRUeXBlOiBjb250ZW50VHlwZSxcbiAgICAgICAgICBLZXk6IGtleSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgKTtcbiAgICBkZWJ1Zyh7IHB1dE9iamVjdElucHV0cyB9KTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHB1dE9iamVjdElucHV0cy5tYXAoKGlucHV0KSA9PlxuICAgICAgICBuZXcgVXBsb2FkKHsgY2xpZW50OiBzMywgcGFyYW1zOiBpbnB1dCB9KS5kb25lKCksXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIENyZWF0ZVMzS2V5UHJvcHMge1xuICBrZXlQcmVmaXg/OiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgYmFzZVBhdGg6IHN0cmluZztcbn1cbi8qKlxuICogQ3JlYXRlIFMzIEtleSBnaXZlbiBsb2NhbCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTM0tleSh7IGtleVByZWZpeCwgcGF0aCwgYmFzZVBhdGggfTogQ3JlYXRlUzNLZXlQcm9wcykge1xuICBjb25zdCBvYmplY3RLZXlQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgaWYgKGtleVByZWZpeCkgb2JqZWN0S2V5UGFydHMucHVzaChrZXlQcmVmaXgpO1xuICBvYmplY3RLZXlQYXJ0cy5wdXNoKHJlbGF0aXZlKGJhc2VQYXRoLCBwYXRoKSk7XG4gIHJldHVybiBqb2luKC4uLm9iamVjdEtleVBhcnRzKTtcbn1cbiJdfQ==
|
|
@@ -4,6 +4,7 @@ import { AccessPoint } from "aws-cdk-lib/aws-efs";
|
|
|
4
4
|
import { DockerImageCode, DockerImageFunction } from "aws-cdk-lib/aws-lambda";
|
|
5
5
|
import { Bucket } from "aws-cdk-lib/aws-s3";
|
|
6
6
|
import { Construct } from "constructs";
|
|
7
|
+
import { NextjsType } from "./common";
|
|
7
8
|
import { OptionalDockerImageFunctionProps } from "./generated-structs/OptionalDockerImageFunctionProps";
|
|
8
9
|
import { NextjsBuild } from "./nextjs-build/nextjs-build";
|
|
9
10
|
export interface NextjsAssetDeploymentOverrides {
|
|
@@ -15,15 +16,16 @@ export interface NextjsAssetsDeploymentProps {
|
|
|
15
16
|
* @see {@link NextjsBuild.buildImageDigest}
|
|
16
17
|
*/
|
|
17
18
|
readonly buildImageDigest: string;
|
|
19
|
+
/**
|
|
20
|
+
* @see {@link NextjsBuild.containerMountPathForEfs}
|
|
21
|
+
*/
|
|
22
|
+
readonly containerMountPathForEfs: NextjsBuild["containerMountPathForEfs"];
|
|
18
23
|
/**
|
|
19
24
|
* @default true
|
|
20
25
|
*/
|
|
21
26
|
readonly debug?: boolean;
|
|
22
27
|
readonly dockerImageCode: DockerImageCode;
|
|
23
|
-
|
|
24
|
-
* @see {@link NextjsBuild.containerMountPathForEfs}
|
|
25
|
-
*/
|
|
26
|
-
readonly containerMountPathForEfs: NextjsBuild["containerMountPathForEfs"];
|
|
28
|
+
readonly nextjsType: NextjsType;
|
|
27
29
|
readonly overrides?: NextjsAssetDeploymentOverrides;
|
|
28
30
|
/**
|
|
29
31
|
* @see {@link NextjsBaseProps.relativePathToWorkspace}
|
|
@@ -98,6 +100,7 @@ export interface CustomResourceProperties {
|
|
|
98
100
|
buildImageDigest: string;
|
|
99
101
|
imageCachePath: string;
|
|
100
102
|
prerenderManifestPath: string;
|
|
103
|
+
nextjsType: NextjsType;
|
|
101
104
|
}
|
|
102
105
|
/**
|
|
103
106
|
* Deploys static assets to S3 and cache assets to EFS in Lambda Custom Resource.
|
|
@@ -48,11 +48,7 @@ class NextjsAssetsDeployment extends constructs_1.Construct {
|
|
|
48
48
|
const root = "/app";
|
|
49
49
|
const actions = [];
|
|
50
50
|
if (this.props.staticAssetsBucket?.bucketName) {
|
|
51
|
-
actions.push(
|
|
52
|
-
type: "fs-to-s3",
|
|
53
|
-
sourcePath: (0, posix_1.join)(root, "public"),
|
|
54
|
-
destinationBucketName: this.props.staticAssetsBucket.bucketName,
|
|
55
|
-
},
|
|
51
|
+
actions.push(
|
|
56
52
|
// static files
|
|
57
53
|
{
|
|
58
54
|
type: "fs-to-s3",
|
|
@@ -73,11 +69,18 @@ class NextjsAssetsDeployment extends constructs_1.Construct {
|
|
|
73
69
|
type: "fs-to-fs",
|
|
74
70
|
sourcePath: (0, posix_1.join)(root, ".next", "standalone", this.props.relativePathToWorkspace || "", ".next", "server", "app"),
|
|
75
71
|
destinationPath: (0, posix_1.join)(this.props.containerMountPathForEfs, common_1.FULL_ROUTE_CACHE_DIR),
|
|
72
|
+
},
|
|
73
|
+
// public dir
|
|
74
|
+
{
|
|
75
|
+
type: "fs-to-fs",
|
|
76
|
+
sourcePath: (0, posix_1.join)(root, "public"),
|
|
77
|
+
destinationPath: (0, posix_1.join)(this.props.containerMountPathForEfs, common_1.PUBLIC_DIR),
|
|
76
78
|
});
|
|
77
79
|
const properties = {
|
|
78
80
|
actions,
|
|
79
81
|
buildImageDigest: this.props.buildImageDigest,
|
|
80
82
|
imageCachePath: (0, posix_1.join)(this.props.containerMountPathForEfs, common_1.IMAGE_CACHE_DIR),
|
|
83
|
+
nextjsType: this.props.nextjsType,
|
|
81
84
|
prerenderManifestPath: (0, posix_1.join)(root, ".next", "prerender-manifest.json"),
|
|
82
85
|
};
|
|
83
86
|
return new aws_cdk_lib_1.CustomResource(this, "CustomResource", {
|
|
@@ -89,5 +92,5 @@ class NextjsAssetsDeployment extends constructs_1.Construct {
|
|
|
89
92
|
}
|
|
90
93
|
exports.NextjsAssetsDeployment = NextjsAssetsDeployment;
|
|
91
94
|
_a = JSII_RTTI_SYMBOL_1;
|
|
92
|
-
NextjsAssetsDeployment[_a] = { fqn: "cdk-nextjs.NextjsAssetsDeployment", version: "0.
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWFzc2V0cy1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25leHRqcy1hc3NldHMtZGVwbG95bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHNDQUFrQztBQUNsQyw2Q0FBdUQ7QUFHdkQsdURBS2dDO0FBRWhDLDJDQUF1QztBQUN2QyxxQ0FJa0I7QUFzR2xCOztHQUVHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxzQkFBUztJQVVuRCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFrQztRQUVsQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksWUFBWSxHQUE2QixTQUFTLENBQUM7UUFDdkQsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNCLFlBQVksR0FBRyx5QkFBWSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLFlBQVksR0FBRyx5QkFBWSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxDQUFDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxnQ0FBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQzdDLFlBQVk7WUFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlO1lBQ2hDLFVBQVUs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WSxFQUFFLGdDQUFnQztZQUM5QyxZQUFZLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVc7U0FDbkQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFoSEgsd0RBaUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gXCJwYXRoL3Bvc2l4XCI7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSwgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElWcGMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQWNjZXNzUG9pbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVmc1wiO1xuaW1wb3J0IHtcbiAgQXJjaGl0ZWN0dXJlLFxuICBEb2NrZXJJbWFnZUNvZGUsXG4gIERvY2tlckltYWdlRnVuY3Rpb24sXG4gIEZpbGVTeXN0ZW0sXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgREFUQV9DQUNIRV9ESVIsXG4gIEZVTExfUk9VVEVfQ0FDSEVfRElSLFxuICBJTUFHRV9DQUNIRV9ESVIsXG59IGZyb20gXCIuL2NvbW1vblwiO1xuaW1wb3J0IHsgT3B0aW9uYWxEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbERvY2tlckltYWdlRnVuY3Rpb25Qcm9wc1wiO1xuaW1wb3J0IHsgTmV4dGpzQnVpbGQgfSBmcm9tIFwiLi9uZXh0anMtYnVpbGQvbmV4dGpzLWJ1aWxkXCI7XG5pbXBvcnQgeyBOZXh0anNCYXNlUHJvcHMgfSBmcm9tIFwiLi9yb290LWNvbnN0cnVjdHMvbmV4dGpzLWJhc2UtcHJvcHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNBc3NldERlcGxveW1lbnRPdmVycmlkZXMge1xuICByZWFkb25seSBkb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHM/OiBPcHRpb25hbERvY2tlckltYWdlRnVuY3Rpb25Qcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMge1xuICByZWFkb25seSBhY2Nlc3NQb2ludDogQWNjZXNzUG9pbnQ7XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBOZXh0anNCdWlsZC5idWlsZEltYWdlRGlnZXN0fVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZURpZ2VzdDogc3RyaW5nO1xuICAvKipcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWc/OiBib29sZWFuO1xuICByZWFkb25seSBkb2NrZXJJbWFnZUNvZGU6IERvY2tlckltYWdlQ29kZTsgLy8gVE9ETzogcmVtb3ZlIGFuZCBidWlsZCBmcm9tIGNvbW1vbiBidWlsZGVyIGJhc2U/XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBOZXh0anNCdWlsZC5jb250YWluZXJNb3VudFBhdGhGb3JFZnN9XG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJNb3VudFBhdGhGb3JFZnM6IE5leHRqc0J1aWxkW1wiY29udGFpbmVyTW91bnRQYXRoRm9yRWZzXCJdO1xuICByZWFkb25seSBvdmVycmlkZXM/OiBOZXh0anNBc3NldERlcGxveW1lbnRPdmVycmlkZXM7XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBOZXh0anNCYXNlUHJvcHMucmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2V9XG4gICAqL1xuICByZWFkb25seSByZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGZvciBgTmV4dGpzVHlwZS5HbG9iYWxGdW5jdGlvbnNgIGFuZCBgTmV4dGpzVHlwZS5HbG9iYWxDb250YWluZXJzYFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGljQXNzZXRzQnVja2V0PzogQnVja2V0O1xuICByZWFkb25seSB2cGM6IElWcGM7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnNUb1MzQWN0aW9uIHtcbiAgdHlwZTogXCJmcy10by1zM1wiO1xuICBkZXN0aW5hdGlvbkJ1Y2tldE5hbWU6IHN0cmluZztcbiAgZGVzdGluYXRpb25LZXlQcmVmaXg/OiBzdHJpbmc7XG4gIHNvdXJjZVBhdGg6IHN0cmluZztcbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnNUb0ZzQWN0aW9uIHtcbiAgdHlwZTogXCJmcy10by1mc1wiO1xuICBzb3VyY2VQYXRoOiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uUGF0aDogc3RyaW5nO1xufVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcnVuZVMzQWN0aW9uIHtcbiAgdHlwZTogXCJwcnVuZS1zM1wiO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gcHJldmlvdXMgZGVwbG95bWVudCBjb3VudCB0byBwcnVuZVxuICAgKiBAZGVmYXVsdCAzXG4gICAqL1xuICBtaW5QcmV2aW91c0RlcGxveUNvdW50VG9QcnVuZTogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gcHJldmlvdXMgZGVwbG95bWVudCBkYXRlIHRvIHBydW5lXG4gICAqIEBkZWZhdWx0IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0TW9udGgobmV3IERhdGUoKS5nZXRNb250aCgpIC0gMSkpXG4gICAqL1xuICBtaW5QcmV2aW91c0RlcGxveURhdGVUb1BydW5lOiBzdHJpbmc7XG4gIGJ1Y2tldE5hbWU6IHN0cmluZztcbiAgYnVja2V0UHJlZml4Pzogc3RyaW5nO1xufVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcnVuZUZzQWN0aW9uIHtcbiAgdHlwZTogXCJwcnVuZS1mc1wiO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gcHJldmlvdXMgZGVwbG95bWVudCBjb3VudCB0byBwcnVuZVxuICAgKiBAZGVmYXVsdCAzXG4gICAqL1xuICBtaW5QcmV2aW91c0RlcGxveUNvdW50VG9QcnVuZTogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gcHJldmlvdXMgZGVwbG95bWVudCBkYXRlIHRvIHBydW5lXG4gICAqIEBkZWZhdWx0IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0TW9udGgobmV3IERhdGUoKS5nZXRNb250aCgpIC0gMSkpXG4gICAqL1xuICBtaW5QcmV2aW91c0RlcGxveURhdGVUb1BydW5lOiBzdHJpbmc7XG4gIGRpcmVjdG9yeTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlUHJvcGVydGllcyB7XG4gIGFjdGlvbnM6IChGc1RvUzNBY3Rpb24gfCBGc1RvRnNBY3Rpb24gfCBQcnVuZVMzQWN0aW9uIHwgUHJ1bmVGc0FjdGlvbilbXTtcbiAgLyoqXG4gICAqIHtAbGluayBOZXh0anNBc3NldERlcGxveW1lbnRQcm9wcy5idWlsZGVySW1hZ2VEaWdlc3R9XG4gICAqL1xuICBidWlsZEltYWdlRGlnZXN0OiBzdHJpbmc7XG4gIGltYWdlQ2FjaGVQYXRoOiBzdHJpbmc7XG4gIHByZXJlbmRlck1hbmlmZXN0UGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlcGxveXMgc3RhdGljIGFzc2V0cyB0byBTMyBhbmQgY2FjaGUgYXNzZXRzIHRvIEVGUyBpbiBMYW1iZGEgQ3VzdG9tIFJlc291cmNlLlxuICovXG5leHBvcnQgY2xhc3MgTmV4dGpzQXNzZXRzRGVwbG95bWVudCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGN1c3RvbVJlc291cmNlOiBDdXN0b21SZXNvdXJjZTtcbiAgZG9ja2VySW1hZ2VGdW5jdGlvbjogRG9ja2VySW1hZ2VGdW5jdGlvbjtcbiAgLyoqXG4gICAqIE9ubHkgdXNlZCBmb3IgYE5leHRqc0dsb2JhbEZ1bmN0aW9uc2BcbiAgICovXG4gIHByZXZpZXdNb2RlSWQ6IHN0cmluZztcblxuICBwcml2YXRlIHByb3BzOiBOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMuZG9ja2VySW1hZ2VGdW5jdGlvbiA9IHRoaXMuY3JlYXRlRnVuY3Rpb24oKTtcbiAgICB0aGlzLmN1c3RvbVJlc291cmNlID0gdGhpcy5jcmVhdGVDdXN0b21SZXNvdXJjZSgpO1xuICAgIHRoaXMucHJldmlld01vZGVJZCA9IHRoaXMuY3VzdG9tUmVzb3VyY2UuZ2V0QXR0U3RyaW5nKFwicHJldmlld01vZGVJZFwiKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRnVuY3Rpb24oKSB7XG4gICAgbGV0IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmIChwcm9jZXNzLmFyY2ggPT09IFwieDY0XCIpIHtcbiAgICAgIGFyY2hpdGVjdHVyZSA9IEFyY2hpdGVjdHVyZS5YODZfNjQ7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmFyY2ggPT09IFwiYXJtNjRcIikge1xuICAgICAgYXJjaGl0ZWN0dXJlID0gQXJjaGl0ZWN0dXJlLkFSTV82NDtcbiAgICB9XG4gICAgY29uc3QgZm4gPSBuZXcgRG9ja2VySW1hZ2VGdW5jdGlvbih0aGlzLCBcIkZuXCIsIHtcbiAgICAgIGFyY2hpdGVjdHVyZSxcbiAgICAgIGNvZGU6IHRoaXMucHJvcHMuZG9ja2VySW1hZ2VDb2RlLFxuICAgICAgbWVtb3J5U2l6ZTogMjA0OCxcbiAgICAgIGZpbGVzeXN0ZW06IEZpbGVTeXN0ZW0uZnJvbUVmc0FjY2Vzc1BvaW50KFxuICAgICAgICB0aGlzLnByb3BzLmFjY2Vzc1BvaW50LFxuICAgICAgICB0aGlzLnByb3BzLmNvbnRhaW5lck1vdW50UGF0aEZvckVmcyxcbiAgICAgICksXG4gICAgICB2cGM6IHRoaXMucHJvcHMudnBjLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5kb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHMsXG4gICAgfSk7XG4gICAgaWYgKHRoaXMucHJvcHMuZGVidWcgIT09IGZhbHNlKSB7XG4gICAgICBmbi5hZGRFbnZpcm9ubWVudChcIkRFQlVHXCIsIFwiMVwiKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvcHMuc3RhdGljQXNzZXRzQnVja2V0KSB7XG4gICAgICB0aGlzLnByb3BzLnN0YXRpY0Fzc2V0c0J1Y2tldC5ncmFudFJlYWRXcml0ZShmbik7XG4gICAgfVxuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ3VzdG9tUmVzb3VyY2UoKSB7XG4gICAgY29uc3Qgcm9vdCA9IFwiL2FwcFwiO1xuICAgIGNvbnN0IGFjdGlvbnM6IEN1c3RvbVJlc291cmNlUHJvcGVydGllc1tcImFjdGlvbnNcIl0gPSBbXTtcbiAgICBpZiAodGhpcy5wcm9wcy5zdGF0aWNBc3NldHNCdWNrZXQ/LmJ1Y2tldE5hbWUpIHtcbiAgICAgIGFjdGlvbnMucHVzaChcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiZnMtdG8tczNcIixcbiAgICAgICAgICBzb3VyY2VQYXRoOiBqb2luKHJvb3QsIFwicHVibGljXCIpLFxuICAgICAgICAgIGRlc3RpbmF0aW9uQnVja2V0TmFtZTogdGhpcy5wcm9wcy5zdGF0aWNBc3NldHNCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gc3RhdGljIGZpbGVzXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImZzLXRvLXMzXCIsXG4gICAgICAgICAgc291cmNlUGF0aDogam9pbihyb290LCBcIi5uZXh0XCIsIFwic3RhdGljXCIpLFxuICAgICAgICAgIGRlc3RpbmF0aW9uQnVja2V0TmFtZTogdGhpcy5wcm9wcy5zdGF0aWNBc3NldHNCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICBkZXN0aW5hdGlvbktleVByZWZpeDogXCJfbmV4dC9zdGF0aWNcIixcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICAgIGFjdGlvbnMucHVzaChcbiAgICAgIC8vIGRhdGEgY2FjaGUgLSBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9jYWNoaW5nI2RhdGEtY2FjaGVcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJmcy10by1mc1wiLFxuICAgICAgICBzb3VyY2VQYXRoOiBqb2luKHJvb3QsIFwiLm5leHRcIiwgXCJjYWNoZVwiLCBcImZldGNoLWNhY2hlXCIpLFxuICAgICAgICBkZXN0aW5hdGlvblBhdGg6IGpvaW4oXG4gICAgICAgICAgdGhpcy5wcm9wcy5jb250YWluZXJNb3VudFBhdGhGb3JFZnMsXG4gICAgICAgICAgREFUQV9DQUNIRV9ESVIsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgLy8gZnVsbCByb3V0ZSBjYWNoZSAtIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2NhY2hpbmcjZnVsbC1yb3V0ZS1jYWNoZVxuICAgICAge1xuICAgICAgICB0eXBlOiBcImZzLXRvLWZzXCIsXG4gICAgICAgIHNvdXJjZVBhdGg6IGpvaW4oXG4gICAgICAgICAgcm9vdCxcbiAgICAgICAgICBcIi5uZXh0XCIsXG4gICAgICAgICAgXCJzdGFuZGFsb25lXCIsXG4gICAgICAgICAgdGhpcy5wcm9wcy5yZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZSB8fCBcIlwiLFxuICAgICAgICAgIFwiLm5leHRcIixcbiAgICAgICAgICBcInNlcnZlclwiLFxuICAgICAgICAgIFwiYXBwXCIsXG4gICAgICAgICksXG4gICAgICAgIGRlc3RpbmF0aW9uUGF0aDogam9pbihcbiAgICAgICAgICB0aGlzLnByb3BzLmNvbnRhaW5lck1vdW50UGF0aEZvckVmcyxcbiAgICAgICAgICBGVUxMX1JPVVRFX0NBQ0hFX0RJUixcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICAvLyBpbWFnZXMgYXJlIG9wdGltaXplZCBhdCBydW50aW1lIHNvIG5vdGhpbmcgdG8gZGVwbG95XG4gICAgKTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzOiBDdXN0b21SZXNvdXJjZVByb3BlcnRpZXMgPSB7XG4gICAgICBhY3Rpb25zLFxuICAgICAgYnVpbGRJbWFnZURpZ2VzdDogdGhpcy5wcm9wcy5idWlsZEltYWdlRGlnZXN0LFxuICAgICAgaW1hZ2VDYWNoZVBhdGg6IGpvaW4oXG4gICAgICAgIHRoaXMucHJvcHMuY29udGFpbmVyTW91bnRQYXRoRm9yRWZzLFxuICAgICAgICBJTUFHRV9DQUNIRV9ESVIsXG4gICAgICApLFxuICAgICAgcHJlcmVuZGVyTWFuaWZlc3RQYXRoOiBqb2luKHJvb3QsIFwiLm5leHRcIiwgXCJwcmVyZW5kZXItbWFuaWZlc3QuanNvblwiKSxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJDdXN0b21SZXNvdXJjZVwiLCB7XG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6TmV4dGpzQXNzZXRzRGVwbG95bWVudFwiLFxuICAgICAgc2VydmljZVRva2VuOiB0aGlzLmRvY2tlckltYWdlRnVuY3Rpb24uZnVuY3Rpb25Bcm4sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
95
|
+
NextjsAssetsDeployment[_a] = { fqn: "cdk-nextjs.NextjsAssetsDeployment", version: "0.2.0" };
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWFzc2V0cy1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25leHRqcy1hc3NldHMtZGVwbG95bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHNDQUFrQztBQUNsQyw2Q0FBdUQ7QUFHdkQsdURBS2dDO0FBRWhDLDJDQUF1QztBQUN2QyxxQ0FNa0I7QUF3R2xCOztHQUVHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxzQkFBUztJQVVuRCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFrQztRQUVsQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksWUFBWSxHQUE2QixTQUFTLENBQUM7UUFDdkQsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNCLFlBQVksR0FBRyx5QkFBWSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLFlBQVksR0FBRyx5QkFBWSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxDQUFDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxnQ0FBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQzdDLFlBQVk7WUFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlO1lBQ2hDLFVBQVUs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UUFDRixPQUFPLElBQUksNEJBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDaEQsVUFBVTtZQUNWLFlBQVksRUFBRSxnQ0FBZ0M7WUFDOUMsWUFBWSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXO1NBQ25ELENBQUMsQ0FBQztJQUNMLENBQUM7O0FBbEhILHdEQW1IQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aC9wb3NpeFwiO1xuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UsIER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBJVnBjIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IEFjY2Vzc1BvaW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lZnNcIjtcbmltcG9ydCB7XG4gIEFyY2hpdGVjdHVyZSxcbiAgRG9ja2VySW1hZ2VDb2RlLFxuICBEb2NrZXJJbWFnZUZ1bmN0aW9uLFxuICBGaWxlU3lzdGVtLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgQnVja2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIERBVEFfQ0FDSEVfRElSLFxuICBGVUxMX1JPVVRFX0NBQ0hFX0RJUixcbiAgSU1BR0VfQ0FDSEVfRElSLFxuICBOZXh0anNUeXBlLFxuICBQVUJMSUNfRElSLFxufSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IE9wdGlvbmFsRG9ja2VySW1hZ2VGdW5jdGlvblByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHNcIjtcbmltcG9ydCB7IE5leHRqc0J1aWxkIH0gZnJvbSBcIi4vbmV4dGpzLWJ1aWxkL25leHRqcy1idWlsZFwiO1xuaW1wb3J0IHsgTmV4dGpzQmFzZVByb3BzIH0gZnJvbSBcIi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1iYXNlLXByb3BzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzQXNzZXREZXBsb3ltZW50T3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgZG9ja2VySW1hZ2VGdW5jdGlvblByb3BzPzogT3B0aW9uYWxEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzQXNzZXRzRGVwbG95bWVudFByb3BzIHtcbiAgcmVhZG9ubHkgYWNjZXNzUG9pbnQ6IEFjY2Vzc1BvaW50O1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTmV4dGpzQnVpbGQuYnVpbGRJbWFnZURpZ2VzdH1cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSW1hZ2VEaWdlc3Q6IHN0cmluZztcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE5leHRqc0J1aWxkLmNvbnRhaW5lck1vdW50UGF0aEZvckVmc31cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lck1vdW50UGF0aEZvckVmczogTmV4dGpzQnVpbGRbXCJjb250YWluZXJNb3VudFBhdGhGb3JFZnNcIl07XG4gIC8qKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBkZWJ1Zz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRvY2tlckltYWdlQ29kZTogRG9ja2VySW1hZ2VDb2RlOyAvLyBUT0RPOiByZW1vdmUgYW5kIGJ1aWxkIGZyb20gY29tbW9uIGJ1aWxkZXIgYmFzZT9cbiAgcmVhZG9ubHkgbmV4dGpzVHlwZTogTmV4dGpzVHlwZTtcbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogTmV4dGpzQXNzZXREZXBsb3ltZW50T3ZlcnJpZGVzO1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTmV4dGpzQmFzZVByb3BzLnJlbGF0aXZlUGF0aFRvV29ya3NwYWNlfVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSZXF1aXJlZCBmb3IgYE5leHRqc1R5cGUuR2xvYmFsRnVuY3Rpb25zYCBhbmQgYE5leHRqc1R5cGUuR2xvYmFsQ29udGFpbmVyc2BcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpY0Fzc2V0c0J1Y2tldD86IEJ1Y2tldDtcbiAgcmVhZG9ubHkgdnBjOiBJVnBjO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZzVG9TM0FjdGlvbiB7XG4gIHR5cGU6IFwiZnMtdG8tczNcIjtcbiAgZGVzdGluYXRpb25CdWNrZXROYW1lOiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uS2V5UHJlZml4Pzogc3RyaW5nO1xuICBzb3VyY2VQYXRoOiBzdHJpbmc7XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZzVG9Gc0FjdGlvbiB7XG4gIHR5cGU6IFwiZnMtdG8tZnNcIjtcbiAgc291cmNlUGF0aDogc3RyaW5nO1xuICBkZXN0aW5hdGlvblBhdGg6IHN0cmluZztcbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJ1bmVTM0FjdGlvbiB7XG4gIHR5cGU6IFwicHJ1bmUtczNcIjtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHByZXZpb3VzIGRlcGxveW1lbnQgY291bnQgdG8gcHJ1bmVcbiAgICogQGRlZmF1bHQgM1xuICAgKi9cbiAgbWluUHJldmlvdXNEZXBsb3lDb3VudFRvUHJ1bmU6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHByZXZpb3VzIGRlcGxveW1lbnQgZGF0ZSB0byBwcnVuZVxuICAgKiBAZGVmYXVsdCBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldE1vbnRoKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSAtIDEpKVxuICAgKi9cbiAgbWluUHJldmlvdXNEZXBsb3lEYXRlVG9QcnVuZTogc3RyaW5nO1xuICBidWNrZXROYW1lOiBzdHJpbmc7XG4gIGJ1Y2tldFByZWZpeD86IHN0cmluZztcbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJ1bmVGc0FjdGlvbiB7XG4gIHR5cGU6IFwicHJ1bmUtZnNcIjtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHByZXZpb3VzIGRlcGxveW1lbnQgY291bnQgdG8gcHJ1bmVcbiAgICogQGRlZmF1bHQgM1xuICAgKi9cbiAgbWluUHJldmlvdXNEZXBsb3lDb3VudFRvUHJ1bmU6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHByZXZpb3VzIGRlcGxveW1lbnQgZGF0ZSB0byBwcnVuZVxuICAgKiBAZGVmYXVsdCBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldE1vbnRoKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSAtIDEpKVxuICAgKi9cbiAgbWluUHJldmlvdXNEZXBsb3lEYXRlVG9QcnVuZTogc3RyaW5nO1xuICBkaXJlY3Rvcnk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDdXN0b21SZXNvdXJjZVByb3BlcnRpZXMge1xuICBhY3Rpb25zOiAoRnNUb1MzQWN0aW9uIHwgRnNUb0ZzQWN0aW9uIHwgUHJ1bmVTM0FjdGlvbiB8IFBydW5lRnNBY3Rpb24pW107XG4gIC8qKlxuICAgKiB7QGxpbmsgTmV4dGpzQXNzZXREZXBsb3ltZW50UHJvcHMuYnVpbGRlckltYWdlRGlnZXN0fVxuICAgKi9cbiAgYnVpbGRJbWFnZURpZ2VzdDogc3RyaW5nO1xuICBpbWFnZUNhY2hlUGF0aDogc3RyaW5nO1xuICBwcmVyZW5kZXJNYW5pZmVzdFBhdGg6IHN0cmluZztcbiAgbmV4dGpzVHlwZTogTmV4dGpzVHlwZTtcbn1cblxuLyoqXG4gKiBEZXBsb3lzIHN0YXRpYyBhc3NldHMgdG8gUzMgYW5kIGNhY2hlIGFzc2V0cyB0byBFRlMgaW4gTGFtYmRhIEN1c3RvbSBSZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRqc0Fzc2V0c0RlcGxveW1lbnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjdXN0b21SZXNvdXJjZTogQ3VzdG9tUmVzb3VyY2U7XG4gIGRvY2tlckltYWdlRnVuY3Rpb246IERvY2tlckltYWdlRnVuY3Rpb247XG4gIC8qKlxuICAgKiBPbmx5IHVzZWQgZm9yIGBOZXh0anNHbG9iYWxGdW5jdGlvbnNgXG4gICAqL1xuICBwcmV2aWV3TW9kZUlkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBwcm9wczogTmV4dGpzQXNzZXRzRGVwbG95bWVudFByb3BzO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogTmV4dGpzQXNzZXRzRGVwbG95bWVudFByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLmRvY2tlckltYWdlRnVuY3Rpb24gPSB0aGlzLmNyZWF0ZUZ1bmN0aW9uKCk7XG4gICAgdGhpcy5jdXN0b21SZXNvdXJjZSA9IHRoaXMuY3JlYXRlQ3VzdG9tUmVzb3VyY2UoKTtcbiAgICB0aGlzLnByZXZpZXdNb2RlSWQgPSB0aGlzLmN1c3RvbVJlc291cmNlLmdldEF0dFN0cmluZyhcInByZXZpZXdNb2RlSWRcIik7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZ1bmN0aW9uKCkge1xuICAgIGxldCBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvY2Vzcy5hcmNoID09PSBcIng2NFwiKSB7XG4gICAgICBhcmNoaXRlY3R1cmUgPSBBcmNoaXRlY3R1cmUuWDg2XzY0O1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5hcmNoID09PSBcImFybTY0XCIpIHtcbiAgICAgIGFyY2hpdGVjdHVyZSA9IEFyY2hpdGVjdHVyZS5BUk1fNjQ7XG4gICAgfVxuICAgIGNvbnN0IGZuID0gbmV3IERvY2tlckltYWdlRnVuY3Rpb24odGhpcywgXCJGblwiLCB7XG4gICAgICBhcmNoaXRlY3R1cmUsXG4gICAgICBjb2RlOiB0aGlzLnByb3BzLmRvY2tlckltYWdlQ29kZSxcbiAgICAgIG1lbW9yeVNpemU6IDIwNDgsXG4gICAgICBmaWxlc3lzdGVtOiBGaWxlU3lzdGVtLmZyb21FZnNBY2Nlc3NQb2ludChcbiAgICAgICAgdGhpcy5wcm9wcy5hY2Nlc3NQb2ludCxcbiAgICAgICAgdGhpcy5wcm9wcy5jb250YWluZXJNb3VudFBhdGhGb3JFZnMsXG4gICAgICApLFxuICAgICAgdnBjOiB0aGlzLnByb3BzLnZwYyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8uZG9ja2VySW1hZ2VGdW5jdGlvblByb3BzLFxuICAgIH0pO1xuICAgIGlmICh0aGlzLnByb3BzLmRlYnVnICE9PSBmYWxzZSkge1xuICAgICAgZm4uYWRkRW52aXJvbm1lbnQoXCJERUJVR1wiLCBcIjFcIik7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLnN0YXRpY0Fzc2V0c0J1Y2tldCkge1xuICAgICAgdGhpcy5wcm9wcy5zdGF0aWNBc3NldHNCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoZm4pO1xuICAgIH1cbiAgICByZXR1cm4gZm47XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUN1c3RvbVJlc291cmNlKCkge1xuICAgIGNvbnN0IHJvb3QgPSBcIi9hcHBcIjtcbiAgICBjb25zdCBhY3Rpb25zOiBDdXN0b21SZXNvdXJjZVByb3BlcnRpZXNbXCJhY3Rpb25zXCJdID0gW107XG4gICAgaWYgKHRoaXMucHJvcHMuc3RhdGljQXNzZXRzQnVja2V0Py5idWNrZXROYW1lKSB7XG4gICAgICBhY3Rpb25zLnB1c2goXG4gICAgICAgIC8vIHN0YXRpYyBmaWxlc1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJmcy10by1zM1wiLFxuICAgICAgICAgIHNvdXJjZVBhdGg6IGpvaW4ocm9vdCwgXCIubmV4dFwiLCBcInN0YXRpY1wiKSxcbiAgICAgICAgICBkZXN0aW5hdGlvbkJ1Y2tldE5hbWU6IHRoaXMucHJvcHMuc3RhdGljQXNzZXRzQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgZGVzdGluYXRpb25LZXlQcmVmaXg6IFwiX25leHQvc3RhdGljXCIsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cbiAgICBhY3Rpb25zLnB1c2goXG4gICAgICAvLyBkYXRhIGNhY2hlIC0gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vY2FjaGluZyNkYXRhLWNhY2hlXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZnMtdG8tZnNcIixcbiAgICAgICAgc291cmNlUGF0aDogam9pbihyb290LCBcIi5uZXh0XCIsIFwiY2FjaGVcIiwgXCJmZXRjaC1jYWNoZVwiKSxcbiAgICAgICAgZGVzdGluYXRpb25QYXRoOiBqb2luKFxuICAgICAgICAgIHRoaXMucHJvcHMuY29udGFpbmVyTW91bnRQYXRoRm9yRWZzLFxuICAgICAgICAgIERBVEFfQ0FDSEVfRElSLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIC8vIGZ1bGwgcm91dGUgY2FjaGUgLSBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9jYWNoaW5nI2Z1bGwtcm91dGUtY2FjaGVcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJmcy10by1mc1wiLFxuICAgICAgICBzb3VyY2VQYXRoOiBqb2luKFxuICAgICAgICAgIHJvb3QsXG4gICAgICAgICAgXCIubmV4dFwiLFxuICAgICAgICAgIFwic3RhbmRhbG9uZVwiLFxuICAgICAgICAgIHRoaXMucHJvcHMucmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2UgfHwgXCJcIixcbiAgICAgICAgICBcIi5uZXh0XCIsXG4gICAgICAgICAgXCJzZXJ2ZXJcIixcbiAgICAgICAgICBcImFwcFwiLFxuICAgICAgICApLFxuICAgICAgICBkZXN0aW5hdGlvblBhdGg6IGpvaW4oXG4gICAgICAgICAgdGhpcy5wcm9wcy5jb250YWluZXJNb3VudFBhdGhGb3JFZnMsXG4gICAgICAgICAgRlVMTF9ST1VURV9DQUNIRV9ESVIsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgLy8gcHVibGljIGRpclxuICAgICAge1xuICAgICAgICB0eXBlOiBcImZzLXRvLWZzXCIsXG4gICAgICAgIHNvdXJjZVBhdGg6IGpvaW4ocm9vdCwgXCJwdWJsaWNcIiksXG4gICAgICAgIGRlc3RpbmF0aW9uUGF0aDogam9pbih0aGlzLnByb3BzLmNvbnRhaW5lck1vdW50UGF0aEZvckVmcywgUFVCTElDX0RJUiksXG4gICAgICB9LFxuICAgICAgLy8gaW1hZ2VzIGFyZSBvcHRpbWl6ZWQgYXQgcnVudGltZSBzbyBub3RoaW5nIHRvIGRlcGxveVxuICAgICk7XG4gICAgY29uc3QgcHJvcGVydGllczogQ3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzID0ge1xuICAgICAgYWN0aW9ucyxcbiAgICAgIGJ1aWxkSW1hZ2VEaWdlc3Q6IHRoaXMucHJvcHMuYnVpbGRJbWFnZURpZ2VzdCxcbiAgICAgIGltYWdlQ2FjaGVQYXRoOiBqb2luKFxuICAgICAgICB0aGlzLnByb3BzLmNvbnRhaW5lck1vdW50UGF0aEZvckVmcyxcbiAgICAgICAgSU1BR0VfQ0FDSEVfRElSLFxuICAgICAgKSxcbiAgICAgIG5leHRqc1R5cGU6IHRoaXMucHJvcHMubmV4dGpzVHlwZSxcbiAgICAgIHByZXJlbmRlck1hbmlmZXN0UGF0aDogam9pbihyb290LCBcIi5uZXh0XCIsIFwicHJlcmVuZGVyLW1hbmlmZXN0Lmpzb25cIiksXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsIFwiQ3VzdG9tUmVzb3VyY2VcIiwge1xuICAgICAgcHJvcGVydGllcyxcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206Ok5leHRqc0Fzc2V0c0RlcGxveW1lbnRcIixcbiAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5kb2NrZXJJbWFnZUZ1bmN0aW9uLmZ1bmN0aW9uQXJuLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -6,8 +6,8 @@ RUN apk add --no-cache libc6-compat
|
|
|
6
6
|
WORKDIR /app
|
|
7
7
|
# It's preferrable to only copy package.json's and lockfiles, install, and then
|
|
8
8
|
# copy the rest of the code to efficiently utilize build cache. We don't do that
|
|
9
|
-
|
|
10
|
-
# developers use `overrides.
|
|
9
|
+
# here because it's highly customized based on a projects setup. We recommend
|
|
10
|
+
# developers use `overrides.nextjs[GlobalFunctions].nextjsBuildProps.builderImageProps.srcDockerfilePath`
|
|
11
11
|
# to optimize for their setup.
|
|
12
12
|
COPY . .
|
|
13
13
|
# Install dependencies based on the preferred package manager
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/*
|
|
4
|
+
This file is compiled as defined in .projenrc.ts to be used as Next.js
|
|
5
|
+
Custom Cache Handler. See: https://nextjs.org/docs/app/api-reference/next-config-js/incrementalCacheHandlerPath
|
|
6
|
+
*/
|
|
3
7
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
4
8
|
const client_sqs_1 = require("@aws-sdk/client-sqs");
|
|
5
9
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
@@ -19,4 +23,4 @@ class CacheHandler extends file_system_cache_1.default {
|
|
|
19
23
|
}
|
|
20
24
|
}
|
|
21
25
|
exports.default = CacheHandler;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZXh0anMtYnVpbGQvY2FjaGUtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7RUFHRTtBQUNGLDZEQUE2RDtBQUM3RCxvREFBb0U7QUFDcEUsNkRBQTZEO0FBQzdELGdHQUF1RjtBQUl2RixNQUFNLFNBQVMsR0FBRyxJQUFJLHNCQUFTLEVBQUUsQ0FBQztBQUVsQyxNQUFxQixZQUFhLFNBQVEsMkJBQWU7SUFDdkQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFXO1FBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1QixNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQ2xCLElBQUksK0JBQWtCLENBQUM7WUFDckIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CO1lBQzFDLFdBQVcsRUFBRSxHQUFHO1lBQ2hCLHlDQUF5QztTQUMxQyxDQUFDLENBQ0gsQ0FBQztRQUNGLG1EQUFtRDtRQUNuRCxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBZEQsK0JBY0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBUaGlzIGZpbGUgaXMgY29tcGlsZWQgYXMgZGVmaW5lZCBpbiAucHJvamVucmMudHMgdG8gYmUgdXNlZCBhcyBOZXh0LmpzXG4gIEN1c3RvbSBDYWNoZSBIYW5kbGVyLiBTZWU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL25leHQtY29uZmlnLWpzL2luY3JlbWVudGFsQ2FjaGVIYW5kbGVyUGF0aFxuKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IFNRU0NsaWVudCwgU2VuZE1lc3NhZ2VDb21tYW5kIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zcXNcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCBGaWxlU3lzdGVtQ2FjaGUgZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL2luY3JlbWVudGFsLWNhY2hlL2ZpbGUtc3lzdGVtLWNhY2hlXCI7XG5cbnR5cGUgUmV2YWxpZGF0ZVRhZ1Jlc3BvbnNlID0gUmV0dXJuVHlwZTxGaWxlU3lzdGVtQ2FjaGVbXCJyZXZhbGlkYXRlVGFnXCJdPjtcblxuY29uc3Qgc3FzQ2xpZW50ID0gbmV3IFNRU0NsaWVudCgpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDYWNoZUhhbmRsZXIgZXh0ZW5kcyBGaWxlU3lzdGVtQ2FjaGUge1xuICBhc3luYyByZXZhbGlkYXRlVGFnKHRhZzogc3RyaW5nKTogUmV2YWxpZGF0ZVRhZ1Jlc3BvbnNlIHtcbiAgICBjb25zb2xlLmxvZyh7IHRhZyB9KTtcbiAgICBjb25zb2xlLmxvZyh7IHRoaXM6IHRoaXMgfSk7XG4gICAgYXdhaXQgc3FzQ2xpZW50LnNlbmQoXG4gICAgICBuZXcgU2VuZE1lc3NhZ2VDb21tYW5kKHtcbiAgICAgICAgUXVldWVVcmw6IHByb2Nlc3MuZW52LkNES19ORVhUSlNfUVVFVUVfVVJMLFxuICAgICAgICBNZXNzYWdlQm9keTogdGFnLFxuICAgICAgICAvLyBNZXNzYWdlR3JvdXBJZDogXCJcIiwgLy8gZG8gaSBuZWVkIHRoaXM/XG4gICAgICB9KSxcbiAgICApO1xuICAgIC8vIHB1dCBtZXNzYWdlIGluIHNxcyBxdWV1ZSBpZiBmb3IgZnVsbCByb3V0ZSBjYWNoZVxuICAgIHJldHVybiBzdXBlci5yZXZhbGlkYXRlVGFnKHRhZyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -15,23 +15,24 @@ RUN addgroup --system --gid 1001 nodejs
|
|
|
15
15
|
RUN adduser --system --uid 1001 nextjs
|
|
16
16
|
|
|
17
17
|
ARG RELATIVE_PATH_TO_WORKSPACE
|
|
18
|
-
# even though public is served through cloudfront, we need public for image optimization
|
|
19
|
-
COPY --from=builder --chown=nextjs:nodejs /app/$RELATIVE_PATH_TO_WORKSPACE/public ./$RELATIVE_PATH_TO_WORKSPACE/public
|
|
20
18
|
COPY --from=builder --chown=nextjs:nodejs /app/$RELATIVE_PATH_TO_WORKSPACE/.next/standalone ./
|
|
21
|
-
COPY --chown=nextjs:nodejs ./symlink
|
|
19
|
+
COPY --chown=nextjs:nodejs ./symlink.mjs ./
|
|
22
20
|
ARG MOUNT_PATH
|
|
23
21
|
ARG DATA_CACHE_DIR
|
|
24
22
|
ARG FULL_ROUTE_CACHE_DIR
|
|
25
23
|
ARG IMAGE_CACHE_DIR
|
|
24
|
+
ARG PUBLIC_DIR
|
|
26
25
|
RUN mkdir -p $MOUNT_PATH/$DATA_CACHE_DIR && \
|
|
27
26
|
mkdir -p $MOUNT_PATH/$FULL_ROUTE_CACHE_DIR && \
|
|
28
27
|
mkdir -p $MOUNT_PATH/$IMAGE_CACHE_DIR && \
|
|
28
|
+
mkdir -p $MOUNT_PATH/$PUBLIC_DIR && \
|
|
29
29
|
chmod -R u+rw $MOUNT_PATH && \
|
|
30
30
|
mkdir -p ./$RELATIVE_PATH_TO_WORKSPACE/.next/cache && \
|
|
31
31
|
ln -s $MOUNT_PATH/$DATA_CACHE_DIR ./$RELATIVE_PATH_TO_WORKSPACE/.next/cache/fetch-cache && \
|
|
32
32
|
ln -s $MOUNT_PATH/$IMAGE_CACHE_DIR ./$RELATIVE_PATH_TO_WORKSPACE/.next/cache/images && \
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
ln -s $MOUNT_PATH/$PUBLIC_DIR ./$RELATIVE_PATH_TO_WORKSPACE/public && \
|
|
34
|
+
node symlink.mjs /app/$RELATIVE_PATH_TO_WORKSPACE/.next/server/app $MOUNT_PATH/$FULL_ROUTE_CACHE_DIR "html,rsc,meta" && \
|
|
35
|
+
rm -r symlink.mjs
|
|
35
36
|
|
|
36
37
|
USER nextjs
|
|
37
38
|
|
|
@@ -17,25 +17,26 @@ RUN addgroup --system --gid 1001 nodejs
|
|
|
17
17
|
RUN adduser --system --uid 1001 nextjs
|
|
18
18
|
|
|
19
19
|
ARG RELATIVE_PATH_TO_WORKSPACE
|
|
20
|
-
# even though public is served through cloudfront, we need public for image optimization
|
|
21
|
-
COPY --from=builder --chown=nextjs:nodejs /app/$RELATIVE_PATH_TO_WORKSPACE/public ./$RELATIVE_PATH_TO_WORKSPACE/public
|
|
22
20
|
COPY --from=builder --chown=nextjs:nodejs /app/$RELATIVE_PATH_TO_WORKSPACE/.next/standalone ./
|
|
23
|
-
COPY --chown=nextjs:nodejs ./add-cache-handler.mjs ./cache-handler.cjs ./symlink
|
|
21
|
+
COPY --chown=nextjs:nodejs ./add-cache-handler.mjs ./cache-handler.cjs ./symlink.mjs ./
|
|
24
22
|
ARG MOUNT_PATH
|
|
25
23
|
ARG DATA_CACHE_DIR
|
|
26
24
|
ARG FULL_ROUTE_CACHE_DIR
|
|
27
25
|
ARG IMAGE_CACHE_DIR
|
|
26
|
+
ARG PUBLIC_DIR
|
|
28
27
|
RUN node add-cache-handler.mjs ./$RELATIVE_PATH_TO_WORKSPACE/.next/required-server-files.json && \
|
|
29
28
|
rm add-cache-handler.mjs && \
|
|
30
29
|
mkdir -p $MOUNT_PATH/$DATA_CACHE_DIR && \
|
|
31
30
|
mkdir -p $MOUNT_PATH/$FULL_ROUTE_CACHE_DIR && \
|
|
32
31
|
mkdir -p $MOUNT_PATH/$IMAGE_CACHE_DIR && \
|
|
32
|
+
mkdir -p $MOUNT_PATH/$PUBLIC_DIR && \
|
|
33
33
|
chmod -R u+rw $MOUNT_PATH && \
|
|
34
34
|
mkdir -p ./$RELATIVE_PATH_TO_WORKSPACE/.next/cache && \
|
|
35
35
|
ln -s $MOUNT_PATH/$DATA_CACHE_DIR ./$RELATIVE_PATH_TO_WORKSPACE/.next/cache/fetch-cache && \
|
|
36
36
|
ln -s $MOUNT_PATH/$IMAGE_CACHE_DIR ./$RELATIVE_PATH_TO_WORKSPACE/.next/cache/images && \
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
ln -s $MOUNT_PATH/$PUBLIC_DIR ./$RELATIVE_PATH_TO_WORKSPACE/public && \
|
|
38
|
+
node symlink.mjs /app/$RELATIVE_PATH_TO_WORKSPACE/.next/server/app $MOUNT_PATH/$FULL_ROUTE_CACHE_DIR "html,rsc,meta" && \
|
|
39
|
+
rm -r symlink.mjs
|
|
39
40
|
|
|
40
41
|
USER nextjs
|
|
41
42
|
|
|
@@ -93,7 +93,9 @@ export declare class NextjsBuild extends Construct {
|
|
|
93
93
|
* Mount path in container for EFS. Next.js image optimization, data, and full
|
|
94
94
|
* route cache will be symlinked to this location.
|
|
95
95
|
*
|
|
96
|
-
* Must comply with pattern: ^/mnt/[a-zA-Z0-9-_.]+$
|
|
96
|
+
* Must comply with pattern: ^/mnt/[a-zA-Z0-9-_.]+$ due to lambda requirement.
|
|
97
|
+
* Fargate doesn't have this same requirement but we share code for lambda and
|
|
98
|
+
* fargate.
|
|
97
99
|
* @see https://docs.aws.amazon.com/lambda/latest/api/API_FileSystemConfig.html
|
|
98
100
|
*/
|
|
99
101
|
containerMountPathForEfs: string;
|
|
@@ -23,10 +23,12 @@ class NextjsBuild extends constructs_1.Construct {
|
|
|
23
23
|
* Mount path in container for EFS. Next.js image optimization, data, and full
|
|
24
24
|
* route cache will be symlinked to this location.
|
|
25
25
|
*
|
|
26
|
-
* Must comply with pattern: ^/mnt/[a-zA-Z0-9-_.]+$
|
|
26
|
+
* Must comply with pattern: ^/mnt/[a-zA-Z0-9-_.]+$ due to lambda requirement.
|
|
27
|
+
* Fargate doesn't have this same requirement but we share code for lambda and
|
|
28
|
+
* fargate.
|
|
27
29
|
* @see https://docs.aws.amazon.com/lambda/latest/api/API_FileSystemConfig.html
|
|
28
30
|
*/
|
|
29
|
-
this.containerMountPathForEfs = "/mnt/cdk-nextjs
|
|
31
|
+
this.containerMountPathForEfs = "/mnt/cdk-nextjs";
|
|
30
32
|
this.containerRuntime = process.env.CDK_DOCKER || "docker";
|
|
31
33
|
this.builderImageTag = `cdk-nextjs/builder-${this.node.addr.slice(30)}`;
|
|
32
34
|
this.relativePathToWorkspace = props.relativePathToWorkspace || ".";
|
|
@@ -135,13 +137,14 @@ class NextjsBuild extends constructs_1.Construct {
|
|
|
135
137
|
const dockerfileName = `${dockerfileNamePrefix}-containers.Dockerfile`;
|
|
136
138
|
// cdk-nextjs/builder-{hash} already contains built nextjs app which we'll
|
|
137
139
|
// `COPY --from=cdk-nextjs/builder-{hash}` so we just need the Dockerfile
|
|
138
|
-
// and symlink
|
|
140
|
+
// and symlink.ts script which is in lib/nextjs-build folder.
|
|
139
141
|
const buildContext = (0, node_path_1.join)(__dirname, "..", "..", "lib", "nextjs-build");
|
|
140
142
|
const dockerImageAsset = new aws_ecr_assets_1.DockerImageAsset(this, "Image", {
|
|
141
143
|
buildArgs: {
|
|
142
144
|
BUILDER_IMAGE_TAG: this.builderImageTag,
|
|
143
145
|
DATA_CACHE_DIR: common_1.DATA_CACHE_DIR,
|
|
144
146
|
FULL_ROUTE_CACHE_DIR: common_1.FULL_ROUTE_CACHE_DIR,
|
|
147
|
+
PUBLIC_DIR: common_1.PUBLIC_DIR,
|
|
145
148
|
IMAGE_CACHE_DIR: common_1.IMAGE_CACHE_DIR,
|
|
146
149
|
MOUNT_PATH: this.containerMountPathForEfs,
|
|
147
150
|
RELATIVE_PATH_TO_WORKSPACE: this.relativePathToWorkspace,
|
|
@@ -150,7 +153,7 @@ class NextjsBuild extends constructs_1.Construct {
|
|
|
150
153
|
exclude: [
|
|
151
154
|
"*",
|
|
152
155
|
`!${dockerfileName}`,
|
|
153
|
-
"!symlink
|
|
156
|
+
"!symlink.mjs",
|
|
154
157
|
"!add-cache-handler.mjs",
|
|
155
158
|
],
|
|
156
159
|
extraHash: this.buildImageDigest, // rebuild when builder hash changes
|
|
@@ -164,13 +167,14 @@ class NextjsBuild extends constructs_1.Construct {
|
|
|
164
167
|
const dockerfileName = "global-functions.Dockerfile";
|
|
165
168
|
// cdk-nextjs/builder-{hash} already contains built nextjs app which we'll
|
|
166
169
|
// `COPY --from=cdk-nextjs/builder-{hash}` so we just need the Dockerfile
|
|
167
|
-
// and symlink
|
|
170
|
+
// and symlink.ts script which is in lib/nextjs-build folder.
|
|
168
171
|
const buildContext = (0, node_path_1.join)(__dirname, "..", "..", "lib", "nextjs-build");
|
|
169
172
|
const dockerImageCode = aws_lambda_1.DockerImageCode.fromImageAsset(buildContext, {
|
|
170
173
|
buildArgs: {
|
|
171
174
|
BUILDER_IMAGE_TAG: this.builderImageTag,
|
|
172
175
|
DATA_CACHE_DIR: common_1.DATA_CACHE_DIR,
|
|
173
176
|
FULL_ROUTE_CACHE_DIR: common_1.FULL_ROUTE_CACHE_DIR,
|
|
177
|
+
PUBLIC_DIR: common_1.PUBLIC_DIR,
|
|
174
178
|
IMAGE_CACHE_DIR: common_1.IMAGE_CACHE_DIR,
|
|
175
179
|
MOUNT_PATH: this.containerMountPathForEfs,
|
|
176
180
|
RELATIVE_PATH_TO_WORKSPACE: this.relativePathToWorkspace,
|
|
@@ -179,7 +183,7 @@ class NextjsBuild extends constructs_1.Construct {
|
|
|
179
183
|
exclude: [
|
|
180
184
|
"*",
|
|
181
185
|
`!${dockerfileName}`,
|
|
182
|
-
"!symlink
|
|
186
|
+
"!symlink.mjs",
|
|
183
187
|
"!add-cache-handler.mjs",
|
|
184
188
|
"!cache-handler.cjs",
|
|
185
189
|
],
|
|
@@ -216,5 +220,5 @@ class NextjsBuild extends constructs_1.Construct {
|
|
|
216
220
|
}
|
|
217
221
|
exports.NextjsBuild = NextjsBuild;
|
|
218
222
|
_a = JSII_RTTI_SYMBOL_1;
|
|
219
|
-
NextjsBuild[_a] = { fqn: "cdk-nextjs.NextjsBuild", version: "0.
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWJ1aWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25leHRqcy1idWlsZC9uZXh0anMtYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyREFBOEM7QUFDOUMscUNBQXdEO0FBQ3hELHlDQUFpQztBQUNqQywyQ0FBb0Q7QUFDcEQsNkNBQXlDO0FBQ3pDLCtEQUF3RTtBQUN4RSx1REFBOEU7QUFDOUUsMkNBQXVDO0FBQ3ZDLHNDQUttQjtBQWtGbkI7OztHQUdHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFtRHhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQTdDbkI7Ozs7OztXQU1HO1FBQ0gsNkJBQXdCLEdBQUcsdUJBQXVCLENBQUM7UUFpQzNDLHFCQUFnQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQztRQU01RCxJQUFJLENBQUMsZUFBZSxHQUFHLHNCQUFzQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN4RSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDLHVCQUF1QixJQUFJLEdBQUcsQ0FBQztRQUNwRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNuRCxJQUNFLEtBQUssQ0FBQyxVQUFVLEtBQUssbUJBQVUsQ0FBQyxpQkFBaUI7WUFDakQsS0FBSyxDQUFDLFVBQVUs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QUFnQixFQUFFLG9DQUFvQztZQUN0RSxJQUFJLEVBQUUsY0FBYztZQUNwQixVQUFVLEVBQUUsd0JBQVUsQ0FBQyxNQUFNO1lBQzdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsd0NBQXdDO1NBQ2xFLENBQUMsQ0FBQztRQUNILE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7O0FBclJILGtDQXNSQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgY3BTeW5jLCBybVN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGpvaW4gYXMgam9pblBvc2l4IH0gZnJvbSBcIm5vZGU6cGF0aC9wb3NpeFwiO1xuaW1wb3J0IHsgSWdub3JlTW9kZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgRG9ja2VySW1hZ2VBc3NldCwgUGxhdGZvcm0gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjci1hc3NldHNcIjtcbmltcG9ydCB7IEFzc2V0SW1hZ2VDb2RlUHJvcHMsIERvY2tlckltYWdlQ29kZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgREFUQV9DQUNIRV9ESVIsXG4gIEZVTExfUk9VVEVfQ0FDSEVfRElSLFxuICBJTUFHRV9DQUNIRV9ESVIsXG4gIE5leHRqc1R5cGUsXG59IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IE9wdGlvbmFsRG9ja2VySW1hZ2VBc3NldFByb3BzIH0gZnJvbSBcIi4uL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRG9ja2VySW1hZ2VBc3NldFByb3BzXCI7XG5pbXBvcnQgeyBOZXh0anNCYXNlUHJvcHMgfSBmcm9tIFwiLi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1iYXNlLXByb3BzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRlckltYWdlUHJvcHMge1xuICAvKipcbiAgICogQnVpbGQgQXJncyB0byBiZSBwYXNzZWQgdG8gYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBgZG9ja2VyIGJ1aWxkIC4uLmAgY29tbWFuZCB0byBydW4gaW4ge0BsaW5rIE5leHRCYXNlUHJvcHMuYnVpbGRDb250ZXh0fS5cbiAgICogRGVmYXVsdCBpbnRlcnBvbGF0ZXMgb3RoZXIgcHJvcHMuIElmIHlvdSBvdmVycmlkZSwgb3RoZXIgcHJvcHMgd2lsbCBoYXZlXG4gICAqIG5vIGVmZmVjdCBvbiBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZD86IHN0cmluZztcbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyBuYW1lcyB0byBwYXNzIGZyb20gaG9zdCB0byBjb250YWluZXIgZHVyaW5nIGJ1aWxkIHByb2Nlc3MuXG4gICAqXG4gICAqIE5vdGUsIGEgc2hlbGwgc2NyaXB0LCBjZGstbmV4dGpzLWxvYWQtZW52LXZhcnMuc2ggaXMgY3JlYXRlZCB3aXRoaW4gdGhlXG4gICAqIHtAbGluayBOZXh0QmFzZVByb3BzLmJ1aWxkQ29udGV4dH0gZGlyZWN0b3J5LCB3aGljaCB3aWxsIGNvbnRhaW4gYWxsIHRoZVxuICAgKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGlzIHByb3AuIElmIHlvdSd2ZSBjcmVhdGVkIHlvdXIgb3duXG4gICAqIGN1c3RvbSBEb2NrZXJmaWxlIChwYXNzZWQgaW4gdmlhIHtAbGluayBCdWlsZGVySW1hZ2VQcm9wcy5jdXN0b21Eb2NrZXJmaWxlUGF0aH0pXG4gICAqIHRoZW4geW91IG5lZWQgdG8gbWFrZSBzdXJlIHlvdSdyZSBjb3B5aW5nIGl0IGludG8gdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZXhhbXBsZSBbXCJNWV9BUElfS0VZXCJdXG4gICAqL1xuICByZWFkb25seSBlbnZWYXJOYW1lcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogTGluZXMgaW4gLmRvY2tlcmlnbm9yZSBmaWxlIHdoaWNoIHdpbGwgYmUgY3JlYXRlZCBpbiB5b3VyIHtAbGluayBOZXh0QmFzZVByb3BzLmJ1aWxkQ29udGV4dH1cbiAgICogQGRlZmF1bHQgW1wibm9kZV9tb2R1bGVzXCIsIFwiLmdpdFwiLCBcIi5naXRpZ25vcmVcIiwgXCIubWRcIl1cbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIE5hbWUgb2YgRG9ja2VyZmlsZVxuICAgKiBAZGVmYXVsdCBcImJ1aWxkZXIuRG9ja2VyZmlsZVwiXG4gICAqL1xuICByZWFkb25seSBmaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBwbGF0Zm9ybT86IFBsYXRmb3JtO1xuICAvKipcbiAgICogU2tpcCBidWlsZGluZyB0aGUgYnVpbGRlciBpbWFnZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBCdWlsZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQYXRoIHRvIHlvdXIgY3VzdG9tIGJ1aWxkZXIuRG9ja2VyZmlsZSB3aGljaCB3aWxsIGJlIGNvcGllZCBpbnRvIHtAbGluayBOZXh0QmFzZVByb3BzLmJ1aWxkQ29udGV4dH0uXG4gICAqIEl0IGlzIHJlY29tbWVuZGVkIHRvIG92ZXJyaWRlIHRoaXMgcHJvcCB0byBvcHRpbWl6ZSBidWlsZCBjYWNoaW5nIGZvciB5b3VyIHNldHVwLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRG9ja2VyZmlsZVBhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzQnVpbGRPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNDb250YWluZXJzRG9ja2VySW1hZ2VBc3NldFByb3BzPzogT3B0aW9uYWxEb2NrZXJJbWFnZUFzc2V0UHJvcHM7XG4gIHJlYWRvbmx5IG5leHRqc0Z1bmN0aW9uc0Fzc2V0SW1hZ2VDb2RlUHJvcHM/OiBBc3NldEltYWdlQ29kZVByb3BzO1xuICByZWFkb25seSBuZXh0anNBc3NldERlcGxveW1lbnRBc3NldEltYWdlQ29kZVByb3BzPzogQXNzZXRJbWFnZUNvZGVQcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNCdWlsZFByb3BzIHtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE5leHRqc0Jhc2VQcm9wc1tcImJ1aWxkQ29tbWFuZFwiXX1cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQ29tbWFuZDogTmV4dGpzQmFzZVByb3BzW1wiYnVpbGRDb21tYW5kXCJdO1xuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTmV4dGpzQmFzZVByb3BzW1wiYnVpbGRDb250ZXh0XCJdfVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRDb250ZXh0OiBOZXh0anNCYXNlUHJvcHNbXCJidWlsZENvbnRleHRcIl07XG4gIC8qKlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRlckltYWdlUHJvcHM/OiBCdWlsZGVySW1hZ2VQcm9wcztcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE5leHRqc0Jhc2VQcm9wcy5yZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZX1cbiAgICovXG4gIHJlYWRvbmx5IHJlbGF0aXZlUGF0aFRvV29ya3NwYWNlPzogTmV4dGpzQmFzZVByb3BzW1wicmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2VcIl07XG4gIHJlYWRvbmx5IG5leHRqc1R5cGU6IE5leHRqc1R5cGU7XG4gIHJlYWRvbmx5IG92ZXJyaWRlcz86IE5leHRqc0J1aWxkT3ZlcnJpZGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0RpckVudHJ5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBpc0RpcmVjdG9yeTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBCdWlsZHMgTmV4dC5qcyBhc3NldHMuXG4gKiBAbGluayBodHRwczovL25leHRqcy5vcmcvZG9jcy9wYWdlcy9hcGktcmVmZXJlbmNlL25leHQtY29uZmlnLWpzL291dHB1dFxuICovXG5leHBvcnQgY2xhc3MgTmV4dGpzQnVpbGQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogSGFzaCBvZiBidWlsZGVyIGltYWdlIHdoaWNoIHdpbGwgY2hhbmdlIHdoZW5ldmVyIHRoZSBpbWFnZSBjaGFuZ2VzLiBVc2VmdWxcbiAgICogZm9yIHBhc3NpbmcgdG8gcHJvcGVydGllcyBvZiBjdXN0b20gcmVzb3VyY2VzIHRoYXQgZGVwZW5kIHVwb24gdGhlIGJ1aWxkZXJcbiAgICogaW1hZ2UgdG8gcmUtcnVuIHdoZW4gYnVpbGQgaW1hZ2UgY2hhbmdlcy5cbiAgICovXG4gIGJ1aWxkSW1hZ2VEaWdlc3Q6IHN0cmluZztcbiAgLyoqXG4gICAqIE1vdW50IHBhdGggaW4gY29udGFpbmVyIGZvciBFRlMuIE5leHQuanMgaW1hZ2Ugb3B0aW1pemF0aW9uLCBkYXRhLCBhbmQgZnVsbFxuICAgKiByb3V0ZSBjYWNoZSB3aWxsIGJlIHN5bWxpbmtlZCB0byB0aGlzIGxvY2F0aW9uLlxuICAgKlxuICAgKiBNdXN0IGNvbXBseSB3aXRoIHBhdHRlcm46IF4vbW50L1thLXpBLVowLTktXy5dKyRcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9hcGkvQVBJX0ZpbGVTeXN0ZW1Db25maWcuaHRtbFxuICAgKi9cbiAgY29udGFpbmVyTW91bnRQYXRoRm9yRWZzID0gXCIvbW50L2Nkay1uZXh0anMtY2FjaGVcIjtcbiAgLyoqXG4gICAqIERvY2tlciBpbWFnZSBidWlsdCBpZiB1c2luZyBGYXJnYXRlLlxuICAgKi9cbiAgaW1hZ2VGb3JOZXh0anNDb250YWluZXJzPzogRG9ja2VySW1hZ2VBc3NldDtcbiAgLyoqXG4gICAqIERvY2tlciBpbWFnZSBidWlsdCBpZiB1c2luZyBMYW1iZGEuXG4gICAqL1xuICBpbWFnZUZvck5leHRqc0Z1bmN0aW9ucz86IERvY2tlckltYWdlQ29kZTtcbiAgLyoqXG4gICAqIERvY2tlciBpbWFnZSBidWlsdCBmb3IgYE5leHRqc0Fzc2V0c0RlcGxveW1lbnRgXG4gICAqL1xuICBpbWFnZUZvck5leHRqc0Fzc2V0c0RlcGxveW1lbnQ6IERvY2tlckltYWdlQ29kZTtcbiAgLyoqXG4gICAqIEFic29sdXRlIHBhdGggdG8gcHVibGljLiBVc2UgYnkgQ2xvdWRGcm9udC9BTEIgdG8gY3JlYXRlIGJlaGF2aW9ycy9ydWxlc1xuICAgKiBAZXhhbXBsZSBcIi9Vc2Vycy9qb2huL215YXBwL3B1YmxpY1wiXG4gICAqL1xuICBwdWJsaWNEaXJFbnRyaWVzOiBQdWJsaWNEaXJFbnRyeVtdO1xuICAvKipcbiAgICogVGhlIGVudHJ5cG9pbnQgSmF2YVNjcmlwdCBmaWxlIHVzZWQgYXMgYW4gYXJndW1lbnQgZm9yIE5vZGUuanMgdG8gcnVuIHRoZVxuICAgKiBOZXh0LmpzIHN0YW5kYWxvbmUgc2VydmVyIHJlbGF0aXZlIHRvIHRoZSBzdGFuZGFsb25lIGRpcmVjdG9yeS5cbiAgICogQGV4YW1wbGUgXCIuL3NlcnZlci5qc1wiXG4gICAqIEBleGFtcGxlIFwiLi9wYWNrYWdlcy91aS9zZXJ2ZXIuanNcIiAobW9ub3JlcG8pXG4gICAqL1xuICByZWxhdGl2ZVBhdGhUb0VudHJ5cG9pbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGFnIG9mIGJ1aWxkZXIgaW1hZ2UgTmV4dC5qcyBhcHAgd2hpY2ggaXMgYnVpbHQgZm9yIG90aGVyIGltYWdlcyB0byBiZVxuICAgKiBidWlsdCBgRlJPTWAuIFRoaXMgaW1hZ2UgaXNuJ3QgYnVpbHQgd2l0aCBDREsgQXNzZXRzIGNvbnN0cnVjdCBiL2MgaXRcbiAgICogZG9lc24ndCBuZWVkIHRvIGJlIHVwbG9hZGVkIHRvIEVDUi4gV2Ugc3RpbGwgbmVlZCB0byBpbmNsdWRlIHNsaWNlIG9mXG4gICAqIGBub2RlLmFkZHJgIGluIHRhZyBpbiBjYXNlIG11bHRpcGxlIGNkay1uZXh0anMgY29uc3RydWN0cyBhcmUgdXNlZC5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRlckltYWdlVGFnOiBzdHJpbmc7XG4gIHByaXZhdGUgY29udGFpbmVyUnVudGltZSA9IHByb2Nlc3MuZW52LkNES19ET0NLRVIgfHwgXCJkb2NrZXJcIjtcbiAgcHJpdmF0ZSBwcm9wczogTmV4dGpzQnVpbGRQcm9wcztcbiAgcHJpdmF0ZSByZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXh0anNCdWlsZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmJ1aWxkZXJJbWFnZVRhZyA9IGBjZGstbmV4dGpzL2J1aWxkZXItJHt0aGlzLm5vZGUuYWRkci5zbGljZSgzMCl9YDtcbiAgICB0aGlzLnJlbGF0aXZlUGF0aFRvV29ya3NwYWNlID0gcHJvcHMucmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2UgfHwgXCIuXCI7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMucmVsYXRpdmVQYXRoVG9FbnRyeXBvaW50ID0gdGhpcy5nZXRSZWxhdGl2ZUVudHJ5cG9pbnRQYXRoKCk7XG4gICAgdGhpcy5idWlsZEltYWdlRGlnZXN0ID0gdGhpcy5jcmVhdGVCdWlsZGVySW1hZ2UoKTtcbiAgICB0aGlzLnB1YmxpY0RpckVudHJpZXMgPSB0aGlzLmdldFB1YmxpY0RpckVudHJpZXMoKTtcbiAgICBpZiAoXG4gICAgICBwcm9wcy5uZXh0anNUeXBlID09PSBOZXh0anNUeXBlLkdMT0JBTF9DT05UQUlORVJTIHx8XG4gICAgICBwcm9wcy5uZXh0anNUeXBlID09PSBOZXh0anNUeXBlLlJFR0lPTkFMX0NPTlRBSU5FUlNcbiAgICApIHtcbiAgICAgIHRoaXMuaW1hZ2VGb3JOZXh0anNDb250YWluZXJzID0gdGhpcy5jcmVhdGVJbWFnZUZvck5leHRqc0NvbnRhaW5lcnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbWFnZUZvck5leHRqc0Z1bmN0aW9ucyA9IHRoaXMuY3JlYXRlSW1hZ2VGb3JOZXh0anNGdW5jdGlvbnMoKTtcbiAgICB9XG4gICAgdGhpcy5pbWFnZUZvck5leHRqc0Fzc2V0c0RlcGxveW1lbnQgPVxuICAgICAgdGhpcy5jcmVhdGVJbWFnZUZvck5leHRqc0Fzc2V0c0RlcGxveW1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVsYXRpdmVFbnRyeXBvaW50UGF0aCgpIHtcbiAgICAvLyBqb2luUG9zaXggYi9jIHRoaXMgd2lsbCBiZSB1c2VkIGluIGxpbnV4IGNvbnRhaW5lclxuICAgIHJldHVybiBqb2luUG9zaXgodGhpcy5wcm9wcy5yZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZSB8fCBcIlwiLCBcInNlcnZlci5qc1wiKTtcbiAgfVxuICAvKipcbiAgICogQSBidWlsZGVyIG9yIGJhc2UgaW1hZ2UgbmVlZHMgdG8gYmUgY3JlYXRlZCBzbyB0aGF0IHRoZSBzYW1lIGltYWdlIGNhbiBiZVxuICAgKiBidWlsdCBgRlJPTWAgZm9yIGBOZXh0anNGdW5jdGlvbnNgIG9yIGBOZXh0anNDb250YWluZXJzYCBhbmQgYE5leHRqc0Fzc2V0c0RlcGxveW1lbnRgLlxuICAgKiBUaGlzIGltYWdlIGRvZXNuJ3QgbmVlZCB0byBiZSB1cGxvYWRlZCB0byBFQ1Igc28gd2UncmUgXCJtYW51YWxseVwiIGNyZWF0aW5nXG4gICAqIGl0IHdpdGggYGV4ZWNTeW5jYCBhbmQgb3RoZXIgaW1hZ2VzIHdpbGwgYmUgYnVpbHQgYEZST01gIGl0LlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVCdWlsZGVySW1hZ2UoKSB7XG4gICAgY29uc3QgYnVpbGRDb21tYW5kID0gdGhpcy5wcm9wcy5idWlsZENvbW1hbmQgfHwgXCJucG0gcnVuIGJ1aWxkXCI7XG4gICAgY29uc3Qge1xuICAgICAgYnVpbGRBcmdzID0ge1xuICAgICAgICBCVUlMRF9DT01NQU5EOiBidWlsZENvbW1hbmQsXG4gICAgICAgIFJFTEFUSVZFX1BBVEhfVE9fV09SS1NQQUNFOiB0aGlzLnJlbGF0aXZlUGF0aFRvV29ya3NwYWNlLFxuICAgICAgICAuLi50aGlzLnByb3BzLmJ1aWxkZXJJbWFnZVByb3BzPy5idWlsZEFyZ3MsXG4gICAgICB9LFxuICAgICAgZW52VmFyTmFtZXMgPSBbXSxcbiAgICAgIGV4Y2x1ZGUgPSBbXG4gICAgICAgIFwiKiovbm9kZV9tb2R1bGVzXCIsXG4gICAgICAgIFwiLmdpdFwiLFxuICAgICAgICBcIioqL2Nkay5vdXRcIixcbiAgICAgICAgXCIqKi8ubmV4dFwiLFxuICAgICAgICBcIi5naXRpZ25vcmVcIixcbiAgICAgICAgXCIqLm1kXCIsXG4gICAgICBdLFxuICAgICAgZmlsZSA9IFwiYnVpbGRlci5Eb2NrZXJmaWxlXCIsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIHNraXBCdWlsZCA9IGZhbHNlLFxuICAgIH0gPSB0aGlzLnByb3BzLmJ1aWxkZXJJbWFnZVByb3BzIHx8IHt9O1xuICAgIGNvbnN0IHNyY0RvY2tlcmZpbGVQYXRoID1cbiAgICAgIHRoaXMucHJvcHMuYnVpbGRlckltYWdlUHJvcHM/LmN1c3RvbURvY2tlcmZpbGVQYXRoIHx8XG4gICAgICBqb2luKF9fZGlybmFtZSwgZmlsZSk7XG4gICAgY29uc3QgZGVzdERvY2tlcmZpbGVQYXRoID0gam9pbih0aGlzLnByb3BzLmJ1aWxkQ29udGV4dCwgZmlsZSk7XG4gICAgY3BTeW5jKHNyY0RvY2tlcmZpbGVQYXRoLCBkZXN0RG9ja2VyZmlsZVBhdGgpO1xuICAgIGNvbnN0IGV4Y2x1ZGVGaWxlU3RyID0gZXhjbHVkZT8uam9pbihcIlxcblwiKTtcbiAgICBjb25zdCBkb2NrZXJpZ25vcmVGaWxlUGF0aCA9IGpvaW4odGhpcy5wcm9wcy5idWlsZENvbnRleHQsIFwiLmRvY2tlcmlnbm9yZVwiKTtcbiAgICB3cml0ZUZpbGVTeW5jKGRvY2tlcmlnbm9yZUZpbGVQYXRoLCBleGNsdWRlRmlsZVN0cik7XG4gICAgY29uc3QgYnVpbGRBcmdzU3RyID0gdGhpcy5jcmVhdGVCdWlsZEFyZ1N0cihidWlsZEFyZ3MpO1xuICAgIGNvbnN0IGxvYWRFbnZWYXJzU2NyaXB0UGF0aCA9IGpvaW4oXG4gICAgICB0aGlzLnByb3BzLmJ1aWxkQ29udGV4dCxcbiAgICAgIFwiY2RrLW5leHRqcy1sb2FkLWVudi12YXJzLnNoXCIsXG4gICAgKTtcbiAgICBpZiAoZW52VmFyTmFtZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNyZWF0ZUxvYWRFbnZWYXJzU2NyaXB0KGVudlZhck5hbWVzLCBsb2FkRW52VmFyc1NjcmlwdFBhdGgpO1xuICAgIH1cbiAgICBjb25zdCBjb21tYW5kID1cbiAgICAgIHRoaXMucHJvcHMuYnVpbGRlckltYWdlUHJvcHM/LmNvbW1hbmQgfHxcbiAgICAgIGAke3RoaXMuY29udGFpbmVyUnVudGltZX0gYnVpbGQgJHtwbGF0Zm9ybSA/IGAtLXBsYXRmb3JtICR7cGxhdGZvcm0ucGxhdGZvcm19YCA6IFwiXCJ9IC0tZmlsZSAke2ZpbGV9IC0tdGFnICR7dGhpcy5idWlsZGVySW1hZ2VUYWd9ICR7YnVpbGRBcmdzU3RyfSAuYDtcbiAgICBsZXQgZXJyb3I6IHVua25vd247XG4gICAgdHJ5IHtcbiAgICAgIGlmICghc2tpcEJ1aWxkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBCdWlsZGluZyBpbWFnZSB3aXRoIGNvbW1hbmQ6ICR7Y29tbWFuZH0gaW4gZGlyZWN0b3J5OiAke3RoaXMucHJvcHMuYnVpbGRDb250ZXh0fWAsXG4gICAgICAgICk7XG4gICAgICAgIGV4ZWNTeW5jKGNvbW1hbmQsIHtcbiAgICAgICAgICBzdGRpbzogXCJpbmhlcml0XCIsXG4gICAgICAgICAgY3dkOiB0aGlzLnByb3BzLmJ1aWxkQ29udGV4dCxcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVycm9yID0gZXJyO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBybVN5bmMoZGVzdERvY2tlcmZpbGVQYXRoKTtcbiAgICAgIHJtU3luYyhkb2NrZXJpZ25vcmVGaWxlUGF0aCk7XG4gICAgICBpZiAoZW52VmFyTmFtZXMubGVuZ3RoKSB7XG4gICAgICAgIHJtU3luYyhsb2FkRW52VmFyc1NjcmlwdFBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yO1xuICAgIHJldHVybiB0aGlzLmdldEJ1aWxkZXJJbWFnZURpZ2VzdCgpO1xuICB9XG4gIHByaXZhdGUgY3JlYXRlQnVpbGRBcmdTdHIoXG4gICAgYnVpbGRBcmdzOiBSZXF1aXJlZDxCdWlsZGVySW1hZ2VQcm9wcz5bXCJidWlsZEFyZ3NcIl0sXG4gICkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhidWlsZEFyZ3MpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIHJldHVybiBgJHthY2N9IC0tYnVpbGQtYXJnICR7a2V5fT1cIiR7dmFsdWV9XCJgO1xuICAgIH0sIFwiXCIpO1xuICB9XG4gIHByaXZhdGUgY3JlYXRlTG9hZEVudlZhcnNTY3JpcHQoXG4gICAgZW52VmFyTmFtZXM6IFJlcXVpcmVkPEJ1aWxkZXJJbWFnZVByb3BzPltcImVudlZhck5hbWVzXCJdID0gW10sXG4gICAgbG9hZEVudlZhcnNTY3JpcHRQYXRoOiBzdHJpbmcsXG4gICkge1xuICAgIGxldCBsb2FkRW52VmFyc1NjcmlwdCA9XG4gICAgICBcIiMgRHluYW1pY2FsbHkgZ2VuZXJhdGVkIHNjcmlwdCB0byBsb2FkIGVudiB2YXJzIGludG8gYnVpbGQgY29udGFpbmVyXCI7XG4gICAgZm9yIChjb25zdCBlbnZWYXJOYW1lIG9mIGVudlZhck5hbWVzKSB7XG4gICAgICBsb2FkRW52VmFyc1NjcmlwdCArPSBgXFxuZXhwb3J0ICR7ZW52VmFyTmFtZX09JHtwcm9jZXNzLmVudltlbnZWYXJOYW1lXSB8fCAnXCJcIid9YDtcbiAgICB9XG4gICAgd3JpdGVGaWxlU3luYyhsb2FkRW52VmFyc1NjcmlwdFBhdGgsIGxvYWRFbnZWYXJzU2NyaXB0KTtcbiAgfVxuICBwcml2YXRlIGdldEJ1aWxkZXJJbWFnZURpZ2VzdCgpIHtcbiAgICBjb25zdCBkaWdlc3QgPSBleGVjU3luYyhcbiAgICAgIGAke3RoaXMuY29udGFpbmVyUnVudGltZX0gaW1hZ2VzIC0tbm8tdHJ1bmMgLS1xdWlldCAke3RoaXMuYnVpbGRlckltYWdlVGFnfWAsXG4gICAgICB7IGVuY29kaW5nOiBcInV0Zi04XCIgfSxcbiAgICApO1xuICAgIHJldHVybiBkaWdlc3Quc2xpY2UoMCwgLTEpOyAvLyByZW1vdmUgdHJhaWxpbmcgXFxuXG4gIH1cbiAgcHJpdmF0ZSBnZXRQdWJsaWNEaXJFbnRyaWVzKCk6IFB1YmxpY0RpckVudHJ5W10ge1xuICAgIGNvbnN0IHB1YmxpY0RpclBhdGggPSBqb2luUG9zaXgoXG4gICAgICBcIi9hcHBcIixcbiAgICAgIHRoaXMucHJvcHMucmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2UgfHwgXCJcIixcbiAgICAgIFwicHVibGljXCIsXG4gICAgKTtcbiAgICBjb25zdCBwdWJsaWNEaXJFbnRyaWVzU3RyaW5nID0gZXhlY1N5bmMoXG4gICAgICBgJHt0aGlzLmNvbnRhaW5lclJ1bnRpbWV9IHJ1biAke3RoaXMuYnVpbGRlckltYWdlVGFnfSBub2RlIC1lIFwiY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZnMucmVhZGRpclN5bmMoJyR7cHVibGljRGlyUGF0aH0nLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSkubWFwKChlKSA9PiAoeyBuYW1lOiBlLm5hbWUsIGlzRGlyOiBlLmlzRGlyZWN0b3J5KCl9KSkpKVwiYCxcbiAgICAgIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9LFxuICAgICk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UocHVibGljRGlyRW50cmllc1N0cmluZykgYXMgUHVibGljRGlyRW50cnlbXTtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZUltYWdlRm9yTmV4dGpzQ29udGFpbmVycygpIHtcbiAgICBjb25zdCBkb2NrZXJmaWxlTmFtZVByZWZpeCA9XG4gICAgICB0aGlzLnByb3BzLm5leHRqc1R5cGUgPT09IE5leHRqc1R5cGUuR0xPQkFMX0NPTlRBSU5FUlNcbiAgICAgICAgPyBcImdsb2JhbFwiXG4gICAgICAgIDogXCJyZWdpb25hbFwiO1xuICAgIGNvbnN0IGRvY2tlcmZpbGVOYW1lID0gYCR7ZG9ja2VyZmlsZU5hbWVQcmVmaXh9LWNvbnRhaW5lcnMuRG9ja2VyZmlsZWA7XG4gICAgLy8gY2RrLW5leHRqcy9idWlsZGVyLXtoYXNofSBhbHJlYWR5IGNvbnRhaW5zIGJ1aWx0IG5leHRqcyBhcHAgd2hpY2ggd2UnbGxcbiAgICAvLyBgQ09QWSAtLWZyb209Y2RrLW5leHRqcy9idWlsZGVyLXtoYXNofWAgc28gd2UganVzdCBuZWVkIHRoZSBEb2NrZXJmaWxlXG4gICAgLy8gYW5kIHN5bWxpbmstZnVsbC1yb3V0ZS1jYWNoZSBzY3JpcHRzIHdoaWNoIGFyZSBpbiBsaWIvbmV4dGpzLWJ1aWxkIGZvbGRlci5cbiAgICBjb25zdCBidWlsZENvbnRleHQgPSBqb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwibGliXCIsIFwibmV4dGpzLWJ1aWxkXCIpO1xuICAgIGNvbnN0IGRvY2tlckltYWdlQXNzZXQgPSBuZXcgRG9ja2VySW1hZ2VBc3NldCh0aGlzLCBcIkltYWdlXCIsIHtcbiAgICAgIGJ1aWxkQXJnczoge1xuICAgICAgICBCVUlMREVSX0lNQUdFX1RBRzogdGhpcy5idWlsZGVySW1hZ2VUYWcsXG4gICAgICAgIERBVEFfQ0FDSEVfRElSLFxuICAgICAgICBGVUxMX1JPVVRFX0NBQ0hFX0RJUixcbiAgICAgICAgSU1BR0VfQ0FDSEVfRElSLFxuICAgICAgICBNT1VOVF9QQVRIOiB0aGlzLmNvbnRhaW5lck1vdW50UGF0aEZvckVmcyxcbiAgICAgICAgUkVMQVRJVkVfUEFUSF9UT19XT1JLU1BBQ0U6IHRoaXMucmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2UsXG4gICAgICB9LFxuICAgICAgZGlyZWN0b3J5OiBidWlsZENvbnRleHQsXG4gICAgICBleGNsdWRlOiBbXG4gICAgICAgIFwiKlwiLFxuICAgICAgICBgISR7ZG9ja2VyZmlsZU5hbWV9YCxcbiAgICAgICAgXCIhc3ltbGluay1mdWxsLXJvdXRlLWNhY2hlLm1qc1wiLFxuICAgICAgICBcIiFhZGQtY2FjaGUtaGFuZGxlci5tanNcIixcbiAgICAgIF0sXG4gICAgICBleHRyYUhhc2g6IHRoaXMuYnVpbGRJbWFnZURpZ2VzdCwgLy8gcmVidWlsZCB3aGVuIGJ1aWxkZXIgaGFzaCBjaGFuZ2VzXG4gICAgICBmaWxlOiBkb2NrZXJmaWxlTmFtZSxcbiAgICAgIGlnbm9yZU1vZGU6IElnbm9yZU1vZGUuRE9DS0VSLFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0NvbnRhaW5lcnNEb2NrZXJJbWFnZUFzc2V0UHJvcHMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGRvY2tlckltYWdlQXNzZXQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUltYWdlRm9yTmV4dGpzRnVuY3Rpb25zKCkge1xuICAgIGNvbnN0IGRvY2tlcmZpbGVOYW1lID0gXCJnbG9iYWwtZnVuY3Rpb25zLkRvY2tlcmZpbGVcIjtcbiAgICAvLyBjZGstbmV4dGpzL2J1aWxkZXIte2hhc2h9IGFscmVhZHkgY29udGFpbnMgYnVpbHQgbmV4dGpzIGFwcCB3aGljaCB3ZSdsbFxuICAgIC8vIGBDT1BZIC0tZnJvbT1jZGstbmV4dGpzL2J1aWxkZXIte2hhc2h9YCBzbyB3ZSBqdXN0IG5lZWQgdGhlIERvY2tlcmZpbGVcbiAgICAvLyBhbmQgc3ltbGluay1mdWxsLXJvdXRlLWNhY2hlIHNjcmlwdHMgd2hpY2ggYXJlIGluIGxpYi9uZXh0anMtYnVpbGQgZm9sZGVyLlxuICAgIGNvbnN0IGJ1aWxkQ29udGV4dCA9IGpvaW4oX19kaXJuYW1lLCBcIi4uXCIsIFwiLi5cIiwgXCJsaWJcIiwgXCJuZXh0anMtYnVpbGRcIik7XG4gICAgY29uc3QgZG9ja2VySW1hZ2VDb2RlID0gRG9ja2VySW1hZ2VDb2RlLmZyb21JbWFnZUFzc2V0KGJ1aWxkQ29udGV4dCwge1xuICAgICAgYnVpbGRBcmdzOiB7XG4gICAgICAgIEJVSUxERVJfSU1BR0VfVEFHOiB0aGlzLmJ1aWxkZXJJbWFnZVRhZyxcbiAgICAgICAgREFUQV9DQUNIRV9ESVIsXG4gICAgICAgIEZVTExfUk9VVEVfQ0FDSEVfRElSLFxuICAgICAgICBJTUFHRV9DQUNIRV9ESVIsXG4gICAgICAgIE1PVU5UX1BBVEg6IHRoaXMuY29udGFpbmVyTW91bnRQYXRoRm9yRWZzLFxuICAgICAgICBSRUxBVElWRV9QQVRIX1RPX1dPUktTUEFDRTogdGhpcy5yZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZSxcbiAgICAgIH0sXG4gICAgICBjbWQ6IFtcIm5vZGVcIiwgdGhpcy5yZWxhdGl2ZVBhdGhUb0VudHJ5cG9pbnRdLFxuICAgICAgZXhjbHVkZTogW1xuICAgICAgICBcIipcIixcbiAgICAgICAgYCEke2RvY2tlcmZpbGVOYW1lfWAsXG4gICAgICAgIFwiIXN5bWxpbmstZnVsbC1yb3V0ZS1jYWNoZS5tanNcIixcbiAgICAgICAgXCIhYWRkLWNhY2hlLWhhbmRsZXIubWpzXCIsXG4gICAgICAgIFwiIWNhY2hlLWhhbmRsZXIuY2pzXCIsXG4gICAgICBdLFxuICAgICAgZXh0cmFIYXNoOiB0aGlzLmJ1aWxkSW1hZ2VEaWdlc3QsIC8vIHJlYnVpbGQgd2hlbiBidWlsZGVyIGhhc2ggY2hhbmdlc1xuICAgICAgZmlsZTogZG9ja2VyZmlsZU5hbWUsXG4gICAgICBpZ25vcmVNb2RlOiBJZ25vcmVNb2RlLkRPQ0tFUixcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNGdW5jdGlvbnNBc3NldEltYWdlQ29kZVByb3BzLFxuICAgIH0pO1xuICAgIC8vIFRPRE86IGhvdyB0byBjbGVhbiB1cCB0ZW1wIGRpcj9cbiAgICAvLyBybVN5bmModGVtcERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgcmV0dXJuIGRvY2tlckltYWdlQ29kZTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW1hZ2VGb3JOZXh0anNBc3NldHNEZXBsb3ltZW50KCkge1xuICAgIGNvbnN0IGRvY2tlcmZpbGVOYW1lID0gXCJhc3NldHMtZGVwbG95bWVudC5Eb2NrZXJmaWxlXCI7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byBidW5kbGVkIGN1c3RvbSByZXNvdXJjZSBjb2RlXG4gICAgICovXG4gICAgY29uc3QgbGFtYmRhQnVpbGRDb250ZXh0ID0gam9pbihcbiAgICAgIF9fZGlybmFtZSxcbiAgICAgIFwiLi5cIixcbiAgICAgIFwiLi5cIixcbiAgICAgIFwiYXNzZXRzXCIsXG4gICAgICBcImxhbWJkYXNcIixcbiAgICAgIFwiYXNzZXRzLWRlcGxveW1lbnRcIixcbiAgICAgIFwiYXNzZXRzLWRlcGxveW1lbnQubGFtYmRhXCIsXG4gICAgKTtcbiAgICAvLyBjZGstbmV4dGpzL2J1aWxkZXIte2hhc2h9IGFscmVhZHkgY29udGFpbnMgTmV4dC5qcyBidWlsdCBjb2RlIHdoaWNoXG4gICAgLy8gd2UnbGwgY29weSBpbnRvIGZpbmFsIGltYWdlLiBCdXQgd2UgYWxzbyBuZWVkIGxhbWJkYSBjb2RlIHRvIHJ1blxuICAgIC8vIGFzc2V0IGRlcGxveW1lbnQgdGFza3NcbiAgICBjb25zdCBkb2NrZXJJbWFnZUNvZGUgPSBEb2NrZXJJbWFnZUNvZGUuZnJvbUltYWdlQXNzZXQobGFtYmRhQnVpbGRDb250ZXh0LCB7XG4gICAgICBidWlsZEFyZ3M6IHtcbiAgICAgICAgQlVJTERFUl9JTUFHRV9UQUc6IHRoaXMuYnVpbGRlckltYWdlVGFnLFxuICAgICAgICBSRUxBVElWRV9QQVRIX1RPX1dPUktTUEFDRTogdGhpcy5yZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZSxcbiAgICAgIH0sXG4gICAgICBleHRyYUhhc2g6IHRoaXMuYnVpbGRJbWFnZURpZ2VzdCwgLy8gcmVidWlsZCB3aGVuIGJ1aWxkZXIgaGFzaCBjaGFuZ2VzXG4gICAgICBmaWxlOiBkb2NrZXJmaWxlTmFtZSxcbiAgICAgIGlnbm9yZU1vZGU6IElnbm9yZU1vZGUuRE9DS0VSLFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0Fzc2V0RGVwbG95bWVudEFzc2V0SW1hZ2VDb2RlUHJvcHMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGRvY2tlckltYWdlQ29kZTtcbiAgfVxufVxuIl19
|
|
223
|
+
NextjsBuild[_a] = { fqn: "cdk-nextjs.NextjsBuild", version: "0.2.0" };
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWJ1aWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25leHRqcy1idWlsZC9uZXh0anMtYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyREFBOEM7QUFDOUMscUNBQXdEO0FBQ3hELHlDQUFpQztBQUNqQywyQ0FBb0Q7QUFDcEQsNkNBQXlDO0FBQ3pDLCtEQUF3RTtBQUN4RSx1REFBOEU7QUFDOUUsMkNBQXVDO0FBQ3ZDLHNDQU1tQjtBQWtGbkI7OztHQUdHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFxRHhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQS9DbkI7Ozs7Ozs7O1dBUUc7UUFDSCw2QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQztRQWlDckMscUJBQWdCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDO1FBTTVELElBQUksQ0FBQyxlQUFlLEdBQUcsc0JBQXNCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLElBQUksR0FBRyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ25ELElBQ0UsS0FBSyxDQUFDLFVBQVUsS0FBSyxtQkFBVSxDQUFDLGlCQUFpQjtZQUNqRCxLQUFLLENBQUMsVUFB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dUJBQXVCO2FBQ3pEO1lBQ0QsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxvQ0FBb0M7WUFDdEUsSUFBSSxFQUFFLGNBQWM7WUFDcEIsVUFBVSxFQUFFLHdCQUFVLENBQUMsTUFBTTtZQUM3QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLHdDQUF3QztTQUNsRSxDQUFDLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDOztBQXpSSCxrQ0EwUkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IGNwU3luYywgcm1TeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBqb2luIGFzIGpvaW5Qb3NpeCB9IGZyb20gXCJub2RlOnBhdGgvcG9zaXhcIjtcbmltcG9ydCB7IElnbm9yZU1vZGUgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IERvY2tlckltYWdlQXNzZXQsIFBsYXRmb3JtIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3ItYXNzZXRzXCI7XG5pbXBvcnQgeyBBc3NldEltYWdlQ29kZVByb3BzLCBEb2NrZXJJbWFnZUNvZGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIERBVEFfQ0FDSEVfRElSLFxuICBGVUxMX1JPVVRFX0NBQ0hFX0RJUixcbiAgSU1BR0VfQ0FDSEVfRElSLFxuICBOZXh0anNUeXBlLFxuICBQVUJMSUNfRElSLFxufSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBPcHRpb25hbERvY2tlckltYWdlQXNzZXRQcm9wcyB9IGZyb20gXCIuLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbERvY2tlckltYWdlQXNzZXRQcm9wc1wiO1xuaW1wb3J0IHsgTmV4dGpzQmFzZVByb3BzIH0gZnJvbSBcIi4uL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtYmFzZS1wcm9wc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJJbWFnZVByb3BzIHtcbiAgLyoqXG4gICAqIEJ1aWxkIEFyZ3MgdG8gYmUgcGFzc2VkIHRvIGBkb2NrZXIgYnVpbGRgIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBidWlsZEFyZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKipcbiAgICogYGRvY2tlciBidWlsZCAuLi5gIGNvbW1hbmQgdG8gcnVuIGluIHtAbGluayBOZXh0QmFzZVByb3BzLmJ1aWxkQ29udGV4dH0uXG4gICAqIERlZmF1bHQgaW50ZXJwb2xhdGVzIG90aGVyIHByb3BzLiBJZiB5b3Ugb3ZlcnJpZGUsIG90aGVyIHByb3BzIHdpbGwgaGF2ZVxuICAgKiBubyBlZmZlY3Qgb24gY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbW1hbmQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgbmFtZXMgdG8gcGFzcyBmcm9tIGhvc3QgdG8gY29udGFpbmVyIGR1cmluZyBidWlsZCBwcm9jZXNzLlxuICAgKlxuICAgKiBOb3RlLCBhIHNoZWxsIHNjcmlwdCwgY2RrLW5leHRqcy1sb2FkLWVudi12YXJzLnNoIGlzIGNyZWF0ZWQgd2l0aGluIHRoZVxuICAgKiB7QGxpbmsgTmV4dEJhc2VQcm9wcy5idWlsZENvbnRleHR9IGRpcmVjdG9yeSwgd2hpY2ggd2lsbCBjb250YWluIGFsbCB0aGVcbiAgICogZW52aXJvbm1lbnQgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhpcyBwcm9wLiBJZiB5b3UndmUgY3JlYXRlZCB5b3VyIG93blxuICAgKiBjdXN0b20gRG9ja2VyZmlsZSAocGFzc2VkIGluIHZpYSB7QGxpbmsgQnVpbGRlckltYWdlUHJvcHMuY3VzdG9tRG9ja2VyZmlsZVBhdGh9KVxuICAgKiB0aGVuIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB5b3UncmUgY29weWluZyBpdCBpbnRvIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQGV4YW1wbGUgW1wiTVlfQVBJX0tFWVwiXVxuICAgKi9cbiAgcmVhZG9ubHkgZW52VmFyTmFtZXM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIExpbmVzIGluIC5kb2NrZXJpZ25vcmUgZmlsZSB3aGljaCB3aWxsIGJlIGNyZWF0ZWQgaW4geW91ciB7QGxpbmsgTmV4dEJhc2VQcm9wcy5idWlsZENvbnRleHR9XG4gICAqIEBkZWZhdWx0IFtcIm5vZGVfbW9kdWxlc1wiLCBcIi5naXRcIiwgXCIuZ2l0aWdub3JlXCIsIFwiLm1kXCJdXG4gICAqL1xuICByZWFkb25seSBleGNsdWRlPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBOYW1lIG9mIERvY2tlcmZpbGVcbiAgICogQGRlZmF1bHQgXCJidWlsZGVyLkRvY2tlcmZpbGVcIlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcGxhdGZvcm0/OiBQbGF0Zm9ybTtcbiAgLyoqXG4gICAqIFNraXAgYnVpbGRpbmcgdGhlIGJ1aWxkZXIgaW1hZ2UuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwQnVpbGQ/OiBib29sZWFuO1xuICAvKipcbiAgICogUGF0aCB0byB5b3VyIGN1c3RvbSBidWlsZGVyLkRvY2tlcmZpbGUgd2hpY2ggd2lsbCBiZSBjb3BpZWQgaW50byB7QGxpbmsgTmV4dEJhc2VQcm9wcy5idWlsZENvbnRleHR9LlxuICAgKiBJdCBpcyByZWNvbW1lbmRlZCB0byBvdmVycmlkZSB0aGlzIHByb3AgdG8gb3B0aW1pemUgYnVpbGQgY2FjaGluZyBmb3IgeW91ciBzZXR1cC5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbURvY2tlcmZpbGVQYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0J1aWxkT3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgbmV4dGpzQ29udGFpbmVyc0RvY2tlckltYWdlQXNzZXRQcm9wcz86IE9wdGlvbmFsRG9ja2VySW1hZ2VBc3NldFByb3BzO1xuICByZWFkb25seSBuZXh0anNGdW5jdGlvbnNBc3NldEltYWdlQ29kZVByb3BzPzogQXNzZXRJbWFnZUNvZGVQcm9wcztcbiAgcmVhZG9ubHkgbmV4dGpzQXNzZXREZXBsb3ltZW50QXNzZXRJbWFnZUNvZGVQcm9wcz86IEFzc2V0SW1hZ2VDb2RlUHJvcHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzQnVpbGRQcm9wcyB7XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBOZXh0anNCYXNlUHJvcHNbXCJidWlsZENvbW1hbmRcIl19XG4gICAqL1xuICByZWFkb25seSBidWlsZENvbW1hbmQ6IE5leHRqc0Jhc2VQcm9wc1tcImJ1aWxkQ29tbWFuZFwiXTtcbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE5leHRqc0Jhc2VQcm9wc1tcImJ1aWxkQ29udGV4dFwiXX1cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQ29udGV4dDogTmV4dGpzQmFzZVByb3BzW1wiYnVpbGRDb250ZXh0XCJdO1xuICAvKipcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkZXJJbWFnZVByb3BzPzogQnVpbGRlckltYWdlUHJvcHM7XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBOZXh0anNCYXNlUHJvcHMucmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2V9XG4gICAqL1xuICByZWFkb25seSByZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZT86IE5leHRqc0Jhc2VQcm9wc1tcInJlbGF0aXZlUGF0aFRvV29ya3NwYWNlXCJdO1xuICByZWFkb25seSBuZXh0anNUeXBlOiBOZXh0anNUeXBlO1xuICByZWFkb25seSBvdmVycmlkZXM/OiBOZXh0anNCdWlsZE92ZXJyaWRlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNEaXJFbnRyeSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgaXNEaXJlY3Rvcnk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQnVpbGRzIE5leHQuanMgYXNzZXRzLlxuICogQGxpbmsgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvcGFnZXMvYXBpLXJlZmVyZW5jZS9uZXh0LWNvbmZpZy1qcy9vdXRwdXRcbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRqc0J1aWxkIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIEhhc2ggb2YgYnVpbGRlciBpbWFnZSB3aGljaCB3aWxsIGNoYW5nZSB3aGVuZXZlciB0aGUgaW1hZ2UgY2hhbmdlcy4gVXNlZnVsXG4gICAqIGZvciBwYXNzaW5nIHRvIHByb3BlcnRpZXMgb2YgY3VzdG9tIHJlc291cmNlcyB0aGF0IGRlcGVuZCB1cG9uIHRoZSBidWlsZGVyXG4gICAqIGltYWdlIHRvIHJlLXJ1biB3aGVuIGJ1aWxkIGltYWdlIGNoYW5nZXMuXG4gICAqL1xuICBidWlsZEltYWdlRGlnZXN0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNb3VudCBwYXRoIGluIGNvbnRhaW5lciBmb3IgRUZTLiBOZXh0LmpzIGltYWdlIG9wdGltaXphdGlvbiwgZGF0YSwgYW5kIGZ1bGxcbiAgICogcm91dGUgY2FjaGUgd2lsbCBiZSBzeW1saW5rZWQgdG8gdGhpcyBsb2NhdGlvbi5cbiAgICpcbiAgICogTXVzdCBjb21wbHkgd2l0aCBwYXR0ZXJuOiBeL21udC9bYS16QS1aMC05LV8uXSskIGR1ZSB0byBsYW1iZGEgcmVxdWlyZW1lbnQuXG4gICAqIEZhcmdhdGUgZG9lc24ndCBoYXZlIHRoaXMgc2FtZSByZXF1aXJlbWVudCBidXQgd2Ugc2hhcmUgY29kZSBmb3IgbGFtYmRhIGFuZFxuICAgKiBmYXJnYXRlLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2FwaS9BUElfRmlsZVN5c3RlbUNvbmZpZy5odG1sXG4gICAqL1xuICBjb250YWluZXJNb3VudFBhdGhGb3JFZnMgPSBcIi9tbnQvY2RrLW5leHRqc1wiO1xuICAvKipcbiAgICogRG9ja2VyIGltYWdlIGJ1aWx0IGlmIHVzaW5nIEZhcmdhdGUuXG4gICAqL1xuICBpbWFnZUZvck5leHRqc0NvbnRhaW5lcnM/OiBEb2NrZXJJbWFnZUFzc2V0O1xuICAvKipcbiAgICogRG9ja2VyIGltYWdlIGJ1aWx0IGlmIHVzaW5nIExhbWJkYS5cbiAgICovXG4gIGltYWdlRm9yTmV4dGpzRnVuY3Rpb25zPzogRG9ja2VySW1hZ2VDb2RlO1xuICAvKipcbiAgICogRG9ja2VyIGltYWdlIGJ1aWx0IGZvciBgTmV4dGpzQXNzZXRzRGVwbG95bWVudGBcbiAgICovXG4gIGltYWdlRm9yTmV4dGpzQXNzZXRzRGVwbG95bWVudDogRG9ja2VySW1hZ2VDb2RlO1xuICAvKipcbiAgICogQWJzb2x1dGUgcGF0aCB0byBwdWJsaWMuIFVzZSBieSBDbG91ZEZyb250L0FMQiB0byBjcmVhdGUgYmVoYXZpb3JzL3J1bGVzXG4gICAqIEBleGFtcGxlIFwiL1VzZXJzL2pvaG4vbXlhcHAvcHVibGljXCJcbiAgICovXG4gIHB1YmxpY0RpckVudHJpZXM6IFB1YmxpY0RpckVudHJ5W107XG4gIC8qKlxuICAgKiBUaGUgZW50cnlwb2ludCBKYXZhU2NyaXB0IGZpbGUgdXNlZCBhcyBhbiBhcmd1bWVudCBmb3IgTm9kZS5qcyB0byBydW4gdGhlXG4gICAqIE5leHQuanMgc3RhbmRhbG9uZSBzZXJ2ZXIgcmVsYXRpdmUgdG8gdGhlIHN0YW5kYWxvbmUgZGlyZWN0b3J5LlxuICAgKiBAZXhhbXBsZSBcIi4vc2VydmVyLmpzXCJcbiAgICogQGV4YW1wbGUgXCIuL3BhY2thZ2VzL3VpL3NlcnZlci5qc1wiIChtb25vcmVwbylcbiAgICovXG4gIHJlbGF0aXZlUGF0aFRvRW50cnlwb2ludDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWcgb2YgYnVpbGRlciBpbWFnZSBOZXh0LmpzIGFwcCB3aGljaCBpcyBidWlsdCBmb3Igb3RoZXIgaW1hZ2VzIHRvIGJlXG4gICAqIGJ1aWx0IGBGUk9NYC4gVGhpcyBpbWFnZSBpc24ndCBidWlsdCB3aXRoIENESyBBc3NldHMgY29uc3RydWN0IGIvYyBpdFxuICAgKiBkb2Vzbid0IG5lZWQgdG8gYmUgdXBsb2FkZWQgdG8gRUNSLiBXZSBzdGlsbCBuZWVkIHRvIGluY2x1ZGUgc2xpY2Ugb2ZcbiAgICogYG5vZGUuYWRkcmAgaW4gdGFnIGluIGNhc2UgbXVsdGlwbGUgY2RrLW5leHRqcyBjb25zdHJ1Y3RzIGFyZSB1c2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZGVySW1hZ2VUYWc6IHN0cmluZztcbiAgcHJpdmF0ZSBjb250YWluZXJSdW50aW1lID0gcHJvY2Vzcy5lbnYuQ0RLX0RPQ0tFUiB8fCBcImRvY2tlclwiO1xuICBwcml2YXRlIHByb3BzOiBOZXh0anNCdWlsZFByb3BzO1xuICBwcml2YXRlIHJlbGF0aXZlUGF0aFRvV29ya3NwYWNlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5leHRqc0J1aWxkUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuYnVpbGRlckltYWdlVGFnID0gYGNkay1uZXh0anMvYnVpbGRlci0ke3RoaXMubm9kZS5hZGRyLnNsaWNlKDMwKX1gO1xuICAgIHRoaXMucmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2UgPSBwcm9wcy5yZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZSB8fCBcIi5cIjtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5yZWxhdGl2ZVBhdGhUb0VudHJ5cG9pbnQgPSB0aGlzLmdldFJlbGF0aXZlRW50cnlwb2ludFBhdGgoKTtcbiAgICB0aGlzLmJ1aWxkSW1hZ2VEaWdlc3QgPSB0aGlzLmNyZWF0ZUJ1aWxkZXJJbWFnZSgpO1xuICAgIHRoaXMucHVibGljRGlyRW50cmllcyA9IHRoaXMuZ2V0UHVibGljRGlyRW50cmllcygpO1xuICAgIGlmIChcbiAgICAgIHByb3BzLm5leHRqc1R5cGUgPT09IE5leHRqc1R5cGUuR0xPQkFMX0NPTlRBSU5FUlMgfHxcbiAgICAgIHByb3BzLm5leHRqc1R5cGUgPT09IE5leHRqc1R5cGUuUkVHSU9OQUxfQ09OVEFJTkVSU1xuICAgICkge1xuICAgICAgdGhpcy5pbWFnZUZvck5leHRqc0NvbnRhaW5lcnMgPSB0aGlzLmNyZWF0ZUltYWdlRm9yTmV4dGpzQ29udGFpbmVycygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmltYWdlRm9yTmV4dGpzRnVuY3Rpb25zID0gdGhpcy5jcmVhdGVJbWFnZUZvck5leHRqc0Z1bmN0aW9ucygpO1xuICAgIH1cbiAgICB0aGlzLmltYWdlRm9yTmV4dGpzQXNzZXRzRGVwbG95bWVudCA9XG4gICAgICB0aGlzLmNyZWF0ZUltYWdlRm9yTmV4dGpzQXNzZXRzRGVwbG95bWVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZWxhdGl2ZUVudHJ5cG9pbnRQYXRoKCkge1xuICAgIC8vIGpvaW5Qb3NpeCBiL2MgdGhpcyB3aWxsIGJlIHVzZWQgaW4gbGludXggY29udGFpbmVyXG4gICAgcmV0dXJuIGpvaW5Qb3NpeCh0aGlzLnByb3BzLnJlbGF0aXZlUGF0aFRvV29ya3NwYWNlIHx8IFwiXCIsIFwic2VydmVyLmpzXCIpO1xuICB9XG4gIC8qKlxuICAgKiBBIGJ1aWxkZXIgb3IgYmFzZSBpbWFnZSBuZWVkcyB0byBiZSBjcmVhdGVkIHNvIHRoYXQgdGhlIHNhbWUgaW1hZ2UgY2FuIGJlXG4gICAqIGJ1aWx0IGBGUk9NYCBmb3IgYE5leHRqc0Z1bmN0aW9uc2Agb3IgYE5leHRqc0NvbnRhaW5lcnNgIGFuZCBgTmV4dGpzQXNzZXRzRGVwbG95bWVudGAuXG4gICAqIFRoaXMgaW1hZ2UgZG9lc24ndCBuZWVkIHRvIGJlIHVwbG9hZGVkIHRvIEVDUiBzbyB3ZSdyZSBcIm1hbnVhbGx5XCIgY3JlYXRpbmdcbiAgICogaXQgd2l0aCBgZXhlY1N5bmNgIGFuZCBvdGhlciBpbWFnZXMgd2lsbCBiZSBidWlsdCBgRlJPTWAgaXQuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUJ1aWxkZXJJbWFnZSgpIHtcbiAgICBjb25zdCBidWlsZENvbW1hbmQgPSB0aGlzLnByb3BzLmJ1aWxkQ29tbWFuZCB8fCBcIm5wbSBydW4gYnVpbGRcIjtcbiAgICBjb25zdCB7XG4gICAgICBidWlsZEFyZ3MgPSB7XG4gICAgICAgIEJVSUxEX0NPTU1BTkQ6IGJ1aWxkQ29tbWFuZCxcbiAgICAgICAgUkVMQVRJVkVfUEFUSF9UT19XT1JLU1BBQ0U6IHRoaXMucmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2UsXG4gICAgICAgIC4uLnRoaXMucHJvcHMuYnVpbGRlckltYWdlUHJvcHM/LmJ1aWxkQXJncyxcbiAgICAgIH0sXG4gICAgICBlbnZWYXJOYW1lcyA9IFtdLFxuICAgICAgZXhjbHVkZSA9IFtcbiAgICAgICAgXCIqKi9ub2RlX21vZHVsZXNcIixcbiAgICAgICAgXCIuZ2l0XCIsXG4gICAgICAgIFwiKiovY2RrLm91dFwiLFxuICAgICAgICBcIioqLy5uZXh0XCIsXG4gICAgICAgIFwiLmdpdGlnbm9yZVwiLFxuICAgICAgICBcIioubWRcIixcbiAgICAgIF0sXG4gICAgICBmaWxlID0gXCJidWlsZGVyLkRvY2tlcmZpbGVcIixcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgc2tpcEJ1aWxkID0gZmFsc2UsXG4gICAgfSA9IHRoaXMucHJvcHMuYnVpbGRlckltYWdlUHJvcHMgfHwge307XG4gICAgY29uc3Qgc3JjRG9ja2VyZmlsZVBhdGggPVxuICAgICAgdGhpcy5wcm9wcy5idWlsZGVySW1hZ2VQcm9wcz8uY3VzdG9tRG9ja2VyZmlsZVBhdGggfHxcbiAgICAgIGpvaW4oX19kaXJuYW1lLCBmaWxlKTtcbiAgICBjb25zdCBkZXN0RG9ja2VyZmlsZVBhdGggPSBqb2luKHRoaXMucHJvcHMuYnVpbGRDb250ZXh0LCBmaWxlKTtcbiAgICBjcFN5bmMoc3JjRG9ja2VyZmlsZVBhdGgsIGRlc3REb2NrZXJmaWxlUGF0aCk7XG4gICAgY29uc3QgZXhjbHVkZUZpbGVTdHIgPSBleGNsdWRlPy5qb2luKFwiXFxuXCIpO1xuICAgIGNvbnN0IGRvY2tlcmlnbm9yZUZpbGVQYXRoID0gam9pbih0aGlzLnByb3BzLmJ1aWxkQ29udGV4dCwgXCIuZG9ja2VyaWdub3JlXCIpO1xuICAgIHdyaXRlRmlsZVN5bmMoZG9ja2VyaWdub3JlRmlsZVBhdGgsIGV4Y2x1ZGVGaWxlU3RyKTtcbiAgICBjb25zdCBidWlsZEFyZ3NTdHIgPSB0aGlzLmNyZWF0ZUJ1aWxkQXJnU3RyKGJ1aWxkQXJncyk7XG4gICAgY29uc3QgbG9hZEVudlZhcnNTY3JpcHRQYXRoID0gam9pbihcbiAgICAgIHRoaXMucHJvcHMuYnVpbGRDb250ZXh0LFxuICAgICAgXCJjZGstbmV4dGpzLWxvYWQtZW52LXZhcnMuc2hcIixcbiAgICApO1xuICAgIGlmIChlbnZWYXJOYW1lcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY3JlYXRlTG9hZEVudlZhcnNTY3JpcHQoZW52VmFyTmFtZXMsIGxvYWRFbnZWYXJzU2NyaXB0UGF0aCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbW1hbmQgPVxuICAgICAgdGhpcy5wcm9wcy5idWlsZGVySW1hZ2VQcm9wcz8uY29tbWFuZCB8fFxuICAgICAgYCR7dGhpcy5jb250YWluZXJSdW50aW1lfSBidWlsZCAke3BsYXRmb3JtID8gYC0tcGxhdGZvcm0gJHtwbGF0Zm9ybS5wbGF0Zm9ybX1gIDogXCJcIn0gLS1maWxlICR7ZmlsZX0gLS10YWcgJHt0aGlzLmJ1aWxkZXJJbWFnZVRhZ30gJHtidWlsZEFyZ3NTdHJ9IC5gO1xuICAgIGxldCBlcnJvcjogdW5rbm93bjtcbiAgICB0cnkge1xuICAgICAgaWYgKCFza2lwQnVpbGQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYEJ1aWxkaW5nIGltYWdlIHdpdGggY29tbWFuZDogJHtjb21tYW5kfSBpbiBkaXJlY3Rvcnk6ICR7dGhpcy5wcm9wcy5idWlsZENvbnRleHR9YCxcbiAgICAgICAgKTtcbiAgICAgICAgZXhlY1N5bmMoY29tbWFuZCwge1xuICAgICAgICAgIHN0ZGlvOiBcImluaGVyaXRcIixcbiAgICAgICAgICBjd2Q6IHRoaXMucHJvcHMuYnVpbGRDb250ZXh0LFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZXJyb3IgPSBlcnI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJtU3luYyhkZXN0RG9ja2VyZmlsZVBhdGgpO1xuICAgICAgcm1TeW5jKGRvY2tlcmlnbm9yZUZpbGVQYXRoKTtcbiAgICAgIGlmIChlbnZWYXJOYW1lcy5sZW5ndGgpIHtcbiAgICAgICAgcm1TeW5jKGxvYWRFbnZWYXJzU2NyaXB0UGF0aCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlcnJvcikgdGhyb3cgZXJyb3I7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QnVpbGRlckltYWdlRGlnZXN0KCk7XG4gIH1cbiAgcHJpdmF0ZSBjcmVhdGVCdWlsZEFyZ1N0cihcbiAgICBidWlsZEFyZ3M6IFJlcXVpcmVkPEJ1aWxkZXJJbWFnZVByb3BzPltcImJ1aWxkQXJnc1wiXSxcbiAgKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGJ1aWxkQXJncykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgcmV0dXJuIGAke2FjY30gLS1idWlsZC1hcmcgJHtrZXl9PVwiJHt2YWx1ZX1cImA7XG4gICAgfSwgXCJcIik7XG4gIH1cbiAgcHJpdmF0ZSBjcmVhdGVMb2FkRW52VmFyc1NjcmlwdChcbiAgICBlbnZWYXJOYW1lczogUmVxdWlyZWQ8QnVpbGRlckltYWdlUHJvcHM+W1wiZW52VmFyTmFtZXNcIl0gPSBbXSxcbiAgICBsb2FkRW52VmFyc1NjcmlwdFBhdGg6IHN0cmluZyxcbiAgKSB7XG4gICAgbGV0IGxvYWRFbnZWYXJzU2NyaXB0ID1cbiAgICAgIFwiIyBEeW5hbWljYWxseSBnZW5lcmF0ZWQgc2NyaXB0IHRvIGxvYWQgZW52IHZhcnMgaW50byBidWlsZCBjb250YWluZXJcIjtcbiAgICBmb3IgKGNvbnN0IGVudlZhck5hbWUgb2YgZW52VmFyTmFtZXMpIHtcbiAgICAgIGxvYWRFbnZWYXJzU2NyaXB0ICs9IGBcXG5leHBvcnQgJHtlbnZWYXJOYW1lfT0ke3Byb2Nlc3MuZW52W2VudlZhck5hbWVdIHx8ICdcIlwiJ31gO1xuICAgIH1cbiAgICB3cml0ZUZpbGVTeW5jKGxvYWRFbnZWYXJzU2NyaXB0UGF0aCwgbG9hZEVudlZhcnNTY3JpcHQpO1xuICB9XG4gIHByaXZhdGUgZ2V0QnVpbGRlckltYWdlRGlnZXN0KCkge1xuICAgIGNvbnN0IGRpZ2VzdCA9IGV4ZWNTeW5jKFxuICAgICAgYCR7dGhpcy5jb250YWluZXJSdW50aW1lfSBpbWFnZXMgLS1uby10cnVuYyAtLXF1aWV0ICR7dGhpcy5idWlsZGVySW1hZ2VUYWd9YCxcbiAgICAgIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9LFxuICAgICk7XG4gICAgcmV0dXJuIGRpZ2VzdC5zbGljZSgwLCAtMSk7IC8vIHJlbW92ZSB0cmFpbGluZyBcXG5cbiAgfVxuICBwcml2YXRlIGdldFB1YmxpY0RpckVudHJpZXMoKTogUHVibGljRGlyRW50cnlbXSB7XG4gICAgY29uc3QgcHVibGljRGlyUGF0aCA9IGpvaW5Qb3NpeChcbiAgICAgIFwiL2FwcFwiLFxuICAgICAgdGhpcy5wcm9wcy5yZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZSB8fCBcIlwiLFxuICAgICAgXCJwdWJsaWNcIixcbiAgICApO1xuICAgIGNvbnN0IHB1YmxpY0RpckVudHJpZXNTdHJpbmcgPSBleGVjU3luYyhcbiAgICAgIGAke3RoaXMuY29udGFpbmVyUnVudGltZX0gcnVuICR7dGhpcy5idWlsZGVySW1hZ2VUYWd9IG5vZGUgLWUgXCJjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShmcy5yZWFkZGlyU3luYygnJHtwdWJsaWNEaXJQYXRofScsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KS5tYXAoKGUpID0+ICh7IG5hbWU6IGUubmFtZSwgaXNEaXI6IGUuaXNEaXJlY3RvcnkoKX0pKSkpXCJgLFxuICAgICAgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0sXG4gICAgKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShwdWJsaWNEaXJFbnRyaWVzU3RyaW5nKSBhcyBQdWJsaWNEaXJFbnRyeVtdO1xuICB9XG4gIHByaXZhdGUgY3JlYXRlSW1hZ2VGb3JOZXh0anNDb250YWluZXJzKCkge1xuICAgIGNvbnN0IGRvY2tlcmZpbGVOYW1lUHJlZml4ID1cbiAgICAgIHRoaXMucHJvcHMubmV4dGpzVHlwZSA9PT0gTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU1xuICAgICAgICA/IFwiZ2xvYmFsXCJcbiAgICAgICAgOiBcInJlZ2lvbmFsXCI7XG4gICAgY29uc3QgZG9ja2VyZmlsZU5hbWUgPSBgJHtkb2NrZXJmaWxlTmFtZVByZWZpeH0tY29udGFpbmVycy5Eb2NrZXJmaWxlYDtcbiAgICAvLyBjZGstbmV4dGpzL2J1aWxkZXIte2hhc2h9IGFscmVhZHkgY29udGFpbnMgYnVpbHQgbmV4dGpzIGFwcCB3aGljaCB3ZSdsbFxuICAgIC8vIGBDT1BZIC0tZnJvbT1jZGstbmV4dGpzL2J1aWxkZXIte2hhc2h9YCBzbyB3ZSBqdXN0IG5lZWQgdGhlIERvY2tlcmZpbGVcbiAgICAvLyBhbmQgc3ltbGluay50cyBzY3JpcHQgd2hpY2ggaXMgaW4gbGliL25leHRqcy1idWlsZCBmb2xkZXIuXG4gICAgY29uc3QgYnVpbGRDb250ZXh0ID0gam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcImxpYlwiLCBcIm5leHRqcy1idWlsZFwiKTtcbiAgICBjb25zdCBkb2NrZXJJbWFnZUFzc2V0ID0gbmV3IERvY2tlckltYWdlQXNzZXQodGhpcywgXCJJbWFnZVwiLCB7XG4gICAgICBidWlsZEFyZ3M6IHtcbiAgICAgICAgQlVJTERFUl9JTUFHRV9UQUc6IHRoaXMuYnVpbGRlckltYWdlVGFnLFxuICAgICAgICBEQVRBX0NBQ0hFX0RJUixcbiAgICAgICAgRlVMTF9ST1VURV9DQUNIRV9ESVIsXG4gICAgICAgIFBVQkxJQ19ESVIsXG4gICAgICAgIElNQUdFX0NBQ0hFX0RJUixcbiAgICAgICAgTU9VTlRfUEFUSDogdGhpcy5jb250YWluZXJNb3VudFBhdGhGb3JFZnMsXG4gICAgICAgIFJFTEFUSVZFX1BBVEhfVE9fV09SS1NQQUNFOiB0aGlzLnJlbGF0aXZlUGF0aFRvV29ya3NwYWNlLFxuICAgICAgfSxcbiAgICAgIGRpcmVjdG9yeTogYnVpbGRDb250ZXh0LFxuICAgICAgZXhjbHVkZTogW1xuICAgICAgICBcIipcIixcbiAgICAgICAgYCEke2RvY2tlcmZpbGVOYW1lfWAsXG4gICAgICAgIFwiIXN5bWxpbmsubWpzXCIsXG4gICAgICAgIFwiIWFkZC1jYWNoZS1oYW5kbGVyLm1qc1wiLFxuICAgICAgXSxcbiAgICAgIGV4dHJhSGFzaDogdGhpcy5idWlsZEltYWdlRGlnZXN0LCAvLyByZWJ1aWxkIHdoZW4gYnVpbGRlciBoYXNoIGNoYW5nZXNcbiAgICAgIGZpbGU6IGRvY2tlcmZpbGVOYW1lLFxuICAgICAgaWdub3JlTW9kZTogSWdub3JlTW9kZS5ET0NLRVIsXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzQ29udGFpbmVyc0RvY2tlckltYWdlQXNzZXRQcm9wcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZG9ja2VySW1hZ2VBc3NldDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW1hZ2VGb3JOZXh0anNGdW5jdGlvbnMoKSB7XG4gICAgY29uc3QgZG9ja2VyZmlsZU5hbWUgPSBcImdsb2JhbC1mdW5jdGlvbnMuRG9ja2VyZmlsZVwiO1xuICAgIC8vIGNkay1uZXh0anMvYnVpbGRlci17aGFzaH0gYWxyZWFkeSBjb250YWlucyBidWlsdCBuZXh0anMgYXBwIHdoaWNoIHdlJ2xsXG4gICAgLy8gYENPUFkgLS1mcm9tPWNkay1uZXh0anMvYnVpbGRlci17aGFzaH1gIHNvIHdlIGp1c3QgbmVlZCB0aGUgRG9ja2VyZmlsZVxuICAgIC8vIGFuZCBzeW1saW5rLnRzIHNjcmlwdCB3aGljaCBpcyBpbiBsaWIvbmV4dGpzLWJ1aWxkIGZvbGRlci5cbiAgICBjb25zdCBidWlsZENvbnRleHQgPSBqb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwibGliXCIsIFwibmV4dGpzLWJ1aWxkXCIpO1xuICAgIGNvbnN0IGRvY2tlckltYWdlQ29kZSA9IERvY2tlckltYWdlQ29kZS5mcm9tSW1hZ2VBc3NldChidWlsZENvbnRleHQsIHtcbiAgICAgIGJ1aWxkQXJnczoge1xuICAgICAgICBCVUlMREVSX0lNQUdFX1RBRzogdGhpcy5idWlsZGVySW1hZ2VUYWcsXG4gICAgICAgIERBVEFfQ0FDSEVfRElSLFxuICAgICAgICBGVUxMX1JPVVRFX0NBQ0hFX0RJUixcbiAgICAgICAgUFVCTElDX0RJUixcbiAgICAgICAgSU1BR0VfQ0FDSEVfRElSLFxuICAgICAgICBNT1VOVF9QQVRIOiB0aGlzLmNvbnRhaW5lck1vdW50UGF0aEZvckVmcyxcbiAgICAgICAgUkVMQVRJVkVfUEFUSF9UT19XT1JLU1BBQ0U6IHRoaXMucmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2UsXG4gICAgICB9LFxuICAgICAgY21kOiBbXCJub2RlXCIsIHRoaXMucmVsYXRpdmVQYXRoVG9FbnRyeXBvaW50XSxcbiAgICAgIGV4Y2x1ZGU6IFtcbiAgICAgICAgXCIqXCIsXG4gICAgICAgIGAhJHtkb2NrZXJmaWxlTmFtZX1gLFxuICAgICAgICBcIiFzeW1saW5rLm1qc1wiLFxuICAgICAgICBcIiFhZGQtY2FjaGUtaGFuZGxlci5tanNcIixcbiAgICAgICAgXCIhY2FjaGUtaGFuZGxlci5janNcIixcbiAgICAgIF0sXG4gICAgICBleHRyYUhhc2g6IHRoaXMuYnVpbGRJbWFnZURpZ2VzdCwgLy8gcmVidWlsZCB3aGVuIGJ1aWxkZXIgaGFzaCBjaGFuZ2VzXG4gICAgICBmaWxlOiBkb2NrZXJmaWxlTmFtZSxcbiAgICAgIGlnbm9yZU1vZGU6IElnbm9yZU1vZGUuRE9DS0VSLFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0Z1bmN0aW9uc0Fzc2V0SW1hZ2VDb2RlUHJvcHMsXG4gICAgfSk7XG4gICAgLy8gVE9ETzogaG93IHRvIGNsZWFuIHVwIHRlbXAgZGlyP1xuICAgIC8vIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gZG9ja2VySW1hZ2VDb2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJbWFnZUZvck5leHRqc0Fzc2V0c0RlcGxveW1lbnQoKSB7XG4gICAgY29uc3QgZG9ja2VyZmlsZU5hbWUgPSBcImFzc2V0cy1kZXBsb3ltZW50LkRvY2tlcmZpbGVcIjtcbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGJ1bmRsZWQgY3VzdG9tIHJlc291cmNlIGNvZGVcbiAgICAgKi9cbiAgICBjb25zdCBsYW1iZGFCdWlsZENvbnRleHQgPSBqb2luKFxuICAgICAgX19kaXJuYW1lLFxuICAgICAgXCIuLlwiLFxuICAgICAgXCIuLlwiLFxuICAgICAgXCJhc3NldHNcIixcbiAgICAgIFwibGFtYmRhc1wiLFxuICAgICAgXCJhc3NldHMtZGVwbG95bWVudFwiLFxuICAgICAgXCJhc3NldHMtZGVwbG95bWVudC5sYW1iZGFcIixcbiAgICApO1xuICAgIC8vIGNkay1uZXh0anMvYnVpbGRlci17aGFzaH0gYWxyZWFkeSBjb250YWlucyBOZXh0LmpzIGJ1aWx0IGNvZGUgd2hpY2hcbiAgICAvLyB3ZSdsbCBjb3B5IGludG8gZmluYWwgaW1hZ2UuIEJ1dCB3ZSBhbHNvIG5lZWQgbGFtYmRhIGNvZGUgdG8gcnVuXG4gICAgLy8gYXNzZXQgZGVwbG95bWVudCB0YXNrc1xuICAgIGNvbnN0IGRvY2tlckltYWdlQ29kZSA9IERvY2tlckltYWdlQ29kZS5mcm9tSW1hZ2VBc3NldChsYW1iZGFCdWlsZENvbnRleHQsIHtcbiAgICAgIGJ1aWxkQXJnczoge1xuICAgICAgICBCVUlMREVSX0lNQUdFX1RBRzogdGhpcy5idWlsZGVySW1hZ2VUYWcsXG4gICAgICAgIFJFTEFUSVZFX1BBVEhfVE9fV09SS1NQQUNFOiB0aGlzLnJlbGF0aXZlUGF0aFRvV29ya3NwYWNlLFxuICAgICAgfSxcbiAgICAgIGV4dHJhSGFzaDogdGhpcy5idWlsZEltYWdlRGlnZXN0LCAvLyByZWJ1aWxkIHdoZW4gYnVpbGRlciBoYXNoIGNoYW5nZXNcbiAgICAgIGZpbGU6IGRvY2tlcmZpbGVOYW1lLFxuICAgICAgaWdub3JlTW9kZTogSWdub3JlTW9kZS5ET0NLRVIsXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzQXNzZXREZXBsb3ltZW50QXNzZXRJbWFnZUNvZGVQcm9wcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZG9ja2VySW1hZ2VDb2RlO1xuICB9XG59XG4iXX0=
|