@fjall/components-infrastructure 0.80.4 → 0.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/__tests__/setup.js +1 -78
- package/dist/lib/app.d.ts +5 -0
- package/dist/lib/app.js +29 -1
- package/dist/lib/config/aws/ecrDefaultImage.js +23 -21
- package/dist/lib/patterns/aws/compute.d.ts +29 -21
- package/dist/lib/patterns/aws/compute.js +10 -3
- package/dist/lib/patterns/aws/database.d.ts +1 -0
- package/dist/lib/patterns/aws/database.js +33 -3
- package/dist/lib/patterns/aws/storage.d.ts +1 -0
- package/dist/lib/patterns/aws/storage.js +23 -1
- package/dist/lib/resources/aws/compute/ecs.d.ts +50 -2
- package/dist/lib/resources/aws/compute/ecs.js +134 -18
- package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +2 -1
- package/dist/lib/resources/aws/compute/ecsFreeTier.js +1 -352
- package/dist/lib/resources/aws/compute/ecsSpot.d.ts +2 -1
- package/dist/lib/resources/aws/compute/ecsSpot.js +1 -332
- package/dist/lib/resources/aws/compute/utilities/capacityProviderDrainWaiter.js +1 -180
- package/dist/lib/resources/aws/monitoring/monitoringRole.js +61 -4
- package/dist/lib/resources/aws/utilities/cfnOutput.js +1 -13
- package/package.json +3 -3
- package/dist/lib/patterns/aws/cdn.d.ts +0 -133
- package/dist/lib/patterns/aws/cdn.js +0 -216
- package/dist/lib/patterns/aws/dynamodb.d.ts +0 -66
- package/dist/lib/patterns/aws/dynamodb.js +0 -106
- package/dist/lib/patterns/aws/loadBalancer.d.ts +0 -163
- package/dist/lib/patterns/aws/loadBalancer.js +0 -278
- package/dist/lib/patterns/aws/queue.d.ts +0 -61
- package/dist/lib/patterns/aws/queue.js +0 -103
- package/dist/lib/resources/aws/cdn/cloudFront.d.ts +0 -65
- package/dist/lib/resources/aws/cdn/cloudFront.js +0 -135
- package/dist/lib/resources/aws/cdn/index.d.ts +0 -1
- package/dist/lib/resources/aws/cdn/index.js +0 -18
- package/dist/lib/resources/aws/compute/capacityProviderDrainWaiter.d.ts +0 -20
- package/dist/lib/resources/aws/compute/capacityProviderDrainWaiter.js +0 -180
- package/dist/lib/resources/aws/database/dynamodb.d.ts +0 -70
- package/dist/lib/resources/aws/database/dynamodb.js +0 -170
- package/dist/lib/resources/aws/database/rdsDeletionWaiter.d.ts +0 -33
- package/dist/lib/resources/aws/database/rdsDeletionWaiter.js +0 -74
- package/dist/lib/resources/aws/messaging/index.d.ts +0 -1
- package/dist/lib/resources/aws/messaging/index.js +0 -18
- package/dist/lib/resources/aws/messaging/sqs.d.ts +0 -65
- package/dist/lib/resources/aws/messaging/sqs.js +0 -195
- package/dist/lib/resources/aws/networking/vpcEndpoint.d.ts +0 -20
- package/dist/lib/resources/aws/networking/vpcEndpoint.js +0 -59
- package/dist/lib/resources/aws/networking/vpcEndpoints.d.ts +0 -71
- package/dist/lib/resources/aws/networking/vpcEndpoints.js +0 -125
- package/dist/lib/resources/aws/utilities/cfnOutput.test.d.ts +0 -1
- package/dist/lib/resources/aws/utilities/cfnOutput.test.js +0 -102
- package/dist/lib/utils/sanitizeCfnKey.d.ts +0 -5
- package/dist/lib/utils/sanitizeCfnKey.js +0 -11
- package/dist/lib/utils/tagResource.d.ts +0 -24
- package/dist/lib/utils/tagResource.js +0 -30
|
@@ -19,6 +19,7 @@ class MonitoringRoleFactory {
|
|
|
19
19
|
inlinePolicies: {
|
|
20
20
|
MonitoringPolicy: new aws_iam_1.PolicyDocument({
|
|
21
21
|
statements: [
|
|
22
|
+
// CloudWatch Metrics - all resources
|
|
22
23
|
new aws_iam_1.PolicyStatement({
|
|
23
24
|
effect: aws_iam_1.Effect.ALLOW,
|
|
24
25
|
actions: [
|
|
@@ -28,12 +29,15 @@ class MonitoringRoleFactory {
|
|
|
28
29
|
],
|
|
29
30
|
resources: ["*"]
|
|
30
31
|
}),
|
|
32
|
+
// ECS - scoped to app resources
|
|
31
33
|
new aws_iam_1.PolicyStatement({
|
|
32
34
|
effect: aws_iam_1.Effect.ALLOW,
|
|
33
35
|
actions: [
|
|
34
36
|
"ecs:DescribeServices",
|
|
35
37
|
"ecs:DescribeTasks",
|
|
36
|
-
"ecs:ListTasks"
|
|
38
|
+
"ecs:ListTasks",
|
|
39
|
+
"ecs:DescribeClusters",
|
|
40
|
+
"ecs:ListServices"
|
|
37
41
|
],
|
|
38
42
|
resources: ["*"],
|
|
39
43
|
conditions: {
|
|
@@ -42,11 +46,64 @@ class MonitoringRoleFactory {
|
|
|
42
46
|
}
|
|
43
47
|
}
|
|
44
48
|
}),
|
|
49
|
+
// RDS - describe and monitoring
|
|
45
50
|
new aws_iam_1.PolicyStatement({
|
|
46
51
|
effect: aws_iam_1.Effect.ALLOW,
|
|
47
|
-
actions: [
|
|
52
|
+
actions: [
|
|
53
|
+
"rds:DescribeDBInstances",
|
|
54
|
+
"rds:DescribeDBClusters",
|
|
55
|
+
"rds:DescribeDBProxies",
|
|
56
|
+
"rds:ListTagsForResource"
|
|
57
|
+
],
|
|
58
|
+
resources: ["*"]
|
|
59
|
+
}),
|
|
60
|
+
// S3 - bucket metrics and listing
|
|
61
|
+
new aws_iam_1.PolicyStatement({
|
|
62
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
63
|
+
actions: [
|
|
64
|
+
"s3:GetBucketLocation",
|
|
65
|
+
"s3:GetBucketMetricsConfiguration",
|
|
66
|
+
"s3:GetBucketTagging",
|
|
67
|
+
"s3:ListBucket",
|
|
68
|
+
"s3:ListAllMyBuckets"
|
|
69
|
+
],
|
|
70
|
+
resources: ["*"]
|
|
71
|
+
}),
|
|
72
|
+
// Lambda - function metrics and status
|
|
73
|
+
new aws_iam_1.PolicyStatement({
|
|
74
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
75
|
+
actions: [
|
|
76
|
+
"lambda:GetFunction",
|
|
77
|
+
"lambda:GetFunctionConfiguration",
|
|
78
|
+
"lambda:ListFunctions",
|
|
79
|
+
"lambda:ListTags"
|
|
80
|
+
],
|
|
81
|
+
resources: ["*"]
|
|
82
|
+
}),
|
|
83
|
+
// Application Load Balancer - metrics and health
|
|
84
|
+
new aws_iam_1.PolicyStatement({
|
|
85
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
86
|
+
actions: [
|
|
87
|
+
"elasticloadbalancing:DescribeLoadBalancers",
|
|
88
|
+
"elasticloadbalancing:DescribeTargetGroups",
|
|
89
|
+
"elasticloadbalancing:DescribeTargetHealth",
|
|
90
|
+
"elasticloadbalancing:DescribeTags"
|
|
91
|
+
],
|
|
92
|
+
resources: ["*"]
|
|
93
|
+
}),
|
|
94
|
+
// CloudWatch Logs - read logs for all app resources
|
|
95
|
+
new aws_iam_1.PolicyStatement({
|
|
96
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
97
|
+
actions: [
|
|
98
|
+
"logs:FilterLogEvents",
|
|
99
|
+
"logs:GetLogEvents",
|
|
100
|
+
"logs:DescribeLogGroups",
|
|
101
|
+
"logs:DescribeLogStreams"
|
|
102
|
+
],
|
|
48
103
|
resources: [
|
|
49
|
-
`arn:aws:logs:${stack.region}:${stack.account}:log-group:/aws/ecs/${config.appName}
|
|
104
|
+
`arn:aws:logs:${stack.region}:${stack.account}:log-group:/aws/ecs/${config.appName}*:*`,
|
|
105
|
+
`arn:aws:logs:${stack.region}:${stack.account}:log-group:/aws/lambda/${config.appName}*:*`,
|
|
106
|
+
`arn:aws:logs:${stack.region}:${stack.account}:log-group:/aws/rds/${config.appName}*:*`
|
|
50
107
|
]
|
|
51
108
|
})
|
|
52
109
|
]
|
|
@@ -65,4 +122,4 @@ class MonitoringRoleFactory {
|
|
|
65
122
|
}
|
|
66
123
|
exports.MonitoringRoleFactory = MonitoringRoleFactory;
|
|
67
124
|
exports.default = MonitoringRoleFactory;
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXRvcmluZ1JvbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9tb25pdG9yaW5nL21vbml0b3JpbmdSb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUErQztBQUMvQyxpREFNNkI7QUF5QjdCOzs7R0FHRztBQUNILE1BQWEscUJBQXFCO0lBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQ2pCLEVBQVUsRUFDVixNQUE0QjtRQUU1QixPQUFPLENBQUMsR0FBYyxFQUFFLEtBQWdCLEVBQUUsRUFBRTtZQUMxQyxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU5QixNQUFNLElBQUksR0FBRyxJQUFJLGNBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUMvQixRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLGlCQUFpQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQzNFLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLEdBQUc7Z0JBQzVCLFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7Z0JBQ3ZELFdBQVcsRUFBRSx3REFBd0QsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDckYsY0FBYyxFQUFFO29CQUNkLGdCQUFnQixFQUFFLElBQUksd0JBQWMsQ0FBQzt3QkFDbkMsVUFBVSxFQUFFOzRCQUNWLElBQUkseUJBQWUsQ0FBQztnQ0FDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztnQ0FDcEIsT0FBTyxFQUFFO29DQUNQLDBCQUEwQjtvQ0FDMUIsZ0NBQWdDO29DQUNoQyx3QkFBd0I7aUNBQ3pCO2dDQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQzs2QkFDakIsQ0FBQzs0QkFDRixJQUFJLHlCQUFlLENBQUM7Z0NBQ2xCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7Z0NBQ3BCLE9BQU8sRUFBRTtvQ0FDUCxzQkFBc0I7b0NBQ3RCLG1CQUFtQjtvQ0FDbkIsZUFBZTtpQ0FDaEI7Z0NBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2dDQUNoQixVQUFVLEVBQUU7b0NBQ1YsWUFBWSxFQUFFO3dDQUNaLDhDQUE4QyxFQUM1QyxNQUFNLENBQUMsT0FBTztxQ0FDakI7aUNBQ0Y7NkJBQ0YsQ0FBQzs0QkFDRixJQUFJLHlCQUFlLENBQUM7Z0NBQ2xCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7Z0NBQ3BCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLG1CQUFtQixDQUFDO2dDQUN0RCxTQUFTLEVBQUU7b0NBQ1QsZ0JBQWdCLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sdUJBQXVCLE1BQU0sQ0FBQyxPQUFPLEtBQUs7aUNBQ3hGOzZCQUNGLENBQUM7eUJBQ0g7cUJBQ0YsQ0FBQztpQkFDSDthQUNGLENBQUMsQ0FBQztZQUVILDhEQUE4RDtZQUM5RCxJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7Z0JBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDbkIsV0FBVyxFQUFFLGtDQUFrQyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUMvRCxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUMsT0FBTyxvQkFBb0I7YUFDbEQsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE5REQsc0RBOERDO0FBRUQsa0JBQWUscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBSb2xlLFxuICBBY2NvdW50UHJpbmNpcGFsLFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBFZmZlY3Rcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yaW5nUm9sZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgQVdTIGFjY291bnQgSUQgb2YgdGhlIEZqYWxsIHdlYmFwcCB0aGF0IHdpbGwgYXNzdW1lIHRoaXMgcm9sZVxuICAgKi9cbiAgd2ViYXBwQWNjb3VudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBuYW1lIHRvIHNjb3BlIHRoZSByb2xlJ3MgcGVybWlzc2lvbnMgdG9cbiAgICovXG4gIGFwcE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgcm9sZSBuYW1lIHByZWZpeC4gRGVmYXVsdHMgdG8gXCJGamFsbE1vbml0b3JpbmdcIlxuICAgKi9cbiAgcm9sZU5hbWVQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIElBTSBwYXRoIGZvciB0aGUgcm9sZS4gRGVmYXVsdHMgdG8gXCIvXCJcbiAgICovXG4gIHJvbGVQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZhY3RvcnkgdG8gYnVpbGQgYSBjcm9zcy1hY2NvdW50IG1vbml0b3JpbmcgSUFNIHJvbGUgdGhhdCBhbGxvd3MgdGhlIEZqYWxsIHdlYmFwcFxuICogdG8gcXVlcnkgQ2xvdWRXYXRjaCBtZXRyaWNzLCBFQ1Mgc2VydmljZSBzdGF0dXMsIGFuZCBsb2dzIGZvciB0aGlzIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgTW9uaXRvcmluZ1JvbGVGYWN0b3J5IHtcbiAgcHVibGljIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIGNvbmZpZzogTW9uaXRvcmluZ1JvbGVDb25maWdcbiAgKTogKGFwcDogQ29uc3RydWN0LCBzY29wZTogQ29uc3RydWN0KSA9PiBSb2xlIHtcbiAgICByZXR1cm4gKGFwcDogQ29uc3RydWN0LCBzY29wZTogQ29uc3RydWN0KSA9PiB7XG4gICAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICAgICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHNjb3BlLCBpZCwge1xuICAgICAgICByb2xlTmFtZTogYCR7Y29uZmlnLnJvbGVOYW1lUHJlZml4IHx8IFwiRmphbGxNb25pdG9yaW5nXCJ9LSR7Y29uZmlnLmFwcE5hbWV9YCxcbiAgICAgICAgcGF0aDogY29uZmlnLnJvbGVQYXRoIHx8IFwiL1wiLFxuICAgICAgICBhc3N1bWVkQnk6IG5ldyBBY2NvdW50UHJpbmNpcGFsKGNvbmZpZy53ZWJhcHBBY2NvdW50SWQpLFxuICAgICAgICBkZXNjcmlwdGlvbjogYENyb3NzLWFjY291bnQgbW9uaXRvcmluZyByb2xlIGZvciBGamFsbCBhcHBsaWNhdGlvbjogJHtjb25maWcuYXBwTmFtZX1gLFxuICAgICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICAgIE1vbml0b3JpbmdQb2xpY3k6IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgIFwiY2xvdWR3YXRjaDpHZXRNZXRyaWNEYXRhXCIsXG4gICAgICAgICAgICAgICAgICBcImNsb3Vkd2F0Y2g6R2V0TWV0cmljU3RhdGlzdGljc1wiLFxuICAgICAgICAgICAgICAgICAgXCJjbG91ZHdhdGNoOkxpc3RNZXRyaWNzXCJcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgXCJlY3M6RGVzY3JpYmVTZXJ2aWNlc1wiLFxuICAgICAgICAgICAgICAgICAgXCJlY3M6RGVzY3JpYmVUYXNrc1wiLFxuICAgICAgICAgICAgICAgICAgXCJlY3M6TGlzdFRhc2tzXCJcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJhd3M6UmVzb3VyY2VUYWcvZmphbGw6Y29zdEFsbG9jYXRpb246c2VydmljZVwiOlxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hcHBOYW1lXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1wibG9nczpGaWx0ZXJMb2dFdmVudHNcIiwgXCJsb2dzOkdldExvZ0V2ZW50c1wiXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgIGBhcm46YXdzOmxvZ3M6JHtzdGFjay5yZWdpb259OiR7c3RhY2suYWNjb3VudH06bG9nLWdyb3VwOi9hd3MvZWNzLyR7Y29uZmlnLmFwcE5hbWV9KjoqYFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gRXhwb3J0IHRoZSByb2xlIEFSTiBzbyBpdCBjYW4gYmUgcmV0cmlldmVkIGFmdGVyIGRlcGxveW1lbnRcbiAgICAgIG5ldyBDZm5PdXRwdXQoc2NvcGUsIGAke2lkfUFybmAsIHtcbiAgICAgICAgdmFsdWU6IHJvbGUucm9sZUFybixcbiAgICAgICAgZGVzY3JpcHRpb246IGBBUk4gb2YgdGhlIG1vbml0b3Jpbmcgcm9sZSBmb3IgJHtjb25maWcuYXBwTmFtZX1gLFxuICAgICAgICBleHBvcnROYW1lOiBgJHtjb25maWcuYXBwTmFtZX0tTW9uaXRvcmluZ1JvbGVBcm5gXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJvbGU7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNb25pdG9yaW5nUm9sZUZhY3Rvcnk7XG4iXX0=
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXRvcmluZ1JvbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9tb25pdG9yaW5nL21vbml0b3JpbmdSb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUErQztBQUMvQyxpREFNNkI7QUF5QjdCOzs7R0FHRztBQUNILE1BQWEscUJBQXFCO0lBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQ2pCLEVBQVUsRUFDVixNQUE0QjtRQUU1QixPQUFPLENBQUMsR0FBYyxFQUFFLEtBQWdCLEVBQUUsRUFBRTtZQUMxQyxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU5QixNQUFNLElBQUksR0FBRyxJQUFJLGNBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUMvQixRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLGlCQUFpQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQzNFLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLEdBQUc7Z0JBQzVCLFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7Z0JBQ3ZELFdBQVcsRUFBRSx3REFBd0QsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDckYsY0FBYyxFQUFFO29CQUNkLGdCQUFnQixFQUFFLElBQUksd0JBQWMsQ0FBQzt3QkFDbkMsVUFBVSxFQUFFOzRCQUNWLHFDQUFxQzs0QkFDckMsSUFBSSx5QkFBZSxDQUFDO2dDQUNsQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO2dDQUNwQixPQUFPLEVBQUU7b0NBQ1AsMEJBQTBCO29DQUMxQixnQ0FBZ0M7b0NBQ2hDLHdCQUF3QjtpQ0FDekI7Z0NBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDOzZCQUNqQixDQUFDOzRCQUNGLGdDQUFnQzs0QkFDaEMsSUFBSSx5QkFB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U3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIFJvbGUsXG4gIEFjY291bnRQcmluY2lwYWwsXG4gIFBvbGljeURvY3VtZW50LFxuICBQb2xpY3lTdGF0ZW1lbnQsXG4gIEVmZmVjdFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgdHlwZSBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vbml0b3JpbmdSb2xlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBBV1MgYWNjb3VudCBJRCBvZiB0aGUgRmphbGwgd2ViYXBwIHRoYXQgd2lsbCBhc3N1bWUgdGhpcyByb2xlXG4gICAqL1xuICB3ZWJhcHBBY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIG5hbWUgdG8gc2NvcGUgdGhlIHJvbGUncyBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgYXBwTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCByb2xlIG5hbWUgcHJlZml4LiBEZWZhdWx0cyB0byBcIkZqYWxsTW9uaXRvcmluZ1wiXG4gICAqL1xuICByb2xlTmFtZVByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgSUFNIHBhdGggZm9yIHRoZSByb2xlLiBEZWZhdWx0cyB0byBcIi9cIlxuICAgKi9cbiAgcm9sZVBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRmFjdG9yeSB0byBidWlsZCBhIGNyb3NzLWFjY291bnQgbW9uaXRvcmluZyBJQU0gcm9sZSB0aGF0IGFsbG93cyB0aGUgRmphbGwgd2ViYXBwXG4gKiB0byBxdWVyeSBDbG91ZFdhdGNoIG1ldHJpY3MsIEVDUyBzZXJ2aWNlIHN0YXR1cywgYW5kIGxvZ3MgZm9yIHRoaXMgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25pdG9yaW5nUm9sZUZhY3Rvcnkge1xuICBwdWJsaWMgc3RhdGljIGJ1aWxkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgY29uZmlnOiBNb25pdG9yaW5nUm9sZUNvbmZpZ1xuICApOiAoYXBwOiBDb25zdHJ1Y3QsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IFJvbGUge1xuICAgIHJldHVybiAoYXBwOiBDb25zdHJ1Y3QsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuXG4gICAgICBjb25zdCByb2xlID0gbmV3IFJvbGUoc2NvcGUsIGlkLCB7XG4gICAgICAgIHJvbGVOYW1lOiBgJHtjb25maWcucm9sZU5hbWVQcmVmaXggfHwgXCJGamFsbE1vbml0b3JpbmdcIn0tJHtjb25maWcuYXBwTmFtZX1gLFxuICAgICAgICBwYXRoOiBjb25maWcucm9sZVBhdGggfHwgXCIvXCIsXG4gICAgICAgIGFzc3VtZWRCeTogbmV3IEFjY291bnRQcmluY2lwYWwoY29uZmlnLndlYmFwcEFjY291bnRJZCksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgQ3Jvc3MtYWNjb3VudCBtb25pdG9yaW5nIHJvbGUgZm9yIEZqYWxsIGFwcGxpY2F0aW9uOiAke2NvbmZpZy5hcHBOYW1lfWAsXG4gICAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgICAgTW9uaXRvcmluZ1BvbGljeTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgICAgLy8gQ2xvdWRXYXRjaCBNZXRyaWNzIC0gYWxsIHJlc291cmNlc1xuICAgICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICBcImNsb3Vkd2F0Y2g6R2V0TWV0cmljRGF0YVwiLFxuICAgICAgICAgICAgICAgICAgXCJjbG91ZHdhdGNoOkdldE1ldHJpY1N0YXRpc3RpY3NcIixcbiAgICAgICAgICAgICAgICAgIFwiY2xvdWR3YXRjaDpMaXN0TWV0cmljc1wiXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vIEVDUyAtIHNjb3BlZCB0byBhcHAgcmVzb3VyY2VzXG4gICAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlU2VydmljZXNcIixcbiAgICAgICAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza3NcIixcbiAgICAgICAgICAgICAgICAgIFwiZWNzOkxpc3RUYXNrc1wiLFxuICAgICAgICAgICAgICAgICAgXCJlY3M6RGVzY3JpYmVDbHVzdGVyc1wiLFxuICAgICAgICAgICAgICAgICAgXCJlY3M6TGlzdFNlcnZpY2VzXCJcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJhd3M6UmVzb3VyY2VUYWcvZmphbGw6Y29zdEFsbG9jYXRpb246c2VydmljZVwiOlxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hcHBOYW1lXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLy8gUkRTIC0gZGVzY3JpYmUgYW5kIG1vbml0b3JpbmdcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgXCJyZHM6RGVzY3JpYmVEQkluc3RhbmNlc1wiLFxuICAgICAgICAgICAgICAgICAgXCJyZHM6RGVzY3JpYmVEQkNsdXN0ZXJzXCIsXG4gICAgICAgICAgICAgICAgICBcInJkczpEZXNjcmliZURCUHJveGllc1wiLFxuICAgICAgICAgICAgICAgICAgXCJyZHM6TGlzdFRhZ3NGb3JSZXNvdXJjZVwiXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vIFMzIC0gYnVja2V0IG1ldHJpY3MgYW5kIGxpc3RpbmdcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgXCJzMzpHZXRCdWNrZXRMb2NhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgXCJzMzpHZXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgXCJzMzpHZXRCdWNrZXRUYWdnaW5nXCIsXG4gICAgICAgICAgICAgICAgICBcInMzOkxpc3RCdWNrZXRcIixcbiAgICAgICAgICAgICAgICAgIFwiczM6TGlzdEFsbE15QnVja2V0c1wiXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vIExhbWJkYSAtIGZ1bmN0aW9uIG1ldHJpY3MgYW5kIHN0YXR1c1xuICAgICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICBcImxhbWJkYTpHZXRGdW5jdGlvblwiLFxuICAgICAgICAgICAgICAgICAgXCJsYW1iZGE6R2V0RnVuY3Rpb25Db25maWd1cmF0aW9uXCIsXG4gICAgICAgICAgICAgICAgICBcImxhbWJkYTpMaXN0RnVuY3Rpb25zXCIsXG4gICAgICAgICAgICAgICAgICBcImxhbWJkYTpMaXN0VGFnc1wiXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIgLSBtZXRyaWNzIGFuZCBoZWFsdGhcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgXCJlbGFzdGljbG9hZGJhbGFuY2luZzpEZXNjcmliZUxvYWRCYWxhbmNlcnNcIixcbiAgICAgICAgICAgICAgICAgIFwiZWxhc3RpY2xvYWRiYWxhbmNpbmc6RGVzY3JpYmVUYXJnZXRHcm91cHNcIixcbiAgICAgICAgICAgICAgICAgIFwiZWxhc3RpY2xvYWRiYWxhbmNpbmc6RGVzY3JpYmVUYXJnZXRIZWFsdGhcIixcbiAgICAgICAgICAgICAgICAgIFwiZWxhc3RpY2xvYWRiYWxhbmNpbmc6RGVzY3JpYmVUYWdzXCJcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLy8gQ2xvdWRXYXRjaCBMb2dzIC0gcmVhZCBsb2dzIGZvciBhbGwgYXBwIHJlc291cmNlc1xuICAgICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICBcImxvZ3M6RmlsdGVyTG9nRXZlbnRzXCIsXG4gICAgICAgICAgICAgICAgICBcImxvZ3M6R2V0TG9nRXZlbnRzXCIsXG4gICAgICAgICAgICAgICAgICBcImxvZ3M6RGVzY3JpYmVMb2dHcm91cHNcIixcbiAgICAgICAgICAgICAgICAgIFwibG9nczpEZXNjcmliZUxvZ1N0cmVhbXNcIlxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgICBgYXJuOmF3czpsb2dzOiR7c3RhY2sucmVnaW9ufToke3N0YWNrLmFjY291bnR9OmxvZy1ncm91cDovYXdzL2Vjcy8ke2NvbmZpZy5hcHBOYW1lfSo6KmAsXG4gICAgICAgICAgICAgICAgICBgYXJuOmF3czpsb2dzOiR7c3RhY2sucmVnaW9ufToke3N0YWNrLmFjY291bnR9OmxvZy1ncm91cDovYXdzL2xhbWJkYS8ke2NvbmZpZy5hcHBOYW1lfSo6KmAsXG4gICAgICAgICAgICAgICAgICBgYXJuOmF3czpsb2dzOiR7c3RhY2sucmVnaW9ufToke3N0YWNrLmFjY291bnR9OmxvZy1ncm91cDovYXdzL3Jkcy8ke2NvbmZpZy5hcHBOYW1lfSo6KmBcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEV4cG9ydCB0aGUgcm9sZSBBUk4gc28gaXQgY2FuIGJlIHJldHJpZXZlZCBhZnRlciBkZXBsb3ltZW50XG4gICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBgJHtpZH1Bcm5gLCB7XG4gICAgICAgIHZhbHVlOiByb2xlLnJvbGVBcm4sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgQVJOIG9mIHRoZSBtb25pdG9yaW5nIHJvbGUgZm9yICR7Y29uZmlnLmFwcE5hbWV9YCxcbiAgICAgICAgZXhwb3J0TmFtZTogYCR7Y29uZmlnLmFwcE5hbWV9LU1vbml0b3JpbmdSb2xlQXJuYFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByb2xlO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTW9uaXRvcmluZ1JvbGVGYWN0b3J5O1xuIl19
|