@fjall/components-infrastructure 0.88.3 → 0.88.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/app.d.ts +33 -10
- package/dist/lib/app.js +79 -36
- package/dist/lib/aspects/index.d.ts +1 -0
- package/dist/lib/aspects/index.js +6 -0
- package/dist/lib/config/aws/accountAuditRole.d.ts +20 -0
- package/dist/lib/config/aws/accountAuditRole.js +38 -0
- package/dist/lib/config/aws/accountMonitoringRole.d.ts +22 -0
- package/dist/lib/config/aws/accountMonitoringRole.js +133 -0
- package/dist/lib/config/aws/cloudTrail.d.ts +0 -3
- package/dist/lib/config/aws/cloudTrail.js +2 -2
- package/dist/lib/config/aws/disasterRecovery.js +26 -14
- package/dist/lib/config/aws/ecrDefaultImage.js +4 -3
- package/dist/lib/config/aws/index.d.ts +4 -0
- package/dist/lib/config/aws/index.js +5 -1
- package/dist/lib/config/aws/oidcConnector.d.ts +8 -0
- package/dist/lib/config/aws/oidcConnector.js +46 -0
- package/dist/lib/config/aws/platform.d.ts +2 -0
- package/dist/lib/config/aws/platform.js +6 -0
- package/dist/lib/config/index.d.ts +2 -0
- package/dist/lib/config/index.js +21 -0
- package/dist/lib/patterns/aws/account.js +22 -10
- package/dist/lib/patterns/aws/cdn.d.ts +19 -40
- package/dist/lib/patterns/aws/cdn.js +21 -17
- package/dist/lib/patterns/aws/compute.d.ts +6 -7
- package/dist/lib/patterns/aws/compute.js +7 -9
- package/dist/lib/patterns/aws/database.d.ts +7 -87
- package/dist/lib/patterns/aws/database.js +15 -38
- package/dist/lib/patterns/aws/index.d.ts +1 -1
- package/dist/lib/patterns/aws/index.js +2 -2
- package/dist/lib/patterns/aws/interfaces/cdn.d.ts +26 -0
- package/dist/lib/patterns/aws/interfaces/cdn.js +14 -0
- package/dist/lib/patterns/aws/interfaces/connector.d.ts +4 -181
- package/dist/lib/patterns/aws/interfaces/connector.js +16 -113
- package/dist/lib/patterns/aws/interfaces/index.d.ts +1 -0
- package/dist/lib/patterns/aws/interfaces/index.js +5 -2
- package/dist/lib/patterns/aws/interfaces/pattern.d.ts +6 -6
- package/dist/lib/patterns/aws/interfaces/pattern.js +1 -1
- package/dist/lib/patterns/aws/network.js +6 -9
- package/dist/lib/patterns/aws/organisation.d.ts +4 -2
- package/dist/lib/patterns/aws/organisation.js +21 -8
- package/dist/lib/patterns/aws/payload.js +11 -12
- package/dist/lib/patterns/aws/storage.d.ts +3 -2
- package/dist/lib/patterns/aws/storage.js +1 -1
- package/dist/lib/resources/aws/audit/auditRole.js +4 -4
- package/dist/lib/resources/aws/audit/index.d.ts +1 -0
- package/dist/lib/resources/aws/audit/index.js +6 -0
- package/dist/lib/resources/aws/backup/backupPlan.js +3 -2
- package/dist/lib/resources/aws/backup/backupVault.js +5 -3
- package/dist/lib/resources/aws/base/awsStack.d.ts +4 -2
- package/dist/lib/resources/aws/base/awsStack.js +8 -2
- package/dist/lib/resources/aws/cdn/cloudFront.d.ts +14 -0
- package/dist/lib/resources/aws/cdn/cloudFront.js +52 -18
- package/dist/lib/resources/aws/compute/ec2.js +18 -22
- package/dist/lib/resources/aws/compute/ecs.d.ts +9 -8
- package/dist/lib/resources/aws/compute/ecs.js +53 -41
- package/dist/lib/resources/aws/compute/index.d.ts +1 -0
- package/dist/lib/resources/aws/compute/index.js +2 -1
- package/dist/lib/resources/aws/compute/lambda.d.ts +0 -2
- package/dist/lib/resources/aws/compute/lambda.js +12 -27
- package/dist/lib/resources/aws/database/dynamodb.js +3 -13
- package/dist/lib/resources/aws/database/index.d.ts +8 -2
- package/dist/lib/resources/aws/database/index.js +19 -3
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +2 -3
- package/dist/lib/resources/aws/database/rdsAurora.js +32 -68
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +6 -6
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +25 -29
- package/dist/lib/resources/aws/database/rdsDefaults.d.ts +11 -0
- package/dist/lib/resources/aws/database/rdsDefaults.js +15 -0
- package/dist/lib/resources/aws/database/rdsHelpers.d.ts +39 -0
- package/dist/lib/resources/aws/database/rdsHelpers.js +75 -0
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +7 -8
- package/dist/lib/resources/aws/database/rdsInstance.js +40 -84
- package/dist/lib/resources/aws/database/rdsProxyOutput.d.ts +7 -0
- package/dist/lib/resources/aws/database/rdsProxyOutput.js +18 -0
- package/dist/lib/resources/aws/iam/index.d.ts +0 -1
- package/dist/lib/resources/aws/iam/index.js +1 -2
- package/dist/lib/resources/aws/index.d.ts +0 -1
- package/dist/lib/resources/aws/index.js +1 -2
- package/dist/lib/resources/aws/logging/cloudTrail.js +13 -3
- package/dist/lib/resources/aws/logging/index.d.ts +2 -0
- package/dist/lib/resources/aws/logging/index.js +19 -0
- package/dist/lib/resources/aws/messaging/index.d.ts +3 -2
- package/dist/lib/resources/aws/messaging/index.js +4 -3
- package/dist/lib/resources/aws/messaging/sqs.js +14 -11
- package/dist/lib/resources/aws/messaging/utils.d.ts +1 -2
- package/dist/lib/resources/aws/messaging/utils.js +3 -4
- package/dist/lib/resources/aws/monitoring/index.d.ts +0 -1
- package/dist/lib/resources/aws/monitoring/index.js +4 -17
- package/dist/lib/resources/aws/networking/hostedZone.d.ts +28 -0
- package/dist/lib/resources/aws/networking/hostedZone.js +153 -0
- package/dist/lib/resources/aws/networking/index.d.ts +2 -0
- package/dist/lib/resources/aws/networking/index.js +3 -1
- package/dist/lib/resources/aws/networking/ipamPool.js +57 -31
- package/dist/lib/resources/aws/networking/securityGroup.d.ts +5 -0
- package/dist/lib/resources/aws/networking/securityGroup.js +14 -0
- package/dist/lib/resources/aws/networking/vpc.js +9 -4
- package/dist/lib/resources/aws/organisation/costAllocationTagActivator.d.ts +17 -0
- package/dist/lib/resources/aws/organisation/costAllocationTagActivator.js +66 -0
- package/dist/lib/resources/aws/organisation/index.d.ts +1 -0
- package/dist/lib/resources/aws/organisation/index.js +4 -2
- package/dist/lib/resources/aws/secrets/index.d.ts +0 -1
- package/dist/lib/resources/aws/secrets/index.js +1 -2
- package/dist/lib/resources/aws/storage/ecr.d.ts +0 -1
- package/dist/lib/resources/aws/storage/ecr.js +5 -5
- package/dist/lib/resources/aws/storage/s3.d.ts +3 -3
- package/dist/lib/resources/aws/storage/s3.js +1 -1
- package/dist/lib/resources/aws/utilities/index.d.ts +5 -0
- package/dist/lib/resources/aws/utilities/index.js +22 -0
- package/dist/lib/utils/backupTierMapping.d.ts +11 -0
- package/dist/lib/utils/backupTierMapping.js +17 -0
- package/dist/lib/utils/capitaliseString.d.ts +6 -0
- package/dist/lib/utils/capitaliseString.js +10 -1
- package/dist/lib/utils/connections.d.ts +46 -0
- package/dist/lib/utils/connections.js +159 -0
- package/dist/lib/utils/connector.d.ts +183 -0
- package/dist/lib/utils/connector.js +117 -0
- package/dist/lib/utils/databaseTypes.d.ts +85 -0
- package/dist/lib/utils/databaseTypes.js +34 -0
- package/dist/lib/utils/env.d.ts +42 -0
- package/dist/lib/utils/env.js +128 -0
- package/dist/lib/utils/getConfig.d.ts +0 -5
- package/dist/lib/utils/getConfig.js +1 -4
- package/dist/lib/utils/index.d.ts +6 -0
- package/dist/lib/utils/index.js +7 -1
- package/dist/lib/utils/removalPolicy.d.ts +2 -0
- package/dist/lib/utils/removalPolicy.js +16 -0
- package/dist/lib/utils/standardTagsAspect.d.ts +4 -0
- package/dist/lib/utils/standardTagsAspect.js +8 -8
- package/dist/lib/utils/vpcUtils.d.ts +14 -0
- package/dist/lib/utils/vpcUtils.js +28 -0
- package/package.json +6 -6
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Stack } from "aws-cdk-lib";
|
|
2
|
+
import { type IVpc } from "aws-cdk-lib/aws-ec2";
|
|
2
3
|
import { Construct } from "constructs";
|
|
3
4
|
import { Repository } from "aws-cdk-lib/aws-ecr";
|
|
4
5
|
export interface StackBuilder {
|
|
@@ -7,7 +8,7 @@ export interface StackBuilder {
|
|
|
7
8
|
addNetwork(fn: (stackBuilder: StackBuilder) => Construct): StackBuilder;
|
|
8
9
|
addNetwork(resource: Construct | string): StackBuilder;
|
|
9
10
|
getStack(): Stack;
|
|
10
|
-
getNetwork():
|
|
11
|
+
getNetwork(): IVpc;
|
|
11
12
|
}
|
|
12
13
|
export interface AwsStackProps {
|
|
13
14
|
readonly accountId?: string;
|
|
@@ -26,6 +27,7 @@ export declare class AwsStack implements StackBuilder {
|
|
|
26
27
|
private getCdkStack;
|
|
27
28
|
private getStackProps;
|
|
28
29
|
private isConnectable;
|
|
30
|
+
private isVpc;
|
|
29
31
|
addConstruct(construct: Construct): AwsStack;
|
|
30
32
|
addNetwork(resource: Construct): AwsStack;
|
|
31
33
|
addNetwork(resource: (stackBuilder: StackBuilder) => Construct): AwsStack;
|
|
@@ -33,7 +35,7 @@ export declare class AwsStack implements StackBuilder {
|
|
|
33
35
|
addContainerRegistry(resource: (stackBuilder: StackBuilder) => Repository): AwsStack;
|
|
34
36
|
getStack(): Stack;
|
|
35
37
|
getStackName(): string;
|
|
36
|
-
getNetwork():
|
|
38
|
+
getNetwork(): IVpc;
|
|
37
39
|
getContainerRegistry(): Repository;
|
|
38
40
|
getResource(identifier: string): Construct;
|
|
39
41
|
connect(from: Construct | string, to: Construct | string, port?: number): this;
|
|
@@ -50,7 +50,10 @@ class AwsStack {
|
|
|
50
50
|
return stackProps;
|
|
51
51
|
}
|
|
52
52
|
isConnectable(arg) {
|
|
53
|
-
return arg
|
|
53
|
+
return typeof arg === "object" && arg !== null && "connections" in arg;
|
|
54
|
+
}
|
|
55
|
+
isVpc(resource) {
|
|
56
|
+
return "vpcId" in resource;
|
|
54
57
|
}
|
|
55
58
|
addConstruct(construct) {
|
|
56
59
|
this.resources[construct.node.id] = construct;
|
|
@@ -59,6 +62,9 @@ class AwsStack {
|
|
|
59
62
|
addNetwork(resource) {
|
|
60
63
|
const resourceActual = resource instanceof constructs_1.Construct ? resource : resource(this);
|
|
61
64
|
this.resources[resourceActual.node.id] = resourceActual;
|
|
65
|
+
if (!this.isVpc(resourceActual)) {
|
|
66
|
+
throw new Error("addNetwork expects a VPC construct implementing IVpc");
|
|
67
|
+
}
|
|
62
68
|
this.network = resourceActual;
|
|
63
69
|
return this;
|
|
64
70
|
}
|
|
@@ -99,4 +105,4 @@ class AwsStack {
|
|
|
99
105
|
}
|
|
100
106
|
exports.AwsStack = AwsStack;
|
|
101
107
|
exports.default = AwsStack;
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzU3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9iYXNlL2F3c1N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFxRDtBQUNyRCxpREFBOEQ7QUFDOUQsMkNBQXVDO0FBRXZDLHNDQUErQjtBQUMvQixpREFBaUQ7QUFtQmpELE1BQWEsUUFBUTtJQVNuQixZQUNFLEVBQVUsRUFDVixZQUFvQyxFQUNwQyxLQUFxQjtRQVhQLGNBQVMsR0FFckIsRUFBRSxDQUFDO1FBV0wseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekMsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUFvQztRQUMxRCxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDaEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsRUFBVSxFQUFFLEtBQXFCO1FBQ25ELE9BQU8sSUFBSSxtQkFBSyxDQUFDLGFBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxhQUFhLENBQ25CLEtBQWdDO1FBRWhDLDBFQUEwRTtRQUMxRSxnRUFBZ0U7UUFDaEUsd0VBQXdFO1FBQ3hFLHlCQUF5QjtRQUV6QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO1lBQ2hELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUM7WUFFOUMsSUFBSSxPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQWdCLENBQUM7WUFDcEQsQ0FBQztZQUVELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQWU7WUFDN0IsR0FBRyxFQUNELEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU07Z0JBQzdCLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFO2dCQUNwRCxDQUFDLENBQUMsU0FBUztTQUNoQixDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFRO1FBQzVCLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQztJQUN6QixDQUFDO0lBRU0sWUFBWSxDQUFDLFNBQW9CO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTU0sVUFBVSxDQUNmLFFBQWlFO1FBRWpFLE1BQU0sY0FBYyxHQUNsQixRQUFRLFlBQVksc0JBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztRQUN4RCxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFNTSxvQkFBb0IsQ0FDekIsUUFBbUU7UUFFbkUsTUFBTSxjQUFjLEdBQ2xCLFFBQVEsWUFBWSxvQkFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDO1FBQ3hELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxjQUFjLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRU0sWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxvQkFBb0I7UUFDekIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxVQUFrQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLE9BQU8sQ0FDWixJQUF3QixFQUN4QixFQUFzQixFQUN0QixJQUFhO1FBRWIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU5QixNQUFNLFlBQVksR0FDaEIsSUFBSSxZQUFZLHNCQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxNQUFNLFVBQVUsR0FBRyxFQUFFLFlBQVksc0JBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXZFLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztZQUN0RSxPQUFPLElBQUksQ0FBQztRQUVkLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pELFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV6RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQWhKRCw0QkFnSkM7QUFDRCxrQkFBZSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgdHlwZSBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyB0eXBlIElDb25uZWN0YWJsZSwgUG9ydCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgQXBwIGZyb20gXCIuLi8uLi8uLi9hcHBcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrQnVpbGRlciB7XG4gIGFkZENvbnN0cnVjdChyZXNvdXJjZTogQ29uc3RydWN0KTogU3RhY2tCdWlsZGVyO1xuXG4gIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCk6IFN0YWNrQnVpbGRlcjtcbiAgYWRkTmV0d29yayhmbjogKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3QpOiBTdGFja0J1aWxkZXI7XG4gIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCB8IHN0cmluZyk6IFN0YWNrQnVpbGRlcjtcblxuICBnZXRTdGFjaygpOiBTdGFjaztcbiAgZ2V0TmV0d29yaygpOiBDb25zdHJ1Y3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzU3RhY2tQcm9wcyB7XG4gIHJlYWRvbmx5IGFjY291bnRJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuICBhY2NvdW50TmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEF3c1N0YWNrIGltcGxlbWVudHMgU3RhY2tCdWlsZGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlczoge1xuICAgIFtrZXk6IHN0cmluZ106IENvbnN0cnVjdDtcbiAgfSA9IHt9O1xuXG4gIHByaXZhdGUgc3RhY2s6IFN0YWNrO1xuICBwcml2YXRlIG5ldHdvcmshOiBDb25zdHJ1Y3Q7XG4gIHByaXZhdGUgY29udGFpbmVyUmVnaXN0cnkhOiBSZXBvc2l0b3J5O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGVwZW5kZW5jaWVzPzogQXdzU3RhY2sgfCBBd3NTdGFja1tdLFxuICAgIHByb3BzPzogQXdzU3RhY2tQcm9wc1xuICApIHtcbiAgICAvLyBDcmVhdGUgaW5uZXIgQ0RLIFN0YWNrXG4gICAgdGhpcy5zdGFjayA9IHRoaXMuZ2V0Q2RrU3RhY2soaWQsIHByb3BzKTtcblxuICAgIC8vIFJlZ2lzdGVyIGFsbCBzdGFjayBkZXBlbmRlbmNpZXNcbiAgICB0aGlzLmFkZERlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzPzogQXdzU3RhY2sgfCBBd3NTdGFja1tdKSB7XG4gICAgaWYgKCFkZXBlbmRlbmNpZXMpIHJldHVybjtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGRlcGVuZGVuY2llcykpIHtcbiAgICAgIGZvciAoY29uc3QgZGVwZW5kZW5jeSBvZiBkZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgdGhpcy5zdGFjay5hZGREZXBlbmRlbmN5KGRlcGVuZGVuY3kuZ2V0U3RhY2soKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhY2suYWRkRGVwZW5kZW5jeShkZXBlbmRlbmNpZXMuZ2V0U3RhY2soKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDZGtTdGFjayhpZDogc3RyaW5nLCBwcm9wcz86IEF3c1N0YWNrUHJvcHMpIHtcbiAgICByZXR1cm4gbmV3IFN0YWNrKEFwcC5nZXRJbnN0YW5jZSgpLCBpZCwgdGhpcy5nZXRTdGFja1Byb3BzKHByb3BzKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0YWNrUHJvcHMoXG4gICAgcHJvcHM6IEF3c1N0YWNrUHJvcHMgfCB1bmRlZmluZWRcbiAgKTogU3RhY2tQcm9wcyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gSWYgbm8gZXhwbGljaXQgcHJvcHMgYXJlIHByb3ZpZGVkLCBmYWxsIGJhY2sgdG8gdGhlIGFjY291bnQvcmVnaW9uIHRoYXRcbiAgICAvLyBDREsgcmVzb2x2ZWQgZm9yIHRoaXMgcnVuLiBUaGlzIGFsbG93cyBjb250ZXh0IGxvb2stdXBzIChlLmcuXG4gICAgLy8gVnBjLmZyb21Mb29rdXApIHRvIHdvcmsgd2l0aG91dCBldmVyeSBzdGFjayBoYXZpbmcgdG8gYmUgY3JlYXRlZCB3aXRoXG4gICAgLy8gZXhwbGljaXQgZW52IHNldHRpbmdzLlxuXG4gICAgaWYgKCFwcm9wcykge1xuICAgICAgY29uc3QgYWNjb3VudCA9IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQ7XG4gICAgICBjb25zdCByZWdpb24gPSBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT047XG5cbiAgICAgIGlmIChhY2NvdW50ICYmIHJlZ2lvbikge1xuICAgICAgICByZXR1cm4geyBlbnY6IHsgYWNjb3VudCwgcmVnaW9uIH0gfSBhcyBTdGFja1Byb3BzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhY2tQcm9wczogU3RhY2tQcm9wcyA9IHtcbiAgICAgIGVudjpcbiAgICAgICAgcHJvcHMuYWNjb3VudElkICYmIHByb3BzLnJlZ2lvblxuICAgICAgICAgID8geyBhY2NvdW50OiBwcm9wcy5hY2NvdW50SWQsIHJlZ2lvbjogcHJvcHMucmVnaW9uIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICByZXR1cm4gc3RhY2tQcm9wcztcbiAgfVxuXG4gIHByaXZhdGUgaXNDb25uZWN0YWJsZShhcmc6IGFueSk6IGFyZyBpcyBJQ29ubmVjdGFibGUge1xuICAgIHJldHVybiBhcmcuY29ubmVjdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgYWRkQ29uc3RydWN0KGNvbnN0cnVjdDogQ29uc3RydWN0KTogQXdzU3RhY2sge1xuICAgIHRoaXMucmVzb3VyY2VzW2NvbnN0cnVjdC5ub2RlLmlkXSA9IGNvbnN0cnVjdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhZGROZXR3b3JrKHJlc291cmNlOiBDb25zdHJ1Y3QpOiBBd3NTdGFjaztcbiAgcHVibGljIGFkZE5ldHdvcmsoXG4gICAgcmVzb3VyY2U6IChzdGFja0J1aWxkZXI6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0XG4gICk6IEF3c1N0YWNrO1xuICBwdWJsaWMgYWRkTmV0d29yayhcbiAgICByZXNvdXJjZTogQ29uc3RydWN0IHwgKChzdGFja0J1aWxkZXI6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0KVxuICApOiBBd3NTdGFjayB7XG4gICAgY29uc3QgcmVzb3VyY2VBY3R1YWwgPVxuICAgICAgcmVzb3VyY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3QgPyByZXNvdXJjZSA6IHJlc291cmNlKHRoaXMpO1xuICAgIHRoaXMucmVzb3VyY2VzW3Jlc291cmNlQWN0dWFsLm5vZGUuaWRdID0gcmVzb3VyY2VBY3R1YWw7XG4gICAgdGhpcy5uZXR3b3JrID0gcmVzb3VyY2VBY3R1YWw7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYWRkQ29udGFpbmVyUmVnaXN0cnkocmVzb3VyY2U6IFJlcG9zaXRvcnkpOiBBd3NTdGFjaztcbiAgcHVibGljIGFkZENvbnRhaW5lclJlZ2lzdHJ5KFxuICAgIHJlc291cmNlOiAoc3RhY2tCdWlsZGVyOiBTdGFja0J1aWxkZXIpID0+IFJlcG9zaXRvcnlcbiAgKTogQXdzU3RhY2s7XG4gIHB1YmxpYyBhZGRDb250YWluZXJSZWdpc3RyeShcbiAgICByZXNvdXJjZTogUmVwb3NpdG9yeSB8ICgoc3RhY2tCdWlsZGVyOiBTdGFja0J1aWxkZXIpID0+IFJlcG9zaXRvcnkpXG4gICk6IEF3c1N0YWNrIHtcbiAgICBjb25zdCByZXNvdXJjZUFjdHVhbCA9XG4gICAgICByZXNvdXJjZSBpbnN0YW5jZW9mIFJlcG9zaXRvcnkgPyByZXNvdXJjZSA6IHJlc291cmNlKHRoaXMpO1xuICAgIHRoaXMucmVzb3VyY2VzW3Jlc291cmNlQWN0dWFsLm5vZGUuaWRdID0gcmVzb3VyY2VBY3R1YWw7XG4gICAgdGhpcy5jb250YWluZXJSZWdpc3RyeSA9IHJlc291cmNlQWN0dWFsO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGdldFN0YWNrKCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrO1xuICB9XG5cbiAgcHVibGljIGdldFN0YWNrTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zdGFja05hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0TmV0d29yaygpIHtcbiAgICByZXR1cm4gdGhpcy5uZXR3b3JrO1xuICB9XG5cbiAgcHVibGljIGdldENvbnRhaW5lclJlZ2lzdHJ5KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lclJlZ2lzdHJ5O1xuICB9XG5cbiAgcHVibGljIGdldFJlc291cmNlKGlkZW50aWZpZXI6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlc1tpZGVudGlmaWVyXTtcbiAgfVxuXG4gIHB1YmxpYyBjb25uZWN0KFxuICAgIGZyb206IENvbnN0cnVjdCB8IHN0cmluZyxcbiAgICB0bzogQ29uc3RydWN0IHwgc3RyaW5nLFxuICAgIHBvcnQ/OiBudW1iZXJcbiAgKSB7XG4gICAgaWYgKCFmcm9tIHx8ICF0bykgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBmcm9tUmVzb3VyY2UgPVxuICAgICAgZnJvbSBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IGZyb20gOiB0aGlzLmdldFJlc291cmNlKGZyb20pO1xuICAgIGNvbnN0IHRvUmVzb3VyY2UgPSB0byBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IHRvIDogdGhpcy5nZXRSZXNvdXJjZSh0byk7XG5cbiAgICBpZiAoIWZyb21SZXNvdXJjZSB8fCAhdG9SZXNvdXJjZSkgcmV0dXJuIHRoaXM7XG5cbiAgICBpZiAoIXRoaXMuaXNDb25uZWN0YWJsZShmcm9tUmVzb3VyY2UpIHx8ICF0aGlzLmlzQ29ubmVjdGFibGUodG9SZXNvdXJjZSkpXG4gICAgICByZXR1cm4gdGhpcztcblxuICAgIGNvbnN0IHBvcnRBY3R1YWwgPSBwb3J0ID8gUG9ydC50Y3AocG9ydCkgOiBQb3J0LmFsbFRjcCgpO1xuICAgIGZyb21SZXNvdXJjZS5jb25uZWN0aW9ucy5hbGxvd1RvKHRvUmVzb3VyY2UsIHBvcnRBY3R1YWwpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IEF3c1N0YWNrO1xuIl19
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzU3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9iYXNlL2F3c1N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFxRDtBQUNyRCxpREFBeUU7QUFDekUsMkNBQXVDO0FBRXZDLHNDQUErQjtBQUMvQixpREFBaUQ7QUFtQmpELE1BQWEsUUFBUTtJQVNuQixZQUNFLEVBQVUsRUFDVixZQUFvQyxFQUNwQyxLQUFxQjtRQVhQLGNBQVMsR0FFckIsRUFBRSxDQUFDO1FBV0wseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekMsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUFvQztRQUMxRCxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDaEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsRUFBVSxFQUFFLEtBQXFCO1FBQ25ELE9BQU8sSUFBSSxtQkFBSyxDQUFDLGFBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JF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d0IsRUFDeEIsRUFBc0IsRUFDdEIsSUFBYTtRQUViLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFOUIsTUFBTSxZQUFZLEdBQ2hCLElBQUksWUFBWSxzQkFBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsTUFBTSxVQUFVLEdBQUcsRUFBRSxZQUFZLHNCQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV2RSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRTlDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7WUFDdEUsT0FBTyxJQUFJLENBQUM7UUFFZCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6RCxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFekQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUF2SkQsNEJBdUpDO0FBQ0Qsa0JBQWUsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIHR5cGUgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgdHlwZSBJQ29ubmVjdGFibGUsIHR5cGUgSVZwYywgUG9ydCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgQXBwIGZyb20gXCIuLi8uLi8uLi9hcHBcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrQnVpbGRlciB7XG4gIGFkZENvbnN0cnVjdChyZXNvdXJjZTogQ29uc3RydWN0KTogU3RhY2tCdWlsZGVyO1xuXG4gIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCk6IFN0YWNrQnVpbGRlcjtcbiAgYWRkTmV0d29yayhmbjogKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3QpOiBTdGFja0J1aWxkZXI7XG4gIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCB8IHN0cmluZyk6IFN0YWNrQnVpbGRlcjtcblxuICBnZXRTdGFjaygpOiBTdGFjaztcbiAgZ2V0TmV0d29yaygpOiBJVnBjO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF3c1N0YWNrUHJvcHMge1xuICByZWFkb25seSBhY2NvdW50SWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbiAgYWNjb3VudE5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBBd3NTdGFjayBpbXBsZW1lbnRzIFN0YWNrQnVpbGRlciB7XG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZXM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBDb25zdHJ1Y3Q7XG4gIH0gPSB7fTtcblxuICBwcml2YXRlIHN0YWNrOiBTdGFjaztcbiAgcHJpdmF0ZSBuZXR3b3JrITogSVZwYztcbiAgcHJpdmF0ZSBjb250YWluZXJSZWdpc3RyeSE6IFJlcG9zaXRvcnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBkZXBlbmRlbmNpZXM/OiBBd3NTdGFjayB8IEF3c1N0YWNrW10sXG4gICAgcHJvcHM/OiBBd3NTdGFja1Byb3BzXG4gICkge1xuICAgIC8vIENyZWF0ZSBpbm5lciBDREsgU3RhY2tcbiAgICB0aGlzLnN0YWNrID0gdGhpcy5nZXRDZGtTdGFjayhpZCwgcHJvcHMpO1xuXG4gICAgLy8gUmVnaXN0ZXIgYWxsIHN0YWNrIGRlcGVuZGVuY2llc1xuICAgIHRoaXMuYWRkRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7XG4gIH1cblxuICBwcml2YXRlIGFkZERlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXM/OiBBd3NTdGFjayB8IEF3c1N0YWNrW10pIHtcbiAgICBpZiAoIWRlcGVuZGVuY2llcykgcmV0dXJuO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jaWVzKSkge1xuICAgICAgZm9yIChjb25zdCBkZXBlbmRlbmN5IG9mIGRlcGVuZGVuY2llcykge1xuICAgICAgICB0aGlzLnN0YWNrLmFkZERlcGVuZGVuY3koZGVwZW5kZW5jeS5nZXRTdGFjaygpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFjay5hZGREZXBlbmRlbmN5KGRlcGVuZGVuY2llcy5nZXRTdGFjaygpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENka1N0YWNrKGlkOiBzdHJpbmcsIHByb3BzPzogQXdzU3RhY2tQcm9wcykge1xuICAgIHJldHVybiBuZXcgU3RhY2soQXBwLmdldEluc3RhbmNlKCksIGlkLCB0aGlzLmdldFN0YWNrUHJvcHMocHJvcHMpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RhY2tQcm9wcyhcbiAgICBwcm9wczogQXdzU3RhY2tQcm9wcyB8IHVuZGVmaW5lZFxuICApOiBTdGFja1Byb3BzIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBJZiBubyBleHBsaWNpdCBwcm9wcyBhcmUgcHJvdmlkZWQsIGZhbGwgYmFjayB0byB0aGUgYWNjb3VudC9yZWdpb24gdGhhdFxuICAgIC8vIENESyByZXNvbHZlZCBmb3IgdGhpcyBydW4uIFRoaXMgYWxsb3dzIGNvbnRleHQgbG9vay11cHMgKGUuZy5cbiAgICAvLyBWcGMuZnJvbUxvb2t1cCkgdG8gd29yayB3aXRob3V0IGV2ZXJ5IHN0YWNrIGhhdmluZyB0byBiZSBjcmVhdGVkIHdpdGhcbiAgICAvLyBleHBsaWNpdCBlbnYgc2V0dGluZ3MuXG5cbiAgICBpZiAoIXByb3BzKSB7XG4gICAgICBjb25zdCBhY2NvdW50ID0gcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVDtcbiAgICAgIGNvbnN0IHJlZ2lvbiA9IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTjtcblxuICAgICAgaWYgKGFjY291bnQgJiYgcmVnaW9uKSB7XG4gICAgICAgIHJldHVybiB7IGVudjogeyBhY2NvdW50LCByZWdpb24gfSB9IGFzIFN0YWNrUHJvcHM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFja1Byb3BzOiBTdGFja1Byb3BzID0ge1xuICAgICAgZW52OlxuICAgICAgICBwcm9wcy5hY2NvdW50SWQgJiYgcHJvcHMucmVnaW9uXG4gICAgICAgICAgPyB7IGFjY291bnQ6IHByb3BzLmFjY291bnRJZCwgcmVnaW9uOiBwcm9wcy5yZWdpb24gfVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgfTtcblxuICAgIHJldHVybiBzdGFja1Byb3BzO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Nvbm5lY3RhYmxlKGFyZzogdW5rbm93bik6IGFyZyBpcyBJQ29ubmVjdGFibGUge1xuICAgIHJldHVybiB0eXBlb2YgYXJnID09PSBcIm9iamVjdFwiICYmIGFyZyAhPT0gbnVsbCAmJiBcImNvbm5lY3Rpb25zXCIgaW4gYXJnO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZwYyhyZXNvdXJjZTogQ29uc3RydWN0KTogcmVzb3VyY2UgaXMgQ29uc3RydWN0ICYgSVZwYyB7XG4gICAgcmV0dXJuIFwidnBjSWRcIiBpbiByZXNvdXJjZTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDb25zdHJ1Y3QoY29uc3RydWN0OiBDb25zdHJ1Y3QpOiBBd3NTdGFjayB7XG4gICAgdGhpcy5yZXNvdXJjZXNbY29uc3RydWN0Lm5vZGUuaWRdID0gY29uc3RydWN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCk6IEF3c1N0YWNrO1xuICBwdWJsaWMgYWRkTmV0d29yayhcbiAgICByZXNvdXJjZTogKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3RcbiAgKTogQXdzU3RhY2s7XG4gIHB1YmxpYyBhZGROZXR3b3JrKFxuICAgIHJlc291cmNlOiBDb25zdHJ1Y3QgfCAoKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3QpXG4gICk6IEF3c1N0YWNrIHtcbiAgICBjb25zdCByZXNvdXJjZUFjdHVhbCA9XG4gICAgICByZXNvdXJjZSBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IHJlc291cmNlIDogcmVzb3VyY2UodGhpcyk7XG4gICAgdGhpcy5yZXNvdXJjZXNbcmVzb3VyY2VBY3R1YWwubm9kZS5pZF0gPSByZXNvdXJjZUFjdHVhbDtcbiAgICBpZiAoIXRoaXMuaXNWcGMocmVzb3VyY2VBY3R1YWwpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJhZGROZXR3b3JrIGV4cGVjdHMgYSBWUEMgY29uc3RydWN0IGltcGxlbWVudGluZyBJVnBjXCIpO1xuICAgIH1cbiAgICB0aGlzLm5ldHdvcmsgPSByZXNvdXJjZUFjdHVhbDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhZGRDb250YWluZXJSZWdpc3RyeShyZXNvdXJjZTogUmVwb3NpdG9yeSk6IEF3c1N0YWNrO1xuICBwdWJsaWMgYWRkQ29udGFpbmVyUmVnaXN0cnkoXG4gICAgcmVzb3VyY2U6IChzdGFja0J1aWxkZXI6IFN0YWNrQnVpbGRlcikgPT4gUmVwb3NpdG9yeVxuICApOiBBd3NTdGFjaztcbiAgcHVibGljIGFkZENvbnRhaW5lclJlZ2lzdHJ5KFxuICAgIHJlc291cmNlOiBSZXBvc2l0b3J5IHwgKChzdGFja0J1aWxkZXI6IFN0YWNrQnVpbGRlcikgPT4gUmVwb3NpdG9yeSlcbiAgKTogQXdzU3RhY2sge1xuICAgIGNvbnN0IHJlc291cmNlQWN0dWFsID1cbiAgICAgIHJlc291cmNlIGluc3RhbmNlb2YgUmVwb3NpdG9yeSA/IHJlc291cmNlIDogcmVzb3VyY2UodGhpcyk7XG4gICAgdGhpcy5yZXNvdXJjZXNbcmVzb3VyY2VBY3R1YWwubm9kZS5pZF0gPSByZXNvdXJjZUFjdHVhbDtcbiAgICB0aGlzLmNvbnRhaW5lclJlZ2lzdHJ5ID0gcmVzb3VyY2VBY3R1YWw7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2s7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhY2tOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnN0YWNrTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROZXR3b3JrKCkge1xuICAgIHJldHVybiB0aGlzLm5ldHdvcms7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29udGFpbmVyUmVnaXN0cnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyUmVnaXN0cnk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVzb3VyY2UoaWRlbnRpZmllcjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzW2lkZW50aWZpZXJdO1xuICB9XG5cbiAgcHVibGljIGNvbm5lY3QoXG4gICAgZnJvbTogQ29uc3RydWN0IHwgc3RyaW5nLFxuICAgIHRvOiBDb25zdHJ1Y3QgfCBzdHJpbmcsXG4gICAgcG9ydD86IG51bWJlclxuICApIHtcbiAgICBpZiAoIWZyb20gfHwgIXRvKSByZXR1cm4gdGhpcztcblxuICAgIGNvbnN0IGZyb21SZXNvdXJjZSA9XG4gICAgICBmcm9tIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gZnJvbSA6IHRoaXMuZ2V0UmVzb3VyY2UoZnJvbSk7XG4gICAgY29uc3QgdG9SZXNvdXJjZSA9IHRvIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gdG8gOiB0aGlzLmdldFJlc291cmNlKHRvKTtcblxuICAgIGlmICghZnJvbVJlc291cmNlIHx8ICF0b1Jlc291cmNlKSByZXR1cm4gdGhpcztcblxuICAgIGlmICghdGhpcy5pc0Nvbm5lY3RhYmxlKGZyb21SZXNvdXJjZSkgfHwgIXRoaXMuaXNDb25uZWN0YWJsZSh0b1Jlc291cmNlKSlcbiAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgY29uc3QgcG9ydEFjdHVhbCA9IHBvcnQgPyBQb3J0LnRjcChwb3J0KSA6IFBvcnQuYWxsVGNwKCk7XG4gICAgZnJvbVJlc291cmNlLmNvbm5lY3Rpb25zLmFsbG93VG8odG9SZXNvdXJjZSwgcG9ydEFjdHVhbCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgQXdzU3RhY2s7XG4iXX0=
|
|
@@ -31,6 +31,11 @@ export interface CdnBehaviour {
|
|
|
31
31
|
cachePolicy?: CachePolicyPreset | ICachePolicy;
|
|
32
32
|
allowedMethods?: "GET_HEAD" | "GET_HEAD_OPTIONS" | "ALL";
|
|
33
33
|
}
|
|
34
|
+
export interface AccessGateConfig {
|
|
35
|
+
type: "basic-auth";
|
|
36
|
+
username: string;
|
|
37
|
+
password: string;
|
|
38
|
+
}
|
|
34
39
|
export interface CloudFrontDistributionProps {
|
|
35
40
|
defaultOrigin: CdnOriginConfig;
|
|
36
41
|
defaultCachePolicy?: CachePolicyPreset | ICachePolicy;
|
|
@@ -46,11 +51,20 @@ export interface CloudFrontDistributionProps {
|
|
|
46
51
|
* Required when the origin is a Lambda Function URL or ALB behind CloudFront,
|
|
47
52
|
* because AllViewerExceptHostHeader replaces Host with the origin domain. */
|
|
48
53
|
forwardHostHeader?: boolean;
|
|
54
|
+
/** Adds access gating to the distribution via a CloudFront Function.
|
|
55
|
+
* Set to false to explicitly disable (or omit). */
|
|
56
|
+
accessGate?: false | AccessGateConfig;
|
|
49
57
|
}
|
|
50
58
|
export declare class CloudFrontDistribution extends Construct {
|
|
51
59
|
readonly id: string;
|
|
52
60
|
private distribution;
|
|
53
61
|
constructor(scope: Construct, id: string, props: CloudFrontDistributionProps);
|
|
62
|
+
/**
|
|
63
|
+
* Build a composable CloudFront Function for VIEWER_REQUEST.
|
|
64
|
+
* Merges accessGate and forwardHostHeader into a single function
|
|
65
|
+
* (CloudFront allows only one function per event type).
|
|
66
|
+
*/
|
|
67
|
+
private buildViewerRequestFunction;
|
|
54
68
|
private createOrigin;
|
|
55
69
|
private resolveCachePolicy;
|
|
56
70
|
private resolveAllowedMethods;
|
|
@@ -3,29 +3,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CloudFrontDistribution = void 0;
|
|
4
4
|
const constructs_1 = require("constructs");
|
|
5
5
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
const capitaliseString_1 = require("../../../utils/capitaliseString");
|
|
6
7
|
const aws_cloudfront_1 = require("aws-cdk-lib/aws-cloudfront");
|
|
7
8
|
const aws_cloudfront_origins_1 = require("aws-cdk-lib/aws-cloudfront-origins");
|
|
8
9
|
class CloudFrontDistribution extends constructs_1.Construct {
|
|
9
10
|
constructor(scope, id, props) {
|
|
10
11
|
super(scope, id);
|
|
11
12
|
this.id = id;
|
|
13
|
+
// Sanitise id for CloudFormation output keys (must be alphanumeric)
|
|
14
|
+
const outputName = (0, capitaliseString_1.toPascalCase)(id);
|
|
12
15
|
const defaultOrigin = this.createOrigin(props.defaultOrigin);
|
|
13
16
|
const defaultCachePolicy = this.resolveCachePolicy(props.defaultCachePolicy);
|
|
14
|
-
//
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
code: aws_cloudfront_1.FunctionCode.fromInline("function handler(event) {" +
|
|
18
|
-
" var request = event.request;" +
|
|
19
|
-
" request.headers['x-forwarded-host'] = { value: request.headers.host.value };" +
|
|
20
|
-
" return request;" +
|
|
21
|
-
" }"),
|
|
22
|
-
runtime: aws_cloudfront_1.FunctionRuntime.JS_2_0
|
|
23
|
-
})
|
|
24
|
-
: undefined;
|
|
25
|
-
const functionAssociations = hostHeaderFunction
|
|
17
|
+
// Build composable viewer request function (accessGate + forwardHostHeader)
|
|
18
|
+
const viewerRequestFunction = this.buildViewerRequestFunction(id, props.forwardHostHeader, props.accessGate);
|
|
19
|
+
const functionAssociations = viewerRequestFunction
|
|
26
20
|
? [
|
|
27
21
|
{
|
|
28
|
-
function:
|
|
22
|
+
function: viewerRequestFunction,
|
|
29
23
|
eventType: aws_cloudfront_1.FunctionEventType.VIEWER_REQUEST
|
|
30
24
|
}
|
|
31
25
|
]
|
|
@@ -65,16 +59,56 @@ class CloudFrontDistribution extends constructs_1.Construct {
|
|
|
65
59
|
logBucket: props.logBucket,
|
|
66
60
|
priceClass: this.resolvePriceClass(props.priceClass)
|
|
67
61
|
});
|
|
68
|
-
new aws_cdk_lib_1.CfnOutput(this, `${
|
|
69
|
-
key: `${
|
|
62
|
+
new aws_cdk_lib_1.CfnOutput(this, `${outputName}DistributionDomainName`, {
|
|
63
|
+
key: `${outputName}DistributionDomainName`,
|
|
70
64
|
value: this.distribution.distributionDomainName,
|
|
71
65
|
description: `CloudFront distribution domain name for ${id}`
|
|
72
66
|
});
|
|
73
|
-
new aws_cdk_lib_1.CfnOutput(this, `${
|
|
74
|
-
key: `${
|
|
67
|
+
new aws_cdk_lib_1.CfnOutput(this, `${outputName}DistributionId`, {
|
|
68
|
+
key: `${outputName}DistributionId`,
|
|
75
69
|
value: this.distribution.distributionId,
|
|
76
70
|
description: `CloudFront distribution ID for ${id}`
|
|
77
71
|
});
|
|
72
|
+
// Output credentials hint when access gate is enabled
|
|
73
|
+
if (props.accessGate) {
|
|
74
|
+
new aws_cdk_lib_1.CfnOutput(this, `${outputName}AccessGateUsername`, {
|
|
75
|
+
key: `${outputName}AccessGateUsername`,
|
|
76
|
+
value: props.accessGate.username,
|
|
77
|
+
description: `Access gate username for ${id}`
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Build a composable CloudFront Function for VIEWER_REQUEST.
|
|
83
|
+
* Merges accessGate and forwardHostHeader into a single function
|
|
84
|
+
* (CloudFront allows only one function per event type).
|
|
85
|
+
*/
|
|
86
|
+
buildViewerRequestFunction(id, forwardHostHeader, accessGate) {
|
|
87
|
+
if (!accessGate && !forwardHostHeader) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
let functionBody = "function handler(event) { var request = event.request;";
|
|
91
|
+
if (accessGate) {
|
|
92
|
+
const credentials = Buffer.from(`${accessGate.username}:${accessGate.password}`).toString("base64");
|
|
93
|
+
functionBody +=
|
|
94
|
+
` var authHeader = request.headers.authorization;` +
|
|
95
|
+
` if (!authHeader || authHeader.value !== "Basic ${credentials}") {` +
|
|
96
|
+
` return {` +
|
|
97
|
+
` statusCode: 401,` +
|
|
98
|
+
` statusDescription: "Unauthorized",` +
|
|
99
|
+
` headers: { "www-authenticate": { value: 'Basic realm="Restricted"' } },` +
|
|
100
|
+
` body: { encoding: "text", data: "Unauthorized" }` +
|
|
101
|
+
` }; }`;
|
|
102
|
+
}
|
|
103
|
+
if (forwardHostHeader) {
|
|
104
|
+
functionBody +=
|
|
105
|
+
" request.headers['x-forwarded-host'] = { value: request.headers.host.value };";
|
|
106
|
+
}
|
|
107
|
+
functionBody += " return request; }";
|
|
108
|
+
return new aws_cloudfront_1.Function(this, `${id}ViewerRequestFn`, {
|
|
109
|
+
code: aws_cloudfront_1.FunctionCode.fromInline(functionBody),
|
|
110
|
+
runtime: aws_cloudfront_1.FunctionRuntime.JS_2_0
|
|
111
|
+
});
|
|
78
112
|
}
|
|
79
113
|
createOrigin(config) {
|
|
80
114
|
switch (config.type) {
|
|
@@ -173,4 +207,4 @@ class CloudFrontDistribution extends constructs_1.Construct {
|
|
|
173
207
|
}
|
|
174
208
|
}
|
|
175
209
|
exports.CloudFrontDistribution = CloudFrontDistribution;
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRGcm9udC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2Nkbi9jbG91ZEZyb250LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2Qyw2Q0FBd0M7QUFDeEMsK0RBZW9DO0FBQ3BDLCtFQUk0QztBQThENUMsTUFBYSxzQkFBdUIsU0FBUSxzQkFBUztJQUluRCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFrQztRQUVsQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRWIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQ2hELEtBQUssQ0FBQyxrQkFBa0IsQ0FDekIsQ0FBQztRQUVGLHlFQUF5RTtRQUN6RSxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxpQkFBaUI7WUFDaEQsQ0FBQyxDQUFDLElBQUkseUJBQWtCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUU7Z0JBQy9DLElBQUksRUFBRSw2QkFBWSxDQUFDLFVBQVUsQ0FDM0IsMkJBQTJCO29CQUN6QiwrQkFBK0I7b0JBQy9CLCtFQUErRTtvQkFDL0Usa0JBQWtCO29CQUNsQixJQUFJLENBQ1A7Z0JBQ0QsT0FBTyxFQUFFLGdDQUFlLENBQUMsTUFBTTthQUNoQyxDQUFDO1lBQ0osQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVkLE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCO1lBQzdDLENBQUMsQ0FBQztnQkFDRTtvQkFDRSxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUUsa0NBQWlCLENBQUMsY0FBYztpQkFDNUM7YUFDRjtZQUNILENBQUMsQ0FB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QUMsWUFBWSxDQUFDLGNBQWMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFsTkQsd0RBa05DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgRGlzdHJpYnV0aW9uLFxuICBQcmljZUNsYXNzLFxuICB0eXBlIElPcmlnaW4sXG4gIFZpZXdlclByb3RvY29sUG9saWN5LFxuICBDYWNoZVBvbGljeSxcbiAgdHlwZSBJQ2FjaGVQb2xpY3ksXG4gIE9yaWdpblJlcXVlc3RQb2xpY3ksXG4gIEFsbG93ZWRNZXRob2RzLFxuICBPcmlnaW5Qcm90b2NvbFBvbGljeSxcbiAgdHlwZSBCZWhhdmlvck9wdGlvbnMsXG4gIEZ1bmN0aW9uIGFzIENsb3VkRnJvbnRGdW5jdGlvbixcbiAgRnVuY3Rpb25Db2RlLFxuICBGdW5jdGlvblJ1bnRpbWUsXG4gIEZ1bmN0aW9uRXZlbnRUeXBlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udFwiO1xuaW1wb3J0IHtcbiAgUzNCdWNrZXRPcmlnaW4sXG4gIExvYWRCYWxhbmNlclYyT3JpZ2luLFxuICBIdHRwT3JpZ2luXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC1vcmlnaW5zXCI7XG5pbXBvcnQgeyB0eXBlIElCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyB0eXBlIElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlwiO1xuaW1wb3J0IHsgdHlwZSBJQ2VydGlmaWNhdGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuXG5leHBvcnQgdHlwZSBDYWNoZVBvbGljeVByZXNldCA9XG4gIHwgXCJDQUNISU5HX09QVElNSVpFRFwiXG4gIHwgXCJDQUNISU5HX0RJU0FCTEVEXCJcbiAgfCBcIkNBQ0hJTkdfT1BUSU1JWkVEX0ZPUl9VTkNPTVBSRVNTRURfT0JKRUNUU1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFMzT3JpZ2luQ29uZmlnIHtcbiAgdHlwZTogXCJzM1wiO1xuICBidWNrZXQ6IElCdWNrZXQ7XG4gIG9yaWdpblBhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxiT3JpZ2luQ29uZmlnIHtcbiAgdHlwZTogXCJhbGJcIjtcbiAgbG9hZEJhbGFuY2VyOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gIHByb3RvY29sUG9saWN5PzogXCJIVFRQX09OTFlcIiB8IFwiSFRUUFNfT05MWVwiIHwgXCJNQVRDSF9WSUVXRVJcIjtcbiAgaHR0cFBvcnQ/OiBudW1iZXI7XG4gIGh0dHBzUG9ydD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdHRwT3JpZ2luQ29uZmlnIHtcbiAgdHlwZTogXCJodHRwXCI7XG4gIGRvbWFpbk5hbWU6IHN0cmluZztcbiAgb3JpZ2luUGF0aD86IHN0cmluZztcbiAgcHJvdG9jb2xQb2xpY3k/OiBcIkhUVFBfT05MWVwiIHwgXCJIVFRQU19PTkxZXCIgfCBcIk1BVENIX1ZJRVdFUlwiO1xuICBodHRwUG9ydD86IG51bWJlcjtcbiAgaHR0cHNQb3J0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBDZG5PcmlnaW5Db25maWcgPVxuICB8IFMzT3JpZ2luQ29uZmlnXG4gIHwgQWxiT3JpZ2luQ29uZmlnXG4gIHwgSHR0cE9yaWdpbkNvbmZpZztcblxuZXhwb3J0IGludGVyZmFjZSBDZG5CZWhhdmlvdXIge1xuICBwYXRoUGF0dGVybjogc3RyaW5nO1xuICBvcmlnaW46IENkbk9yaWdpbkNvbmZpZztcbiAgY2FjaGVQb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeTtcbiAgYWxsb3dlZE1ldGhvZHM/OiBcIkdFVF9IRUFEXCIgfCBcIkdFVF9IRUFEX09QVElPTlNcIiB8IFwiQUxMXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzIHtcbiAgZGVmYXVsdE9yaWdpbjogQ2RuT3JpZ2luQ29uZmlnO1xuICBkZWZhdWx0Q2FjaGVQb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeTtcbiAgZGVmYXVsdEFsbG93ZWRNZXRob2RzPzogXCJHRVRfSEVBRFwiIHwgXCJHRVRfSEVBRF9PUFRJT05TXCIgfCBcIkFMTFwiO1xuICBiZWhhdmlvdXJzPzogQ2RuQmVoYXZpb3VyW107XG4gIGRvbWFpbk5hbWVzPzogc3RyaW5nW107XG4gIGNlcnRpZmljYXRlPzogSUNlcnRpZmljYXRlO1xuICBjb21tZW50Pzogc3RyaW5nO1xuICBlbmFibGVMb2dnaW5nPzogYm9vbGVhbjtcbiAgbG9nQnVja2V0PzogSUJ1Y2tldDtcbiAgcHJpY2VDbGFzcz86IFwiUHJpY2VDbGFzc18xMDBcIiB8IFwiUHJpY2VDbGFzc18yMDBcIiB8IFwiUHJpY2VDbGFzc19BbGxcIjtcbiAgLyoqIEFkZHMgYSBDbG91ZEZyb250IEZ1bmN0aW9uIHRvIGNvcHkgdGhlIHZpZXdlciBIb3N0IGhlYWRlciBpbnRvIFgtRm9yd2FyZGVkLUhvc3QuXG4gICAqIFJlcXVpcmVkIHdoZW4gdGhlIG9yaWdpbiBpcyBhIExhbWJkYSBGdW5jdGlvbiBVUkwgb3IgQUxCIGJlaGluZCBDbG91ZEZyb250LFxuICAgKiBiZWNhdXNlIEFsbFZpZXdlckV4Y2VwdEhvc3RIZWFkZXIgcmVwbGFjZXMgSG9zdCB3aXRoIHRoZSBvcmlnaW4gZG9tYWluLiAqL1xuICBmb3J3YXJkSG9zdEhlYWRlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBDbG91ZEZyb250RGlzdHJpYnV0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgZGlzdHJpYnV0aW9uOiBEaXN0cmlidXRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBDbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmlkID0gaWQ7XG5cbiAgICBjb25zdCBkZWZhdWx0T3JpZ2luID0gdGhpcy5jcmVhdGVPcmlnaW4ocHJvcHMuZGVmYXVsdE9yaWdpbik7XG4gICAgY29uc3QgZGVmYXVsdENhY2hlUG9saWN5ID0gdGhpcy5yZXNvbHZlQ2FjaGVQb2xpY3koXG4gICAgICBwcm9wcy5kZWZhdWx0Q2FjaGVQb2xpY3lcbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIENsb3VkRnJvbnQgRnVuY3Rpb24gdG8gcHJlc2VydmUgdmlld2VyIEhvc3QgYXMgWC1Gb3J3YXJkZWQtSG9zdFxuICAgIGNvbnN0IGhvc3RIZWFkZXJGdW5jdGlvbiA9IHByb3BzLmZvcndhcmRIb3N0SGVhZGVyXG4gICAgICA/IG5ldyBDbG91ZEZyb250RnVuY3Rpb24odGhpcywgYCR7aWR9Rm9yd2FyZEhvc3RgLCB7XG4gICAgICAgICAgY29kZTogRnVuY3Rpb25Db2RlLmZyb21JbmxpbmUoXG4gICAgICAgICAgICBcImZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQpIHtcIiArXG4gICAgICAgICAgICAgIFwiIHZhciByZXF1ZXN0ID0gZXZlbnQucmVxdWVzdDtcIiArXG4gICAgICAgICAgICAgIFwiIHJlcXVlc3QuaGVhZGVyc1sneC1mb3J3YXJkZWQtaG9zdCddID0geyB2YWx1ZTogcmVxdWVzdC5oZWFkZXJzLmhvc3QudmFsdWUgfTtcIiArXG4gICAgICAgICAgICAgIFwiIHJldHVybiByZXF1ZXN0O1wiICtcbiAgICAgICAgICAgICAgXCIgfVwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICBydW50aW1lOiBGdW5jdGlvblJ1bnRpbWUuSlNfMl8wXG4gICAgICAgIH0pXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGZ1bmN0aW9uQXNzb2NpYXRpb25zID0gaG9zdEhlYWRlckZ1bmN0aW9uXG4gICAgICA/IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogaG9zdEhlYWRlckZ1bmN0aW9uLFxuICAgICAgICAgICAgZXZlbnRUeXBlOiBGdW5jdGlvbkV2ZW50VHlwZS5WSUVXRVJfUkVRVUVTVFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBhZGRpdGlvbmFsQmVoYXZpb3JzOiBSZWNvcmQ8c3RyaW5nLCBCZWhhdmlvck9wdGlvbnM+ID0ge307XG4gICAgaWYgKHByb3BzLmJlaGF2aW91cnMpIHtcbiAgICAgIGZvciAoY29uc3QgYmVoYXZpb3VyIG9mIHByb3BzLmJlaGF2aW91cnMpIHtcbiAgICAgICAgYWRkaXRpb25hbEJlaGF2aW9yc1tiZWhhdmlvdXIucGF0aFBhdHRlcm5dID0ge1xuICAgICAgICAgIG9yaWdpbjogdGhpcy5jcmVhdGVPcmlnaW4oYmVoYXZpb3VyLm9yaWdpbiksXG4gICAgICAgICAgY2FjaGVQb2xpY3k6IHRoaXMucmVzb2x2ZUNhY2hlUG9saWN5KGJlaGF2aW91ci5jYWNoZVBvbGljeSksXG4gICAgICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IFZpZXdlclByb3RvY29sUG9saWN5LlJFRElSRUNUX1RPX0hUVFBTLFxuICAgICAgICAgIGFsbG93ZWRNZXRob2RzOiB0aGlzLnJlc29sdmVBbGxvd2VkTWV0aG9kcyhiZWhhdmlvdXIuYWxsb3dlZE1ldGhvZHMpLFxuICAgICAgICAgIC8vIEZvcndhcmQgdmlld2VyIGhlYWRlcnMgKGNvb2tpZXMsIGF1dGgpIHRvIG5vbi1TMyBvcmlnaW5zXG4gICAgICAgICAgLi4uKGJlaGF2aW91ci5vcmlnaW4udHlwZSAhPT0gXCJzM1wiICYmIHtcbiAgICAgICAgICAgIG9yaWdpblJlcXVlc3RQb2xpY3k6XG4gICAgICAgICAgICAgIE9yaWdpblJlcXVlc3RQb2xpY3kuQUxMX1ZJRVdFUl9FWENFUFRfSE9TVF9IRUFERVJcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZnVuY3Rpb25Bc3NvY2lhdGlvbnMgIT09IHVuZGVmaW5lZCAmJiB7IGZ1bmN0aW9uQXNzb2NpYXRpb25zIH0pXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kaXN0cmlidXRpb24gPSBuZXcgRGlzdHJpYnV0aW9uKHRoaXMsIGAke2lkfURpc3RyaWJ1dGlvbmAsIHtcbiAgICAgIGRlZmF1bHRCZWhhdmlvcjoge1xuICAgICAgICBvcmlnaW46IGRlZmF1bHRPcmlnaW4sXG4gICAgICAgIGNhY2hlUG9saWN5OiBkZWZhdWx0Q2FjaGVQb2xpY3ksXG4gICAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBWaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAgICAgb3JpZ2luUmVxdWVzdFBvbGljeTogT3JpZ2luUmVxdWVzdFBvbGljeS5BTExfVklFV0VSX0VYQ0VQVF9IT1NUX0hFQURFUixcbiAgICAgICAgYWxsb3dlZE1ldGhvZHM6IHRoaXMucmVzb2x2ZUFsbG93ZWRNZXRob2RzKHByb3BzLmRlZmF1bHRBbGxvd2VkTWV0aG9kcyksXG4gICAgICAgIC4uLihmdW5jdGlvbkFzc29jaWF0aW9ucyAhPT0gdW5kZWZpbmVkICYmIHsgZnVuY3Rpb25Bc3NvY2lhdGlvbnMgfSlcbiAgICAgIH0sXG4gICAgICBhZGRpdGlvbmFsQmVoYXZpb3JzOlxuICAgICAgICBPYmplY3Qua2V5cyhhZGRpdGlvbmFsQmVoYXZpb3JzKS5sZW5ndGggPiAwXG4gICAgICAgICAgPyBhZGRpdGlvbmFsQmVoYXZpb3JzXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBkb21haW5OYW1lczogcHJvcHMuZG9tYWluTmFtZXMsXG4gICAgICBjZXJ0aWZpY2F0ZTogcHJvcHMuY2VydGlmaWNhdGUsXG4gICAgICBjb21tZW50OiBwcm9wcy5jb21tZW50LFxuICAgICAgZW5hYmxlTG9nZ2luZzogcHJvcHMuZW5hYmxlTG9nZ2luZyxcbiAgICAgIGxvZ0J1Y2tldDogcHJvcHMubG9nQnVja2V0LFxuICAgICAgcHJpY2VDbGFzczogdGhpcy5yZXNvbHZlUHJpY2VDbGFzcyhwcm9wcy5wcmljZUNsYXNzKVxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1EaXN0cmlidXRpb25Eb21haW5OYW1lYCwge1xuICAgICAga2V5OiBgJHtpZH1EaXN0cmlidXRpb25Eb21haW5OYW1lYCxcbiAgICAgIHZhbHVlOiB0aGlzLmRpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25Eb21haW5OYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBkb21haW4gbmFtZSBmb3IgJHtpZH1gXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfURpc3RyaWJ1dGlvbklkYCwge1xuICAgICAga2V5OiBgJHtpZH1EaXN0cmlidXRpb25JZGAsXG4gICAgICB2YWx1ZTogdGhpcy5kaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uSWQsXG4gICAgICBkZXNjcmlwdGlvbjogYENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIElEIGZvciAke2lkfWBcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3JpZ2luKGNvbmZpZzogQ2RuT3JpZ2luQ29uZmlnKTogSU9yaWdpbiB7XG4gICAgc3dpdGNoIChjb25maWcudHlwZSkge1xuICAgICAgY2FzZSBcInMzXCI6XG4gICAgICAgIC8vIFVzaW5nIE9BSSBpbnN0ZWFkIG9mIE9BQyB0byBhdm9pZCBjcm9zcy1zdGFjayBjaXJjdWxhciBkZXBlbmRlbmNpZXNcbiAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzMxNDYyXG4gICAgICAgIC8vIE9BQyBjcmVhdGVzIGJ1Y2tldCDihpIgQ0ROIGRlcGVuZGVuY3kgKGJ1Y2tldCBwb2xpY3kgcmVmZXJlbmNlcyBkaXN0cmlidXRpb24pXG4gICAgICAgIC8vIE9BSSB3b3JrcyBhY3Jvc3Mgc3RhY2tzIHdpdGhvdXQgdHJpZ2dlcmluZyBjeWNsaWMgZGVwZW5kZW5jeSBlcnJvcnNcbiAgICAgICAgcmV0dXJuIFMzQnVja2V0T3JpZ2luLndpdGhPcmlnaW5BY2Nlc3NJZGVudGl0eShjb25maWcuYnVja2V0LCB7XG4gICAgICAgICAgb3JpZ2luUGF0aDogY29uZmlnLm9yaWdpblBhdGhcbiAgICAgICAgfSk7XG5cbiAgICAgIGNhc2UgXCJhbGJcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBMb2FkQmFsYW5jZXJWMk9yaWdpbihjb25maWcubG9hZEJhbGFuY2VyLCB7XG4gICAgICAgICAgaHR0cFBvcnQ6IGNvbmZpZy5odHRwUG9ydCxcbiAgICAgICAgICBodHRwc1BvcnQ6IGNvbmZpZy5odHRwc1BvcnQsXG4gICAgICAgICAgcHJvdG9jb2xQb2xpY3k6IHRoaXMucmVzb2x2ZU9yaWdpblByb3RvY29sUG9saWN5KFxuICAgICAgICAgICAgY29uZmlnLnByb3RvY29sUG9saWN5XG4gICAgICAgICAgKVxuICAgICAgICB9KTtcblxuICAgICAgY2FzZSBcImh0dHBcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBIdHRwT3JpZ2luKGNvbmZpZy5kb21haW5OYW1lLCB7XG4gICAgICAgICAgb3JpZ2luUGF0aDogY29uZmlnLm9yaWdpblBhdGgsXG4gICAgICAgICAgaHR0cFBvcnQ6IGNvbmZpZy5odHRwUG9ydCxcbiAgICAgICAgICBodHRwc1BvcnQ6IGNvbmZpZy5odHRwc1BvcnQsXG4gICAgICAgICAgcHJvdG9jb2xQb2xpY3k6IHRoaXMucmVzb2x2ZU9yaWdpblByb3RvY29sUG9saWN5KFxuICAgICAgICAgICAgY29uZmlnLnByb3RvY29sUG9saWN5XG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVDYWNoZVBvbGljeShcbiAgICBwb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeVxuICApOiBJQ2FjaGVQb2xpY3kge1xuICAgIGlmICghcG9saWN5KSB7XG4gICAgICByZXR1cm4gQ2FjaGVQb2xpY3kuQ0FDSElOR19PUFRJTUlaRUQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBwb2xpY3kgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHN3aXRjaCAocG9saWN5KSB7XG4gICAgICAgIGNhc2UgXCJDQUNISU5HX09QVElNSVpFRFwiOlxuICAgICAgICAgIHJldHVybiBDYWNoZVBvbGljeS5DQUNISU5HX09QVElNSVpFRDtcbiAgICAgICAgY2FzZSBcIkNBQ0hJTkdfRElTQUJMRURcIjpcbiAgICAgICAgICByZXR1cm4gQ2FjaGVQb2xpY3kuQ0FDSElOR19ESVNBQkxFRDtcbiAgICAgICAgY2FzZSBcIkNBQ0hJTkdfT1BUSU1JWkVEX0ZPUl9VTkNPTVBSRVNTRURfT0JKRUNUU1wiOlxuICAgICAgICAgIHJldHVybiBDYWNoZVBvbGljeS5DQUNISU5HX09QVElNSVpFRF9GT1JfVU5DT01QUkVTU0VEX09CSkVDVFM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvbGljeTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUFsbG93ZWRNZXRob2RzKFxuICAgIG1ldGhvZHM/OiBcIkdFVF9IRUFEXCIgfCBcIkdFVF9IRUFEX09QVElPTlNcIiB8IFwiQUxMXCJcbiAgKTogQWxsb3dlZE1ldGhvZHMge1xuICAgIHN3aXRjaCAobWV0aG9kcykge1xuICAgICAgY2FzZSBcIkdFVF9IRUFEXCI6XG4gICAgICAgIHJldHVybiBBbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRDtcbiAgICAgIGNhc2UgXCJHRVRfSEVBRF9PUFRJT05TXCI6XG4gICAgICAgIHJldHVybiBBbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRF9PUFRJT05TO1xuICAgICAgY2FzZSBcIkFMTFwiOlxuICAgICAgICByZXR1cm4gQWxsb3dlZE1ldGhvZHMuQUxMT1dfQUxMO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIEFsbG93ZWRNZXRob2RzLkFMTE9XX0dFVF9IRUFEO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU9yaWdpblByb3RvY29sUG9saWN5KFxuICAgIHBvbGljeT86IFwiSFRUUF9PTkxZXCIgfCBcIkhUVFBTX09OTFlcIiB8IFwiTUFUQ0hfVklFV0VSXCJcbiAgKSB7XG4gICAgc3dpdGNoIChwb2xpY3kpIHtcbiAgICAgIGNhc2UgXCJIVFRQX09OTFlcIjpcbiAgICAgICAgcmV0dXJuIE9yaWdpblByb3RvY29sUG9saWN5LkhUVFBfT05MWTtcbiAgICAgIGNhc2UgXCJIVFRQU19PTkxZXCI6XG4gICAgICAgIHJldHVybiBPcmlnaW5Qcm90b2NvbFBvbGljeS5IVFRQU19PTkxZO1xuICAgICAgY2FzZSBcIk1BVENIX1ZJRVdFUlwiOlxuICAgICAgICByZXR1cm4gT3JpZ2luUHJvdG9jb2xQb2xpY3kuTUFUQ0hfVklFV0VSO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIE9yaWdpblByb3RvY29sUG9saWN5LkhUVFBTX09OTFk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlUHJpY2VDbGFzcyhcbiAgICBwcmljZUNsYXNzPzogXCJQcmljZUNsYXNzXzEwMFwiIHwgXCJQcmljZUNsYXNzXzIwMFwiIHwgXCJQcmljZUNsYXNzX0FsbFwiXG4gICk6IFByaWNlQ2xhc3MgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAocHJpY2VDbGFzcykge1xuICAgICAgY2FzZSBcIlByaWNlQ2xhc3NfMTAwXCI6XG4gICAgICAgIHJldHVybiBQcmljZUNsYXNzLlBSSUNFX0NMQVNTXzEwMDtcbiAgICAgIGNhc2UgXCJQcmljZUNsYXNzXzIwMFwiOlxuICAgICAgICByZXR1cm4gUHJpY2VDbGFzcy5QUklDRV9DTEFTU18yMDA7XG4gICAgICBjYXNlIFwiUHJpY2VDbGFzc19BbGxcIjpcbiAgICAgICAgcmV0dXJuIFByaWNlQ2xhc3MuUFJJQ0VfQ0xBU1NfQUxMO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBkb21haW4gbmFtZS5cbiAgICovXG4gIHB1YmxpYyBnZXREaXN0cmlidXRpb25Eb21haW5OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbkRvbWFpbk5hbWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBJRC5cbiAgICovXG4gIHB1YmxpYyBnZXREaXN0cmlidXRpb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25JZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHVuZGVybHlpbmcgQ0RLIERpc3RyaWJ1dGlvbiBjb25zdHJ1Y3QuXG4gICAqL1xuICBwdWJsaWMgZ2V0RGlzdHJpYnV0aW9uKCk6IERpc3RyaWJ1dGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzdHJpYnV0aW9uO1xuICB9XG59XG4iXX0=
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRGcm9udC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2Nkbi9jbG91ZEZyb250LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2Qyw2Q0FBd0M7QUFDeEMsc0VBQStEO0FBQy9ELCtEQWVvQztBQUNwQywrRUFJNEM7QUF1RTVDLE1BQWEsc0JBQXVCLFNBQVEsc0JBQVM7SUFJbkQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBa0M7UUFFbEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUViLG9FQUFvRTtRQUNwRSxNQUFNLFVBQVUsR0FBRyxJQUFBLCtCQUFZLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQ2hELEtBQUssQ0FBQyxrQkFBa0IsQ0FDekIsQ0FBQztRQUVGLDRFQUE0RTtRQUM1RSxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FDM0QsRUFBRSxFQUNGLEtBQUssQ0FBQyxpQkFBaUIsRUFDdkIsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztRQUVGLE1BQU0sb0JBQW9CLEdBQUcscUJBQXFCO1lBQ2hELENBQUMsQ0FBQztnQkFDRTtvQkFDRSxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixTQUFTLEVBQUUsa0NBQWlCLENBQUMsY0FBYztpQkFDNUM7YUFDRjtZQUNILENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxNQUFNLG1CQUFtQixHQUFvQyxFQUFFLENBQUM7UUFDaEUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsS0FBSyxN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SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQXBRRCx3REFvUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyB0b1Bhc2NhbENhc2UgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY2FwaXRhbGlzZVN0cmluZ1wiO1xuaW1wb3J0IHtcbiAgRGlzdHJpYnV0aW9uLFxuICBQcmljZUNsYXNzLFxuICB0eXBlIElPcmlnaW4sXG4gIFZpZXdlclByb3RvY29sUG9saWN5LFxuICBDYWNoZVBvbGljeSxcbiAgdHlwZSBJQ2FjaGVQb2xpY3ksXG4gIE9yaWdpblJlcXVlc3RQb2xpY3ksXG4gIEFsbG93ZWRNZXRob2RzLFxuICBPcmlnaW5Qcm90b2NvbFBvbGljeSxcbiAgdHlwZSBCZWhhdmlvck9wdGlvbnMsXG4gIEZ1bmN0aW9uIGFzIENsb3VkRnJvbnRGdW5jdGlvbixcbiAgRnVuY3Rpb25Db2RlLFxuICBGdW5jdGlvblJ1bnRpbWUsXG4gIEZ1bmN0aW9uRXZlbnRUeXBlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udFwiO1xuaW1wb3J0IHtcbiAgUzNCdWNrZXRPcmlnaW4sXG4gIExvYWRCYWxhbmNlclYyT3JpZ2luLFxuICBIdHRwT3JpZ2luXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC1vcmlnaW5zXCI7XG5pbXBvcnQgeyB0eXBlIElCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyB0eXBlIElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlwiO1xuaW1wb3J0IHsgdHlwZSBJQ2VydGlmaWNhdGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuXG5leHBvcnQgdHlwZSBDYWNoZVBvbGljeVByZXNldCA9XG4gIHwgXCJDQUNISU5HX09QVElNSVpFRFwiXG4gIHwgXCJDQUNISU5HX0RJU0FCTEVEXCJcbiAgfCBcIkNBQ0hJTkdfT1BUSU1JWkVEX0ZPUl9VTkNPTVBSRVNTRURfT0JKRUNUU1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFMzT3JpZ2luQ29uZmlnIHtcbiAgdHlwZTogXCJzM1wiO1xuICBidWNrZXQ6IElCdWNrZXQ7XG4gIG9yaWdpblBhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxiT3JpZ2luQ29uZmlnIHtcbiAgdHlwZTogXCJhbGJcIjtcbiAgbG9hZEJhbGFuY2VyOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gIHByb3RvY29sUG9saWN5PzogXCJIVFRQX09OTFlcIiB8IFwiSFRUUFNfT05MWVwiIHwgXCJNQVRDSF9WSUVXRVJcIjtcbiAgaHR0cFBvcnQ/OiBudW1iZXI7XG4gIGh0dHBzUG9ydD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdHRwT3JpZ2luQ29uZmlnIHtcbiAgdHlwZTogXCJodHRwXCI7XG4gIGRvbWFpbk5hbWU6IHN0cmluZztcbiAgb3JpZ2luUGF0aD86IHN0cmluZztcbiAgcHJvdG9jb2xQb2xpY3k/OiBcIkhUVFBfT05MWVwiIHwgXCJIVFRQU19PTkxZXCIgfCBcIk1BVENIX1ZJRVdFUlwiO1xuICBodHRwUG9ydD86IG51bWJlcjtcbiAgaHR0cHNQb3J0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBDZG5PcmlnaW5Db25maWcgPVxuICB8IFMzT3JpZ2luQ29uZmlnXG4gIHwgQWxiT3JpZ2luQ29uZmlnXG4gIHwgSHR0cE9yaWdpbkNvbmZpZztcblxuZXhwb3J0IGludGVyZmFjZSBDZG5CZWhhdmlvdXIge1xuICBwYXRoUGF0dGVybjogc3RyaW5nO1xuICBvcmlnaW46IENkbk9yaWdpbkNvbmZpZztcbiAgY2FjaGVQb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeTtcbiAgYWxsb3dlZE1ldGhvZHM/OiBcIkdFVF9IRUFEXCIgfCBcIkdFVF9IRUFEX09QVElPTlNcIiB8IFwiQUxMXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZXNzR2F0ZUNvbmZpZyB7XG4gIHR5cGU6IFwiYmFzaWMtYXV0aFwiO1xuICB1c2VybmFtZTogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcyB7XG4gIGRlZmF1bHRPcmlnaW46IENkbk9yaWdpbkNvbmZpZztcbiAgZGVmYXVsdENhY2hlUG9saWN5PzogQ2FjaGVQb2xpY3lQcmVzZXQgfCBJQ2FjaGVQb2xpY3k7XG4gIGRlZmF1bHRBbGxvd2VkTWV0aG9kcz86IFwiR0VUX0hFQURcIiB8IFwiR0VUX0hFQURfT1BUSU9OU1wiIHwgXCJBTExcIjtcbiAgYmVoYXZpb3Vycz86IENkbkJlaGF2aW91cltdO1xuICBkb21haW5OYW1lcz86IHN0cmluZ1tdO1xuICBjZXJ0aWZpY2F0ZT86IElDZXJ0aWZpY2F0ZTtcbiAgY29tbWVudD86IHN0cmluZztcbiAgZW5hYmxlTG9nZ2luZz86IGJvb2xlYW47XG4gIGxvZ0J1Y2tldD86IElCdWNrZXQ7XG4gIHByaWNlQ2xhc3M/OiBcIlByaWNlQ2xhc3NfMTAwXCIgfCBcIlByaWNlQ2xhc3NfMjAwXCIgfCBcIlByaWNlQ2xhc3NfQWxsXCI7XG4gIC8qKiBBZGRzIGEgQ2xvdWRGcm9udCBGdW5jdGlvbiB0byBjb3B5IHRoZSB2aWV3ZXIgSG9zdCBoZWFkZXIgaW50byBYLUZvcndhcmRlZC1Ib3N0LlxuICAgKiBSZXF1aXJlZCB3aGVuIHRoZSBvcmlnaW4gaXMgYSBMYW1iZGEgRnVuY3Rpb24gVVJMIG9yIEFMQiBiZWhpbmQgQ2xvdWRGcm9udCxcbiAgICogYmVjYXVzZSBBbGxWaWV3ZXJFeGNlcHRIb3N0SGVhZGVyIHJlcGxhY2VzIEhvc3Qgd2l0aCB0aGUgb3JpZ2luIGRvbWFpbi4gKi9cbiAgZm9yd2FyZEhvc3RIZWFkZXI/OiBib29sZWFuO1xuICAvKiogQWRkcyBhY2Nlc3MgZ2F0aW5nIHRvIHRoZSBkaXN0cmlidXRpb24gdmlhIGEgQ2xvdWRGcm9udCBGdW5jdGlvbi5cbiAgICogU2V0IHRvIGZhbHNlIHRvIGV4cGxpY2l0bHkgZGlzYWJsZSAob3Igb21pdCkuICovXG4gIGFjY2Vzc0dhdGU/OiBmYWxzZSB8IEFjY2Vzc0dhdGVDb25maWc7XG59XG5cbmV4cG9ydCBjbGFzcyBDbG91ZEZyb250RGlzdHJpYnV0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgZGlzdHJpYnV0aW9uOiBEaXN0cmlidXRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBDbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmlkID0gaWQ7XG5cbiAgICAvLyBTYW5pdGlzZSBpZCBmb3IgQ2xvdWRGb3JtYXRpb24gb3V0cHV0IGtleXMgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgIGNvbnN0IG91dHB1dE5hbWUgPSB0b1Bhc2NhbENhc2UoaWQpO1xuXG4gICAgY29uc3QgZGVmYXVsdE9yaWdpbiA9IHRoaXMuY3JlYXRlT3JpZ2luKHByb3BzLmRlZmF1bHRPcmlnaW4pO1xuICAgIGNvbnN0IGRlZmF1bHRDYWNoZVBvbGljeSA9IHRoaXMucmVzb2x2ZUNhY2hlUG9saWN5KFxuICAgICAgcHJvcHMuZGVmYXVsdENhY2hlUG9saWN5XG4gICAgKTtcblxuICAgIC8vIEJ1aWxkIGNvbXBvc2FibGUgdmlld2VyIHJlcXVlc3QgZnVuY3Rpb24gKGFjY2Vzc0dhdGUgKyBmb3J3YXJkSG9zdEhlYWRlcilcbiAgICBjb25zdCB2aWV3ZXJSZXF1ZXN0RnVuY3Rpb24gPSB0aGlzLmJ1aWxkVmlld2VyUmVxdWVzdEZ1bmN0aW9uKFxuICAgICAgaWQsXG4gICAgICBwcm9wcy5mb3J3YXJkSG9zdEhlYWRlcixcbiAgICAgIHByb3BzLmFjY2Vzc0dhdGVcbiAgICApO1xuXG4gICAgY29uc3QgZnVuY3Rpb25Bc3NvY2lhdGlvbnMgPSB2aWV3ZXJSZXF1ZXN0RnVuY3Rpb25cbiAgICAgID8gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiB2aWV3ZXJSZXF1ZXN0RnVuY3Rpb24sXG4gICAgICAgICAgICBldmVudFR5cGU6IEZ1bmN0aW9uRXZlbnRUeXBlLlZJRVdFUl9SRVFVRVNUXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGFkZGl0aW9uYWxCZWhhdmlvcnM6IFJlY29yZDxzdHJpbmcsIEJlaGF2aW9yT3B0aW9ucz4gPSB7fTtcbiAgICBpZiAocHJvcHMuYmVoYXZpb3Vycykge1xuICAgICAgZm9yIChjb25zdCBiZWhhdmlvdXIgb2YgcHJvcHMuYmVoYXZpb3Vycykge1xuICAgICAgICBhZGRpdGlvbmFsQmVoYXZpb3JzW2JlaGF2aW91ci5wYXRoUGF0dGVybl0gPSB7XG4gICAgICAgICAgb3JpZ2luOiB0aGlzLmNyZWF0ZU9yaWdpbihiZWhhdmlvdXIub3JpZ2luKSxcbiAgICAgICAgICBjYWNoZVBvbGljeTogdGhpcy5yZXNvbHZlQ2FjaGVQb2xpY3koYmVoYXZpb3VyLmNhY2hlUG9saWN5KSxcbiAgICAgICAgICB2aWV3ZXJQcm90b2NvbFBvbGljeTogVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gICAgICAgICAgYWxsb3dlZE1ldGhvZHM6IHRoaXMucmVzb2x2ZUFsbG93ZWRNZXRob2RzKGJlaGF2aW91ci5hbGxvd2VkTWV0aG9kcyksXG4gICAgICAgICAgLy8gRm9yd2FyZCB2aWV3ZXIgaGVhZGVycyAoY29va2llcywgYXV0aCkgdG8gbm9uLVMzIG9yaWdpbnNcbiAgICAgICAgICAuLi4oYmVoYXZpb3VyLm9yaWdpbi50eXBlICE9PSBcInMzXCIgJiYge1xuICAgICAgICAgICAgb3JpZ2luUmVxdWVzdFBvbGljeTpcbiAgICAgICAgICAgICAgT3JpZ2luUmVxdWVzdFBvbGljeS5BTExfVklFV0VSX0VYQ0VQVF9IT1NUX0hFQURFUlxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihmdW5jdGlvbkFzc29jaWF0aW9ucyAhPT0gdW5kZWZpbmVkICYmIHsgZnVuY3Rpb25Bc3NvY2lhdGlvbnMgfSlcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmRpc3RyaWJ1dGlvbiA9IG5ldyBEaXN0cmlidXRpb24odGhpcywgYCR7aWR9RGlzdHJpYnV0aW9uYCwge1xuICAgICAgZGVmYXVsdEJlaGF2aW9yOiB7XG4gICAgICAgIG9yaWdpbjogZGVmYXVsdE9yaWdpbixcbiAgICAgICAgY2FjaGVQb2xpY3k6IGRlZmF1bHRDYWNoZVBvbGljeSxcbiAgICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IFZpZXdlclByb3RvY29sUG9saWN5LlJFRElSRUNUX1RPX0hUVFBTLFxuICAgICAgICBvcmlnaW5SZXF1ZXN0UG9saWN5OiBPcmlnaW5SZXF1ZXN0UG9saWN5LkFMTF9WSUVXRVJfRVhDRVBUX0hPU1RfSEVBREVSLFxuICAgICAgICBhbGxvd2VkTWV0aG9kczogdGhpcy5yZXNvbHZlQWxsb3dlZE1ldGhvZHMocHJvcHMuZGVmYXVsdEFsbG93ZWRNZXRob2RzKSxcbiAgICAgICAgLi4uKGZ1bmN0aW9uQXNzb2NpYXRpb25zICE9PSB1bmRlZmluZWQgJiYgeyBmdW5jdGlvbkFzc29jaWF0aW9ucyB9KVxuICAgICAgfSxcbiAgICAgIGFkZGl0aW9uYWxCZWhhdmlvcnM6XG4gICAgICAgIE9iamVjdC5rZXlzKGFkZGl0aW9uYWxCZWhhdmlvcnMpLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGFkZGl0aW9uYWxCZWhhdmlvcnNcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGRvbWFpbk5hbWVzOiBwcm9wcy5kb21haW5OYW1lcyxcbiAgICAgIGNlcnRpZmljYXRlOiBwcm9wcy5jZXJ0aWZpY2F0ZSxcbiAgICAgIGNvbW1lbnQ6IHByb3BzLmNvbW1lbnQsXG4gICAgICBlbmFibGVMb2dnaW5nOiBwcm9wcy5lbmFibGVMb2dnaW5nLFxuICAgICAgbG9nQnVja2V0OiBwcm9wcy5sb2dCdWNrZXQsXG4gICAgICBwcmljZUNsYXNzOiB0aGlzLnJlc29sdmVQcmljZUNsYXNzKHByb3BzLnByaWNlQ2xhc3MpXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke291dHB1dE5hbWV9RGlzdHJpYnV0aW9uRG9tYWluTmFtZWAsIHtcbiAgICAgIGtleTogYCR7b3V0cHV0TmFtZX1EaXN0cmlidXRpb25Eb21haW5OYW1lYCxcbiAgICAgIHZhbHVlOiB0aGlzLmRpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25Eb21haW5OYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBkb21haW4gbmFtZSBmb3IgJHtpZH1gXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke291dHB1dE5hbWV9RGlzdHJpYnV0aW9uSWRgLCB7XG4gICAgICBrZXk6IGAke291dHB1dE5hbWV9RGlzdHJpYnV0aW9uSWRgLFxuICAgICAgdmFsdWU6IHRoaXMuZGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbklkLFxuICAgICAgZGVzY3JpcHRpb246IGBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBJRCBmb3IgJHtpZH1gXG4gICAgfSk7XG5cbiAgICAvLyBPdXRwdXQgY3JlZGVudGlhbHMgaGludCB3aGVuIGFjY2VzcyBnYXRlIGlzIGVuYWJsZWRcbiAgICBpZiAocHJvcHMuYWNjZXNzR2F0ZSkge1xuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtvdXRwdXROYW1lfUFjY2Vzc0dhdGVVc2VybmFtZWAsIHtcbiAgICAgICAga2V5OiBgJHtvdXRwdXROYW1lfUFjY2Vzc0dhdGVVc2VybmFtZWAsXG4gICAgICAgIHZhbHVlOiBwcm9wcy5hY2Nlc3NHYXRlLnVzZXJuYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogYEFjY2VzcyBnYXRlIHVzZXJuYW1lIGZvciAke2lkfWBcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGNvbXBvc2FibGUgQ2xvdWRGcm9udCBGdW5jdGlvbiBmb3IgVklFV0VSX1JFUVVFU1QuXG4gICAqIE1lcmdlcyBhY2Nlc3NHYXRlIGFuZCBmb3J3YXJkSG9zdEhlYWRlciBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uXG4gICAqIChDbG91ZEZyb250IGFsbG93cyBvbmx5IG9uZSBmdW5jdGlvbiBwZXIgZXZlbnQgdHlwZSkuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVmlld2VyUmVxdWVzdEZ1bmN0aW9uKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZm9yd2FyZEhvc3RIZWFkZXI/OiBib29sZWFuLFxuICAgIGFjY2Vzc0dhdGU/OiBmYWxzZSB8IEFjY2Vzc0dhdGVDb25maWdcbiAgKTogQ2xvdWRGcm9udEZ1bmN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWFjY2Vzc0dhdGUgJiYgIWZvcndhcmRIb3N0SGVhZGVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCBmdW5jdGlvbkJvZHkgPSBcImZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQpIHsgdmFyIHJlcXVlc3QgPSBldmVudC5yZXF1ZXN0O1wiO1xuXG4gICAgaWYgKGFjY2Vzc0dhdGUpIHtcbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gQnVmZmVyLmZyb20oXG4gICAgICAgIGAke2FjY2Vzc0dhdGUudXNlcm5hbWV9OiR7YWNjZXNzR2F0ZS5wYXNzd29yZH1gXG4gICAgICApLnRvU3RyaW5nKFwiYmFzZTY0XCIpO1xuXG4gICAgICBmdW5jdGlvbkJvZHkgKz1cbiAgICAgICAgYCB2YXIgYXV0aEhlYWRlciA9IHJlcXVlc3QuaGVhZGVycy5hdXRob3JpemF0aW9uO2AgK1xuICAgICAgICBgIGlmICghYXV0aEhlYWRlciB8fCBhdXRoSGVhZGVyLnZhbHVlICE9PSBcIkJhc2ljICR7Y3JlZGVudGlhbHN9XCIpIHtgICtcbiAgICAgICAgYCByZXR1cm4ge2AgK1xuICAgICAgICBgIHN0YXR1c0NvZGU6IDQwMSxgICtcbiAgICAgICAgYCBzdGF0dXNEZXNjcmlwdGlvbjogXCJVbmF1dGhvcml6ZWRcIixgICtcbiAgICAgICAgYCBoZWFkZXJzOiB7IFwid3d3LWF1dGhlbnRpY2F0ZVwiOiB7IHZhbHVlOiAnQmFzaWMgcmVhbG09XCJSZXN0cmljdGVkXCInIH0gfSxgICtcbiAgICAgICAgYCBib2R5OiB7IGVuY29kaW5nOiBcInRleHRcIiwgZGF0YTogXCJVbmF1dGhvcml6ZWRcIiB9YCArXG4gICAgICAgIGAgfTsgfWA7XG4gICAgfVxuXG4gICAgaWYgKGZvcndhcmRIb3N0SGVhZGVyKSB7XG4gICAgICBmdW5jdGlvbkJvZHkgKz1cbiAgICAgICAgXCIgcmVxdWVzdC5oZWFkZXJzWyd4LWZvcndhcmRlZC1ob3N0J10gPSB7IHZhbHVlOiByZXF1ZXN0LmhlYWRlcnMuaG9zdC52YWx1ZSB9O1wiO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uQm9keSArPSBcIiByZXR1cm4gcmVxdWVzdDsgfVwiO1xuXG4gICAgcmV0dXJuIG5ldyBDbG91ZEZyb250RnVuY3Rpb24odGhpcywgYCR7aWR9Vmlld2VyUmVxdWVzdEZuYCwge1xuICAgICAgY29kZTogRnVuY3Rpb25Db2RlLmZyb21JbmxpbmUoZnVuY3Rpb25Cb2R5KSxcbiAgICAgIHJ1bnRpbWU6IEZ1bmN0aW9uUnVudGltZS5KU18yXzBcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3JpZ2luKGNvbmZpZzogQ2RuT3JpZ2luQ29uZmlnKTogSU9yaWdpbiB7XG4gICAgc3dpdGNoIChjb25maWcudHlwZSkge1xuICAgICAgY2FzZSBcInMzXCI6XG4gICAgICAgIC8vIFVzaW5nIE9BSSBpbnN0ZWFkIG9mIE9BQyB0byBhdm9pZCBjcm9zcy1zdGFjayBjaXJjdWxhciBkZXBlbmRlbmNpZXNcbiAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzMxNDYyXG4gICAgICAgIC8vIE9BQyBjcmVhdGVzIGJ1Y2tldCDihpIgQ0ROIGRlcGVuZGVuY3kgKGJ1Y2tldCBwb2xpY3kgcmVmZXJlbmNlcyBkaXN0cmlidXRpb24pXG4gICAgICAgIC8vIE9BSSB3b3JrcyBhY3Jvc3Mgc3RhY2tzIHdpdGhvdXQgdHJpZ2dlcmluZyBjeWNsaWMgZGVwZW5kZW5jeSBlcnJvcnNcbiAgICAgICAgcmV0dXJuIFMzQnVja2V0T3JpZ2luLndpdGhPcmlnaW5BY2Nlc3NJZGVudGl0eShjb25maWcuYnVja2V0LCB7XG4gICAgICAgICAgb3JpZ2luUGF0aDogY29uZmlnLm9yaWdpblBhdGhcbiAgICAgICAgfSk7XG5cbiAgICAgIGNhc2UgXCJhbGJcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBMb2FkQmFsYW5jZXJWMk9yaWdpbihjb25maWcubG9hZEJhbGFuY2VyLCB7XG4gICAgICAgICAgaHR0cFBvcnQ6IGNvbmZpZy5odHRwUG9ydCxcbiAgICAgICAgICBodHRwc1BvcnQ6IGNvbmZpZy5odHRwc1BvcnQsXG4gICAgICAgICAgcHJvdG9jb2xQb2xpY3k6IHRoaXMucmVzb2x2ZU9yaWdpblByb3RvY29sUG9saWN5KFxuICAgICAgICAgICAgY29uZmlnLnByb3RvY29sUG9saWN5XG4gICAgICAgICAgKVxuICAgICAgICB9KTtcblxuICAgICAgY2FzZSBcImh0dHBcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBIdHRwT3JpZ2luKGNvbmZpZy5kb21haW5OYW1lLCB7XG4gICAgICAgICAgb3JpZ2luUGF0aDogY29uZmlnLm9yaWdpblBhdGgsXG4gICAgICAgICAgaHR0cFBvcnQ6IGNvbmZpZy5odHRwUG9ydCxcbiAgICAgICAgICBodHRwc1BvcnQ6IGNvbmZpZy5odHRwc1BvcnQsXG4gICAgICAgICAgcHJvdG9jb2xQb2xpY3k6IHRoaXMucmVzb2x2ZU9yaWdpblByb3RvY29sUG9saWN5KFxuICAgICAgICAgICAgY29uZmlnLnByb3RvY29sUG9saWN5XG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVDYWNoZVBvbGljeShcbiAgICBwb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeVxuICApOiBJQ2FjaGVQb2xpY3kge1xuICAgIGlmICghcG9saWN5KSB7XG4gICAgICByZXR1cm4gQ2FjaGVQb2xpY3kuQ0FDSElOR19PUFRJTUlaRUQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBwb2xpY3kgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHN3aXRjaCAocG9saWN5KSB7XG4gICAgICAgIGNhc2UgXCJDQUNISU5HX09QVElNSVpFRFwiOlxuICAgICAgICAgIHJldHVybiBDYWNoZVBvbGljeS5DQUNISU5HX09QVElNSVpFRDtcbiAgICAgICAgY2FzZSBcIkNBQ0hJTkdfRElTQUJMRURcIjpcbiAgICAgICAgICByZXR1cm4gQ2FjaGVQb2xpY3kuQ0FDSElOR19ESVNBQkxFRDtcbiAgICAgICAgY2FzZSBcIkNBQ0hJTkdfT1BUSU1JWkVEX0ZPUl9VTkNPTVBSRVNTRURfT0JKRUNUU1wiOlxuICAgICAgICAgIHJldHVybiBDYWNoZVBvbGljeS5DQUNISU5HX09QVElNSVpFRF9GT1JfVU5DT01QUkVTU0VEX09CSkVDVFM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvbGljeTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUFsbG93ZWRNZXRob2RzKFxuICAgIG1ldGhvZHM/OiBcIkdFVF9IRUFEXCIgfCBcIkdFVF9IRUFEX09QVElPTlNcIiB8IFwiQUxMXCJcbiAgKTogQWxsb3dlZE1ldGhvZHMge1xuICAgIHN3aXRjaCAobWV0aG9kcykge1xuICAgICAgY2FzZSBcIkdFVF9IRUFEXCI6XG4gICAgICAgIHJldHVybiBBbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRDtcbiAgICAgIGNhc2UgXCJHRVRfSEVBRF9PUFRJT05TXCI6XG4gICAgICAgIHJldHVybiBBbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRF9PUFRJT05TO1xuICAgICAgY2FzZSBcIkFMTFwiOlxuICAgICAgICByZXR1cm4gQWxsb3dlZE1ldGhvZHMuQUxMT1dfQUxMO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIEFsbG93ZWRNZXRob2RzLkFMTE9XX0dFVF9IRUFEO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU9yaWdpblByb3RvY29sUG9saWN5KFxuICAgIHBvbGljeT86IFwiSFRUUF9PTkxZXCIgfCBcIkhUVFBTX09OTFlcIiB8IFwiTUFUQ0hfVklFV0VSXCJcbiAgKTogT3JpZ2luUHJvdG9jb2xQb2xpY3kge1xuICAgIHN3aXRjaCAocG9saWN5KSB7XG4gICAgICBjYXNlIFwiSFRUUF9PTkxZXCI6XG4gICAgICAgIHJldHVybiBPcmlnaW5Qcm90b2NvbFBvbGljeS5IVFRQX09OTFk7XG4gICAgICBjYXNlIFwiSFRUUFNfT05MWVwiOlxuICAgICAgICByZXR1cm4gT3JpZ2luUHJvdG9jb2xQb2xpY3kuSFRUUFNfT05MWTtcbiAgICAgIGNhc2UgXCJNQVRDSF9WSUVXRVJcIjpcbiAgICAgICAgcmV0dXJuIE9yaWdpblByb3RvY29sUG9saWN5Lk1BVENIX1ZJRVdFUjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBPcmlnaW5Qcm90b2NvbFBvbGljeS5IVFRQU19PTkxZO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVByaWNlQ2xhc3MoXG4gICAgcHJpY2VDbGFzcz86IFwiUHJpY2VDbGFzc18xMDBcIiB8IFwiUHJpY2VDbGFzc18yMDBcIiB8IFwiUHJpY2VDbGFzc19BbGxcIlxuICApOiBQcmljZUNsYXNzIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKHByaWNlQ2xhc3MpIHtcbiAgICAgIGNhc2UgXCJQcmljZUNsYXNzXzEwMFwiOlxuICAgICAgICByZXR1cm4gUHJpY2VDbGFzcy5QUklDRV9DTEFTU18xMDA7XG4gICAgICBjYXNlIFwiUHJpY2VDbGFzc18yMDBcIjpcbiAgICAgICAgcmV0dXJuIFByaWNlQ2xhc3MuUFJJQ0VfQ0xBU1NfMjAwO1xuICAgICAgY2FzZSBcIlByaWNlQ2xhc3NfQWxsXCI6XG4gICAgICAgIHJldHVybiBQcmljZUNsYXNzLlBSSUNFX0NMQVNTX0FMTDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24gZG9tYWluIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgZ2V0RGlzdHJpYnV0aW9uRG9tYWluTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25Eb21haW5OYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24gSUQuXG4gICAqL1xuICBwdWJsaWMgZ2V0RGlzdHJpYnV0aW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uSWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1bmRlcmx5aW5nIENESyBEaXN0cmlidXRpb24gY29uc3RydWN0LlxuICAgKi9cbiAgcHVibGljIGdldERpc3RyaWJ1dGlvbigpOiBEaXN0cmlidXRpb24ge1xuICAgIHJldHVybiB0aGlzLmRpc3RyaWJ1dGlvbjtcbiAgfVxufVxuIl19
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Ec2InstanceStack = exports.Ec2Instance = void 0;
|
|
4
4
|
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
5
5
|
const constructs_1 = require("constructs");
|
|
6
|
+
const vpcUtils_1 = require("../../../utils/vpcUtils");
|
|
6
7
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
8
|
const aws_autoscaling_1 = require("aws-cdk-lib/aws-autoscaling");
|
|
8
9
|
const awsCustomResource_1 = require("../utilities/awsCustomResource");
|
|
@@ -39,7 +40,7 @@ class Ec2Instance extends constructs_1.Construct {
|
|
|
39
40
|
this.keyPair = undefined;
|
|
40
41
|
}
|
|
41
42
|
else {
|
|
42
|
-
// TODO:
|
|
43
|
+
// TODO: Break out into a separate construct for use with better prop handling
|
|
43
44
|
this.keyPair = new aws_ec2_1.KeyPair(this, "KeyPair", {
|
|
44
45
|
keyPairName: `${props.serviceName}KeyPair`
|
|
45
46
|
});
|
|
@@ -67,7 +68,7 @@ class Ec2Instance extends constructs_1.Construct {
|
|
|
67
68
|
httpTokens: aws_ec2_1.LaunchTemplateHttpTokens.REQUIRED,
|
|
68
69
|
instanceMetadataTags: true,
|
|
69
70
|
keyPair: this.keyPair,
|
|
70
|
-
associatePublicIpAddress: this.keyPair
|
|
71
|
+
associatePublicIpAddress: !!this.keyPair
|
|
71
72
|
});
|
|
72
73
|
}
|
|
73
74
|
addAutoScalingGroup(props) {
|
|
@@ -75,7 +76,9 @@ class Ec2Instance extends constructs_1.Construct {
|
|
|
75
76
|
const baseAsgProps = {
|
|
76
77
|
vpc: this.vpc,
|
|
77
78
|
vpcSubnets: {
|
|
78
|
-
subnetType: props.enableSSH
|
|
79
|
+
subnetType: props.enableSSH
|
|
80
|
+
? aws_ec2_1.SubnetType.PUBLIC
|
|
81
|
+
: (0, vpcUtils_1.resolvePrivateSubnetType)(this.vpc)
|
|
79
82
|
},
|
|
80
83
|
minCapacity: props.minCapacity,
|
|
81
84
|
maxCapacity: props.maxCapacity,
|
|
@@ -121,25 +124,18 @@ class Ec2Instance extends constructs_1.Construct {
|
|
|
121
124
|
return this.autoScalingGroup;
|
|
122
125
|
}
|
|
123
126
|
suspendAutoScaling(_props) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
ScalingProcesses: ["AZRebalance"]
|
|
131
|
-
},
|
|
132
|
-
physicalResourceId: custom_resources_1.PhysicalResourceId.of("suspendAutoScaling")
|
|
133
|
-
},
|
|
134
|
-
onUpdate: {
|
|
135
|
-
service: "AutoScaling",
|
|
136
|
-
action: "suspendProcesses",
|
|
137
|
-
parameters: {
|
|
138
|
-
AutoScalingGroupName: this.autoScalingGroup.autoScalingGroupName,
|
|
139
|
-
ScalingProcesses: ["AZRebalance"]
|
|
140
|
-
},
|
|
141
|
-
physicalResourceId: custom_resources_1.PhysicalResourceId.of("suspendAutoScaling")
|
|
127
|
+
const suspendCall = {
|
|
128
|
+
service: "AutoScaling",
|
|
129
|
+
action: "suspendProcesses",
|
|
130
|
+
parameters: {
|
|
131
|
+
AutoScalingGroupName: this.autoScalingGroup.autoScalingGroupName,
|
|
132
|
+
ScalingProcesses: ["AZRebalance"]
|
|
142
133
|
},
|
|
134
|
+
physicalResourceId: custom_resources_1.PhysicalResourceId.of("suspendAutoScaling")
|
|
135
|
+
};
|
|
136
|
+
new awsCustomResource_1.AwsCustomResource(this, "SuspendAutoscaling", {
|
|
137
|
+
onCreate: suspendCall,
|
|
138
|
+
onUpdate: suspendCall,
|
|
143
139
|
resourceType: "Custom::suspendAutoscaling"
|
|
144
140
|
});
|
|
145
141
|
}
|
|
@@ -154,4 +150,4 @@ class Ec2InstanceStack extends aws_cdk_lib_1.Stack {
|
|
|
154
150
|
}
|
|
155
151
|
}
|
|
156
152
|
exports.Ec2InstanceStack = Ec2InstanceStack;
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWMyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lYzIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBa0I2QjtBQUM3QiwyQ0FBdUM7QUFDdkMsNkNBQStEO0FBRS9ELGlFQU9xQztBQUNyQyxzRUFBbUU7QUFDbkUsbUVBQWtFO0FBQ2xFLDJDQUF3QztBQW1CeEMsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFReEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQiwwRUFBMEU7UUFDMUUsbUZBQW1GO1FBQ25GLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxxQkFBVyxDQUFDO1lBQ2pDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUN2QyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDekUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUF1QjtRQUM1QixJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUN2QixDQUFDO2FB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QixDQUFDO0lBQy9CLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUF3QjtRQUN6QyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUNoRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLE1BQU0sRUFBRSxrQkFBa0I7Z0JBQzFCLFVBQVUsRUFBRTtvQkFDVixvQkFBb0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CO29CQUNoRSxnQkFBZ0IsRUFBRSxDQUFDLGFBQWEsQ0FBQztpQkFDbEM7Z0JBQ0Qsa0JBQWtCLEVBQUUscUNBQWtCLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2FBQ2hFO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixNQUFNLEVBQUUsa0JBQWtCO2dCQUMxQixVQUFVLEVBQUU7b0JBQ1Ysb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQjtvQkFDaEUsZ0JBQWdCLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ2xDO2dCQUNELGtCQUFrQixFQUFFLHFDQUFrQixDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQzthQUNoRTtZQUNELFlBQVksRUFBRSw0QkFBNEI7U0FDM0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBaktELGtDQWlLQztBQUVELE1BQWEsZ0JBQWlCLFNBQVEsbUJBQUs7SUFDekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ3hCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVJELDRDQVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBCbG9ja0RldmljZSxcbiAgdHlwZSBJTWFjaGluZUltYWdlLFxuICBJbnN0YW5jZVR5cGUsXG4gIHR5cGUgSVZwYyxcbiAgTGF1bmNoVGVtcGxhdGUsXG4gIFN1Ym5ldFR5cGUsXG4gIHR5cGUgVXNlckRhdGEsXG4gIE1hY2hpbmVJbWFnZSxcbiAgTGF1bmNoVGVtcGxhdGVIdHRwVG9rZW5zLFxuICBLZXlQYWlyLFxuICB0eXBlIElLZXlQYWlyLFxuICBTZWN1cml0eUdyb3VwLFxuICBQZWVyLFxuICBQb3J0LFxuICB0eXBlIElDb25uZWN0YWJsZSxcbiAgQ29ubmVjdGlvbnMsXG4gIHR5cGUgU3VibmV0Q29uZmlndXJhdGlvblxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjaywgdHlwZSBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyB0eXBlIFJvbGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHtcbiAgQXV0b1NjYWxpbmdHcm91cCxcbiAgR3JvdXBNZXRyaWNzLFxuICBUZXJtaW5hdGlvblBvbGljeSxcbiAgVXBkYXRlUG9saWN5LFxuICBPbkRlbWFuZEFsbG9jYXRpb25TdHJhdGVneSxcbiAgU3BvdEFsbG9jYXRpb25TdHJhdGVneVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWF1dG9zY2FsaW5nXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IFBoeXNpY2FsUmVzb3VyY2VJZCB9IGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBWcGMgfSBmcm9tIFwiLi4vbmV0d29ya2luZy92cGNcIjtcblxuaW50ZXJmYWNlIEVjMkluc3RhbmNlUHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgc3BvdENhcGFjaXR5UGVyY2VudGFnZT86IG51bWJlcjtcbiAgYmxvY2tEZXZpY2VzPzogQmxvY2tEZXZpY2VbXTtcbiAgYWNjb3VudElkPzogc3RyaW5nO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICB2cGM/OiBJVnBjO1xuICBzdWJuZXRDb25maWd1cmF0aW9uPzogU3VibmV0Q29uZmlndXJhdGlvbltdO1xuICBtaW5DYXBhY2l0eT86IG51bWJlcjtcbiAgbWF4Q2FwYWNpdHk/OiBudW1iZXI7XG4gIGluc3RhbmNlVHlwZTogc3RyaW5nO1xuICBtYWNoaW5lSW1hZ2U/OiBJTWFjaGluZUltYWdlO1xuICB1c2VyRGF0YT86IFVzZXJEYXRhO1xuICByb2xlPzogUm9sZTtcbiAgZW5hYmxlU1NIPzogYm9vbGVhbjtcbiAgZGVmYXVsdFBvcnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBFYzJJbnN0YW5jZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElDb25uZWN0YWJsZSB7XG4gIHByaXZhdGUgbGF1bmNoVGVtcGxhdGUhOiBMYXVuY2hUZW1wbGF0ZTtcbiAgcHVibGljIHZwYyE6IElWcGM7XG4gIHB1YmxpYyBhc2dTZWN1cml0eUdyb3VwITogU2VjdXJpdHlHcm91cDtcbiAgcHJpdmF0ZSBhdXRvU2NhbGluZ0dyb3VwITogQXV0b1NjYWxpbmdHcm91cDtcbiAgcHJpdmF0ZSBrZXlQYWlyOiBJS2V5UGFpciB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRWMySW5zdGFuY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmFkZFZwYyhwcm9wcyk7XG4gICAgdGhpcy5hZGRLZXlQYWlyKHByb3BzKTtcbiAgICB0aGlzLmFkZExhdW5jaFRlbXBsYXRlKHByb3BzKTtcbiAgICB0aGlzLmFkZEF1dG9TY2FsaW5nR3JvdXAocHJvcHMpO1xuICAgIHRoaXMuc3VzcGVuZEF1dG9TY2FsaW5nKHByb3BzKTtcblxuICAgIC8vIEluaXRpYWxpc2UgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VjdXJpdHkgZ3JvdXAgYW5kIG9wdGlvbmFsIGRlZmF1bHRQb3J0XG4gICAgLy8gV2hlbiBkZWZhdWx0UG9ydCBpcyBzZXQsIG90aGVyIHJlc291cmNlcyBjYW4gdXNlIGFsbG93VG9EZWZhdWx0UG9ydChlYzJJbnN0YW5jZSlcbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gbmV3IENvbm5lY3Rpb25zKHtcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBbdGhpcy5hc2dTZWN1cml0eUdyb3VwXSxcbiAgICAgIGRlZmF1bHRQb3J0OiBwcm9wcy5kZWZhdWx0UG9ydCA/IFBvcnQudGNwKHByb3BzLmRlZmF1bHRQb3J0KSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuICB9XG5cbiAgYWRkVnBjKHByb3BzOiBFYzJJbnN0YW5jZVByb3BzKSB7XG4gICAgaWYgKHByb3BzLnZwYykge1xuICAgICAgdGhpcy52cGMgPSBwcm9wcy52cGM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudnBjID0gbmV3IFZwYyh0aGlzLCBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1WcGNgLCB7XG4gICAgICAgIGFjY291bnRJZDogcHJvcHMuYWNjb3VudElkLFxuICAgICAgICBzdWJuZXRDb25maWd1cmF0aW9uOiBwcm9wcy5zdWJuZXRDb25maWd1cmF0aW9uXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhZGRLZXlQYWlyKHByb3BzOiBFYzJJbnN0YW5jZVByb3BzKSB7XG4gICAgaWYgKCFwcm9wcy5lbmFibGVTU0gpIHtcbiAgICAgIHRoaXMua2V5UGFpciA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVE9ETzogQnJlYWtvdXQgaW50byBhIHNlcGVyYXRlIGNvbnN0cnVjdCBmb3IgdXNlIHdpdGggYmV0dGVyIHByb3AgaGFuZGxpbmdcbiAgICAgIHRoaXMua2V5UGFpciA9IG5ldyBLZXlQYWlyKHRoaXMsIFwiS2V5UGFpclwiLCB7XG4gICAgICAgIGtleVBhaXJOYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1LZXlQYWlyYFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWRkTGF1bmNoVGVtcGxhdGUocHJvcHM6IEVjMkluc3RhbmNlUHJvcHMpIHtcbiAgICB0aGlzLmFzZ1NlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cCh0aGlzLCBgQXNnU2VjdXJpdHlHcm91cGAsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBkZXNjcmlwdGlvbjogYFNlY3VyaXR5IGdyb3VwIGZvciB0aGUgJHtwcm9wcy5zZXJ2aWNlTmFtZX0gYXV0byBzY2FsaW5nIGdyb3VwYFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmVuYWJsZVNTSCkge1xuICAgICAgdGhpcy5hc2dTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgICBQZWVyLmFueUlwdjQoKSxcbiAgICAgICAgUG9ydC50Y3AoMjIpLFxuICAgICAgICBcIkFsbG93IFNTSFwiXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMubGF1bmNoVGVtcGxhdGUgPSBuZXcgTGF1bmNoVGVtcGxhdGUodGhpcywgXCJMYXVuY2hUZW1wbGF0ZVwiLCB7XG4gICAgICBsYXVuY2hUZW1wbGF0ZU5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfUxhdW5jaFRlbXBsYXRlYCxcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IEluc3RhbmNlVHlwZShgJHtwcm9wcy5pbnN0YW5jZVR5cGV9YCksXG4gICAgICBtYWNoaW5lSW1hZ2U6IHByb3BzLm1hY2hpbmVJbWFnZSB8fCBNYWNoaW5lSW1hZ2UubGF0ZXN0QW1hem9uTGludXgyMDIzKCksXG4gICAgICB1c2VyRGF0YTogcHJvcHMudXNlckRhdGEsXG4gICAgICByb2xlOiBwcm9wcy5yb2xlLFxuICAgICAgYmxvY2tEZXZpY2VzOiBwcm9wcz8uYmxvY2tEZXZpY2VzLFxuICAgICAgc2VjdXJpdHlHcm91cDogdGhpcy5hc2dTZWN1cml0eUdyb3VwLFxuICAgICAgZGV0YWlsZWRNb25pdG9yaW5nOiB0cnVlLFxuICAgICAgcmVxdWlyZUltZHN2MjogdHJ1ZSxcbiAgICAgIGh0dHBQdXRSZXNwb25zZUhvcExpbWl0OiAyLFxuICAgICAgaHR0cFRva2VuczogTGF1bmNoVGVtcGxhdGVIdHRwVG9rZW5zLlJFUVVJUkVELFxuICAgICAgaW5zdGFuY2VNZXRhZGF0YVRhZ3M6IHRydWUsXG4gICAgICBrZXlQYWlyOiB0aGlzLmtleVBhaXIsXG4gICAgICBhc3NvY2lhdGVQdWJsaWNJcEFkZHJlc3M6IHRoaXMua2V5UGFpciA/IHRydWUgOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgYWRkQXV0b1NjYWxpbmdHcm91cChwcm9wczogRWMySW5zdGFuY2VQcm9wcykge1xuICAgIC8vIFRPRE86IEhhbmRsZSB0ZXJtaW5hdGluZyBFQzIgaW5zdGFuY2VzIHdoZW4gdXBkYXRpbmcsIGN1cnJlbnRseSBoYW5ncy5cbiAgICBjb25zdCBiYXNlQXNnUHJvcHMgPSB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgdnBjU3VibmV0czoge1xuICAgICAgICBzdWJuZXRUeXBlOiBwcm9wcy5lbmFibGVTU0ggPyBTdWJuZXRUeXBlLlBVQkxJQyA6IHVuZGVmaW5lZFxuICAgICAgfSxcbiAgICAgIG1pbkNhcGFjaXR5OiBwcm9wcy5taW5DYXBhY2l0eSxcbiAgICAgIG1heENhcGFjaXR5OiBwcm9wcy5tYXhDYXBhY2l0eSxcbiAgICAgIGNvb2xkb3duOiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgIGdyb3VwTWV0cmljczogW0dyb3VwTWV0cmljcy5hbGwoKV0sXG4gICAgICB1cGRhdGVQb2xpY3k6IFVwZGF0ZVBvbGljeS5yZXBsYWNpbmdVcGRhdGUoKSxcbiAgICAgIG5ld0luc3RhbmNlc1Byb3RlY3RlZEZyb21TY2FsZUluOiB0cnVlLFxuICAgICAgdGVybWluYXRpb25Qb2xpY2llczogW1xuICAgICAgICBUZXJtaW5hdGlvblBvbGljeS5PTERFU1RfTEFVTkNIX0NPTkZJR1VSQVRJT04sXG4gICAgICAgIFRlcm1pbmF0aW9uUG9saWN5LkNMT1NFU1RfVE9fTkVYVF9JTlNUQU5DRV9IT1VSXG4gICAgICBdLFxuICAgICAgc3NtU2Vzc2lvblBlcm1pc3Npb25zOiB0cnVlXG4gICAgfTtcblxuICAgIC8vIFN1cHBvcnQgc3BvdCBpbnN0YW5jZXMgdmlhIG1peGVkIGluc3RhbmNlcyBwb2xpY3lcbiAgICBpZiAoXG4gICAgICBwcm9wcy5zcG90Q2FwYWNpdHlQZXJjZW50YWdlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHByb3BzLnNwb3RDYXBhY2l0eVBlcmNlbnRhZ2UgPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCBzcG90UGVyY2VudGFnZSA9IE1hdGgubWluKFxuICAgICAgICAxMDAsXG4gICAgICAgIE1hdGgubWF4KDAsIHByb3BzLnNwb3RDYXBhY2l0eVBlcmNlbnRhZ2UpXG4gICAgICApO1xuICAgICAgY29uc3Qgb25EZW1hbmRQZXJjZW50YWdlID0gMTAwIC0gc3BvdFBlcmNlbnRhZ2U7XG5cbiAgICAgIHRoaXMuYXV0b1NjYWxpbmdHcm91cCA9IG5ldyBBdXRvU2NhbGluZ0dyb3VwKHRoaXMsIFwiQXV0b1NjYWxpbmdHcm91cFwiLCB7XG4gICAgICAgIC4uLmJhc2VBc2dQcm9wcyxcbiAgICAgICAgbWl4ZWRJbnN0YW5jZXNQb2xpY3k6IHtcbiAgICAgICAgICBpbnN0YW5jZXNEaXN0cmlidXRpb246IHtcbiAgICAgICAgICAgIG9uRGVtYW5kQWxsb2NhdGlvblN0cmF0ZWd5OiBPbkRlbWFuZEFsbG9jYXRpb25TdHJhdGVneS5QUklPUklUSVpFRCxcbiAgICAgICAgICAgIG9uRGVtYW5kQmFzZUNhcGFjaXR5OiAwLFxuICAgICAgICAgICAgb25EZW1hbmRQZXJjZW50YWdlQWJvdmVCYXNlQ2FwYWNpdHk6IG9uRGVtYW5kUGVyY2VudGFnZSxcbiAgICAgICAgICAgIHNwb3RBbGxvY2F0aW9uU3RyYXRlZ3k6XG4gICAgICAgICAgICAgIFNwb3RBbGxvY2F0aW9uU3RyYXRlZ3kuUFJJQ0VfQ0FQQUNJVFlfT1BUSU1JWkVEXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsYXVuY2hUZW1wbGF0ZTogdGhpcy5sYXVuY2hUZW1wbGF0ZVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hdXRvU2NhbGluZ0dyb3VwID0gbmV3IEF1dG9TY2FsaW5nR3JvdXAodGhpcywgXCJBdXRvU2NhbGluZ0dyb3VwXCIsIHtcbiAgICAgICAgLi4uYmFzZUFzZ1Byb3BzLFxuICAgICAgICBsYXVuY2hUZW1wbGF0ZTogdGhpcy5sYXVuY2hUZW1wbGF0ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgQXV0byBTY2FsaW5nIEdyb3VwLlxuICAgKi9cbiAgcHVibGljIGdldEF1dG9TY2FsaW5nR3JvdXAoKTogQXV0b1NjYWxpbmdHcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuYXV0b1NjYWxpbmdHcm91cDtcbiAgfVxuXG4gIHN1c3BlbmRBdXRvU2NhbGluZyhfcHJvcHM6IEVjMkluc3RhbmNlUHJvcHMpIHtcbiAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJTdXNwZW5kQXV0b3NjYWxpbmdcIiwge1xuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJBdXRvU2NhbGluZ1wiLFxuICAgICAgICBhY3Rpb246IFwic3VzcGVuZFByb2Nlc3Nlc1wiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgQXV0b1NjYWxpbmdHcm91cE5hbWU6IHRoaXMuYXV0b1NjYWxpbmdHcm91cC5hdXRvU2NhbGluZ0dyb3VwTmFtZSxcbiAgICAgICAgICBTY2FsaW5nUHJvY2Vzc2VzOiBbXCJBWlJlYmFsYW5jZVwiXVxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IFBoeXNpY2FsUmVzb3VyY2VJZC5vZihcInN1c3BlbmRBdXRvU2NhbGluZ1wiKVxuICAgICAgfSxcbiAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiQXV0b1NjYWxpbmdcIixcbiAgICAgICAgYWN0aW9uOiBcInN1c3BlbmRQcm9jZXNzZXNcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEF1dG9TY2FsaW5nR3JvdXBOYW1lOiB0aGlzLmF1dG9TY2FsaW5nR3JvdXAuYXV0b1NjYWxpbmdHcm91cE5hbWUsXG4gICAgICAgICAgU2NhbGluZ1Byb2Nlc3NlczogW1wiQVpSZWJhbGFuY2VcIl1cbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoXCJzdXNwZW5kQXV0b1NjYWxpbmdcIilcbiAgICAgIH0sXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpzdXNwZW5kQXV0b3NjYWxpbmdcIlxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFYzJJbnN0YW5jZVN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRWMySW5zdGFuY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbmV3IEVjMkluc3RhbmNlKHRoaXMsIGlkLCB7XG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWMyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lYzIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBa0I2QjtBQUM3QiwyQ0FBdUM7QUFDdkMsc0RBQW1FO0FBQ25FLDZDQUErRDtBQUUvRCxpRUFPcUM7QUFDckMsc0VBQW1FO0FBQ25FLG1FQUFrRTtBQUNsRSwyQ0FBd0M7QUFtQnhDLE1BQWEsV0FBWSxTQUFRLHNCQUFTO0lBUXhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IsMEVBQTBFO1FBQzFFLG1GQUFtRjtRQUNuRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkscUJBQVcsQ0FBQztZQUNqQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDdkMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGNBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ3pFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBdUI7UUFDNUIsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7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QUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBd0I7UUFDekMsTUFBTSxXQUFXLEdBQUc7WUFDbEIsT0FBTyxFQUFFLGFBQWE7WUFDdEIsTUFBTSxFQUFFLGtCQUFrQjtZQUMxQixVQUFVLEVBQUU7Z0JBQ1Ysb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQjtnQkFDaEUsZ0JBQWdCLEVBQUUsQ0FBQyxhQUFhLENBQUM7YUFDbEM7WUFDRCxrQkFBa0IsRUFBRSxxQ0FBa0IsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUM7U0FDaEUsQ0FBQztRQUVGLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQ2hELFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFlBQVksRUFBRSw0QkFBNEI7U0FDM0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBN0pELGtDQTZKQztBQUVELE1BQWEsZ0JBQWlCLFNBQVEsbUJBQUs7SUFDekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ3hCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVJELDRDQVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBCbG9ja0RldmljZSxcbiAgdHlwZSBJTWFjaGluZUltYWdlLFxuICBJbnN0YW5jZVR5cGUsXG4gIHR5cGUgSVZwYyxcbiAgTGF1bmNoVGVtcGxhdGUsXG4gIFN1Ym5ldFR5cGUsXG4gIHR5cGUgVXNlckRhdGEsXG4gIE1hY2hpbmVJbWFnZSxcbiAgTGF1bmNoVGVtcGxhdGVIdHRwVG9rZW5zLFxuICBLZXlQYWlyLFxuICB0eXBlIElLZXlQYWlyLFxuICBTZWN1cml0eUdyb3VwLFxuICBQZWVyLFxuICBQb3J0LFxuICB0eXBlIElDb25uZWN0YWJsZSxcbiAgQ29ubmVjdGlvbnMsXG4gIHR5cGUgU3VibmV0Q29uZmlndXJhdGlvblxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IHJlc29sdmVQcml2YXRlU3VibmV0VHlwZSB9IGZyb20gXCIuLi8uLi8uLi91dGlscy92cGNVdGlsc1wiO1xuaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrLCB0eXBlIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHR5cGUgUm9sZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBBdXRvU2NhbGluZ0dyb3VwLFxuICBHcm91cE1ldHJpY3MsXG4gIFRlcm1pbmF0aW9uUG9saWN5LFxuICBVcGRhdGVQb2xpY3ksXG4gIE9uRGVtYW5kQWxsb2NhdGlvblN0cmF0ZWd5LFxuICBTcG90QWxsb2NhdGlvblN0cmF0ZWd5XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXV0b3NjYWxpbmdcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IHsgUGh5c2ljYWxSZXNvdXJjZUlkIH0gZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IFZwYyB9IGZyb20gXCIuLi9uZXR3b3JraW5nL3ZwY1wiO1xuXG5pbnRlcmZhY2UgRWMySW5zdGFuY2VQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICBzcG90Q2FwYWNpdHlQZXJjZW50YWdlPzogbnVtYmVyO1xuICBibG9ja0RldmljZXM/OiBCbG9ja0RldmljZVtdO1xuICBhY2NvdW50SWQ/OiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIHZwYz86IElWcGM7XG4gIHN1Ym5ldENvbmZpZ3VyYXRpb24/OiBTdWJuZXRDb25maWd1cmF0aW9uW107XG4gIG1pbkNhcGFjaXR5PzogbnVtYmVyO1xuICBtYXhDYXBhY2l0eT86IG51bWJlcjtcbiAgaW5zdGFuY2VUeXBlOiBzdHJpbmc7XG4gIG1hY2hpbmVJbWFnZT86IElNYWNoaW5lSW1hZ2U7XG4gIHVzZXJEYXRhPzogVXNlckRhdGE7XG4gIHJvbGU/OiBSb2xlO1xuICBlbmFibGVTU0g/OiBib29sZWFuO1xuICBkZWZhdWx0UG9ydD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEVjMkluc3RhbmNlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHJpdmF0ZSBsYXVuY2hUZW1wbGF0ZSE6IExhdW5jaFRlbXBsYXRlO1xuICBwdWJsaWMgdnBjITogSVZwYztcbiAgcHVibGljIGFzZ1NlY3VyaXR5R3JvdXAhOiBTZWN1cml0eUdyb3VwO1xuICBwcml2YXRlIGF1dG9TY2FsaW5nR3JvdXAhOiBBdXRvU2NhbGluZ0dyb3VwO1xuICBwcml2YXRlIGtleVBhaXI6IElLZXlQYWlyIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFYzJJbnN0YW5jZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYWRkVnBjKHByb3BzKTtcbiAgICB0aGlzLmFkZEtleVBhaXIocHJvcHMpO1xuICAgIHRoaXMuYWRkTGF1bmNoVGVtcGxhdGUocHJvcHMpO1xuICAgIHRoaXMuYWRkQXV0b1NjYWxpbmdHcm91cChwcm9wcyk7XG4gICAgdGhpcy5zdXNwZW5kQXV0b1NjYWxpbmcocHJvcHMpO1xuXG4gICAgLy8gSW5pdGlhbGlzZSBjb25uZWN0aW9ucyB3aXRoIHRoZSBzZWN1cml0eSBncm91cCBhbmQgb3B0aW9uYWwgZGVmYXVsdFBvcnRcbiAgICAvLyBXaGVuIGRlZmF1bHRQb3J0IGlzIHNldCwgb3RoZXIgcmVzb3VyY2VzIGNhbiB1c2UgYWxsb3dUb0RlZmF1bHRQb3J0KGVjMkluc3RhbmNlKVxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoe1xuICAgICAgc2VjdXJpdHlHcm91cHM6IFt0aGlzLmFzZ1NlY3VyaXR5R3JvdXBdLFxuICAgICAgZGVmYXVsdFBvcnQ6IHByb3BzLmRlZmF1bHRQb3J0ID8gUG9ydC50Y3AocHJvcHMuZGVmYXVsdFBvcnQpIDogdW5kZWZpbmVkXG4gICAgfSk7XG4gIH1cblxuICBhZGRWcGMocHJvcHM6IEVjMkluc3RhbmNlUHJvcHMpIHtcbiAgICBpZiAocHJvcHMudnBjKSB7XG4gICAgICB0aGlzLnZwYyA9IHByb3BzLnZwYztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52cGMgPSBuZXcgVnBjKHRoaXMsIGAke3Byb3BzLnNlcnZpY2VOYW1lfVZwY2AsIHtcbiAgICAgICAgYWNjb3VudElkOiBwcm9wcy5hY2NvdW50SWQsXG4gICAgICAgIHN1Ym5ldENvbmZpZ3VyYXRpb246IHByb3BzLnN1Ym5ldENvbmZpZ3VyYXRpb25cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFkZEtleVBhaXIocHJvcHM6IEVjMkluc3RhbmNlUHJvcHMpIHtcbiAgICBpZiAoIXByb3BzLmVuYWJsZVNTSCkge1xuICAgICAgdGhpcy5rZXlQYWlyID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUT0RPOiBCcmVhayBvdXQgaW50byBhIHNlcGFyYXRlIGNvbnN0cnVjdCBmb3IgdXNlIHdpdGggYmV0dGVyIHByb3AgaGFuZGxpbmdcbiAgICAgIHRoaXMua2V5UGFpciA9IG5ldyBLZXlQYWlyKHRoaXMsIFwiS2V5UGFpclwiLCB7XG4gICAgICAgIGtleVBhaXJOYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1LZXlQYWlyYFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWRkTGF1bmNoVGVtcGxhdGUocHJvcHM6IEVjMkluc3RhbmNlUHJvcHMpIHtcbiAgICB0aGlzLmFzZ1NlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cCh0aGlzLCBgQXNnU2VjdXJpdHlHcm91cGAsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBkZXNjcmlwdGlvbjogYFNlY3VyaXR5IGdyb3VwIGZvciB0aGUgJHtwcm9wcy5zZXJ2aWNlTmFtZX0gYXV0byBzY2FsaW5nIGdyb3VwYFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmVuYWJsZVNTSCkge1xuICAgICAgdGhpcy5hc2dTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgICBQZWVyLmFueUlwdjQoKSxcbiAgICAgICAgUG9ydC50Y3AoMjIpLFxuICAgICAgICBcIkFsbG93IFNTSFwiXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMubGF1bmNoVGVtcGxhdGUgPSBuZXcgTGF1bmNoVGVtcGxhdGUodGhpcywgXCJMYXVuY2hUZW1wbGF0ZVwiLCB7XG4gICAgICBsYXVuY2hUZW1wbGF0ZU5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfUxhdW5jaFRlbXBsYXRlYCxcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IEluc3RhbmNlVHlwZShgJHtwcm9wcy5pbnN0YW5jZVR5cGV9YCksXG4gICAgICBtYWNoaW5lSW1hZ2U6IHByb3BzLm1hY2hpbmVJbWFnZSB8fCBNYWNoaW5lSW1hZ2UubGF0ZXN0QW1hem9uTGludXgyMDIzKCksXG4gICAgICB1c2VyRGF0YTogcHJvcHMudXNlckRhdGEsXG4gICAgICByb2xlOiBwcm9wcy5yb2xlLFxuICAgICAgYmxvY2tEZXZpY2VzOiBwcm9wcz8uYmxvY2tEZXZpY2VzLFxuICAgICAgc2VjdXJpdHlHcm91cDogdGhpcy5hc2dTZWN1cml0eUdyb3VwLFxuICAgICAgZGV0YWlsZWRNb25pdG9yaW5nOiB0cnVlLFxuICAgICAgcmVxdWlyZUltZHN2MjogdHJ1ZSxcbiAgICAgIGh0dHBQdXRSZXNwb25zZUhvcExpbWl0OiAyLFxuICAgICAgaHR0cFRva2VuczogTGF1bmNoVGVtcGxhdGVIdHRwVG9rZW5zLlJFUVVJUkVELFxuICAgICAgaW5zdGFuY2VNZXRhZGF0YVRhZ3M6IHRydWUsXG4gICAgICBrZXlQYWlyOiB0aGlzLmtleVBhaXIsXG4gICAgICBhc3NvY2lhdGVQdWJsaWNJcEFkZHJlc3M6ICEhdGhpcy5rZXlQYWlyXG4gICAgfSk7XG4gIH1cblxuICBhZGRBdXRvU2NhbGluZ0dyb3VwKHByb3BzOiBFYzJJbnN0YW5jZVByb3BzKSB7XG4gICAgLy8gVE9ETzogSGFuZGxlIHRlcm1pbmF0aW5nIEVDMiBpbnN0YW5jZXMgd2hlbiB1cGRhdGluZywgY3VycmVudGx5IGhhbmdzLlxuICAgIGNvbnN0IGJhc2VBc2dQcm9wcyA9IHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiB7XG4gICAgICAgIHN1Ym5ldFR5cGU6IHByb3BzLmVuYWJsZVNTSFxuICAgICAgICAgID8gU3VibmV0VHlwZS5QVUJMSUNcbiAgICAgICAgICA6IHJlc29sdmVQcml2YXRlU3VibmV0VHlwZSh0aGlzLnZwYylcbiAgICAgIH0sXG4gICAgICBtaW5DYXBhY2l0eTogcHJvcHMubWluQ2FwYWNpdHksXG4gICAgICBtYXhDYXBhY2l0eTogcHJvcHMubWF4Q2FwYWNpdHksXG4gICAgICBjb29sZG93bjogRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBncm91cE1ldHJpY3M6IFtHcm91cE1ldHJpY3MuYWxsKCldLFxuICAgICAgdXBkYXRlUG9saWN5OiBVcGRhdGVQb2xpY3kucmVwbGFjaW5nVXBkYXRlKCksXG4gICAgICBuZXdJbnN0YW5jZXNQcm90ZWN0ZWRGcm9tU2NhbGVJbjogdHJ1ZSxcbiAgICAgIHRlcm1pbmF0aW9uUG9saWNpZXM6IFtcbiAgICAgICAgVGVybWluYXRpb25Qb2xpY3kuT0xERVNUX0xBVU5DSF9DT05GSUdVUkFUSU9OLFxuICAgICAgICBUZXJtaW5hdGlvblBvbGljeS5DTE9TRVNUX1RPX05FWFRfSU5TVEFOQ0VfSE9VUlxuICAgICAgXSxcbiAgICAgIHNzbVNlc3Npb25QZXJtaXNzaW9uczogdHJ1ZVxuICAgIH07XG5cbiAgICAvLyBTdXBwb3J0IHNwb3QgaW5zdGFuY2VzIHZpYSBtaXhlZCBpbnN0YW5jZXMgcG9saWN5XG4gICAgaWYgKFxuICAgICAgcHJvcHMuc3BvdENhcGFjaXR5UGVyY2VudGFnZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBwcm9wcy5zcG90Q2FwYWNpdHlQZXJjZW50YWdlID4gMFxuICAgICkge1xuICAgICAgY29uc3Qgc3BvdFBlcmNlbnRhZ2UgPSBNYXRoLm1pbihcbiAgICAgICAgMTAwLFxuICAgICAgICBNYXRoLm1heCgwLCBwcm9wcy5zcG90Q2FwYWNpdHlQZXJjZW50YWdlKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IG9uRGVtYW5kUGVyY2VudGFnZSA9IDEwMCAtIHNwb3RQZXJjZW50YWdlO1xuXG4gICAgICB0aGlzLmF1dG9TY2FsaW5nR3JvdXAgPSBuZXcgQXV0b1NjYWxpbmdHcm91cCh0aGlzLCBcIkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgICAuLi5iYXNlQXNnUHJvcHMsXG4gICAgICAgIG1peGVkSW5zdGFuY2VzUG9saWN5OiB7XG4gICAgICAgICAgaW5zdGFuY2VzRGlzdHJpYnV0aW9uOiB7XG4gICAgICAgICAgICBvbkRlbWFuZEFsbG9jYXRpb25TdHJhdGVneTogT25EZW1hbmRBbGxvY2F0aW9uU3RyYXRlZ3kuUFJJT1JJVElaRUQsXG4gICAgICAgICAgICBvbkRlbWFuZEJhc2VDYXBhY2l0eTogMCxcbiAgICAgICAgICAgIG9uRGVtYW5kUGVyY2VudGFnZUFib3ZlQmFzZUNhcGFjaXR5OiBvbkRlbWFuZFBlcmNlbnRhZ2UsXG4gICAgICAgICAgICBzcG90QWxsb2NhdGlvblN0cmF0ZWd5OlxuICAgICAgICAgICAgICBTcG90QWxsb2NhdGlvblN0cmF0ZWd5LlBSSUNFX0NBUEFDSVRZX09QVElNSVpFRFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGF1bmNoVGVtcGxhdGU6IHRoaXMubGF1bmNoVGVtcGxhdGVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXV0b1NjYWxpbmdHcm91cCA9IG5ldyBBdXRvU2NhbGluZ0dyb3VwKHRoaXMsIFwiQXV0b1NjYWxpbmdHcm91cFwiLCB7XG4gICAgICAgIC4uLmJhc2VBc2dQcm9wcyxcbiAgICAgICAgbGF1bmNoVGVtcGxhdGU6IHRoaXMubGF1bmNoVGVtcGxhdGVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIEF1dG8gU2NhbGluZyBHcm91cC5cbiAgICovXG4gIHB1YmxpYyBnZXRBdXRvU2NhbGluZ0dyb3VwKCk6IEF1dG9TY2FsaW5nR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmF1dG9TY2FsaW5nR3JvdXA7XG4gIH1cblxuICBzdXNwZW5kQXV0b1NjYWxpbmcoX3Byb3BzOiBFYzJJbnN0YW5jZVByb3BzKSB7XG4gICAgY29uc3Qgc3VzcGVuZENhbGwgPSB7XG4gICAgICBzZXJ2aWNlOiBcIkF1dG9TY2FsaW5nXCIsXG4gICAgICBhY3Rpb246IFwic3VzcGVuZFByb2Nlc3Nlc1wiLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBBdXRvU2NhbGluZ0dyb3VwTmFtZTogdGhpcy5hdXRvU2NhbGluZ0dyb3VwLmF1dG9TY2FsaW5nR3JvdXBOYW1lLFxuICAgICAgICBTY2FsaW5nUHJvY2Vzc2VzOiBbXCJBWlJlYmFsYW5jZVwiXVxuICAgICAgfSxcbiAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwic3VzcGVuZEF1dG9TY2FsaW5nXCIpXG4gICAgfTtcblxuICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcIlN1c3BlbmRBdXRvc2NhbGluZ1wiLCB7XG4gICAgICBvbkNyZWF0ZTogc3VzcGVuZENhbGwsXG4gICAgICBvblVwZGF0ZTogc3VzcGVuZENhbGwsXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpzdXNwZW5kQXV0b3NjYWxpbmdcIlxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFYzJJbnN0YW5jZVN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRWMySW5zdGFuY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbmV3IEVjMkluc3RhbmNlKHRoaXMsIGlkLCB7XG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -7,8 +7,8 @@ import { type IManagedPolicy, type PolicyDocument } from "aws-cdk-lib/aws-iam";
|
|
|
7
7
|
import { Certificate } from "aws-cdk-lib/aws-certificatemanager";
|
|
8
8
|
import { type GeoLocation } from "aws-cdk-lib/aws-route53";
|
|
9
9
|
import { Repository } from "aws-cdk-lib/aws-ecr";
|
|
10
|
-
import { HostedZone as FjallHostedZone } from "
|
|
11
|
-
import { type ConnectionSpec } from "../../../
|
|
10
|
+
import { HostedZone as FjallHostedZone } from "../networking/hostedZone";
|
|
11
|
+
import { type ConnectionSpec } from "../../../utils/connector.js";
|
|
12
12
|
import { type SecretImport } from "../secrets";
|
|
13
13
|
export declare enum Protocol {
|
|
14
14
|
HTTP = 0,
|
|
@@ -24,7 +24,7 @@ export type EcsCapacityProvider = "FARGATE" | "FARGATE_SPOT" | "EC2";
|
|
|
24
24
|
* Only used when capacityProvider is "EC2".
|
|
25
25
|
*/
|
|
26
26
|
export interface Ec2CapacityConfig {
|
|
27
|
-
/** EC2 instance type. Default: "
|
|
27
|
+
/** EC2 instance type. Default: "t4g.micro" */
|
|
28
28
|
instanceType?: string;
|
|
29
29
|
/** AMI hardware type. Default: "ARM" (Graviton - better cost/performance) */
|
|
30
30
|
amiHardwareType?: "ARM" | "STANDARD";
|
|
@@ -349,6 +349,7 @@ export default class EcsCluster extends Construct implements IConnectable {
|
|
|
349
349
|
private asgCapacityProviders;
|
|
350
350
|
private scope;
|
|
351
351
|
private props;
|
|
352
|
+
private outputName;
|
|
352
353
|
private loadBalancerDisabled;
|
|
353
354
|
private directAccessEnabled;
|
|
354
355
|
private nextPriority;
|
|
@@ -402,7 +403,7 @@ export default class EcsCluster extends Construct implements IConnectable {
|
|
|
402
403
|
* Each service gets a DeployableService output so the deployment service
|
|
403
404
|
* can find and deploy all services in the cluster.
|
|
404
405
|
*/
|
|
405
|
-
addDeployableServiceOutputs
|
|
406
|
+
private addDeployableServiceOutputs;
|
|
406
407
|
/**
|
|
407
408
|
* Gets the capacity provider for a service.
|
|
408
409
|
* Each service MUST specify its own capacityProvider.
|
|
@@ -453,10 +454,10 @@ export default class EcsCluster extends Construct implements IConnectable {
|
|
|
453
454
|
* Checks if any service in the cluster uses an EC2 capacity provider.
|
|
454
455
|
*/
|
|
455
456
|
private anyServiceUsesEc2;
|
|
456
|
-
addCluster
|
|
457
|
-
addLoadBalancer
|
|
457
|
+
private addCluster;
|
|
458
|
+
private addLoadBalancer;
|
|
458
459
|
private addDirectAccessOutputs;
|
|
459
|
-
addLoadBalancerListener
|
|
460
|
-
addHostedZone
|
|
460
|
+
private addLoadBalancerListener;
|
|
461
|
+
private addHostedZone;
|
|
461
462
|
static build(id: string, props: EcsClusterProps): (sb: StackBuilder) => Construct;
|
|
462
463
|
}
|