@gammarers/aws-rds-database-running-schedule-stack 2.3.10 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +206 -142
- package/API.md +147 -108
- package/lib/index.d.ts +6 -2
- package/lib/index.js +13 -181
- package/lib/resources/running-control-state-machine.d.ts +9 -0
- package/lib/resources/running-control-state-machine.js +233 -0
- package/package.json +9 -7
package/lib/index.js
CHANGED
|
@@ -5,18 +5,16 @@ exports.RDSDatabaseRunningScheduleStack = exports.ResourceNamingType = void 0;
|
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
6
|
const aws_resource_naming_1 = require("@gammarers/aws-resource-naming");
|
|
7
7
|
Object.defineProperty(exports, "ResourceNamingType", { enumerable: true, get: function () { return aws_resource_naming_1.ResourceNamingType; } });
|
|
8
|
+
const aws_sns_slack_message_lambda_subscription_1 = require("@gammarers/aws-sns-slack-message-lambda-subscription");
|
|
8
9
|
const cdk = require("aws-cdk-lib");
|
|
9
10
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
10
11
|
const iam = require("aws-cdk-lib/aws-iam");
|
|
11
12
|
const scheduler = require("aws-cdk-lib/aws-scheduler");
|
|
12
13
|
const sns = require("aws-cdk-lib/aws-sns");
|
|
13
|
-
const
|
|
14
|
-
const tasks = require("aws-cdk-lib/aws-stepfunctions-tasks");
|
|
14
|
+
const running_control_state_machine_1 = require("./resources/running-control-state-machine");
|
|
15
15
|
class RDSDatabaseRunningScheduleStack extends aws_cdk_lib_1.Stack {
|
|
16
16
|
constructor(scope, id, props) {
|
|
17
17
|
super(scope, id, props);
|
|
18
|
-
// 👇 Get account
|
|
19
|
-
const account = cdk.Stack.of(this).account;
|
|
20
18
|
// 👇 Create random 8 length string
|
|
21
19
|
const random = aws_resource_naming_1.ResourceNaming.createRandomString(`${cdk.Names.uniqueId(scope)}-${cdk.Names.uniqueId(this)}`);
|
|
22
20
|
// 👇 Definition auto naming
|
|
@@ -45,183 +43,17 @@ class RDSDatabaseRunningScheduleStack extends aws_cdk_lib_1.Stack {
|
|
|
45
43
|
endpoint: value,
|
|
46
44
|
});
|
|
47
45
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
// 👇 Succeed
|
|
56
|
-
const stateChangeSucceed = new sfn.Succeed(this, 'StateChangeSucceed');
|
|
57
|
-
const prepareTopicValue = new sfn.Pass(this, 'PrepareTopicValue', {
|
|
58
|
-
resultPath: '$.prepare.topic.values',
|
|
59
|
-
parameters: {
|
|
60
|
-
emoji: sfn.JsonPath.arrayGetItem(sfn.JsonPath.stringAt('$.definition.stateList[?(@.state == $.Result.status.current)].emoji'), 0),
|
|
61
|
-
status: sfn.JsonPath.arrayGetItem(sfn.JsonPath.stringAt('$.definition.stateList[?(@.state == $.Result.status.current)].name'), 0),
|
|
62
|
-
account: sfn.JsonPath.arrayGetItem(sfn.JsonPath.stringSplit(sfn.JsonPath.stringAt('$.TargetResource'), ':'), 4), // account
|
|
63
|
-
region: sfn.JsonPath.arrayGetItem(sfn.JsonPath.stringSplit(sfn.JsonPath.stringAt('$.TargetResource'), ':'), 3), // region
|
|
64
|
-
},
|
|
65
|
-
}).next(new sfn.Pass(this, 'GenerateTopic', {
|
|
66
|
-
resultPath: '$.Generate.Topic',
|
|
67
|
-
parameters: {
|
|
68
|
-
Subject: sfn.JsonPath.format('{} [{}] AWS RDS DB {} Running Notification [{}][{}]', sfn.JsonPath.stringAt('$.prepare.topic.values.emoji'), sfn.JsonPath.stringAt('$.prepare.topic.values.status'), sfn.JsonPath.stringAt('$.params.Mode'), sfn.JsonPath.stringAt('$.prepare.topic.values.account'), sfn.JsonPath.stringAt('$.prepare.topic.values.region')),
|
|
69
|
-
TextMessage: sfn.JsonPath.format('Account : {}\nRegion : {}\nType : {}\nIdentifier : {}\nStatus : {}', sfn.JsonPath.stringAt('$.prepare.topic.values.account'), sfn.JsonPath.stringAt('$.prepare.topic.values.region'), sfn.JsonPath.stringAt('$.Result.target.type'), sfn.JsonPath.stringAt('$.Result.target.identifier'), sfn.JsonPath.stringAt('$.prepare.topic.values.status')),
|
|
70
|
-
},
|
|
71
|
-
}).next(new tasks.SnsPublish(this, 'SendNotification', {
|
|
72
|
-
topic: topic,
|
|
73
|
-
subject: sfn.JsonPath.stringAt('$.Generate.Topic.Subject'),
|
|
74
|
-
message: sfn.TaskInput.fromJsonPathAt('$.Generate.Topic.TextMessage'),
|
|
75
|
-
resultPath: '$.snsResult',
|
|
76
|
-
}).next(stateChangeSucceed)));
|
|
77
|
-
// 👇 Get DB Instance Resources (Filter by Tag)
|
|
78
|
-
const getResources = new tasks.CallAwsService(this, 'GetResources', {
|
|
79
|
-
iamResources: ['*'],
|
|
80
|
-
iamAction: 'tag:GetResources',
|
|
81
|
-
service: 'resourcegroupstaggingapi',
|
|
82
|
-
action: 'getResources',
|
|
83
|
-
parameters: {
|
|
84
|
-
ResourceTypeFilters: [
|
|
85
|
-
'rds:db',
|
|
86
|
-
'rds:cluster',
|
|
87
|
-
],
|
|
88
|
-
TagFilters: [
|
|
89
|
-
{
|
|
90
|
-
Key: sfn.JsonPath.stringAt('$.Params.TagKey'),
|
|
91
|
-
Values: sfn.JsonPath.stringAt('$.Params.TagValues'),
|
|
92
|
-
},
|
|
93
|
-
],
|
|
94
|
-
},
|
|
95
|
-
resultPath: '$.Result',
|
|
96
|
-
resultSelector: {
|
|
97
|
-
TargetResources: sfn.JsonPath.stringAt('$..ResourceTagMappingList[*].ResourceARN'),
|
|
98
|
-
},
|
|
99
|
-
});
|
|
100
|
-
initStateListDefinition.next(getResources);
|
|
101
|
-
// 👇 Describe DB Instance Task
|
|
102
|
-
const describeDBInstancesTask = new tasks.CallAwsService(this, 'DescribeDBInstances', {
|
|
103
|
-
iamResources: [`arn:aws:rds:*:${account}:db:*`],
|
|
104
|
-
service: 'rds',
|
|
105
|
-
action: 'describeDBInstances',
|
|
106
|
-
parameters: {
|
|
107
|
-
DbInstanceIdentifier: sfn.JsonPath.stringAt('$.Result.target.identifier'),
|
|
108
|
-
},
|
|
109
|
-
resultPath: '$.Result.status',
|
|
110
|
-
resultSelector: {
|
|
111
|
-
current: sfn.JsonPath.stringAt('$.DbInstances[0].DbInstanceStatus'),
|
|
112
|
-
},
|
|
113
|
-
});
|
|
114
|
-
// 👇 Stop DB Instance Task
|
|
115
|
-
const stopDBInstanceTask = new tasks.CallAwsService(this, 'StopDBInstance', {
|
|
116
|
-
iamResources: [`arn:aws:rds:*:${account}:db:*`],
|
|
117
|
-
service: 'rds',
|
|
118
|
-
action: 'stopDBInstance',
|
|
119
|
-
parameters: {
|
|
120
|
-
DbInstanceIdentifier: sfn.JsonPath.stringAt('$.Result.target.identifier'),
|
|
121
|
-
},
|
|
122
|
-
resultPath: '$.Result.StopDBInstance',
|
|
123
|
-
});
|
|
124
|
-
// 👇 Start DB Instance Task
|
|
125
|
-
const startDBInstanceTask = new tasks.CallAwsService(this, 'StartDBInstance', {
|
|
126
|
-
iamResources: [`arn:aws:rds:*:${account}:db:*`],
|
|
127
|
-
service: 'rds',
|
|
128
|
-
action: 'startDBInstance',
|
|
129
|
-
parameters: {
|
|
130
|
-
DbInstanceIdentifier: sfn.JsonPath.stringAt('$.Result.target.identifier'),
|
|
131
|
-
},
|
|
132
|
-
resultPath: '$.Result.StartDBInstance',
|
|
133
|
-
});
|
|
134
|
-
// 👇 Describe DB Cluster Task
|
|
135
|
-
const describeDBClustersTask = new tasks.CallAwsService(this, 'DescribeDBClusters', {
|
|
136
|
-
iamResources: [`arn:aws:rds:*:${account}:cluster:*`],
|
|
137
|
-
service: 'rds',
|
|
138
|
-
action: 'describeDBClusters',
|
|
139
|
-
parameters: {
|
|
140
|
-
DbClusterIdentifier: sfn.JsonPath.stringAt('$.Result.target.identifier'),
|
|
141
|
-
},
|
|
142
|
-
resultPath: '$.Result.status',
|
|
143
|
-
resultSelector: {
|
|
144
|
-
current: sfn.JsonPath.stringAt('$.DbClusters[0].Status'),
|
|
145
|
-
},
|
|
146
|
-
});
|
|
147
|
-
const handleDbClusterNotFound = new sfn.Pass(this, 'HandleDbClusterNotFound', {
|
|
148
|
-
result: sfn.Result.fromObject({
|
|
149
|
-
message: 'DB Cluster not found, but continuing...',
|
|
150
|
-
}),
|
|
151
|
-
});
|
|
152
|
-
describeDBClustersTask.addCatch(handleDbClusterNotFound, {
|
|
153
|
-
errors: ['Rds.DbClusterNotFoundException'],
|
|
154
|
-
});
|
|
155
|
-
// 👇 Stop DB Cluster Task
|
|
156
|
-
const stopDBClusterTask = new tasks.CallAwsService(this, 'StopDBCluster', {
|
|
157
|
-
iamResources: [`arn:aws:rds:*:${account}:cluster:*`],
|
|
158
|
-
service: 'rds',
|
|
159
|
-
action: 'stopDBCluster',
|
|
160
|
-
parameters: {
|
|
161
|
-
DbClusterIdentifier: sfn.JsonPath.stringAt('$.Result.target.identifier'),
|
|
162
|
-
},
|
|
163
|
-
resultPath: '$.Result.StopDBCluster',
|
|
164
|
-
});
|
|
165
|
-
// 👇 Stop DB Cluster Task
|
|
166
|
-
const startDBClusterTask = new tasks.CallAwsService(this, 'StartDBCluster', {
|
|
167
|
-
iamResources: [`arn:aws:rds:*:${account}:cluster:*`],
|
|
168
|
-
service: 'rds',
|
|
169
|
-
action: 'startDBCluster',
|
|
170
|
-
parameters: {
|
|
171
|
-
DbClusterIdentifier: sfn.JsonPath.stringAt('$.Result.target.identifier'),
|
|
172
|
-
},
|
|
173
|
-
resultPath: '$.Result.StartDBCluster',
|
|
174
|
-
});
|
|
175
|
-
const describeTypeChoice = new sfn.Choice(this, 'DescribeTypeChoice')
|
|
176
|
-
.when(sfn.Condition.stringEquals('$.Result.target.type', 'db'), describeDBInstancesTask)
|
|
177
|
-
.when(sfn.Condition.stringEquals('$.Result.target.type', 'cluster'), describeDBClustersTask)
|
|
178
|
-
.otherwise(new sfn.Fail(this, 'UnknownType'));
|
|
179
|
-
const statusChangeWait = new sfn.Wait(this, 'StatusChangeWait', {
|
|
180
|
-
time: sfn.WaitTime.duration(cdk.Duration.minutes(1)),
|
|
181
|
-
});
|
|
182
|
-
statusChangeWait.next(describeTypeChoice);
|
|
183
|
-
startDBInstanceTask.next(statusChangeWait);
|
|
184
|
-
stopDBInstanceTask.next(statusChangeWait);
|
|
185
|
-
startDBClusterTask.next(statusChangeWait);
|
|
186
|
-
stopDBClusterTask.next(statusChangeWait);
|
|
187
|
-
const statusChoice = new sfn.Choice(this, 'StatusChoice')
|
|
188
|
-
// db instance start on status.stopped
|
|
189
|
-
.when(sfn.Condition.and(sfn.Condition.stringEquals('$.params.Mode', 'Start'), sfn.Condition.stringEquals('$.Result.target.type', 'db'), sfn.Condition.stringEquals('$.Result.status.current', 'stopped')), startDBInstanceTask)
|
|
190
|
-
// db instance stop on status.available
|
|
191
|
-
.when(sfn.Condition.and(sfn.Condition.stringEquals('$.params.Mode', 'Stop'), sfn.Condition.stringEquals('$.Result.target.type', 'db'), sfn.Condition.stringEquals('$.Result.status.current', 'available')), stopDBInstanceTask)
|
|
192
|
-
// start on status.stopped
|
|
193
|
-
.when(sfn.Condition.and(sfn.Condition.stringEquals('$.params.Mode', 'Start'), sfn.Condition.stringEquals('$.Result.target.type', 'cluster'), sfn.Condition.stringEquals('$.Result.status.current', 'stopped')), startDBClusterTask)
|
|
194
|
-
// stop on status.available
|
|
195
|
-
.when(sfn.Condition.and(sfn.Condition.stringEquals('$.params.Mode', 'Stop'), sfn.Condition.stringEquals('$.Result.target.type', 'cluster'), sfn.Condition.stringEquals('$.Result.status.current', 'available')), stopDBClusterTask)
|
|
196
|
-
// status change succeed, generate topic
|
|
197
|
-
.when(sfn.Condition.or(sfn.Condition.and(sfn.Condition.stringEquals('$.params.Mode', 'Start'), sfn.Condition.or(sfn.Condition.stringEquals('$.Result.target.type', 'db'), sfn.Condition.stringEquals('$.Result.target.type', 'cluster')), sfn.Condition.stringEquals('$.Result.status.current', 'available')), sfn.Condition.and(sfn.Condition.stringEquals('$.params.Mode', 'Stop'), sfn.Condition.or(sfn.Condition.stringEquals('$.Result.target.type', 'db'), sfn.Condition.stringEquals('$.Result.target.type', 'cluster')), sfn.Condition.stringEquals('$.Result.status.current', 'stopped'))), prepareTopicValue)
|
|
198
|
-
.when(
|
|
199
|
-
// start & starting/configuring-enhanced-monitoring/backing-up or stop modifying/stopping
|
|
200
|
-
sfn.Condition.or(sfn.Condition.and(sfn.Condition.and(sfn.Condition.stringEquals('$.params.Mode', 'Start'), sfn.Condition.or(sfn.Condition.stringEquals('$.Result.target.type', 'db'), sfn.Condition.stringEquals('$.Result.target.type', 'cluster')), sfn.Condition.or(sfn.Condition.stringEquals('$.Result.status.current', 'starting'), sfn.Condition.stringEquals('$.Result.status.current', 'configuring-enhanced-monitoring'), sfn.Condition.stringEquals('$.Result.status.current', 'backing-up'), sfn.Condition.stringEquals('$.Result.status.current', 'modifying')))), sfn.Condition.and(sfn.Condition.and(sfn.Condition.stringEquals('$.params.Mode', 'Stop'), sfn.Condition.or(sfn.Condition.stringEquals('$.Result.target.type', 'db'), sfn.Condition.stringEquals('$.Result.target.type', 'cluster')), sfn.Condition.or(sfn.Condition.stringEquals('$.Result.status.current', 'modifying'), sfn.Condition.stringEquals('$.Result.status.current', 'stopping'))))), statusChangeWait)
|
|
201
|
-
.otherwise(new sfn.Fail(this, 'StatusFail', {
|
|
202
|
-
cause: 'db instance or cluster status fail.',
|
|
203
|
-
}));
|
|
204
|
-
getResources.next(new sfn.Map(this, 'ResourceProcessingMap', {
|
|
205
|
-
itemsPath: sfn.JsonPath.stringAt('$.Result.TargetResources'),
|
|
206
|
-
parameters: {
|
|
207
|
-
TargetResource: sfn.JsonPath.stringAt('$$.Map.Item.Value'),
|
|
208
|
-
params: sfn.JsonPath.stringAt('$.Params'),
|
|
209
|
-
definition: sfn.JsonPath.stringAt('$.definition'),
|
|
210
|
-
},
|
|
211
|
-
maxConcurrency: 10,
|
|
212
|
-
}).itemProcessor(new sfn.Pass(this, 'GetIdentifier', {
|
|
213
|
-
resultPath: '$.Result.target',
|
|
214
|
-
parameters: {
|
|
215
|
-
identifier: sfn.JsonPath.arrayGetItem(sfn.JsonPath.stringSplit(sfn.JsonPath.stringAt('$.TargetResource'), ':'), 6),
|
|
216
|
-
type: sfn.JsonPath.arrayGetItem(sfn.JsonPath.stringSplit(sfn.JsonPath.stringAt('$.TargetResource'), ':'), 5), // db or cluster
|
|
217
|
-
},
|
|
218
|
-
}).next(describeTypeChoice)));
|
|
219
|
-
describeDBInstancesTask.next(statusChoice);
|
|
220
|
-
describeDBClustersTask.next(statusChoice);
|
|
46
|
+
// 👇 Subscription slack webhook
|
|
47
|
+
if (props.notifications?.slack) {
|
|
48
|
+
new aws_sns_slack_message_lambda_subscription_1.SNSSlackMessageLambdaSubscription(this, 'SNSSlackMessageLambdaSubscription', {
|
|
49
|
+
topic,
|
|
50
|
+
slackWebhookSecretName: props.notifications.slack.webhookSecretName,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
221
53
|
// 👇 StepFunctions State Machine
|
|
222
|
-
const stateMachine = new
|
|
54
|
+
const stateMachine = new running_control_state_machine_1.RunningControlStateMachine(this, 'StateMachine', {
|
|
223
55
|
stateMachineName: names.stateMachineName,
|
|
224
|
-
|
|
56
|
+
notificationTopic: topic,
|
|
225
57
|
});
|
|
226
58
|
// 👇 rename role name & description.
|
|
227
59
|
if (names.stateMachineRoleName) {
|
|
@@ -317,7 +149,7 @@ class RDSDatabaseRunningScheduleStack extends aws_cdk_lib_1.Stack {
|
|
|
317
149
|
}
|
|
318
150
|
exports.RDSDatabaseRunningScheduleStack = RDSDatabaseRunningScheduleStack;
|
|
319
151
|
_a = JSII_RTTI_SYMBOL_1;
|
|
320
|
-
RDSDatabaseRunningScheduleStack[_a] = { fqn: "@gammarers/aws-rds-database-running-schedule-stack.RDSDatabaseRunningScheduleStack", version: "2.
|
|
152
|
+
RDSDatabaseRunningScheduleStack[_a] = { fqn: "@gammarers/aws-rds-database-running-schedule-stack.RDSDatabaseRunningScheduleStack", version: "2.4.0" };
|
|
321
153
|
class DBRuningSchedule extends scheduler.CfnSchedule {
|
|
322
154
|
constructor(scope, id, props) {
|
|
323
155
|
super(scope, id, {
|
|
@@ -348,4 +180,4 @@ class DBRuningSchedule extends scheduler.CfnSchedule {
|
|
|
348
180
|
});
|
|
349
181
|
}
|
|
350
182
|
}
|
|
351
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFBK0g7QUFVM0UsbUdBVmdCLHdDQUFrQixPQVVoQjtBQVR0RSxtQ0FBbUM7QUFDbkMsNkNBQWdEO0FBQ2hELDJDQUEyQztBQUMzQyx1REFBdUQ7QUFDdkQsMkNBQTJDO0FBQzNDLHFEQUFxRDtBQUNyRCw2REFBNkQ7QUEyQzdELE1BQWEsK0JBQWdDLFNBQVEsbUJBQUs7SUFDeEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQztRQUNuRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixpQkFBaUI7UUFDakIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO1FBRTNDLG1DQUFtQztRQUNuQyxNQUFNLE1BQU0sR0FBRyxvQ0FBYyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdHLDRCQUE0QjtRQUM1QixNQUFNLFVBQVUsR0FBRztZQUNqQixxQkFBcUIsRUFBRSx3Q0FBd0MsTUFBTSxRQUFRO1lBQzdFLDRCQUE0QixFQUFFLDRDQUE0QztZQUMxRSxnQkFBZ0IsRUFBRSwyQkFBMkIsTUFBTSxnQkFBZ0I7WUFDbkUsb0JBQW9CLEVBQUUsMkJBQTJCLE1BQU0scUJBQXFCO1lBQzVFLGlCQUFpQixFQUFFLDRCQUE0QixNQUFNLFlBQVk7WUFDakUsaUJBQWlCLEVBQUUsNkJBQTZCLE1BQU0sV0FBVztZQUNqRSxnQkFBZ0IsRUFBRSw4QkFBOEIsTUFBTSxXQUFXO1NBQ2xFLENBQUM7UUFDRixrQkFBa0I7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O0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb3VyY2VBdXRvTmFtaW5nLCBSZXNvdXJjZURlZmF1bHROYW1pbmcsIFJlc291cmNlTmFtaW5nLCBSZXNvdXJjZU5hbWluZ1R5cGUgfSBmcm9tICdAZ2FtbWFyZXJzL2F3cy1yZXNvdXJjZS1uYW1pbmcnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgc2NoZWR1bGVyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zY2hlZHVsZXInO1xuaW1wb3J0ICogYXMgc25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMnO1xuaW1wb3J0ICogYXMgc2ZuIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcbmltcG9ydCAqIGFzIHRhc2tzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zLXRhc2tzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgeyBSZXNvdXJjZUF1dG9OYW1pbmcsIFJlc291cmNlRGVmYXVsdE5hbWluZywgUmVzb3VyY2VOYW1pbmdUeXBlIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tTmFtaW5nIHtcbiAgcmVhZG9ubHkgdHlwZTogUmVzb3VyY2VOYW1pbmdUeXBlLkNVU1RPTTtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uVG9waWNOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvblRvcGljRGlzcGxheU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhdGVNYWNoaW5lTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmVSb2xlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBzY2hlZHVsZXJSb2xlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBzdGFydFNjaGVkdWxlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBzdG9wU2NoZWR1bGVOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFJlc291cmNlTmFtaW5nT3B0aW9uID0gUmVzb3VyY2VEZWZhdWx0TmFtaW5nIHwgUmVzb3VyY2VBdXRvTmFtaW5nIHwgQ3VzdG9tTmFtaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlUHJvcGVydHkge1xuICByZWFkb25seSB0aW1lem9uZTogc3RyaW5nO1xuICByZWFkb25seSBtaW51dGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGhvdXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdlZWs/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0UmVzb3VyY2VQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IHRhZ0tleTogc3RyaW5nO1xuICByZWFkb25seSB0YWdWYWx1ZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbnNQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IGVtYWlscz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJEU0RhdGFiYXNlUnVubmluZ1NjaGVkdWxlU3RhY2tQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICByZWFkb25seSB0YXJnZXRSZXNvdXJjZTogVGFyZ2V0UmVzb3VyY2VQcm9wZXJ0eTtcbiAgcmVhZG9ubHkgZW5hYmxlU2NoZWR1bGluZz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHN0b3BTY2hlZHVsZT86IFNjaGVkdWxlUHJvcGVydHk7XG4gIHJlYWRvbmx5IHN0YXJ0U2NoZWR1bGU/OiBTY2hlZHVsZVByb3BlcnR5O1xuICByZWFkb25seSBub3RpZmljYXRpb25zPzogTm90aWZpY2F0aW9uc1Byb3BlcnR5O1xuICByZWFkb25seSByZXNvdXJjZU5hbWluZ09wdGlvbj86IFJlc291cmNlTmFtaW5nT3B0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgUkRTRGF0YWJhc2VSdW5uaW5nU2NoZWR1bGVTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJEU0RhdGFiYXNlUnVubmluZ1NjaGVkdWxlU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgLy8g8J+RhyBHZXQgYWNjb3VudFxuICAgIGNvbnN0IGFjY291bnQgPSBjZGsuU3RhY2sub2YodGhpcykuYWNjb3VudDtcblxuICAgIC8vIPCfkYcgQ3JlYXRlIHJhbmRvbSA4IGxlbmd0aCBzdHJpbmdcbiAgICBjb25zdCByYW5kb20gPSBSZXNvdXJjZU5hbWluZy5jcmVhdGVSYW5kb21TdHJpbmcoYCR7Y2RrLk5hbWVzLnVuaXF1ZUlkKHNjb3BlKX0tJHtjZGsuTmFtZXMudW5pcXVlSWQodGhpcyl9YCk7XG4gICAgLy8g8J+RhyBEZWZpbml0aW9uIGF1dG8gbmFtaW5nXG4gICAgY29uc3QgYXV0b05hbWluZyA9IHtcbiAgICAgIG5vdGlmaWNhdGlvblRvcGljTmFtZTogYHJkcy1kYi1ydW5uaW5nLXNjaGVkdWxlLW5vdGlmaWNhdGlvbi0ke3JhbmRvbX0tdG9waWNgLFxuICAgICAgbm90aWZpY2F0aW9uVG9waWNEaXNwbGF5TmFtZTogJ1JEUyBEQiBSdW5uaW5nIFNjaGVkdWxlIE5vdGlmaWNhdGlvbiBUb3BpYycsXG4gICAgICBzdGF0ZU1hY2hpbmVOYW1lOiBgcmRzLWRiLXJ1bm5pbmctc2NoZWR1bGUtJHtyYW5kb219LXN0YXRlLW1hY2hpbmVgLFxuICAgICAgc3RhdGVNYWNoaW5lUm9sZU5hbWU6IGByZHMtZGItcnVubmluZy1zY2hlZHVsZS0ke3JhbmRvbX0tc3RhdGUtbWFjaGluZS1yb2xlYCxcbiAgICAgIHNjaGVkdWxlclJvbGVOYW1lOiBgcmRzLWRiLXJ1bm5pbmctc2NoZWR1bGVyLSR7cmFuZG9tfS1leGVjLXJvbGVgLFxuICAgICAgc3RhcnRTY2hlZHVsZU5hbWU6IGByZHMtZGF0YWJhc2UtcnVubmluZy1zdG9wLSR7cmFuZG9tfS1zY2hlZHVsZWAsXG4gICAgICBzdG9wU2NoZWR1bGVOYW1lOiBgcmRzLWRhdGFiYXNlLXJ1bm5pbmctc3RhcnQtJHtyYW5kb219LXNjaGVkdWxlYCxcbiAgICB9O1xuICAgIC8vIPCfkYfjgIBmaW5hbCBuYW1pbmdcbiAgICBjb25zdCBuYW1lcyA9IFJlc291cmNlTmFtaW5nLm5hbWluZyhhdXRvTmFtaW5nLCBwcm9wcy5yZXNvdXJjZU5hbWluZ09wdGlvbiBhcyBSZXNvdXJjZU5hbWluZy5SZXNvdXJjZU5hbWluZ09wdGlvbik7XG5cblxuICAgIC8vIPCfkYcgU05TIFRvcGljIGZvciBub3RpZmljYXRpb25zXG4gICAgY29uc3QgdG9waWM6IHNucy5Ub3BpYyA9IG5ldyBzbnMuVG9waWModGhpcywgJ05vdGlmaWNhdGlvblRvcGljJywge1xuICAgICAgdG9waWNOYW1lOiBuYW1lcy5ub3RpZmljYXRpb25Ub3BpY05hbWUsXG4gICAgICBkaXNwbGF5TmFtZTogbmFtZXMubm90aWZpY2F0aW9uVG9waWNEaXNwbGF5TmFtZSxcbiAgICB9KTtcblxuICAgIC8vIPCfkYcgU3Vic2NyaWJlIGFuIGVtYWlsIGVuZHBvaW50IHRvIHRoZSB0b3BpY1xuICAgIGNvbnN0IGVtYWlscyA9IHByb3BzLm5vdGlmaWNhdGlvbnM/LmVtYWlscyA/PyBbXTtcbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgdmFsdWVdIG9mIGVtYWlscy5lbnRyaWVzKCkpIHtcbiAgICAgIG5ldyBzbnMuU3Vic2NyaXB0aW9uKHRoaXMsIGBTdWJzY3JpcHRpb25FbWFpbCR7aW5kZXgudG9TdHJpbmcoKS5wYWRTdGFydCgzLCAnMCcpfWAsIHtcbiAgICAgICAgdG9waWMsXG4gICAgICAgIHByb3RvY29sOiBzbnMuU3Vic2NyaXB0aW9uUHJvdG9jb2wuRU1BSUwsXG4gICAgICAgIGVuZHBvaW50OiB2YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGluaXRTdGF0ZUxpc3REZWZpbml0aW9uOiBzZm4uUGFzcyA9IG5ldyBzZm4uUGFzcyh0aGlzLCAnSW5pdFN0YXRlTGlzdERlZmluaXRpb24nLCB7XG4gICAgICByZXN1bHQ6IHNmbi5SZXN1bHQuZnJvbU9iamVjdChbXG4gICAgICAgIHsgbmFtZTogJ0FWQUlMQUJMRScsIGVtb2ppOiAn8J+kqScsIHN0YXRlOiAnYXZhaWxhYmxlJyB9LFxuICAgICAgICB7IG5hbWU6ICdTVE9QUEVEJywgZW1vamk6ICfwn5i0Jywgc3RhdGU6ICdzdG9wcGVkJyB9LFxuICAgICAgXSksXG4gICAgICByZXN1bHRQYXRoOiAnJC5kZWZpbml0aW9uLnN0YXRlTGlzdCcsXG4gICAgfSk7XG5cbiAgICAvLyDwn5GHIFN1Y2NlZWRcbiAgICBjb25zdCBzdGF0ZUNoYW5nZVN1Y2NlZWQgPSBuZXcgc2ZuLlN1Y2NlZWQodGhpcywgJ1N0YXRlQ2hhbmdlU3VjY2VlZCcpO1xuXG4gICAgY29uc3QgcHJlcGFyZVRvcGljVmFsdWUgPSBuZXcgc2ZuLlBhc3ModGhpcywgJ1ByZXBhcmVUb3BpY1ZhbHVlJywge1xuICAgICAgcmVzdWx0UGF0aDogJyQucHJlcGFyZS50b3BpYy52YWx1ZXMnLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBlbW9qaTogc2ZuLkpzb25QYXRoLmFycmF5R2V0SXRlbShzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuZGVmaW5pdGlvbi5zdGF0ZUxpc3RbPyhALnN0YXRlID09ICQuUmVzdWx0LnN0YXR1cy5jdXJyZW50KV0uZW1vamknKSwgMCksXG4gICAgICAgIHN0YXR1czogc2ZuLkpzb25QYXRoLmFycmF5R2V0SXRlbShzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuZGVmaW5pdGlvbi5zdGF0ZUxpc3RbPyhALnN0YXRlID09ICQuUmVzdWx0LnN0YXR1cy5jdXJyZW50KV0ubmFtZScpLCAwKSxcbiAgICAgICAgYWNjb3VudDogc2ZuLkpzb25QYXRoLmFycmF5R2V0SXRlbShzZm4uSnNvblBhdGguc3RyaW5nU3BsaXQoc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLlRhcmdldFJlc291cmNlJyksICc6JyksIDQpLCAvLyBhY2NvdW50XG4gICAgICAgIHJlZ2lvbjogc2ZuLkpzb25QYXRoLmFycmF5R2V0SXRlbShzZm4uSnNvblBhdGguc3RyaW5nU3BsaXQoc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLlRhcmdldFJlc291cmNlJyksICc6JyksIDMpLCAvLyByZWdpb25cbiAgICAgIH0sXG4gICAgfSkubmV4dChuZXcgc2ZuLlBhc3ModGhpcywgJ0dlbmVyYXRlVG9waWMnLCB7XG4gICAgICByZXN1bHRQYXRoOiAnJC5HZW5lcmF0ZS5Ub3BpYycsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIFN1YmplY3Q6IHNmbi5Kc29uUGF0aC5mb3JtYXQoJ3t9IFt7fV0gQVdTIFJEUyBEQiB7fSBSdW5uaW5nIE5vdGlmaWNhdGlvbiBbe31dW3t9XScsXG4gICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLnByZXBhcmUudG9waWMudmFsdWVzLmVtb2ppJyksXG4gICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLnByZXBhcmUudG9waWMudmFsdWVzLnN0YXR1cycpLFxuICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5wYXJhbXMuTW9kZScpLFxuICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5wcmVwYXJlLnRvcGljLnZhbHVlcy5hY2NvdW50JyksXG4gICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLnByZXBhcmUudG9waWMudmFsdWVzLnJlZ2lvbicpLFxuICAgICAgICApLFxuICAgICAgICBUZXh0TWVzc2FnZTogc2ZuLkpzb25QYXRoLmZvcm1hdCgnQWNjb3VudCA6IHt9XFxuUmVnaW9uIDoge31cXG5UeXBlIDoge31cXG5JZGVudGlmaWVyIDoge31cXG5TdGF0dXMgOiB7fScsXG4gICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLnByZXBhcmUudG9waWMudmFsdWVzLmFjY291bnQnKSxcbiAgICAgICAgICBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQucHJlcGFyZS50b3BpYy52YWx1ZXMucmVnaW9uJyksXG4gICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLlJlc3VsdC50YXJnZXQudHlwZScpLFxuICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5SZXN1bHQudGFyZ2V0LmlkZW50aWZpZXInKSxcbiAgICAgICAgICBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQucHJlcGFyZS50b3BpYy52YWx1ZXMuc3RhdHVzJyksXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0pLm5leHQobmV3IHRhc2tzLlNuc1B1Ymxpc2godGhpcywgJ1NlbmROb3RpZmljYXRpb24nLCB7XG4gICAgICB0b3BpYzogdG9waWMsXG4gICAgICBzdWJqZWN0OiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuR2VuZXJhdGUuVG9waWMuU3ViamVjdCcpLFxuICAgICAgbWVzc2FnZTogc2ZuLlRhc2tJbnB1dC5mcm9tSnNvblBhdGhBdCgnJC5HZW5lcmF0ZS5Ub3BpYy5UZXh0TWVzc2FnZScpLFxuICAgICAgcmVzdWx0UGF0aDogJyQuc25zUmVzdWx0JyxcbiAgICB9KS5uZXh0KHN0YXRlQ2hhbmdlU3VjY2VlZCkpKTtcblxuICAgIC8vIPCfkYcgR2V0IERCIEluc3RhbmNlIFJlc291cmNlcyAoRmlsdGVyIGJ5IFRhZylcbiAgICBjb25zdCBnZXRSZXNvdXJjZXMgPSBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2UodGhpcywgJ0dldFJlc291cmNlcycsIHtcbiAgICAgIGlhbVJlc291cmNlczogWycqJ10sXG4gICAgICBpYW1BY3Rpb246ICd0YWc6R2V0UmVzb3VyY2VzJyxcbiAgICAgIHNlcnZpY2U6ICdyZXNvdXJjZWdyb3Vwc3RhZ2dpbmdhcGknLFxuICAgICAgYWN0aW9uOiAnZ2V0UmVzb3VyY2VzJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgUmVzb3VyY2VUeXBlRmlsdGVyczogW1xuICAgICAgICAgICdyZHM6ZGInLFxuICAgICAgICAgICdyZHM6Y2x1c3RlcicsXG4gICAgICAgIF0sXG4gICAgICAgIFRhZ0ZpbHRlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBLZXk6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5QYXJhbXMuVGFnS2V5JyksXG4gICAgICAgICAgICBWYWx1ZXM6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5QYXJhbXMuVGFnVmFsdWVzJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICByZXN1bHRQYXRoOiAnJC5SZXN1bHQnLFxuICAgICAgcmVzdWx0U2VsZWN0b3I6IHtcbiAgICAgICAgVGFyZ2V0UmVzb3VyY2VzOiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuLlJlc291cmNlVGFnTWFwcGluZ0xpc3RbKl0uUmVzb3VyY2VBUk4nKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpbml0U3RhdGVMaXN0RGVmaW5pdGlvbi5uZXh0KGdldFJlc291cmNlcyk7XG5cbiAgICAvLyDwn5GHIERlc2NyaWJlIERCIEluc3RhbmNlIFRhc2tcbiAgICBjb25zdCBkZXNjcmliZURCSW5zdGFuY2VzVGFzayA9IG5ldyB0YXNrcy5DYWxsQXdzU2VydmljZSh0aGlzLCAnRGVzY3JpYmVEQkluc3RhbmNlcycsIHtcbiAgICAgIGlhbVJlc291cmNlczogW2Bhcm46YXdzOnJkczoqOiR7YWNjb3VudH06ZGI6KmBdLFxuICAgICAgc2VydmljZTogJ3JkcycsXG4gICAgICBhY3Rpb246ICdkZXNjcmliZURCSW5zdGFuY2VzJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgRGJJbnN0YW5jZUlkZW50aWZpZXI6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5SZXN1bHQudGFyZ2V0LmlkZW50aWZpZXInKSxcbiAgICAgIH0sXG4gICAgICByZXN1bHRQYXRoOiAnJC5SZXN1bHQuc3RhdHVzJyxcbiAgICAgIHJlc3VsdFNlbGVjdG9yOiB7XG4gICAgICAgIGN1cnJlbnQ6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5EYkluc3RhbmNlc1swXS5EYkluc3RhbmNlU3RhdHVzJyksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8g8J+RhyBTdG9wIERCIEluc3RhbmNlIFRhc2tcbiAgICBjb25zdCBzdG9wREJJbnN0YW5jZVRhc2sgPSBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2UodGhpcywgJ1N0b3BEQkluc3RhbmNlJywge1xuICAgICAgaWFtUmVzb3VyY2VzOiBbYGFybjphd3M6cmRzOio6JHthY2NvdW50fTpkYjoqYF0sXG4gICAgICBzZXJ2aWNlOiAncmRzJyxcbiAgICAgIGFjdGlvbjogJ3N0b3BEQkluc3RhbmNlJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgRGJJbnN0YW5jZUlkZW50aWZpZXI6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5SZXN1bHQudGFyZ2V0LmlkZW50aWZpZXInKSxcbiAgICAgIH0sXG4gICAgICByZXN1bHRQYXRoOiAnJC5SZXN1bHQuU3RvcERCSW5zdGFuY2UnLFxuICAgIH0pO1xuXG4gICAgLy8g8J+RhyBTdGFydCBEQiBJbnN0YW5jZSBUYXNrXG4gICAgY29uc3Qgc3RhcnREQkluc3RhbmNlVGFzayA9IG5ldyB0YXNrcy5DYWxsQXdzU2VydmljZSh0aGlzLCAnU3RhcnREQkluc3RhbmNlJywge1xuICAgICAgaWFtUmVzb3VyY2VzOiBbYGFybjphd3M6cmRzOio6JHthY2NvdW50fTpkYjoqYF0sXG4gICAgICBzZXJ2aWNlOiAncmRzJyxcbiAgICAgIGFjdGlvbjogJ3N0YXJ0REJJbnN0YW5jZScsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIERiSW5zdGFuY2VJZGVudGlmaWVyOiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuUmVzdWx0LnRhcmdldC5pZGVudGlmaWVyJyksXG4gICAgICB9LFxuICAgICAgcmVzdWx0UGF0aDogJyQuUmVzdWx0LlN0YXJ0REJJbnN0YW5jZScsXG4gICAgfSk7XG5cbiAgICAvLyDwn5GHIERlc2NyaWJlIERCIENsdXN0ZXIgVGFza1xuICAgIGNvbnN0IGRlc2NyaWJlREJDbHVzdGVyc1Rhc2sgPSBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2UodGhpcywgJ0Rlc2NyaWJlREJDbHVzdGVycycsIHtcbiAgICAgIGlhbVJlc291cmNlczogW2Bhcm46YXdzOnJkczoqOiR7YWNjb3VudH06Y2x1c3RlcjoqYF0sXG4gICAgICBzZXJ2aWNlOiAncmRzJyxcbiAgICAgIGFjdGlvbjogJ2Rlc2NyaWJlREJDbHVzdGVycycsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIERiQ2x1c3RlcklkZW50aWZpZXI6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5SZXN1bHQudGFyZ2V0LmlkZW50aWZpZXInKSxcbiAgICAgIH0sXG4gICAgICByZXN1bHRQYXRoOiAnJC5SZXN1bHQuc3RhdHVzJyxcbiAgICAgIHJlc3VsdFNlbGVjdG9yOiB7XG4gICAgICAgIGN1cnJlbnQ6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5EYkNsdXN0ZXJzWzBdLlN0YXR1cycpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGhhbmRsZURiQ2x1c3Rlck5vdEZvdW5kID0gbmV3IHNmbi5QYXNzKHRoaXMsICdIYW5kbGVEYkNsdXN0ZXJOb3RGb3VuZCcsIHtcbiAgICAgIHJlc3VsdDogc2ZuLlJlc3VsdC5mcm9tT2JqZWN0KHtcbiAgICAgICAgbWVzc2FnZTogJ0RCIENsdXN0ZXIgbm90IGZvdW5kLCBidXQgY29udGludWluZy4uLicsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlREJDbHVzdGVyc1Rhc2suYWRkQ2F0Y2goaGFuZGxlRGJDbHVzdGVyTm90Rm91bmQsIHtcbiAgICAgIGVycm9yczogWydSZHMuRGJDbHVzdGVyTm90Rm91bmRFeGNlcHRpb24nXSxcbiAgICB9KTtcblxuICAgIC8vIPCfkYcgU3RvcCBEQiBDbHVzdGVyIFRhc2tcbiAgICBjb25zdCBzdG9wREJDbHVzdGVyVGFzayA9IG5ldyB0YXNrcy5DYWxsQXdzU2VydmljZSh0aGlzLCAnU3RvcERCQ2x1c3RlcicsIHtcbiAgICAgIGlhbVJlc291cmNlczogW2Bhcm46YXdzOnJkczoqOiR7YWNjb3VudH06Y2x1c3RlcjoqYF0sXG4gICAgICBzZXJ2aWNlOiAncmRzJyxcbiAgICAgIGFjdGlvbjogJ3N0b3BEQkNsdXN0ZXInLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBEYkNsdXN0ZXJJZGVudGlmaWVyOiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuUmVzdWx0LnRhcmdldC5pZGVudGlmaWVyJyksXG4gICAgICB9LFxuICAgICAgcmVzdWx0UGF0aDogJyQuUmVzdWx0LlN0b3BEQkNsdXN0ZXInLFxuICAgIH0pO1xuXG4gICAgLy8g8J+RhyBTdG9wIERCIENsdXN0ZXIgVGFza1xuICAgIGNvbnN0IHN0YXJ0REJDbHVzdGVyVGFzayA9IG5ldyB0YXNrcy5DYWxsQXdzU2VydmljZSh0aGlzLCAnU3RhcnREQkNsdXN0ZXInLCB7XG4gICAgICBpYW1SZXNvdXJjZXM6IFtgYXJuOmF3czpyZHM6Kjoke2FjY291bnR9OmNsdXN0ZXI6KmBdLFxuICAgICAgc2VydmljZTogJ3JkcycsXG4gICAgICBhY3Rpb246ICdzdGFydERCQ2x1c3RlcicsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIERiQ2x1c3RlcklkZW50aWZpZXI6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5SZXN1bHQudGFyZ2V0LmlkZW50aWZpZXInKSxcbiAgICAgIH0sXG4gICAgICByZXN1bHRQYXRoOiAnJC5SZXN1bHQuU3RhcnREQkNsdXN0ZXInLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGVzY3JpYmVUeXBlQ2hvaWNlID0gbmV3IHNmbi5DaG9pY2UodGhpcywgJ0Rlc2NyaWJlVHlwZUNob2ljZScpXG4gICAgICAud2hlbihcbiAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuUmVzdWx0LnRhcmdldC50eXBlJywgJ2RiJyksXG4gICAgICAgIGRlc2NyaWJlREJJbnN0YW5jZXNUYXNrLFxuICAgICAgKVxuICAgICAgLndoZW4oXG4gICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLlJlc3VsdC50YXJnZXQudHlwZScsICdjbHVzdGVyJyksXG4gICAgICAgIGRlc2NyaWJlREJDbHVzdGVyc1Rhc2ssXG4gICAgICApXG4gICAgICAub3RoZXJ3aXNlKG5ldyBzZm4uRmFpbCh0aGlzLCAnVW5rbm93blR5cGUnKSk7XG5cbiAgICBjb25zdCBzdGF0dXNDaGFuZ2VXYWl0ID0gbmV3IHNmbi5XYWl0KHRoaXMsICdTdGF0dXNDaGFuZ2VXYWl0Jywge1xuICAgICAgdGltZTogc2ZuLldhaXRUaW1lLmR1cmF0aW9uKGNkay5EdXJhdGlvbi5taW51dGVzKDEpKSxcbiAgICB9KTtcbiAgICBzdGF0dXNDaGFuZ2VXYWl0Lm5leHQoZGVzY3JpYmVUeXBlQ2hvaWNlKTtcblxuICAgIHN0YXJ0REJJbnN0YW5jZVRhc2submV4dChzdGF0dXNDaGFuZ2VXYWl0KTtcbiAgICBzdG9wREJJbnN0YW5jZVRhc2submV4dChzdGF0dXNDaGFuZ2VXYWl0KTtcblxuICAgIHN0YXJ0REJDbHVzdGVyVGFzay5uZXh0KHN0YXR1c0NoYW5nZVdhaXQpO1xuICAgIHN0b3BEQkNsdXN0ZXJUYXNrLm5leHQoc3RhdHVzQ2hhbmdlV2FpdCk7XG5cbiAgICBjb25zdCBzdGF0dXNDaG9pY2UgPSBuZXcgc2ZuLkNob2ljZSh0aGlzLCAnU3RhdHVzQ2hvaWNlJylcbiAgICAgIC8vIGRiIGluc3RhbmNlIHN0YXJ0IG9uIHN0YXR1cy5zdG9wcGVkXG4gICAgICAud2hlbihcbiAgICAgICAgc2ZuLkNvbmRpdGlvbi5hbmQoXG4gICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQucGFyYW1zLk1vZGUnLCAnU3RhcnQnKSxcbiAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5SZXN1bHQudGFyZ2V0LnR5cGUnLCAnZGInKSxcbiAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5SZXN1bHQuc3RhdHVzLmN1cnJlbnQnLCAnc3RvcHBlZCcpLFxuICAgICAgICApLFxuICAgICAgICBzdGFydERCSW5zdGFuY2VUYXNrLFxuICAgICAgKVxuICAgICAgLy8gZGIgaW5zdGFuY2Ugc3RvcCBvbiBzdGF0dXMuYXZhaWxhYmxlXG4gICAgICAud2hlbihcbiAgICAgICAgc2ZuLkNvbmRpdGlvbi5hbmQoXG4gICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQucGFyYW1zLk1vZGUnLCAnU3RvcCcpLFxuICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLlJlc3VsdC50YXJnZXQudHlwZScsICdkYicpLFxuICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLlJlc3VsdC5zdGF0dXMuY3VycmVudCcsICdhdmFpbGFibGUnKSxcbiAgICAgICAgKSxcbiAgICAgICAgc3RvcERCSW5zdGFuY2VUYXNrLFxuICAgICAgKVxuICAgICAgLy8gc3RhcnQgb24gc3RhdHVzLnN0b3BwZWRcbiAgICAgIC53aGVuKFxuICAgICAgICBzZm4uQ29uZGl0aW9uLmFuZChcbiAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5wYXJhbXMuTW9kZScsICdTdGFydCcpLFxuICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLlJlc3VsdC50YXJnZXQudHlwZScsICdjbHVzdGVyJyksXG4gICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuUmVzdWx0LnN0YXR1cy5jdXJyZW50JywgJ3N0b3BwZWQnKSxcbiAgICAgICAgKSxcbiAgICAgICAgc3RhcnREQkNsdXN0ZXJUYXNrLFxuICAgICAgKVxuICAgICAgLy8gc3RvcCBvbiBzdGF0dXMuYXZhaWxhYmxlXG4gICAgICAud2hlbihcbiAgICAgICAgc2ZuLkNvbmRpdGlvbi5hbmQoXG4gICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQucGFyYW1zLk1vZGUnLCAnU3RvcCcpLFxuICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLlJlc3VsdC50YXJnZXQudHlwZScsICdjbHVzdGVyJyksXG4gICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuUmVzdWx0LnN0YXR1cy5jdXJyZW50JywgJ2F2YWlsYWJsZScpLFxuICAgICAgICApLFxuICAgICAgICBzdG9wREJDbHVzdGVyVGFzayxcbiAgICAgIClcbiAgICAgIC8vIHN0YXR1cyBjaGFuZ2Ugc3VjY2VlZCwgZ2VuZXJhdGUgdG9waWNcbiAgICAgIC53aGVuKFxuICAgICAgICBzZm4uQ29uZGl0aW9uLm9yKFxuICAgICAgICAgIHNmbi5Db25kaXRpb24uYW5kKFxuICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQucGFyYW1zLk1vZGUnLCAnU3RhcnQnKSxcbiAgICAgICAgICAgIHNmbi5Db25kaXRpb24ub3IoXG4gICAgICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLlJlc3VsdC50YXJnZXQudHlwZScsICdkYicpLFxuICAgICAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5SZXN1bHQudGFyZ2V0LnR5cGUnLCAnY2x1c3RlcicpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLlJlc3VsdC5zdGF0dXMuY3VycmVudCcsICdhdmFpbGFibGUnKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHNmbi5Db25kaXRpb24uYW5kKFxuICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQucGFyYW1zLk1vZGUnLCAnU3RvcCcpLFxuICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5vcihcbiAgICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuUmVzdWx0LnRhcmdldC50eXBlJywgJ2RiJyksXG4gICAgICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLlJlc3VsdC50YXJnZXQudHlwZScsICdjbHVzdGVyJyksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuUmVzdWx0LnN0YXR1cy5jdXJyZW50JywgJ3N0b3BwZWQnKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICBwcmVwYXJlVG9waWNWYWx1ZSxcbiAgICAgIClcbiAgICAgIC53aGVuKFxuICAgICAgICAvLyBzdGFydCAmIHN0YXJ0aW5nL2NvbmZpZ3VyaW5nLWVuaGFuY2VkLW1vbml0b3JpbmcvYmFja2luZy11cCBvciBzdG9wIG1vZGlmeWluZy9zdG9wcGluZ1xuICAgICAgICBzZm4uQ29uZGl0aW9uLm9yKFxuICAgICAgICAgIHNmbi5Db25kaXRpb24uYW5kKFxuICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5hbmQoXG4gICAgICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLnBhcmFtcy5Nb2RlJywgJ1N0YXJ0JyksXG4gICAgICAgICAgICAgIHNmbi5Db25kaXRpb24ub3IoXG4gICAgICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuUmVzdWx0LnRhcmdldC50eXBlJywgJ2RiJyksXG4gICAgICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuUmVzdWx0LnRhcmdldC50eXBlJywgJ2NsdXN0ZXInKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5vcihcbiAgICAgICAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5SZXN1bHQuc3RhdHVzLmN1cnJlbnQnLCAnc3RhcnRpbmcnKSxcbiAgICAgICAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5SZXN1bHQuc3RhdHVzLmN1cnJlbnQnLCAnY29uZmlndXJpbmctZW5oYW5jZWQtbW9uaXRvcmluZycpLFxuICAgICAgICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLlJlc3VsdC5zdGF0dXMuY3VycmVudCcsICdiYWNraW5nLXVwJyksXG4gICAgICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuUmVzdWx0LnN0YXR1cy5jdXJyZW50JywgJ21vZGlmeWluZycpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHNmbi5Db25kaXRpb24uYW5kKFxuICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5hbmQoXG4gICAgICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLnBhcmFtcy5Nb2RlJywgJ1N0b3AnKSxcbiAgICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5vcihcbiAgICAgICAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5SZXN1bHQudGFyZ2V0LnR5cGUnLCAnZGInKSxcbiAgICAgICAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5SZXN1bHQudGFyZ2V0LnR5cGUnLCAnY2x1c3RlcicpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBzZm4uQ29uZGl0aW9uLm9yKFxuICAgICAgICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLlJlc3VsdC5zdGF0dXMuY3VycmVudCcsICdtb2RpZnlpbmcnKSxcbiAgICAgICAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5SZXN1bHQuc3RhdHVzLmN1cnJlbnQnLCAnc3RvcHBpbmcnKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgc3RhdHVzQ2hhbmdlV2FpdCxcbiAgICAgIClcbiAgICAgIC5vdGhlcndpc2UobmV3IHNmbi5GYWlsKHRoaXMsICdTdGF0dXNGYWlsJywge1xuICAgICAgICBjYXVzZTogJ2RiIGluc3RhbmNlIG9yIGNsdXN0ZXIgc3RhdHVzIGZhaWwuJyxcbiAgICAgIH0pKTtcblxuICAgIGdldFJlc291cmNlcy5uZXh0KFxuICAgICAgbmV3IHNmbi5NYXAodGhpcywgJ1Jlc291cmNlUHJvY2Vzc2luZ01hcCcsIHtcbiAgICAgICAgaXRlbXNQYXRoOiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuUmVzdWx0LlRhcmdldFJlc291cmNlcycpLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgVGFyZ2V0UmVzb3VyY2U6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJCQuTWFwLkl0ZW0uVmFsdWUnKSxcbiAgICAgICAgICBwYXJhbXM6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5QYXJhbXMnKSxcbiAgICAgICAgICBkZWZpbml0aW9uOiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuZGVmaW5pdGlvbicpLFxuICAgICAgICB9LFxuICAgICAgICBtYXhDb25jdXJyZW5jeTogMTAsXG4gICAgICB9KS5pdGVtUHJvY2Vzc29yKFxuICAgICAgICBuZXcgc2ZuLlBhc3ModGhpcywgJ0dldElkZW50aWZpZXInLCB7XG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQuUmVzdWx0LnRhcmdldCcsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgaWRlbnRpZmllcjogc2ZuLkpzb25QYXRoLmFycmF5R2V0SXRlbShzZm4uSnNvblBhdGguc3RyaW5nU3BsaXQoc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLlRhcmdldFJlc291cmNlJyksICc6JyksIDYpLFxuICAgICAgICAgICAgdHlwZTogc2ZuLkpzb25QYXRoLmFycmF5R2V0SXRlbShzZm4uSnNvblBhdGguc3RyaW5nU3BsaXQoc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLlRhcmdldFJlc291cmNlJyksICc6JyksIDUpLCAvLyBkYiBvciBjbHVzdGVyXG4gICAgICAgICAgfSxcbiAgICAgICAgfSkubmV4dChkZXNjcmliZVR5cGVDaG9pY2UpKSk7XG5cbiAgICBkZXNjcmliZURCSW5zdGFuY2VzVGFzay5uZXh0KHN0YXR1c0Nob2ljZSk7XG4gICAgZGVzY3JpYmVEQkNsdXN0ZXJzVGFzay5uZXh0KHN0YXR1c0Nob2ljZSk7XG5cbiAgICAvLyDwn5GHIFN0ZXBGdW5jdGlvbnMgU3RhdGUgTWFjaGluZVxuICAgIGNvbnN0IHN0YXRlTWFjaGluZSA9IG5ldyBzZm4uU3RhdGVNYWNoaW5lKHRoaXMsICdTdGF0ZU1hY2hpbmUnLCB7XG4gICAgICBzdGF0ZU1hY2hpbmVOYW1lOiBuYW1lcy5zdGF0ZU1hY2hpbmVOYW1lLFxuICAgICAgZGVmaW5pdGlvbkJvZHk6IHNmbi5EZWZpbml0aW9uQm9keS5mcm9tQ2hhaW5hYmxlKGluaXRTdGF0ZUxpc3REZWZpbml0aW9uKSxcbiAgICB9KTtcblxuICAgIC8vIPCfkYcgcmVuYW1lIHJvbGUgbmFtZSAmIGRlc2NyaXB0aW9uLlxuICAgIGlmIChuYW1lcy5zdGF0ZU1hY2hpbmVSb2xlTmFtZSkge1xuICAgICAgY29uc3Qgcm9sZSA9IHN0YXRlTWFjaGluZS5ub2RlLmZpbmRDaGlsZCgnUm9sZScpIGFzIGlhbS5Sb2xlO1xuICAgICAgY29uc3QgY2ZuUm9sZSA9IHJvbGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgaWFtLkNmblJvbGU7XG4gICAgICBjZm5Sb2xlLmFkZFByb3BlcnR5T3ZlcnJpZGUoJ1JvbGVOYW1lJywgbmFtZXMuc3RhdGVNYWNoaW5lUm9sZU5hbWUpO1xuICAgICAgY2ZuUm9sZS5hZGRQcm9wZXJ0eU92ZXJyaWRlKCdEZXNjcmlwdGlvbicsICdSRFMgREIgUnVubmluZyBtYWNoaW5lIHJvbGUuJyk7XG4gICAgICBjb25zdCBwb2xpY3kgPSByb2xlLm5vZGUuZmluZENoaWxkKCdEZWZhdWx0UG9saWN5JykgYXMgaWFtLlBvbGljeTtcbiAgICAgIGNvbnN0IGNmblBvbGljeSA9IHBvbGljeS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBpYW0uQ2ZuUG9saWN5O1xuICAgICAgY2ZuUG9saWN5LmFkZFByb3BlcnR5T3ZlcnJpZGUoJ1BvbGljeU5hbWUnLCBgcmRzLWRiLXJ1bm5pbmctc2NoZWR1bGUtJHtyYW5kb219LXN0YXRlLW1hY2hpbmUtcG9saWN5YCk7XG4gICAgfVxuXG4gICAgLy8g8J+RhyBTdGF0ZU1hY2hpbmUgRXhlYyBSb2xlIG9mIFNjaGVkdWxlclxuICAgIGNvbnN0IHNjaGVkdWxlckV4ZWNSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdTY2hlZHVsZXJFeGVjdXRpb25Sb2xlJywge1xuICAgICAgcm9sZU5hbWU6IG5hbWVzLnNjaGVkdWxlclJvbGVOYW1lLFxuICAgICAgZGVzY3JpcHRpb246ICdSRFMgREIgUnVubmluZyBzY2hlZHVsZXIgcm9sZScsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnc2NoZWR1bGVyLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgICdzdGF0ZS1tYWNoaW5lLWV4ZWMtcG9saWN5JzogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnc3RhdGVzOlN0YXJ0RXhlY3V0aW9uJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybixcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIPCfkYcgU2NoZWR1bGUgc3RhdGVcbiAgICBjb25zdCBzaGVkdWxlU3RhdGU6IHN0cmluZyA9ICgoKSA9PiB7XG4gICAgICBpZiAocHJvcHMuZW5hYmxlU2NoZWR1bGluZyA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmVuYWJsZVNjaGVkdWxpbmcpIHtcbiAgICAgICAgcmV0dXJuICdFTkFCTEVEJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnRElTQUJMRUQnO1xuICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICAvLyDwn5GHIFN0b3AgU2NoZWR1bGUgZXhwcmVzc2lvblxuICAgIGNvbnN0IHN0b3BTY2hlZHVsZUV4cHJlc3Npb246IHN0cmluZyA9ICgoKSA9PiB7XG4gICAgICAvLyBkZWZhdWx0OiB3ZWVrZGF5IDIxOjEwXG4gICAgICBjb25zdCBtaW51dGU6IHN0cmluZyA9IHByb3BzLnN0b3BTY2hlZHVsZT8ubWludXRlID8/ICcxMCc7XG4gICAgICBjb25zdCBob3VyOiBzdHJpbmcgPSBwcm9wcy5zdG9wU2NoZWR1bGU/LmhvdXIgPz8gJzIxJztcbiAgICAgIGNvbnN0IHdlZWs6IHN0cmluZyA9IHByb3BzLnN0b3BTY2hlZHVsZT8ud2VlayA/PyAnTU9OLUZSSSc7XG4gICAgICByZXR1cm4gYGNyb24oJHttaW51dGV9ICR7aG91cn0gPyAqICR7d2Vla30gKilgO1xuICAgIH0pKCk7XG5cbiAgICAvLyDwn5GHIFN0YXJ0IFNjaGVkdWxlIGV4cHJlc3Npb25cbiAgICBjb25zdCBzdGFydFNjaGVkdWxlRXhwcmVzc2lvbjogc3RyaW5nID0gKCgpID0+IHtcbiAgICAgIC8vIGRlZmF1bHQ6IHdlZWtkYXkgMDc6NTBcbiAgICAgIGNvbnN0IG1pbnV0ZTogc3RyaW5nID0gcHJvcHMuc3RhcnRTY2hlZHVsZT8ubWludXRlID8/ICc1MCc7XG4gICAgICBjb25zdCBob3VyOiBzdHJpbmcgPSBwcm9wcy5zdGFydFNjaGVkdWxlPy5ob3VyID8/ICc3JztcbiAgICAgIGNvbnN0IHdlZWs6IHN0cmluZyA9IHByb3BzLnN0YXJ0U2NoZWR1bGU/LndlZWsgPz8gJ01PTi1GUkknO1xuICAgICAgcmV0dXJuIGBjcm9uKCR7bWludXRlfSAke2hvdXJ9ID8gKiAke3dlZWt9ICopYDtcbiAgICB9KSgpO1xuXG4gICAgLy8g8J+RhyBTdG9wIERCIHNjaGVkdWxlXG4gICAgbmV3IERCUnVuaW5nU2NoZWR1bGUodGhpcywgJ1N0b3BEYXRhYmFzZVJ1bm5pbmdTY2hlZHVsZScsIHtcbiAgICAgIG5hbWU6IG5hbWVzLnN0YXJ0U2NoZWR1bGVOYW1lLFxuICAgICAgZGVzY3JpcHRpb246ICdzdG9wIGRhdGFiYXNlKGluc3RhbmNlL2NsdXN0ZXIpIHJ1bm5pbmcgc3RvcCBzY2hlZHVsZS4nLFxuICAgICAgc2hlZHVsZVN0YXRlLFxuICAgICAgdGltZXpvbmU6IHByb3BzLnN0b3BTY2hlZHVsZT8udGltZXpvbmUgPz8gJ1VUQycsXG4gICAgICBleHByZXNzaW9uOiBzdG9wU2NoZWR1bGVFeHByZXNzaW9uLFxuICAgICAgdGFyZ2V0OiB7XG4gICAgICAgIHN0YXRlTWFjaGluZUFybjogc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybixcbiAgICAgICAgcm9sZUFybjogc2NoZWR1bGVyRXhlY1JvbGUucm9sZUFybixcbiAgICAgICAgcmVzb3VyY2VUYWc6IHtcbiAgICAgICAgICBrZXk6IHByb3BzLnRhcmdldFJlc291cmNlLnRhZ0tleSxcbiAgICAgICAgICB2YWx1ZXM6IHByb3BzLnRhcmdldFJlc291cmNlLnRhZ1ZhbHVlcyxcbiAgICAgICAgfSxcbiAgICAgICAgaW5wdXQ6IHsgbW9kZTogJ1N0b3AnIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8g8J+RhyBTdGFydCBEQiBzY2hlZHVsZVxuICAgIG5ldyBEQlJ1bmluZ1NjaGVkdWxlKHRoaXMsICdTdGFydERhdGFiYXNlUnVubmluZ1NjaGVkdWxlJywge1xuICAgICAgbmFtZTogbmFtZXMuc3RvcFNjaGVkdWxlTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnc3RhcnQgZGIgaW5zdGFuY2Ugc2NoZWR1bGUuJyxcbiAgICAgIHNoZWR1bGVTdGF0ZSxcbiAgICAgIHRpbWV6b25lOiBwcm9wcy5zdGFydFNjaGVkdWxlPy50aW1lem9uZSA/PyAnVVRDJyxcbiAgICAgIGV4cHJlc3Npb246IHN0YXJ0U2NoZWR1bGVFeHByZXNzaW9uLFxuICAgICAgdGFyZ2V0OiB7XG4gICAgICAgIHN0YXRlTWFjaGluZUFybjogc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybixcbiAgICAgICAgcm9sZUFybjogc2NoZWR1bGVyRXhlY1JvbGUucm9sZUFybixcbiAgICAgICAgcmVzb3VyY2VUYWc6IHtcbiAgICAgICAgICBrZXk6IHByb3BzLnRhcmdldFJlc291cmNlLnRhZ0tleSxcbiAgICAgICAgICB2YWx1ZXM6IHByb3BzLnRhcmdldFJlc291cmNlLnRhZ1ZhbHVlcyxcbiAgICAgICAgfSxcbiAgICAgICAgaW5wdXQ6IHsgbW9kZTogJ1N0YXJ0JyB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICB9XG59XG5cbmludGVyZmFjZSBEQlJ1bmluZ1NjaGVkdWxlUHJvcHMge1xuICBuYW1lPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzaGVkdWxlU3RhdGU6IHN0cmluZztcbiAgdGltZXpvbmU6IHN0cmluZztcbiAgZXhwcmVzc2lvbjogc3RyaW5nO1xuICB0YXJnZXQ6IHtcbiAgICBzdGF0ZU1hY2hpbmVBcm46IHN0cmluZztcbiAgICByb2xlQXJuOiBzdHJpbmc7XG4gICAgcmVzb3VyY2VUYWc6IHtcbiAgICAgIGtleTogc3RyaW5nO1xuICAgICAgdmFsdWVzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGlucHV0OiB7XG4gICAgICBtb2RlOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbn1cblxuY2xhc3MgREJSdW5pbmdTY2hlZHVsZSBleHRlbmRzIHNjaGVkdWxlci5DZm5TY2hlZHVsZSB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEQlJ1bmluZ1NjaGVkdWxlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBzdGF0ZTogcHJvcHMuc2hlZHVsZVN0YXRlLFxuICAgICAgLy9ncm91cE5hbWU6IHNjaGVkdWxlR3JvdXAubmFtZSwgLy8gZGVmYXVsdFxuICAgICAgZmxleGlibGVUaW1lV2luZG93OiB7XG4gICAgICAgIG1vZGU6ICdPRkYnLFxuICAgICAgfSxcbiAgICAgIHNjaGVkdWxlRXhwcmVzc2lvblRpbWV6b25lOiBwcm9wcy50aW1lem9uZSxcbiAgICAgIHNjaGVkdWxlRXhwcmVzc2lvbjogcHJvcHMuZXhwcmVzc2lvbixcbiAgICAgIHRhcmdldDoge1xuICAgICAgICBhcm46IHByb3BzLnRhcmdldC5zdGF0ZU1hY2hpbmVBcm4sXG4gICAgICAgIHJvbGVBcm46IHByb3BzLnRhcmdldC5yb2xlQXJuLFxuICAgICAgICBpbnB1dDogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIFBhcmFtczoge1xuICAgICAgICAgICAgVGFnS2V5OiBwcm9wcy50YXJnZXQucmVzb3VyY2VUYWcua2V5LFxuICAgICAgICAgICAgVGFnVmFsdWVzOiBwcm9wcy50YXJnZXQucmVzb3VyY2VUYWcudmFsdWVzLFxuICAgICAgICAgICAgTW9kZTogcHJvcHMudGFyZ2V0LmlucHV0Lm1vZGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHJldHJ5UG9saWN5OiB7XG4gICAgICAgICAgbWF4aW11bUV2ZW50QWdlSW5TZWNvbmRzOiA2MCxcbiAgICAgICAgICBtYXhpbXVtUmV0cnlBdHRlbXB0czogMCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFBK0g7QUFVM0UsbUdBVmdCLHdDQUFrQixPQVVoQjtBQVR0RSxvSEFBeUc7QUFDekcsbUNBQW1DO0FBQ25DLDZDQUFnRDtBQUNoRCwyQ0FBMkM7QUFDM0MsdURBQXVEO0FBQ3ZELDJDQUEyQztBQUUzQyw2RkFBdUY7QUErQ3ZGLE1BQWEsK0JBQWdDLFNBQVEsbUJBQUs7SUFDeEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQztRQUNuRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixtQ0FBbUM7UUFDbkMsTUFBTSxNQUFNLEdBQUcsb0NBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3Ryw0QkFBNEI7UUFDNUIsTUFBTSxVQUFVLEdBQUc7WUFDakIscUJBQXFCLEVBQUUsd0NBQXdDLE1BQU0sUUFBUTtZQUM3RSw0QkFBNEIsRUFBRSw0Q0FBNEM7WUFDMUUsZ0JBQWdCLEVBQUUsMkJBQTJCLE1BQU0sZ0JBQWdCO1lBQ25FLG9CQUFvQixFQUFFLDJCQUEyQixNQUFNLHFCQUFxQjtZQUM1RSxpQkFBaUIsRUFBRSw0QkFBNEIsTUFBTSxZQUFZO1lBQ2pFLGlCQUFpQixFQUFFLDZCQUE2QixNQUFNLFdBQVc7WUFDakUsZ0JBQWdCLEVBQUUsOEJBQThCLE1BQU0sV0FBVztTQUNsRSxDQUFDO1FBQ0Ysa0JBQWtCO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLG9DQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsb0JBQTJELENBQUMsQ0FBQztRQUduSCxpQ0FB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cUJELE1BQU0sZ0JBQWlCLFNBQVEsU0FBUyxDQUFDLFdBQVc7SUFDbEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE0QjtRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ3pCLDJDQUEyQztZQUMzQyxrQkFBa0IsRUFBRTtnQkFDbEIsSUFBSSxFQUFFLEtBQUs7YUFDWjtZQUNELDBCQUEwQixFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQzFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQ3BDLE1BQU0sRUFBRTtnQkFDTixHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlO2dCQUNqQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPO2dCQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDcEIsTUFBTSxFQUFFO3dCQUNOLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHO3dCQUNwQyxTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTTt3QkFDMUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUk7cUJBQzlCO2lCQUNGLENBQUM7Z0JBQ0YsV0FBVyxFQUFFO29CQUNYLHdCQUF3QixFQUFFLEVBQUU7b0JBQzVCLG9CQUFvQixFQUFFLENBQUM7aUJBQ3hCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZUF1dG9OYW1pbmcsIFJlc291cmNlRGVmYXVsdE5hbWluZywgUmVzb3VyY2VOYW1pbmcsIFJlc291cmNlTmFtaW5nVHlwZSB9IGZyb20gJ0BnYW1tYXJlcnMvYXdzLXJlc291cmNlLW5hbWluZyc7XG5pbXBvcnQgeyBTTlNTbGFja01lc3NhZ2VMYW1iZGFTdWJzY3JpcHRpb24gfSBmcm9tICdAZ2FtbWFyZXJzL2F3cy1zbnMtc2xhY2stbWVzc2FnZS1sYW1iZGEtc3Vic2NyaXB0aW9uJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIHNjaGVkdWxlciBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2NoZWR1bGVyJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUnVubmluZ0NvbnRyb2xTdGF0ZU1hY2hpbmUgfSBmcm9tICcuL3Jlc291cmNlcy9ydW5uaW5nLWNvbnRyb2wtc3RhdGUtbWFjaGluZSc7XG5cbmV4cG9ydCB7IFJlc291cmNlQXV0b05hbWluZywgUmVzb3VyY2VEZWZhdWx0TmFtaW5nLCBSZXNvdXJjZU5hbWluZ1R5cGUgfTtcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZUN1c3RvbU5hbWluZyB7XG4gIHJlYWRvbmx5IHR5cGU6IFJlc291cmNlTmFtaW5nVHlwZS5DVVNUT007XG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvblRvcGljTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBub3RpZmljYXRpb25Ub3BpY0Rpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN0YXRlTWFjaGluZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhdGVNYWNoaW5lUm9sZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgc2NoZWR1bGVyUm9sZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhcnRTY2hlZHVsZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RvcFNjaGVkdWxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBSZXNvdXJjZU5hbWluZ09wdGlvbiA9IFJlc291cmNlRGVmYXVsdE5hbWluZyB8IFJlc291cmNlQXV0b05hbWluZyB8IFJlc291cmNlQ3VzdG9tTmFtaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlUHJvcGVydHkge1xuICByZWFkb25seSB0aW1lem9uZTogc3RyaW5nO1xuICByZWFkb25seSBtaW51dGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGhvdXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdlZWs/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0UmVzb3VyY2VQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IHRhZ0tleTogc3RyaW5nO1xuICByZWFkb25seSB0YWdWYWx1ZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNsYWNrIHtcbiAgcmVhZG9ubHkgd2ViaG9va1NlY3JldE5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25zUHJvcGVydHkge1xuICByZWFkb25seSBlbWFpbHM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgc2xhY2s/OiBTbGFjaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSRFNEYXRhYmFzZVJ1bm5pbmdTY2hlZHVsZVN0YWNrUHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgcmVhZG9ubHkgdGFyZ2V0UmVzb3VyY2U6IFRhcmdldFJlc291cmNlUHJvcGVydHk7XG4gIHJlYWRvbmx5IGVuYWJsZVNjaGVkdWxpbmc/OiBib29sZWFuO1xuICByZWFkb25seSBzdG9wU2NoZWR1bGU/OiBTY2hlZHVsZVByb3BlcnR5O1xuICByZWFkb25seSBzdGFydFNjaGVkdWxlPzogU2NoZWR1bGVQcm9wZXJ0eTtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9ucz86IE5vdGlmaWNhdGlvbnNQcm9wZXJ0eTtcbiAgcmVhZG9ubHkgcmVzb3VyY2VOYW1pbmdPcHRpb24/OiBSZXNvdXJjZU5hbWluZ09wdGlvbjtcbn1cblxuZXhwb3J0IGNsYXNzIFJEU0RhdGFiYXNlUnVubmluZ1NjaGVkdWxlU3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSRFNEYXRhYmFzZVJ1bm5pbmdTY2hlZHVsZVN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIPCfkYcgQ3JlYXRlIHJhbmRvbSA4IGxlbmd0aCBzdHJpbmdcbiAgICBjb25zdCByYW5kb20gPSBSZXNvdXJjZU5hbWluZy5jcmVhdGVSYW5kb21TdHJpbmcoYCR7Y2RrLk5hbWVzLnVuaXF1ZUlkKHNjb3BlKX0tJHtjZGsuTmFtZXMudW5pcXVlSWQodGhpcyl9YCk7XG4gICAgLy8g8J+RhyBEZWZpbml0aW9uIGF1dG8gbmFtaW5nXG4gICAgY29uc3QgYXV0b05hbWluZyA9IHtcbiAgICAgIG5vdGlmaWNhdGlvblRvcGljTmFtZTogYHJkcy1kYi1ydW5uaW5nLXNjaGVkdWxlLW5vdGlmaWNhdGlvbi0ke3JhbmRvbX0tdG9waWNgLFxuICAgICAgbm90aWZpY2F0aW9uVG9waWNEaXNwbGF5TmFtZTogJ1JEUyBEQiBSdW5uaW5nIFNjaGVkdWxlIE5vdGlmaWNhdGlvbiBUb3BpYycsXG4gICAgICBzdGF0ZU1hY2hpbmVOYW1lOiBgcmRzLWRiLXJ1bm5pbmctc2NoZWR1bGUtJHtyYW5kb219LXN0YXRlLW1hY2hpbmVgLFxuICAgICAgc3RhdGVNYWNoaW5lUm9sZU5hbWU6IGByZHMtZGItcnVubmluZy1zY2hlZHVsZS0ke3JhbmRvbX0tc3RhdGUtbWFjaGluZS1yb2xlYCxcbiAgICAgIHNjaGVkdWxlclJvbGVOYW1lOiBgcmRzLWRiLXJ1bm5pbmctc2NoZWR1bGVyLSR7cmFuZG9tfS1leGVjLXJvbGVgLFxuICAgICAgc3RhcnRTY2hlZHVsZU5hbWU6IGByZHMtZGF0YWJhc2UtcnVubmluZy1zdG9wLSR7cmFuZG9tfS1zY2hlZHVsZWAsXG4gICAgICBzdG9wU2NoZWR1bGVOYW1lOiBgcmRzLWRhdGFiYXNlLXJ1bm5pbmctc3RhcnQtJHtyYW5kb219LXNjaGVkdWxlYCxcbiAgICB9O1xuICAgIC8vIPCfkYfjgIBmaW5hbCBuYW1pbmdcbiAgICBjb25zdCBuYW1lcyA9IFJlc291cmNlTmFtaW5nLm5hbWluZyhhdXRvTmFtaW5nLCBwcm9wcy5yZXNvdXJjZU5hbWluZ09wdGlvbiBhcyBSZXNvdXJjZU5hbWluZy5SZXNvdXJjZU5hbWluZ09wdGlvbik7XG5cblxuICAgIC8vIPCfkYcgU05TIFRvcGljIGZvciBub3RpZmljYXRpb25zXG4gICAgY29uc3QgdG9waWM6IHNucy5Ub3BpYyA9IG5ldyBzbnMuVG9waWModGhpcywgJ05vdGlmaWNhdGlvblRvcGljJywge1xuICAgICAgdG9waWNOYW1lOiBuYW1lcy5ub3RpZmljYXRpb25Ub3BpY05hbWUsXG4gICAgICBkaXNwbGF5TmFtZTogbmFtZXMubm90aWZpY2F0aW9uVG9waWNEaXNwbGF5TmFtZSxcbiAgICB9KTtcblxuICAgIC8vIPCfkYcgU3Vic2NyaWJlIGFuIGVtYWlsIGVuZHBvaW50IHRvIHRoZSB0b3BpY1xuICAgIGNvbnN0IGVtYWlscyA9IHByb3BzLm5vdGlmaWNhdGlvbnM/LmVtYWlscyA/PyBbXTtcbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgdmFsdWVdIG9mIGVtYWlscy5lbnRyaWVzKCkpIHtcbiAgICAgIG5ldyBzbnMuU3Vic2NyaXB0aW9uKHRoaXMsIGBTdWJzY3JpcHRpb25FbWFpbCR7aW5kZXgudG9TdHJpbmcoKS5wYWRTdGFydCgzLCAnMCcpfWAsIHtcbiAgICAgICAgdG9waWMsXG4gICAgICAgIHByb3RvY29sOiBzbnMuU3Vic2NyaXB0aW9uUHJvdG9jb2wuRU1BSUwsXG4gICAgICAgIGVuZHBvaW50OiB2YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIPCfkYcgU3Vic2NyaXB0aW9uIHNsYWNrIHdlYmhvb2tcbiAgICBpZiAocHJvcHMubm90aWZpY2F0aW9ucz8uc2xhY2spIHtcbiAgICAgIG5ldyBTTlNTbGFja01lc3NhZ2VMYW1iZGFTdWJzY3JpcHRpb24odGhpcywgJ1NOU1NsYWNrTWVzc2FnZUxhbWJkYVN1YnNjcmlwdGlvbicsIHtcbiAgICAgICAgdG9waWMsXG4gICAgICAgIHNsYWNrV2ViaG9va1NlY3JldE5hbWU6IHByb3BzLm5vdGlmaWNhdGlvbnMuc2xhY2sud2ViaG9va1NlY3JldE5hbWUsXG4gICAgICB9KTtcbiAgICB9XG5cblxuICAgIC8vIPCfkYcgU3RlcEZ1bmN0aW9ucyBTdGF0ZSBNYWNoaW5lXG4gICAgY29uc3Qgc3RhdGVNYWNoaW5lID0gbmV3IFJ1bm5pbmdDb250cm9sU3RhdGVNYWNoaW5lKHRoaXMsICdTdGF0ZU1hY2hpbmUnLCB7XG4gICAgICBzdGF0ZU1hY2hpbmVOYW1lOiBuYW1lcy5zdGF0ZU1hY2hpbmVOYW1lLFxuICAgICAgbm90aWZpY2F0aW9uVG9waWM6IHRvcGljLFxuICAgIH0pO1xuXG4gICAgLy8g8J+RhyByZW5hbWUgcm9sZSBuYW1lICYgZGVzY3JpcHRpb24uXG4gICAgaWYgKG5hbWVzLnN0YXRlTWFjaGluZVJvbGVOYW1lKSB7XG4gICAgICBjb25zdCByb2xlID0gc3RhdGVNYWNoaW5lLm5vZGUuZmluZENoaWxkKCdSb2xlJykgYXMgaWFtLlJvbGU7XG4gICAgICBjb25zdCBjZm5Sb2xlID0gcm9sZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBpYW0uQ2ZuUm9sZTtcbiAgICAgIGNmblJvbGUuYWRkUHJvcGVydHlPdmVycmlkZSgnUm9sZU5hbWUnLCBuYW1lcy5zdGF0ZU1hY2hpbmVSb2xlTmFtZSk7XG4gICAgICBjZm5Sb2xlLmFkZFByb3BlcnR5T3ZlcnJpZGUoJ0Rlc2NyaXB0aW9uJywgJ1JEUyBEQiBSdW5uaW5nIG1hY2hpbmUgcm9sZS4nKTtcbiAgICAgIGNvbnN0IHBvbGljeSA9IHJvbGUubm9kZS5maW5kQ2hpbGQoJ0RlZmF1bHRQb2xpY3knKSBhcyBpYW0uUG9saWN5O1xuICAgICAgY29uc3QgY2ZuUG9saWN5ID0gcG9saWN5Lm5vZGUuZGVmYXVsdENoaWxkIGFzIGlhbS5DZm5Qb2xpY3k7XG4gICAgICBjZm5Qb2xpY3kuYWRkUHJvcGVydHlPdmVycmlkZSgnUG9saWN5TmFtZScsIGByZHMtZGItcnVubmluZy1zY2hlZHVsZS0ke3JhbmRvbX0tc3RhdGUtbWFjaGluZS1wb2xpY3lgKTtcbiAgICB9XG5cbiAgICAvLyDwn5GHIFN0YXRlTWFjaGluZSBFeGVjIFJvbGUgb2YgU2NoZWR1bGVyXG4gICAgY29uc3Qgc2NoZWR1bGVyRXhlY1JvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ1NjaGVkdWxlckV4ZWN1dGlvblJvbGUnLCB7XG4gICAgICByb2xlTmFtZTogbmFtZXMuc2NoZWR1bGVyUm9sZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogJ1JEUyBEQiBSdW5uaW5nIHNjaGVkdWxlciByb2xlJyxcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdzY2hlZHVsZXIuYW1hem9uYXdzLmNvbScpLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgJ3N0YXRlLW1hY2hpbmUtZXhlYy1wb2xpY3knOiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdzdGF0ZXM6U3RhcnRFeGVjdXRpb24nLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICBzdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8g8J+RhyBTY2hlZHVsZSBzdGF0ZVxuICAgIGNvbnN0IHNoZWR1bGVTdGF0ZTogc3RyaW5nID0gKCgpID0+IHtcbiAgICAgIGlmIChwcm9wcy5lbmFibGVTY2hlZHVsaW5nID09PSB1bmRlZmluZWQgfHwgcHJvcHMuZW5hYmxlU2NoZWR1bGluZykge1xuICAgICAgICByZXR1cm4gJ0VOQUJMRUQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICdESVNBQkxFRCc7XG4gICAgICB9XG4gICAgfSkoKTtcblxuICAgIC8vIPCfkYcgU3RvcCBTY2hlZHVsZSBleHByZXNzaW9uXG4gICAgY29uc3Qgc3RvcFNjaGVkdWxlRXhwcmVzc2lvbjogc3RyaW5nID0gKCgpID0+IHtcbiAgICAgIC8vIGRlZmF1bHQ6IHdlZWtkYXkgMjE6MTBcbiAgICAgIGNvbnN0IG1pbnV0ZTogc3RyaW5nID0gcHJvcHMuc3RvcFNjaGVkdWxlPy5taW51dGUgPz8gJzEwJztcbiAgICAgIGNvbnN0IGhvdXI6IHN0cmluZyA9IHByb3BzLnN0b3BTY2hlZHVsZT8uaG91ciA/PyAnMjEnO1xuICAgICAgY29uc3Qgd2Vlazogc3RyaW5nID0gcHJvcHMuc3RvcFNjaGVkdWxlPy53ZWVrID8/ICdNT04tRlJJJztcbiAgICAgIHJldHVybiBgY3Jvbigke21pbnV0ZX0gJHtob3VyfSA/ICogJHt3ZWVrfSAqKWA7XG4gICAgfSkoKTtcblxuICAgIC8vIPCfkYcgU3RhcnQgU2NoZWR1bGUgZXhwcmVzc2lvblxuICAgIGNvbnN0IHN0YXJ0U2NoZWR1bGVFeHByZXNzaW9uOiBzdHJpbmcgPSAoKCkgPT4ge1xuICAgICAgLy8gZGVmYXVsdDogd2Vla2RheSAwNzo1MFxuICAgICAgY29uc3QgbWludXRlOiBzdHJpbmcgPSBwcm9wcy5zdGFydFNjaGVkdWxlPy5taW51dGUgPz8gJzUwJztcbiAgICAgIGNvbnN0IGhvdXI6IHN0cmluZyA9IHByb3BzLnN0YXJ0U2NoZWR1bGU/LmhvdXIgPz8gJzcnO1xuICAgICAgY29uc3Qgd2Vlazogc3RyaW5nID0gcHJvcHMuc3RhcnRTY2hlZHVsZT8ud2VlayA/PyAnTU9OLUZSSSc7XG4gICAgICByZXR1cm4gYGNyb24oJHttaW51dGV9ICR7aG91cn0gPyAqICR7d2Vla30gKilgO1xuICAgIH0pKCk7XG5cbiAgICAvLyDwn5GHIFN0b3AgREIgc2NoZWR1bGVcbiAgICBuZXcgREJSdW5pbmdTY2hlZHVsZSh0aGlzLCAnU3RvcERhdGFiYXNlUnVubmluZ1NjaGVkdWxlJywge1xuICAgICAgbmFtZTogbmFtZXMuc3RhcnRTY2hlZHVsZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogJ3N0b3AgZGF0YWJhc2UoaW5zdGFuY2UvY2x1c3RlcikgcnVubmluZyBzdG9wIHNjaGVkdWxlLicsXG4gICAgICBzaGVkdWxlU3RhdGUsXG4gICAgICB0aW1lem9uZTogcHJvcHMuc3RvcFNjaGVkdWxlPy50aW1lem9uZSA/PyAnVVRDJyxcbiAgICAgIGV4cHJlc3Npb246IHN0b3BTY2hlZHVsZUV4cHJlc3Npb24sXG4gICAgICB0YXJnZXQ6IHtcbiAgICAgICAgc3RhdGVNYWNoaW5lQXJuOiBzdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuLFxuICAgICAgICByb2xlQXJuOiBzY2hlZHVsZXJFeGVjUm9sZS5yb2xlQXJuLFxuICAgICAgICByZXNvdXJjZVRhZzoge1xuICAgICAgICAgIGtleTogcHJvcHMudGFyZ2V0UmVzb3VyY2UudGFnS2V5LFxuICAgICAgICAgIHZhbHVlczogcHJvcHMudGFyZ2V0UmVzb3VyY2UudGFnVmFsdWVzLFxuICAgICAgICB9LFxuICAgICAgICBpbnB1dDogeyBtb2RlOiAnU3RvcCcgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyDwn5GHIFN0YXJ0IERCIHNjaGVkdWxlXG4gICAgbmV3IERCUnVuaW5nU2NoZWR1bGUodGhpcywgJ1N0YXJ0RGF0YWJhc2VSdW5uaW5nU2NoZWR1bGUnLCB7XG4gICAgICBuYW1lOiBuYW1lcy5zdG9wU2NoZWR1bGVOYW1lLFxuICAgICAgZGVzY3JpcHRpb246ICdzdGFydCBkYiBpbnN0YW5jZSBzY2hlZHVsZS4nLFxuICAgICAgc2hlZHVsZVN0YXRlLFxuICAgICAgdGltZXpvbmU6IHByb3BzLnN0YXJ0U2NoZWR1bGU/LnRpbWV6b25lID8/ICdVVEMnLFxuICAgICAgZXhwcmVzc2lvbjogc3RhcnRTY2hlZHVsZUV4cHJlc3Npb24sXG4gICAgICB0YXJnZXQ6IHtcbiAgICAgICAgc3RhdGVNYWNoaW5lQXJuOiBzdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuLFxuICAgICAgICByb2xlQXJuOiBzY2hlZHVsZXJFeGVjUm9sZS5yb2xlQXJuLFxuICAgICAgICByZXNvdXJjZVRhZzoge1xuICAgICAgICAgIGtleTogcHJvcHMudGFyZ2V0UmVzb3VyY2UudGFnS2V5LFxuICAgICAgICAgIHZhbHVlczogcHJvcHMudGFyZ2V0UmVzb3VyY2UudGFnVmFsdWVzLFxuICAgICAgICB9LFxuICAgICAgICBpbnB1dDogeyBtb2RlOiAnU3RhcnQnIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gIH1cbn1cblxuaW50ZXJmYWNlIERCUnVuaW5nU2NoZWR1bGVQcm9wcyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHNoZWR1bGVTdGF0ZTogc3RyaW5nO1xuICB0aW1lem9uZTogc3RyaW5nO1xuICBleHByZXNzaW9uOiBzdHJpbmc7XG4gIHRhcmdldDoge1xuICAgIHN0YXRlTWFjaGluZUFybjogc3RyaW5nO1xuICAgIHJvbGVBcm46IHN0cmluZztcbiAgICByZXNvdXJjZVRhZzoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB2YWx1ZXM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgaW5wdXQ6IHtcbiAgICAgIG1vZGU6IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuXG5jbGFzcyBEQlJ1bmluZ1NjaGVkdWxlIGV4dGVuZHMgc2NoZWR1bGVyLkNmblNjaGVkdWxlIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERCUnVuaW5nU2NoZWR1bGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwcm9wcy5zaGVkdWxlU3RhdGUsXG4gICAgICAvL2dyb3VwTmFtZTogc2NoZWR1bGVHcm91cC5uYW1lLCAvLyBkZWZhdWx0XG4gICAgICBmbGV4aWJsZVRpbWVXaW5kb3c6IHtcbiAgICAgICAgbW9kZTogJ09GRicsXG4gICAgICB9LFxuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uVGltZXpvbmU6IHByb3BzLnRpbWV6b25lLFxuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBwcm9wcy5leHByZXNzaW9uLFxuICAgICAgdGFyZ2V0OiB7XG4gICAgICAgIGFybjogcHJvcHMudGFyZ2V0LnN0YXRlTWFjaGluZUFybixcbiAgICAgICAgcm9sZUFybjogcHJvcHMudGFyZ2V0LnJvbGVBcm4sXG4gICAgICAgIGlucHV0OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgUGFyYW1zOiB7XG4gICAgICAgICAgICBUYWdLZXk6IHByb3BzLnRhcmdldC5yZXNvdXJjZVRhZy5rZXksXG4gICAgICAgICAgICBUYWdWYWx1ZXM6IHByb3BzLnRhcmdldC5yZXNvdXJjZVRhZy52YWx1ZXMsXG4gICAgICAgICAgICBNb2RlOiBwcm9wcy50YXJnZXQuaW5wdXQubW9kZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgcmV0cnlQb2xpY3k6IHtcbiAgICAgICAgICBtYXhpbXVtRXZlbnRBZ2VJblNlY29uZHM6IDYwLFxuICAgICAgICAgIG1heGltdW1SZXRyeUF0dGVtcHRzOiAwLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as sns from 'aws-cdk-lib/aws-sns';
|
|
2
|
+
import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
|
|
3
|
+
import { Construct } from 'constructs';
|
|
4
|
+
export interface RunningControlStateMachineProps extends sfn.StateMachineProps {
|
|
5
|
+
notificationTopic: sns.ITopic;
|
|
6
|
+
}
|
|
7
|
+
export declare class RunningControlStateMachine extends sfn.StateMachine {
|
|
8
|
+
constructor(scope: Construct, id: string, props: RunningControlStateMachineProps);
|
|
9
|
+
}
|