@fjall/components-infrastructure 0.88.4 → 0.89.2
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/LICENSE +21 -0
- package/dist/lib/config/aws/disasterRecovery.js +28 -7
- package/dist/lib/patterns/aws/compute.d.ts +6 -716
- package/dist/lib/patterns/aws/compute.js +24 -427
- package/dist/lib/patterns/aws/computeEc2.d.ts +67 -0
- package/dist/lib/patterns/aws/computeEc2.js +46 -0
- package/dist/lib/patterns/aws/computeEcs.d.ts +446 -0
- package/dist/lib/patterns/aws/computeEcs.js +246 -0
- package/dist/lib/patterns/aws/computeLambda.d.ts +220 -0
- package/dist/lib/patterns/aws/computeLambda.js +147 -0
- package/dist/lib/patterns/aws/domainDelegation.d.ts +8 -0
- package/dist/lib/patterns/aws/domainDelegation.js +54 -0
- package/dist/lib/patterns/aws/domainFactory.d.ts +8 -0
- package/dist/lib/patterns/aws/domainFactory.js +23 -0
- package/dist/lib/patterns/aws/index.d.ts +3 -0
- package/dist/lib/patterns/aws/index.js +5 -1
- package/dist/lib/patterns/aws/interfaces/domain.d.ts +2 -0
- package/dist/lib/patterns/aws/interfaces/domain.js +6 -0
- package/dist/lib/patterns/aws/interfaces/index.d.ts +1 -0
- package/dist/lib/patterns/aws/interfaces/index.js +1 -1
- package/dist/lib/patterns/aws/interfaces/pattern.d.ts +3 -0
- package/dist/lib/patterns/aws/interfaces/pattern.js +1 -1
- package/dist/lib/patterns/aws/payload.js +11 -1
- package/dist/lib/resources/aws/compute/ecs.d.ts +14 -2
- package/dist/lib/resources/aws/compute/ecs.js +69 -24
- package/dist/lib/resources/aws/networking/domain.d.ts +13 -0
- package/dist/lib/resources/aws/networking/domain.js +102 -0
- package/dist/lib/resources/aws/networking/domainCertificate.d.ts +13 -0
- package/dist/lib/resources/aws/networking/domainCertificate.js +28 -0
- package/dist/lib/resources/aws/networking/hostedZone.js +3 -6
- package/dist/lib/resources/aws/networking/index.d.ts +2 -0
- package/dist/lib/resources/aws/networking/index.js +3 -1
- package/dist/lib/utils/capitaliseString.d.ts +1 -18
- package/dist/lib/utils/capitaliseString.js +8 -37
- package/dist/lib/utils/dnsRecords.d.ts +4 -0
- package/dist/lib/utils/dnsRecords.js +108 -0
- package/dist/lib/utils/domainTypes.d.ts +37 -0
- package/dist/lib/utils/domainTypes.js +10 -0
- package/dist/lib/utils/env.js +23 -29
- package/dist/lib/utils/getConfig.js +42 -16
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.js +2 -1
- package/package.json +4 -3
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LambdaCompute = exports.InvokeMode = exports.HttpMethod = exports.Architecture = void 0;
|
|
4
|
+
exports.resolveLambdaDeployment = resolveLambdaDeployment;
|
|
5
|
+
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
6
|
+
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
7
|
+
const aws_ecr_1 = require("aws-cdk-lib/aws-ecr");
|
|
8
|
+
const constructs_1 = require("constructs");
|
|
9
|
+
const connections_js_1 = require("../../utils/connections.js");
|
|
10
|
+
const lambda_1 = require("../../resources/aws/compute/lambda");
|
|
11
|
+
const compute_js_1 = require("./compute.js");
|
|
12
|
+
// Re-export Lambda types from CDK for user convenience
|
|
13
|
+
var aws_lambda_2 = require("aws-cdk-lib/aws-lambda");
|
|
14
|
+
Object.defineProperty(exports, "Architecture", { enumerable: true, get: function () { return aws_lambda_2.Architecture; } });
|
|
15
|
+
Object.defineProperty(exports, "HttpMethod", { enumerable: true, get: function () { return aws_lambda_2.HttpMethod; } });
|
|
16
|
+
Object.defineProperty(exports, "InvokeMode", { enumerable: true, get: function () { return aws_lambda_2.InvokeMode; } });
|
|
17
|
+
/**
|
|
18
|
+
* Resolve Lambda deployment configuration from props.
|
|
19
|
+
* Handles container vs code deployment types.
|
|
20
|
+
*/
|
|
21
|
+
function resolveLambdaDeployment(props) {
|
|
22
|
+
if (props.deployment === "container") {
|
|
23
|
+
if (!(props.ecrRepository instanceof aws_ecr_1.Repository)) {
|
|
24
|
+
throw new Error("ecrRepository must be a Repository instance for Lambda compute type");
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
code: aws_lambda_1.Code.fromEcrImage(props.ecrRepository, {
|
|
28
|
+
tagOrDigest: compute_js_1.COMPUTE_DEFAULTS.ECS.IMAGE_TAG
|
|
29
|
+
}),
|
|
30
|
+
handler: aws_lambda_1.Handler.FROM_IMAGE,
|
|
31
|
+
runtime: aws_lambda_1.Runtime.FROM_IMAGE
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
code: props.code,
|
|
36
|
+
handler: props.handler || compute_js_1.COMPUTE_DEFAULTS.LAMBDA.HANDLER,
|
|
37
|
+
runtime: props.runtime || compute_js_1.COMPUTE_DEFAULTS.LAMBDA.RUNTIME
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Lambda compute wrapper implementing ILambdaCompute.
|
|
42
|
+
* Provides type-safe access to Lambda-specific resources.
|
|
43
|
+
*/
|
|
44
|
+
class LambdaCompute extends constructs_1.Construct {
|
|
45
|
+
constructor(scope, id, props) {
|
|
46
|
+
super(scope, id);
|
|
47
|
+
this.computeType = "lambda";
|
|
48
|
+
const { code, handler, runtime } = resolveLambdaDeployment(props);
|
|
49
|
+
// Convert presence-based functionUrl config to legacy boolean format
|
|
50
|
+
const functionUrlConfig = props.functionUrl;
|
|
51
|
+
const enableFunctionUrl = functionUrlConfig !== undefined && functionUrlConfig !== false;
|
|
52
|
+
const functionUrlAuthType = enableFunctionUrl && typeof functionUrlConfig === "object"
|
|
53
|
+
? functionUrlConfig.authType
|
|
54
|
+
: undefined;
|
|
55
|
+
const functionUrlCors = enableFunctionUrl && typeof functionUrlConfig === "object"
|
|
56
|
+
? functionUrlConfig.cors
|
|
57
|
+
: undefined;
|
|
58
|
+
const functionUrlInvokeMode = enableFunctionUrl && typeof functionUrlConfig === "object"
|
|
59
|
+
? functionUrlConfig.invokeMode
|
|
60
|
+
: undefined;
|
|
61
|
+
const lambdaProps = {
|
|
62
|
+
code,
|
|
63
|
+
vpc: props.vpc,
|
|
64
|
+
handler,
|
|
65
|
+
runtime,
|
|
66
|
+
architecture: props.architecture ?? compute_js_1.COMPUTE_DEFAULTS.LAMBDA.ARCHITECTURE,
|
|
67
|
+
timeout: props.timeout,
|
|
68
|
+
memorySize: props.memorySize,
|
|
69
|
+
lambdaDescription: props.description,
|
|
70
|
+
roleDescription: props.roleDescription,
|
|
71
|
+
inlinePolicy: props.inlinePolicy || [],
|
|
72
|
+
enableFunctionUrl,
|
|
73
|
+
functionUrlAuthType,
|
|
74
|
+
functionUrlCors,
|
|
75
|
+
functionUrlInvokeMode,
|
|
76
|
+
scheduleExpression: props.scheduleExpression,
|
|
77
|
+
ephemeralStorageSize: props.ephemeralStorageSize,
|
|
78
|
+
secrets: props.secrets,
|
|
79
|
+
ssmSecretsPath: props.ssmSecretsPath,
|
|
80
|
+
secretsImport: props.secretsImport,
|
|
81
|
+
environment: props.environment,
|
|
82
|
+
appName: props.appName,
|
|
83
|
+
functionName: id
|
|
84
|
+
};
|
|
85
|
+
this.lambdaFunction = new lambda_1.LambdaFunction(scope, `${id}Lambda`, lambdaProps);
|
|
86
|
+
// CDK's Function.connections getter throws for non-VPC Lambdas, so only
|
|
87
|
+
// access it when a VPC is configured. Non-VPC Lambdas get an empty
|
|
88
|
+
// Connections object to satisfy the IConnectable interface.
|
|
89
|
+
this.connections = props.vpc
|
|
90
|
+
? this.lambdaFunction.connections
|
|
91
|
+
: new aws_ec2_1.Connections();
|
|
92
|
+
// Process connections using the unified connector interface
|
|
93
|
+
if (props.connections && props.connections.length > 0) {
|
|
94
|
+
if (!props.vpc) {
|
|
95
|
+
throw new Error(`Lambda '${id}' has connections configured but no VPC. ` +
|
|
96
|
+
"A VPC is required for security group connections.");
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
(0, connections_js_1.processConnections)(props.connections, this.lambdaFunction, // IGrantable (execution role)
|
|
100
|
+
this.lambdaFunction // IConnectable (security group)
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
throw new Error(`Failed to process connections for Lambda '${id}': ${error instanceof Error ? error.message : String(error)}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get a Lambda function by name.
|
|
110
|
+
* Since we only have one function, name is ignored.
|
|
111
|
+
*/
|
|
112
|
+
getFunction(_name) {
|
|
113
|
+
return this.lambdaFunction;
|
|
114
|
+
}
|
|
115
|
+
/** Get all Lambda functions. */
|
|
116
|
+
getAllFunctions() {
|
|
117
|
+
return [this.lambdaFunction];
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get the function URL for a Lambda function.
|
|
121
|
+
*/
|
|
122
|
+
getFunctionUrl(_name) {
|
|
123
|
+
return this.lambdaFunction.getFunctionUrl();
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Grant invoke permissions to a grantee.
|
|
127
|
+
*/
|
|
128
|
+
grantInvoke(grantee, _functionName) {
|
|
129
|
+
return this.lambdaFunction.grantInvoke(grantee);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get the security group for VPC-enabled Lambda functions.
|
|
133
|
+
* Returns undefined if the Lambda is not VPC-enabled.
|
|
134
|
+
*/
|
|
135
|
+
getSecurityGroup() {
|
|
136
|
+
const securityGroups = this.connections.securityGroups;
|
|
137
|
+
return securityGroups.length > 0 ? securityGroups[0] : undefined;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get the underlying Lambda function construct.
|
|
141
|
+
*/
|
|
142
|
+
getLambdaFunction() {
|
|
143
|
+
return this.lambdaFunction;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.LambdaCompute = LambdaCompute;
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZUxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvY29tcHV0ZUxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFzT0EsMERBc0JDO0FBNVBELHVEQVNnQztBQU1oQyxpREFJNkI7QUFDN0IsaURBQWlEO0FBR2pELDJDQUF1QztBQUl2QywrREFBZ0U7QUFFaEUsK0RBQW9FO0FBR3BFLDZDQUFnRDtBQUVoRCx1REFBdUQ7QUFDdkQscURBS2dDO0FBSjlCLDBHQUFBLFlBQVksT0FBQTtBQUNaLHdHQUFBLFVBQVUsT0FBQTtBQUNWLHdHQUFBLFVBQVUsT0FBQTtBQTRMWjs7O0dBR0c7QUFDSCxTQUFnQix1QkFBdUIsQ0FDckMsS0FBeUI7SUFFekIsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLFlBQVksb0JBQVUsQ0FBQyxFQUFFLENBQUM7WUFDakQsTUFBTSxJQUFJLEtBQUssQ0FDYixxRUFBcUUsQ0FDdEUsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLGlCQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7Z0JBQzNDLFdBQVcsRUFBRSw2QkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUzthQUM1QyxDQUFDO1lBQ0YsT0FBTyxFQUFFLG9CQUFPLENBQUMsVUFBVTtZQUMzQixPQUFPLEVBQUUsb0JBQU8sQ0FBQyxVQUFVO1NBQzVCLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTztRQUNMLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtRQUNoQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSw2QkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTztRQUN6RCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSw2QkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTztLQUMxRCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQWEsYUFBYyxTQUFRLHNCQUFTO0lBTTFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQU5ILGdCQUFXLEdBQUcsUUFBaUIsQ0FBQztRQVE5QyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVsRSxxRUFBcUU7UUFDckUsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQzVDLE1BQU0saUJBQWlCLEdBQ3JCLGlCQUFpQixLQUFLLFNBQVMsSUFBSSxpQkFBaUIsS0FBSyxLQUFLLENBQUM7UUFDakUsTUFBTSxtQkFBbUIsR0FDdkIsaUJBQWlCLElBQUksT0FBTyxpQkFBaUIsS0FBSyxRQUFRO1lBQ3hELENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRO1lBQzVCLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsTUFBTSxlQUFlLEdBQ25CLGlCQUFpQixJQUFJLE9BQU8saUJBQWlCLEtBQUssUUFBUTtZQUN4RCxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSTtZQUN4QixDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLE1BQU0scUJBQXFCLEdBQ3pCLGlCQUFpQixJQUFJLE9BQU8saUJBQWlCLEtBQUssUUFBUTtZQUN4RCxDQUFDLENBQUMsaUJBQWlCLENBQUMsVUFBVTtZQUM5QixDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWhCLE1BQU0sV0FBVyxHQUFHO1lBQ2xCLElBQUk7WUFDSixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxPQUFPO1lBQ1AsT0FBTztZQUNQLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLDZCQUFnQixDQUFDLE1BQU0sQ0FBQyxZQUFZO1lBQ3hFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDcEMsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUU7WUFDdEMsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YscUJBQXFCO1lBQ3JCLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7WUFDNUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLG9CQUFvQjtZQUNoRCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO1lBQ3BDLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtZQUNsQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLFlBQVksRUFBRSxFQUFFO1NBQ2pCLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksdUJBQWMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUU1RSx3RUFBd0U7UUFDeEUsbUVBQW1FO1FBQ25FLDREQUE0RDtRQUM1RCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxHQUFHO1lBQzFCLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVc7WUFDakMsQ0FBQyxDQUFDLElBQUkscUJBQVcsRUFBRSxDQUFDO1FBRXRCLDREQUE0RDtRQUM1RCxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUksS0FBSyxDQUNiLFdBQVcsRUFBRSwyQ0FBMkM7b0JBQ3RELG1EQUFtRCxDQUN0RCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksQ0FBQztnQkFDSCxJQUFBLG1DQUFrQixFQUNoQixLQUFLLENBQUMsV0FBVyxFQUNqQixJQUFJLENBQUMsY0FBYyxFQUFFLDhCQUE4QjtnQkFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQ0FBZ0M7aUJBQ3JELENBQUM7WUFDSixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUksS0FBSyxDQUNiLDZDQUE2QyxFQUFFLE1BQzdDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ3ZELEVBQUUsQ0FDSCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLEtBQWM7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsZUFBZTtRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLEtBQWM7UUFDM0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxPQUFtQixFQUFFLGFBQXNCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQjtRQUNkLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO1FBQ3ZELE9BQU8sY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFoSUQsc0NBZ0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29kZSxcbiAgUnVudGltZSxcbiAgSGFuZGxlcixcbiAgdHlwZSBBcmNoaXRlY3R1cmUsXG4gIHR5cGUgRnVuY3Rpb25VcmxBdXRoVHlwZSxcbiAgdHlwZSBGdW5jdGlvblVybENvcnNPcHRpb25zLFxuICB0eXBlIElGdW5jdGlvbixcbiAgdHlwZSBJbnZva2VNb2RlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQge1xuICB0eXBlIFBvbGljeVN0YXRlbWVudCxcbiAgdHlwZSBJR3JhbnRhYmxlLFxuICB0eXBlIEdyYW50XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBDb25uZWN0aW9ucyxcbiAgdHlwZSBJVnBjLFxuICB0eXBlIElTZWN1cml0eUdyb3VwXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3JcIjtcbmltcG9ydCB7IHR5cGUgUmVwb3NpdG9yeUltYWdlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgdHlwZSBJTGFtYmRhQ29tcHV0ZSB9IGZyb20gXCIuL2ludGVyZmFjZXMvY29tcHV0ZS5qc1wiO1xuaW1wb3J0IHsgdHlwZSBDb25uZWN0aW9uU3BlYyB9IGZyb20gXCIuL2ludGVyZmFjZXMvY29ubmVjdG9yLmpzXCI7XG5pbXBvcnQgeyBwcm9jZXNzQ29ubmVjdGlvbnMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29ubmVjdGlvbnMuanNcIjtcblxuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2xhbWJkYVwiO1xuaW1wb3J0IHsgdHlwZSBTZWNyZXRJbXBvcnQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9zZWNyZXRzXCI7XG5cbmltcG9ydCB7IENPTVBVVEVfREVGQVVMVFMgfSBmcm9tIFwiLi9jb21wdXRlLmpzXCI7XG5cbi8vIFJlLWV4cG9ydCBMYW1iZGEgdHlwZXMgZnJvbSBDREsgZm9yIHVzZXIgY29udmVuaWVuY2VcbmV4cG9ydCB7XG4gIEFyY2hpdGVjdHVyZSxcbiAgSHR0cE1ldGhvZCxcbiAgSW52b2tlTW9kZSxcbiAgdHlwZSBGdW5jdGlvblVybENvcnNPcHRpb25zXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5cbi8qKlxuICogTGFtYmRhIGZ1bmN0aW9uIFVSTCBjb25maWd1cmF0aW9uLlxuICogLSBPbWl0OiBkaXNhYmxlZCAoZGVmYXVsdClcbiAqIC0gYHt9YDogZW5hYmxlZCB3aXRoIElBTSBhdXRoXG4gKiAtIGB7IGF1dGhUeXBlOiBcIk5PTkVcIiwgY29yczogey4uLn0gfWA6IHB1YmxpYyB3aXRoIENPUlNcbiAqIC0gYGZhbHNlYDogZXhwbGljaXRseSBkaXNhYmxlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uVXJsQ29uZmlnIHtcbiAgLyoqIEF1dGhlbnRpY2F0aW9uIHR5cGUuIERlZmF1bHQ6IEFXU19JQU0gKi9cbiAgYXV0aFR5cGU/OiBGdW5jdGlvblVybEF1dGhUeXBlO1xuICAvKiogQ09SUyBjb25maWd1cmF0aW9uICovXG4gIGNvcnM/OiBGdW5jdGlvblVybENvcnNPcHRpb25zO1xuICAvKiogSW52b2tlIG1vZGUuIFVzZSBSRVNQT05TRV9TVFJFQU0gZm9yIExhbWJkYSBzdHJlYW1pbmcuIERlZmF1bHQ6IEJVRkZFUkVEICovXG4gIGludm9rZU1vZGU/OiBJbnZva2VNb2RlO1xufVxuXG4vKipcbiAqIEJhc2UgTGFtYmRhIGNvbmZpZ3VyYXRpb24gc2hhcmVkIGJ5IGJvdGggY29udGFpbmVyIGFuZCBjb2RlIGRlcGxveW1lbnRzLlxuICovXG5pbnRlcmZhY2UgQmFzZUxhbWJkYVByb3BzIHtcbiAgdHlwZTogXCJsYW1iZGFcIjtcbiAgdnBjPzogSVZwYztcbiAgLyoqIFRpbWVvdXQgaW4gc2Vjb25kcy4gRGVmYXVsdDogMyAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICAvKiogTWVtb3J5IHNpemUgaW4gTUIuIERlZmF1bHQ6IDEyOCAqL1xuICBtZW1vcnlTaXplPzogbnVtYmVyO1xuICBlcGhlbWVyYWxTdG9yYWdlU2l6ZT86IG51bWJlcjtcbiAgLyoqIENQVSBhcmNoaXRlY3R1cmUuIERlZmF1bHQ6IHg4Nl82NC4gVXNlIEFyY2hpdGVjdHVyZS5BUk1fNjQgZm9yIEdyYXZpdG9uMi4gKi9cbiAgYXJjaGl0ZWN0dXJlPzogQXJjaGl0ZWN0dXJlO1xuICAvKiogTGFtYmRhIGZ1bmN0aW9uIGRlc2NyaXB0aW9uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogSUFNIHJvbGUgZGVzY3JpcHRpb24gKi9cbiAgcm9sZURlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8vIElubGluZSBwb2xpY2llcyAtIHJvdXRlZCB0byBleGVjdXRpb24gcm9sZSBmb3IgRUNTLCB0YXNrIHJvbGUgZm9yIExhbWJkYVxuICAvKiogSW5saW5lIElBTSBwb2xpY3kgc3RhdGVtZW50cyAqL1xuICBpbmxpbmVQb2xpY3k/OiBQb2xpY3lTdGF0ZW1lbnRbXTtcbiAgLyoqXG4gICAqIEZ1bmN0aW9uIFVSTCBjb25maWd1cmF0aW9uLlxuICAgKiAtIE9taXQ6IGRpc2FibGVkIChkZWZhdWx0KVxuICAgKiAtIGB7fWA6IGVuYWJsZWQgd2l0aCBJQU0gYXV0aFxuICAgKiAtIGB7IGF1dGhUeXBlOiBcIk5PTkVcIiB9YDogcHVibGljIGFjY2Vzc1xuICAgKiAtIGBmYWxzZWA6IGV4cGxpY2l0bHkgZGlzYWJsZWRcbiAgICovXG4gIGZ1bmN0aW9uVXJsPzogRnVuY3Rpb25VcmxDb25maWcgfCBmYWxzZTtcbiAgLyoqIEVudmlyb25tZW50IHZhcmlhYmxlcyAqL1xuICBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFNlY3JldHMgZnJvbSBBV1MgU1NNIFBhcmFtZXRlciBTdG9yZS5cbiAgICogQXJyYXkgb2Ygc2VjcmV0IG5hbWVzIHRoYXQgd2lsbCBiZSBmZXRjaGVkIGZyb20gdGhlIExhbWJkYSdzIFNTTSBuYW1lc3BhY2UuXG4gICAqIFRoZSBuYW1lc3BhY2UgcGF0aCBpcyBhdXRvLWRldGVybWluZWQgYXM6IC88YXBwTmFtZT4vbGFtYmRhLzxmdW5jdGlvbk5hbWU+XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHNlY3JldHM6IFtcIkFQSV9LRVlcIiwgXCJTVFJJUEVfU0VDUkVUXCJdXG4gICAqL1xuICBzZWNyZXRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNTTSBQYXJhbWV0ZXIgU3RvcmUgcGF0aCBmb3Igc2VjcmV0cy5cbiAgICogSWYgc2VjcmV0cyBhcmUgZGVmaW5lZCwgdGhpcyBwYXRoIGlzIHVzZWQgYXMgdGhlIGJhc2UgcGF0aC5cbiAgICogSWYgbm90IHNwZWNpZmllZCwgdXNlczogLzxhcHBOYW1lPi9sYW1iZGEvPGZ1bmN0aW9uTmFtZT5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogc3NtU2VjcmV0c1BhdGg6IFwiL215YXBwL2N1c3RvbS9wYXRoXCJcbiAgICovXG4gIHNzbVNlY3JldHNQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZWNyZXRzIGltcG9ydGVkIGZyb20gb3RoZXIgQ0RLIHJlc291cmNlcyAoQVdTIFNlY3JldHMgTWFuYWdlcikuXG4gICAqIFVzZWQgZm9yIENESy1tYW5hZ2VkIHNlY3JldHMgbGlrZSBkYXRhYmFzZSBjcmVkZW50aWFscy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogc2VjcmV0c0ltcG9ydDoge1xuICAgKiAgIERBVEFCQVNFX1VTRVJOQU1FOiBkYXRhYmFzZS5nZXRDcmVkZW50aWFscygpLmdldEltcG9ydChcInVzZXJuYW1lXCIpLFxuICAgKiAgIERBVEFCQVNFX1BBU1NXT1JEOiBkYXRhYmFzZS5nZXRDcmVkZW50aWFscygpLmdldEltcG9ydChcInBhc3N3b3JkXCIpXG4gICAqIH1cbiAgICovXG4gIHNlY3JldHNJbXBvcnQ/OiBSZWNvcmQ8c3RyaW5nLCBTZWNyZXRJbXBvcnQ+O1xuXG4gIC8qKlxuICAgKiBBcHBsaWNhdGlvbiBuYW1lIGZvciBTU00gc2VjcmV0cyBwYXRoIGRlcml2YXRpb24uXG4gICAqIEF1dG8tZGVyaXZlZCBmcm9tIEFwcCBpbnN0YW5jZSB3aGVuIHVzaW5nIENvbXB1dGVGYWN0b3J5LlxuICAgKiBPbmx5IHNwZWNpZnkgZm9yIGFkdmFuY2VkIHVzZSBjYXNlcy5cbiAgICovXG4gIGFwcE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlc291cmNlcyB0aGlzIExhbWJkYSBuZWVkcyB0byBjb25uZWN0IHRvIChlLmcuLCBkYXRhYmFzZXMsIFMzIGJ1Y2tldHMsIFNRUyBxdWV1ZXMpLlxuICAgKiBDcmVhdGVzIHNlY3VyaXR5IGdyb3VwIHJ1bGVzIGZvciBJQ29ubmVjdGFibGUgcmVzb3VyY2VzIGFuZCBJQU0gZ3JhbnRzIGZvciBJQU0gcmVzb3VyY2VzLlxuICAgKlxuICAgKiBTdXBwb3J0czpcbiAgICogLSBJQ29ubmVjdGFibGU6IFNlY3VyaXR5IGdyb3VwIHJlc291cmNlcyAoUkRTLCBFQ1MsIGV0Yy4pXG4gICAqIC0gSVN0b3JhZ2VDb25uZWN0b3I6IFMzIGJ1Y2tldHMgKElBTSBncmFudHMpXG4gICAqIC0gSUR5bmFtb0RCQ29ubmVjdG9yOiBEeW5hbW9EQiB0YWJsZXMgKElBTSBncmFudHMpXG4gICAqIC0gSVF1ZXVlQ29ubmVjdG9yOiBTUVMgcXVldWVzIChJQU0gZ3JhbnRzKVxuICAgKiAtIENvbm5lY3Rpb25Db25maWc6IEV4cGxpY2l0IGFjY2VzcyBsZXZlbCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbm5lY3Rpb25zOiBbXG4gICAqICAgZGF0YWJhc2UsXG4gICAqICAgeyByZXNvdXJjZTogcXVldWUsIGFjY2VzczogXCJzZW5kXCIgfVxuICAgKiBdXG4gICAqL1xuICBjb25uZWN0aW9ucz86IENvbm5lY3Rpb25TcGVjW107XG5cbiAgLyoqXG4gICAqIEV2ZW50QnJpZGdlIHNjaGVkdWxlIGV4cHJlc3Npb24gZm9yIHNjaGVkdWxlZCBMYW1iZGEgaW52b2NhdGlvbnMuXG4gICAqIFVzZXMgY3JvbiBvciByYXRlIHN5bnRheDogXCJyYXRlKDEgaG91cilcIiBvciBcImNyb24oMCAxMiAqICogPyAqKVwiLlxuICAgKi9cbiAgc2NoZWR1bGVFeHByZXNzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnRhaW5lci1iYXNlZCBMYW1iZGEgdXNpbmcgRUNSIGltYWdlLlxuICpcbiAqIFVzZXMgRG9ja2VyIGltYWdlIGZyb20gRUNSIHJlcG9zaXRvcnkuIEhhbmRsZXIgYW5kIHJ1bnRpbWUgYXJlXG4gKiBhdXRvbWF0aWNhbGx5IHNldCB0byBGUk9NX0lNQUdFLlxuICpcbiAqIEBleGFtcGxlXG4gKiBhcHAuYWRkQ29tcHV0ZShDb21wdXRlRmFjdG9yeS5idWlsZChcIkltYWdlTGFtYmRhXCIsIHtcbiAqICAgdHlwZTogXCJsYW1iZGFcIixcbiAqICAgZGVwbG95bWVudDogXCJjb250YWluZXJcIixcbiAqICAgZWNyUmVwb3NpdG9yeTogYXBwLmdldERlZmF1bHRDb250YWluZXJSZWdpc3RyeSgpXG4gKiB9KSk7XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyTGFtYmRhUHJvcHMgZXh0ZW5kcyBCYXNlTGFtYmRhUHJvcHMge1xuICAvKiogQ29udGFpbmVyLWJhc2VkIGRlcGxveW1lbnQgdXNpbmcgRUNSIGltYWdlICovXG4gIGRlcGxveW1lbnQ6IFwiY29udGFpbmVyXCI7XG4gIC8qKiBFQ1IgcmVwb3NpdG9yeSBjb250YWluaW5nIHRoZSBMYW1iZGEgY29udGFpbmVyIGltYWdlICovXG4gIGVjclJlcG9zaXRvcnk6IFJlcG9zaXRvcnkgfCBSZXBvc2l0b3J5SW1hZ2U7XG59XG5cbi8qKlxuICogQ29kZS1iYXNlZCBMYW1iZGEgdXNpbmcgaW5saW5lIGNvZGUgb3IgUzMuXG4gKlxuICogVXNlcyB0cmFkaXRpb25hbCBMYW1iZGEgZGVwbG95bWVudCB3aXRoIGNvZGUsIGhhbmRsZXIsIGFuZCBydW50aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBhcHAuYWRkQ29tcHV0ZShDb21wdXRlRmFjdG9yeS5idWlsZChcIkNvZGVMYW1iZGFcIiwge1xuICogICB0eXBlOiBcImxhbWJkYVwiLFxuICogICBkZXBsb3ltZW50OiBcImNvZGVcIixcbiAqICAgY29kZTogQ29kZS5mcm9tQXNzZXQoXCIuL2xhbWJkYVwiKSxcbiAqICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gKiAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIwX1hcbiAqIH0pKTtcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlTGFtYmRhUHJvcHMgZXh0ZW5kcyBCYXNlTGFtYmRhUHJvcHMge1xuICAvKiogQ29kZS1iYXNlZCBkZXBsb3ltZW50ICovXG4gIGRlcGxveW1lbnQ6IFwiY29kZVwiO1xuICAvKiogTGFtYmRhIGNvZGUgKGZyb20gYXNzZXQsIFMzLCBvciBpbmxpbmUpICovXG4gIGNvZGU6IENvZGU7XG4gIC8qKiBIYW5kbGVyIGZ1bmN0aW9uLiBEZWZhdWx0OiBcImluZGV4LmhhbmRsZXJcIiAqL1xuICBoYW5kbGVyPzogc3RyaW5nO1xuICAvKiogTGFtYmRhIHJ1bnRpbWUuIERlZmF1bHQ6IE5PREVKU18yMl9YICovXG4gIHJ1bnRpbWU/OiBSdW50aW1lO1xufVxuXG4vKipcbiAqIExhbWJkYSBjb21wdXRlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiBlbnN1cmluZyB0eXBlLXNhZmUgTGFtYmRhIGNvbmZpZ3VyYXRpb246XG4gKiAtIGBkZXBsb3ltZW50OiBcImNvbnRhaW5lclwiYCByZXF1aXJlcyBgZWNyUmVwb3NpdG9yeWBcbiAqIC0gYGRlcGxveW1lbnQ6IFwiY29kZVwiYCByZXF1aXJlcyBgY29kZWAgYW5kIGFsbG93cyBgaGFuZGxlcmAvYHJ1bnRpbWVgXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnRhaW5lci1iYXNlZCBMYW1iZGFcbiAqIHsgdHlwZTogXCJsYW1iZGFcIiwgZGVwbG95bWVudDogXCJjb250YWluZXJcIiwgZWNyUmVwb3NpdG9yeTogZWNyIH1cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29kZS1iYXNlZCBMYW1iZGFcbiAqIHsgdHlwZTogXCJsYW1iZGFcIiwgZGVwbG95bWVudDogXCJjb2RlXCIsIGNvZGU6IENvZGUuZnJvbUFzc2V0KFwiLi9sYW1iZGFcIikgfVxuICovXG5leHBvcnQgdHlwZSBMYW1iZGFDb21wdXRlUHJvcHMgPSBDb250YWluZXJMYW1iZGFQcm9wcyB8IENvZGVMYW1iZGFQcm9wcztcblxuLyoqXG4gKiBSZXNvbHZlZCBMYW1iZGEgZGVwbG95bWVudCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkTGFtYmRhRGVwbG95bWVudCB7XG4gIGNvZGU6IENvZGU7XG4gIGhhbmRsZXI6IHN0cmluZztcbiAgcnVudGltZTogUnVudGltZTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIExhbWJkYSBkZXBsb3ltZW50IGNvbmZpZ3VyYXRpb24gZnJvbSBwcm9wcy5cbiAqIEhhbmRsZXMgY29udGFpbmVyIHZzIGNvZGUgZGVwbG95bWVudCB0eXBlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVMYW1iZGFEZXBsb3ltZW50KFxuICBwcm9wczogTGFtYmRhQ29tcHV0ZVByb3BzXG4pOiBSZXNvbHZlZExhbWJkYURlcGxveW1lbnQge1xuICBpZiAocHJvcHMuZGVwbG95bWVudCA9PT0gXCJjb250YWluZXJcIikge1xuICAgIGlmICghKHByb3BzLmVjclJlcG9zaXRvcnkgaW5zdGFuY2VvZiBSZXBvc2l0b3J5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImVjclJlcG9zaXRvcnkgbXVzdCBiZSBhIFJlcG9zaXRvcnkgaW5zdGFuY2UgZm9yIExhbWJkYSBjb21wdXRlIHR5cGVcIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IENvZGUuZnJvbUVjckltYWdlKHByb3BzLmVjclJlcG9zaXRvcnksIHtcbiAgICAgICAgdGFnT3JEaWdlc3Q6IENPTVBVVEVfREVGQVVMVFMuRUNTLklNQUdFX1RBR1xuICAgICAgfSksXG4gICAgICBoYW5kbGVyOiBIYW5kbGVyLkZST01fSU1BR0UsXG4gICAgICBydW50aW1lOiBSdW50aW1lLkZST01fSU1BR0VcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgY29kZTogcHJvcHMuY29kZSxcbiAgICBoYW5kbGVyOiBwcm9wcy5oYW5kbGVyIHx8IENPTVBVVEVfREVGQVVMVFMuTEFNQkRBLkhBTkRMRVIsXG4gICAgcnVudGltZTogcHJvcHMucnVudGltZSB8fCBDT01QVVRFX0RFRkFVTFRTLkxBTUJEQS5SVU5USU1FXG4gIH07XG59XG5cbi8qKlxuICogTGFtYmRhIGNvbXB1dGUgd3JhcHBlciBpbXBsZW1lbnRpbmcgSUxhbWJkYUNvbXB1dGUuXG4gKiBQcm92aWRlcyB0eXBlLXNhZmUgYWNjZXNzIHRvIExhbWJkYS1zcGVjaWZpYyByZXNvdXJjZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW1iZGFDb21wdXRlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUxhbWJkYUNvbXB1dGUge1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcHV0ZVR5cGUgPSBcImxhbWJkYVwiIGFzIGNvbnN0O1xuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IExhbWJkYUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBMYW1iZGFDb21wdXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgeyBjb2RlLCBoYW5kbGVyLCBydW50aW1lIH0gPSByZXNvbHZlTGFtYmRhRGVwbG95bWVudChwcm9wcyk7XG5cbiAgICAvLyBDb252ZXJ0IHByZXNlbmNlLWJhc2VkIGZ1bmN0aW9uVXJsIGNvbmZpZyB0byBsZWdhY3kgYm9vbGVhbiBmb3JtYXRcbiAgICBjb25zdCBmdW5jdGlvblVybENvbmZpZyA9IHByb3BzLmZ1bmN0aW9uVXJsO1xuICAgIGNvbnN0IGVuYWJsZUZ1bmN0aW9uVXJsID1cbiAgICAgIGZ1bmN0aW9uVXJsQ29uZmlnICE9PSB1bmRlZmluZWQgJiYgZnVuY3Rpb25VcmxDb25maWcgIT09IGZhbHNlO1xuICAgIGNvbnN0IGZ1bmN0aW9uVXJsQXV0aFR5cGUgPVxuICAgICAgZW5hYmxlRnVuY3Rpb25VcmwgJiYgdHlwZW9mIGZ1bmN0aW9uVXJsQ29uZmlnID09PSBcIm9iamVjdFwiXG4gICAgICAgID8gZnVuY3Rpb25VcmxDb25maWcuYXV0aFR5cGVcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZnVuY3Rpb25VcmxDb3JzID1cbiAgICAgIGVuYWJsZUZ1bmN0aW9uVXJsICYmIHR5cGVvZiBmdW5jdGlvblVybENvbmZpZyA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IGZ1bmN0aW9uVXJsQ29uZmlnLmNvcnNcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZnVuY3Rpb25VcmxJbnZva2VNb2RlID1cbiAgICAgIGVuYWJsZUZ1bmN0aW9uVXJsICYmIHR5cGVvZiBmdW5jdGlvblVybENvbmZpZyA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IGZ1bmN0aW9uVXJsQ29uZmlnLmludm9rZU1vZGVcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBsYW1iZGFQcm9wcyA9IHtcbiAgICAgIGNvZGUsXG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIGhhbmRsZXIsXG4gICAgICBydW50aW1lLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBwcm9wcy5hcmNoaXRlY3R1cmUgPz8gQ09NUFVURV9ERUZBVUxUUy5MQU1CREEuQVJDSElURUNUVVJFLFxuICAgICAgdGltZW91dDogcHJvcHMudGltZW91dCxcbiAgICAgIG1lbW9yeVNpemU6IHByb3BzLm1lbW9yeVNpemUsXG4gICAgICBsYW1iZGFEZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICByb2xlRGVzY3JpcHRpb246IHByb3BzLnJvbGVEZXNjcmlwdGlvbixcbiAgICAgIGlubGluZVBvbGljeTogcHJvcHMuaW5saW5lUG9saWN5IHx8IFtdLFxuICAgICAgZW5hYmxlRnVuY3Rpb25VcmwsXG4gICAgICBmdW5jdGlvblVybEF1dGhUeXBlLFxuICAgICAgZnVuY3Rpb25VcmxDb3JzLFxuICAgICAgZnVuY3Rpb25VcmxJbnZva2VNb2RlLFxuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBwcm9wcy5zY2hlZHVsZUV4cHJlc3Npb24sXG4gICAgICBlcGhlbWVyYWxTdG9yYWdlU2l6ZTogcHJvcHMuZXBoZW1lcmFsU3RvcmFnZVNpemUsXG4gICAgICBzZWNyZXRzOiBwcm9wcy5zZWNyZXRzLFxuICAgICAgc3NtU2VjcmV0c1BhdGg6IHByb3BzLnNzbVNlY3JldHNQYXRoLFxuICAgICAgc2VjcmV0c0ltcG9ydDogcHJvcHMuc2VjcmV0c0ltcG9ydCxcbiAgICAgIGVudmlyb25tZW50OiBwcm9wcy5lbnZpcm9ubWVudCxcbiAgICAgIGFwcE5hbWU6IHByb3BzLmFwcE5hbWUsXG4gICAgICBmdW5jdGlvbk5hbWU6IGlkXG4gICAgfTtcblxuICAgIHRoaXMubGFtYmRhRnVuY3Rpb24gPSBuZXcgTGFtYmRhRnVuY3Rpb24oc2NvcGUsIGAke2lkfUxhbWJkYWAsIGxhbWJkYVByb3BzKTtcblxuICAgIC8vIENESydzIEZ1bmN0aW9uLmNvbm5lY3Rpb25zIGdldHRlciB0aHJvd3MgZm9yIG5vbi1WUEMgTGFtYmRhcywgc28gb25seVxuICAgIC8vIGFjY2VzcyBpdCB3aGVuIGEgVlBDIGlzIGNvbmZpZ3VyZWQuIE5vbi1WUEMgTGFtYmRhcyBnZXQgYW4gZW1wdHlcbiAgICAvLyBDb25uZWN0aW9ucyBvYmplY3QgdG8gc2F0aXNmeSB0aGUgSUNvbm5lY3RhYmxlIGludGVyZmFjZS5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gcHJvcHMudnBjXG4gICAgICA/IHRoaXMubGFtYmRhRnVuY3Rpb24uY29ubmVjdGlvbnNcbiAgICAgIDogbmV3IENvbm5lY3Rpb25zKCk7XG5cbiAgICAvLyBQcm9jZXNzIGNvbm5lY3Rpb25zIHVzaW5nIHRoZSB1bmlmaWVkIGNvbm5lY3RvciBpbnRlcmZhY2VcbiAgICBpZiAocHJvcHMuY29ubmVjdGlvbnMgJiYgcHJvcHMuY29ubmVjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFwcm9wcy52cGMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBMYW1iZGEgJyR7aWR9JyBoYXMgY29ubmVjdGlvbnMgY29uZmlndXJlZCBidXQgbm8gVlBDLiBgICtcbiAgICAgICAgICAgIFwiQSBWUEMgaXMgcmVxdWlyZWQgZm9yIHNlY3VyaXR5IGdyb3VwIGNvbm5lY3Rpb25zLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBwcm9jZXNzQ29ubmVjdGlvbnMoXG4gICAgICAgICAgcHJvcHMuY29ubmVjdGlvbnMsXG4gICAgICAgICAgdGhpcy5sYW1iZGFGdW5jdGlvbiwgLy8gSUdyYW50YWJsZSAoZXhlY3V0aW9uIHJvbGUpXG4gICAgICAgICAgdGhpcy5sYW1iZGFGdW5jdGlvbiAvLyBJQ29ubmVjdGFibGUgKHNlY3VyaXR5IGdyb3VwKVxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgdG8gcHJvY2VzcyBjb25uZWN0aW9ucyBmb3IgTGFtYmRhICcke2lkfSc6ICR7XG4gICAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICAgICAgICB9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBMYW1iZGEgZnVuY3Rpb24gYnkgbmFtZS5cbiAgICogU2luY2Ugd2Ugb25seSBoYXZlIG9uZSBmdW5jdGlvbiwgbmFtZSBpcyBpZ25vcmVkLlxuICAgKi9cbiAgZ2V0RnVuY3Rpb24oX25hbWU/OiBzdHJpbmcpOiBJRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxhbWJkYUZ1bmN0aW9uO1xuICB9XG5cbiAgLyoqIEdldCBhbGwgTGFtYmRhIGZ1bmN0aW9ucy4gKi9cbiAgZ2V0QWxsRnVuY3Rpb25zKCk6IElGdW5jdGlvbltdIHtcbiAgICByZXR1cm4gW3RoaXMubGFtYmRhRnVuY3Rpb25dO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVuY3Rpb24gVVJMIGZvciBhIExhbWJkYSBmdW5jdGlvbi5cbiAgICovXG4gIGdldEZ1bmN0aW9uVXJsKF9uYW1lPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5sYW1iZGFGdW5jdGlvbi5nZXRGdW5jdGlvblVybCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IGludm9rZSBwZXJtaXNzaW9ucyB0byBhIGdyYW50ZWUuXG4gICAqL1xuICBncmFudEludm9rZShncmFudGVlOiBJR3JhbnRhYmxlLCBfZnVuY3Rpb25OYW1lPzogc3RyaW5nKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmxhbWJkYUZ1bmN0aW9uLmdyYW50SW52b2tlKGdyYW50ZWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2VjdXJpdHkgZ3JvdXAgZm9yIFZQQy1lbmFibGVkIExhbWJkYSBmdW5jdGlvbnMuXG4gICAqIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBMYW1iZGEgaXMgbm90IFZQQy1lbmFibGVkLlxuICAgKi9cbiAgZ2V0U2VjdXJpdHlHcm91cCgpOiBJU2VjdXJpdHlHcm91cCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cHMgPSB0aGlzLmNvbm5lY3Rpb25zLnNlY3VyaXR5R3JvdXBzO1xuICAgIHJldHVybiBzZWN1cml0eUdyb3Vwcy5sZW5ndGggPiAwID8gc2VjdXJpdHlHcm91cHNbMF0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1bmRlcmx5aW5nIExhbWJkYSBmdW5jdGlvbiBjb25zdHJ1Y3QuXG4gICAqL1xuICBnZXRMYW1iZGFGdW5jdGlvbigpOiBMYW1iZGFGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubGFtYmRhRnVuY3Rpb247XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import * as route53 from "aws-cdk-lib/aws-route53";
|
|
3
|
+
import type { DomainDelegatedProps } from "./interfaces/domain";
|
|
4
|
+
export declare class DomainDelegation extends Construct {
|
|
5
|
+
readonly hostedZoneId: string;
|
|
6
|
+
readonly hostedZone: route53.HostedZone;
|
|
7
|
+
constructor(scope: Construct, id: string, props: DomainDelegatedProps);
|
|
8
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DomainDelegation = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
const route53 = require("aws-cdk-lib/aws-route53");
|
|
7
|
+
const iam_1 = require("../../resources/aws/iam");
|
|
8
|
+
const capitaliseString_1 = require("../../utils/capitaliseString");
|
|
9
|
+
const domainCertificate_1 = require("../../resources/aws/networking/domainCertificate");
|
|
10
|
+
const domainTypes_1 = require("../../utils/domainTypes");
|
|
11
|
+
class DomainDelegation extends constructs_1.Construct {
|
|
12
|
+
constructor(scope, id, props) {
|
|
13
|
+
super(scope, id);
|
|
14
|
+
const parentFirstLabel = props.parentZoneName.split(".")[0] ?? "default";
|
|
15
|
+
const delegationRoleArn = aws_cdk_lib_1.Fn.importValue(`${parentFirstLabel}DelegateHostedZoneRoleArn`);
|
|
16
|
+
const hostedZoneDelegationRole = iam_1.Role.fromRoleArn(this, "HostedZoneDelegationRole", delegationRoleArn);
|
|
17
|
+
const safeZone = (0, capitaliseString_1.getSafeZoneName)(props.zoneName);
|
|
18
|
+
this.hostedZone = new route53.HostedZone(this, `${safeZone}HostedZone`, {
|
|
19
|
+
zoneName: props.zoneName
|
|
20
|
+
});
|
|
21
|
+
this.hostedZoneId = this.hostedZone.hostedZoneId;
|
|
22
|
+
new route53.CrossAccountZoneDelegationRecord(this, `${safeZone}DelegationRecord`, {
|
|
23
|
+
delegationRole: hostedZoneDelegationRole,
|
|
24
|
+
delegatedZone: this.hostedZone,
|
|
25
|
+
parentHostedZoneName: props.parentZoneName
|
|
26
|
+
});
|
|
27
|
+
const safeKey = (0, capitaliseString_1.toPascalCase)(safeZone);
|
|
28
|
+
const exports = (0, domainTypes_1.getDomainExportNames)(props.zoneName);
|
|
29
|
+
new aws_cdk_lib_1.CfnOutput(this, `${safeKey}HostedZoneId`, {
|
|
30
|
+
key: `${safeKey}HostedZoneId`,
|
|
31
|
+
value: this.hostedZoneId,
|
|
32
|
+
exportName: exports.hostedZoneId
|
|
33
|
+
});
|
|
34
|
+
new aws_cdk_lib_1.CfnOutput(this, `${safeKey}Nameservers`, {
|
|
35
|
+
key: `${safeKey}Nameservers`,
|
|
36
|
+
value: aws_cdk_lib_1.Fn.join(",", this.hostedZone.hostedZoneNameServers ?? [])
|
|
37
|
+
});
|
|
38
|
+
if (props.certificates) {
|
|
39
|
+
props.certificates.forEach((cert, index) => {
|
|
40
|
+
const safeCertName = (0, capitaliseString_1.toPascalCase)(cert.domainName.split(".").join(""));
|
|
41
|
+
new domainCertificate_1.DomainCertificate(this, `${safeKey}${safeCertName}Cert${index}`, {
|
|
42
|
+
domainName: cert.domainName,
|
|
43
|
+
subjectAlternativeNames: cert.subjectAlternativeNames,
|
|
44
|
+
hostedZone: this.hostedZone
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
if (props.records) {
|
|
49
|
+
(0, domainTypes_1.addDnsRecords)(this, this.hostedZone, props.zoneName, props.records);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.DomainDelegation = DomainDelegation;
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluRGVsZWdhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvZG9tYWluRGVsZWdhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQTRDO0FBQzVDLG1EQUFtRDtBQUNuRCxpREFBK0M7QUFDL0MsbUVBQTZFO0FBQzdFLHdGQUFxRjtBQUVyRix5REFBOEU7QUFFOUUsTUFBYSxnQkFBaUIsU0FBUSxzQkFBUztJQUk3QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDekUsTUFBTSxpQkFBaUIsR0FBRyxnQkFBRSxDQUFDLFdBQVcsQ0FDdEMsR0FBRyxnQkFBZ0IsMkJBQTJCLENBQy9DLENBQUM7UUFFRixNQUFNLHdCQUF3QixHQUFHLFVBQUksQ0FBQyxXQUFXLENBQy9DLElBQUksRUFDSiwwQkFBMEIsRUFDMUIsaUJBQWlCLENBQ2xCLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxJQUFBLGtDQUFlLEVBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLFFBQVEsWUFBWSxFQUFFO1lBQ3RFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1FBRWpELElBQUksT0FBTyxDQUFDLGdDQUFnQyxDQUMxQyxJQUFJLEVBQ0osR0FBRyxRQUFRLGtCQUFrQixFQUM3QjtZQUNFLGNBQWMsRUFBRSx3QkFBd0I7WUFDeEMsYUFBYSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzlCLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxjQUFjO1NBQzNDLENBQ0YsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLElBQUEsK0JBQVksRUFBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFBLGtDQUFvQixFQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVyRCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsT0FBTyxjQUFjLEVBQUU7WUFDNUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxjQUFjO1lBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWTtZQUN4QixVQUFVLEVBQUUsT0FBTyxDQUFDLFlBQVk7U0FDakMsQ0FBQyxDQUFDO1FBRUgsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sYUFBYSxFQUFFO1lBQzNDLEdBQUcsRUFBRSxHQUFHLE9BQU8sYUFBYTtZQUM1QixLQUFLLEVBQUUsZ0JBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLElBQUksRUFBRSxDQUFDO1NBQ2pFLENBQUMsQ0FBQztRQUVILElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUN6QyxNQUFNLFlBQVksR0FBRyxJQUFBLCtCQUFZLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUcsT0FBTyxHQUFHLFlBQVksT0FBTyxLQUFLLEVBQUUsRUFBRTtvQkFDbkUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUMzQix1QkFBdUIsRUFBRSxJQUFJLENBQUMsdUJBQXVCO29CQUNyRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7aUJBQzVCLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUEsMkJBQWEsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBakVELDRDQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDZm5PdXRwdXQsIEZuIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyByb3V0ZTUzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgUm9sZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbVwiO1xuaW1wb3J0IHsgdG9QYXNjYWxDYXNlLCBnZXRTYWZlWm9uZU5hbWUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY2FwaXRhbGlzZVN0cmluZ1wiO1xuaW1wb3J0IHsgRG9tYWluQ2VydGlmaWNhdGUgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2RvbWFpbkNlcnRpZmljYXRlXCI7XG5pbXBvcnQgdHlwZSB7IERvbWFpbkRlbGVnYXRlZFByb3BzIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9kb21haW5cIjtcbmltcG9ydCB7IGdldERvbWFpbkV4cG9ydE5hbWVzLCBhZGREbnNSZWNvcmRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2RvbWFpblR5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBEb21haW5EZWxlZ2F0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGhvc3RlZFpvbmVJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgaG9zdGVkWm9uZTogcm91dGU1My5Ib3N0ZWRab25lO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEb21haW5EZWxlZ2F0ZWRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBwYXJlbnRGaXJzdExhYmVsID0gcHJvcHMucGFyZW50Wm9uZU5hbWUuc3BsaXQoXCIuXCIpWzBdID8/IFwiZGVmYXVsdFwiO1xuICAgIGNvbnN0IGRlbGVnYXRpb25Sb2xlQXJuID0gRm4uaW1wb3J0VmFsdWUoXG4gICAgICBgJHtwYXJlbnRGaXJzdExhYmVsfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVBcm5gXG4gICAgKTtcblxuICAgIGNvbnN0IGhvc3RlZFpvbmVEZWxlZ2F0aW9uUm9sZSA9IFJvbGUuZnJvbVJvbGVBcm4oXG4gICAgICB0aGlzLFxuICAgICAgXCJIb3N0ZWRab25lRGVsZWdhdGlvblJvbGVcIixcbiAgICAgIGRlbGVnYXRpb25Sb2xlQXJuXG4gICAgKTtcblxuICAgIGNvbnN0IHNhZmVab25lID0gZ2V0U2FmZVpvbmVOYW1lKHByb3BzLnpvbmVOYW1lKTtcblxuICAgIHRoaXMuaG9zdGVkWm9uZSA9IG5ldyByb3V0ZTUzLkhvc3RlZFpvbmUodGhpcywgYCR7c2FmZVpvbmV9SG9zdGVkWm9uZWAsIHtcbiAgICAgIHpvbmVOYW1lOiBwcm9wcy56b25lTmFtZVxuICAgIH0pO1xuXG4gICAgdGhpcy5ob3N0ZWRab25lSWQgPSB0aGlzLmhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkO1xuXG4gICAgbmV3IHJvdXRlNTMuQ3Jvc3NBY2NvdW50Wm9uZURlbGVnYXRpb25SZWNvcmQoXG4gICAgICB0aGlzLFxuICAgICAgYCR7c2FmZVpvbmV9RGVsZWdhdGlvblJlY29yZGAsXG4gICAgICB7XG4gICAgICAgIGRlbGVnYXRpb25Sb2xlOiBob3N0ZWRab25lRGVsZWdhdGlvblJvbGUsXG4gICAgICAgIGRlbGVnYXRlZFpvbmU6IHRoaXMuaG9zdGVkWm9uZSxcbiAgICAgICAgcGFyZW50SG9zdGVkWm9uZU5hbWU6IHByb3BzLnBhcmVudFpvbmVOYW1lXG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHNhZmVLZXkgPSB0b1Bhc2NhbENhc2Uoc2FmZVpvbmUpO1xuICAgIGNvbnN0IGV4cG9ydHMgPSBnZXREb21haW5FeHBvcnROYW1lcyhwcm9wcy56b25lTmFtZSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3NhZmVLZXl9SG9zdGVkWm9uZUlkYCwge1xuICAgICAga2V5OiBgJHtzYWZlS2V5fUhvc3RlZFpvbmVJZGAsXG4gICAgICB2YWx1ZTogdGhpcy5ob3N0ZWRab25lSWQsXG4gICAgICBleHBvcnROYW1lOiBleHBvcnRzLmhvc3RlZFpvbmVJZFxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtzYWZlS2V5fU5hbWVzZXJ2ZXJzYCwge1xuICAgICAga2V5OiBgJHtzYWZlS2V5fU5hbWVzZXJ2ZXJzYCxcbiAgICAgIHZhbHVlOiBGbi5qb2luKFwiLFwiLCB0aGlzLmhvc3RlZFpvbmUuaG9zdGVkWm9uZU5hbWVTZXJ2ZXJzID8/IFtdKVxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmNlcnRpZmljYXRlcykge1xuICAgICAgcHJvcHMuY2VydGlmaWNhdGVzLmZvckVhY2goKGNlcnQsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHNhZmVDZXJ0TmFtZSA9IHRvUGFzY2FsQ2FzZShjZXJ0LmRvbWFpbk5hbWUuc3BsaXQoXCIuXCIpLmpvaW4oXCJcIikpO1xuICAgICAgICBuZXcgRG9tYWluQ2VydGlmaWNhdGUodGhpcywgYCR7c2FmZUtleX0ke3NhZmVDZXJ0TmFtZX1DZXJ0JHtpbmRleH1gLCB7XG4gICAgICAgICAgZG9tYWluTmFtZTogY2VydC5kb21haW5OYW1lLFxuICAgICAgICAgIHN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOiBjZXJ0LnN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzLFxuICAgICAgICAgIGhvc3RlZFpvbmU6IHRoaXMuaG9zdGVkWm9uZVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5yZWNvcmRzKSB7XG4gICAgICBhZGREbnNSZWNvcmRzKHRoaXMsIHRoaXMuaG9zdGVkWm9uZSwgcHJvcHMuem9uZU5hbWUsIHByb3BzLnJlY29yZHMpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Construct } from "constructs";
|
|
2
|
+
import { Domain } from "../../resources/aws/networking/domain";
|
|
3
|
+
import { DomainDelegation } from "./domainDelegation";
|
|
4
|
+
import type { DomainApexProps, DomainDelegatedProps } from "./interfaces/domain";
|
|
5
|
+
export declare class DomainFactory {
|
|
6
|
+
static build(id: string, props: DomainApexProps): (scope: Construct) => Domain;
|
|
7
|
+
static build(id: string, props: DomainDelegatedProps): (scope: Construct) => DomainDelegation;
|
|
8
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DomainFactory = void 0;
|
|
4
|
+
const domain_1 = require("../../resources/aws/networking/domain");
|
|
5
|
+
const domainDelegation_1 = require("./domainDelegation");
|
|
6
|
+
class DomainFactory {
|
|
7
|
+
static build(id, props) {
|
|
8
|
+
return (scope) => {
|
|
9
|
+
switch (props.type) {
|
|
10
|
+
case "domain":
|
|
11
|
+
return new domain_1.Domain(scope, id, props);
|
|
12
|
+
case "delegated":
|
|
13
|
+
return new domainDelegation_1.DomainDelegation(scope, id, props);
|
|
14
|
+
default: {
|
|
15
|
+
const _exhaustive = props;
|
|
16
|
+
throw new Error(`Unsupported domain type: ${String(_exhaustive.type)}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.DomainFactory = DomainFactory;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvZG9tYWluRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxrRUFBK0Q7QUFDL0QseURBQXNEO0FBT3RELE1BQWEsYUFBYTtJQVN4QixNQUFNLENBQUMsS0FBSyxDQUNWLEVBQVUsRUFDVixLQUFtQjtRQUVuQixPQUFPLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQzFCLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNuQixLQUFLLFFBQVE7b0JBQ1gsT0FBTyxJQUFJLGVBQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxLQUFLLFdBQVc7b0JBQ2QsT0FBTyxJQUFJLG1DQUFnQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2hELE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQ1IsTUFBTSxXQUFXLEdBQVUsS0FBSyxDQUFDO29CQUNqQyxNQUFNLElBQUksS0FBSyxDQUNiLDRCQUE0QixNQUFNLENBQUUsV0FBNEIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN6RSxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBNUJELHNDQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IERvbWFpbiB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvZG9tYWluXCI7XG5pbXBvcnQgeyBEb21haW5EZWxlZ2F0aW9uIH0gZnJvbSBcIi4vZG9tYWluRGVsZWdhdGlvblwiO1xuaW1wb3J0IHR5cGUge1xuICBEb21haW5BcGV4UHJvcHMsXG4gIERvbWFpbkRlbGVnYXRlZFByb3BzLFxuICBJRG9tYWluUHJvcHNcbn0gZnJvbSBcIi4vaW50ZXJmYWNlcy9kb21haW5cIjtcblxuZXhwb3J0IGNsYXNzIERvbWFpbkZhY3Rvcnkge1xuICBzdGF0aWMgYnVpbGQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogRG9tYWluQXBleFByb3BzXG4gICk6IChzY29wZTogQ29uc3RydWN0KSA9PiBEb21haW47XG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBEb21haW5EZWxlZ2F0ZWRQcm9wc1xuICApOiAoc2NvcGU6IENvbnN0cnVjdCkgPT4gRG9tYWluRGVsZWdhdGlvbjtcbiAgc3RhdGljIGJ1aWxkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IElEb21haW5Qcm9wc1xuICApOiAoc2NvcGU6IENvbnN0cnVjdCkgPT4gRG9tYWluIHwgRG9tYWluRGVsZWdhdGlvbiB7XG4gICAgcmV0dXJuIChzY29wZTogQ29uc3RydWN0KSA9PiB7XG4gICAgICBzd2l0Y2ggKHByb3BzLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcImRvbWFpblwiOlxuICAgICAgICAgIHJldHVybiBuZXcgRG9tYWluKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgICAgICBjYXNlIFwiZGVsZWdhdGVkXCI6XG4gICAgICAgICAgcmV0dXJuIG5ldyBEb21haW5EZWxlZ2F0aW9uKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgY29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gcHJvcHM7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFVuc3VwcG9ydGVkIGRvbWFpbiB0eXBlOiAke1N0cmluZygoX2V4aGF1c3RpdmUgYXMgSURvbWFpblByb3BzKS50eXBlKX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -7,6 +7,9 @@ export * from "../../resources/aws/compute/ec2";
|
|
|
7
7
|
export * from "./fivetranProxy";
|
|
8
8
|
export * from "./database";
|
|
9
9
|
export * from "../../resources/aws/networking/hostedZone";
|
|
10
|
+
export * from "./domainFactory";
|
|
11
|
+
export * from "./domainDelegation";
|
|
12
|
+
export * from "./interfaces/domain";
|
|
10
13
|
export * from "./compute";
|
|
11
14
|
export * from "./storage";
|
|
12
15
|
export * from "./auditRole";
|
|
@@ -24,6 +24,10 @@ __exportStar(require("../../resources/aws/compute/ec2"), exports);
|
|
|
24
24
|
__exportStar(require("./fivetranProxy"), exports);
|
|
25
25
|
__exportStar(require("./database"), exports);
|
|
26
26
|
__exportStar(require("../../resources/aws/networking/hostedZone"), exports);
|
|
27
|
+
// Domain patterns
|
|
28
|
+
__exportStar(require("./domainFactory"), exports);
|
|
29
|
+
__exportStar(require("./domainDelegation"), exports);
|
|
30
|
+
__exportStar(require("./interfaces/domain"), exports);
|
|
27
31
|
// Patterns
|
|
28
32
|
__exportStar(require("./compute"), exports);
|
|
29
33
|
__exportStar(require("./storage"), exports);
|
|
@@ -32,4 +36,4 @@ __exportStar(require("./network"), exports);
|
|
|
32
36
|
__exportStar(require("./cdn"), exports);
|
|
33
37
|
__exportStar(require("./messaging"), exports);
|
|
34
38
|
__exportStar(require("./pattern"), exports);
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3QkFBd0I7QUFDeEIsaURBQStCO0FBQy9CLDZDQUEyQjtBQUMzQiw0Q0FBMEI7QUFDMUIsd0RBQXNDO0FBRXRDLDhDQUE0QjtBQUM1QixrRUFBZ0Q7QUFDaEQsa0RBQWdDO0FBQ2hDLDZDQUEyQjtBQUMzQiw0RUFBMEQ7QUFFMUQsa0JBQWtCO0FBQ2xCLGtEQUFnQztBQUNoQyxxREFBbUM7QUFDbkMsc0RBQW9DO0FBRXBDLFdBQVc7QUFDWCw0Q0FBMEI7QUFDMUIsNENBQTBCO0FBQzFCLDhDQUE0QjtBQUM1Qiw0Q0FBMEI7QUFDMUIsd0NBQXNCO0FBQ3RCLDhDQUE0QjtBQUM1Qiw0Q0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBPcmdhbmlzYXRpb24gcGF0dGVybnNcbmV4cG9ydCAqIGZyb20gXCIuL29yZ2FuaXNhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhdGZvcm1cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FjY291bnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29yZ2FuaXNhdGlvbkZhY3RvcnlcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vYnVpbGRraXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2VjMlwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZml2ZXRyYW5Qcm94eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaG9zdGVkWm9uZVwiO1xuXG4vLyBEb21haW4gcGF0dGVybnNcbmV4cG9ydCAqIGZyb20gXCIuL2RvbWFpbkZhY3RvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RvbWFpbkRlbGVnYXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ludGVyZmFjZXMvZG9tYWluXCI7XG5cbi8vIFBhdHRlcm5zXG5leHBvcnQgKiBmcm9tIFwiLi9jb21wdXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yYWdlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hdWRpdFJvbGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25ldHdvcmtcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NkblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWVzc2FnaW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wYXR0ZXJuXCI7XG4iXX0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDomainExportNames = void 0;
|
|
4
|
+
var domainTypes_1 = require("../../../utils/domainTypes");
|
|
5
|
+
Object.defineProperty(exports, "getDomainExportNames", { enumerable: true, get: function () { return domainTypes_1.getDomainExportNames; } });
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9pbnRlcmZhY2VzL2RvbWFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFVQSwwREFBa0U7QUFBekQsbUhBQUEsb0JBQW9CLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7XG4gIERuc1JlY29yZElucHV0LFxuICBEZWxlZ2F0aW9uSW5wdXQsXG4gIENlcnRpZmljYXRlSW5wdXQsXG4gIERvbWFpbkFwZXhQcm9wcyxcbiAgRG9tYWluRGVsZWdhdGVkUHJvcHMsXG4gIElEb21haW5Qcm9wcyxcbiAgTWFuYWdlZERvbWFpbkV4cG9ydHNcbn0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2RvbWFpblR5cGVzXCI7XG5cbmV4cG9ydCB7IGdldERvbWFpbkV4cG9ydE5hbWVzIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2RvbWFpblR5cGVzXCI7XG4iXX0=
|
|
@@ -12,3 +12,4 @@ export { type CdnType, type ICdn, type AnyCdn, isCdn } from "./cdn.js";
|
|
|
12
12
|
export { type ConnectorType, type ConnectionAccess, type MessagingAccess, type IConnector, type IStorageConnector, type IDynamoDBConnector, type IQueueConnector, type ISecurityGroupConnector, type AnyConnector, type ConnectionConfig, type ConnectionSpec, type ConnectionResult, isConnector, isConnectable, isConnectionConfig, isStorageConnector, isDynamoDBConnector, isQueueConnector, isSecurityGroupConnector } from "./connector.js";
|
|
13
13
|
export { type PatternType, type IPattern, type IPayload, type IPayloadProps, type IPatternProps, type AnyPattern, type PayloadDatabaseConfig, type PayloadComputeConfig, type PayloadCdnConfig, isPayloadPattern, isPattern } from "./pattern.js";
|
|
14
14
|
export { type OrganisationType, type IOrganisation, type IPlatform, type IAccount, type AnyOrganisation, isOrganisation, isPlatform, isAccount, isOrganisationResource } from "./organisation.js";
|
|
15
|
+
export { type DnsRecordInput, type DelegationInput, type CertificateInput, type DomainApexProps, type DomainDelegatedProps, type IDomainProps } from "./domain.js";
|
|
@@ -52,4 +52,4 @@ Object.defineProperty(exports, "isOrganisation", { enumerable: true, get: functi
|
|
|
52
52
|
Object.defineProperty(exports, "isPlatform", { enumerable: true, get: function () { return organisation_js_1.isPlatform; } });
|
|
53
53
|
Object.defineProperty(exports, "isAccount", { enumerable: true, get: function () { return organisation_js_1.isAccount; } });
|
|
54
54
|
Object.defineProperty(exports, "isOrganisationResource", { enumerable: true, get: function () { return organisation_js_1.isOrganisationResource; } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOzs7QUFFSCxxQkFBcUI7QUFDckIsMkNBV3NCO0FBSnBCLHVHQUFBLFNBQVMsT0FBQTtBQUNULDBHQUFBLFlBQVksT0FBQTtBQUNaLDZHQUFBLGVBQWUsT0FBQTtBQUNmLDBHQUFBLFlBQVksT0FBQTtBQUdkLHNCQUFzQjtBQUN0Qiw2Q0FhdUI7QUFOckIseUdBQUEsVUFBVSxPQUFBO0FBQ1YsbUhBQUEsb0JBQW9CLE9BQUE7QUFDcEIsaUhBQUEsa0JBQWtCLE9BQUE7QUFDbEIsK0dBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsaUhBQUEsa0JBQWtCLE9BQUE7QUFDbEIscUhBQUEsc0JBQXNCLE9BQUE7QUFHeEIsdUJBQXVCO0FBQ3ZCLCtDQVd3QjtBQUp0QiwyR0FBQSxXQUFXLE9BQUE7QUFDWCxnSEFBQSxnQkFBZ0IsT0FBQTtBQUNoQixnSEFBQSxnQkFBZ0IsT0FBQTtBQUNoQixtSEFBQSxtQkFBbUIsT0FBQTtBQUdyQixxQkFBcUI7QUFDckIsMkNBQXdEO0FBQWhDLHVHQUFBLFNBQVMsT0FBQTtBQUVqQyxpQkFBaUI7QUFDakIsbUNBQXVFO0FBQXhCLCtGQUFBLEtBQUssT0FBQTtBQUVwRCx1QkFBdUI7QUFDdkIsK0NBb0J3QjtBQVB0QiwyR0FBQSxXQUFXLE9BQUE7QUFDWCw2R0FBQSxhQUFhLE9BQUE7QUFDYixrSEFBQSxrQkFBa0IsT0FBQTtBQUNsQixrSEFBQSxrQkFBa0IsT0FBQTtBQUNsQixtSEFBQSxtQkFBbUIsT0FBQTtBQUNuQixnSEFBQSxnQkFBZ0IsT0FBQTtBQUNoQix3SEFBQSx3QkFBd0IsT0FBQTtBQUcxQixxQkFBcUI7QUFDckIsMkNBWXNCO0FBRnBCLDhHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLHVHQUFBLFNBQVMsT0FBQTtBQUdYLDBCQUEwQjtBQUMxQixxREFVMkI7QUFKekIsaUhBQUEsY0FBYyxPQUFBO0FBQ2QsNkdBQUEsVUFBVSxPQUFBO0FBQ1YsNEdBQUEsU0FBUyxPQUFBO0FBQ1QseUhBQUEsc0JBQXNCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR5cGUtc2FmZSBpbnRlcmZhY2VzIGZvciBGamFsbCBpbmZyYXN0cnVjdHVyZSBmYWN0b3JpZXMuXG4gKlxuICogVGhpcyBtb2R1bGUgZXhwb3J0cyBhbGwgaW50ZXJmYWNlcyBhbmQgdHlwZSBndWFyZHMgZm9yIHR5cGUtc2FmZVxuICogZmFjdG9yeSBwYXR0ZXJuIGltcGxlbWVudGF0aW9ucy5cbiAqL1xuXG4vLyBDb21wdXRlIGludGVyZmFjZXNcbmV4cG9ydCB7XG4gIHR5cGUgQ29tcHV0ZVR5cGUsXG4gIHR5cGUgSUNvbXB1dGUsXG4gIHR5cGUgSUVjc0NvbXB1dGUsXG4gIHR5cGUgSUxhbWJkYUNvbXB1dGUsXG4gIHR5cGUgSUVjMkNvbXB1dGUsXG4gIHR5cGUgQW55Q29tcHV0ZSxcbiAgaXNDb21wdXRlLFxuICBpc0Vjc0NvbXB1dGUsXG4gIGlzTGFtYmRhQ29tcHV0ZSxcbiAgaXNFYzJDb21wdXRlXG59IGZyb20gXCIuL2NvbXB1dGUuanNcIjtcblxuLy8gRGF0YWJhc2UgaW50ZXJmYWNlc1xuZXhwb3J0IHtcbiAgdHlwZSBEYXRhYmFzZVR5cGUsXG4gIHR5cGUgUmVsYXRpb25hbERhdGFiYXNlVHlwZSxcbiAgdHlwZSBJRGF0YWJhc2UsXG4gIHR5cGUgSVJlbGF0aW9uYWxEYXRhYmFzZSxcbiAgdHlwZSBJRHluYW1vREJEYXRhYmFzZSxcbiAgdHlwZSBBbnlEYXRhYmFzZSxcbiAgaXNEYXRhYmFzZSxcbiAgaXNSZWxhdGlvbmFsRGF0YWJhc2UsXG4gIGlzRHluYW1vREJEYXRhYmFzZSxcbiAgaXNBdXJvcmFEYXRhYmFzZSxcbiAgaXNJbnN0YW5jZURhdGFiYXNlLFxuICBpc0dsb2JhbEF1cm9yYURhdGFiYXNlXG59IGZyb20gXCIuL2RhdGFiYXNlLmpzXCI7XG5cbi8vIE1lc3NhZ2luZyBpbnRlcmZhY2VzXG5leHBvcnQge1xuICB0eXBlIE1lc3NhZ2luZ1R5cGUsXG4gIHR5cGUgSU1lc3NhZ2luZyxcbiAgdHlwZSBJUXVldWVNZXNzYWdpbmcsXG4gIHR5cGUgSVRvcGljTWVzc2FnaW5nLFxuICB0eXBlIElFdmVudEJ1c01lc3NhZ2luZyxcbiAgdHlwZSBBbnlNZXNzYWdpbmcsXG4gIGlzTWVzc2FnaW5nLFxuICBpc1F1ZXVlTWVzc2FnaW5nLFxuICBpc1RvcGljTWVzc2FnaW5nLFxuICBpc0V2ZW50QnVzTWVzc2FnaW5nXG59IGZyb20gXCIuL21lc3NhZ2luZy5qc1wiO1xuXG4vLyBTdG9yYWdlIGludGVyZmFjZXNcbmV4cG9ydCB7IHR5cGUgSVN0b3JhZ2UsIGlzU3RvcmFnZSB9IGZyb20gXCIuL3N0b3JhZ2UuanNcIjtcblxuLy8gQ0ROIGludGVyZmFjZXNcbmV4cG9ydCB7IHR5cGUgQ2RuVHlwZSwgdHlwZSBJQ2RuLCB0eXBlIEFueUNkbiwgaXNDZG4gfSBmcm9tIFwiLi9jZG4uanNcIjtcblxuLy8gQ29ubmVjdG9yIGludGVyZmFjZXNcbmV4cG9ydCB7XG4gIHR5cGUgQ29ubmVjdG9yVHlwZSxcbiAgdHlwZSBDb25uZWN0aW9uQWNjZXNzLFxuICB0eXBlIE1lc3NhZ2luZ0FjY2VzcyxcbiAgdHlwZSBJQ29ubmVjdG9yLFxuICB0eXBlIElTdG9yYWdlQ29ubmVjdG9yLFxuICB0eXBlIElEeW5hbW9EQkNvbm5lY3RvcixcbiAgdHlwZSBJUXVldWVDb25uZWN0b3IsXG4gIHR5cGUgSVNlY3VyaXR5R3JvdXBDb25uZWN0b3IsXG4gIHR5cGUgQW55Q29ubmVjdG9yLFxuICB0eXBlIENvbm5lY3Rpb25Db25maWcsXG4gIHR5cGUgQ29ubmVjdGlvblNwZWMsXG4gIHR5cGUgQ29ubmVjdGlvblJlc3VsdCxcbiAgaXNDb25uZWN0b3IsXG4gIGlzQ29ubmVjdGFibGUsXG4gIGlzQ29ubmVjdGlvbkNvbmZpZyxcbiAgaXNTdG9yYWdlQ29ubmVjdG9yLFxuICBpc0R5bmFtb0RCQ29ubmVjdG9yLFxuICBpc1F1ZXVlQ29ubmVjdG9yLFxuICBpc1NlY3VyaXR5R3JvdXBDb25uZWN0b3Jcbn0gZnJvbSBcIi4vY29ubmVjdG9yLmpzXCI7XG5cbi8vIFBhdHRlcm4gaW50ZXJmYWNlc1xuZXhwb3J0IHtcbiAgdHlwZSBQYXR0ZXJuVHlwZSxcbiAgdHlwZSBJUGF0dGVybixcbiAgdHlwZSBJUGF5bG9hZCxcbiAgdHlwZSBJUGF5bG9hZFByb3BzLFxuICB0eXBlIElQYXR0ZXJuUHJvcHMsXG4gIHR5cGUgQW55UGF0dGVybixcbiAgdHlwZSBQYXlsb2FkRGF0YWJhc2VDb25maWcsXG4gIHR5cGUgUGF5bG9hZENvbXB1dGVDb25maWcsXG4gIHR5cGUgUGF5bG9hZENkbkNvbmZpZyxcbiAgaXNQYXlsb2FkUGF0dGVybixcbiAgaXNQYXR0ZXJuXG59IGZyb20gXCIuL3BhdHRlcm4uanNcIjtcblxuLy8gT3JnYW5pc2F0aW9uIGludGVyZmFjZXNcbmV4cG9ydCB7XG4gIHR5cGUgT3JnYW5pc2F0aW9uVHlwZSxcbiAgdHlwZSBJT3JnYW5pc2F0aW9uLFxuICB0eXBlIElQbGF0Zm9ybSxcbiAgdHlwZSBJQWNjb3VudCxcbiAgdHlwZSBBbnlPcmdhbmlzYXRpb24sXG4gIGlzT3JnYW5pc2F0aW9uLFxuICBpc1BsYXRmb3JtLFxuICBpc0FjY291bnQsXG4gIGlzT3JnYW5pc2F0aW9uUmVzb3VyY2Vcbn0gZnJvbSBcIi4vb3JnYW5pc2F0aW9uLmpzXCI7XG5cbi8vIERvbWFpbiBpbnRlcmZhY2VzXG5leHBvcnQge1xuICB0eXBlIERuc1JlY29yZElucHV0LFxuICB0eXBlIERlbGVnYXRpb25JbnB1dCxcbiAgdHlwZSBDZXJ0aWZpY2F0ZUlucHV0LFxuICB0eXBlIERvbWFpbkFwZXhQcm9wcyxcbiAgdHlwZSBEb21haW5EZWxlZ2F0ZWRQcm9wcyxcbiAgdHlwZSBJRG9tYWluUHJvcHNcbn0gZnJvbSBcIi4vZG9tYWluLmpzXCI7XG4iXX0=
|
|
@@ -22,6 +22,7 @@ import { type LambdaCompute } from "../compute.js";
|
|
|
22
22
|
import { type Storage } from "../storage.js";
|
|
23
23
|
import { type QueueMessaging } from "../messaging.js";
|
|
24
24
|
import { type Cdn, type SmartCdnBehaviour } from "../cdn.js";
|
|
25
|
+
import type { ManagedDomainExports } from "../../../utils/domainTypes.js";
|
|
25
26
|
export type { ProxyConfig, ReadReplicaConfig, CredentialsConfig, EncryptionConfig, AuroraEncryptionConfig, AuroraWriterConfig, AuroraReadersConfig, DatabaseInsightsConfig };
|
|
26
27
|
/**
|
|
27
28
|
* Full database configuration for patterns.
|
|
@@ -323,6 +324,8 @@ export interface IPayloadProps {
|
|
|
323
324
|
* @example "cms.example.com"
|
|
324
325
|
*/
|
|
325
326
|
domain?: string;
|
|
327
|
+
/** Import zone and cert from a managed domain stack instead of creating inline */
|
|
328
|
+
managedDomain?: ManagedDomainExports;
|
|
326
329
|
/** Database configuration */
|
|
327
330
|
database?: PayloadDatabaseConfig;
|
|
328
331
|
/** Compute (Lambda) configuration */
|
|
@@ -33,4 +33,4 @@ function isPattern(resource) {
|
|
|
33
33
|
"patternType" in resource &&
|
|
34
34
|
typeof resource.patternType === "string");
|
|
35
35
|
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvaW50ZXJmYWNlcy9wYXR0ZXJuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7O0FBNGJILDRDQUVDO0FBS0QsOEJBT0M7QUFqQkQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxPQUFpQjtJQUNoRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLEtBQUssU0FBUyxDQUFDO0FBQzNDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFNBQVMsQ0FBQyxRQUFpQjtJQUN6QyxPQUFPLENBQ0wsUUFBUSxLQUFLLElBQUk7UUFDakIsT0FBTyxRQUFRLEtBQUssUUFBUTtRQUM1QixhQUFhLElBQUksUUFBUTtRQUN6QixPQUFRLFFBQXFCLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FDdkQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR5cGUtc2FmZSBwYXR0ZXJuIGludGVyZmFjZXMuXG4gKlxuICogVGhlc2UgaW50ZXJmYWNlcyBwcm92aWRlIGNvbXBpbGUtdGltZSB0eXBlIHNhZmV0eSBmb3IgcGF0dGVybiByZXNvdXJjZXMuXG4gKiBQYXR0ZXJucyBhcmUgaGlnaC1sZXZlbCBjb25zdHJ1Y3RzIHRoYXQgY29tcG9zZSBtdWx0aXBsZSBpbmZyYXN0cnVjdHVyZSByZXNvdXJjZXNcbiAqIGludG8gYSBjb2hlc2l2ZSwgb3BpbmlvbmF0ZWQgZGVwbG95bWVudCAoZS5nLiwgUGF5bG9hZCBDTVMsIE5leHQuanMpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwYXlsb2FkID0gYXBwLmFkZFBhdHRlcm4oUGF0dGVybkZhY3RvcnkuYnVpbGQoXCJQYXlsb2FkQXBwXCIsIHtcbiAqICAgdHlwZTogXCJwYXlsb2FkXCIsXG4gKiAgIG5hbWU6IFwibXktY21zXCIsXG4gKiAgIHNvdXJjZTogXCIuLi8uLlwiXG4gKiB9KSk7XG4gKiBwYXlsb2FkLmdldERhdGFiYXNlKCk7IC8vIOKckyBBdmFpbGFibGUgb24gSVBheWxvYWRcbiAqIHBheWxvYWQuZ2V0U2VydmVyKCk7IC8vIOKckyBBdmFpbGFibGUgb24gSVBheWxvYWRcbiAqL1xuXG5pbXBvcnQgeyB0eXBlIElDZXJ0aWZpY2F0ZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCB7XG4gIHR5cGUgUmVsYXRpb25hbERhdGFiYXNlLFxuICB0eXBlIER5bmFtb0RCRGF0YWJhc2UsXG4gIHR5cGUgUHJveHlDb25maWcsXG4gIHR5cGUgUmVhZFJlcGxpY2FDb25maWcsXG4gIHR5cGUgQ3JlZGVudGlhbHNDb25maWcsXG4gIHR5cGUgRW5jcnlwdGlvbkNvbmZpZyxcbiAgdHlwZSBBdXJvcmFFbmNyeXB0aW9uQ29uZmlnLFxuICB0eXBlIEF1cm9yYVdyaXRlckNvbmZpZyxcbiAgdHlwZSBBdXJvcmFSZWFkZXJzQ29uZmlnLFxuICB0eXBlIERhdGFiYXNlSW5zaWdodHNDb25maWdcbn0gZnJvbSBcIi4uL2RhdGFiYXNlLmpzXCI7XG5pbXBvcnQgeyB0eXBlIExhbWJkYUNvbXB1dGUgfSBmcm9tIFwiLi4vY29tcHV0ZS5qc1wiO1xuaW1wb3J0IHsgdHlwZSBTdG9yYWdlIH0gZnJvbSBcIi4uL3N0b3JhZ2UuanNcIjtcbmltcG9ydCB7IHR5cGUgUXVldWVNZXNzYWdpbmcgfSBmcm9tIFwiLi4vbWVzc2FnaW5nLmpzXCI7XG5pbXBvcnQgeyB0eXBlIENkbiwgdHlwZSBTbWFydENkbkJlaGF2aW91ciB9IGZyb20gXCIuLi9jZG4uanNcIjtcblxuLy8gUmUtZXhwb3J0IGRhdGFiYXNlIHR5cGVzIGZvciBjb25zdW1lciBjb252ZW5pZW5jZVxuZXhwb3J0IHR5cGUge1xuICBQcm94eUNvbmZpZyxcbiAgUmVhZFJlcGxpY2FDb25maWcsXG4gIENyZWRlbnRpYWxzQ29uZmlnLFxuICBFbmNyeXB0aW9uQ29uZmlnLFxuICBBdXJvcmFFbmNyeXB0aW9uQ29uZmlnLFxuICBBdXJvcmFXcml0ZXJDb25maWcsXG4gIEF1cm9yYVJlYWRlcnNDb25maWcsXG4gIERhdGFiYXNlSW5zaWdodHNDb25maWdcbn07XG5cbi8qKlxuICogRnVsbCBkYXRhYmFzZSBjb25maWd1cmF0aW9uIGZvciBwYXR0ZXJucy5cbiAqIEV4dGVuZHMgdW5kZXJseWluZyBEYXRhYmFzZUZhY3RvcnkgcHJvcHMgd2l0aCBwYXR0ZXJuLXNwZWNpZmljIGRlZmF1bHRzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNaW5pbWFsIC0gdXNlIGRlZmF1bHRzXG4gKiBkYXRhYmFzZTogeyB0eXBlOiBcIkluc3RhbmNlXCIgfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBQcm9kdWN0aW9uLXJlYWR5IEluc3RhbmNlXG4gKiBkYXRhYmFzZToge1xuICogICB0eXBlOiBcIkluc3RhbmNlXCIsXG4gKiAgIGluc3RhbmNlVHlwZTogXCJ0NGcubGFyZ2VcIixcbiAqICAgYWxsb2NhdGVkU3RvcmFnZTogNTAsXG4gKiAgIG11bHRpQXo6IHRydWUsXG4gKiAgIGRhdGFiYXNlSW5zaWdodHM6IHsgbW9kZTogXCJhZHZhbmNlZFwiIH0sXG4gKiAgIGVuY3J5cHRpb246IHsgc3RvcmFnZUtleTogeyB1c2VDTUs6IHRydWUgfSB9XG4gKiB9XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEF1cm9yYSB3aXRoIHJlYWRlcnNcbiAqIGRhdGFiYXNlOiB7XG4gKiAgIHR5cGU6IFwiQXVyb3JhXCIsXG4gKiAgIHJlYWRlcnM6IHsgY291bnQ6IDIgfSxcbiAqICAgYWxsb3dWcGNBY2Nlc3M6IHRydWVcbiAqIH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXlsb2FkRGF0YWJhc2VDb25maWcge1xuICAvKiogRGF0YWJhc2UgdHlwZTogXCJJbnN0YW5jZVwiIG9yIFwiQXVyb3JhXCIuIERlZmF1bHQ6IFwiSW5zdGFuY2VcIiAqL1xuICB0eXBlPzogXCJJbnN0YW5jZVwiIHwgXCJBdXJvcmFcIjtcbiAgLyoqIERhdGFiYXNlIG5hbWUuIERlZmF1bHQ6IGRlcml2ZWQgZnJvbSBwYXR0ZXJuIG5hbWUgKi9cbiAgZGF0YWJhc2VOYW1lPzogc3RyaW5nO1xuICAvKiogRGF0YWJhc2UgZW5naW5lLiBEZWZhdWx0OiBcInBvc3RncmVzcWxcIiAqL1xuICBkYXRhYmFzZUVuZ2luZT86IFwicG9zdGdyZXNxbFwiIHwgXCJteXNxbFwiO1xuXG4gIC8qKiBFbmFibGUgZGVsZXRpb24gcHJvdGVjdGlvbi4gRGVmYXVsdDogdHJ1ZSAqL1xuICBkZWxldGlvblByb3RlY3Rpb24/OiBib29sZWFuO1xuICAvKiogQmFja3VwIHJldGVudGlvbiBpbiBkYXlzICgxLTM1KS4gRGVmYXVsdDogNyAqL1xuICBiYWNrdXBSZXRlbnRpb24/OiBudW1iZXI7XG4gIC8qKiBEYXRhYmFzZSBwb3J0LiBEZWZhdWx0OiBlbmdpbmUtc3BlY2lmaWMgKDU0MzIgZm9yIFBvc3RncmVTUUwpICovXG4gIHBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqIE1ha2UgZGF0YWJhc2UgcHVibGljbHkgYWNjZXNzaWJsZSAoZm9yIGxvY2FsIGRldmVsb3BtZW50KS4gRGVmYXVsdDogZmFsc2UgKi9cbiAgcHVibGljbHlBY2Nlc3NpYmxlPzogYm9vbGVhbjtcbiAgLyoqIElQIENJRFIgdG8gYWxsb3cgd2hlbiBwdWJsaWNseSBhY2Nlc3NpYmxlIChlLmcuLCBcIjIwMy4wLjExMy4wLzMyXCIpICovXG4gIGFsbG93ZWRJcENpZHI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluc3RhbmNlIHR5cGUgZm9yIFJEUyBJbnN0YW5jZSBkYXRhYmFzZXMuXG4gICAqIEV4YW1wbGVzOiBcInQ0Zy5taWNyb1wiLCBcInQ0Zy5zbWFsbFwiLCBcInQ0Zy5sYXJnZVwiLCBcInI2Zy5sYXJnZVwiXG4gICAqIERlZmF1bHQ6IFwidDRnLnNtYWxsXCJcbiAgICogT25seSBhcHBsaWVzIHdoZW4gdHlwZTogXCJJbnN0YW5jZVwiXG4gICAqL1xuICBpbnN0YW5jZVR5cGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbGxvY2F0ZWQgc3RvcmFnZSBpbiBHQiBmb3IgUkRTIEluc3RhbmNlLlxuICAgKiBEZWZhdWx0OiAyMFxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0eXBlOiBcIkluc3RhbmNlXCJcbiAgICovXG4gIGFsbG9jYXRlZFN0b3JhZ2U/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBFbmFibGUgTXVsdGktQVogZGVwbG95bWVudCBmb3IgaGlnaCBhdmFpbGFiaWxpdHkuXG4gICAqIENyZWF0ZXMgYSBzdGFuZGJ5IHJlcGxpY2EgaW4gYSBkaWZmZXJlbnQgQVouXG4gICAqIE9ubHkgYXBwbGllcyB3aGVuIHR5cGU6IFwiSW5zdGFuY2VcIlxuICAgKi9cbiAgbXVsdGlBej86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSZWFkIHJlcGxpY2EgY29uZmlndXJhdGlvbiBmb3IgUkRTIEluc3RhbmNlLlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZXhwbGljaXRseSBkaXNhYmxlLlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0eXBlOiBcIkluc3RhbmNlXCJcbiAgICovXG4gIHJlYWRSZXBsaWNhPzogUmVhZFJlcGxpY2FDb25maWcgfCBmYWxzZTtcblxuICAvKipcbiAgICogQXVyb3JhIHdyaXRlciBpbnN0YW5jZSBjb25maWd1cmF0aW9uLlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0eXBlOiBcIkF1cm9yYVwiXG4gICAqL1xuICB3cml0ZXI/OiBBdXJvcmFXcml0ZXJDb25maWc7XG4gIC8qKlxuICAgKiBBdXJvcmEgcmVhZGVyIGluc3RhbmNlcyBjb25maWd1cmF0aW9uLlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZXhwbGljaXRseSBkaXNhYmxlIHJlYWRlcnMuXG4gICAqIE9ubHkgYXBwbGllcyB3aGVuIHR5cGU6IFwiQXVyb3JhXCJcbiAgICovXG4gIHJlYWRlcnM/OiBBdXJvcmFSZWFkZXJzQ29uZmlnIHwgZmFsc2U7XG4gIC8qKlxuICAgKiBBbGxvdyBhY2Nlc3MgZnJvbSBWUEMgQ0lEUiAoYXZvaWRzIGNyb3NzLXN0YWNrIGN5Y2xpYyBkZXBlbmRlbmNpZXMpLlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0eXBlOiBcIkF1cm9yYVwiXG4gICAqL1xuICBhbGxvd1ZwY0FjY2Vzcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmhhbmNlZCBtb25pdG9yaW5nIGludGVydmFsLlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0eXBlOiBcIkF1cm9yYVwiXG4gICAqL1xuICBtb25pdG9yaW5nSW50ZXJ2YWw/OiBEdXJhdGlvbjtcbiAgLyoqXG4gICAqIFByZWZlcnJlZCBtYWludGVuYW5jZSB3aW5kb3cgKGUuZy4sIFwic3VuOjA1OjAwLXN1bjowNjowMFwiKS5cbiAgICogT25seSBhcHBsaWVzIHdoZW4gdHlwZTogXCJBdXJvcmFcIlxuICAgKi9cbiAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERhdGFiYXNlIEluc2lnaHRzIGNvbmZpZ3VyYXRpb24uXG4gICAqIFNldCB0byBmYWxzZSB0byBleHBsaWNpdGx5IGRpc2FibGUuXG4gICAqIEBleGFtcGxlIHsgbW9kZTogXCJhZHZhbmNlZFwiIH1cbiAgICovXG4gIGRhdGFiYXNlSW5zaWdodHM/OiBEYXRhYmFzZUluc2lnaHRzQ29uZmlnIHwgZmFsc2U7XG4gIC8qKlxuICAgKiBSRFMgUHJveHkgY29uZmlndXJhdGlvbiBmb3IgY29ubmVjdGlvbiBwb29saW5nLlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZXhwbGljaXRseSBkaXNhYmxlLlxuICAgKiBAZXhhbXBsZSB7IG1heENvbm5lY3Rpb25zOiAxMDAgfVxuICAgKi9cbiAgcHJveHk/OiBQcm94eUNvbmZpZyB8IGZhbHNlO1xuICAvKipcbiAgICogQ3JlZGVudGlhbHMgY29uZmlndXJhdGlvbiAodXNlcm5hbWUsIHJvdGF0aW9uKS5cbiAgICovXG4gIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHNDb25maWc7XG4gIC8qKlxuICAgKiBFbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqIEZvciBJbnN0YW5jZTogRW5jcnlwdGlvbkNvbmZpZ1xuICAgKiBGb3IgQXVyb3JhOiBBdXJvcmFFbmNyeXB0aW9uQ29uZmlnXG4gICAqIEBleGFtcGxlIHsgc3RvcmFnZUtleTogeyB1c2VDTUs6IHRydWUgfSB9XG4gICAqL1xuICBlbmNyeXB0aW9uPzogRW5jcnlwdGlvbkNvbmZpZyB8IEF1cm9yYUVuY3J5cHRpb25Db25maWc7XG5cbiAgLyoqIEFSTiBvciBpZGVudGlmaWVyIG9mIHNuYXBzaG90IHRvIHJlc3RvcmUgZnJvbSAqL1xuICBzbmFwc2hvdElkZW50aWZpZXI/OiBzdHJpbmc7XG4gIC8qKiBVc2VybmFtZSBmcm9tIHRoZSBzbmFwc2hvdCAocmVxdWlyZWQgd2hlbiByZXN0b3JpbmcpICovXG4gIHNuYXBzaG90VXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGFtYmRhIGZ1bmN0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIHBhdHRlcm4gc3ViLWZ1bmN0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogc2VydmVyOiB7IG1lbW9yeVNpemU6IDIwNDgsIHRpbWVvdXQ6IDYwIH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuTGFtYmRhQ29uZmlnIHtcbiAgLyoqIE1lbW9yeSBzaXplIGluIE1CLiBSYW5nZTogMTI4LTEwMjQwLiAqL1xuICBtZW1vcnlTaXplPzogbnVtYmVyO1xuICAvKiogVGltZW91dCBpbiBzZWNvbmRzLiBSYW5nZTogMS05MDAuICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBFcGhlbWVyYWwgc3RvcmFnZSBzaXplIGluIE1CLiBSYW5nZTogNTEyLTEwMjQwLiBEZWZhdWx0OiA1MTIuICovXG4gIGVwaGVtZXJhbFN0b3JhZ2VTaXplPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEZ1bGwgY29tcHV0ZSBjb25maWd1cmF0aW9uIGZvciBwYXR0ZXJucy5cbiAqIEFsbG93cyBwZXItZnVuY3Rpb24gY29uZmlndXJhdGlvbiBmb3IgZWFjaCBMYW1iZGEgaW4gdGhlIHBhdHRlcm4uXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbmZpZ3VyZSBpbmRpdmlkdWFsIGZ1bmN0aW9uc1xuICogY29tcHV0ZToge1xuICogICBzZXJ2ZXI6IHsgbWVtb3J5U2l6ZTogMjA0OCwgdGltZW91dDogNjAgfSxcbiAqICAgaW1hZ2VPcHRpbWlzYXRpb246IHsgbWVtb3J5U2l6ZTogMjA0OCB9LFxuICogICByZXZhbGlkYXRpb246IHsgbWVtb3J5U2l6ZTogMTAyNCwgdGltZW91dDogNjAwIH1cbiAqIH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXlsb2FkQ29tcHV0ZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBTZXJ2ZXIgTGFtYmRhIGNvbmZpZ3VyYXRpb24uXG4gICAqIEhhbmRsZXMgbWFpbiBhcHBsaWNhdGlvbiByZXF1ZXN0cy5cbiAgICogRGVmYXVsdHM6IG1lbW9yeVNpemU9MTUzNiwgdGltZW91dD0zMFxuICAgKi9cbiAgc2VydmVyPzogUGF0dGVybkxhbWJkYUNvbmZpZztcbiAgLyoqXG4gICAqIEltYWdlIG9wdGltaXNhdGlvbiBMYW1iZGEgY29uZmlndXJhdGlvbi5cbiAgICogSGFuZGxlcyBOZXh0LmpzIGltYWdlIG9wdGltaXNhdGlvbi5cbiAgICogRGVmYXVsdHM6IG1lbW9yeVNpemU9MTUzNiwgdGltZW91dD0zMFxuICAgKi9cbiAgaW1hZ2VPcHRpbWlzYXRpb24/OiBQYXR0ZXJuTGFtYmRhQ29uZmlnO1xuICAvKipcbiAgICogUmV2YWxpZGF0aW9uIExhbWJkYSBjb25maWd1cmF0aW9uLlxuICAgKiBIYW5kbGVzIElTUiByZXZhbGlkYXRpb24gZnJvbSBTUVMgcXVldWUuXG4gICAqIERlZmF1bHRzOiBtZW1vcnlTaXplPTc2OCwgdGltZW91dD0zMDBcbiAgICovXG4gIHJldmFsaWRhdGlvbj86IFBhdHRlcm5MYW1iZGFDb25maWc7XG59XG5cbi8qKlxuICogUzMgYnVja2V0IGNvbmZpZ3VyYXRpb24gZm9yIHBhdHRlcm4gc3ViLWJ1Y2tldHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVyblN0b3JhZ2VCdWNrZXRDb25maWcge1xuICAvKiogRW5hYmxlIHZlcnNpb25pbmcuIERlZmF1bHQ6IGZhbHNlICovXG4gIHZlcnNpb25lZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRnVsbCBzdG9yYWdlIGNvbmZpZ3VyYXRpb24gZm9yIHBhdHRlcm5zLlxuICogQWxsb3dzIHBlci1idWNrZXQgY29uZmlndXJhdGlvbiBmb3IgZWFjaCBTMyBidWNrZXQgaW4gdGhlIHBhdHRlcm4uXG4gKlxuICogQGV4YW1wbGVcbiAqIHN0b3JhZ2U6IHtcbiAqICAgYXNzZXRzOiB7IHZlcnNpb25lZDogdHJ1ZSB9LFxuICogICBjYWNoZTogeyB2ZXJzaW9uZWQ6IGZhbHNlIH0sXG4gKiAgIG1lZGlhOiB7IHZlcnNpb25lZDogdHJ1ZSB9XG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF5bG9hZFN0b3JhZ2VDb25maWcge1xuICAvKiogQXNzZXRzIGJ1Y2tldCAoc3RhdGljIGZpbGVzKSAqL1xuICBhc3NldHM/OiBQYXR0ZXJuU3RvcmFnZUJ1Y2tldENvbmZpZztcbiAgLyoqIENhY2hlIGJ1Y2tldCAoSVNSIGNhY2hlKSAqL1xuICBjYWNoZT86IFBhdHRlcm5TdG9yYWdlQnVja2V0Q29uZmlnO1xuICAvKiogTWVkaWEgYnVja2V0ICh1cGxvYWRzKSAqL1xuICBtZWRpYT86IFBhdHRlcm5TdG9yYWdlQnVja2V0Q29uZmlnO1xufVxuXG4vKipcbiAqIFNRUyBxdWV1ZSBjb25maWd1cmF0aW9uIGZvciBwYXR0ZXJuIG1lc3NhZ2luZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuUXVldWVDb25maWcge1xuICAvKiogVmlzaWJpbGl0eSB0aW1lb3V0IGluIHNlY29uZHMuIERlZmF1bHQ6IG1hdGNoZXMgcmV2YWxpZGF0aW9uIHRpbWVvdXQgKi9cbiAgdmlzaWJpbGl0eVRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBNZXNzYWdlIHJldGVudGlvbiBwZXJpb2QgaW4gc2Vjb25kcy4gRGVmYXVsdDogMzQ1NjAwICg0IGRheXMpICovXG4gIG1lc3NhZ2VSZXRlbnRpb25QZXJpb2Q/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIG1lc3NhZ2Ugc2l6ZSBpbiBieXRlcy4gRGVmYXVsdDogMjYyMTQ0ICgyNTYgS0IpICovXG4gIG1heE1lc3NhZ2VTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogRGVhZCBsZXR0ZXIgcXVldWUgY29uZmlndXJhdGlvbi5cbiAgICogU2V0IHRvIGZhbHNlIHRvIGV4cGxpY2l0bHkgZGlzYWJsZS5cbiAgICovXG4gIGRlYWRMZXR0ZXJRdWV1ZT86XG4gICAgfCB7XG4gICAgICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgICBtYXhSZWNlaXZlQ291bnQ/OiBudW1iZXI7XG4gICAgICB9XG4gICAgfCBmYWxzZTtcbn1cblxuLyoqXG4gKiBGdWxsIG1lc3NhZ2luZyBjb25maWd1cmF0aW9uIGZvciBwYXR0ZXJucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogbWVzc2FnaW5nOiB7XG4gKiAgIHJldmFsaWRhdGlvblF1ZXVlOiB7XG4gKiAgICAgdmlzaWJpbGl0eVRpbWVvdXQ6IDYwMCxcbiAqICAgICBkZWFkTGV0dGVyUXVldWU6IHsgZW5hYmxlZDogdHJ1ZSwgbWF4UmVjZWl2ZUNvdW50OiA1IH1cbiAqICAgfVxuICogfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBheWxvYWRNZXNzYWdpbmdDb25maWcge1xuICAvKiogUmV2YWxpZGF0aW9uIHF1ZXVlIGNvbmZpZ3VyYXRpb24gKi9cbiAgcmV2YWxpZGF0aW9uUXVldWU/OiBQYXR0ZXJuUXVldWVDb25maWc7XG59XG5cbi8qKlxuICogQ0ROIGNvbmZpZ3VyYXRpb24gZm9yIFBheWxvYWQgcGF0dGVybi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXlsb2FkQ2RuQ29uZmlnIHtcbiAgLyoqIEN1c3RvbSBkb21haW4gbmFtZXMgZm9yIENsb3VkRnJvbnQgKi9cbiAgZG9tYWluTmFtZXM/OiBzdHJpbmdbXTtcbiAgLyoqIEFDTSBjZXJ0aWZpY2F0ZSBmb3IgY3VzdG9tIGRvbWFpbnMgKG11c3QgYmUgaW4gdXMtZWFzdC0xKSAqL1xuICBjZXJ0aWZpY2F0ZT86IElDZXJ0aWZpY2F0ZTtcbiAgLyoqIEFDTSBjZXJ0aWZpY2F0ZSBBUk4gKGFsdGVybmF0aXZlIHRvIGNlcnRpZmljYXRlIC0gbXVzdCBiZSBpbiB1cy1lYXN0LTEpICovXG4gIGNlcnRpZmljYXRlQXJuPzogc3RyaW5nO1xuICAvKiogQWRkaXRpb25hbCBDRE4gYmVoYXZpb3VycyAqL1xuICBiZWhhdmlvdXJzPzogU21hcnRDZG5CZWhhdmlvdXJbXTtcbn1cblxuLyoqXG4gKiBQYXlsb2FkIHBhdHRlcm4gcHJvcHMuXG4gKlxuICogQ29uZmlndXJlcyBhIFBheWxvYWQgQ01TIGRlcGxveW1lbnQgd2l0aCBhbGwgcmVxdWlyZWQgaW5mcmFzdHJ1Y3R1cmU6XG4gKiAtIFJEUyBQb3N0Z3JlU1FMIGRhdGFiYXNlIChBdXJvcmEgb3IgSW5zdGFuY2UpXG4gKiAtIFMzIGJ1Y2tldHMgKGFzc2V0cywgY2FjaGUsIG1lZGlhKVxuICogLSBEeW5hbW9EQiB0YWJsZSAodGFnIGNhY2hlKVxuICogLSBTUVMgRklGTyBxdWV1ZSAocmV2YWxpZGF0aW9uKVxuICogLSBMYW1iZGEgZnVuY3Rpb25zIChzZXJ2ZXIsIGltYWdlIG9wdGltaXNhdGlvbiwgcmV2YWxpZGF0aW9uKVxuICogLSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNaW5pbWFsIC0gd29ya3Mgb3V0IG9mIGJveFxuICogYXBwLmFkZFBhdHRlcm4oUGF0dGVybkZhY3RvcnkuYnVpbGQoXCJQYXlsb2FkQXBwXCIsIHtcbiAqICAgdHlwZTogXCJwYXlsb2FkXCIsXG4gKiAgIG5hbWU6IFwibXktY21zXCJcbiAqIH0pKTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2l0aCBjdXN0b20gZG9tYWluIChhdXRvLWNyZWF0ZXMgY2VydGlmaWNhdGUgKyBETlMpXG4gKiBhcHAuYWRkUGF0dGVybihQYXR0ZXJuRmFjdG9yeS5idWlsZChcIlBheWxvYWRBcHBcIiwge1xuICogICB0eXBlOiBcInBheWxvYWRcIixcbiAqICAgbmFtZTogXCJteS1jbXNcIixcbiAqICAgZG9tYWluOiBcImNtcy5leGFtcGxlLmNvbVwiXG4gKiB9KSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbWlzZWRcbiAqIGFwcC5hZGRQYXR0ZXJuKFBhdHRlcm5GYWN0b3J5LmJ1aWxkKFwiUGF5bG9hZEFwcFwiLCB7XG4gKiAgIHR5cGU6IFwicGF5bG9hZFwiLFxuICogICBuYW1lOiBcIm15LWNtc1wiLFxuICogICBkYXRhYmFzZToge1xuICogICAgIHR5cGU6IFwiSW5zdGFuY2VcIixcbiAqICAgICBwdWJsaWNseUFjY2Vzc2libGU6IHRydWVcbiAqICAgfSxcbiAqICAgY29tcHV0ZToge1xuICogICAgIHNlcnZlcjogeyBtZW1vcnlTaXplOiAyMDQ4IH1cbiAqICAgfVxuICogfSkpO1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElQYXlsb2FkUHJvcHMge1xuICAvKiogUGF0dGVybiB0eXBlIGRpc2NyaW1pbmF0b3IgKi9cbiAgdHlwZTogXCJwYXlsb2FkXCI7XG4gIC8qKiBQYXR0ZXJuIG5hbWUgKHVzZWQgZm9yIHJlc291cmNlIG5hbWluZykgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZG9tYWluIGZvciB0aGUgUGF5bG9hZCBhcHBsaWNhdGlvbi5cbiAgICogV2hlbiBwcm92aWRlZCwgYXV0b21hdGljYWxseTpcbiAgICogLSBMb29rcyB1cCB0aGUgUm91dGU1MyBob3N0ZWQgem9uZVxuICAgKiAtIENyZWF0ZXMgYW4gQUNNIGNlcnRpZmljYXRlIHdpdGggRE5TIHZhbGlkYXRpb24gKGluIHVzLWVhc3QtMSlcbiAgICogLSBDb25maWd1cmVzIENsb3VkRnJvbnQgd2l0aCB0aGUgY2VydGlmaWNhdGVcbiAgICogLSBDcmVhdGVzIGFuIEEgcmVjb3JkIChhbGlhcykgcG9pbnRpbmcgdG8gQ2xvdWRGcm9udFxuICAgKlxuICAgKiBSZXF1aXJlczogQSBSb3V0ZTUzIGhvc3RlZCB6b25lIGZvciB0aGUgZG9tYWluIG11c3QgZXhpc3QuXG4gICAqXG4gICAqIEBleGFtcGxlIFwiY21zLmV4YW1wbGUuY29tXCJcbiAgICovXG4gIGRvbWFpbj86IHN0cmluZztcblxuICAvKiogRGF0YWJhc2UgY29uZmlndXJhdGlvbiAqL1xuICBkYXRhYmFzZT86IFBheWxvYWREYXRhYmFzZUNvbmZpZztcbiAgLyoqIENvbXB1dGUgKExhbWJkYSkgY29uZmlndXJhdGlvbiAqL1xuICBjb21wdXRlPzogUGF5bG9hZENvbXB1dGVDb25maWc7XG4gIC8qKiBTdG9yYWdlIChTMykgY29uZmlndXJhdGlvbiAqL1xuICBzdG9yYWdlPzogUGF5bG9hZFN0b3JhZ2VDb25maWc7XG4gIC8qKiBNZXNzYWdpbmcgKFNRUykgY29uZmlndXJhdGlvbiAqL1xuICBtZXNzYWdpbmc/OiBQYXlsb2FkTWVzc2FnaW5nQ29uZmlnO1xuICAvKiogQ0ROIChDbG91ZEZyb250KSBjb25maWd1cmF0aW9uIC0gZm9yIGFkdmFuY2VkIHVzZS4gVXNlIGBkb21haW5gIGZvciBzaW1wbGUgc2V0dXAuICovXG4gIGNkbj86IFBheWxvYWRDZG5Db25maWc7XG5cbiAgLyoqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciBzZXJ2ZXIgTGFtYmRhICovXG4gIGVudmlyb25tZW50PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBVbmlvbiBvZiBhbGwgcGF0dGVybiBwcm9wcy5cbiAqIEV4dGVuZCB0aGlzIHdoZW4gYWRkaW5nIG5ldyBwYXR0ZXJucyAoZS5nLiwgSU5leHRqc1Byb3BzLCBJUmVtaXhQcm9wcykuXG4gKi9cbmV4cG9ydCB0eXBlIElQYXR0ZXJuUHJvcHMgPSBJUGF5bG9hZFByb3BzOyAvLyB8IElOZXh0anNQcm9wcyB8IElSZW1peFByb3BzIGluIGZ1dHVyZVxuXG4vKipcbiAqIFBhdHRlcm4gdHlwZSBkaXNjcmltaW5hdG9yLlxuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuVHlwZSA9IFwicGF5bG9hZFwiOyAvLyB8IFwibmV4dGpzXCIgfCBcInJlbWl4XCIgaW4gZnV0dXJlXG5cbi8qKlxuICogQmFzZSBwYXR0ZXJuIGludGVyZmFjZS5cbiAqIEFsbCBwYXR0ZXJucyBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBhdHRlcm4ge1xuICAvKiogVGhlIHR5cGUgb2YgcGF0dGVybi4gVXNlZCBmb3IgcnVudGltZSB0eXBlIG5hcnJvd2luZy4gKi9cbiAgcmVhZG9ubHkgcGF0dGVyblR5cGU6IFBhdHRlcm5UeXBlO1xuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBDREsgY29uc3RydWN0IG5vZGUuICovXG4gIHJlYWRvbmx5IG5vZGU6IENvbnN0cnVjdFtcIm5vZGVcIl07XG59XG5cbi8qKlxuICogUGF5bG9hZCBwYXR0ZXJuIGludGVyZmFjZS5cbiAqIFByb3ZpZGVzIGFjY2VzcyB0byBhbGwgdW5kZXJseWluZyByZXNvdXJjZXMgZm9yIGVzY2FwZSBoYXRjaGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFc2NhcGUgaGF0Y2hlcyAtIGZ1bGwgYWNjZXNzIHRvIHVuZGVybHlpbmcgcmVzb3VyY2VzXG4gKiBwYXlsb2FkLmdldERhdGFiYXNlKCkuZ3JhbnRDb25uZWN0KHNvbWVPdGhlckxhbWJkYSk7XG4gKiBwYXlsb2FkLmdldFNlcnZlcigpLmdldExhbWJkYUZ1bmN0aW9uKCkuYWRkRW52aXJvbm1lbnQoXCJDVVNUT01fVkFSXCIsIFwidmFsdWVcIik7XG4gKiBwYXlsb2FkLmdldENkbigpLmdldERpc3RyaWJ1dGlvbigpLmFkZEJlaGF2aW9yKFwiL2N1c3RvbS8qXCIsIGN1c3RvbU9yaWdpbik7XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBheWxvYWQgZXh0ZW5kcyBJUGF0dGVybiB7XG4gIHJlYWRvbmx5IHBhdHRlcm5UeXBlOiBcInBheWxvYWRcIjtcblxuICAvKiogR2V0IHRoZSBQb3N0Z3JlU1FMIGRhdGFiYXNlIChBdXJvcmEgb3IgSW5zdGFuY2UpICovXG4gIGdldERhdGFiYXNlKCk6IFJlbGF0aW9uYWxEYXRhYmFzZTtcblxuICAvKiogR2V0IHRoZSBTZXJ2ZXIgTGFtYmRhIGZ1bmN0aW9uICovXG4gIGdldFNlcnZlcigpOiBMYW1iZGFDb21wdXRlO1xuXG4gIC8qKiBHZXQgdGhlIEltYWdlIE9wdGltaXNhdGlvbiBMYW1iZGEgZnVuY3Rpb24gKi9cbiAgZ2V0SW1hZ2VPcHRpbWlzYXRpb24oKTogTGFtYmRhQ29tcHV0ZTtcblxuICAvKiogR2V0IHRoZSBSZXZhbGlkYXRpb24gTGFtYmRhIGZ1bmN0aW9uICovXG4gIGdldFJldmFsaWRhdGlvbigpOiBMYW1iZGFDb21wdXRlO1xuXG4gIC8qKiBHZXQgdGhlIEFzc2V0cyBTMyBidWNrZXQgKHN0YXRpYyBmaWxlcykgKi9cbiAgZ2V0QXNzZXRzQnVja2V0KCk6IFN0b3JhZ2U7XG5cbiAgLyoqIEdldCB0aGUgQ2FjaGUgUzMgYnVja2V0IChJU1IgY2FjaGUpICovXG4gIGdldENhY2hlQnVja2V0KCk6IFN0b3JhZ2U7XG5cbiAgLyoqIEdldCB0aGUgTWVkaWEgUzMgYnVja2V0ICh1cGxvYWRzKSAqL1xuICBnZXRNZWRpYUJ1Y2tldCgpOiBTdG9yYWdlO1xuXG4gIC8qKiBHZXQgdGhlIFRhZyBDYWNoZSBEeW5hbW9EQiB0YWJsZSAqL1xuICBnZXRUYWdDYWNoZSgpOiBEeW5hbW9EQkRhdGFiYXNlO1xuXG4gIC8qKiBHZXQgdGhlIFJldmFsaWRhdGlvbiBTUVMgcXVldWUgKi9cbiAgZ2V0UmV2YWxpZGF0aW9uUXVldWUoKTogUXVldWVNZXNzYWdpbmc7XG5cbiAgLyoqIEdldCB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24gKi9cbiAgZ2V0Q2RuKCk6IENkbjtcbn1cblxuLyoqXG4gKiBVbmlvbiB0eXBlIHJlcHJlc2VudGluZyBhbnkgcGF0dGVybiBpbnRlcmZhY2UuXG4gKiBVc2Ugd2l0aCB0eXBlIGd1YXJkcyBmb3IgZ2VuZXJpYyBoYW5kbGluZy5cbiAqL1xuZXhwb3J0IHR5cGUgQW55UGF0dGVybiA9IElQYXlsb2FkOyAvLyB8IElOZXh0anMgfCBJUmVtaXggaW4gZnV0dXJlXG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIHBhdHRlcm4gaXMgUGF5bG9hZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGF5bG9hZFBhdHRlcm4ocGF0dGVybjogSVBhdHRlcm4pOiBwYXR0ZXJuIGlzIElQYXlsb2FkIHtcbiAgcmV0dXJuIHBhdHRlcm4ucGF0dGVyblR5cGUgPT09IFwicGF5bG9hZFwiO1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSByZXNvdXJjZSBpcyBhbnkgcGF0dGVybiB0eXBlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQYXR0ZXJuKHJlc291cmNlOiB1bmtub3duKTogcmVzb3VyY2UgaXMgSVBhdHRlcm4ge1xuICByZXR1cm4gKFxuICAgIHJlc291cmNlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHJlc291cmNlID09PSBcIm9iamVjdFwiICYmXG4gICAgXCJwYXR0ZXJuVHlwZVwiIGluIHJlc291cmNlICYmXG4gICAgdHlwZW9mIChyZXNvdXJjZSBhcyBJUGF0dGVybikucGF0dGVyblR5cGUgPT09IFwic3RyaW5nXCJcbiAgKTtcbn1cbiJdfQ==
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvaW50ZXJmYWNlcy9wYXR0ZXJuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7O0FBZ2NILDRDQUVDO0FBS0QsOEJBT0M7QUFqQkQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxPQUFpQjtJQUNoRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLEtBQUssU0FBUyxDQUFDO0FBQzNDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFNBQVMsQ0FBQyxRQUFpQjtJQUN6QyxPQUFPLENBQ0wsUUFBUSxLQUFLLElBQUk7UUFDakIsT0FBTyxRQUFRLEtBQUssUUFBUTtRQUM1QixhQUFhLElBQUksUUFBUTtRQUN6QixPQUFRLFFBQXFCLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FDdkQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR5cGUtc2FmZSBwYXR0ZXJuIGludGVyZmFjZXMuXG4gKlxuICogVGhlc2UgaW50ZXJmYWNlcyBwcm92aWRlIGNvbXBpbGUtdGltZSB0eXBlIHNhZmV0eSBmb3IgcGF0dGVybiByZXNvdXJjZXMuXG4gKiBQYXR0ZXJucyBhcmUgaGlnaC1sZXZlbCBjb25zdHJ1Y3RzIHRoYXQgY29tcG9zZSBtdWx0aXBsZSBpbmZyYXN0cnVjdHVyZSByZXNvdXJjZXNcbiAqIGludG8gYSBjb2hlc2l2ZSwgb3BpbmlvbmF0ZWQgZGVwbG95bWVudCAoZS5nLiwgUGF5bG9hZCBDTVMsIE5leHQuanMpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwYXlsb2FkID0gYXBwLmFkZFBhdHRlcm4oUGF0dGVybkZhY3RvcnkuYnVpbGQoXCJQYXlsb2FkQXBwXCIsIHtcbiAqICAgdHlwZTogXCJwYXlsb2FkXCIsXG4gKiAgIG5hbWU6IFwibXktY21zXCIsXG4gKiAgIHNvdXJjZTogXCIuLi8uLlwiXG4gKiB9KSk7XG4gKiBwYXlsb2FkLmdldERhdGFiYXNlKCk7IC8vIOKckyBBdmFpbGFibGUgb24gSVBheWxvYWRcbiAqIHBheWxvYWQuZ2V0U2VydmVyKCk7IC8vIOKckyBBdmFpbGFibGUgb24gSVBheWxvYWRcbiAqL1xuXG5pbXBvcnQgeyB0eXBlIElDZXJ0aWZpY2F0ZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCB7XG4gIHR5cGUgUmVsYXRpb25hbERhdGFiYXNlLFxuICB0eXBlIER5bmFtb0RCRGF0YWJhc2UsXG4gIHR5cGUgUHJveHlDb25maWcsXG4gIHR5cGUgUmVhZFJlcGxpY2FDb25maWcsXG4gIHR5cGUgQ3JlZGVudGlhbHNDb25maWcsXG4gIHR5cGUgRW5jcnlwdGlvbkNvbmZpZyxcbiAgdHlwZSBBdXJvcmFFbmNyeXB0aW9uQ29uZmlnLFxuICB0eXBlIEF1cm9yYVdyaXRlckNvbmZpZyxcbiAgdHlwZSBBdXJvcmFSZWFkZXJzQ29uZmlnLFxuICB0eXBlIERhdGFiYXNlSW5zaWdodHNDb25maWdcbn0gZnJvbSBcIi4uL2RhdGFiYXNlLmpzXCI7XG5pbXBvcnQgeyB0eXBlIExhbWJkYUNvbXB1dGUgfSBmcm9tIFwiLi4vY29tcHV0ZS5qc1wiO1xuaW1wb3J0IHsgdHlwZSBTdG9yYWdlIH0gZnJvbSBcIi4uL3N0b3JhZ2UuanNcIjtcbmltcG9ydCB7IHR5cGUgUXVldWVNZXNzYWdpbmcgfSBmcm9tIFwiLi4vbWVzc2FnaW5nLmpzXCI7XG5pbXBvcnQgeyB0eXBlIENkbiwgdHlwZSBTbWFydENkbkJlaGF2aW91ciB9IGZyb20gXCIuLi9jZG4uanNcIjtcbmltcG9ydCB0eXBlIHsgTWFuYWdlZERvbWFpbkV4cG9ydHMgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvZG9tYWluVHlwZXMuanNcIjtcblxuLy8gUmUtZXhwb3J0IGRhdGFiYXNlIHR5cGVzIGZvciBjb25zdW1lciBjb252ZW5pZW5jZVxuZXhwb3J0IHR5cGUge1xuICBQcm94eUNvbmZpZyxcbiAgUmVhZFJlcGxpY2FDb25maWcsXG4gIENyZWRlbnRpYWxzQ29uZmlnLFxuICBFbmNyeXB0aW9uQ29uZmlnLFxuICBBdXJvcmFFbmNyeXB0aW9uQ29uZmlnLFxuICBBdXJvcmFXcml0ZXJDb25maWcsXG4gIEF1cm9yYVJlYWRlcnNDb25maWcsXG4gIERhdGFiYXNlSW5zaWdodHNDb25maWdcbn07XG5cbi8qKlxuICogRnVsbCBkYXRhYmFzZSBjb25maWd1cmF0aW9uIGZvciBwYXR0ZXJucy5cbiAqIEV4dGVuZHMgdW5kZXJseWluZyBEYXRhYmFzZUZhY3RvcnkgcHJvcHMgd2l0aCBwYXR0ZXJuLXNwZWNpZmljIGRlZmF1bHRzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNaW5pbWFsIC0gdXNlIGRlZmF1bHRzXG4gKiBkYXRhYmFzZTogeyB0eXBlOiBcIkluc3RhbmNlXCIgfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBQcm9kdWN0aW9uLXJlYWR5IEluc3RhbmNlXG4gKiBkYXRhYmFzZToge1xuICogICB0eXBlOiBcIkluc3RhbmNlXCIsXG4gKiAgIGluc3RhbmNlVHlwZTogXCJ0NGcubGFyZ2VcIixcbiAqICAgYWxsb2NhdGVkU3RvcmFnZTogNTAsXG4gKiAgIG11bHRpQXo6IHRydWUsXG4gKiAgIGRhdGFiYXNlSW5zaWdodHM6IHsgbW9kZTogXCJhZHZhbmNlZFwiIH0sXG4gKiAgIGVuY3J5cHRpb246IHsgc3RvcmFnZUtleTogeyB1c2VDTUs6IHRydWUgfSB9XG4gKiB9XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEF1cm9yYSB3aXRoIHJlYWRlcnNcbiAqIGRhdGFiYXNlOiB7XG4gKiAgIHR5cGU6IFwiQXVyb3JhXCIsXG4gKiAgIHJlYWRlcnM6IHsgY291bnQ6IDIgfSxcbiAqICAgYWxsb3dWcGNBY2Nlc3M6IHRydWVcbiAqIH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXlsb2FkRGF0YWJhc2VDb25maWcge1xuICAvKiogRGF0YWJhc2UgdHlwZTogXCJJbnN0YW5jZVwiIG9yIFwiQXVyb3JhXCIuIERlZmF1bHQ6IFwiSW5zdGFuY2VcIiAqL1xuICB0eXBlPzogXCJJbnN0YW5jZVwiIHwgXCJBdXJvcmFcIjtcbiAgLyoqIERhdGFiYXNlIG5hbWUuIERlZmF1bHQ6IGRlcml2ZWQgZnJvbSBwYXR0ZXJuIG5hbWUgKi9cbiAgZGF0YWJhc2VOYW1lPzogc3RyaW5nO1xuICAvKiogRGF0YWJhc2UgZW5naW5lLiBEZWZhdWx0OiBcInBvc3RncmVzcWxcIiAqL1xuICBkYXRhYmFzZUVuZ2luZT86IFwicG9zdGdyZXNxbFwiIHwgXCJteXNxbFwiO1xuXG4gIC8qKiBFbmFibGUgZGVsZXRpb24gcHJvdGVjdGlvbi4gRGVmYXVsdDogdHJ1ZSAqL1xuICBkZWxldGlvblByb3RlY3Rpb24/OiBib29sZWFuO1xuICAvKiogQmFja3VwIHJldGVudGlvbiBpbiBkYXlzICgxLTM1KS4gRGVmYXVsdDogNyAqL1xuICBiYWNrdXBSZXRlbnRpb24/OiBudW1iZXI7XG4gIC8qKiBEYXRhYmFzZSBwb3J0LiBEZWZhdWx0OiBlbmdpbmUtc3BlY2lmaWMgKDU0MzIgZm9yIFBvc3RncmVTUUwpICovXG4gIHBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqIE1ha2UgZGF0YWJhc2UgcHVibGljbHkgYWNjZXNzaWJsZSAoZm9yIGxvY2FsIGRldmVsb3BtZW50KS4gRGVmYXVsdDogZmFsc2UgKi9cbiAgcHVibGljbHlBY2Nlc3NpYmxlPzogYm9vbGVhbjtcbiAgLyoqIElQIENJRFIgdG8gYWxsb3cgd2hlbiBwdWJsaWNseSBhY2Nlc3NpYmxlIChlLmcuLCBcIjIwMy4wLjExMy4wLzMyXCIpICovXG4gIGFsbG93ZWRJcENpZHI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluc3RhbmNlIHR5cGUgZm9yIFJEUyBJbnN0YW5jZSBkYXRhYmFzZXMuXG4gICAqIEV4YW1wbGVzOiBcInQ0Zy5taWNyb1wiLCBcInQ0Zy5zbWFsbFwiLCBcInQ0Zy5sYXJnZVwiLCBcInI2Zy5sYXJnZVwiXG4gICAqIERlZmF1bHQ6IFwidDRnLnNtYWxsXCJcbiAgICogT25seSBhcHBsaWVzIHdoZW4gdHlwZTogXCJJbnN0YW5jZVwiXG4gICAqL1xuICBpbnN0YW5jZVR5cGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbGxvY2F0ZWQgc3RvcmFnZSBpbiBHQiBmb3IgUkRTIEluc3RhbmNlLlxuICAgKiBEZWZhdWx0OiAyMFxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0eXBlOiBcIkluc3RhbmNlXCJcbiAgICovXG4gIGFsbG9jYXRlZFN0b3JhZ2U/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBFbmFibGUgTXVsdGktQVogZGVwbG95bWVudCBmb3IgaGlnaCBhdmFpbGFiaWxpdHkuXG4gICAqIENyZWF0ZXMgYSBzdGFuZGJ5IHJlcGxpY2EgaW4gYSBkaWZmZXJlbnQgQVouXG4gICAqIE9ubHkgYXBwbGllcyB3aGVuIHR5cGU6IFwiSW5zdGFuY2VcIlxuICAgKi9cbiAgbXVsdGlBej86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSZWFkIHJlcGxpY2EgY29uZmlndXJhdGlvbiBmb3IgUkRTIEluc3RhbmNlLlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZXhwbGljaXRseSBkaXNhYmxlLlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0eXBlOiBcIkluc3RhbmNlXCJcbiAgICovXG4gIHJlYWRSZXBsaWNhPzogUmVhZFJlcGxpY2FDb25maWcgfCBmYWxzZTtcblxuICAvKipcbiAgICogQXVyb3JhIHdyaXRlciBpbnN0YW5jZSBjb25maWd1cmF0aW9uLlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0eXBlOiBcIkF1cm9yYVwiXG4gICAqL1xuICB3cml0ZXI/OiBBdXJvcmFXcml0ZXJDb25maWc7XG4gIC8qKlxuICAgKiBBdXJvcmEgcmVhZGVyIGluc3RhbmNlcyBjb25maWd1cmF0aW9uLlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZXhwbGljaXRseSBkaXNhYmxlIHJlYWRlcnMuXG4gICAqIE9ubHkgYXBwbGllcyB3aGVuIHR5cGU6IFwiQXVyb3JhXCJcbiAgICovXG4gIHJlYWRlcnM/OiBBdXJvcmFSZWFkZXJzQ29uZmlnIHwgZmFsc2U7XG4gIC8qKlxuICAgKiBBbGxvdyBhY2Nlc3MgZnJvbSBWUEMgQ0lEUiAoYXZvaWRzIGNyb3NzLXN0YWNrIGN5Y2xpYyBkZXBlbmRlbmNpZXMpLlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0eXBlOiBcIkF1cm9yYVwiXG4gICAqL1xuICBhbGxvd1ZwY0FjY2Vzcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmhhbmNlZCBtb25pdG9yaW5nIGludGVydmFsLlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0eXBlOiBcIkF1cm9yYVwiXG4gICAqL1xuICBtb25pdG9yaW5nSW50ZXJ2YWw/OiBEdXJhdGlvbjtcbiAgLyoqXG4gICAqIFByZWZlcnJlZCBtYWludGVuYW5jZSB3aW5kb3cgKGUuZy4sIFwic3VuOjA1OjAwLXN1bjowNjowMFwiKS5cbiAgICogT25seSBhcHBsaWVzIHdoZW4gdHlwZTogXCJBdXJvcmFcIlxuICAgKi9cbiAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERhdGFiYXNlIEluc2lnaHRzIGNvbmZpZ3VyYXRpb24uXG4gICAqIFNldCB0byBmYWxzZSB0byBleHBsaWNpdGx5IGRpc2FibGUuXG4gICAqIEBleGFtcGxlIHsgbW9kZTogXCJhZHZhbmNlZFwiIH1cbiAgICovXG4gIGRhdGFiYXNlSW5zaWdodHM/OiBEYXRhYmFzZUluc2lnaHRzQ29uZmlnIHwgZmFsc2U7XG4gIC8qKlxuICAgKiBSRFMgUHJveHkgY29uZmlndXJhdGlvbiBmb3IgY29ubmVjdGlvbiBwb29saW5nLlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZXhwbGljaXRseSBkaXNhYmxlLlxuICAgKiBAZXhhbXBsZSB7IG1heENvbm5lY3Rpb25zOiAxMDAgfVxuICAgKi9cbiAgcHJveHk/OiBQcm94eUNvbmZpZyB8IGZhbHNlO1xuICAvKipcbiAgICogQ3JlZGVudGlhbHMgY29uZmlndXJhdGlvbiAodXNlcm5hbWUsIHJvdGF0aW9uKS5cbiAgICovXG4gIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHNDb25maWc7XG4gIC8qKlxuICAgKiBFbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqIEZvciBJbnN0YW5jZTogRW5jcnlwdGlvbkNvbmZpZ1xuICAgKiBGb3IgQXVyb3JhOiBBdXJvcmFFbmNyeXB0aW9uQ29uZmlnXG4gICAqIEBleGFtcGxlIHsgc3RvcmFnZUtleTogeyB1c2VDTUs6IHRydWUgfSB9XG4gICAqL1xuICBlbmNyeXB0aW9uPzogRW5jcnlwdGlvbkNvbmZpZyB8IEF1cm9yYUVuY3J5cHRpb25Db25maWc7XG5cbiAgLyoqIEFSTiBvciBpZGVudGlmaWVyIG9mIHNuYXBzaG90IHRvIHJlc3RvcmUgZnJvbSAqL1xuICBzbmFwc2hvdElkZW50aWZpZXI/OiBzdHJpbmc7XG4gIC8qKiBVc2VybmFtZSBmcm9tIHRoZSBzbmFwc2hvdCAocmVxdWlyZWQgd2hlbiByZXN0b3JpbmcpICovXG4gIHNuYXBzaG90VXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGFtYmRhIGZ1bmN0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIHBhdHRlcm4gc3ViLWZ1bmN0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogc2VydmVyOiB7IG1lbW9yeVNpemU6IDIwNDgsIHRpbWVvdXQ6IDYwIH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuTGFtYmRhQ29uZmlnIHtcbiAgLyoqIE1lbW9yeSBzaXplIGluIE1CLiBSYW5nZTogMTI4LTEwMjQwLiAqL1xuICBtZW1vcnlTaXplPzogbnVtYmVyO1xuICAvKiogVGltZW91dCBpbiBzZWNvbmRzLiBSYW5nZTogMS05MDAuICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBFcGhlbWVyYWwgc3RvcmFnZSBzaXplIGluIE1CLiBSYW5nZTogNTEyLTEwMjQwLiBEZWZhdWx0OiA1MTIuICovXG4gIGVwaGVtZXJhbFN0b3JhZ2VTaXplPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEZ1bGwgY29tcHV0ZSBjb25maWd1cmF0aW9uIGZvciBwYXR0ZXJucy5cbiAqIEFsbG93cyBwZXItZnVuY3Rpb24gY29uZmlndXJhdGlvbiBmb3IgZWFjaCBMYW1iZGEgaW4gdGhlIHBhdHRlcm4uXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbmZpZ3VyZSBpbmRpdmlkdWFsIGZ1bmN0aW9uc1xuICogY29tcHV0ZToge1xuICogICBzZXJ2ZXI6IHsgbWVtb3J5U2l6ZTogMjA0OCwgdGltZW91dDogNjAgfSxcbiAqICAgaW1hZ2VPcHRpbWlzYXRpb246IHsgbWVtb3J5U2l6ZTogMjA0OCB9LFxuICogICByZXZhbGlkYXRpb246IHsgbWVtb3J5U2l6ZTogMTAyNCwgdGltZW91dDogNjAwIH1cbiAqIH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXlsb2FkQ29tcHV0ZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBTZXJ2ZXIgTGFtYmRhIGNvbmZpZ3VyYXRpb24uXG4gICAqIEhhbmRsZXMgbWFpbiBhcHBsaWNhdGlvbiByZXF1ZXN0cy5cbiAgICogRGVmYXVsdHM6IG1lbW9yeVNpemU9MTUzNiwgdGltZW91dD0zMFxuICAgKi9cbiAgc2VydmVyPzogUGF0dGVybkxhbWJkYUNvbmZpZztcbiAgLyoqXG4gICAqIEltYWdlIG9wdGltaXNhdGlvbiBMYW1iZGEgY29uZmlndXJhdGlvbi5cbiAgICogSGFuZGxlcyBOZXh0LmpzIGltYWdlIG9wdGltaXNhdGlvbi5cbiAgICogRGVmYXVsdHM6IG1lbW9yeVNpemU9MTUzNiwgdGltZW91dD0zMFxuICAgKi9cbiAgaW1hZ2VPcHRpbWlzYXRpb24/OiBQYXR0ZXJuTGFtYmRhQ29uZmlnO1xuICAvKipcbiAgICogUmV2YWxpZGF0aW9uIExhbWJkYSBjb25maWd1cmF0aW9uLlxuICAgKiBIYW5kbGVzIElTUiByZXZhbGlkYXRpb24gZnJvbSBTUVMgcXVldWUuXG4gICAqIERlZmF1bHRzOiBtZW1vcnlTaXplPTc2OCwgdGltZW91dD0zMDBcbiAgICovXG4gIHJldmFsaWRhdGlvbj86IFBhdHRlcm5MYW1iZGFDb25maWc7XG59XG5cbi8qKlxuICogUzMgYnVja2V0IGNvbmZpZ3VyYXRpb24gZm9yIHBhdHRlcm4gc3ViLWJ1Y2tldHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVyblN0b3JhZ2VCdWNrZXRDb25maWcge1xuICAvKiogRW5hYmxlIHZlcnNpb25pbmcuIERlZmF1bHQ6IGZhbHNlICovXG4gIHZlcnNpb25lZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRnVsbCBzdG9yYWdlIGNvbmZpZ3VyYXRpb24gZm9yIHBhdHRlcm5zLlxuICogQWxsb3dzIHBlci1idWNrZXQgY29uZmlndXJhdGlvbiBmb3IgZWFjaCBTMyBidWNrZXQgaW4gdGhlIHBhdHRlcm4uXG4gKlxuICogQGV4YW1wbGVcbiAqIHN0b3JhZ2U6IHtcbiAqICAgYXNzZXRzOiB7IHZlcnNpb25lZDogdHJ1ZSB9LFxuICogICBjYWNoZTogeyB2ZXJzaW9uZWQ6IGZhbHNlIH0sXG4gKiAgIG1lZGlhOiB7IHZlcnNpb25lZDogdHJ1ZSB9XG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF5bG9hZFN0b3JhZ2VDb25maWcge1xuICAvKiogQXNzZXRzIGJ1Y2tldCAoc3RhdGljIGZpbGVzKSAqL1xuICBhc3NldHM/OiBQYXR0ZXJuU3RvcmFnZUJ1Y2tldENvbmZpZztcbiAgLyoqIENhY2hlIGJ1Y2tldCAoSVNSIGNhY2hlKSAqL1xuICBjYWNoZT86IFBhdHRlcm5TdG9yYWdlQnVja2V0Q29uZmlnO1xuICAvKiogTWVkaWEgYnVja2V0ICh1cGxvYWRzKSAqL1xuICBtZWRpYT86IFBhdHRlcm5TdG9yYWdlQnVja2V0Q29uZmlnO1xufVxuXG4vKipcbiAqIFNRUyBxdWV1ZSBjb25maWd1cmF0aW9uIGZvciBwYXR0ZXJuIG1lc3NhZ2luZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuUXVldWVDb25maWcge1xuICAvKiogVmlzaWJpbGl0eSB0aW1lb3V0IGluIHNlY29uZHMuIERlZmF1bHQ6IG1hdGNoZXMgcmV2YWxpZGF0aW9uIHRpbWVvdXQgKi9cbiAgdmlzaWJpbGl0eVRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBNZXNzYWdlIHJldGVudGlvbiBwZXJpb2QgaW4gc2Vjb25kcy4gRGVmYXVsdDogMzQ1NjAwICg0IGRheXMpICovXG4gIG1lc3NhZ2VSZXRlbnRpb25QZXJpb2Q/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIG1lc3NhZ2Ugc2l6ZSBpbiBieXRlcy4gRGVmYXVsdDogMjYyMTQ0ICgyNTYgS0IpICovXG4gIG1heE1lc3NhZ2VTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogRGVhZCBsZXR0ZXIgcXVldWUgY29uZmlndXJhdGlvbi5cbiAgICogU2V0IHRvIGZhbHNlIHRvIGV4cGxpY2l0bHkgZGlzYWJsZS5cbiAgICovXG4gIGRlYWRMZXR0ZXJRdWV1ZT86XG4gICAgfCB7XG4gICAgICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgICBtYXhSZWNlaXZlQ291bnQ/OiBudW1iZXI7XG4gICAgICB9XG4gICAgfCBmYWxzZTtcbn1cblxuLyoqXG4gKiBGdWxsIG1lc3NhZ2luZyBjb25maWd1cmF0aW9uIGZvciBwYXR0ZXJucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogbWVzc2FnaW5nOiB7XG4gKiAgIHJldmFsaWRhdGlvblF1ZXVlOiB7XG4gKiAgICAgdmlzaWJpbGl0eVRpbWVvdXQ6IDYwMCxcbiAqICAgICBkZWFkTGV0dGVyUXVldWU6IHsgZW5hYmxlZDogdHJ1ZSwgbWF4UmVjZWl2ZUNvdW50OiA1IH1cbiAqICAgfVxuICogfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBheWxvYWRNZXNzYWdpbmdDb25maWcge1xuICAvKiogUmV2YWxpZGF0aW9uIHF1ZXVlIGNvbmZpZ3VyYXRpb24gKi9cbiAgcmV2YWxpZGF0aW9uUXVldWU/OiBQYXR0ZXJuUXVldWVDb25maWc7XG59XG5cbi8qKlxuICogQ0ROIGNvbmZpZ3VyYXRpb24gZm9yIFBheWxvYWQgcGF0dGVybi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXlsb2FkQ2RuQ29uZmlnIHtcbiAgLyoqIEN1c3RvbSBkb21haW4gbmFtZXMgZm9yIENsb3VkRnJvbnQgKi9cbiAgZG9tYWluTmFtZXM/OiBzdHJpbmdbXTtcbiAgLyoqIEFDTSBjZXJ0aWZpY2F0ZSBmb3IgY3VzdG9tIGRvbWFpbnMgKG11c3QgYmUgaW4gdXMtZWFzdC0xKSAqL1xuICBjZXJ0aWZpY2F0ZT86IElDZXJ0aWZpY2F0ZTtcbiAgLyoqIEFDTSBjZXJ0aWZpY2F0ZSBBUk4gKGFsdGVybmF0aXZlIHRvIGNlcnRpZmljYXRlIC0gbXVzdCBiZSBpbiB1cy1lYXN0LTEpICovXG4gIGNlcnRpZmljYXRlQXJuPzogc3RyaW5nO1xuICAvKiogQWRkaXRpb25hbCBDRE4gYmVoYXZpb3VycyAqL1xuICBiZWhhdmlvdXJzPzogU21hcnRDZG5CZWhhdmlvdXJbXTtcbn1cblxuLyoqXG4gKiBQYXlsb2FkIHBhdHRlcm4gcHJvcHMuXG4gKlxuICogQ29uZmlndXJlcyBhIFBheWxvYWQgQ01TIGRlcGxveW1lbnQgd2l0aCBhbGwgcmVxdWlyZWQgaW5mcmFzdHJ1Y3R1cmU6XG4gKiAtIFJEUyBQb3N0Z3JlU1FMIGRhdGFiYXNlIChBdXJvcmEgb3IgSW5zdGFuY2UpXG4gKiAtIFMzIGJ1Y2tldHMgKGFzc2V0cywgY2FjaGUsIG1lZGlhKVxuICogLSBEeW5hbW9EQiB0YWJsZSAodGFnIGNhY2hlKVxuICogLSBTUVMgRklGTyBxdWV1ZSAocmV2YWxpZGF0aW9uKVxuICogLSBMYW1iZGEgZnVuY3Rpb25zIChzZXJ2ZXIsIGltYWdlIG9wdGltaXNhdGlvbiwgcmV2YWxpZGF0aW9uKVxuICogLSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNaW5pbWFsIC0gd29ya3Mgb3V0IG9mIGJveFxuICogYXBwLmFkZFBhdHRlcm4oUGF0dGVybkZhY3RvcnkuYnVpbGQoXCJQYXlsb2FkQXBwXCIsIHtcbiAqICAgdHlwZTogXCJwYXlsb2FkXCIsXG4gKiAgIG5hbWU6IFwibXktY21zXCJcbiAqIH0pKTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2l0aCBjdXN0b20gZG9tYWluIChhdXRvLWNyZWF0ZXMgY2VydGlmaWNhdGUgKyBETlMpXG4gKiBhcHAuYWRkUGF0dGVybihQYXR0ZXJuRmFjdG9yeS5idWlsZChcIlBheWxvYWRBcHBcIiwge1xuICogICB0eXBlOiBcInBheWxvYWRcIixcbiAqICAgbmFtZTogXCJteS1jbXNcIixcbiAqICAgZG9tYWluOiBcImNtcy5leGFtcGxlLmNvbVwiXG4gKiB9KSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbWlzZWRcbiAqIGFwcC5hZGRQYXR0ZXJuKFBhdHRlcm5GYWN0b3J5LmJ1aWxkKFwiUGF5bG9hZEFwcFwiLCB7XG4gKiAgIHR5cGU6IFwicGF5bG9hZFwiLFxuICogICBuYW1lOiBcIm15LWNtc1wiLFxuICogICBkYXRhYmFzZToge1xuICogICAgIHR5cGU6IFwiSW5zdGFuY2VcIixcbiAqICAgICBwdWJsaWNseUFjY2Vzc2libGU6IHRydWVcbiAqICAgfSxcbiAqICAgY29tcHV0ZToge1xuICogICAgIHNlcnZlcjogeyBtZW1vcnlTaXplOiAyMDQ4IH1cbiAqICAgfVxuICogfSkpO1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElQYXlsb2FkUHJvcHMge1xuICAvKiogUGF0dGVybiB0eXBlIGRpc2NyaW1pbmF0b3IgKi9cbiAgdHlwZTogXCJwYXlsb2FkXCI7XG4gIC8qKiBQYXR0ZXJuIG5hbWUgKHVzZWQgZm9yIHJlc291cmNlIG5hbWluZykgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZG9tYWluIGZvciB0aGUgUGF5bG9hZCBhcHBsaWNhdGlvbi5cbiAgICogV2hlbiBwcm92aWRlZCwgYXV0b21hdGljYWxseTpcbiAgICogLSBMb29rcyB1cCB0aGUgUm91dGU1MyBob3N0ZWQgem9uZVxuICAgKiAtIENyZWF0ZXMgYW4gQUNNIGNlcnRpZmljYXRlIHdpdGggRE5TIHZhbGlkYXRpb24gKGluIHVzLWVhc3QtMSlcbiAgICogLSBDb25maWd1cmVzIENsb3VkRnJvbnQgd2l0aCB0aGUgY2VydGlmaWNhdGVcbiAgICogLSBDcmVhdGVzIGFuIEEgcmVjb3JkIChhbGlhcykgcG9pbnRpbmcgdG8gQ2xvdWRGcm9udFxuICAgKlxuICAgKiBSZXF1aXJlczogQSBSb3V0ZTUzIGhvc3RlZCB6b25lIGZvciB0aGUgZG9tYWluIG11c3QgZXhpc3QuXG4gICAqXG4gICAqIEBleGFtcGxlIFwiY21zLmV4YW1wbGUuY29tXCJcbiAgICovXG4gIGRvbWFpbj86IHN0cmluZztcblxuICAvKiogSW1wb3J0IHpvbmUgYW5kIGNlcnQgZnJvbSBhIG1hbmFnZWQgZG9tYWluIHN0YWNrIGluc3RlYWQgb2YgY3JlYXRpbmcgaW5saW5lICovXG4gIG1hbmFnZWREb21haW4/OiBNYW5hZ2VkRG9tYWluRXhwb3J0cztcblxuICAvKiogRGF0YWJhc2UgY29uZmlndXJhdGlvbiAqL1xuICBkYXRhYmFzZT86IFBheWxvYWREYXRhYmFzZUNvbmZpZztcbiAgLyoqIENvbXB1dGUgKExhbWJkYSkgY29uZmlndXJhdGlvbiAqL1xuICBjb21wdXRlPzogUGF5bG9hZENvbXB1dGVDb25maWc7XG4gIC8qKiBTdG9yYWdlIChTMykgY29uZmlndXJhdGlvbiAqL1xuICBzdG9yYWdlPzogUGF5bG9hZFN0b3JhZ2VDb25maWc7XG4gIC8qKiBNZXNzYWdpbmcgKFNRUykgY29uZmlndXJhdGlvbiAqL1xuICBtZXNzYWdpbmc/OiBQYXlsb2FkTWVzc2FnaW5nQ29uZmlnO1xuICAvKiogQ0ROIChDbG91ZEZyb250KSBjb25maWd1cmF0aW9uIC0gZm9yIGFkdmFuY2VkIHVzZS4gVXNlIGBkb21haW5gIGZvciBzaW1wbGUgc2V0dXAuICovXG4gIGNkbj86IFBheWxvYWRDZG5Db25maWc7XG5cbiAgLyoqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciBzZXJ2ZXIgTGFtYmRhICovXG4gIGVudmlyb25tZW50PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBVbmlvbiBvZiBhbGwgcGF0dGVybiBwcm9wcy5cbiAqIEV4dGVuZCB0aGlzIHdoZW4gYWRkaW5nIG5ldyBwYXR0ZXJucyAoZS5nLiwgSU5leHRqc1Byb3BzLCBJUmVtaXhQcm9wcykuXG4gKi9cbmV4cG9ydCB0eXBlIElQYXR0ZXJuUHJvcHMgPSBJUGF5bG9hZFByb3BzOyAvLyB8IElOZXh0anNQcm9wcyB8IElSZW1peFByb3BzIGluIGZ1dHVyZVxuXG4vKipcbiAqIFBhdHRlcm4gdHlwZSBkaXNjcmltaW5hdG9yLlxuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuVHlwZSA9IFwicGF5bG9hZFwiOyAvLyB8IFwibmV4dGpzXCIgfCBcInJlbWl4XCIgaW4gZnV0dXJlXG5cbi8qKlxuICogQmFzZSBwYXR0ZXJuIGludGVyZmFjZS5cbiAqIEFsbCBwYXR0ZXJucyBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBhdHRlcm4ge1xuICAvKiogVGhlIHR5cGUgb2YgcGF0dGVybi4gVXNlZCBmb3IgcnVudGltZSB0eXBlIG5hcnJvd2luZy4gKi9cbiAgcmVhZG9ubHkgcGF0dGVyblR5cGU6IFBhdHRlcm5UeXBlO1xuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBDREsgY29uc3RydWN0IG5vZGUuICovXG4gIHJlYWRvbmx5IG5vZGU6IENvbnN0cnVjdFtcIm5vZGVcIl07XG59XG5cbi8qKlxuICogUGF5bG9hZCBwYXR0ZXJuIGludGVyZmFjZS5cbiAqIFByb3ZpZGVzIGFjY2VzcyB0byBhbGwgdW5kZXJseWluZyByZXNvdXJjZXMgZm9yIGVzY2FwZSBoYXRjaGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFc2NhcGUgaGF0Y2hlcyAtIGZ1bGwgYWNjZXNzIHRvIHVuZGVybHlpbmcgcmVzb3VyY2VzXG4gKiBwYXlsb2FkLmdldERhdGFiYXNlKCkuZ3JhbnRDb25uZWN0KHNvbWVPdGhlckxhbWJkYSk7XG4gKiBwYXlsb2FkLmdldFNlcnZlcigpLmdldExhbWJkYUZ1bmN0aW9uKCkuYWRkRW52aXJvbm1lbnQoXCJDVVNUT01fVkFSXCIsIFwidmFsdWVcIik7XG4gKiBwYXlsb2FkLmdldENkbigpLmdldERpc3RyaWJ1dGlvbigpLmFkZEJlaGF2aW9yKFwiL2N1c3RvbS8qXCIsIGN1c3RvbU9yaWdpbik7XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBheWxvYWQgZXh0ZW5kcyBJUGF0dGVybiB7XG4gIHJlYWRvbmx5IHBhdHRlcm5UeXBlOiBcInBheWxvYWRcIjtcblxuICAvKiogR2V0IHRoZSBQb3N0Z3JlU1FMIGRhdGFiYXNlIChBdXJvcmEgb3IgSW5zdGFuY2UpICovXG4gIGdldERhdGFiYXNlKCk6IFJlbGF0aW9uYWxEYXRhYmFzZTtcblxuICAvKiogR2V0IHRoZSBTZXJ2ZXIgTGFtYmRhIGZ1bmN0aW9uICovXG4gIGdldFNlcnZlcigpOiBMYW1iZGFDb21wdXRlO1xuXG4gIC8qKiBHZXQgdGhlIEltYWdlIE9wdGltaXNhdGlvbiBMYW1iZGEgZnVuY3Rpb24gKi9cbiAgZ2V0SW1hZ2VPcHRpbWlzYXRpb24oKTogTGFtYmRhQ29tcHV0ZTtcblxuICAvKiogR2V0IHRoZSBSZXZhbGlkYXRpb24gTGFtYmRhIGZ1bmN0aW9uICovXG4gIGdldFJldmFsaWRhdGlvbigpOiBMYW1iZGFDb21wdXRlO1xuXG4gIC8qKiBHZXQgdGhlIEFzc2V0cyBTMyBidWNrZXQgKHN0YXRpYyBmaWxlcykgKi9cbiAgZ2V0QXNzZXRzQnVja2V0KCk6IFN0b3JhZ2U7XG5cbiAgLyoqIEdldCB0aGUgQ2FjaGUgUzMgYnVja2V0IChJU1IgY2FjaGUpICovXG4gIGdldENhY2hlQnVja2V0KCk6IFN0b3JhZ2U7XG5cbiAgLyoqIEdldCB0aGUgTWVkaWEgUzMgYnVja2V0ICh1cGxvYWRzKSAqL1xuICBnZXRNZWRpYUJ1Y2tldCgpOiBTdG9yYWdlO1xuXG4gIC8qKiBHZXQgdGhlIFRhZyBDYWNoZSBEeW5hbW9EQiB0YWJsZSAqL1xuICBnZXRUYWdDYWNoZSgpOiBEeW5hbW9EQkRhdGFiYXNlO1xuXG4gIC8qKiBHZXQgdGhlIFJldmFsaWRhdGlvbiBTUVMgcXVldWUgKi9cbiAgZ2V0UmV2YWxpZGF0aW9uUXVldWUoKTogUXVldWVNZXNzYWdpbmc7XG5cbiAgLyoqIEdldCB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24gKi9cbiAgZ2V0Q2RuKCk6IENkbjtcbn1cblxuLyoqXG4gKiBVbmlvbiB0eXBlIHJlcHJlc2VudGluZyBhbnkgcGF0dGVybiBpbnRlcmZhY2UuXG4gKiBVc2Ugd2l0aCB0eXBlIGd1YXJkcyBmb3IgZ2VuZXJpYyBoYW5kbGluZy5cbiAqL1xuZXhwb3J0IHR5cGUgQW55UGF0dGVybiA9IElQYXlsb2FkOyAvLyB8IElOZXh0anMgfCBJUmVtaXggaW4gZnV0dXJlXG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIHBhdHRlcm4gaXMgUGF5bG9hZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGF5bG9hZFBhdHRlcm4ocGF0dGVybjogSVBhdHRlcm4pOiBwYXR0ZXJuIGlzIElQYXlsb2FkIHtcbiAgcmV0dXJuIHBhdHRlcm4ucGF0dGVyblR5cGUgPT09IFwicGF5bG9hZFwiO1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSByZXNvdXJjZSBpcyBhbnkgcGF0dGVybiB0eXBlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQYXR0ZXJuKHJlc291cmNlOiB1bmtub3duKTogcmVzb3VyY2UgaXMgSVBhdHRlcm4ge1xuICByZXR1cm4gKFxuICAgIHJlc291cmNlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHJlc291cmNlID09PSBcIm9iamVjdFwiICYmXG4gICAgXCJwYXR0ZXJuVHlwZVwiIGluIHJlc291cmNlICYmXG4gICAgdHlwZW9mIChyZXNvdXJjZSBhcyBJUGF0dGVybikucGF0dGVyblR5cGUgPT09IFwic3RyaW5nXCJcbiAgKTtcbn1cbiJdfQ==
|